* Eae Pessoal, trabalhamos de corpo e alma num projeto quando estamos
* no
começo, mas ABAP Junior é como um Estagiário no mundo SAP, portanto
* sempre haverá uns caras que vão falar que você fez merda, como apagar
* dados da 'MARA' ou usou alguma transação de forma errada onde acabou
* Modificando alguns dados mestres, mas pra vocês não ficarem a merce
* desses Bullings estou postando esse programa que mostra todas as
* modificações conforme o user, agora na próxima vez você executa esse
* programinha e isso retorna o log de modificações
provando sua inocência.
* O problema é que só será gravado os logs das tabelas que tiverem
* um 'flag' para registrar isso, para verificar se a tabela cria log de
* modificações é só entrar nele clicar no Botão 'Configurações técnicas'
* e olhar na ultima linha da tela que vão ver o Flag lá.
*&---------------------------------------------------------------------*
REPORT cdhdr_cdpos.
TYPE-POOLS :
slis.
TYPES:
BEGIN OF ty_out,
objectclas TYPE cdhdr-objectclas,
objectid TYPE cdhdr-objectid,
changenr TYPE cdhdr-changenr,
username TYPE cdhdr-username,
udate TYPE cdhdr-udate,
utime TYPE cdhdr-utime,
tcode TYPE cdhdr-tcode,
tabname TYPE cdpos-tabname,
tabkey TYPE cdpos-tabkey,
fname TYPE cdpos-fname,
chngind TYPE cdpos-chngind,
text_case TYPE cdpos-text_case,
unit_old TYPE cdpos-unit_old,
unit_new TYPE cdpos-unit_new,
cuky_old TYPE cdpos-cuky_old,
cuky_new TYPE cdpos-cuky_new,
value_new TYPE cdpos-value_new,
value_old TYPE cdpos-value_old,
END OF ty_out
.
DATA :
it_cdhdr TYPE TABLE OF cdhdr,
st_cdhdr TYPE cdhdr,
it_cdpos TYPE TABLE OF cdpos,
st_cdpos TYPE cdpos,
it_out TYPE TABLE OF ty_out,
st_out TYPE ty_out,
st_layout TYPE slis_layout_alv,
it_fcat TYPE TABLE OF slis_fieldcat_alv,
st_fcat TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS :
s_user FOR sy-uname.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM : z_selects,
z_trata_dados,
z_alv.
*&---------------------------------------------------------------------*
*& Form Z_SELECTS
*&---------------------------------------------------------------------*
FORM z_selects .
SELECT *
FROM cdhdr
INTO TABLE it_cdhdr
WHERE username IN s_user.
IF sy-subrc IS INITIAL.
SELECT *
FROM cdpos
INTO TABLE it_cdpos
FOR ALL ENTRIES IN it_cdhdr
WHERE objectclas = it_cdhdr-objectclas
AND objectid = it_cdhdr-objectid
AND changenr = it_cdhdr-changenr
.
ENDIF.
ENDFORM. " Z_SELECTS
*&---------------------------------------------------------------------*
*& Form Z_ALV
*&---------------------------------------------------------------------*
FORM z_alv .
PERFORM z_fieldcat USING :
'OBJECTCLAS' 'CDHDR' 'Classe de objetos' ' ' ' ' 1 ,
'OBJECTID' 'CDHDR' 'Valor do objeto' ' ' ' ' 2 ,
'CHANGENR' 'CDHDR' 'Nº modificação do documento' ' ' ' ' 3 ,
'USERNAME' 'CDHDR' 'Nome usuário' ' ' ' ' 4 ,
'UDATE' 'CDHDR' 'Data da modificação' ' ' ' ' 5 ,
'UTIME' 'CDHDR' 'Hora da modificação' ' ' ' ' 6 ,
'TCODE' 'CDHDR' 'Transação' ' ' ' ' 7 ,
'TABNAME' 'CDPOS' 'Nome da tabela' ' ' ' ' 8 ,
'TABKEY' 'CDPOS' 'Chave da linha de tabela modificada' ' ' ' ' 9 ,
'FNAME' 'CDPOS' 'Nome do campo' ' ' ' ' 10 ,
'CHNGIND' 'CDPOS' 'Tipo da modificação (U, I, E, D)' ' ' ' ' 11 ,
'TEXT_CASE' 'CDPOS' 'Código: X = modificação de texto' ' ' ' ' 12 ,
'UNIT_OLD' 'CDPOS' 'Unidade antiga' ' ' ' ' 13 ,
'UNIT_NEW' 'CDPOS' 'Unidade Nova' ' ' ' ' 14 ,
'CUKY_OLD' 'CDPOS' 'Moeda Antiga' ' ' ' ' 15 ,
'CUKY_NEW' 'CDPOS' 'Moeda Nova' ' ' ' ' 16 ,
'VALUE_NEW' 'CDPOS' 'Valor Novo' ' ' ' ' 17 ,
'VALUE_OLD' 'CDPOS' 'valor Antigo' ' ' ' ' 18
.
st_layout-zebra = 'X'.
st_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* i_structure_name = 'CDPOS'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = st_layout
it_fieldcat = it_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_out
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " Z_ALV
*&---------------------------------------------------------------------*
*& Form Z_TRATA_DADOS
*&---------------------------------------------------------------------*
FORM z_trata_dados .
LOOP AT it_cdpos INTO st_cdpos.
st_out-objectclas = st_cdpos-objectclas.
st_out-objectid = st_cdpos-objectid.
st_out-changenr = st_cdpos-changenr.
st_out-tabname = st_cdpos-tabname.
st_out-tabkey = st_cdpos-tabkey.
st_out-fname = st_cdpos-fname.
st_out-chngind = st_cdpos-chngind.
st_out-text_case = st_cdpos-text_case.
st_out-unit_old = st_cdpos-unit_old.
st_out-unit_new = st_cdpos-unit_new.
st_out-cuky_old = st_cdpos-cuky_old.
st_out-cuky_new = st_cdpos-cuky_new.
st_out-value_new = st_cdpos-value_new.
st_out-value_old = st_cdpos-value_old.
READ TABLE it_cdhdr INTO st_cdhdr
WITH KEY objectclas = st_cdpos-objectclas
objectid = st_cdpos-objectid
changenr = st_cdpos-changenr.
IF sy-subrc IS INITIAL.
st_out-username = st_cdhdr-username.
st_out-udate = st_cdhdr-udate.
st_out-utime = st_cdhdr-utime.
st_out-tcode = st_cdhdr-tcode.
APPEND st_out TO it_out.
ENDIF.
CLEAR st_out.
ENDLOOP.
BREAK-POINT.
ENDFORM. " Z_TRATA_DADOS
*&---------------------------------------------------------------------*
*& Form Z_FIELDCAT
*&---------------------------------------------------------------------*
FORM z_fieldcat USING fieldname
TAB
seltext_m
checkbox
edit
col_pos .
st_fcat-fieldname = fieldname. " Nome do campo
st_fcat-tabname = tab.
st_fcat-seltext_m = seltext_m. " texto do campo
st_fcat-checkbox = checkbox. " se o campo é do tipo CheckBox
st_fcat-edit = edit. " se o campo pode ser editavel
st_fcat-col_pos = col_pos. "Em que posição fica a coluna
APPEND st_fcat TO it_fcat.
CLEAR st_fcat.
ENDFORM. " Z_FIELDCAT
Bom dia.
ResponderExcluirSeria interessante ter mais opcoes na tela de seleção.
Tabela, data de modificação e transação.
Também foi feito um report pela SAP que faz isso.
RSSCD200
Abraço.
Marcos.
Mais opções seria melhor sim, mas dá pra brincar, mas pelo que vi o programa RSSCD200 resolve a maioria desses problemas rsrs, Valeo Pela Informação Marcos
ResponderExcluirOlá Mauro, estou começando neste mundo ABAP agora e seu blog esta me ajudando muito.
ResponderExcluirVlw =)
Excluirbom dia! além das tabelas CDHDR e CDPOS, qual tabela guarda o conteúdo anterior, autal e usuário que alterou a tabela?
ResponderExcluirnão precisam responder a pergunta acima, já identifiquei os campos, obrigado!
ResponderExcluirTransação SCU3 - Analise de logs de modificação - Comparei o retorno e o esforço, com a SCU3 retorna os dados de criação, eliminação e modificação , com data, hora, usuário, transação, programa e os dados
ResponderExcluir