创建供应商函数,

需要考虑是 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 .
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 . 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 .
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. - E.G.Mellodew. - UK. Sap Release

ZFI_VENDOR_CREATE的更多相关文章

随机推荐

  1. SpringCloud系列十四:实现容错的手段

    1. 回顾 前面已用Eureka实现了微服务的注册与发现,Ribbon实现了客户端侧的负载均衡,Feign实现了声明式的API调用. 2. 实现容错的手段 如果服务提供者响应非常慢,那么消费者对提供者 ...

  2. Spring Boot(五):Spring Boot的启动器Starter大全及自定义Starter

    现有启动器Starter目录 Spring Boot应用启动器基本的一共有44种,具体如下: 1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和 ...

  3. DMA (直接存储器访问)

    DMA (直接存储器访问) 编辑 DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载.否 ...

  4. Qt 推断一个IP地址是否有效

    QHostAddress test; if (!test.setAddress("111.111.111.1")) { ui->statusBar->showMessa ...

  5. C# 泛型方法

    泛型方法是使用类型参数声明的方法,如下所示: static void Swap<T>(ref T lhs, ref T rhs) { T temp; temp = lhs; lhs = r ...

  6. Python内置函数之bytes()

    该函数是一个类对象: class bytes([source[,encoding[,errors]]]) 返回值为字节对象,当第一个参数为字符串时,必须提供第二个参数,第二个参数为编码类型的字符串. ...

  7. 在python中Flask配置服务

    from flask import Flask, request from data_util import UtilsLTPTranslate import json model = UtilsLT ...

  8. error: not found: value sc

    [问题] 解压spark的tar包后,执行bin/spark-shell,执行val lines=sc.textFile("README.md")时,抛错error: not fo ...

  9. github桌面工具commit不了解决

    这样发现github上还是空文件,  因为要重新添加过 1.  git add -A  添加所有文件 2. git commit -m "xxx" 3.  git push -u ...

  10. Quartz定时任务学习(三)属性文件和jar

    以下是我在应用的的一个基本配置: #---------调度器属性----------------org.quartz.scheduler.instanceName = TestSchedulerorg ...