一、问题描述
从ECC升级到S4后,通过BP修改客商业务伙伴的税号CN0不能更新表KNA1-STCEG或LFA1-STCEG值,反而会更新到KNA1-STCD5和LFA1-STCD5中,但S4的CN5也会更新到这个字段,导致发生混乱。
二、问题分析
S4的标准功能做了处理,详见NOTE3264433。虽然不合理,因为中国的增值税是18位,而STCEG(增值税登记号)是20位,完全够用。
三、解决方案
1、BP先创建业务伙伴,再扩充客商视图(角色选择000000)
客商分别通过增强处理,对应的函数分别为CUSTOMER_UPDATE、VENDOR_UPDATE
ENHANCEMENT 1 ZEN_KNA1_UPDAT. "active version
DATA: ZTAXNUM(20) TYPE C,
ZTAXNUMXL(60) TYPE C.
IF I_KNA1-KUNNR IS NOT INITIAL.
* 将CNO写入KNA1-STCEG字段
SELECT SINGLE A~TAXNUM A~TAXNUMXL
INTO (ZTAXNUM,ZTAXNUMXL)
FROM DFKKBPTAXNUM AS A
INNER JOIN BUT000 AS B ON B~PARTNER = A~PARTNER
INNER JOIN CVI_CUST_LINK AS C ON C~PARTNER_GUID = B~PARTNER_GUID
WHERE C~CUSTOMER = I_KNA1-KUNNR
AND A~TAXTYPE = 'CN0'.
IF ZTAXNUM IS NOT INITIAL.
I_KNA1-STCEG = ZTAXNUM.
ELSEIF ZTAXNUMXL IS NOT INITIAL.
I_KNA1-STCEG = ZTAXNUMXL.
ENDIF.
*将CN5写入KNA1-STCD5字段
CLEAR:ZTAXNUM,ZTAXNUMXL.
SELECT SINGLE A~TAXNUM A~TAXNUMXL
INTO (ZTAXNUM,ZTAXNUMXL)
FROM DFKKBPTAXNUM AS A
INNER JOIN BUT000 AS B ON B~PARTNER = A~PARTNER
INNER JOIN CVI_CUST_LINK AS C ON C~PARTNER_GUID = B~PARTNER_GUID
WHERE C~CUSTOMER = I_KNA1-KUNNR
AND A~TAXTYPE = 'CN5'.
IF ZTAXNUM IS NOT INITIAL.
I_KNA1-STCD5 = ZTAXNUM.
ELSEIF ZTAXNUMXL IS NOT INITIAL.
I_KNA1-STCD5 = ZTAXNUMXL.
ENDIF.
ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 1 ZEN_LFA1_UPDAT. "active version
DATA: ZTAXNUM(20) TYPE C,
ZTAXNUMXL(60) TYPE C.
IF I_LFA1-LIFNR IS NOT INITIAL.
* 将CNO写入LFA1-STCEG字段
SELECT SINGLE A~TAXNUM A~TAXNUMXL
INTO (ZTAXNUM,ZTAXNUMXL)
FROM DFKKBPTAXNUM AS A
INNER JOIN BUT000 AS B ON B~PARTNER = A~PARTNER
INNER JOIN CVI_VEND_LINK AS C ON C~PARTNER_GUID = B~PARTNER_GUID
WHERE C~VENDOR = I_LFA1-LIFNR
AND A~TAXTYPE = 'CN0'.
IF ZTAXNUM IS NOT INITIAL.
I_LFA1-STCEG = ZTAXNUM.
ELSEIF ZTAXNUMXL IS NOT INITIAL.
I_LFA1-STCEG = ZTAXNUMXL.
ENDIF.
*将CN5写入LFA1-STCD5字段
CLEAR:ZTAXNUM,ZTAXNUMXL.
SELECT SINGLE A~TAXNUM A~TAXNUMXL
INTO (ZTAXNUM,ZTAXNUMXL)
FROM DFKKBPTAXNUM AS A
INNER JOIN BUT000 AS B ON B~PARTNER = A~PARTNER
INNER JOIN CVI_VEND_LINK AS C ON C~PARTNER_GUID = B~PARTNER_GUID
WHERE C~VENDOR = I_LFA1-LIFNR
AND A~TAXTYPE = 'CN5'.
IF ZTAXNUM IS NOT INITIAL.
I_LFA1-STCD5 = ZTAXNUM.
ELSEIF ZTAXNUMXL IS NOT INITIAL.
I_LFA1-STCD5 = ZTAXNUMXL.
ENDIF.
ENDIF.
ENDENHANCEMENT.
2、BP创建业务伙伴+扩充客商视图同时处理(角色选客商)
![]()
客商分别通过增强处理,对应的函数分别为CUSTOMER_INSERT、VENDOR_INSERT