🚀欢迎来到本文🚀
🍉个人简介:matinal,目前职业是IT行业,一个正在慢慢前行的普通人。
🏀系列专栏:涵盖SAP各模块,Python,Excel,人工智能等
💡 其他专栏:一些平时学习的技术,感兴趣的小伙伴可以看看。🍔公众号:matinal
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝
⛱️万物从心起,心动则万物动🏄♂️
前言:SAP SM30表格维护生成器增强(自动带出描述/排序/显示不同数据)。
🦙(工作遇到傻逼,千万要远离。道路千万条,远离傻逼第一条)
创建SM30维护这里就不说了,直接说后续的定制需求的更改
SM30维护自定义表,使用部门一般会有一些需求:
一:输入客户编码后自动带出客户名称、输出物料自动带出物料描述
二:进入维护视图前,对数据进行筛选或排序
三:隐藏删除按钮(或者别的快捷菜单按钮)
四:在维护视图中批量导入/导出数据
五:针对不同操作人员,显示不同的数据
六:输入日期后,根据逻辑自动算出截止日期
一:输入客户编码后自动带出客户名称、输出物料自动带出物料描述
1、用表格维护事件的方式
SE11->表->菜单->实用程序->表格维护生成器
菜单->环境->修改->事件
新增条目,选定事件编号为05,填写FORM名称:ZMVRPZ_YZ 回车
点击FORM名称右边->编辑器下面的图标创建 include程序:LZPHX_TEXT2F01
在里面写FORM程序:FORM名称要和外面事件上写的一致。
如果报错:函数组 xxxxxxx不能被处理,创建或修改了屏幕没有激活函数组,SE80里面激活该函数组即可。
代码如下:(记得进SE80里面激活维护函数组)
FORM zmvrpz_yz.
SELECT SINGLE maktx FROM makt INTO z_mvrpz-maktx
WHERE matnr = z_mvrpz-matnr AND spras = sy-langu.
SELECT SINGLE name1 FROM kna1 INTO z_mvrpz-name1
WHERE kunnr = z_mvrpz-kunnr AND spras = sy-langu.
ENDFORM.
常用事件:
进入屏幕:设置客户名称和物料描述字段为不可输入。即可!
2、用屏幕增强的方式(其实和第1中原理一样,就是实现的位置不同)
SE11->表->菜单->实用程序->表格维护生成器
双击概述屏幕 的屏幕号,进入屏幕逻辑流
增加 MODULE ZGET_TEXT。双击创建,代码如下:
MODULE ZGET_TEXT INPUT.
SELECT SINGLE maktx FROM makt INTO z_mvrpz-maktx
WHERE matnr = z_mvrpz-matnr AND spras = sy-langu.
SELECT SINGLE name1 FROM kna1 INTO z_mvrpz-name1
WHERE kunnr = z_mvrpz-kunnr AND spras = sy-langu.
ENDMODULE.
激活函数组即可。
二、进入维护视图前,对数据进行筛选/排序
1、理论上事件的方式也是可以的,没做测试
2、屏幕增强的方式
SE11->表->菜单->实用程序->表格维护生成器
双击概述屏幕 的屏幕号,进入屏幕逻辑流
查看一下表结构:
需要排序的字段为:SRDAT
extract 是全文本表,是按长度来取,把ERDAT前面所有字段的长度加起来是31 ERDAT 长度是8 截取extract+31(8) 就是该日期字段
双击 MODULE mod_set_sort. 创建,代码如下:
MODULE mod_set_sort OUTPUT.
FIELD-SYMBOLS: <fs_field> TYPE ANY.
ASSIGN extract+31(8) TO <fs_field>. "z_mvrpz-erdat
SORT extract BY <fs_field> DESCENDING.
ENDMODULE.
提供另一种语法:自定义表内没有数值类型字段的时候,可以用以下代码:MODULE位置同上面 mod_set_sort
MODULE SORT_EXTRACT OUTPUT.
DATA : IT_ZTEST LIKE ZTEST OCCURS 1WITHHEADER LINE .
IF NOT SY-UCOMM = ‘NEWL’.
IT_ZTEST[] = EXTRACT[].
SORT IT_ZTEST BY F1 F2 F3.
EXTRACT[] = IT_ZTEST[].
ENDIF.
ENDMODULE.
三:隐藏删除按钮(或者别的快捷菜单按钮)
示例:隐藏删除按钮
PBO中增加 MODULE pbo_hide_button. 在LOOP AT extract上面,代码如下:
MODULE pbo_hide_button OUTPUT.
MOVE 'DELE' TO excl_cua_funct-function. "隐藏删除按钮
COLLECT excl_cua_funct.
ENDMODULE.
四:在维护视图中批量导入/导出数据
怎么样,在了解此篇文章有何感想?
如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。更多精彩内容->在这里