How To Create Table Maintenance Generator In Sap Abap
Requirement
Pada saat user mengubah data menggunakan table maintenance dengan Tcode SM30, perlu disimpan waktu dan user yang melakukan perubahan sebagai log data. Log data ini tidak diinput secara manual oleh user via SM30, tetapi secara otomatis akan tersimpan pada saat user menyimpan data via SM30.
Solution
1.Tambahkan field berikut di table.
2.Create table maintenance generator sepeti biasa.
3.Modify overview screen pada table maintenance generator. Pada layout screen, delete kolom untuk field ERDAT, ERZET, ERNAM, AEDAT, AEZET, dan AENAM. Dengan demikian, keeenam kolom ini tidak akan tampil via SM30, dan user tidak bisa mengubah isi field ini dengan SM30.
Screen layout before modified
Screen layout after modified (remove log field)
4.Create event pada table maintenance generator.
5.Create rutine dengan event 01 (Before saving data in the database).
6.Copy syntax berikut pada new include yang telah di-create.
*----------------------------------------------------------------------* ***INCLUDE LZFAFIDT0035F01 . *----------------------------------------------------------------------* FORMf_logdata.LOOP ATtotal.IF<action>= 'N' OR<action>= 'U' . "when create or changePERFORMf_build_dataCHANGING<vim_total_struc>.MODIFYtotal.ENDIF .ENDLOOP . ENDFORM . "f_logdata *&---------------------------------------------------------------------* *& Form f_build_data *&---------------------------------------------------------------------* FORMf_build_dataCHANGINGfc_data.DATAld_dataTYPE REF TO data .FIELD-SYMBOLS :<ls_data>TYPE ANY , <ls_value>TYPE ANY .CREATE DATAld_dataLIKEfc_data.ASSIGNld_data->*TO<ls_data>.MOVE-CORRESPONDINGfc_dataTO<ls_data>.ASSIGN COMPONENT 'ERDAT' OF STRUCTURE<ls_data>TO<ls_value>.IF<ls_value>IS ASSIGNED AND<ls_value>IS INITIAL . <ls_value>=sy-datum.ENDIF .ASSIGN COMPONENT 'ERZET' OF STRUCTURE<ls_data>TO<ls_value>.IF<ls_value>IS ASSIGNED AND (<ls_value>IS INITIAL or<ls_value>= '' ) . <ls_value>=sy-uzeit.ENDIF .ASSIGN COMPONENT 'ERNAM' OF STRUCTURE<ls_data>TO<ls_value>.IF<ls_value>IS ASSIGNED AND<ls_value>IS INITIAL . <ls_value>=sy-uname.ENDIF .ASSIGN COMPONENT 'AEDAT' OF STRUCTURE<ls_data>TO<ls_value>.IF<ls_value>IS ASSIGNED . <ls_value>=sy-datum.ENDIF .ASSIGN COMPONENT 'AEZET' OF STRUCTURE<ls_data>TO<ls_value>.IF<ls_value>IS ASSIGNED . <ls_value>=sy-uzeit.ENDIF .ASSIGN COMPONENT 'AENAM' OF STRUCTURE<ls_data>TO<ls_value>.IF<ls_value>IS ASSIGNED . <ls_value>=sy-uname.ENDIF .MOVE<ls_data>TOfc_data. ENDFORM . "f_set_data
Atau copy syntax berikut:
*----------------------------------------------------------------------* FORMf_logdata. FIELD-SYMBOLS<value>TYPE ANY . LOOP ATtotal. CHECK<vim_total_struc>IS ASSIGNED . IF<action>= 'N' . "createASSIGN COMPONENT 'ERDAT' OF STRUCTURE<vim_total_struc>TO<value>. IFsy-subrc= 0 . <value>=sy-datum.ENDIF .ASSIGN COMPONENT 'ERNAM' OF STRUCTURE<vim_total_struc>TO<value>. IFsy-subrc= 0 . <value>=sy-uname. ENDIF .ELSEIF<action>= 'U' . "change ASSIGN COMPONENT 'AEDAT' OF STRUCTURE<vim_total_struc>TO<value>. IFsy-subrc= 0 . <value> =sy-datum. ENDIF . ASSIGN COMPONENT 'AENAM' OF STRUCTURE<vim_total_struc>TO<value>. IFsy-subrc= 0 . <value> =sy-uname. ENDIF . ENDIF . MODIFYtotal. ENDLOOP . ENDFORM. *----------------------------------------------------------------------*
Testing
Insert data using SM30
See log using SE16
Related posts
How To Create Table Maintenance Generator In Sap Abap
Source: https://belajarabap.wordpress.com/2017/12/18/capture-log-data-of-table-maintenance/
Posted by: leehure1986.blogspot.com

0 Response to "How To Create Table Maintenance Generator In Sap Abap"
Post a Comment