1、确定需求
需求很简单,就是想在采购订单里添加上自定义字段,实际项目中,可能会遇到各种标准事务码上面加自定义字段的需求。
2、查找增强
查找增强点,相信大家都有很多很多办法找到。以至于我在这里都不知道该说用哪种方法查找,所以最终找到了MM06E005,看文本描述(Customer fields in purchasing document),看样子就是这个了。
matinal
3、录入事务
我们来看一下此用户出口的信息。当然要进入components里查看。
matinal
从上图可以看到,function module、screen areas、include都有了,装备齐全,拿到秘籍之后,就可以看是练习了。
4、添加字段
我们将自定义字段附加到CI_EKPODB。当然,这里可以添加在数据字典中定义的任何自定义字段Zxxxx。保存并激活,如下所示:
matinal
5、创建屏幕
创建子屏幕并将自定义字段添加到屏幕号111。这里需要注意的是,把这个屏幕修改为subscreen。所有的创建屏幕的信息,都可以从第三步骤中得到。我们需要的就是program和screen number。如下图所示:
matinal
6、添加字段
然后,我们在layout的screen painter里添加字段。如下图所示:
matinal
就是把第四步骤结构中的字段添加进来,注意我在图中的标注就可以了。
matinal
按照上述图中的展示,设置之后,保存并激活。
matinal
7、添加字段
再来看看要使用的function module,现在我们想在这个字段中写一些内容,它应该存储在数据库表EKPO中,我们希望在更改或显示模式下打开PO时看到上面步骤中操作实现的结果。在查看函数的时候,我只需要输入exit_sapmm06e_01也不用加星,就可以模糊查询出一些列的下拉列表,如下图所示:
matinal
8、添加字段
我分别在第六步骤的截图中,红线圈起来的三个exit中添加赋值。
EXIT_SAPMM06E_016
matinal
EXIT_SAPMM06E_017
matinal
EXIT_SAPMM06E_018
matinal
9、激活增强
要在CMOD里进行,创建一个自定义的项目,然后把组件添加进去。最后记得把所有内容都要激活。
matinal
10、业务逻辑
当然还有其他业务上的所有需求逻辑都可以在flow logic里实现了。
matinal
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.
小无相功所精妙者,乃是以较低境界运使天下武功,特别是道家功法,可谓得心应手,妙用无穷。当然,也不必过于高估了它,就是辅助而已,对于境界可能更高的逍遥派前辈来说,更是高深内功的初阶功夫,所以加了个小字。