ABAP-供应商主数据创建(基本视图创建)

ZSLIFNR_SRM结构:

PARTNER 1 类型 BU_PARTNER CHAR 10 0 业务伙伴编号
TITLE_KEY 1 类型 AD_TITLE CHAR 4 0 地址关键字的表格
BU_GROUP 1 类型 BU_GROUP CHAR 4 0 业务伙伴分组
NAME_ORG1 1 类型 BU_NAMEOR1 CHAR 40 0 组织名称 1
NAME_ORG2 1 类型 BU_NAMEOR2 CHAR 40 0 组织名称 2
BU_SORT1 1 类型 BU_SORT1 CHAR 20 0 业务伙伴的搜索词 1
LAND1 1 类型 LAND1 CHAR 3 0 国家/地区代码
REGIO 1 类型 REGIO CHAR 3 0 地区(省/自治区/直辖市、市、县)
CITY1 1 类型 AD_CITY1 CHAR 40 0 城市
STREET 1 类型 AD_STREET CHAR 60 0 街道
POST_CODE1 1 类型 AD_PSTCD1 CHAR 10 0 城市邮政编码
TEL_NUMBER 1 类型 AD_TLNMBR CHAR 30 0 电话号码: 拨区号 + 号码
MOB_NUMBER 1 类型 AD_TLNMBR CHAR 30 0 电话号码: 拨区号 + 号码
FAX_NUMBER 1 类型 AD_FXNMBR CHAR 30 0 传真号: 拨号+编号
SMTP_ADDR 1 类型 AD_SMTPADR CHAR 241 0 电子邮件地址
TAXNUM 1 类型 BPTAXNUM CHAR 20 0 业务合作伙伴税号
SEL 1 类型 CHAR1 CHAR 1 0 单字符标记

ICON_A 1 类型 CHAR10 CHAR 10 0 字符字段长度 = 10
REMARK 1 类型 CHAR255 CHAR 255 0 Char255
LFA1F 1 类型 CHAR1 CHAR 1 0 单字符标记
LFM1F 1 类型 CHAR1 CHAR 1 0 单字符标记
LFB1F 1 类型 CHAR1 CHAR 1 0 单字符标记
USEDTYPE 1 类型 CHAR1 CHAR 1 0 单字符标记
CAIGOU 1 类型 ZCAIGOU 0 0 SRM创建供应商主数据采购视图
GONGSI 1 类型 ZGONGSI 0 0 SRM创建供应商主数据公司视图

 

CAIGOU 结构:

 

EKORG 1 类型 EKORG CHAR 4 0 采购组织
WAERS 1 类型 WAERS CUKY 5 0 货币码
ZTERM1 1 类型 DZTERM CHAR 4 0 付款条件代码
WEBRE 1 类型 WEBRE CHAR 1 0 标识:基于收货的发票验证
LEBRE 1 类型 LEBRE CHAR 1 0 基于服务的发票校验标识
KALSK 1 类型 KALSK CHAR 2 0 计算方案组(供应商)
VERKF 1 类型 VERKF CHAR 30 0 发生质疑事件时的责任销售员
TELF1 1 类型 TELF1 CHAR 16 0 第一个电话号

 

GONGSI 结构:

BUKRS 1 类型 BUKRS CHAR 4 0 公司代码
AKONT 1 类型 AKONT CHAR 10 0 总帐中的统驭科目
ZTERM2 1 类型 DZTERM CHAR 4 0 付款条件代码
ZUAWA 1 类型 DZUAWA CHAR 3 0 根据分配号排序代码
DZWELS 1 类型 DZWELS CHAR 10 0 考虑的付款方式清单
REPRF 1 类型 REPRF CHAR 1 0 检查双重发票或信贷凭单的标志

 

FUNCTION zmm_fm_21_01.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN) TYPE  ZSLIFNR_SRM
*"  EXPORTING
*"     VALUE(OUT) TYPE  ZSLIFNR_SRM
*"     REFERENCE(GV_ERR) TYPE  CHAR1
*"----------------------------------------------------------------------
  DATA: l_bpartner       TYPE bapibus1006_head-bpartner,           "业务伙伴编码
        l_partn_cat      TYPE bapibus1006_head-partn_cat,          "业务伙伴类别
        l_partn_grp      TYPE bapibus1006_head-partn_grp,          "业务伙伴分组
        ls_central       TYPE bapibus1006_central,                 "一般 BP 数据,与业务伙伴类别无关
        ls_central_organ TYPE bapibus1006_central_organ,           "SAP BP: 组织数据的 BAPI 结构
        ls_address       TYPE bapibus1006_address,                 "SAP BP: 地址数据的 BAPI 结构
        lt_bapiadtel     LIKE bapiadtel  OCCURS WITH HEADER LINE"电话号码的 BAPI 结构(办公地址服务)
        lt_bapiadfax     LIKE bapiadfax  OCCURS WITH HEADER LINE"传真号码的 BAPI 结构(办公地址服务)
        lt_bapiadsmtp    LIKE bapiadsmtp OCCURS WITH HEADER LINE"电子邮件地址的 BAPI 结构(办公地址服务)
        ls_guid          TYPE bus000___i,                          "CBP: 一般数据和状态信息
        ls_custo         TYPE bus000_eew,                          "SAP BP: 传输用于 CI 包括 BP 扩展的结构
        lt_return        LIKE bapiret2   OCCURS WITH HEADER LINE"返回参数
        ls_return        LIKE bapiret2 "返回参数
        lt_return_tax    LIKE bapiret2   OCCURS WITH HEADER LINE,
        lt_return1       TYPE bus_bapiret2_t,
        ls_return1       LIKE LINE OF lt_return1.
  CLEAR:l_bpartner,l_partn_cat,l_partn_grp,ls_central,ls_central_organ,ls_address,
        lt_bapiadtel[],lt_bapiadfax[],lt_bapiadsmtp[],ls_guid,ls_custo,lt_return[],
        lt_return_tax[],lt_return1[],ls_return1.

  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@'.

*  LS_CENTRAL-TITLELETTER     = in-ZALTKN.    "旧供应商编号
  l_bpartner                 in-partner.   "业务伙伴号
  l_partn_cat                '2'.              "业务伙伴类型
  l_partn_grp                in-bu_group.  "业务伙伴分组

*  LS_CENTRAL-TITLE_KEY       = '0003'.           "称谓
  ls_central-title_key   in-title_key.
  ls_central-searchterm1 in-bu_sort1.  "检索项
  ls_central_organ-name1 in-name_org1"名称1
  ls_central_organ-name2 in-name_org2"名称2

*  LS_CENTRAL-SEARCHTERM2     = in-BU_SORT2.  "检索项

  ls_address-country         in-land1.     "国家
  ls_address-region          in-regio.     "地区
  ls_address-city            in-city1.     "城市
  ls_address-street          in-street.    "街道
  ls_address-postl_cod1      in-post_code1."邮编

*  CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
*    EXPORTING
*      INPUT            = in-LANGU
*    IMPORTING
*      OUTPUT           = LS_ADDRESS-LANGU     "语言
*    EXCEPTIONS
*      UNKNOWN_LANGUAGE = 1
*      OTHERS           = 2.
*  IF SY-SUBRC <> 0.
** Implement suitable error handling here
*  ENDIF.
  ls_address-langu  '1'.

  CLEAR lt_bapiadtel.
  lt_bapiadtel-country   = ls_address-country.
  lt_bapiadtel-std_no    'X'.
  lt_bapiadtel-telephone in-tel_number.    "电话
*  LT_BAPIADTEL-EXTENSION = in-TEL_EXTENS.    "电话-分机
  APPEND lt_bapiadtel.

  CLEAR lt_bapiadtel.
  lt_bapiadtel-country   = ls_address-country.
  lt_bapiadtel-std_no    'X'.
  lt_bapiadtel-r_3_user  '2'.                  "标识符:电话是移动电话
  lt_bapiadtel-telephone in-mob_number.    "移动电话
  APPEND lt_bapiadtel.

  CLEAR lt_bapiadfax.
  lt_bapiadfax-country   = ls_address-country.
  lt_bapiadfax-std_no    'X'.
  lt_bapiadfax-fax       in-fax_number.    "传真
*  LT_BAPIADFAX-EXTENSION = in-FAX_EXTENS.    "传真-分机
  APPEND lt_bapiadfax.

  CLEAR lt_bapiadsmtp.
*  LT_BAPIADSMTP-COUNTRY   = LS_ADDRESS-COUNTRY.
  lt_bapiadsmtp-std_no    'X'.
  lt_bapiadsmtp-e_mail    in-smtp_addr.     "E-mail
  APPEND lt_bapiadsmtp.

  CLEAR: lt_return1, lt_return1[].
  CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
    EXPORTING
      businesspartnerextern   = l_bpartner
      partnercategory         = l_partn_cat
      partnergroup            = l_partn_grp
      centraldata             = ls_central
*     CENTRALDATAPERSON       = LS_CENTRAL_PERSON
      centraldataorganization = ls_central_organ
*     CENTRALDATAGROUP        =
      addressdata             = ls_address
*     DUPLICATE_MESSAGE_TYPE  =
*     ACCEPT_ERROR            = ' '
    IMPORTING
      businesspartner         = l_bpartner
    TABLES
      telefondata             = lt_bapiadtel
      faxdata                 = lt_bapiadfax
*     TELETEXDATA             =
*     TELEXDATA               =
      e_maildata              = lt_bapiadsmtp
*     RMLADDRESSDATA          =
*     X400ADDRESSDATA         =
*     RFCADDRESSDATA          =
*     PRTADDRESSDATA          =
*     SSFADDRESSDATA          =
*     URIADDRESSDATA          =
*     PAGADDRESSDATA          =
*     ADDRESSNOTES            =
*     COMMUNICATIONNOTES      =
*     COMMUNICATIONUSAGE      =
*     TELEFONDATANONADDRESS   =
*     FAXDATANONADDRESS       =
*     TELETEXDATANONADDRESS   =
*     TELEXDATANONADDRESS     =
*     E_MAILDATANONADDRESS    =
*     RMLADDRESSDATANONADDRESS           =
*     X400ADDRESSDATANONADDRESS          =
*     RFCADDRESSDATANONADDRESS           =
*     PRTADDRESSDATANONADDRESS           =
*     SSFADDRESSDATANONADDRESS           =
*     URIADDRESSDATANONADDRESS           =
*     PAGADDRESSDATANONADDRESS           =
*     COMMUNICATIONNOTESNONADDRESS       =
*     COMMUNICATIONUSAGENONADDRESS       =
      return                  = lt_return
*     ADDRESSDUPLICATES       =
    .

  LOOP AT lt_return WHERE type 'A' OR type 'E'.
    gv_err 'X'.
    in-icon_a = gc_red.
    in-remark in-remark && lt_return-message.
    "EXIT.
  ENDLOOP.
  IF gv_err 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    " RETURN.
  ELSE.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   'X'
      IMPORTING
        return = ls_return.
    IF ls_return-type  'A' OR ls_return-type 'E'..
      gv_err 'X'.
      in-icon_a = gc_red.
      in-remark in-remark && ls_return-message.
    ENDIF.

    IF in-icon_a NE gc_red.
      in-icon_a   = gc_yellow.
      in-lfa1f 'X'.
      in-remark in-remark && '供应商基本视图扩展成功'.
    ENDIF.

  ENDIF.
  out in.





ENDFUNCTION.

posted @ 2020-05-08 09:32  東東東東  阅读(1716)  评论(0编辑  收藏  举报