Enhancement(User-exit) 极端情况-- 跳过逻辑,不通过参数传递修改main program字段

系统对数据库表KNA1 和ADRC作了增强,添加了一个字段ZFDCOUTRY,在XD01,XD02中仅维护了ADRC- ZFDCOUTRY

需求: 添加XD01,XD02 对KNA1- ZFDCOUTRY的维护,KNA1- ZFDCOUTRY = ADRC- ZFDCOUTRY。

分析:XD01,XD02对应的program SAPMF02D 仅有一个User-exit:EXIT_SAPMF02D_001,3个BADI均无法满足要求,且系统不支持Enhancement Spot。

解决方案:拼凑FIELD-SYMBOLS跳过程序逻辑,直接指向program的全局参数,修改值。

示例:在TCODE:XD01,XD02中,人为修改LAND1值

*&---------------------------------------------------------------------*
*&  Include           ZXF04U01
*&---------------------------------------------------------------------*

DATA: l_land1(30TYPE c VALUE '(SAPMF02D)KNA1-LAND1'.
FIELD-SYMBOLS <f_land1> LIKE kna1-land1.

break awang0.
*-------Get reference to I_KNA1-------*
ASSIGN  (l_land1) TO <f_land1>.
*-------Change the value---------*
<f_land1> = 'CN'.

 注意:通过这种方法,可以修改main program中任意field,不到万不得已不要使用.

posted on 2011-06-30 10:40  T_BUG  阅读(889)  评论(0编辑  收藏  举报