SAP使用SM30标准Event事件实现自动更新变更履历

通常在创建一些配置表时,需要添加创建者、创建日期、创建时间、变更者等字段,用于记录条目的变更履历,一般希望在SM30用户维护时自动更新这些字段,本文介绍一种标准的方式来实现该功能。

1.创建通用结构,用于复用

2.在需要维护的表中包含该结构

3.SE11创建维护视图 

选择需要显示的字段,采用该方式的好处是,可以直接设置屏幕字段的属性(只读或者隐藏)。

4.创建SM30表格维护生成器

这里建议单独创建一个SM30函数组,后续所有的SM30都放在该函数组中,即可复用后续创建的event例程。

5.创建01事件及通用form

创建包含文件,并添加以下代码。

*----------------------------------------------------------------------*
***INCLUDE LZFGP_SM30F01.
*----------------------------------------------------------------------*
FORM frm_change_info_auto_set.
  PERFORM frm_before_save USING view_name.
ENDFORM.                    "frm_change_info_auto_set
**********************************************************************
* Auto set username & datetime defore save records
**********************************************************************
FORM frm_before_save USING uv_view_name TYPE char30.
  DATA: ls_change TYPE zschange_info.
  FIELD-SYMBOLS: <fs_view> TYPE any.

  ASSIGN (uv_view_name) TO <fs_view>.
  LOOP AT total.
    CASE <action>.
      WHEN aendern.  "Update
        MOVE <vim_total_struc> TO <fs_view>.

        MOVE-CORRESPONDING <fs_view> TO ls_change.

        ls_change-aedat = sy-datlo.
        ls_change-aezet = sy-timlo.
        ls_change-aenam = sy-uname.

        MOVE-CORRESPONDING ls_change TO <fs_view>.

        MOVE <fs_view> TO <vim_total_struc>.

        MODIFY total.

        READ TABLE extract WITH KEY <vim_xtotal_key>.
        IF sy-subrc EQ 0.
          MOVE <vim_total_struc> TO <vim_extract_struc>.
          MODIFY extract INDEX sy-tabix.
        ENDIF.
      WHEN neuer_eintrag. "New Entry
        MOVE <vim_total_struc> TO <fs_view>.

        MOVE-CORRESPONDING <fs_view> TO ls_change.

        ls_change-erdat = sy-datlo.
        ls_change-erzet = sy-timlo.
        ls_change-ernam = sy-uname.

        MOVE-CORRESPONDING ls_change TO <fs_view>.

        MOVE <fs_view> TO <vim_total_struc>.

        MODIFY total.

        READ TABLE extract WITH KEY <vim_xtotal_key>.
        IF sy-subrc EQ 0.
          MOVE <vim_total_struc> TO <vim_extract_struc>.
          MODIFY extract INDEX sy-tabix.
        ENDIF.
    ENDCASE.
  ENDLOOP.

  sy-subrc = 0.
ENDFORM.                    "frm_before_save

6.SM30进行测试

7.为SM30添加事务代码

部分项目可能不会为用户开放SM30权限,所以为SM30分配对应事务代码,事务代码SE93:

8.变更信息时重新生成调整SM30

当发生字段变更,或者需要变更字段编辑属性等情况时,不需要删掉重建,点击修改按钮,勾选调整的内容,点击对勾即可,非专家模式的时候全选也可以。

专家模式下不要勾选以下两个按钮,否则之前创建的include会在主程序中取消包含,会引发dump。

如果不慎勾选导致dump,重新在主程序中添加include即可。

总结:

使用该方式的好处是,可复用,后续变更方便调整,无需担心要重写自动赋值代码。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值