表维护创建
创建自定义表

需要设置为 Display/Maintenance Allowed.允许修改,才可以在SM30中进行数据维护。否则会产生以下异常:

创建表维护


权限组:控制访问权限
函数组:放在自定义的函数组即可
Maintenance type:
- one step:每次维护数据的时候不会产生请求号
- two step:每次维护数据的时候会产生请求号
Recording rountine:
- Standard recording routine
- no,or user,recording routine:在其他Client上有权维护此表数据

当保存完成后即可通过TCode:SM30,通过对应的表名就可以对已建立表维护的表进行数据的维护。
修改 Table Control 显示控制
双击 Overview Screen 进入 Screen Painter,修改 Attributes 显示界面的大小。

然后进行字段修改设置为必输或则只显示,修改列描述,字段显示长度调整。

添加自定义 Module
可以根据输入值获取并设置相关字段的值; 设置维护日期 ,维护人赋值等操作


分配 TCode
通常建立的自定义表不允许用户直接查看,有时可能需要人工维护某些数据。这时候,可以通过SM30建立表维护的方式开放给用户,但是SM30的权限比较大不适宜直接分配;因此需要给对应的表维护另外分配TCode,来控制其权限。
TCode 创建并分配
通过 SE93 创建 TCode 并选择 Transaction with parameters(parameter transaction)。

创建界面需要配置 Default values 和一些默认值:
- UPDATE = X:是否可以对数据进行维护
- VIEWNAME = 需要维护的表名

查找 SM30 表维护对应的 Tcode
通过 SE16/SE16N 输入表 TSTCP,然后在 Parameters 中输入 Tablename,点击执行,将查找出表维护对应的 Tcode。
对维护表进行增强操作
可以通过增强的方式对维护表中的已知字段进行操作,比如每次修改后自动记录修改时间和修改人信息。



事件定义

- 如果出现错误信息:function group XXXX cannot be processed,检查Function group并完全激活。

- 01:数据库保存数据前
- 02:数据库保存数据后
- 03:删除已显示的数据之前
- 04:删除数据显示之后
- 05:建立新的条目…..
FORM Routine 定义
*----------------------------------------------------------------------*
***INCLUDE
*----------------------------------------------------------------------*
FORM test.
DATA: lv_msg TYPE string.
DATA: lt_data TYPE TABLE z_table,
ls_data TYPE z_table.
LOOP AT total.
IF <action> NE 'D' AND <action> NE 'X'. "U:Update,D:Delete"
APPEND <vim_total_struc> TO lt_data.
ENDIF.
ENDLOOP.
IF lt_data IS NOT INITIAL.
"Sucess"
vim_abort_saving = abap_false.
sy-subrc = 0.
ELSE.
"Error Msg"
lv_msg = 'Error Message.'.
MESSAGE lv_msg TYPE 'S' DISPLAY 'E'.
vim_abort_saving = abap_true.
sy-subrc = 4.
ENDIF.
IF sy-subrc <> 0.
MESSAGE 'XXXX' TYPE 'X'.
ENDIF.
ENDFORM.