云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_db2数据库连接_试用

小七 141 0

我在SAP论坛上看到了一些帖子,他们在询问如何在请购单上添加自定义屏幕/选项卡的解决方案。但据我所知,SAP没有提供任何用户出口/Badi/SMOD来增强请购单表头部分的屏幕。

而且我们也知道,请购单数据库设计与其他业务对象文档不同。一般的业务文档数据库表设计一般都应该有表头和表项,有的有明细表行。例如,采购订单的EKKO和EKPO,销售订单的VBAK和VBAP,FI文件的BKPF和BSEG……

对于采购申请,似乎数据存储在项目级别,云服务服务器,我们只有采购申请的EBAN(本博客不考虑其他数据库表,例如:科目分配表EBKN).

采购申请单表头没有标准增强,甚至没有数据库设计。嗯,似乎不可能为请购单标题级别添加自定义屏幕。

几年前,我们确实无法做到这一点,除非我们花大量精力修改标准程序。当然,这种方法是很难接受的

所以,如果接到请购单定制表头的要求,或者在表头增加一个新的屏幕,一般我们会采取另一种解决方案,比如在采购项目级增加一个定制的屏幕页签,用户可以在项目级输入表头数据,数据应该依赖于项目或独立于项目,甚至设计新的应用程序来达到要求。

但是现在,感谢新一代增强技术,我们可以通过隐式增强来达到要求,再加上一些SMOD/CMOD增强和Badi。

在本文中,我想分享两个解决方案,如何使采购申请自定义标题。实际上,我喜欢第一个(我想你们大多数人也一样)

这个想法的结果是我们有一个采购申请的增强功能,但我希望这个想法也能为我们其他类似的增强需求提供一个新的思路

1.采购申请的一瞥和调查

大家都知道,请购单的事务一般包括ME51N、ME52N、ME53N、ME54N,这些事务的触发程序为RM\u MEREQ\u GUI(见SE93)

触发程序RM\u MEREQ\u GUI的源代码中调用了功能模块MEGUI\u MAINTAIN。此功能模块是功能组MEGUI(采购单据用户界面)的一个组件。作为MEGUI的描述,低价云服务器,所有与采购单据的用户界面相关的组件都被集成到这个功能组中/被集成到这个功能组中,例如屏幕、GUI状态(我认为MEGUI就像MVC模式的视图)。

对于请购单应用程序,主屏幕为程序SAPLMEGUI(或功能组MEGUI)的0014,GUI状态为程序SAPLMEGUI(或功能组MEGUI)的REQ

一般在tabstrip上只有一个文本子屏幕。如果在屏幕字段中按F1帮助,您会发现屏幕编辑器的程序与主屏幕的程序不同。通过调试,我发现功能模块MEGUI\u BUILD\u REQ\u HEADER\u PLUGIN是用来集成到tabstrip组件的,而文本编辑器是这个功能模块中添加到tabstrip的。当我在这一点上研究这个程序时,我相信我们可以通过采用类似的方法在tabstrip上添加一个新的子屏幕(或多个)。(是的,这是我第一个解决方案的想法)

同样通过调试,我发现应用程序的GUI状态是在类CL\u WINDOW\u MM的方法PBO中设置的(继承自类CL\u COMPOSITE\u SCREEN\u VIEW\u MM),GUI状态是由不包含函数的方法决定的。属性DYNPRO和PROG表示当前屏幕和程序。

好的,我相信现在有些人对解决方案有了另一个想法。

是的,我们可以开发一个新的自定义程序并插入一个GUI状态作为程序组件,我们还可以在GUI状态的应用程序工具栏中添加一个新按钮,称为custom Header。然后,我们可以用自定义对象替换原始的标准GUI状态(l\u pfstatus)及其程序(l\u pfprogram)。当然,最好的替换位置应该在方法的末尾,不包括函数,每个人都知道我们可以通过隐式增强来完成。

最好将标准GUI状态REQ复制到我们新的自定义GUI状态,这样我们就可以保留原来的按钮和菜单(实际上,这非常重要)。否则我们在处理请购单时会失去很多功能)。

但别忘了应用程序需要响应新按钮。

通过调试,我发现在功能组MEGUI中有一个方法可以执行本地类LCL\u DOCUMENT\u CMD的命令,它是用户命令的响应者。

再次感谢新一代增强技术,我们可以在这个方法的末尾放置一个隐式增强,这样程序就可以响应用户命令。

在功能组MEGUI旁边,整个应用程序中有一个功能组MEREQ。这个功能组起到处理请购单的作用,就像MVC模式的模型。这个功能组有很多本地类,我想提一下我的文档中涉及的两个本地类,

本地类LCL\ U REQ\ U HEADER是请购单表头的模型,它包含了请购单表头的处理逻辑。另外一个本地类LCL\U实例\U工厂,一个采购申请的工厂类,用来处理采购申请的核心功能,比如post.

当然,我们还有SMOD/Badi的功能增强,返利模式,用于处理采购申请;其中一些会涉及到我的文档中

2.一个逐步增强的演示