zoukankan      html  css  js  c++  java
  • ZFI_VENDOR_CREATE

    创建供应商函数,

    需要考虑是 G_TASK = I /U /M 

    FUNCTION zfyj_vendor_create.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"  IMPORTING
    *"     REFERENCE(IS_DATA) TYPE  ZSYJ_VENDOR
    *"  EXPORTING
    *"     REFERENCE(EX_STATU) TYPE  CHAR1
    *"     REFERENCE(EX_MSG) TYPE  MSG
    *"     REFERENCE(EX_LIFNR) TYPE  LIFNR
    *"  TABLES
    *"      IT_BANK STRUCTURE  ZSYJ_BANKDATA
    *"----------------------------------------------------------------------
    
    *----------------------------------------------------------------------*
    *             Internal Table & Work Area
    *----------------------------------------------------------------------*
      DATA:ls_bank LIKE LINE OF it_bank.
    
      DATA:ls_main         TYPE vmds_ei_main,
           ls_cvismesg     TYPE cvis_message,
    **消息
           lt_msg          TYPE bapiret2_t,
           ls_msg          TYPE bapiret2,
    **主数据
           lt_vend         TYPE vmds_ei_extern_t,
           ls_vend         TYPE vmds_ei_extern,
    **银行数据
           lt_bankdetails  TYPE cvis_ei_bankdetail_t,
           ls_bankdetails  TYPE cvis_ei_cvi_bankdetail, "CVIS_EI_BANKDETAIL.
    ***公司代码
           lt_company      TYPE vmds_ei_company_t,
           ls_company      TYPE vmds_ei_company, "CVIS_EI_BANKDETAIL.
    **电话
           lt_phone        TYPE cvis_ei_phone_t,
           ls_phone        TYPE cvis_ei_phone_str,
    **传真
           lt_fax          TYPE cvis_ei_fax_t,
           ls_fax          TYPE cvis_ei_fax_str,
    **联系人
           lt_pernr        TYPE vmds_ei_contacts_t,
           ls_pernr        TYPE vmds_ei_contacts,
    
           ls_main1        TYPE vmds_ei_main,
           ls_main2        TYPE vmds_ei_main,
           ls_cvismesg1    TYPE cvis_message,
           lt_get          TYPE vmds_ei_extern_t,
           ls_get          TYPE vmds_ei_extern.
    *----------------------------------------------------------------------*
    *             CONSTANTS
    *----------------------------------------------------------------------*
      CONSTANTS:c_update TYPE c VALUE 'M',
                c_create TYPE c VALUE 'I'."创建
    
    *----------------------------------------------------------------------*
    *             DATA
    *----------------------------------------------------------------------*
      DATA:g_mode  TYPE c.
      DATA:g_lfb1  TYPE c.
      DATA:ls_lfa1 TYPE lfa1.
    *----------------------------------------------------------------------*
    * VMD_EI_OBJECT_TASK 外部接口:更改对象标识
    * I    创建
    *  U  更改
    *  M  创建/更改
    *  C  当前状态
    *----------------------------------------------------------------------*
    
    
    
    *&S1.检查是否传参
      IF is_data IS INITIAL.
        ex_statu = 'E'.
        ex_msg   = '没有传入参数'(e01).
        RETURN.
      ENDIF.
    *  CALL FUNCTION 'BUFFER_REFRESH_ALL'.
    
    *&基础数据是否创建
      SELECT SINGLE *
               INTO ls_lfa1
               FROM lfa1
              WHERE lifnr = is_data-lifnr.
      IF sy-subrc EQ 0.
        g_mode = 'M'.
      ELSE.
        g_mode = 'I'.
      ENDIF.
    
    *&s1.主数据
      ls_vend-header-object_task = g_mode.
      ls_vend-header-object_instance-lifnr    = is_data-lifnr.
    
      ls_vend-central_data-central-data-ktokk = is_data-ktokk. "帐户组
      ls_vend-central_data-central-data-actss = is_data-actss. "状态
      ls_vend-central_data-central-data-fityp = is_data-fityp. "税类型
      ls_vend-central_data-central-data-stceg = is_data-stceg. "税号
    *LS_VEND-CENTRAL_DATA-CENTRAL-DATA-STCDT = '01'."税号类型
      ls_vend-central_data-central-datax-ktokk = 'X'.
      ls_vend-central_data-central-datax-actss = 'X'.
      ls_vend-central_data-central-datax-fityp = 'X'.
      ls_vend-central_data-central-datax-stceg = 'X'.
    *s2.地址数据
      ls_vend-central_data-address-task = g_mode.
      ls_vend-central_data-address-postal-data-title   = is_data-title. "‘3’公司
      ls_vend-central_data-address-postal-data-name    = is_data-name1. "名称 1
      ls_vend-central_data-address-postal-data-sort1   = is_data-sort1. "搜索项 1
      ls_vend-central_data-address-postal-data-sort2   = is_data-sort2. "搜索项 2
      ls_vend-central_data-address-postal-data-langu   = is_data-langu.
      ls_vend-central_data-address-postal-data-country = is_data-land1.
      ls_vend-central_data-address-postal-data-region  = ''.            "地区(是否默认值)
      ls_vend-central_data-address-postal-data-street  = is_data-stras. "地址
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT1    = 'LSI'.  "检索项1
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT2    = 'LSI'.  "检索项2
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATA-HOUSE_NO = 'California'."门牌号
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATA-POSTL_COD1 = '466303'.
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATA-CITY   = '青岛'.
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATA-REGION = '120'.
    *&sign
      ls_vend-central_data-address-postal-datax-title   = 'X'.
      ls_vend-central_data-address-postal-datax-name    = 'X'.
      ls_vend-central_data-address-postal-datax-langu   = 'X'.
      ls_vend-central_data-address-postal-datax-country = 'X'.
      ls_vend-central_data-address-postal-datax-street  = 'X'.
      ls_vend-central_data-address-postal-datax-sort1 = 'X'.
      ls_vend-central_data-address-postal-datax-sort2 = 'X'.
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-HOUSE_NO = 'X'.
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-POSTL_COD1 = 'X'.
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-CITY   = 'X'.
    *LS_VEND-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-REGION = 'X'.
    
    * break c_xiangc.
      DATA:lt_lfbk LIKE STANDARD TABLE OF lfbk.
      CLEAR:lt_lfbk.
      SELECT * INTO TABLE lt_lfbk
        FROM lfbk
       WHERE lifnr = is_data-lifnr.
      IF sy-subrc EQ 0.
    
        DELETE lfbk FROM TABLE lt_lfbk.
        COMMIT WORK.
      ENDIF.
    *&s3. 银行数据
      LOOP AT it_bank INTO ls_bank.
        ls_bankdetails-task = g_mode.
        ls_bankdetails-data_key-banks = ls_bank-banks."国家代码
        ls_bankdetails-data_key-bankl = ls_bank-bankl."银行编号
        ls_bankdetails-data_key-bankn = ls_bank-bankn."银行帐户号码
    
        ls_bankdetails-data-koinh = ls_bank-koinh.    "银行户主
    
        ls_bankdetails-datax-koinh = 'X'.             "银行户主
    *    ls_bankdetails-datax-banks = 'X'.             "银行户主
    *    ls_bankdetails-datax-bankn = 'X'.             "银行户主
        APPEND ls_bankdetails TO lt_bankdetails.
        ls_vend-central_data-bankdetail-bankdetails = lt_bankdetails."外部界面:银行详细数据
      ENDLOOP.
    *&s4.会计信息+支付交易
    *AKONT 统驭科目:2202020000、
    *MINDK 少数标识:T0、
    *CERDT 证书日期:默认创建日期、
    *ZTERM 付款条件(固定值未定)、
    *ZWELS 付款方式默认T。
    
    *  ls_vend-COMPANY_DATA-object_task = G_MODE.
    *  ls_vend-header-object_instance-lifnr    = is_data-lifnr.
    *  ls_vend-central_data-central-data-ktokk = is_data-ktokk. "帐户组
    *  ls_vend-central_data-central-data-actss = is_data-actss. "状态
    *  ls_vend-central_data-central-data-fityp = is_data-fityp. "税类型
    *  ls_vend-central_data-central-data-stceg = is_data-stceg. "税号
    **LS_VEND-CENTRAL_DATA-CENTRAL-DATA-STCDT = '01'."税号类型
    *  ls_vend-central_data-central-datax-ktokk = 'X'.
    *  ls_vend-central_data-central-datax-actss = 'X'.
    *  ls_vend-central_data-central-datax-fityp = 'X'.
    *  ls_vend-central_data-central-datax-stceg = 'X'.
    
      ls_company-task = g_mode.
      ls_company-data_key-bukrs = is_data-bukrs.
      ls_company-data-akont = is_data-akont."统驭科目
      ls_company-data-mindk = is_data-mindk."少数标识
      ls_company-data-cerdt = is_data-cerdt."证书日期
      ls_company-data-zterm = is_data-zterm."付款条件
      ls_company-data-zwels = is_data-zwels."付款方式
    
      ls_company-datax-akont = 'X'.
      ls_company-datax-mindk = 'X'.
      ls_company-datax-cerdt = 'X'.
      ls_company-datax-zterm = 'X'.
      ls_company-datax-zwels = 'X'.
      APPEND ls_company TO lt_company.
      ls_vend-company_data-company = lt_company."外部界面:银行详细数据
    
    **&s4.电话
    *  ls_phone-contact-task = G_MODE.
    *  ls_phone-contact-data-telephone = in_data-telf1."拨区号 + 号码
    *  append ls_phone to lt_phone.
    *  ls_vend-central_data-address-communication-phone-phone = lt_phone."外部界面:银行详细数据
    *
    *  ls_phone-contact-data-telephone = in_data-telf2."拨区号 + 号码
    *  ls_phone-contact-data-r_3_user  =  '2'.         "电话类型标识,‘2’移动电话
    *  append ls_phone to lt_phone.
    *  ls_vend-central_data-address-communication-phone-phone = lt_phone.
    **&s5.传真
    *  ls_fax-contact-task = 'M'.
    *  ls_fax-contact-data-fax = in_data-telfx."传真号: 拨号+编号
    *  ls_fax-contact-data-country = ''.       "传真号码的国家
    *  append ls_fax to lt_fax.
    *  ls_vend-central_data-address-communication-fax-fax = lt_fax.
    **&s6.联系人(error)
    *  ls_pernr-task = G_MODE.
    *  ls_pernr-address_type_3-task = 'i'."'m'.
    *  ls_pernr-address_type_3-postal-data-fullname = in_data-namel."联系人名称/fullname
    **ls_pernr-address_type_3-postal-data-firstname = '二小'."联系人名称/fullname
    **ls_pernr-address_type_3-postal-data-lastname  = '王'.  "联系人名称/fullname
    **ls_pernr-address_type_3-postal-data-title_p   = '0001'.  "地址关键字的表格
    **ls_pernr-address_type_3-postal-datax-fullname = 'x'."联系人名称/fullname
    **ls_pernr-address_type_3-postal-datax-firstname = 'x'.  "地址关键字的表格
    **ls_pernr-address_type_3-postal-datax-lastname  = 'x'.  "地址关键字的表格
    **append ls_pernr to lt_pernr.
    * ls_vend-central_data-contact-contacts = lt_pernr.
    
      APPEND ls_vend TO lt_vend.
      ls_main-vendors = lt_vend."供应商总数据
    
    **Create vendor
      CALL METHOD vmd_ei_api=>maintain_bapi
        EXPORTING
    *       IV_TEST_RUN              = P_TEST
          iv_collect_messages      = 'X'
          is_master_data           = ls_main
        IMPORTING
          es_master_data_correct   = ls_main1
          es_message_correct       = ls_cvismesg1
          es_master_data_defective = ls_main2
          es_message_defective     = ls_cvismesg.
    
    **get message
      lt_msg = ls_cvismesg-messages.
      lt_get[] = ls_main1-vendors.
    
      LOOP AT lt_msg INTO ls_msg WHERE type = 'E' OR type = 'A'.
        ex_statu = 'E'.
        ex_msg  = ls_msg-message.
      ENDLOOP.
    **return
      IF ex_statu NE 'E'.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
        READ TABLE lt_get INTO ls_get INDEX 1.
        ex_lifnr = ls_get-header-object_instance-lifnr.
        ex_statu = 'S'.
        ex_msg  = '创建供应商成功!'.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    * ROLLBACK WORK.
    * ex_statu = 'E'.
    * ex_msg  = '创建供应商失败!'.
      ENDIF.
    
    ENDFUNCTION.
    
    ----------------------------------------------------------------------------------
    Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 701
  • 相关阅读:
    首页调单个产品分类的推荐产品,最新产品和热卖商品
    ecshop模板<! TemplateBeginEditable name="左上角主区域" >用法
    复制DataTable数据到新DataTable
    定时任务时间与当前时间比较的方法
    批量删除文件夹下包含指定字段的文件
    SQL 字符串去除空格函数
    Javascript的IE和Firefox(火狐)兼容性的常用例子
    查询表某列的加权平均值
    Jquery实现页面定时跳转
    Date.parse Firefox返回Nan的解决办法
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6839103.html
Copyright © 2011-2022 走看看