ABAP-供应商主数据创建(冻结和解冻供应商的采购组织)

FUNCTION zmm_fm_21_06.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN) TYPE  ZSLIFNR_SRM
*"  EXPORTING
*"     VALUE(OUT) TYPE  ZSLIFNR_SRM
*"----------------------------------------------------------------------

  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,           "返回参数.
        ls_purchasing  TYPE vmds_ei_purchasing,
        ls_functions   TYPE vmds_ei_functions,
        lt_functions   TYPE vmds_ei_functions_t,
        lt_master_data TYPE vmds_ei_main,
        ls_master_data TYPE vmds_ei_extern.
  DATA: lv_lifnr TYPE lfa1-lifnr.

  CLEAR: lt_return.
  REFRESH: lt_return.
*  CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
*    EXPORTING
*      businesspartner             = in-partner
*      businesspartnerrolecategory = 'FLVN01'
**     ALL_BUSINESSPARTNERROLES    = ' '
*      businesspartnerrole         = 'FLVN01'
**     DIFFERENTIATIONTYPEVALUE    =
**     VALIDFROMDATE               =
**     VALIDUNTILDATE              = '99991231'
*    TABLES
*      return                      = lt_return.
*                                                            "20160721新增
*  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'.
*  ELSE.
*    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*      EXPORTING
*        wait = 'X'.
*  ENDIF.

  CLEAR: ls_master_data,ls_purchasing,ls_master_data,lt_master_data.
  REFRESH:lt_functions.

  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_purchasing-task                              'U'.
  ls_purchasing-data_key-ekorg                    in-caigou-ekorg.    " 采购组织
  IF in-usedtype EQ '3'.
    ls_purchasing-data-sperm                      'X'.
    ls_purchasing-datax-sperm                      'X'.
  ELSEIF in-usedtype EQ '4'.
    ls_purchasing-data-sperm                      ''.
    ls_purchasing-datax-sperm                      'X'.
  ENDIF.
*  ls_purchasing-data-waers                        = in-caigou-waers.    " 币种
*  ls_purchasing-datax-waers                       = 'X'.
*  ls_purchasing-data-zterm                        = in-caigou-zterm1.   " 付款条件
*  ls_purchasing-datax-zterm                       = 'X'.
**    LS_PURCHASING-DATA-EKGRP                     = in-EKGRP.    " 采购组20160913
**    LS_PURCHASING-DATAX-EKGRP                    = 'X'.
*  ls_purchasing-data-verkf                        = in-caigou-verkf.    " 供应商联系人
*  ls_purchasing-datax-verkf                       = 'X'.
*  ls_purchasing-data-telf1                        = in-caigou-telf1.    " 供应商联系电话
*  ls_purchasing-datax-telf1                       = 'X'.
*  ls_purchasing-data-webre                        = in-caigou-webre.    " 基于收货的发票校验
*  ls_purchasing-datax-webre                       = 'X'.
*  ls_purchasing-data-lebre                        = in-caigou-lebre.    " 基于服务的发票校验标识
*  ls_purchasing-datax-lebre                       = 'X'.
*  ls_purchasing-data-kalsk                        = in-caigou-kalsk.    " 方案组
*  ls_purchasing-datax-kalsk                       = 'X'.

  ls_functions-task 'U'.

*    IF in-KTONR <> ''.
*      LS_FUNCTIONS-DATA_KEY-PARVW = 'ZM'.                "ER内外部转换后为ZM
**    LS_FUNCTIONS-DATA-DEFPA = ''.
*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*        EXPORTING
*          INPUT  = in-KTONR
*        IMPORTING
*          OUTPUT = in-KTONR.
*      LS_FUNCTIONS-DATA-PARTNER = in-KTONR.
*      LS_FUNCTIONS-DATAX-PARTNER =  'X'.
*      APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
*
*    ENDIF.

  ls_functions-data_key-parvw 'BA'.
  APPEND ls_functions TO ls_purchasing-functions-functions.

  ls_functions-data_key-parvw 'LF'.
  APPEND ls_functions TO ls_purchasing-functions-functions.

  ls_functions-data_key-parvw 'RS'.
  APPEND ls_functions TO ls_purchasing-functions-functions.
*
  APPEND ls_purchasing TO ls_master_data-purchasing_data-purchasing.
  APPEND ls_master_data TO  lt_master_data-vendors[].

*    LS_FUNCTIONS-DATA_KEY-PARVW = 'OA'.
*    APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
*
*    LS_FUNCTIONS-DATA_KEY-PARVW = 'VN'.
*    APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
*
*    LS_FUNCTIONS-DATA_KEY-PARVW = 'PI'.
*    LS_FUNCTIONS-DATA-DEFPA = ''.
*    APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.

  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
      iv_collect_messages      'X'
      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-lfm1f 'X'.
    in-icon_a  = gc_yellow.
    IF in-usedtype EQ '3'.
      in-remark in-remark && '供应商在采购组织' && in-caigou-ekorg && '下冻结成功'.
    ELSEIF in-usedtype EQ '4'.
      in-remark in-remark && '供应商在采购组织' && in-caigou-ekorg && '下解冻成功'.
    ENDIF.

  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/12848647.html