关于客户主数据的批量更新
客户主数据有很多复杂的维护功能,比如客户的合作伙伴维护,没有相关的bapi实现,做bdc或catt实现起来也比较困难,通过分析源代码,发现这些数据的修改是通过FM:customer_update来实现,然后通过fm:DEBI_WRITE_DOCUMENT来记录主数据的修改历史记录,我做了个测试小程序,用来实现维护客户的合作伙伴,当然其他相关的数据也可以通过这个FM来维护,示例程序如下:
适用tcode:vd01/02,xd01/02.
[code]
REPORT ZTESTCUSTOMERUPDATE MESSAGE-ID E00 .
TYPE-POOLS TRUXS.
DATA: XLSTAB TYPE TRUXS_T_TEXT_DATA,
F_SIZE TYPE I ,
LEN TYPE I,
LEN1 TYPE I.
DATA:FLAG TYPE I,
ANSWER.
TABLES:
KNA1,KNVP.
DATA:BEGIN OF ITB_EXCEL OCCURS 0, " 定义EXCEL模板结构
KUNNR LIKE KNVP-KUNNR, "客户
KUNN2 LIKE KNVP-KUNN2 , "业务伙伴的客户号 ,也就是送大方
END OF ITB_EXCEL.
DATA:BEGIN OF ITB_INPUT OCCURS 0,
KUNNR LIKE KNVP-KUNNR, "客户
KUNN2 LIKE KNVP-KUNN2, "业务伙伴的客户号
PARZA LIKE KNVP-PARZA, "计数器
INFO(30),
END OF ITB_INPUT.
*DATA:BEGIN OF ITB_INPUT OCCURS 0,
* KNVP LIKE KNVP-KUNNR, "客户
* KUNN2 LIKE KNVP-KUNN2, "业务伙伴的客户号
* PARZA LIKE KNVP-PARZA, "计数器
* END OF ITB_INPUT.
DATA:BEGIN OF EX_ITAB OCCURS 0,
KUNNR LIKE KNVP-KUNNR, "客户
KUNN2 LIKE KNVP-KUNN2, "业务伙伴的客户号
PARZA LIKE KNVP-PARZA, "计数器
END OF EX_ITAB.
…………………………略
CALL FUNCTION ‘CUSTOMER_UPDATE’
EXPORTING
I_KNA1 = I_KNA1
I_KNB1 = I_KNB1
I_KNVV = I_KNVV
I_YKNA1 = I_YKNA1
I_YKNB1 = I_YKNB1
TABLES
T_XKNAS = T_XKNAS
T_XKNB5 = T_XKNB5
T_XKNBK = T_XKNBK
T_XKNVA = T_XKNVA
T_XKNVD = T_XKNVD
T_XKNVI = T_XKNVI
T_XKNVK = T_XKNVK
T_XKNVL = T_XKNVL
T_XKNVP = T_XKNVP
T_XKNVS = T_XKNVS
T_XKNEX = T_XKNEX
T_XKNZA = T_XKNZA
T_YKNAS = T_YKNAS
T_YKNB5 = T_YKNB5
T_YKNBK = T_YKNBK
T_YKNVA = T_YKNVA
T_YKNVD = T_YKNVD
T_YKNVI = T_YKNVI
T_YKNVK = T_YKNVK
T_YKNVL = T_YKNVL
T_YKNVP = T_YKNVP
T_YKNVS = T_YKNVS
T_YKNEX = T_YKNEX
T_YKNZA = T_YKNZA
.
OBJECTID = P_KUNNR.
CALL FUNCTION ‘DEBI_WRITE_DOCUMENT’
EXPORTING
OBJECTID = OBJECTID
TCODE = ‘VD02′
UTIME = SY-UZEIT
UDATE = SY-DATUM
USERNAME = SY-UNAME
* PLANNED_CHANGE_NUMBER = ‘ ‘
OBJECT_CHANGE_INDICATOR = ‘U’
* PLANNED_OR_REAL_CHANGES = ‘ ‘
* NO_CHANGE_POINTERS = ‘ ‘
N_KNA1 = I_KNA1
O_YKNA1 = I_KNA1
* UPD_KNA1 = ‘ ‘
* UPD_KNAS = ‘ ‘
* UPD_KNAT = ‘ ‘
N_KNB1 = I_KNB1
O_YKNB1 = I_KNB1
* UPD_KNB1 = ‘ ‘
* UPD_KNB5 = ‘ ‘
* UPD_KNBK = ‘ ‘
* UPD_KNBW = ‘ ‘
* UPD_KNEX = ‘ ‘
* UPD_KNVA = ‘ ‘
* UPD_KNVD = ‘ ‘
* UPD_KNVI = ‘ ‘
* UPD_KNVK = ‘ ‘
* UPD_KNVL = ‘ ‘
UPD_KNVP = ‘X’
* UPD_KNVS = ‘ ‘
N_KNVV = I_KNVV
O_YKNVV = I_KNVV
* UPD_KNVV = ‘ ‘
* UPD_KNZA = ‘ ‘
TABLES
XKNAS = T_XKNAS
YKNAS = T_YKNAS
XKNAT = T_XKNAT
YKNAT = T_YKNAT
XKNB5 = T_XKNB5
YKNB5 = T_YKNB5
XKNBK = T_XKNBK
YKNBK = T_YKNBK
XKNBW = T_XKNBW
YKNBW = T_YKNBW
XKNEX = T_XKNEX
YKNEX = T_YKNEX
XKNVA = T_XKNVA
YKNVA = T_YKNVA
XKNVD = T_XKNVD
YKNVD = T_YKNVD
XKNVI = T_XKNVI
YKNVI = T_YKNVI
XKNVK = T_XKNVK
YKNVK = T_YKNVK
XKNVL = T_XKNVL
YKNVL = T_YKNVL
XKNVP = T_XKNVP
YKNVP = T_YKNVP
XKNVS = T_XKNVS
YKNVS = T_YKNVS
XKNZA = T_XKNZA
YKNZA = T_YKNZA
.
COMMIT WORK AND WAIT.
[/code]
中间有代码略,有需要可以联系我索要。
转载请注明:来自一流的窝
本文地址:http://wendaoliu.cn/?p=18801
0 条评论
我要留言