需求:数据表生成表维护生成器,维护数据时可记录创建修改信息
事务码:SE80 => 创建函数组
事务码:SE11 => 实用程序 =>表维护生成器
表维护生成器创建
添加事件:环境=>修改=>事件=>对应子例程写代码
事件代码:
FORM frm_create_entry.
FIELD-SYMBOLS: <fs_maintview> TYPE any,
<lv_field> TYPE any.
CHECK x_header-maintview IS NOT INITIAL.
ASSIGN (x_header-maintview) TO <fs_maintview>.
CHECK sy-subrc EQ 0 AND <fs_maintview> IS ASSIGNED.
UNASSIGN <lv_field>.
ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <fs_maintview> TO <lv_field>.
IF sy-subrc EQ 0 AND <lv_field> IS ASSIGNED.
<lv_field> = sy-datum.
ENDIF.
UNASSIGN <lv_field>.
ASSIGN COMPONENT 'ERZET' OF STRUCTURE <fs_maintview> TO <lv_field>.
IF sy-subrc EQ 0 AND <lv_field> IS ASSIGNED.
<lv_field> = sy-uzeit.
ENDIF.
UNASSIGN <lv_field>.
ASSIGN COMPONENT 'ERNAM' OF STRUCTURE <fs_maintview> TO <lv_field>.
IF sy-subrc EQ 0 AND <lv_field> IS ASSIGNED.
<lv_field> = sy-uname.
ENDIF.
ENDFORM.
FORM frm_change_entry.
DATA:lo_data TYPE REF TO data,
lv_tabix TYPE sy-tabix.
FIELD-SYMBOLS:<fs_maintview> TYPE any,
<lv_field> TYPE any.
IF x_header-maintview IS NOT INITIAL.
CREATE DATA lo_data TYPE (x_header-maintview).
IF lo_data IS BOUND.
ASSIGN lo_data->* TO <fs_maintview>.
ENDIF.
IF <fs_maintview> IS ASSIGNED.
IF <action> = 'U'.
LOOP AT total.
READ TABLE extract WITH KEY <vim_xtotal_key>.
IF sy-subrc = 0.
lv_tabix = sy-tabix.
ELSE.
CONTINUE.
ENDIF.
IF <action> = 'U'.
CLEAR <fs_maintview>.
MOVE-CORRESPONDING <vim_total_struc> TO <fs_maintview>.
UNASSIGN <lv_field>.
ASSIGN COMPONENT 'AEDAT' OF STRUCTURE <fs_maintview> TO <lv_field>.
IF sy-subrc EQ 0 AND <lv_field> IS ASSIGNED.
<lv_field> = sy-datum.
ENDIF.
UNASSIGN <lv_field>.
ASSIGN COMPONENT 'AEZET' OF STRUCTURE <fs_maintview> TO <lv_field>.
IF sy-subrc EQ 0 AND <lv_field> IS ASSIGNED.
<lv_field> = sy-uzeit.
ENDIF.
UNASSIGN <lv_field>.
ASSIGN COMPONENT 'AENAM' OF STRUCTURE <fs_maintview> TO <lv_field>.
IF sy-subrc EQ 0 AND <lv_field> IS ASSIGNED.
<lv_field> = sy-uname.
ENDIF.
MOVE-CORRESPONDING <fs_maintview> TO <vim_total_struc>.
MODIFY total.
extract = total.
MODIFY extract INDEX lv_tabix.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
sy-subrc = 0.
ENDFORM.
事务码:SM30
可以显示编辑维护好的数据表
事务码:SE93
程序中调用
代码
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'U' "操作类型:U修改/S显示/T传输
view_name = 'ZZZZZZ' "维护视图名
* TABLES
* dba_sellist = gt_sellist
EXCEPTIONS
client_reference = 1
foreign_lock = 2
invalid_action = 3
no_clientindependent_auth = 4
no_database_function = 5
no_editor_function = 6
no_show_auth = 7
no_tvdir_entry = 8
no_upd_auth = 9
only_show_allowed = 10
system_failure = 11
unknown_field_in_dba_sellist = 12
view_not_found = 13
maintenance_prohibited = 14
OTHERS = 15.
IF sy-subrc <> 0.
ENDIF.