SAP 配置表记录创建人/创建日期/创建时间/更改人/更改日期/更改时间
在实际开发需求中,为了使客制功能具有灵活的可配置性,通常采用开发功能+配置表的形式处理。有些客制的配置功能需要追溯到谁在什么时候增加了什么配置,或者谁在什么时候更改了什么位置,配置表的Log功能就显得很有必要了。以下过程说明SAP在配置表中如何实现配置表的Log功能。
说明:本文中的截图皆为作者本人编写和制作,如果转载或引用请务必通知作者本人!!!
(1)建立配置表
建立配置表,在配置表中增加建立者、建立日期、建立时间、更改者、更改日期、更改时间:

(2)维护表维护生成器:
在菜单栏:实用程序->表维护生成器:

进入表维护生成器:

(3)维护表生成器维护界面
双击画面编号,进入画面的程序代码页面:

在PBO中用代码实现将Log的字段隐藏(这里的隐藏是指,在对配置表做配置时会看不到这些字段):
PBO模块:MODULE MODIFY_ELEMENT_14 .
实现代码:
MODULE MODIFY_ELEMENT_14 OUTPUT.
LOOP AT <VIM_TCTRL>-COLS INTO VIM_TC_COLS.
IF VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-ERNAM‘ OR
VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-ERDAT‘ OR
VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-ERZET‘ OR
VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-AENAM‘ OR
VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-AEDAT‘ OR
VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-AEZET‘ .
VIM_TC_COLS-INVISIBLE = 1 .
MODIFY <VIM_TCTRL>-COLS FROM VIM_TC_COLS .
ENDIF.
ENDLOOP.
ENDMODULE.(4)实现在配置时新增或更改时自动更新记录
回到表维护生成器界面,增加表维护事件,在菜单:环境->修改->事件:

点击“新输入项”,建立维护事项。注意,维护事项的类型选择,这里选择01-在存储资料前和05-建立新输入项,如:

示例05-在新建输入项时保存记录:YFG_PM_AUTOSMS_NEW_ENTRY
*&--------------------------------------------------------------- *& FORM YFG_PM_AUTOSMS_NEW_ENTRY *& 自動更新YFG_C_PM_AUTOSMS 的建立日期 *&--------------------------------------------------------------- FORM YFG_PM_AUTOSMS_NEW_ENTRY. YFG_C_PM_AUTOSMS-ERNAM = SY-UNAME . YFG_C_PM_AUTOSMS-ERDAT = SY-DATUM . YFG_C_PM_AUTOSMS-ERZET = SY-UZEIT . ENDFORM.
示例01-在更改时保存记录:YFG_PM_AUTOSMS_MODIFY_SAVE
*&---------------------------------------------------------------
*& FORM YFG_PM_AUTOSMS_MODIFY_SAVE
*& 自動更新YFG_C_PM_AUTOSMS的更新日期
*&---------------------------------------------------------------
FORM YFG_PM_AUTOSMS_MODIFY_SAVE.
FIELD-SYMBOLS : <FS_FIELD> TYPE ANY .
LOOP AT TOTAL .
CHECK <ACTION> EQ AENDERN.
ASSIGN COMPONENT ‘AENAM‘ OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
IF SY-SUBRC = 0 .
<FS_FIELD> = SY-UNAME .
ENDIF.
ASSIGN COMPONENT ‘AEDAT‘ OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
IF SY-SUBRC = 0 .
<FS_FIELD> = SY-DATUM .
ENDIF.
ASSIGN COMPONENT ‘AEZET‘ OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
IF SY-SUBRC = 0 .
<FS_FIELD> = SY-UZEIT .
ENDIF.
READ TABLE EXTRACT WITH KEY <VIM_XTOTAL_KEY>.
IF SY-SUBRC = 0.
EXTRACT = TOTAL .
MODIFY EXTRACT INDEX SY-TABIX.
ENDIF.
MODIFY TOTAL.
ENDLOOP.
ENDFORM.