公众号:SAP Technical
原文链接:修炼SAP屏幕之小无相功
新的希望,新的征程,新的收获。让我们憧憬更美好的明天。
小而无相,小才能无迹可寻。小无相功是道家之学,讲究清静无为,神游太虚,较之佛家武功中的无住不着之学,名虽略同,实质大异。小无相功若练到大成,原本威力奇大,不过此功既称为小无相,加上一个小字。指明毕竟仅为道家高深内功之初阶,以之运使道家功夫,确可得心应手,乃是逍遥派的独传内功心法,威力强大。但用之于别家功法,不免凿衲,未能尽臻其妙。
逍遥派的武功,和乔峰的降龙十八掌和段誉的六脉神剑这些绝世的武功不相伯仲,逍遥武功源于道家,而后者源于段氏,起点虽不同,确有殊途同归异曲同工之妙。两种神功皆与心脉血气相连,都是锻炼小指手少阴心经为主,从外观看,殊难分辨。小无相功若演化至极境,威力奇大,不过此功既称为小无相,加上一个小字。
写在前面
今天继续分享技术文章,我们在做项目的时候,有很多很多的需求会提出这样的要求,在现有的SAP标准屏幕上加个字段,或者加个页签,或者加个按钮然后弹出框,里面加上各种自定义的字段,上一篇关于SAP屏幕的文章我们称为拈花指,出指轻柔,就是不用大动干戈,只需要稍稍的改动一些,就可以收获到理想的效果。而小无相功是道家高深内功之初阶,而且还是未能尽臻其妙,只要身具此功,再知道其他武功的招式,倚仗其威力无比,就可以催动其他招式。而SAP里一些增强也是这样的。
虽然SAP系统能够满足大部分情况下的业务流程和数据处理,但是考虑到用户实际的业务流程有可能和系统默认的标准流程不同,此时如果直接修改SAP标准的代码显然不是最优选择,因此SAP提供了增强的功能,让用户可以在标准程序中添加自己的功能,而又不破坏系统的标准程序。
SAP增强实际上就是:在系统中标准程序的接口,每个接口对应一个客户化功能模块,这些功能模块有标准处理程序传入的参数和输出参数,用户可以根据系统输入参数,以此作为条件编写适合本企业流程和数据处理的逻辑,然后通过输出参数传递给SAP标准程序。
1、确定需求
需求很简单,就是想在采购订单里添加上自定义字段,实际项目中,可能会遇到各种标准事务码上面加自定义字段的需求。
2、查找增强
查找增强点,相信大家都有很多很多办法找到。以至于我在这里都不知道该说用哪种方法查找,所以最终找到了MM06E005,看文本描述(Customer fields in purchasing document),看样子就是这个了。
3、录入事务
我们来看一下此用户出口的信息。当然要进入components里查看。
从上图可以看到,function module、screen areas、include都有了,装备齐全,拿到秘籍之后,就可以看是练习了。
4、添加字段
我们将自定义字段附加到CI_EKPODB。当然,这里可以添加在数据字典中定义的任何自定义字段Zxxxx。保存并激活,如下所示:
5、创建屏幕
创建子屏幕并将自定义字段添加到屏幕号111。这里需要注意的是,把这个屏幕修改为subscreen。所有的创建屏幕的信息,都可以从第三步骤中得到。我们需要的就是program和screen number。如下图所示:
6、添加字段
然后,我们在layout的screen painter里添加字段。如下图所示:
就是把第四步骤结构中的字段添加进来,注意我在图中的标注就可以了。
按照上述图中的展示,设置之后,保存并激活。
7、添加字段
再来看看要使用的function module,现在我们想在这个字段中写一些内容,它应该存储在数据库表EKPO中,我们希望在更改或显示模式下打开PO时看到上面步骤中操作实现的结果。在查看函数的时候,我只需要输入exit_sapmm06e_01也不用加星,就可以模糊查询出一些列的下拉列表,如下图所示:
8、添加字段
我分别在第六步骤的截图中,红线圈起来的三个exit中添加赋值。
EXIT_SAPMM06E_016
EXIT_SAPMM06E_017
EXIT_SAPMM06E_018
9、激活增强
要在CMOD里进行,创建一个自定义的项目,然后把组件添加进去。最后记得把所有内容都要激活。
10、业务逻辑
当然还有其他业务上的所有需求逻辑都可以在flow logic里实现了。
PBO里:
*----------------------------------------------------------------------*
*& Module STATUS_0111 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0111 OUTPUT.
* status code
ENDMODULE.
PAI里:
*----------------------------------------------------------------------*
*& Module USER_COMMAND_0111 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0111 OUTPUT.
* user command code
ENDMODULE.
小无相功所精妙者,乃是以较低境界运使天下武功,特别是道家功法,可谓得心应手,妙用无穷。当然,也不必过于高估了它,就是辅助而已,对于境界可能更高的逍遥派前辈来说,更是高深内功的初阶功夫,所以加了个小字。
网友评论