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(30) TYPE 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,不到万不得已不要使用.