SM30 自建表维护记录

自建表

日志表

维护事件


*----------------------------------------------------------------------*
***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.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值