- Clicar em criar
- Apenas colocar a tabela e salvar
- Colocar o cursor na tabela desejada e clicar em “Gerar
prog.atualiz”.
- E clicar em “Gerar”.. vai aparecer um log apenas como simulação, para finalizar tem q apertar no botão salvar.
- Lembrar que em elementos de dados novos para gravar a modificação do campo tem que flegar o campo doc. Modificação conforme abaixo.
No meu caso eu quis exibir o log de modificação da visão de atualização na própria tela da SM30, nesse caso tem q implementar uma rotina nos eventos da visão de atualização. Além de implementar a inclusão do log no momento de salvar a alteração na tabela.
- Abaixo o código para atualização do log antes de salvar.
FORM before_post_log.
DATA: ls_cdhdr TYPE cdhdr.
FIELD-SYMBOLS: <lfs_value>,
<lfs_field>.
DATA: l_tabix TYPE sy-tabix,
l_field TYPE c LENGTH 50.
DATA: lt_comp TYPE TABLE OF rstrucinfo.
DATA: ls_zmmt0002 TYPE zmmt0002,
ls_zmmt0002_old TYPE zmmt0002,
ls_comp TYPE rstrucinfo.
SELECT fieldname
INTO ls_comp-compname
FROM dd03l
WHERE tabname EQ 'ZMMT0002'.
APPEND ls_comp TO lt_comp.
ENDSELECT.
ls_cdhdr-objectclas = 'ZMMT0002'.
ls_cdhdr-username = sy-uname.
ls_cdhdr-udate = sy-datum.
ls_cdhdr-utime = sy-uzeit.
ls_cdhdr-tcode = sy-tcode.
LOOP AT total.
l_tabix = sy-tabix.
CHECK <action> <> space.
IF <action> = 'N' OR <action> = 'U'.
ASSIGN COMPONENT 'AEDAT' OF STRUCTURE <vim_total_struc> TO <lfs_value>.
IF sy-subrc = 0.
<lfs_value> = sy-datum.
ENDIF.
ASSIGN COMPONENT 'AENAM' OF STRUCTURE <vim_total_struc> TO <lfs_value>.
IF sy-subrc = 0.
<lfs_value> = sy-uname.
ENDIF.
MODIFY total INDEX l_tabix.
LOOP AT lt_comp INTO ls_comp.
CONCATENATE 'LS_ZMMT0002-' ls_comp-compname INTO l_field.
ASSIGN (l_field) TO <lfs_field>.
CHECK sy-subrc = 0.
ASSIGN COMPONENT ls_comp-compname OF STRUCTURE <vim_total_struc> TO <lfs_value>.
IF sy-subrc = 0.
<lfs_field> = <lfs_value>.
ENDIF.
ENDLOOP.
CONCATENATE sy-mandt ls_zmmt0002-mtart ls_zmmt0002-matnr ls_zmmt0002-werks
INTO ls_cdhdr-objectid.
IF <action> = 'U'.
SELECT SINGLE *
INTO ls_zmmt0002_old
FROM zmmt0002
WHERE mtart EQ ls_zmmt0002-mtart
AND matnr EQ ls_zmmt0002-matnr
AND werks EQ ls_zmmt0002-werks.
ENDIF.
PERFORM grava_modificacao USING ls_cdhdr
'ZMMT0002'
ls_zmmt0002_old
ls_zmmt0002
<action>.
ENDIF.
ENDLOOP.
ENDFORM. "before_post_log
*&---------------------------------------------------------------------*
*& Form GRAVA_MODIFICACAO
*&---------------------------------------------------------------------*
FORM grava_modificacao USING fs_cdhdr TYPE cdhdr
f_tabname
fs_data_old TYPE zmmt0002
fs_data_new TYPE zmmt0002
f_chg_ind.
DATA: lt_cdtxt TYPE TABLE OF cdtxt.
DATA: ls_cdtxt TYPE cdtxt.
ls_cdtxt-teilobjid = fs_cdhdr-objectid.
ls_cdtxt-textspr = sy-langu.
ls_cdtxt-updkz = f_chg_ind.
APPEND ls_cdtxt TO lt_cdtxt.
CALL FUNCTION 'ZMMT0002_WRITE_DOCUMENT'
EXPORTING
objectid = fs_cdhdr-objectid
tcode = fs_cdhdr-tcode
utime = fs_cdhdr-utime
udate = fs_cdhdr-udate
username = fs_cdhdr-username
n_zmmt0002 = fs_data_new
o_zmmt0002 = fs_data_old
UPD_ZMMT0002 = f_chg_ind
TABLES
icdtxt_zmmt0002 = lt_cdtxt.
ENDFORM. " GRAVA_MODIFICACAO
*&---------------------------------------------------------------------*
*& Module Z_MOSTRA_LOG INPUT
*&---------------------------------------------------------------------*
* Mostra log
*----------------------------------------------------------------------*
MODULE z_mostra_log INPUT.
IF function = 'ZLOG'.
SUBMIT rsscd100 WITH objekt = 'ZMMT0002'
WITH objectid = ' '
WITH dat_bis = ' '
AND RETURN.
ENDIF.
ENDMODULE. " Z_MOSTRA_LOG INPUT
Nenhum comentário:
Postar um comentário