鸦鸦 发表于 2015-9-20 11:48:20

SAP供应商和客户的创建

  【转自http://blog.iyunv.com/lyb_yt/article/details/17962609】
进来遇到一个创建供应商的需求,由于在系统中关于供应商和客户的创建比较特殊,且没有相关函数进行创建,
  找到一个类和方法来创建,类名:VMD_EI_API方法名:MAINTAIN_DIRECT_INPUT,类似的
  * 供应商表头
ls_vendors-header-object_instance-lifnr = lv_vendor."供应商
ls_vendors-header-object_task = 'M'.            "创建/更改
* 通用数据
ls_vendors-central_data-central-data-stceg       = stceg.      "增值税登记号
ls_vendors-central_data-central-data-ktokk       = '0001'.   "账户组
ls_vendors-central_data-central-data-j_1kfrepre= j_1kfrepre. "代表名称
ls_vendors-central_data-central-datax-stceg      = 'X'.      "增值税登记号
ls_vendors-central_data-central-datax-ktokk      = 'X'.      "账户组
ls_vendors-central_data-central-datax-j_1kfrepre = 'X'.      "代表名称
* 电话
ls_phone-contact-data-telephone = phone.
APPEND ls_phone TO ls_vendors-central_data-address-communication-phone-phone.
CLEAR ls_phone.
* 邮箱
ls_smtp-contact-data-e_mail      = smtp.
APPEND ls_smtp TO ls_vendors-central_data-address-communication-smtp-smtp.
CLEAR ls_smtp.
ls_vendors-central_data-address-postal-data-name         = name.       "名称
ls_vendors-central_data-address-postal-data-name_2       = name.       "名称
ls_vendors-central_data-address-postal-data-sort1      = sort1.      "属性(SAP为搜索项 1)
ls_vendors-central_data-address-postal-data-street       = street.   "街道/门牌号
ls_vendors-central_data-address-postal-data-postl_cod1   = postl_cod1. "邮政编码
ls_vendors-central_data-address-postal-data-city         = city.       "城市
ls_vendors-central_data-address-postal-data-country      = country.    "国家
ls_vendors-central_data-address-postal-data-region       = region.   "地区
ls_vendors-central_data-address-postal-data-langu      = '1'.      "语言
ls_vendors-central_data-address-postal-datax-name      = 'X'.
ls_vendors-central_data-address-postal-datax-name_2      = 'X'.
ls_vendors-central_data-address-postal-datax-sort1       = 'X'.
ls_vendors-central_data-address-postal-datax-street      = 'X'.
ls_vendors-central_data-address-postal-datax-postl_cod1= 'X'.
ls_vendors-central_data-address-postal-datax-city      = 'X'.
ls_vendors-central_data-address-postal-datax-country   = 'X'.
ls_vendors-central_data-address-postal-datax-region      = 'X'.
ls_vendors-central_data-address-postal-datax-langu       = 'X'.
* 采购组织数据
ls_purchasing-task = 'M'.
ls_purchasing-data_key-ekorg = '1000'.
ls_purchasing-data-waers = waers.
ls_purchasing-data-verkf = verkf.
ls_purchasing-data-telf1 = telf1.
ls_purchasing-data-eikto = eikto.
ls_purchasing-data-webre= 'X'.
ls_purchasing-datax-waers = 'X'.
ls_purchasing-datax-verkf = 'X'.
ls_purchasing-datax-telf1 = 'X'.
ls_purchasing-datax-webre = 'X'.
ls_purchasing-datax-eikto = 'X'.
IF requesttype = 'CREATE'.
    ls_functions-task = 'I'.
    ls_functions-data_key-parvw = 'BA'.
    ls_functions-data-defpa = ''.
    ls_functions-data-partner = lv_vendor.
    ls_functions-datax-defpa = 'X'.
    ls_functions-datax-partner = 'X'.
    APPEND ls_functions TO lt_functions.
    ls_functions-data_key-parvw = 'LF'.
    ls_functions-data-defpa = ''.
    ls_functions-data-partner = lv_vendor.
    ls_functions-datax-defpa = 'X'.
    ls_functions-datax-partner = 'X'.
    APPEND ls_functions TO lt_functions.
    ls_functions-data_key-parvw = 'RS'.
    ls_functions-data-defpa = ''.
    ls_functions-data-partner = lv_vendor.
    ls_functions-datax-defpa = 'X'.
    ls_functions-datax-partner = 'X'.
    APPEND ls_functions TO lt_functions.
    ls_purchasing-functions-functions = lt_functions.
ENDIF.
APPEND ls_purchasing TO ls_vendors-purchasing_data-purchasing.
CLEAR ls_purchasing.
APPEND ls_vendors TO lt_vendors.
CLEAR ls_vendors.
ls_main-vendors = lt_vendors.
* 创建或者更新供应商
CALL METHOD vmd_ei_api=>maintain_direct_input
    EXPORTING
      is_master_data         = ls_main
    IMPORTING
      es_master_data_correct   = l1
      es_message_correct       = l2
      es_master_data_defective = l3
      es_message_defective   = l4.
IF l4-is_error = ''.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
      wait = 'X'.
    return_status = 'S'.
    IF requesttype = 'CREATE'.
      return_value = '供应商创建成功!'.
    ELSEIF requesttype = 'UPDATE'.
      return_value = '供应商更新成功!'.
    ENDIF.
    sapcode = lv_vendor.
ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    return_status = 'F'.
    CLEAR ls_message.
    READ TABLE l4-messages INTO ls_message WITH KEY type = 'E'.
    IF sy-subrc = 0.
      MESSAGE ID ls_message-id            
TYPE ls_message-type            
NUMBER ls_message-number            
WITHls_message-message_v1                  ls_message
-message_v2                  ls_message
-message_v3                  ls_message
-message_v4            
INTO return_value.   
ENDIF.
ENDIF.
页: [1]
查看完整版本: SAP供应商和客户的创建