2020-09-07 06:15发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我使用用户出口EXIT_SAPMM06E_016和EXIT_SAPMM06E_018在ECC PO中添加了自定义字段和标签。
我面临的问题是,我需要仅对ME23N事务使该字段为DISPLAY,而仅对ME22N启用该输入。
我该如何实现?
我看到很少有线程指向BADI ME_PROCESS_PO_CUST和方法FIELDSELECTION_ITEM,但不知道影响自定义字段的代码是什么。
谢谢。
实际上,在采购交易中使用sy-tcode并不重要,因为它无法捕获显示/更改开关用户功能(按钮)。
所以正确的过程是:
事务SE11:
1。 在EKKO中创建字段" zfield",包括CI_EKKODB
然后事务SE80,功能组XM06:
2。 在顶部定义全局变量包括ZXM06TOP
表格:CI_EKKODB。 数据wa_i_aktyp。 "显示/更改模式
3。 在用户出口EXIT_SAPMM06E_006中编写此代码,包括ZXM06U36
wa_i_aktyp = i_trtyp。 "赋值
将i_ekko-zfield移动到ci_ekkodb-zfield。
4。 在用户出口EXIT_SAPMM06E_008中添加此代码,包括ZXM06U37
如果ci_ekkodb-zfield NE e_ci_ekko-zfield。 e_ci_ekko-zfield = ci_ekkodb-zfield。 e_ci_update ='X'。 "保存 ENDIF。
5.in 屏幕0101(布局编辑器)
在屏幕中设计字段" CI_EKKODB-ZFIELD",将组" Z1"添加到字段属性
6。 在dynpro 0101流逻辑中,创建一个PBO模块并放入此代码
在屏幕上循环。如果screen-group1 ='Z1'。如果wa_i_aktyp ='A'。 " display 屏幕输入=0。 ELSE。屏幕输入=1。 ENDIF。修改屏幕。 ENDIF。 ENDLOOP。
7。 测试一下。 用ME22N位将一些文本输入ZFIELD并保存。 检查保存的数据
谢谢! 这对我来说是正确的答案。
您可以在出口ZXM06O01上设置活动或只读。
在创建字段的屏幕中,设置PBO模块结束 在出口ZXM06O01
如果sy-tcode ='ME23N'定义它。
在屏幕上循环。
如果屏幕名称='您的字段'。
SCREEN-INPUT = 0。
修改屏幕。
ENDIF。
ENDLOOP。
问题是您可以使用菜单从显示ME23N导航到"更改"(ME22N),并且不确定是否刷新sy-tcode。 如果不是,则可以使用此参数获取真正的sy-tcode
DATA:l_tcode TYPE SHKONTEXT-TCODE。
CALL'GET_PARAM_TCOD'ID'PTCOD'FIELD l_tcode。 p>
我不确定是否可以使用。我通常将这个参数ID用于FI交易FB60(但如果您检查sy-tcode = FB01而不是FB60,则该参数显示所使用的真实sy-tcode) p>
致谢。
我从未使用过这种T代码方法,所以不确定它是否有效。
但是解决此问题的更好方法是 保存始终提供正确结果的I_TRTYP的值。
A显示
V更改
Hello srm_tech,
您可能会在以下链接中找到启发:
http://www.saptechnical。 com/Tutorials/ExitsBADIs/ME22N/Index.htm
http: //www.saptechnical.com/Tutorials/ExitsBADIs/ME22N/Page1.htm
在第一个链接中,您将 找到有关如何在ME22n中禁用输入字段的想法,因为在示例中该字段是自动填充的。
我想这应该可以帮助您在ME23n中实现所需的行为。
第二个是为了完善。
关于
亚历克斯
最多设置5个标签!
实际上,在采购交易中使用sy-tcode并不重要,因为它无法捕获显示/更改开关用户功能(按钮)。
所以正确的过程是:
事务SE11:
1。 在EKKO中创建字段" zfield",包括CI_EKKODB
然后事务SE80,功能组XM06:
2。 在顶部定义全局变量包括ZXM06TOP
表格:CI_EKKODB。
数据wa_i_aktyp。 "显示/更改模式
3。 在用户出口EXIT_SAPMM06E_006中编写此代码,包括ZXM06U36
wa_i_aktyp = i_trtyp。 "赋值
将i_ekko-zfield移动到ci_ekkodb-zfield。
4。 在用户出口EXIT_SAPMM06E_008中添加此代码,包括ZXM06U37
如果ci_ekkodb-zfield NE e_ci_ekko-zfield。
e_ci_ekko-zfield = ci_ekkodb-zfield。
e_ci_update ='X'。 "保存
ENDIF。
5.in 屏幕0101(布局编辑器)
在屏幕中设计字段" CI_EKKODB-ZFIELD",将组" Z1"添加到字段属性
6。 在dynpro 0101流逻辑中,创建一个PBO模块并放入此代码
在屏幕上循环。
如果screen-group1 ='Z1'。
如果wa_i_aktyp ='A'。 " display
屏幕输入=0。
ELSE。
屏幕输入=1。
ENDIF。
修改屏幕。
ENDIF。
ENDLOOP。
7。 测试一下。 用ME22N位将一些文本输入ZFIELD并保存。 检查保存的数据
谢谢! 这对我来说是正确的答案。
您可以在出口ZXM06O01上设置活动或只读。
在创建字段的屏幕中,设置PBO模块结束 在出口ZXM06O01
如果sy-tcode ='ME23N'定义它。
在屏幕上循环。
如果屏幕名称='您的字段'。
SCREEN-INPUT = 0。
修改屏幕。
ENDIF。
ENDLOOP。
ENDIF。
问题是您可以使用菜单从显示ME23N导航到"更改"(ME22N),并且不确定是否刷新sy-tcode。 如果不是,则可以使用此参数获取真正的sy-tcode
DATA:l_tcode TYPE SHKONTEXT-TCODE。
CALL'GET_PARAM_TCOD'ID'PTCOD'FIELD l_tcode。 p>
我不确定是否可以使用。我通常将这个参数ID用于FI交易FB60(但如果您检查sy-tcode = FB01而不是FB60,则该参数显示所使用的真实sy-tcode) p>
致谢。
我从未使用过这种T代码方法,所以不确定它是否有效。
但是解决此问题的更好方法是 保存始终提供正确结果的I_TRTYP的值。
A显示
V更改
Hello srm_tech,
您可能会在以下链接中找到启发:
http://www.saptechnical。 com/Tutorials/ExitsBADIs/ME22N/Index.htm
http: //www.saptechnical.com/Tutorials/ExitsBADIs/ME22N/Page1.htm
在第一个链接中,您将 找到有关如何在ME22n中禁用输入字段的想法,因为在示例中该字段是自动填充的。
我想这应该可以帮助您在ME23n中实现所需的行为。
第二个是为了完善。
关于
亚历克斯
一周热门 更多>