ABAP-供应商主数据创建(公司视图)

FUNCTION zmm_fm_21_04.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN) TYPE  ZSLIFNR_SRM
*"  EXPORTING
*"     VALUE(OUT) TYPE  ZSLIFNR_SRM
*"     REFERENCE(GV_ERR) TYPE  CHAR1
*"----------------------------------------------------------------------
  CONSTANTS : gc_black  TYPE char04 VALUE '@EB@',
              gc_red    TYPE char04 VALUE '@0A@',
              gc_green  TYPE char04 VALUE '@08@',
              gc_yellow TYPE char04 VALUE '@09@'.

  DATA: ls_phone TYPE cvis_ei_phone_str,
        ls_fax   TYPE cvis_ei_fax_str,
        ls_smtp  TYPE cvis_ei_smtp_str.
  DATA:lt_return LIKE bapiret2   OCCURS WITH HEADER LINE.
  DATA: lv_lifnr TYPE lfa1-lifnr.

  CLEAR: lt_return,lt_return[].


  CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
    EXPORTING
      businesspartner             in-partner
      businesspartnerrolecategory 'FLVN00'
*     ALL_BUSINESSPARTNERROLES    = ' '
      businesspartnerrole         'FLVN00'
*     DIFFERENTIATIONTYPEVALUE    =
*     VALIDFROMDATE               =
*     VALIDUNTILDATE              = '99991231'
    TABLES
      return                      = lt_return.

  LOOP AT lt_return WHERE type 'A' OR type 'E'.

*     GW_LIST-ICON = GC_RED.
*     GW_LIST-MSG  = LT_RETURN-MESSAGE.

    gv_err 'X'.
    EXIT.
  ENDLOOP.

  IF gv_err 'X'.
*    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*    RETURN.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait 'X'.
  ENDIF.

  DATA: lt_master_data TYPE vmds_ei_main,
        ls_master_data TYPE vmds_ei_extern,
        ls_company     TYPE vmds_ei_company.

  CLEAR: ls_master_data,ls_company,lt_master_data.


  ls_master_data-header-object_task              'M'.
  ls_master_data-header-object_instance-lifnr    in-partner.

  DATA:lv_ktokk2 TYPE tbc001-ktokk.
  CLEAR lv_ktokk2.
  SELECT SINGLE ktokk FROM tbc001 INTO lv_ktokk2 WHERE bu_group in-bu_group.
  ls_master_data-central_data-central-data-ktokk  = lv_ktokk2"供应商帐户组
  ls_master_data-central_data-central-datax-ktokk 'X'"供应商帐户组
*
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME         = in-NAME_ORG1.      "名称1
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME_2       = in-NAME_ORG2.      "名称2
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT1        = in-BU_SORT1.       "属性(SAP为搜索项 1)
**      LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT2        = in-BU_SORT2.       "属性(SAP为搜索项 2)
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-STREET       = in-STREET.         "街道/门牌号
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-POSTL_COD1   = in-POST_CODE1.     "邮政编码
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-CITY         = in-CITY1.          "城市
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-COUNTRY      = in-LAND1.          "国家
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-REGION       = in-REGIO.          "地区
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-LANGU        = '1'.                   "语言
*
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME         = 'X'.                  "名称1
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME_2       = 'X'.                  "名称2
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-SORT1        = 'X'.                  "属性(SAP为搜索项 1)
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-STREET       = 'X'.                  "街道/门牌号
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-POSTL_COD1   = 'X'.                  "邮政编码
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-CITY         = 'X'.                  "城市
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-COUNTRY      = 'X'.                  "国家
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-REGION       = 'X'.                  "地区
*  LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-LANGU        = 'X'.                  "语言

*    LS_MASTER_DATA-COMPANY_DATA-COMPANY            = ''.                      "COMPANY关联类型即LS_COMPANY的关联类型
  SELECT SINGLE lifnr
    INTO lv_lifnr
    FROM lfa1
    WHERE lifnr in-partner.
  IF sy-subrc <> 0.
    ls_master_data-central_data-address-task 'I'.
    ls_master_data-central_data-address-postal-data-title       in-title_key.  " 地址关键字的表格
    ls_master_data-central_data-address-postal-datax-title      'X'.
    ls_master_data-central_data-address-postal-data-name        in-name_org1.  " 名称1
    ls_master_data-central_data-address-postal-datax-name       'X'.
    ls_master_data-central_data-address-postal-data-name_2      in-name_org2.  " 名称2
    ls_master_data-central_data-address-postal-datax-name_2     'X'.
    ls_master_data-central_data-address-postal-data-sort1       in-bu_sort1.   " 搜索词 1
    ls_master_data-central_data-address-postal-datax-sort1      'X'.
    ls_master_data-central_data-address-postal-data-country     in-land1.      " 国家
    ls_master_data-central_data-address-postal-datax-country    'X'.
    ls_master_data-central_data-address-postal-data-region      in-regio.      " 地区
    ls_master_data-central_data-address-postal-datax-region     'X'.
    ls_master_data-central_data-address-postal-data-city        in-city1.      " 城市
    ls_master_data-central_data-address-postal-datax-city       'X'.
    ls_master_data-central_data-address-postal-data-street      in-street.     " 街道
    ls_master_data-central_data-address-postal-datax-street     'X'.
    ls_master_data-central_data-address-postal-data-postl_cod1  in-post_code1" 邮编
    ls_master_data-central_data-address-postal-datax-postl_cod1 'X'.
    ls_master_data-central_data-address-postal-data-langu       1.                 " 语言
    ls_master_data-central_data-address-postal-datax-langu      'X'.

    CLEAR ls_phone.
    ls_phone-contact-task 'I'.
    ls_phone-contact-data-country    in-land1.      " 国家.
    ls_phone-contact-datax-country   'X'.
    ls_phone-contact-data-std_no     'X'.
    ls_phone-contact-datax-std_no    'X'.
    ls_phone-contact-data-home_flag  'X'.
    ls_phone-contact-datax-home_flag 'X'.
    ls_phone-contact-data-telephone  in-tel_number" 电话.
    ls_phone-contact-datax-telephone 'X'.
    ls_phone-contact-data-r_3_user  '1'.
    ls_phone-contact-datax-r_3_user 'X'.
    APPEND ls_phone TO ls_master_data-central_data-address-communication-phone-phone[].

    CLEAR ls_phone.
    ls_phone-contact-task 'I'.
    ls_phone-contact-data-country    in-land1.      " 国家.     ls_phone
-contact-datax-country   'X'.     ls_phone
-contact-data-telephone  in-tel_number" 移动电话     ls_phone
-contact-datax-telephone 'X'.     ls_phone
-contact-data-r_3_user  '3'.     ls_phone
-contact-datax-r_3_user 'X'.     
APPEND ls_phone TO ls_master_data-central_data-address-communication-phone-phone[].     

CLEAR ls_fax.     ls_fax
-contact-task          'I'.     ls_fax
-contact-data-country    in-land1.           " 国家.     ls_fax
-contact-datax-country   'X'.     ls_fax
-contact-data-std_no     'X'.     ls_fax
-contact-datax-std_no    'X'.     ls_fax
-contact-data-home_flag  'X'.     ls_fax
-contact-datax-home_flag 'X'.     ls_fax
-contact-data-fax        in-fax_number.      " 传真     ls_fax
-contact-datax-fax       'X'.     
APPEND ls_fax TO ls_master_data-central_data-address-communication-fax-fax[].     

CLEAR ls_smtp.     ls_smtp
-contact-task 'I'.     ls_smtp
-contact-data-std_no     'X'.     ls_smtp
-contact-datax-std_no    'X'.     ls_smtp
-contact-data-home_flag  'X'.     ls_smtp
-contact-datax-home_flag 'X'.     ls_smtp
-contact-data-e_mail     in-smtp_addr.   " 邮箱     ls_smtp
-contact-datax-e_mail    'X'.     
APPEND ls_smtp TO ls_master_data-central_data-address-communication-smtp-smtp[].   
ENDIF.   ls_company
-task                                'M'.   ls_company
-data_key-bukrs                      in-gongsi-bukrs.             "公司代码   ls_company
-data-akont                          in-gongsi-akont.             "统驭科目   ls_company
-datax-akont                         'X'.   ls_company
-data-zuawa                          in-gongsi-zuawa.             "排序码   ls_company
-datax-zuawa                         'X'.   ls_company
-data-zterm                          in-gongsi-zterm2.             "付款条件   ls_company
-datax-zterm                         'X'.   ls_company
-data-zwels                          in-gongsi-dzwels.            "付款方式   ls_company
-datax-zwels                         'X'.
*  ls_company-data-hbkid                          = in-hbkid.            "开户行
*  ls_company-datax-hbkid                         = 'X'.
*  ls_company-data-fdgrv                          = in-fdgrv.            "计划组
*  ls_company-datax-fdgrv                         = 'X'.
*  LS_COMPANY-DATA-KVERM                          = in-ZALTKN.            "旧供应商编码
*  LS_COMPANY-DATAX-KVERM                         = 'X'.   
"LS_COMPANY-DATA-TOGRR                          = 'Z000'.            "容差组   
"LS_COMPANY-DATAX-TOGRR                         = 'X'.   ls_company
-data-reprf                          'X'.            "检查重复发票   ls_company
-datax-reprf                         'X'.   

APPEND ls_company TO ls_master_data-company_data-company.   
APPEND ls_master_data TO  lt_master_data-vendors[].   

DATA ls_msg1 TYPE vmds_ei_main.   
DATA ls_msg2 TYPE cvis_message.   
DATA ls_msg3 TYPE vmds_ei_main.   
DATA ls_msg4 TYPE cvis_message.   
DATA ls_msg  TYPE bapiret2.   vmd_ei_api

=>initialize).   

CALL METHOD vmd_ei_api=>maintain_bapi                                      "VMD_EI_API=>MAINTAIN_DIRECT_INPUT     
EXPORTING       is_master_data           
= lt_master_data     
IMPORTING       es_master_data_correct   
= ls_msg1       es_message_correct       
= ls_msg2       es_master_data_defective 
= ls_msg3       es_message_defective     
= ls_msg4.   

IF ls_msg4-is_error ''.     
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       
EXPORTING         
wait 'X'.     
in-lfb1f 'X'.     
in-icon_a  = gc_yellow.     
in-remark in-remark && '供应商公司代码视图扩展成功'.   
ELSE.     
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.     
LOOP AT ls_msg4-messages INTO ls_msg.       
in-remark in-remark && '/' && ls_msg-message.     
ENDLOOP.     
in-icon_a  = gc_red.   

ENDIF.   out 

in.


ENDFUNCTION.

原文地址:https://www.cnblogs.com/eagle-dtq/p/12848632.html