SAP ABAP SM30 自定义检查

本文介绍了如何在SAP ABAP中对SM30进行自定义检查,以满足特定业务需求。通过调整自定义表维护视图,包括字段描述获取、屏幕属性修改、增加审批状态字段和内容检查。详细讨论了如何在PAI和PBO模块中添加代码以实现这些功能,并展示了如何处理日期字段重叠的自定义检查。此外,还涉及了如何调用函数以实现表维护事务码和程序的封装。
摘要由CSDN通过智能技术生成

SAP ABAP SM30 自定义检查

SM30自定义表数据维护

SAP的自定义表可以生成表维护视图后,通过SM30进行维护。生成标准的表维护有时候不满足用户需求;我们可以手动调整生成的屏幕。 常见的调整有根据字段获取描述,,更改屏幕属性,增加记录修改字段,增加内容检查。
因业务需求,处理了一个自定义增加批准状态字段的设定,批准状态标记后,SM30维护这边不能进行修改和删除,同时因为有日期字段,为限定日期字段的重叠,增加了自定义检查;通过调用函数来跳转到SM30维护画面,所以进行了选择条件传值。
主要是在PAI和PBO中手动增加MODULE.
如果只是需要显示时获取字段描述,例如物料描述,可在屏幕上增加全局变量GV_MAKTX,然后在PAO中LISTE_SHOW_LISTE后面增加MODELE get_maktx.
如果需获取其他表的值且该值需保存在自定义表中或者类似存储当前用户,日期时间的更改记录时,则需在PAI的MODULE LISTE_UPDATE_LISTE.前增加自己的取值MODULE,否则获取值会不能存入自定义表,同时程序激活时需要整个函数组激活,否则也会出现默认值设定无效现象。

表维护视图建好后,如果需要维护事务码可以通过SE93新建事务码封装SM30,也可以建程序调用函数VIEW_MAINTENANCE_CALL

表维护视图MODULE

PBO
LOOP AT EXTRACT WITH CONTROL
TCTRL_ZXXXX CURSOR NEXTLINE.
MODULE LISTE_SHOW_LISTE.
MODULE GET_MAKTX."获取物料描述
MODULE CHANG_EDIT."动态修改屏幕属性
ENDLOOP.
MODULE CLEAR_HEAD.

  • 调用VIEW_MAINTENANCE_CALL时如果设定SEL,新建数据时也会保留限定

  • 所以有时需要清空选择标记字段
    &---------------------------------------------------------------------
    *& Module CLEAR_HEAD OUTPUT
    &---------------------------------------------------------------------
    MODULE CLEAR_HEAD OUTPUT.
    CLEAR X_HEADER-SELECTION.
    ENDMODULE. " CLEAR_HEAD OUTPUT

  • 获取物料描述
    SELECT SINGLE MAKTX
    FROM MAKT
    INTO GV_MAKTX
    WHERE MATNR = ZXXX-MATNR
    AND SPRAS = SY-LANGU.

动态更改行的输入属性,不允许输入
IF ZXXXX-PZZT IS NOT INITIAL .
LOOP AT SCREEN.
IF SCREEN-NAME = ‘ZXXXX-PRICE’
OR SCREEN-NAME = ‘ZXXXX-WAERS’
.
SCREEN-INPUT = ‘0’.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

PAI
PROCESS AFTER INPUT.
MODULE LISTE_EXIT_COMMAND AT EXIT-COMMAND.
MODULE LISTE_BEFORE_LOOP.
LOOP AT EXTRACT.
MODULE LISTE_INIT_WORKAREA.
CHAIN.
FIELD ZXXXX-WERKS .
FIELD ZXXXX-LGORT .
FIELD ZXXXX-UMLGO .
FIELD ZXXXX-LIFNR .
FIELD ZXXXX-MATNR .
FIELD ZXXXX-KSCHL .
FIELD ZXXXX-DATAB .
FIELD ZXXXX-DATBI .
FIELD ZXXXX-YMATNR .
FIELD ZXXXX-YMAKTX .
FIELD ZXXXX-PRICE .
FIELD ZXXXX-PZZT .
FIELD ZXXXX-BZ1 .
MODULE SET_UPDATE_FLAG ON CHAIN-REQUEST.
ENDCHAIN.
FIELD VIM_MARKED MODULE LISTE_MARK_CHECKBOX.

CHAIN. "自定义检查
FIELD ZXXXX-WERKS .
FIELD ZXXXX-LGORT .
FIELD ZXXXX-UMLGO .
FIELD ZXXXX-LIFNR .
FIELD ZXXXX-MATNR .
FIELD ZXXXX-KSCHL .
FIELD ZXXXX-DATAB .
MODULE CHECK_DATBI."自定义检查及值获取
ENDCHAIN.

CHAIN.
FIELD ZXXXX-WERKS .
FIELD ZXXXX-LGORT .
FIELD ZXXXX-UMLGO .
FIELD ZXXXX-LIFNR .
FIELD ZXXXX-MATNR .
FIELD ZXXXX-KSCHL .
FIELD ZXXXX-DATAB .
MODULE LISTE_UPDATE_LISTE.
ENDCHAIN.
ENDLOOP.

  • MODULE LISTE_AFTER_LOOP.
    MODULE LISTE_AFTER_LOOP_ADD."增加按钮删除时检查

&---------------------------------------------------------------------
*& Module CHECK_DATBI INPUT
&---------------------------------------------------------------------
MODULE CHECK_DATBI INPUT.

IF ZXXXX-DATBI < ZXXXX-DATAB.
MESSAGE E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值