关于客户主数据的批量更新

客户主数据有很多复杂的维护功能,比如客户的合作伙伴维护,没有相关的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 条评论

我要留言