SAP S/4中客户和供应商增值税CN0无法更新表KNA1-STCEG或LFA1-STCEG值
2026/9/3 8:42:49 网站建设 项目流程

一、问题描述

从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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询