关于SM30维护数据,经常需要记录创建人创建时间, 修改人和修改时间. 当然实现的方法有很多种, 直接修改屏幕,在PAI中实现,或事件中实现. PAI找个地方,加段代码.事件的写法也好多种. 个人比较喜欢的是尽量少的代码修改,可以到处部署的那种. 介绍一种比较简单的写法: 1. 如果下图,我们准备个通用的字段信息

2. 在SE54中维护事件,通用

3.form代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
*&---------------------------------------------------------------------* *& 包含 LZMMT0037F01 *&---------------------------------------------------------------------* FORM SET_TIMESTAMP USING IV_FLAG CHANGING CS_TAB TYPE ANY. DATA: LV_TS TYPE COMT_CHANGED_AT_USR. FIELD-SYMBOLS: <LV_COMP_FS> TYPE ANY. CONVERT DATE SY-DATUM TIME SY-UZEIT INTO TIME STAMP LV_TS TIME ZONE SY-ZONLO. CASE IV_FLAG. WHEN ABAP_TRUE. "创建 ASSIGN COMPONENT 'ERNAM' OF STRUCTURE CS_TAB TO <LV_COMP_FS>. IF <LV_COMP_FS> IS ASSIGNED. <LV_COMP_FS> = SY-UNAME. ENDIF. ASSIGN COMPONENT 'ERDAT' OF STRUCTURE CS_TAB TO <LV_COMP_FS>. IF <LV_COMP_FS> IS ASSIGNED. <LV_COMP_FS> = SY-DATUM. ENDIF. ASSIGN COMPONENT 'ERZET' OF STRUCTURE CS_TAB TO <LV_COMP_FS>. IF <LV_COMP_FS> IS ASSIGNED. <LV_COMP_FS> = SY-UZEIT. ENDIF. WHEN ABAP_FALSE. ASSIGN COMPONENT 'AENAM' OF STRUCTURE CS_TAB TO <LV_COMP_FS>. IF <LV_COMP_FS> IS ASSIGNED. <LV_COMP_FS> = SY-UNAME. ENDIF. ASSIGN COMPONENT 'AEDAT' OF STRUCTURE CS_TAB TO <LV_COMP_FS>. IF <LV_COMP_FS> IS ASSIGNED. <LV_COMP_FS> = SY-DATUM. ENDIF. ASSIGN COMPONENT 'AEZET' OF STRUCTURE CS_TAB TO <LV_COMP_FS>. IF <LV_COMP_FS> IS ASSIGNED. <LV_COMP_FS> = SY-UZEIT.. ENDIF. WHEN OTHERS. ENDCASE. ENDFORM. FORM FORM_CREATE_DATA. FIELD-SYMBOLS: <FS_VIEW_NAME> TYPE ANY. ASSIGN (VIM_VIEW_NAME) TO <FS_VIEW_NAME>. PERFORM SET_TIMESTAMP USING ABAP_TRUE CHANGING <FS_VIEW_NAME>. ENDFORM. FORM FORM_UPDATE_DATA. FIELD-SYMBOLS: <FS_VIEW_NAME> TYPE ANY. ASSIGN (VIM_VIEW_NAME) TO <FS_VIEW_NAME>. PERFORM SET_TIMESTAMP USING ABAP_FALSE CHANGING <FS_VIEW_NAME>. ENDFORM. |