Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Parâmetros
Data/Hora da Publicação: 28/03/2012 10:05:19
Data/Hora Última Alteração: 28/03/2012 10:05:19
Descrição da Nota: TRILHA DE AUDITORIA
Sintoma
O sistema não armazena Log da Criação/Modificação/Exclusão de processos do pw.CE
Solução
Foi incluído no sistema a gravação de LOG's durante a Criação/Modificação/Exclusão de processos
no pw.CE
8.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 11506 Data: 03/10/2011 Hora: 10:02:10
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 11506
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 8.0
Pacote : 00009
Agrupamento : 00095
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
10188 - 00001 - 8.0 - 00003 - MAPEAMENTO SOCIEDADE PARCEIRA NAS CONTABILIZAÇÕES
10752 - 00002 - 8.0 - 00005 - PARÂMETROS - PARÂMETROS GERAIS - GRAVAÇÃO EM REQUEST
11313 - 00003 - 8.0 - 00008 - COMPLEMENTO BOLETO, CONTABILIZAÇÃO F-43 F-63,EMPRÉSTIMO E FINANCI
----------------------------------------------------------------------------------------------------
TRILHA DE AUDITORIA
----------------------------------------------------------------------------------------------------
Palavras Chave:
TRILHA DE AUDITORIA
----------------------------------------------------------------------------------------------------
Objetos da nota:
DTEL /PWS/ZYGLL1430
CUAD /PWS/SAPMZYGL007
DYNP /PWS/SAPMZYGL007 0114
FUNC /PWS/ZYGLA322
FUNC /PWS/ZYGL_TRILHA_AUDITORIA
REPT /PWS/SAPLZYGLGF
PARA /PWS/ZYGLP009
PARA /PWS/ZYGLP010
REPS /PWS/LZYCBGF1TOP
REPS /PWS/LZYGLGF4UXX
REPS /PWS/LZYGLGFUXX
REPS /PWS/MZYGL007I01
REPS /PWS/MZYGL007O01
REPS /PWS/SAPMZYGL007
REPS /PWS/ZYGLLOG
REPS /PWS/ZYGLR042
REPS /PWS/ZYGLR043
REPS /PWS/ZYGLR044
SHI3 /PWS/ZYCB
SHI6 /PWS/ZYCB
SHLP /PWS/ZYGLA322
SHLP /PWS/ZYGLA323
TABD /PWS/ZYGLT009
TABL /PWS/ZYGLT389
TABL /PWS/ZYGLT390
TABL /PWS/ZYGLT391
TABU TMENU01
TABU TMENU01R
TABU TMENU01T
TRAN /PWS/ZYGLR042
VIEW /PWS/ZYGLV022
VIEW /PWS/ZYGLV023
----------------------------------------------------------------------------------------------------
Modificações efetuadas em CUAD /PWS/SAPMZYGL007
Alterar STATUS-GUI 001
Incluir BOTÃO ESTÁTICO (Barra de Botões)
CÓDIGO DE FUNÇÃO: LOG_TRILHA
CATEGORIA DE FUNÇÃO: ' '
TEXTOS DE FUNÇÃO ESTÁTICOS
TEXTO DE FUNÇÃO: Log de Modificação
NOME DE ÍCONE: ICON_PHIO_CLASS
TEXTO DE ÍCONE: ' '
TEXTO INFORMATIVO: ' '
SELEÇÃO DIRETA: ' '
TECLA DE ATALHO: Ctrl+F12
--------------------------------------------------------------------------------------------
Modificações efetuadas em DTEL /PWS/ZYGLL1430
------------------------------------------------------------------------
Elemento de dados incluído: /PWS/ZYGLL1430
Classe de desenvolvimento: /PWS/ZYGL
Idioma original: PT
Descrição breve incluída: (25 caracteres), idioma: EN
"GL - Activate Audit Trail"
Descrição breve incluída: (31 caracteres), idioma: PT
"GL - Ativar Trilha de Auditoria"
Descrição breve incluída: (15 caracteres), idioma: ES
"GL - Ativar Log"
Categoria de dados: Domínio
Domínio: CHAR1
ID parâmetro:
Nome componente default:
Documentar modificações: NÃO
Nome da ajuda de pesquisa:
Parâmetro da ajuda de pesquisa:
Comprimento máximo do denominador breve: 10
Denominador breve incluído (10 caracteres), idioma: EN
"AuditTrail"
Denominador breve incluído (10 caracteres), idioma: PT
"Trilha Aud"
Denominador breve incluído (3 caracteres), idioma: ES
"Log"
Comprimento máximo do denominador médio: 16
Denominador médio incluído (11 caracteres), idioma: EN
"Audit Trail"
Denominador médio incluído (16 caracteres), idioma: PT
"Trilha Auditoria"
Denominador médio incluído (3 caracteres), idioma: ES
"Log"
Comprimento máximo do denominador longo: 26
Denominador longo incluído (20 caracteres), idioma: EN
"Activate Audit Trail"
Denominador longo incluído (26 caracteres), idioma: PT
"Ativar Trilha de Auditoria"
Denominador longo incluído (10 caracteres), idioma: ES
"Ativar Log"
Comprimento máximo do título: 26
Título incluído (20 caracteres), idioma: EN
"Activate Audit Trail"
Título incluído (26 caracteres), idioma: PT
"Ativar Trilha de Auditoria"
Título incluído (10 caracteres), idioma: ES
"Ativar Log"
--------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYGL007 0114
Favor solicitar arquivo para upload da tela com equipe de produto pw.CE Câmbio - 11 5504 0170
--------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYGLA322
CRIAR MÓDULO DE FUNÇÃO: /PWS/ZYGLA322
CARACTERÍSTICAS
CLASSIFICAÇÃO:
GRUPO DE FUNÇÕES: /PWS/ZYGLGF4
TEXTO BREVE: GL - Trilha Auditoria - Programa(funcionalidade)
TIPO DE EXECUÇÃO:
(X) - MÓDULO DE FUNÇÃO NORMAL
(_) - MÓDULO DE ACESSO REMOTO
(_) - MÓDULO DE ATUALIZAÇÃO
(X) - INÍCIO IMEDIATO
(_) - INÍCIO IMEDIATO-SEM ATUAL.POSTER.
(_) - INÍC. RETARDADO
(_) - PROCES. CLOETIVO
DADOS GERAIS:
(_) - BLOQUEIO PROCESSO
(_) - GLOBAL
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
EXPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA TRANSF. TEXTO BREVE
MODIFIC.:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
SHLP TYPE SHLP_DESCR_T X
CALLCONTROL LIKE DDSHF4CTRL X
TABELAS:
NOME PARAM. ATRIB. TIPO REFERÊNCIA OPCIONAL TEXTO BREVE
SHLP_TAB TYPE SHLP_DESCR_TAB_T
RECORD_TAB LIKE SEAHLPRES
EXCEÇÕES:
EXCEÇÃO TEXTO BREVE
MODIFICAR MÓDULO DE FUNÇÃO: ______________________________
CARACTERÍSTICAS
CLASSIFICAÇÃO:
GRUPO DE FUNÇÕES: _________________
TEXTO BREVE: _________________________________________________
TIPO DE EXECUÇÃO:
(_) - MÓDULO DE FUNÇÃO NORMAL
(_) - MÓDULO DE ACESSO REMOTO
(_) - MÓDULO DE ATUALIZAÇÃO
(_) - INÍCIO IMEDIATO
(_) - INÍCIO IMEDIATO-SEM ATUAL.POSTER.
(_) - INÍC. RETARDADO
(_) - PROCES. CLOETIVO
DADOS GERAIS:
(_) - BLOQUEIO PROCESSO
(_) - GLOBAL
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
EXPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA TRANSF. TEXTO BREVE
MODIFIC.:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
TABELAS:
NOME PARAM. ATRIB. TIPO REFERÊNCIA OPCIONAL TEXTO BREVE
EXCEÇÕES:
EXCEÇÃO TEXTO BREVE
TEXTO FONTE
FUNCTION /pws/zygla322.
CLEAR callcontrol-maxrecords.
DELETE ADJACENT DUPLICATES FROM record_tab.
ENDFUNCTION.
--------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYGL_TRILHA_AUDITORIA
CRIAR MÓDULO DE FUNÇÃO: /PWS/ZYGL_TRILHA_AUDITORIA
CARACTERÍSTICAS
CLASSIFICAÇÃO:
GRUPO DE FUNÇÕES: /PWS/ZYGLGF
TEXTO BREVE: GL - Grava Log de Inclusão/Modificação/Exclusão
TIPO DE EXECUÇÃO:
(X) - MÓDULO DE FUNÇÃO NORMAL
(_) - MÓDULO DE ACESSO REMOTO
(_) - MÓDULO DE ATUALIZAÇÃO
(X) - INÍCIO IMEDIATO
(_) - INÍCIO IMEDIATO-SEM ATUAL.POSTER.
(_) - INÍC. RETARDADO
(_) - PROCES. CLOETIVO
DADOS GERAIS:
(_) - BLOQUEIO PROCESSO
(_) - GLOBAL
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
I_PROGNAME TYPE REPID X
I_TABNAME TYPE TABNAME X
I_OPER TYPE CHAR1 X
I_TCODE TYPE TCODE X
I_IDENTIFICADOR TYPE ANY X "Campo chave global para
identificar processo"
EXPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA TRANSF. TEXTO BREVE
MODIFIC.:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
TABELAS:
NOME PARAM. ATRIB. TIPO REFERÊNCIA OPCIONAL TEXTO BREVE
T_CONDICOES LIKE /PWS/ZYCBE033
T_ESTRUTURA LIKE DD03L
EXCEÇÕES:
EXCEÇÃO TEXTO BREVE
* >> Início da inclusão:
function /pws/zygl_trilha_auditoria.
*"----------------------------------------------------------------------
*"*"Interface local:
*" IMPORTING
*" VALUE(I_PROGNAME) TYPE REPID
*" VALUE(I_TABNAME) TYPE TABNAME
*" VALUE(I_OPER) TYPE CHAR1
*" VALUE(I_TCODE) TYPE TCODE
*" VALUE(I_IDENTIFICADOR) TYPE ANY
*" TABLES
*" T_CONDICOES STRUCTURE /PWS/ZYCBE033
*" T_ESTRUTURA STRUCTURE DD03L
*"----------------------------------------------------------------------
tables: /pws/zyglt389, /pws/zyglt390.
field-symbols: <wa_dados>.
data: dy_line type ref to data.
data: begin of itab_zyglt391_exp occurs 0.
include structure /pws/zyglt391.
data: end of itab_zyglt391_exp.
statics: itab_zyglt391_aux like itab_zyglt391_exp occurs 0
with header line.
data: begin of wheretab occurs 0,
cond type /pws/zycbe033-cpochv,
end of wheretab.
data: v_datum type sy-datum,
v_uzeit type sy-uzeit,
v_data(9) type c,
v_dif_tabversno type /pws/zyglt391-tabversno,
v_tabversno type /pws/zyglt391-tabversno,
v_line type i,
v_save type c,
v_indice type /pws/zyglt389-indice,
v_exporta_dados type c,
v_auditoria type /pws/zyglt009-trilha_auditoria,
v_indice_c(56) type c,
v_linhas type i,
v_tabix type i,
v_random type qf00-ran_number,
v_time type timestampl.
statics v_indice_ant type /pws/zyglt389-indice.
check i_tabname(5) = '/PWS/'.
v_datum = sy-datum.
v_uzeit = sy-uzeit.
sort t_estrutura by position.
clear: itab_zyglt391_exp.
refresh: itab_zyglt391_exp.
loop at t_estrutura.
clear itab_zyglt391_exp.
itab_zyglt391_exp-tabela = t_estrutura-tabname.
itab_zyglt391_exp-campo = t_estrutura-fieldname.
itab_zyglt391_exp-keyflag = t_estrutura-keyflag.
itab_zyglt391_exp-rollname = t_estrutura-rollname.
itab_zyglt391_exp-posicao = t_estrutura-position.
if t_estrutura-inttype = 'X'.
itab_zyglt391_exp-inttype = 'I'.
else.
itab_zyglt391_exp-inttype = t_estrutura-inttype.
endif.
if sy-saprl(3) ge '620' or sy-saprl(2) eq '47'.
itab_zyglt391_exp-intlen = t_estrutura-leng.
else.
itab_zyglt391_exp-intlen = t_estrutura-intlen.
endif.
itab_zyglt391_exp-decimals = t_estrutura-decimals.
if not t_estrutura-decimals > 0.
itab_zyglt391_exp-datatype = t_estrutura-datatype.
endif.
itab_zyglt391_exp-data = v_datum.
itab_zyglt391_exp-hora = v_uzeit.
append itab_zyglt391_exp.
endloop.
read table itab_zyglt391_aux with key tabela = i_tabname.
if sy-subrc ne 0.
refresh itab_zyglt391_aux.
select * from /pws/zyglt391
into table itab_zyglt391_aux
where tabela = i_tabname
order by tabela tabversno posicao.
endif.
if not itab_zyglt391_aux[] is initial and sy-subrc = 0.
clear: v_dif_tabversno, v_tabversno, v_save.
loop at itab_zyglt391_aux where tabela = i_tabname.
if not v_tabversno is initial and
v_tabversno ne itab_zyglt391_aux-tabversno.
if v_dif_tabversno is initial.
exit.
else.
clear v_dif_tabversno.
endif.
endif.
if not v_dif_tabversno is initial.
check itab_zyglt391_aux-tabversno ne v_dif_tabversno.
endif.
read table itab_zyglt391_exp
with key posicao = itab_zyglt391_aux-posicao.
if itab_zyglt391_exp-campo ne itab_zyglt391_aux-campo or
itab_zyglt391_exp-keyflag ne itab_zyglt391_aux-keyflag or
itab_zyglt391_exp-rollname ne itab_zyglt391_aux-rollname or
itab_zyglt391_exp-posicao ne itab_zyglt391_aux-posicao or
itab_zyglt391_exp-inttype ne itab_zyglt391_aux-inttype or
itab_zyglt391_exp-intlen ne itab_zyglt391_aux-intlen or
itab_zyglt391_exp-decimals ne itab_zyglt391_aux-decimals or
itab_zyglt391_exp-datatype ne itab_zyglt391_aux-datatype.
v_dif_tabversno = itab_zyglt391_aux-tabversno.
endif.
v_tabversno = itab_zyglt391_aux-tabversno.
endloop.
if not v_dif_tabversno is initial.
describe table itab_zyglt391_aux lines v_line.
read table itab_zyglt391_aux index v_line.
if sy-subrc = 0.
itab_zyglt391_exp-tabversno =
v_tabversno = itab_zyglt391_aux-tabversno + 1.
modify itab_zyglt391_exp transporting tabversno
where tabela = i_tabname.
endif.
else.
v_save = 'X'.
itab_zyglt391_exp-tabversno = v_tabversno.
modify itab_zyglt391_exp transporting tabversno
where tabela = i_tabname.
endif.
else.
itab_zyglt391_exp-tabversno = v_tabversno = v_tabversno + 1.
modify itab_zyglt391_exp transporting tabversno
where tabela = i_tabname.
endif.
refresh wheretab.
loop at t_condicoes.
wheretab-cond = t_condicoes-cpochv.
append wheretab.
endloop.
read table itab_zyglt391_exp index 1.
if sy-subrc = 0.
create data dy_line type (itab_zyglt391_exp-tabela).
assign dy_line->* to <wa_dados>.
endif.
check <wa_dados> is assigned.
select single * from (itab_zyglt391_exp-tabela) into <wa_dados>
where (wheretab).
if not ( sy-subrc = 0 and not <wa_dados> is initial ).
clear: v_tabix, v_linhas.
describe table wheretab lines v_linhas.
loop at wheretab.
v_tabix = v_tabix + 1.
do 30 times.
if wheretab-cond+sy-index(2) = text-001.
if not v_tabix = 1.
delete wheretab.
v_tabix = v_tabix - 1.
v_linhas = v_linhas - 1.
if v_tabix = v_linhas.
read table wheretab index v_tabix.
if sy-subrc = 0.
do 87 times.
if wheretab-cond+sy-index(3) is initial.
exit.
endif.
if wheretab-cond+sy-index(3) = 'and' or
wheretab-cond+sy-index(3) = 'AND'.
wheretab-cond+sy-index(3) = '). '.
modify wheretab.
exit.
endif.
enddo.
endif.
endif.
exit.
endif.
endif.
enddo.
endloop.
select single * from (itab_zyglt391_exp-tabela) into <wa_dados>
where (wheretab).
endif.
if sy-subrc = 0 and not <wa_dados> is initial.
call function 'QF05_RANDOM'
importing
ran_number = v_random.
v_indice_c = v_random.
condense v_indice_c.
v_indice+22(22) = v_indice_c.
get time stamp field v_time.
v_indice_c = v_time.
condense v_indice_c.
concatenate v_indice_c v_indice+22(22) into v_indice.
while v_indice = v_indice_ant.
call function 'QF05_RANDOM'
importing
ran_number = v_random.
v_indice_c = v_random.
condense v_indice_c.
v_indice+22(22) = v_indice_c.
get time stamp field v_time.
v_indice_c = v_time.
condense v_indice_c.
concatenate v_indice_c v_indice+22(22) into v_indice.
endwhile.
export wa_data from <wa_dados>
to database /pws/zyglt389(ce)
id v_indice.
v_indice_ant = v_indice.
endif.
check not v_indice is initial.
/pws/zyglt390-data = v_datum.
/pws/zyglt390-hora = v_uzeit.
/pws/zyglt390-usuario = sy-uname.
/pws/zyglt390-programa = i_progname.
/pws/zyglt390-indice = v_indice.
/pws/zyglt390-tabela = i_tabname.
/pws/zyglt390-transacao = i_tcode.
/pws/zyglt390-identificador = i_identificador.
/pws/zyglt390-oper = i_oper.
/pws/zyglt390-tabversno = v_tabversno.
insert into /pws/zyglt390 values /pws/zyglt390.
if v_save is initial.
loop at itab_zyglt391_exp.
insert into /pws/zyglt391 values itab_zyglt391_exp.
endloop.
endif.
endfunction.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPLZYGLGF
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 001
Texto: (2 caracteres)
"''"
Comprimento máximo: 2
----------------------------------------------------------------------------------------------------
Modificações efetuadas em PARA /PWS/ZYGLP009
Criar ID Parâmetro SET/GET - /PWS/ZYGLP009 - GL - ID Trilha Auditoria(Funcionalidade)
----------------------------------------------------------------------------------------------------
Modificações efetuadas em PARA /PWS/ZYGLP010
Criar ID Parâmetro SET/GET - /PWS/ZYGLP010 - GL - ID Trilha Auditoria(Identificador)
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCBGF1TOP
* >> Início da inclusão:
function-pool /pws/zycbgf1 message-id sv.
include lsvimdat .
include /pws/lzycbgf1t00 .
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYGLGF4UXX
* >> Início da inclusão:
INCLUDE /PWS/LZYGLGF4U01.
INCLUDE /PWS/LZYGLGF4U02.
INCLUDE /PWS/LZYGLGF4U03.
INCLUDE /PWS/LZYGLGF4U04.
INCLUDE /PWS/LZYGLGF4U05.
INCLUDE /PWS/LZYGLGF4U06.
INCLUDE /PWS/LZYGLGF4U07.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYGLGFUXX
* >> Início da inclusão:
INCLUDE /PWS/LZYGLGFU01.
INCLUDE /PWS/LZYGLGFU02.
INCLUDE /PWS/LZYGLGFU03.
INCLUDE /PWS/LZYGLGFU04.
INCLUDE /PWS/LZYGLGFU05.
INCLUDE /PWS/LZYGLGFU06.
INCLUDE /PWS/LZYGLGFU07.
INCLUDE /PWS/LZYGLGFU08.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYGL007I01
...
exceptions
others = 0. "#EC *
if v_resposta eq 'J'.
move: sy-uname to wa_zyglt009-user_ultmodif,
sy-datum to wa_zyglt009-data_ultmodif,
sy-uzeit to wa_zyglt009-hora_ultmodif.
modify /pws/zycbt007 from wa_zycbt007.
modify /pws/zycbt089 from wa_zycbt089.
modify /pws/zyglt009 from wa_zyglt009.
commit work.
* >> Início da inclusão: MODULE USER_COMMAND_EXIT
MOVE-CORRESPONDING wa_zycbt007 TO /pws/zycbt007.
PERFORM carrega_log USING '/PWS/ZYCBT007'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zycbt089 TO /pws/zycbt089.
PERFORM carrega_log USING '/PWS/ZYCBT089'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zyglt009 TO /pws/zyglt009.
PERFORM carrega_log USING '/PWS/ZYGLT009'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
* << Fim da inclusão
perform unlock_record.
leave program.
elseif v_resposta eq 'N'.
perform unlock_record.
leave program.
endif.
else.
perform unlock_record.
leave program.
endif.
...
...
into /pws/zycbt007-bukrs
where bukrs eq wa_zycbt007-bukrs.
wa_zycbt007-bukrs = /pws/zycbt007-bukrs.
wa_zyglt009-bukrs = /pws/zycbt007-bukrs.
wa_zycbt089-bukrs = /pws/zycbt007-bukrs.
if /pws/zycbt007-bukrs eq wa_zycbt007-bukrs.
modify /pws/zycbt007 from wa_zycbt007.
modify /pws/zyglt009 from wa_zyglt009.
modify /pws/zycbt089 from wa_zycbt089.
commit work.
* >> Início da inclusão: MODULE USER_COMMAND_0100
MOVE-CORRESPONDING wa_zycbt007 TO /pws/zycbt007.
PERFORM carrega_log USING '/PWS/ZYCBT007'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zycbt089 TO /pws/zycbt089.
PERFORM carrega_log USING '/PWS/ZYCBT089'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zyglt009 TO /pws/zyglt009.
PERFORM carrega_log USING '/PWS/ZYGLT009'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
* << Fim da inclusão
else.
insert /pws/zycbt007 from wa_zycbt007.
insert /pws/zyglt009 from wa_zyglt009.
insert /pws/zycbt089 from wa_zycbt089.
* >> Início da inclusão: MODULE USER_COMMAND_0100
MOVE-CORRESPONDING wa_zycbt007 TO /pws/zycbt007.
PERFORM carrega_log USING '/PWS/ZYCBT007'
'I'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zycbt089 TO /pws/zycbt089.
PERFORM carrega_log USING '/PWS/ZYCBT089'
'I'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zyglt009 TO /pws/zyglt009.
PERFORM carrega_log USING '/PWS/ZYGLT009'
'I'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
* << Fim da inclusão
endif.
if sy-subrc eq 0.
loop at screen.
screen-input = 1.
modify screen.
endloop.
message i015 with text-004.
v_status = '0'.
endif.
wa_zycbt007_aux = wa_zycbt007.
...
...
if v_resposta eq 'J'.
move: sy-uname to wa_zyglt009-user_ultmodif,
sy-datum to wa_zyglt009-data_ultmodif,
sy-uzeit to wa_zyglt009-hora_ultmodif.
perform nome_usuario.
wa_zyglt009-user_save = v_name.
modify /pws/zycbt007 from wa_zycbt007.
modify /pws/zycbt089 from wa_zycbt089.
modify /pws/zyglt009 from wa_zyglt009.
commit work.
* >> Início da inclusão: MODULE USER_COMMAND_0100
MOVE-CORRESPONDING wa_zycbt007 TO /pws/zycbt007.
PERFORM carrega_log USING '/PWS/ZYCBT007'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zycbt089 TO /pws/zycbt089.
PERFORM carrega_log USING '/PWS/ZYCBT089'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
MOVE-CORRESPONDING wa_zyglt009 TO /pws/zyglt009.
PERFORM carrega_log USING '/PWS/ZYGLT009'
'U'
sy-tcode
'/PWS/SAPMZYGL007'
' '.
* << Fim da inclusão
wa_zycbt007_aux = wa_zycbt007.
wa_zyglt009_aux = wa_zyglt009.
wa_zycbt089_aux = wa_zycbt089.
v_status = '0'.
elseif v_resposta eq 'N'.
perform nome_usuario.
wa_zyglt009-user_modif = v_name.
wa_zycbt007 = wa_zycbt007_aux.
wa_zycbt089 = wa_zycbt089_aux.
wa_zyglt009 = wa_zyglt009_aux.
...
...
v_status = '0'.
when 2.
message a015 with text-003.
endcase.
endif.
else.
message i120 with text-006.
v_status = '0'.
endif.
endif.
* >> Início da inclusão: MODULE USER_COMMAND_0100
WHEN 'LOG_TRILHA'.
PERFORM log_trilha USING SY-REPID
' '
' '.
* << Fim da inclusão
endcase.
clear ok_code.
endmodule.
module move_dados_pai input.
move: /pws/zycbt007 to wa_zycbt007,
/pws/zyglt009 to wa_zyglt009,
/pws/zycbt089 to wa_zycbt089.
endmodule.
module set_fdtdoc input.
if v_fdtdoc1 = 'X'.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYGL007O01
module status_0100 output.
* >> Início da inclusão: MODULE STATUS_0100
DATA: v_trilha_auditoria TYPE /pws/zyglt009-trilha_auditoria.
* << Fim da inclusão
set titlebar '001'.
if v_status eq '0' and not v_flag eq 1.
set pf-status '0001' excluding 'SAVE'.
elseif not v_flag eq 1.
set pf-status '0001'.
elseif sy-ucomm eq 'SAVE'.
set pf-status '0001' excluding 'SAVE'.
elseif sy-ucomm eq 'ALT'.
set pf-status '0001'.
loop at screen.
if not screen-name eq 'TAB_GERAL' and
not screen-name eq 'TAB_EXP' and
not screen-name eq 'TAB_IMP' and
not screen-name eq 'TAB_EMPRESA'.
screen-input = '0'.
modify screen.
endif.
endloop.
* >> Início da inclusão: MODULE STATUS_0100
ENDIF.
CLEAR v_trilha_auditoria.
SELECT trilha_auditoria FROM /pws/zyglt009
INTO v_trilha_auditoria
UP TO 1 ROWS
WHERE bukrs = space.
ENDSELECT.
IF v_trilha_auditoria IS INITIAL.
SET PF-STATUS '0001' EXCLUDING 'LOG_TRILHA'.
* << Fim da inclusão
endif.
endmodule.
module set_screen output.
loop at screen.
if screen-group1 ne 'GP1'.
screen-input = v_status.
endif.
if screen-group1 eq 'INV'.
screen-active = 0.
endif.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/SAPMZYGL007
INCLUDE /pws/mzygl007top.
INCLUDE /pws/mzygl007o01.
INCLUDE /pws/mzygl007i01.
INCLUDE /pws/mzygl007f01.
INCLUDE /pws/mzygl007f02.
* >> Início da inclusão:
include /pws/zygllog.
* << Fim da inclusão
--------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYGLLOG
CRIAR O PROGRAMA /PWS/ZYGLLOG
CARACTERÍSTICAS DO PROGRAMA:
TÍTULO: Include /PWS/ZYGLLOG - Trilha Auditoria pw.CE
CATEGORIA: Programa Include
CL. DESENVOLVIMENTO: /PWS/ZYGL
TEXTO FONTE:
* >> Início da inclusão:
form carrega_log using p_tabname type any
p_oper type any
p_tcode type any
p_progname type any
p_identificador type any.
data: v_linhas type i,
v_tab_campo(50) type c,
v_progname type progname,
v_tcode type tcode,
v_init type i,
v_keys type i,
v_campo_tab(300) type c.
statics v_auditoria
type /pws/zyglt009-trilha_auditoria value 'S'.
statics: begin of itab_dd03l occurs 0.
include structure dd03l.
statics: end of itab_dd03l.
data: begin of itab_condicoes occurs 0.
include structure /pws/zycbe033.
data: end of itab_condicoes.
check p_oper ne 'X'.
if v_auditoria = 'S'.
select single trilha_auditoria
from /pws/zyglt009
into v_auditoria
where bukrs = ' '.
endif.
if p_tabname ne '/PWS/ZYGLT009'.
check v_auditoria = 'X'.
endif.
field-symbols: <campo_tab> type any.
refresh: itab_condicoes.
read table itab_dd03l with key tabname = p_tabname.
if sy-subrc ne 0.
refresh itab_dd03l.
select * from dd03l into table itab_dd03l
where tabname eq p_tabname
order by position.
endif.
clear: v_keys,
v_init.
loop at itab_dd03l where fieldname ne 'MANDT'
and keyflag eq 'X'.
v_keys = v_keys + 1.
concatenate itab_dd03l-tabname '-' itab_dd03l-fieldname
into v_tab_campo.
assign (v_tab_campo) to <campo_tab>.
check <campo_tab> is assigned.
if <campo_tab> is initial.
v_init = v_init + 1.
endif.
if <campo_tab> ca ''''.
translate <campo_tab> using '''%'.
endif.
if sy-tabix = 2.
concatenate '(' itab_dd03l-fieldname
into itab_condicoes-cpochv separated by space.
else.
itab_condicoes-cpochv = itab_dd03l-fieldname.
endif.
if <campo_tab> ca '%'.
concatenate itab_condicoes-cpochv 'LIKE' ''''
into itab_condicoes-cpochv separated by space.
else.
concatenate itab_condicoes-cpochv '=' ''''
into itab_condicoes-cpochv separated by space.
endif.
v_campo_tab = <campo_tab>.
condense v_campo_tab.
concatenate itab_condicoes-cpochv v_campo_tab
'''' into itab_condicoes-cpochv.
v_linhas = sy-tabix + 1.
read table itab_dd03l index v_linhas.
if itab_dd03l-keyflag is initial or sy-subrc ne 0.
concatenate itab_condicoes-cpochv ' ).'
into itab_condicoes-cpochv.
else.
concatenate itab_condicoes-cpochv 'and'
into itab_condicoes-cpochv separated by space.
endif.
append itab_condicoes.
endloop.
check v_init =< v_keys.
if p_progname is initial.
v_progname = sy-repid.
else.
v_progname = p_progname.
endif.
if p_tcode is initial.
v_tcode = sy-tcode.
else.
v_tcode = p_tcode.
endif.
call function '/PWS/ZYGL_TRILHA_AUDITORIA'
exporting
i_progname = v_progname
i_tabname = p_tabname
i_oper = p_oper
i_tcode = v_tcode
i_identificador = p_identificador
tables
t_condicoes = itab_condicoes
t_estrutura = itab_dd03l.
endform. " carrega_log
form log_trilha using p_funcionalidade type any
p_identificador type any
p_transacao type any.
data: begin of itab_tstc occurs 0.
include structure tstc.
data: end of itab_tstc.
if p_transacao = 'X'.
select * from tstc into table itab_tstc
where pgmna = p_funcionalidade. "#EC CI_SGLSELECT
else.
refresh itab_tstc[].
endif.
set parameter id '/PWS/ZYGLP009' field p_funcionalidade.
set parameter id '/PWS/ZYGLP010' field p_identificador.
export itab_tstc[] to memory id 'TRANSACOES'.
submit /pws/zyglr042 and return.
endform. " log_trilha
* << Fim da inclusão
--------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYGLR042
CRIAR O PROGRAMA /PWS/ZYGLR042
CARACTERÍSTICAS DO PROGRAMA:
TÍTULO: LOG de Alterações pw.CE
CATEGORIA: Programa Executável
CL. DESENVOLVIMENTO: /PWS/ZYGL
TEXTO FONTE:
* >> Início da inclusão:
*-----------------------------------------------------------------------
* PROCWORK Software
* Produto : Pw.CE - /PWS/ZYGLR042
* Módulo : CB - Câmbio Exportação
* Descrição: Trilha para Auditoria
* Help Desk: (0XX11) 5504-0170
*-----------------------------------------------------------------------
* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA
*-----------------------------------------------------------------------
* Chamado Data Descrição
*-----------------------------------------------------------------------
* 027723 13/09/2011 Codificação inicial
*-----------------------------------------------------------------------
report /pws/zyglr042 no standard page heading
line-size 144
message-id /pws/zycbm.
tables: dd03l, usr02, /pws/zyglt390.
field-symbols: <wa_dados> type any.
field-symbols: <campo_tab> type any.
data: dy_line type ref to data.
data: v_indice type /pws/zyglt389-indice.
data: v_campo_tab(300) type c.
data: begin of itab_zyglt390 occurs 0.
include structure /pws/zyglt390.
data: end of itab_zyglt390.
data: begin of itab_zyglt391 occurs 0.
include structure /pws/zyglt391.
data: end of itab_zyglt391.
data: begin of itab_zyglt390_aux occurs 0.
include structure /pws/zyglt390.
data: chave(200) type c,
status(21) type c,
line type sy-lilli.
data: end of itab_zyglt390_aux.
data: itab_zyglt390_print like itab_zyglt390_aux
occurs 0 with header line.
data: begin of itab_dd02t occurs 0.
include structure dd02t.
data: end of itab_dd02t.
data: begin of itab_dd04t occurs 0.
include structure dd04t.
data: end of itab_dd04t.
data: begin of itab_trdirt occurs 0.
include structure trdirt.
data: end of itab_trdirt.
data: begin of itab_icon occurs 0.
include structure icon.
data: end of itab_icon.
data: begin of itab_tstc occurs 0.
include structure tstc.
data: end of itab_tstc.
data: begin of itab_tstct occurs 0.
include structure tstct.
data: end of itab_tstct.
data: begin of itab_print_tab occurs 0,
campo type /pws/zyglt391-campo,
rollname type /pws/zyglt391-rollname,
key type /pws/zyglt391-keyflag,
valor(3500) type c,
end of itab_print_tab.
data: begin of itab_alteracoes occurs 0,
indice type /pws/zyglt390-indice,
tabela type dd03l-tabname,
campo type dd03l-fieldname,
rollname type dd03l-rollname,
old_value(3500) type c,
new_value(3500) type c,
end of itab_alteracoes.
data: begin of itab_valores occurs 0,
indice type /pws/zyglt390-indice,
campo type dd03l-fieldname,
valor(3500) type c,
end of itab_valores.
data: itab_valores2 like itab_valores occurs 0 with header line.
data: wa_usr01 type usr01,
wa_zyglt390 like itab_zyglt390,
wa_zyglt390_aux like itab_zyglt390_print.
data: v_data(10) type c,
v_hora(8) type c,
v_programa type /pws/zyglt390-programa,
v_identificador type /pws/zyglt390-identificador,
v_funcionalidade type /pws/zyglt390-programa,
v_tabela type /pws/zyglt390-tabela,
v_tabversno type /pws/zyglt390-tabversno,
v_chave(200) type c,
v_oper type /pws/zyglt390-oper,
v_modifica type c,
v_campo(40) type c,
v_tam_chv_aux(3) type n,
v_pos3 type i,
v_data_line_sel(388),
v_date type datum,
v_time type uzeit,
v_key(250) type c,
v_tabix type sy-tabix,
v_valor(3500) type c,
v_tabela_print(80) type c,
v_transacao_print(52) type c,
v_programa_print(83) type c,
v_print type c,
v_imp_cabecalho type c,
v_estrutura type string,
v_identificador_dif type /pws/zyglt390-identificador,
v_chave_dif type c,
v_programa_dif type c,
v_carrega_valores1 type c,
v_carrega_valores2 type c,
v_define_chave type c,
v_print_line type c,
v_first_reg type c,
v_line type sy-lilli.
selection-screen begin of block restri with frame title text-002.
select-options: programa for /pws/zyglt390-programa
matchcode object /pws/zygla322,
identifi for /pws/zyglt390-identificador,
usuario for usr02-bname,
tabela for /pws/zyglt390-tabela
matchcode object /pws/zygla323,
transaca for /pws/zyglt390-transacao,
status for /pws/zyglt390-oper.
selection-screen end of block restri.
selection-screen skip.
selection-screen begin of block interv with frame title text-001.
select-options: data for sy-datum,
hora for sy-uzeit.
parameter: p_decres type xfeld.
selection-screen end of block interv.
set pf-status '0100'.
at line-selection.
perform exibe_dados.
at user-command.
case sy-ucomm.
when 'BACK' or 'OK' or 'CANCEL'.
leave to screen 0.
when 'EXIT'.
leave program.
endcase.
start-of-selection.
authority-check object 'S_TCODE' id 'TCD' field '/PWS/ZYGLR042'.
if sy-subrc ne 0.
message e261(sf) with '/PWS/ZYGLR042'.
endif.
perform seleciona_dados.
check sy-subrc = 0.
perform carrega_chave.
perform processa_registros.
perform imprime_dados.
end-of-selection.
form verifica_alteracoes using p_tabela
p_tabversno
changing p_modifica.
check not itab_valores[] is initial and
not itab_valores2[] is initial.
loop at itab_valores2.
clear itab_valores.
read table itab_valores with key campo = itab_valores2-campo.
if sy-subrc eq 0 and itab_valores-valor ne itab_valores2-valor.
itab_alteracoes-indice = itab_valores2-indice.
itab_alteracoes-tabela = p_tabela.
itab_alteracoes-campo = itab_valores2-campo.
itab_alteracoes-old_value = itab_valores-valor.
itab_alteracoes-new_value = itab_valores2-valor.
read table itab_zyglt391 with key tabela = p_tabela
campo = itab_valores2-campo
tabversno = p_tabversno.
if sy-subrc = 0.
itab_alteracoes-rollname = itab_zyglt391-rollname.
endif.
append itab_alteracoes.
p_modifica = 'X'.
endif.
endloop.
endform. " verifica_alteracoes
form exibe_dados.
clear itab_zyglt390_print.
read table itab_zyglt390_print with key line = sy-lilli.
check sy-subrc = 0.
call screen 0100 starting at 55 10 ending at 155 30.
endform. " exibe_dados
module exibe_dados output.
leave to list-processing.
set titlebar 'TLISTA'.
set pf-status 'LISTA'.
suppress dialog.
write: itab_zyglt390_print-data to v_data.
write: itab_zyglt390_print-hora to v_hora.
format color col_group intensified on.
write: 1 text-007.
read table itab_trdirt with key
name = itab_zyglt390_print-programa.
if sy-subrc = 0.
concatenate itab_zyglt390_print-programa '-' itab_trdirt-text
into v_programa_print separated by space.
write: 17 v_programa_print.
else.
write: 17 itab_zyglt390_print-programa.
endif.
write: 100 space.
format color col_background intensified on.
skip.
write: /1 text-020.
format color col_background intensified off.
write: 15 v_data.
format color col_background intensified on.
write: 38 text-021.
format color col_background intensified off.
write: 49 v_hora.
format color col_background intensified on.
write: 68 text-024, 75 space, 76 space.
clear itab_icon.
if itab_zyglt390_print-status eq text-003.
read table itab_icon with key name = 'ICON_GREEN_LIGHT'.
elseif itab_zyglt390_print-status eq text-005.
read table itab_icon with key name = 'ICON_YELLOW_LIGHT'.
elseif itab_zyglt390_print-status eq text-006.
read table itab_icon with key name = 'ICON_RED_LIGHT'.
endif.
write: 77 itab_zyglt390_print-status, 97 itab_icon-id as icon.
format color col_background inverse off intensified on.
write: /68 text-022.
format color col_negative inverse.
write: 77 itab_zyglt390_print-usuario.
format color col_background intensified on inverse off.
write: /1 text-023.
write: 11(14) space.
format color col_normal intensified off.
clear itab_tstct.
read table itab_tstct with key tcode = itab_zyglt390_print-transacao.
concatenate itab_zyglt390_print-transacao '-' itab_tstct-ttext
into v_transacao_print separated by space.
write: 15(100) v_transacao_print.
format color col_background intensified off.
write: 101(130) space.
skip.
format color col_background intensified on.
write: /1 text-018.
format color col_background intensified off.
clear itab_dd02t.
read table itab_dd02t with key tabname = itab_zyglt390_print-tabela.
concatenate itab_zyglt390_print-tabela '-' itab_dd02t-ddtext
into v_tabela_print separated by space.
write: 15 v_tabela_print.
skip.
clear v_tabix.
loop at itab_alteracoes where indice = itab_zyglt390_print-indice.
v_tabix = v_tabix + 1.
if v_tabix = 1.
format color col_background intensified on.
write: /1 text-025.
format color col_background intensified off.
write: 15 itab_zyglt390_print-chave.
skip.
write: /1(101) sy-uline.
else.
write: /1 sy-vline, 101, sy-vline, 1(101) sy-uline.
endif.
condense: itab_alteracoes-campo, itab_alteracoes-old_value,
itab_alteracoes-new_value no-gaps.
format color col_key intensified on.
write: /1 sy-vline, 2 text-019, 13 itab_alteracoes-campo,
101 sy-vline,
/1 sy-vline, 2 text-030.
read table itab_dd04t with key
rollname = itab_alteracoes-rollname.
if sy-subrc = 0.
write: 13 itab_dd04t-ddtext.
endif.
write: 101 sy-vline,
/1(101) sy-uline.
format color col_normal intensified off.
write: /1 sy-vline, 2 text-016.
write: 16 itab_alteracoes-old_value(31), 52 sy-vline.
format color col_total.
write: 53 text-017, 65 itab_alteracoes-new_value(31), 101 sy-vline.
write: /1(101) sy-uline.
endloop.
check sy-subrc ne 0.
write: /1(101) sy-uline.
format color col_key intensified on.
write: /1 sy-vline, 2 text-026, 16 sy-vline, 17 text-029, 46 sy-vline,
47 text-027, 101 sy-vline.
write: /1(101) sy-uline.
refresh itab_print_tab.
move-corresponding itab_zyglt390_print to wa_zyglt390_aux.
v_print_line = 'X'.
clear: v_define_chave, v_carrega_valores1, v_carrega_valores2.
export wa_zyglt390_aux to memory id 'ZYGLT390_AUX'.
export itab_zyglt391[] to memory id 'ZYGLT391'.
export v_define_chave to memory id 'DEFINE_CHAVE'.
export v_carrega_valores1 to memory id 'CARREGA_VALORES1'.
export v_carrega_valores2 to memory id 'CARREGA_VALORES2'.
export v_print_line to memory id 'PRINT_LINE'.
submit /pws/zyglr044 and return.
import itab_valores[] from memory id 'VALORES1'.
import itab_print_tab[] from memory id 'PRINT_TAB'.
loop at itab_print_tab.
format color col_key intensified on.
write: /1 sy-vline, 2 itab_print_tab-campo, 16 sy-vline.
read table itab_dd04t with key rollname = itab_print_tab-rollname.
if sy-subrc = 0.
write: 17 itab_dd04t-ddtext.
endif.
write: 46 sy-vline.
if not itab_print_tab-key is initial.
format color col_key intensified on.
else.
format color col_normal intensified off.
endif.
write: 47 itab_print_tab-valor(54), 101 sy-vline.
endloop.
write: /1(101) sy-uline.
endmodule. " exibe_dados OUTPUT
module status_0100 output.
set pf-status 'LISTA'.
endmodule. " STATUS_0100 OUTPUT
form seleciona_dados.
get parameter id '/PWS/ZYGLP009' field v_funcionalidade.
get parameter id '/PWS/ZYGLP010' field v_identificador.
import itab_tstc[] from memory id 'TRANSACOES'.
if not v_funcionalidade is initial and
itab_tstc[] is initial.
select * from /pws/zyglt390 into table itab_zyglt390
where identificador = v_identificador
and programa = v_funcionalidade.
p_decres = 'X'.
elseif not v_funcionalidade is initial and
not itab_tstc[] is initial.
select * from /pws/zyglt390 into table itab_zyglt390
for all entries in itab_tstc
where identificador = v_identificador
and transacao = itab_tstc-tcode.
p_decres = 'X'.
else.
select * from /pws/zyglt390 into table itab_zyglt390
where data in data
and hora in hora
and usuario in usuario
and tabela in tabela
and identificador in identifi
and programa in programa
and transacao in transaca.
endif.
if sy-subrc = 0.
clear: v_funcionalidade, v_identificador.
refresh itab_tstc.
set parameter id '/PWS/ZYGLP009' field v_funcionalidade.
set parameter id '/PWS/ZYGLP010' field v_identificador.
export itab_tstc[] to memory id 'TRANSACOES'.
if not itab_zyglt390[] is initial.
select * from /pws/zyglt391 into table itab_zyglt391
for all entries in itab_zyglt390
where tabela eq itab_zyglt390-tabela.
if not itab_zyglt391[] is initial.
select * from dd02t into table itab_dd02t
for all entries in itab_zyglt391
where tabname eq itab_zyglt391-tabela
and ddlanguage eq sy-langu.
select * from dd04t into table itab_dd04t
for all entries in itab_zyglt391
where rollname eq itab_zyglt391-rollname
and ddlanguage eq sy-langu.
endif.
select * from icon into table itab_icon.
select * from trdirt into table itab_trdirt
for all entries in itab_zyglt390
where name eq itab_zyglt390-programa
and sprsl eq sy-langu.
select * from tstct into table itab_tstct
for all entries in itab_zyglt390
where sprsl eq sy-langu
and tcode eq itab_zyglt390-transacao.
clear wa_usr01.
select single * from usr01 into wa_usr01 where bname = sy-uname.
else.
message i015 with text-028.
exit.
endif.
else.
clear: v_funcionalidade, v_identificador.
refresh itab_tstc.
set parameter id '/PWS/ZYGLP009' field v_funcionalidade.
set parameter id '/PWS/ZYGLP010' field v_identificador.
export itab_tstc[] to memory id 'TRANSACOES'.
message i015 with text-028.
exit.
endif.
endform. " seleciona_dados
form carrega_chave.
sort itab_zyglt390 by programa tabela data hora.
refresh itab_zyglt390_aux.
loop at itab_zyglt390 where oper in status.
loop at itab_zyglt391 where tabela = itab_zyglt390-tabela
and tabversno > itab_zyglt390-tabversno.
exit.
endloop.
if sy-subrc ne 0.
if not ( itab_zyglt390-tabela eq v_tabela and
itab_zyglt390-tabversno eq v_tabversno and
<wa_dados> is assigned ).
create data dy_line type (itab_zyglt390-tabela).
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
endif.
v_indice = itab_zyglt390-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
clear: itab_zyglt390_aux.
loop at itab_zyglt391 where tabela eq itab_zyglt390-tabela
and keyflag eq 'X'
and campo ne 'MANDT'
and tabversno eq itab_zyglt390-tabversno.
move-corresponding itab_zyglt390 to itab_zyglt390_aux.
assign component itab_zyglt391-campo
of structure <wa_dados> to <campo_tab>.
check <campo_tab> is assigned.
v_campo_tab = <campo_tab>.
condense v_campo_tab.
if itab_zyglt390_aux-chave is initial.
concatenate itab_zyglt390_aux-chave v_campo_tab
into itab_zyglt390_aux-chave.
else.
concatenate itab_zyglt390_aux-chave v_campo_tab
into itab_zyglt390_aux-chave separated by space.
endif.
if itab_zyglt390-oper = 'I'.
itab_zyglt390_aux-status = text-003.
elseif itab_zyglt390-oper = 'D'.
itab_zyglt390_aux-status = text-006.
endif.
endloop.
else.
move-corresponding itab_zyglt390 to wa_zyglt390.
v_define_chave = 'X'.
clear: v_carrega_valores1, v_carrega_valores2, v_print_line.
export wa_zyglt390 to memory id 'ZYGLT390'.
export itab_zyglt391[] to memory id 'ZYGLT391'.
export v_define_chave to memory id 'DEFINE_CHAVE'.
export v_carrega_valores1 to memory id 'CARREGA_VALORES1'.
export v_carrega_valores2 to memory id 'CARREGA_VALORES2'.
export v_print_line to memory id 'PRINT_LINE'.
submit /pws/zyglr044 and return.
import wa_zyglt390_aux from memory id 'ZYGLT390_AUX'.
move-corresponding wa_zyglt390_aux to itab_zyglt390_aux.
endif.
append itab_zyglt390_aux.
v_tabela = itab_zyglt390-tabela.
v_tabversno = itab_zyglt390-tabversno.
endloop.
endform. " carrega_chave
form processa_registros.
clear: v_programa, v_identificador, itab_valores, itab_valores2,
v_print, v_imp_cabecalho, v_tabela, v_chave.
refresh: itab_valores, itab_valores2.
sort itab_zyglt390_aux by programa identificador tabela chave
indice(22) data hora.
loop at itab_zyglt390_aux.
clear v_first_reg.
if v_programa ne itab_zyglt390_aux-programa or
v_identificador ne itab_zyglt390_aux-identificador or
v_tabela ne itab_zyglt390_aux-tabela or
v_chave ne itab_zyglt390_aux-chave.
clear: itab_valores, itab_valores2.
refresh: itab_valores, itab_valores2.
v_first_reg = 'X'.
elseif v_programa eq itab_zyglt390_aux-programa and
v_identificador eq itab_zyglt390_aux-identificador and
v_tabela eq itab_zyglt390_aux-tabela and
v_chave eq itab_zyglt390_aux-chave and
v_oper eq 'D'.
clear: itab_valores, itab_valores2.
refresh: itab_valores, itab_valores2.
v_first_reg = 'X'.
endif.
clear v_modifica.
if itab_zyglt390_aux-oper ne 'I' and
itab_zyglt390_aux-oper ne 'D'.
if not itab_valores[] is initial.
loop at itab_zyglt391
where tabela = itab_zyglt390_aux-tabela
and tabversno > itab_zyglt390_aux-tabversno.
exit.
endloop.
if sy-subrc ne 0.
if not ( itab_zyglt390-tabela eq v_tabela and
itab_zyglt390-tabversno eq v_tabversno and
<wa_dados> is assigned ).
create data dy_line type (itab_zyglt390_aux-tabela).
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
endif.
v_indice = itab_zyglt390_aux-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
perform carrega_valores using v_indice
itab_zyglt390_aux-tabela
<wa_dados>
'2'
itab_zyglt390_aux-tabversno.
else.
move-corresponding itab_zyglt390_aux to wa_zyglt390_aux.
v_carrega_valores2 = 'X'.
clear: v_define_chave, v_carrega_valores1, v_print_line.
export wa_zyglt390_aux to memory id 'ZYGLT390_AUX'.
export itab_zyglt391[] to memory id 'ZYGLT391'.
export v_define_chave to memory id 'DEFINE_CHAVE'.
export v_carrega_valores1 to memory id 'CARREGA_VALORES1'.
export v_carrega_valores2 to memory id 'CARREGA_VALORES2'.
export v_print_line to memory id 'PRINT_LINE'.
submit /pws/zyglr044 and return.
import itab_valores2[] from memory id 'VALORES2'.
endif.
perform verifica_alteracoes using itab_zyglt390_aux-tabela
itab_zyglt390_aux-tabversno
changing v_modifica.
if not v_modifica is initial.
itab_zyglt390_aux-status = text-005.
endif.
endif.
endif.
modify itab_zyglt390_aux.
if itab_valores2[] is initial.
loop at itab_zyglt391
where tabela = itab_zyglt390_aux-tabela
and tabversno > itab_zyglt390_aux-tabversno.
exit.
endloop.
if sy-subrc ne 0.
if not ( itab_zyglt390-tabela eq v_tabela and
itab_zyglt390-tabversno eq v_tabversno and
<wa_dados> is assigned ).
create data dy_line type (itab_zyglt390_aux-tabela).
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
endif.
v_indice = itab_zyglt390_aux-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
perform carrega_valores using v_indice
itab_zyglt390_aux-tabela
<wa_dados>
'1'
itab_zyglt390_aux-tabversno.
else.
move-corresponding itab_zyglt390_aux to wa_zyglt390_aux.
v_carrega_valores1 = 'X'.
clear: v_define_chave, v_carrega_valores2, v_print_line.
export wa_zyglt390_aux to memory id 'ZYGLT390_AUX'.
export itab_zyglt391[] to memory id 'ZYGLT391'.
export v_define_chave to memory id 'DEFINE_CHAVE'.
export v_carrega_valores1 to memory id 'CARREGA_VALORES1'.
export v_carrega_valores2 to memory id 'CARREGA_VALORES2'.
export v_print_line to memory id 'PRINT_LINE'.
submit /pws/zyglr044 and return.
import itab_valores[] from memory id 'VALORES1'.
endif.
else.
refresh itab_valores.
loop at itab_valores2.
move-corresponding itab_valores2 to itab_valores.
append itab_valores.
endloop.
refresh itab_valores2.
endif.
if v_first_reg is initial.
if itab_zyglt390_aux-oper ne 'I' and
itab_zyglt390_aux-oper ne 'D' and
v_modifica is initial and
not itab_valores[] is initial.
if v_programa ne itab_zyglt390_aux-programa.
v_programa_dif = 'X'.
endif.
if v_identificador ne itab_zyglt390_aux-identificador.
v_identificador_dif = 'X'.
endif.
if v_chave ne itab_zyglt390_aux-chave.
v_chave_dif = 'X'.
endif.
v_programa = itab_zyglt390_aux-programa.
v_identificador = itab_zyglt390_aux-identificador.
v_tabela = itab_zyglt390_aux-tabela.
v_chave = itab_zyglt390_aux-chave.
v_oper = itab_zyglt390_aux-oper.
v_tabversno = itab_zyglt390_aux-tabversno.
continue.
endif.
endif.
if not status[] is initial and
not itab_zyglt390_aux-oper in status.
v_programa = itab_zyglt390_aux-programa.
v_identificador = itab_zyglt390_aux-identificador.
v_tabela = itab_zyglt390_aux-tabela.
v_chave = itab_zyglt390_aux-chave.
v_oper = itab_zyglt390_aux-oper.
v_tabversno = itab_zyglt390_aux-tabversno.
continue.
endif.
if itab_zyglt390_aux-status is initial and
itab_zyglt390_aux-oper = 'U'.
itab_zyglt390_aux-status = text-005.
modify itab_zyglt390_aux.
endif.
move-corresponding itab_zyglt390_aux to itab_zyglt390_print.
append itab_zyglt390_print.
v_programa = itab_zyglt390_aux-programa.
v_identificador = itab_zyglt390_aux-identificador.
v_tabela = itab_zyglt390_aux-tabela.
v_chave = itab_zyglt390_aux-chave.
v_oper = itab_zyglt390_aux-oper.
v_tabversno = itab_zyglt390_aux-tabversno.
endloop.
endform. " processa_registros
form imprime_dados.
if p_decres = 'X'.
sort itab_zyglt390_print by
programa identificador ascending
data descending
hora descending
tabela chave ascending.
else.
sort itab_zyglt390_print by programa identificador data hora
tabela chave.
endif.
clear: v_programa, v_programa_dif, v_imp_cabecalho, v_print,
v_identificador, v_chave, v_chave_dif.
clear v_line.
loop at itab_zyglt390_print.
if v_programa ne itab_zyglt390_print-programa or
v_programa_dif eq 'X'.
v_imp_cabecalho = 'X'.
clear: v_print, v_programa_dif.
elseif v_identificador ne itab_zyglt390_print-identificador or
v_identificador_dif = 'X'.
if not v_print is initial.
uline at /1(144).
v_line = v_line + 1.
clear: v_print, v_identificador_dif.
endif.
endif.
if not status[] is initial and
not itab_zyglt390_print-oper in status.
v_programa = itab_zyglt390_print-programa.
v_identificador = itab_zyglt390_print-identificador.
continue.
endif.
if not v_imp_cabecalho is initial.
uline at /1(144).
v_line = v_line + 1.
format color col_group inverse off intensified on.
write: /1 sy-vline, 2 text-007,
itab_zyglt390_print-programa.
v_line = v_line + 1.
read table itab_trdirt with key
name = itab_zyglt390_print-programa.
if sy-subrc = 0.
write: itab_trdirt-text.
endif.
write at 144(1) sy-vline.
uline at /1(144).
v_line = v_line + 1.
format color col_key.
write: /1 sy-vline, 2 text-013, "Status
9 sy-vline, 10 text-015, "Identificador
30 sy-vline, 31 text-010, "Tabela
49 sy-vline, 54 text-008, "Data
62 sy-vline, 66 text-009, "Hora
73 sy-vline, 74 text-011, "Usuário
86 sy-vline, 87 text-014, "Transação
107 sy-vline, 108 text-029, "Descrição
144 sy-vline.
v_line = v_line + 1.
format color col_background.
uline at /1(144).
v_line = v_line + 1.
clear v_imp_cabecalho.
endif.
v_print = 'X'.
write itab_zyglt390_print-data to v_data.
write itab_zyglt390_print-hora to v_hora.
write: /1 sy-vline hotspot on.
v_line = v_line + 1.
format color col_key intensified off.
if itab_zyglt390_print-status = text-003.
read table itab_icon with key name = 'ICON_GREEN_LIGHT'.
if sy-subrc = 0.
write at 2 itab_icon-id as icon hotspot on.
endif.
elseif itab_zyglt390_print-status = text-006.
read table itab_icon with key name = 'ICON_RED_LIGHT'.
if sy-subrc = 0.
write at 2 itab_icon-id as icon hotspot on.
endif.
elseif itab_zyglt390_print-status = text-005.
read table itab_icon with key name = 'ICON_YELLOW_LIGHT'.
if sy-subrc = 0.
write at 2 itab_icon-id as icon hotspot on.
endif.
endif.
write: 9 sy-vline,
10 itab_zyglt390_print-identificador hotspot on,
30 sy-vline hotspot off.
format color col_normal inverse off intensified off.
write: 31 itab_zyglt390_print-tabela, 49 sy-vline.
write: 51 v_data,
62 sy-vline,
64 v_hora,
73 sy-vline,
74 itab_zyglt390_print-usuario,
86 sy-vline,
87 itab_zyglt390_print-transacao,
107 sy-vline.
read table itab_tstct with key
tcode = itab_zyglt390_print-transacao.
if sy-subrc = 0.
write: 108 itab_tstct-ttext, 144 sy-vline.
else.
write: 144 sy-vline.
endif.
v_programa = itab_zyglt390_print-programa.
v_identificador = itab_zyglt390_print-identificador.
itab_zyglt390_print-line = v_line.
modify itab_zyglt390_print.
endloop.
if not v_print is initial.
uline at /1(144).
endif.
endform. " imprime_dados
form carrega_valores using p_indice
p_tabela
p_dados
p_wa
p_tabversno.
loop at itab_zyglt391 where tabela = p_tabela
and tabversno = p_tabversno.
assign component itab_zyglt391-campo
of structure p_dados to <campo_tab>.
check <campo_tab> is assigned.
itab_valores-indice = p_indice.
itab_valores-campo = itab_zyglt391-campo.
itab_valores-valor = <campo_tab>.
if itab_zyglt391-inttype = 'D' or
itab_zyglt391-inttype = 'T'.
write <campo_tab> to itab_valores-valor.
elseif itab_zyglt391-decimals > 0.
if wa_usr01-dcpfm = 'X'.
if itab_valores-valor ca ','.
translate itab_valores-valor using ', '.
endif.
elseif wa_usr01-dcpfm = 'Y'.
translate itab_valores-valor using ', '.
elseif wa_usr01-dcpfm is initial.
if itab_valores-valor ca ','.
translate itab_valores-valor using '. '.
endif.
translate itab_valores-valor using ',.'.
endif.
condense itab_valores-valor.
elseif itab_zyglt391-inttype = 'N'.
if not itab_valores-valor ca '123456789'.
write itab_valores-valor to itab_valores-valor no-zero.
endif.
endif.
if not itab_zyglt391-decimals > 0.
condense itab_valores-valor.
endif.
if p_wa = 1.
append itab_valores.
else.
move-corresponding itab_valores to itab_valores2.
append itab_valores2.
endif.
endloop.
endform. " carrega_valores* << Fim da inclusão
INCLUIR TEXTOS DE SELECAO :
NOME: TEXTO: REFER. DIC.
DATA Data
HORA Hora
IDENTIFI Identificador(chave)
PROGRAMA Funcionalidade
P_DECRES Ordem Decrescente
STATUS Status
TABELA Tabela
TRANSACA Transação
USUARIO Usuário
INCLUIR SÍMBOLOS DE TEXTO :
SÍM.: TEXTO: CD. CM.
001 Intervalo 9 9
002 Restrições 10 10
003 Inclusão 8 8
004 Não houve modificação 21 21
005 Modificação 11 11
006 Exclusão 8 8
007 Funcionalidade: 15 15
008 Data 4 4
009 Hora 4 4
010 Tabela 6 6
011 Usuário 7 7
013 Status 6 6
014 Transação 9 9
015 Identificador 13 13
016 Valor Antigo: 13 13
017 Valor Novo: 11 11
018 Tabela: 7 7
019 Campo: 6 6
020 Data: 5 5
021 Hora: 5 5
022 Usuário: 8 8
023 Transação: 10 10
024 Status: 7 7
025 Campos Chave: 13 13
026 Campo 5 5
027 Valor 5 5
028 Não existem dados para a seleção. 33 33
029 Descrição 9 9
030 Descrição: 10 10
CRIAR STATUS-GUI: 0100
ATRIBUTOS DE STATUS
TEXTO BREVE: Status Tela 100
CATEGORIA DE STATUS
(X) - STATUS DIÁLOGO
(_) - CAIXA DE DIÁLOGO
(_) - MENU DE CONTEXTO
Teclas de Função
CÓDIGO DE FUNÇÃO: 'BACK' (seta verde)
CATEGORIA DE FUNÇÃO: 'E'
CÓDIGO DE FUNÇÃO: 'EXIT' (seta amarela)
CATEGORIA DE FUNÇÃO: 'E'
CÓDIGO DE FUNÇÃO: 'EXIT' (seta vermelha)
CATEGORIA DE FUNÇÃO: 'E'
CRIAR STATUS-GUI: TLISTA
ATRIBUTOS DE STATUS
TEXTO BREVE: Status Tela Lista
CATEGORIA DE STATUS
(X) - STATUS DIÁLOGO
(_) - CAIXA DE DIÁLOGO
(_) - MENU DE CONTEXTO
Barra de Botões
CÓDIGO DE FUNÇÃO: OK
CATEGORIA DE FUNÇÃO: ' '
TEXTOS DE FUNÇÃO ESTÁTICOS
TEXTO DE FUNÇÃO: Ok
NOME DE ÍCONE: ICON_OKAY
TEXTO DE ÍCONE: ' '
TEXTO INFORMATIVO: ' '
SELEÇÃO DIRETA: ' '
TECLA DE ATALHO: Ctrl+F4
Teclas de Função
CÓDIGO DE FUNÇÃO: 'CANCEL' (seta vermelha)
CATEGORIA DE FUNÇÃO: 'E'
CRIAR TÍTS GUI
CODE TÍTULO: TLISTA
TÍTULO: Valores Tabela
--------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYGLR043
CRIAR O PROGRAMA /PWS/ZYGLR043
CARACTERÍSTICAS DO PROGRAMA:
TÍTULO: Programa Trilha Auditoria - /PWS/ZYGLR043
CATEGORIA: Programa Executável
CL. DESENVOLVIMENTO: /PWS/ZYGL
TEXTO FONTE:
* >> Início da inclusão:
* ----------------------------------------------------------------------
* SONDA PROCWORK
* Produto : Pw.CE - /PWS/ZYGLR043
* Módulo : GL ¿ Geral
* Descrição: Trilha de Auditoria
* Help Desk: (0XX11) 5504-0170
* ----------------------------------------------------------------------
* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA
* ----------------------------------------------------------------------
* Chamado Data Descrição
* ----------------------------------------------------------------------
* 27723 14.09.2001 Codificação Inicial
* ----------------------------------------------------------------------
report /pws/zyglr043.
field-symbols: <fs_dynamic_table> type index table.
data: lt_dynamic_table type lvc_t_fcat,
ls_dynamic_table like line of lt_dynamic_table,
lr_dynamic_table type ref to data,
dy_line type ref to data.
field-symbols: <wa_dados>.
data: begin of itab_zyglt391_exp occurs 0.
include structure /pws/zyglt391.
data: end of itab_zyglt391_exp.
data: wa_data type char4000.
data: v_indice type /pws/zyglt389-indice,
v_indice_aux type /pws/zyglt389-indice,
v_data(9) type c,
v_indice_c(56) type c,
v_exporta_dados type c,
v_linhas type i,
v_tabix type i.
import itab_zyglt391_exp[] from memory id 'ZYGLT391_EXP'.
form cria_estrutura_tabela using p_tabela
p_tabversno.
sort itab_zyglt391_exp by tabela tabversno posicao.
refresh: lt_dynamic_table.
loop at itab_zyglt391_exp where tabela = p_tabela
and tabversno = p_tabversno.
read table lt_dynamic_table into ls_dynamic_table
with key tabname = itab_zyglt391_exp-tabela
fieldname = itab_zyglt391_exp-campo.
check sy-subrc ne 0.
ls_dynamic_table-fieldname = itab_zyglt391_exp-campo.
ls_dynamic_table-tabname = itab_zyglt391_exp-tabela.
ls_dynamic_table-key = itab_zyglt391_exp-keyflag.
ls_dynamic_table-rollname = itab_zyglt391_exp-rollname.
ls_dynamic_table-row_pos = itab_zyglt391_exp-posicao.
ls_dynamic_table-inttype = itab_zyglt391_exp-inttype.
ls_dynamic_table-outputlen = itab_zyglt391_exp-intlen.
ls_dynamic_table-dd_outlen = itab_zyglt391_exp-intlen.
if sy-saprl(3) ge '620' or sy-saprl(2) eq '47'.
ls_dynamic_table-intlen = itab_zyglt391_exp-leng.
else.
ls_dynamic_table-intlen = itab_zyglt391_exp-intlen.
endif.
ls_dynamic_table-decimals = itab_zyglt391_exp-decimals.
ls_dynamic_table-datatype = itab_zyglt391_exp-datatype.
append ls_dynamic_table to lt_dynamic_table.
clear ls_dynamic_table.
endloop.
sort lt_dynamic_table by row_pos.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = lt_dynamic_table
importing
ep_table = lr_dynamic_table
exceptions
generate_subpool_dir_full = 1
others = 2.
if sy-subrc = 0. else. endif.
endform. " cria_estrutura_tabela* << Fim da inclusão
INCLUIR SÍMBOLOS DE TEXTO :
SÍM.: TEXTO: CD. CM.
001 '' 2 2
--------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYGLR044
CRIAR O PROGRAMA /PWS/ZYGLR044
CARACTERÍSTICAS DO PROGRAMA:
TÍTULO: Programa Trilha Auditoria - /PWS/ZYGLR044
CATEGORIA: Programa Executável
CL. DESENVOLVIMENTO: /PWS/ZYGL
TEXTO FONTE:
*-----------------------------------------------------------------------
* PROCWORK Software
* Produto : Pw.CE - /PWS/ZYGLR044
* Módulo : CB - Câmbio Exportação
* Descrição: Trilha para Auditoria
* Help Desk: (0XX11) 5504-0170
*-----------------------------------------------------------------------
* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA
*-----------------------------------------------------------------------
* Chamado Data Descrição
*-----------------------------------------------------------------------
* 027723 13/09/2011 Codificação inicial
*-----------------------------------------------------------------------
* >> Início da inclusão:
report /pws/zyglr044.
field-symbols: <campo_tab> type any,
<fs_dynamic_table> type index table.
data: lt_dynamic_table type lvc_t_fcat,
ls_dynamic_table like line of lt_dynamic_table,
lr_dynamic_table type ref to data,
dy_line type ref to data.
field-symbols: <wa_dados>.
data: begin of itab_zyglt390 occurs 0.
include structure /pws/zyglt390.
data: end of itab_zyglt390.
data: begin of itab_zyglt391 occurs 0.
include structure /pws/zyglt391.
data: end of itab_zyglt391.
data: begin of itab_dd04t occurs 0.
include structure dd04t.
data: end of itab_dd04t.
data: begin of itab_zyglt390_aux occurs 0.
include structure /pws/zyglt390.
data: chave(200) type c,
status(21) type c,
line type sy-lilli.
data: end of itab_zyglt390_aux.
*data: begin of wheretab occurs 0,
* cond(50) type c,
* end of wheretab.
data: begin of itab_valores occurs 0,
indice type /pws/zyglt390-indice,
campo type dd03l-fieldname,
valor(3500) type c,
end of itab_valores.
data: itab_valores2 like itab_valores occurs 0 with header line.
data: begin of itab_print_tab occurs 0,
campo type /pws/zyglt391-campo,
rollname type /pws/zyglt391-rollname,
key type /pws/zyglt391-keyflag,
valor(3500) type c,
end of itab_print_tab.
data: wa_data type char4000,
wa_usr01 type usr01,
wa_zyglt390 like itab_zyglt390,
wa_zyglt390_aux like itab_zyglt390_aux.
data: v_indice type /pws/zyglt389-indice,
v_carrega_valores1 type c,
v_carrega_valores2 type c,
v_define_chave type c,
v_print_line type c,
v_valor(3500) type c,
v_data(9) type c,
v_indice_n(56) type n,
v_exporta_dados type c,
v_campo_tab(300) type c.
import wa_zyglt390 from memory id 'ZYGLT390'.
import wa_zyglt390_aux from memory id 'ZYGLT390_AUX'.
import itab_zyglt391[] from memory id 'ZYGLT391'.
import v_define_chave from memory id 'DEFINE_CHAVE'.
import v_carrega_valores1 from memory id 'CARREGA_VALORES1'.
import v_carrega_valores2 from memory id 'CARREGA_VALORES2'.
import v_print_line from memory id 'PRINT_LINE'.
import v_exporta_dados from memory id 'EXPORTA_DADOS'.
move-corresponding wa_zyglt390 to itab_zyglt390.
move-corresponding wa_zyglt390_aux to itab_zyglt390_aux.
if not v_define_chave is initial.
perform cria_estrutura_tabela using itab_zyglt390-tabela
itab_zyglt390-tabversno.
assign lr_dynamic_table->* to <fs_dynamic_table>.
create data dy_line like line of <fs_dynamic_table>.
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
v_indice = itab_zyglt390-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
clear: itab_zyglt390_aux.
loop at lt_dynamic_table into ls_dynamic_table
where tabname eq itab_zyglt390-tabela
and key eq 'X'
and fieldname ne 'MANDT'.
move-corresponding itab_zyglt390 to itab_zyglt390_aux.
assign component ls_dynamic_table-fieldname
of structure <wa_dados> to <campo_tab>.
check <campo_tab> is assigned.
v_campo_tab = <campo_tab>.
condense v_campo_tab.
if itab_zyglt390_aux-chave is initial.
concatenate itab_zyglt390_aux-chave v_campo_tab
into itab_zyglt390_aux-chave.
else.
concatenate itab_zyglt390_aux-chave v_campo_tab
into itab_zyglt390_aux-chave separated by space.
endif.
if itab_zyglt390-oper = 'I'.
itab_zyglt390_aux-status = text-003.
elseif itab_zyglt390-oper = 'D'.
itab_zyglt390_aux-status = text-006.
endif.
endloop.
move-corresponding itab_zyglt390_aux to wa_zyglt390_aux.
export wa_zyglt390_aux to memory id 'ZYGLT390_AUX'.
endif.
if not v_carrega_valores2 is initial.
perform cria_estrutura_tabela
using itab_zyglt390_aux-tabela
itab_zyglt390_aux-tabversno.
assign lr_dynamic_table->* to <fs_dynamic_table>.
create data dy_line like line of <fs_dynamic_table>.
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
v_indice = itab_zyglt390_aux-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
perform carrega_valores using v_indice
itab_zyglt390_aux-tabela
<wa_dados>
'2'.
export itab_valores2[] to memory id 'VALORES2'.
endif.
if not v_carrega_valores1 is initial.
perform cria_estrutura_tabela using itab_zyglt390_aux-tabela
itab_zyglt390_aux-tabversno.
assign lr_dynamic_table->* to <fs_dynamic_table>.
create data dy_line like line of <fs_dynamic_table>.
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
v_indice = itab_zyglt390_aux-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
perform carrega_valores using v_indice
itab_zyglt390_aux-tabela
<wa_dados>
'1'.
export itab_valores[] to memory id 'VALORES1'.
endif.
if not v_print_line is initial.
perform cria_estrutura_tabela using itab_zyglt390_aux-tabela
itab_zyglt390_aux-tabversno.
assign lr_dynamic_table->* to <fs_dynamic_table>.
create data dy_line like line of <fs_dynamic_table>.
assign dy_line->* to <wa_dados>.
check <wa_dados> is assigned.
v_indice = itab_zyglt390_aux-indice.
import wa_data to <wa_dados>
from database /pws/zyglt389(ce)
id v_indice.
loop at lt_dynamic_table into ls_dynamic_table
where tabname eq itab_zyglt390_aux-tabela
and fieldname ne 'MANDT'.
assign component ls_dynamic_table-fieldname
of structure <wa_dados> to <campo_tab>.
check <campo_tab> is assigned.
v_valor = <campo_tab>.
if ls_dynamic_table-inttype = 'D' or
ls_dynamic_table-inttype = 'T'.
write <campo_tab> to v_valor.
elseif ls_dynamic_table-decimals > 0.
if wa_usr01-dcpfm = 'X'.
if itab_valores-valor ca ','.
translate v_valor using ', '.
endif.
elseif wa_usr01-dcpfm = 'Y'.
translate v_valor using ', '.
elseif wa_usr01-dcpfm is initial.
if v_valor ca ','.
translate v_valor using '. '.
endif.
translate v_valor using ',.'.
endif.
condense v_valor.
elseif ls_dynamic_table-inttype = 'N'.
if not v_valor ca '123456789'.
write v_valor to v_valor no-zero.
endif.
endif.
if not ls_dynamic_table-decimals > 0.
condense v_valor.
endif.
itab_print_tab-campo = ls_dynamic_table-fieldname.
itab_print_tab-rollname = ls_dynamic_table-rollname.
itab_print_tab-key = ls_dynamic_table-key.
itab_print_tab-valor = v_valor.
append itab_print_tab.
endloop.
export itab_print_tab[] to memory id 'PRINT_TAB'.
endif.
leave program.
form cria_estrutura_tabela using p_tabela
p_tabversno.
sort itab_zyglt391 by tabela tabversno posicao.
refresh: lt_dynamic_table.
loop at itab_zyglt391 where tabela = p_tabela
and tabversno = p_tabversno.
read table lt_dynamic_table into ls_dynamic_table
with key tabname = itab_zyglt391-tabela
fieldname = itab_zyglt391-campo.
check sy-subrc ne 0.
ls_dynamic_table-fieldname = itab_zyglt391-campo.
ls_dynamic_table-tabname = itab_zyglt391-tabela.
ls_dynamic_table-key = itab_zyglt391-keyflag.
ls_dynamic_table-rollname = itab_zyglt391-rollname.
ls_dynamic_table-row_pos = itab_zyglt391-posicao.
ls_dynamic_table-inttype = itab_zyglt391-inttype.
ls_dynamic_table-outputlen = itab_zyglt391-intlen.
ls_dynamic_table-dd_outlen = itab_zyglt391-intlen.
if sy-saprl(3) ge '620' or sy-saprl(2) eq '47'.
ls_dynamic_table-intlen = itab_zyglt391-leng.
else.
ls_dynamic_table-intlen = itab_zyglt391-intlen.
endif.
ls_dynamic_table-decimals = itab_zyglt391-decimals.
ls_dynamic_table-datatype = itab_zyglt391-datatype.
append ls_dynamic_table to lt_dynamic_table.
clear ls_dynamic_table.
endloop.
sort lt_dynamic_table by row_pos.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = lt_dynamic_table
importing
ep_table = lr_dynamic_table
exceptions
generate_subpool_dir_full = 1
others = 2.
if sy-subrc = 0. else. endif.
endform. " cria_estrutura_tabela
form carrega_valores using p_indice
p_tabela
p_dados
p_wa.
loop at lt_dynamic_table into ls_dynamic_table
where tabname = p_tabela.
assign component ls_dynamic_table-fieldname
of structure p_dados to <campo_tab>.
check <campo_tab> is assigned.
itab_valores-indice = p_indice.
itab_valores-campo = ls_dynamic_table-fieldname.
itab_valores-valor = <campo_tab>.
if ls_dynamic_table-inttype = 'D' or
ls_dynamic_table-inttype = 'T'.
write <campo_tab> to itab_valores-valor.
elseif ls_dynamic_table-decimals > 0.
if wa_usr01-dcpfm = 'X'.
if itab_valores-valor ca ','.
translate itab_valores-valor using ', '.
endif.
elseif wa_usr01-dcpfm = 'Y'.
translate itab_valores-valor using ', '.
elseif wa_usr01-dcpfm is initial.
if itab_valores-valor ca ','.
translate itab_valores-valor using '. '.
endif.
translate itab_valores-valor using ',.'.
endif.
condense itab_valores-valor.
elseif ls_dynamic_table-inttype = 'N'.
if not itab_valores-valor ca '123456789'.
write itab_valores-valor to itab_valores-valor no-zero.
endif.
endif.
if not ls_dynamic_table-decimals > 0.
condense itab_valores-valor.
endif.
if p_wa = 1.
append itab_valores.
else.
move-corresponding itab_valores to itab_valores2.
append itab_valores2.
endif.
endloop.
endform. " carrega_valores
* << Fim da inclusão
INCLUIR SÍMBOLOS DE TEXTO :
SÍM.: TEXTO: CD. CM.
003 Inclusão 8 8
004 Não houve modificação 21 21
005 Modificação 11 11
006 Exclusão 8 8
----------------------------------------------------------------------------------------------------
Modificações efetuadas em SHI3 /PWS/ZYCB
Incluir no menu /PWS/ZYCB, através da transação SE43
Parâmetros -> Técnicos -> (após CB - Modalidade Associação de Despesa)
Entrada de Menu -> Trilha de Auditoria
Código de Transação -> /PWS/ZYGLR042
--------------------------------------------------------------------------------------------
Modificações efetuadas em SHLP /PWS/ZYGLA322
CRIAR AJUDA DE PESQUISA: /PWS/ZYGLA322
DESCRIÇÃO BREVE: GL - Trilha Auditoria - Programa(funcionalidade)
DEFINIÇÃO
OBTENÇÃO DE DADOS
MÉTODO DE SELEÇÃO: /PWS/ZYGLV022
COMPORTAMENTO DE DIÁLOGO:
TIPO DE DIÁLOGO: Exibição de Valores Imediata
HOT KEY: ' '
EXIT AJUD. PESQUISA: /PWS/ZYGLA322
PARÂMETROS:
PARAM. IMP EXP POSL ISEL EXAJ ELEM. DADOS MOD VALOR PROPOSTO
PROGRAMA X X 1 1 PROGNAME
TEXT 2 2 REPTI
SPRSL 0 0 SPRAS SY-LANGU
--------------------------------------------------------------------------------------------
Modificações efetuadas em SHLP /PWS/ZYGLA323
CRIAR AJUDA DE PESQUISA: /PWS/ZYGLA323
DESCRIÇÃO BREVE: GL - Trilha Auditoria - Tabela
DEFINIÇÃO
OBTENÇÃO DE DADOS
MÉTODO DE SELEÇÃO: /PWS/ZYGLV023
COMPORTAMENTO DE DIÁLOGO:
TIPO DE DIÁLOGO: Exibição de Valores Imediata
HOT KEY: ' '
EXIT AJUD. PESQUISA: /PWS/ZYGLA322
PARÂMETROS:
PARAM. IMP EXP POSL ISEL EXAJ ELEM. DADOS MOD VALOR PROPOSTO
TABELA X X 1 1 TABNAME
DDTEXT 2 2 AS4TEXT
DDLANGUAGE 0 0 DDLANGUAGE SY-LANGU
--------------------------------------------------------------------------------------------
Modificações efetuadas em TABD /PWS/ZYGLT009
MODIFICAR TABELA TRANSPARENTE: /PWS/ZYGLT009
DESCRIÇÃO BREVE: GL - Parâm Gerais Câmbio - continuação da ZYCBT007
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
TRILHA_AUDITORIA /PWS/ZYGLL1430
--------------------------------------------------------------------------------------------
Modificações efetuadas em TABL /PWS/ZYGLT389
CRIAR TABELA TRANSPARENTE: /PWS/ZYGLT389
DESCRIÇÃO BREVE: GL - Trilha de Auditoria - Tabela de Modificações
CARACTERÍSTICAS
CATEGORIA DA TABELA: Tabela Transparente
CLASSE DE ENTREGA: A
(_) - AUTUALIZAÇÃO DE TABELAS PERMITIDA
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
MANDT MANDT X X
RELID RELID X X
INDICE DB2DSNAME X X
SRTF2 SRTF2 X X
CLUSTR SYBIN2
CLUSTD VERI_LRAW
OPÇÕES TÉCNICAS
TIPO DE DADOS: SPROT
CATEGOR. TAMANHO: 4
(X) - AR. BUFFER NÃO PERMITIDO
(_) - AR. BUFFER PERMITIDO, MAS DESATIVADO
(_) - AR. BUFFER ATIVADO
(_) - RGSTS. IND ARMAZENADOS
(_) - ÁREA GEN ARMAZENADA EM BUFFER Nº DE CPOS CHAVE: ______
(_) - TOTALMENTE ARMAZENADO
(_) - REGISTRAR MODIFICS. DDS. EM LOG.
--------------------------------------------------------------------------------------------
Modificações efetuadas em TABL /PWS/ZYGLT390
CRIAR TABELA TRANSPARENTE: /PWS/ZYGLT390
DESCRIÇÃO BREVE: GL - Trilha de Auditoria - Tabela de LOG de Modificações
CARACTERÍSTICAS
CATEGORIA DA TABELA: Tabela Transparente
CLASSE DE ENTREGA: A
(_) - AUTUALIZAÇÃO DE TABELAS PERMITIDA
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
MANDT MANDT X X
DATA DATUM X X
HORA UZEIT X X
USUARIO XUBNAME X X
INDICE DB2DSNAME X X
IDENTIFICADOR CHAR25
PROGRAMA PROGNAME
TABELA TABNAME
TRANSACAO TCODE
OPER OPTYPE
TABVERSNO VERSNO
OPÇÕES TÉCNICAS
TIPO DE DADOS: APPL0
CATEGOR. TAMANHO: 4
(X) - AR. BUFFER NÃO PERMITIDO
(_) - AR. BUFFER PERMITIDO, MAS DESATIVADO
(_) - AR. BUFFER ATIVADO
(_) - RGSTS. IND ARMAZENADOS
(_) - ÁREA GEN ARMAZENADA EM BUFFER Nº DE CPOS CHAVE: ______
(_) - TOTALMENTE ARMAZENADO
(_) - REGISTRAR MODIFICS. DDS. EM LOG.
--------------------------------------------------------------------------------------------
Modificações efetuadas em TABL /PWS/ZYGLT391
CRIAR TABELA TRANSPARENTE: /PWS/ZYGLT391
DESCRIÇÃO BREVE: GL - Trilha de Auditoria - Tabela de Versões de Tabelas
CARACTERÍSTICAS
CATEGORIA DA TABELA: Tabela Transparente
CLASSE DE ENTREGA: A
(_) - AUTUALIZAÇÃO DE TABELAS PERMITIDA
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
MANDT MANDT X X
TABELA TABNAME X X
CAMPO FIELDNAME X X
KEYFLAG KEYFLAG X X
ROLLNAME ROLLNAME X X
POSICAO TABFDPOS X X
INTTYPE INTTYPE X X
INTLEN INTLEN X X
DECIMALS DECIMALS X X
TABVERSNO VERSNO X X
LENG DDLENG X X
DATATYPE DATATYPE_D X X
DATA DATUM
HORA UZEIT
OPÇÕES TÉCNICAS
TIPO DE DADOS: APPL0
CATEGOR. TAMANHO: 1
(X) - AR. BUFFER NÃO PERMITIDO
(_) - AR. BUFFER PERMITIDO, MAS DESATIVADO
(_) - AR. BUFFER ATIVADO
(_) - RGSTS. IND ARMAZENADOS
(_) - ÁREA GEN ARMAZENADA EM BUFFER Nº DE CPOS CHAVE: ______
(_) - TOTALMENTE ARMAZENADO
(_) - REGISTRAR MODIFICS. DDS. EM LOG.
--------------------------------------------------------------------------------------------
Modificações efetuadas em TRAN /PWS/ZYGLR042
CRIAR TRANSAÇÃO: /PWS/ZYGLR042
ATRIBUTOS DA TRANSAÇÃO
TEXTO BREVE: LOG Auditoria
OBJETO DE EXECUÇÃO
(_) - PROGRAMA E TELA (TRANSAÇÃO DE DIÁLOGO)
(X) - PROGRAMA E TELA DE SELEÇÃO (TRANSAÇÃO DE REPORT)
TEXTO DA TRANSAÇÃO: /PWS/ZYGLR042
PROGRAMA: /PWS/ZYGLR042
TELA(SELEÇÃO): 1000
INÍCIO COM VARIANTE:
OBJETO DE AUTORIZAÇÃO:
(_) - ATUALIZAÇÃO DA VARIANTE DA TRANSAÇÃO STANDARD PERMITIDA
CLASSIFICAÇÃO
CLASSIFICAÇÃO DE TRANSAÇÃO:
(X) - TRANSAÇÃO PROFESSIONAL USER
(_) - TRANSAÇÃO EASY WEB SERVIÇO: ___________________________
CAPACIDADE GUI:
(X) SAP GUI PARA HTML
(X) SAP GUI PARA JAVA
(X) SAP GUI PARA WINDOWS
--------------------------------------------------------------------------------------------
Modificações efetuadas em VIEW /PWS/ZYGLV022
CRIAR VISAO : /PWS/ZYGLV022
DESCRIÇÃO BREVE: GL - Trilha Auditoria - Programa(funcionalidade)
CLASSE DESENVOLVIMENTO: /PWS/ZYGL
TABELAS/CONDIÇÕES JOIN
TABELAS:
/PWS/ZYGLT390
TRDIRT
CONDIÇÕES JOIN:
TABELA NOME CPO = TABELA NOME CPO
/PWS/ZYGLT390 PROGRAMA = TRDIRT NAME
CPOS. VISÃO
CAMPO VISÃO: NOME TAB: NOME CAMPO: MOD:
PROGRAMA /PWS/ZYGLT390 PROGRAMA
TEXT TRDIRT TEXT
SPRSL TRDIRT SPRSL
CONDIÇÕES DE SELEÇÃO
TABELA: NOME CPO.: OPERADOR: VL COMP: AND/OR
STATUS AT.
ACESSO:
(X) - SÓ LER
(_) - LER E MODIFICAR
--------------------------------------------------------------------------------------------
Modificações efetuadas em VIEW /PWS/ZYGLV023
CRIAR VISAO : /PWS/ZYGLV023
DESCRIÇÃO BREVE: GL - Trilha Auditoria - Tabela
CLASSE DESENVOLVIMENTO: /PWS/ZYGL
TABELAS/CONDIÇÕES JOIN
TABELAS:
/PWS/ZYGLT390
DD02T
CONDIÇÕES JOIN:
TABELA NOME CPO = TABELA NOME CPO
/PWS/ZYGLT390 TABELA = DD02T TABNAME
CPOS. VISÃO
CAMPO VISÃO: NOME TAB: NOME CAMPO: MOD:
TABELA /PWS/ZYGLT390 TABELA
DDTEXT DD02T DDTEXT
DDLANGUAGE DD02T DDLANGUAGE
CONDIÇÕES DE SELEÇÃO
TABELA: NOME CPO.: OPERADOR: VL COMP: AND/OR
STATUS AT.
ACESSO:
(X) - SÓ LER
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR
(_) - LER E MODIFICAR