销售订单价格替代

在项目中遇到一个很棘手的问题,销售订单价格替代,业务背景是

a工厂取b工厂的折让价格,这样不用在两个工厂同时维护价格了。直接取b工厂对应的销售组织,分销渠道对应的价格替代a工厂的价格,测试时发现标准程序dump了,直接输入价格却可以做替代操作,分析标准程序后发现。输入对应的价格条件类型,系统自动取出来一个步骤编号:STUNR放到结构komv中,按照对应的定价条件类型在表683S中取数标准业务处理过程是每个销售组织,分销渠道,工厂有一个定价过程在遇到的业务需求定价过程是:ZODC01。曾尝试在标准预留出口MV45AFZZ,对应的子程序: FORM USEREXIT_PRICING_PREPARE_TKOMK. FORM USEREXIT_PRICING_PREPARE_TKOMP.增强测试后发现没有实现预定的目标 在标准事务码va01的include程序MV45AF0B_BELEG_SICHERN,对应增强点:

ENHANCEMENT 63 OI0_COMMON_SAPMV45A. "active version

ENHANCEMENT 64 OI0_COMMON_SAPMV45A.

建立增强 ZJGTD

TABLES :A071.
DATA: da_xkomv TYPE TABLE OF KOMV WITH HEADER LINE.
IF ( SY-TCODE = 'VA01' OR
SY-TCODE = 'VA02' OR
SY-TCODE = 'SA38' OR
SY-TCODE = 'SE38')..
***************************
*价格替代 begin
***************************
LOOP AT XVBAP.
CASE XVBAP-WERKS.
WHEN 'D015'.
IF XVBAK-VKORG = '8001'.
LOOP AT XKOMV WHERE ( KSCHL = 'VKA0' OR
KSCHL = 'VKP0') AND
KPOSN = XVBAP-POSNR .
IF SY-SUBRC = 0 .
CONTINUE.
ENDIF.
ENDLOOP.
IF SY-SUBRC NE 0.
SELECT * FROM A071
WHERE MATNR = XVBAP-MATNR AND
DATBI >= SY-DATUM AND
DATAB <= SY-DATUM AND
VKORG = '1000' AND
WERKS = '1015' AND
KSCHL IN ('VKA0' , 'VKP0').
SELECT single * FROM konp
into CORRESPONDING FIELDS OF da_xkomv
WHERE KNUMh = a071-knumh and
kschl = a071-kschl.
da_xkomv-kposn = XVBAP-POSNR.
da_xkomv-knumv = xvbak-knumv.
*** 根据定价过程来取对应的条件步骤号
SELECT SINGLE * FROM T683S
WHERE KSCHL = A071-KSCHL AND
KALSM = 'ZODC01'.定价条件
da_xkomv-stunr = t683s-stunr.
* da_xkomv-knumv = a071-knumh.
append da_xkomv.
append LINES OF da_xkomv to xkomv.
free: da_xkomv.
ENDSELECT.
ENDIF.
ENDIF.
ENDCASE.
ENDLOOP.
*******************************
*价格替代 end
*******************************

测试ok

[@more@]
请使用浏览器的分享功能分享到微信等