自建表
日志表
维护事件
*----------------------------------------------------------------------*
***INCLUDE LZFG_ZTPP066AF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_01
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
DEFINE assign_field.
ASSIGN COMPONENT &1 OF STRUCTURE <ls_maintview> TO <lv_field>.
IF sy-subrc = 0.
IF <lv_field> IS ASSIGNED.
<lv_field> = &2.
ENDIF.
ENDIF.
END-OF-DEFINITION.
FORM frm_01 .
DATA ls_log TYPE ztpp066a_log.
DATA lt_log TYPE TABLE OF ztpp066a_log.
DATA lo_data TYPE REF TO data.
DATA lv_tabix TYPE sy-tabix.
FIELD-SYMBOLS:<ls_maintview> TYPE any,
<lv_field> TYPE any.
SELECT SINGLE a~name_text FROM adrp AS a
INNER JOIN usr21 AS u ON u~persnumber = a~persnumber
AND a~date_from = '00010101'
AND a~nation = ''
WHERE u~bname = @ztpp066a-userno
INTO @ztpp066a-username.
ztpp066a-aedat = sy-datum.
ztpp066a-aezet = sy-uzeit.
ztpp066a-aenam = sy-uname.
IF x_header-maintview IS NOT INITIAL.
CREATE DATA lo_data TYPE (x_header-maintview).
IF lo_data IS BOUND.
ASSIGN lo_data->* TO <ls_maintview>.
ENDIF.
IF <ls_maintview> IS ASSIGNED.
IF x_header-maintview = 'ZTPP066A'.
LOOP AT total.
READ TABLE extract WITH KEY <vim_xtotal_key>.
IF sy-subrc <> 0 AND <action> = 'D'."删除
MOVE-CORRESPONDING <vim_total_struc> TO ls_log.
ls_log-action = 'D' .
APPEND ls_log TO lt_log.
ELSEIF <action> = 'U' OR <action> = 'N'."修改
MOVE-CORRESPONDING <vim_total_struc> TO ls_log.
ls_log-action = COND #( WHEN <action> EQ 'U' THEN 'U' ELSE 'I' ).
APPEND ls_log TO lt_log.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
IF lt_log IS NOT INITIAL.
MODIFY ztpp066a_log FROM TABLE lt_log.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.
sy-subrc = 0.
ENDFORM.
FORM frm_05 .
SELECT SINGLE a~name_text FROM adrp AS a
INNER JOIN usr21 AS u ON u~persnumber = a~persnumber
AND a~date_from = '00010101'
AND a~nation = ''
WHERE u~bname = @ztpp066a-userno
INTO @ztpp066a-username.
ztpp066a-aedat = sy-datum.
ztpp066a-aezet = sy-uzeit.
ztpp066a-aenam = sy-uname.
ENDFORM.