进来遇到一个创建供应商的需求,由于在系统中关于供应商和客户的创建比较特殊,且没有相关函数进行创建,

找到一个类和方法来创建,类名:VMD_EI_API  方法名:MAINTAIN_DIRECT_INPUT,类似的

* 供应商表头
  ls_vendors-header-object_instance-lifnr = lv_vendor.  "供应商
  ls_vendors-header-object_task = 'M'.              "创建/更改
* 通用数据
  ls_vendors-central_data-central-data-stceg       = stceg.      "增值税登记号
  ls_vendors-central_data-central-data-ktokk       = '0001'.     "账户组
  ls_vendors-central_data-central-data-j_1kfrepre  = j_1kfrepre. "代表名称
  ls_vendors-central_data-central-datax-stceg      = 'X'.        "增值税登记号
  ls_vendors-central_data-central-datax-ktokk      = 'X'.        "账户组
  ls_vendors-central_data-central-datax-j_1kfrepre = 'X'.        "代表名称
* 电话
  ls_phone-contact-data-telephone = phone.
  APPEND ls_phone TO ls_vendors-central_data-address-communication-phone-phone.
  CLEAR ls_phone.
* 邮箱
  ls_smtp-contact-data-e_mail      = smtp.
  APPEND ls_smtp TO ls_vendors-central_data-address-communication-smtp-smtp.
  CLEAR ls_smtp.

ls_vendors-central_data-address-postal-data-name         = name.       "名称
  ls_vendors-central_data-address-postal-data-name_2       = name.       "名称
  ls_vendors-central_data-address-postal-data-sort1        = sort1.      "属性(SAP为搜索项 1)
  ls_vendors-central_data-address-postal-data-street       = street.     "街道/门牌号
  ls_vendors-central_data-address-postal-data-postl_cod1   = postl_cod1. "邮政编码
  ls_vendors-central_data-address-postal-data-city         = city.       "城市
  ls_vendors-central_data-address-postal-data-country      = country.    "国家
  ls_vendors-central_data-address-postal-data-region       = region.     "地区
  ls_vendors-central_data-address-postal-data-langu        = '1'.        "语言
  ls_vendors-central_data-address-postal-datax-name        = 'X'.
  ls_vendors-central_data-address-postal-datax-name_2      = 'X'.
  ls_vendors-central_data-address-postal-datax-sort1       = 'X'.
  ls_vendors-central_data-address-postal-datax-street      = 'X'.
  ls_vendors-central_data-address-postal-datax-postl_cod1  = 'X'.
  ls_vendors-central_data-address-postal-datax-city        = 'X'.
  ls_vendors-central_data-address-postal-datax-country     = 'X'.
  ls_vendors-central_data-address-postal-datax-region      = 'X'.
  ls_vendors-central_data-address-postal-datax-langu       = 'X'.
* 采购组织数据
  ls_purchasing-task = 'M'.
  ls_purchasing-data_key-ekorg = '1000'.
  ls_purchasing-data-waers = waers.
  ls_purchasing-data-verkf = verkf.
  ls_purchasing-data-telf1 = telf1.
  ls_purchasing-data-eikto = eikto.
  ls_purchasing-data-webre  = 'X'.
  ls_purchasing-datax-waers = 'X'.
  ls_purchasing-datax-verkf = 'X'.
  ls_purchasing-datax-telf1 = 'X'.
  ls_purchasing-datax-webre = 'X'.
  ls_purchasing-datax-eikto = 'X'.

IF requesttype = 'CREATE'.
    ls_functions-task = 'I'.
    ls_functions-data_key-parvw = 'BA'.
    ls_functions-data-defpa = ''.
    ls_functions-data-partner = lv_vendor.
    ls_functions-datax-defpa = 'X'.
    ls_functions-datax-partner = 'X'.
    APPEND ls_functions TO lt_functions.
    ls_functions-data_key-parvw = 'LF'.
    ls_functions-data-defpa = ''.
    ls_functions-data-partner = lv_vendor.
    ls_functions-datax-defpa = 'X'.
    ls_functions-datax-partner = 'X'.
    APPEND ls_functions TO lt_functions.
    ls_functions-data_key-parvw = 'RS'.
    ls_functions-data-defpa = ''.
    ls_functions-data-partner = lv_vendor.
    ls_functions-datax-defpa = 'X'.
    ls_functions-datax-partner = 'X'.
    APPEND ls_functions TO lt_functions.
    ls_purchasing-functions-functions = lt_functions.
  ENDIF.
  APPEND ls_purchasing TO ls_vendors-purchasing_data-purchasing.
  CLEAR ls_purchasing.

APPEND ls_vendors TO lt_vendors.
  CLEAR ls_vendors.
  ls_main-vendors = lt_vendors.

* 创建或者更新供应商
  CALL METHOD vmd_ei_api=>maintain_direct_input
    EXPORTING
      is_master_data           = ls_main
    IMPORTING
      es_master_data_correct   = l1
      es_message_correct       = l2
      es_master_data_defective = l3
      es_message_defective     = l4.
  IF l4-is_error = ''.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    return_status = 'S'.
    IF requesttype = 'CREATE'.
      return_value = '供应商创建成功!'.
    ELSEIF requesttype = 'UPDATE'.
      return_value = '供应商更新成功!'.
    ENDIF.
    sapcode = lv_vendor.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    return_status = 'F'.
    CLEAR ls_message.
    READ TABLE l4-messages INTO ls_message WITH KEY type = 'E'.
    IF sy-subrc = 0.
      MESSAGE ID ls_message-id              
TYPE ls_message-type              
NUMBER ls_message-number              
WITH  ls_message-message_v1                    ls_message
-message_v2                    ls_message
-message_v3                    ls_message
-message_v4              
INTO return_value.    
ENDIF.  
ENDIF.

 
 

SAP供应商和客户的创建的更多相关文章

  1. 【MM系列】SAP S/4 HANA BP创建客户/供应商的一点想法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP S/4 HANA BP创建客 ...

  2. 第二十篇:不为客户连接创建子进程的并发回射服务器(poll实现)

    前言 在上文中,我使用select函数实现了不为客户连接创建子进程的并发回射服务器( 点此进入 ).但其中有个细节确实有点麻烦,那就是还得设置一个client数组用来标记select监听描述符集中被设 ...

  3. 第十九篇:不为客户连接创建子进程的并发回射服务器(select实现)

    前言 在此前,我已经介绍了一种并发回射服务器实现.它通过调用fork函数为每个客户请求创建一个子进程.同时,我还为此服务器添加了自动消除僵尸子进程的机制.现在请想想,在客户量非常大的情况下,这种为每个 ...

  4. 不为客户连接创建子进程的并发回射服务器( poll实现 )

    前言 在上文中,我使用select函数实现了不为客户连接创建子进程的并发回射服务器( 点此进入 ).但其中有个细节确实有点麻烦,那就是还得设置一个client数组用来标记select监听描述符集中被设 ...

  5. 不为客户连接创建子进程的并发回射服务器( select实现 )

    前言 在此前,我已经介绍了一种并发回射服务器实现( 点此进入 ).它通过调用fork函数为每个客户请求创建一个子进程.同时,我还为此服务器添加了自动消除僵尸子进程的机制.现在请想想,在客户量非常大的情 ...

  6. SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的

    大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...

  7. SAP HANA studio 创建分析视图

    [Step By Step]SAP HANA中创建分析视图(Analytic View) 1. 在Modeler视图中点击新建Analytic View 2. 设置分析视图的属性 Name: 分析视图 ...

  8. SAP Cloud Platform integration上创建一个最简单的iFlow

    登录SAP CPI控制台,点击这个铅笔图标进入工作区域: 选择一个已经存在的content package: 在这个content package里创建一个新的iFlow: 默认生成的iFlow模型如 ...

  9. SAP S/4HANA销售订单创建时,会自动触发生产订单的创建

    这个自动触发的过程是怎么实现的? 使用下面的代码创建一个销售订单: DATA: ls_header TYPE bapisdhd1, ls_headerx TYPE bapisdhd1x, lt_bap ...

随机推荐

  1. VS中遇到的奇怪问题

    8.错误 C2440: “static_cast”: 无法从“void (__thiscall CView::* )(UINT,LONG)”转换为“LRESULT (__thiscall CWnd:: ...

  2. Asp.net Vnext ModelBinding

    Model Binding 本文已经同步到<Asp.net Vnext 系列教程 >中] Model binding(绑定)简单来说就是通过遍历ValueProvider(值提供者)获取的 ...

  3. android 6.0权限处理

    在模拟器测试好的程序,运行在mate8上面一直崩,经多方查探才找到以下博文,方法还没掌握,但也算是找到原因了: http://***/article/android-6-0-runtime-permi ...

  4. 【转】MySQL5安装的图解(mysql-5.0.27-win32.zip)

    转载地址:http://blog.csdn.net/xssh913913/article/details/1713182 MySQL5安装的图解(最新版) http://hi.baidu.com/yu ...

  5. maven 手动安装jar到仓库的命令

    mvn install:install-file -DgroupId=com.sun -DartifactId=tools -Dversion=1.6.0 -Dpackaging=jar -Dfile ...

  6. 测试-Unity修改权重

    以下内容仅为猜想,只进行了初步验证 FBX骨骼中包含所绑定的顶点索引,导入Unity后,Unity会把层级树保存起来,然后实例化的时候映射过去 编辑器下权重信息本身不在fbx文件的meta里,不可修改 ...

  7. Poj(2253),Dijkstra松弛条件的变形

    题目链接:http://poj.org/problem?id=2253 题意: 给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通 ...

  8. Java多线程的三种实现方式

    java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...

  9. 客服端调用自定义宿主的WCF报错"没有终结点在侦听可以接受消息的http://localhost:8085/mex。这通常是由于不正确的地址或者 SOAP 操作导致的错误"的解决方案。

    没有终结点在侦听可以接受消息的http://localhost:8085/mex.这通常是由于不正确的地址或者 SOAP 操作导致的错误. 这个错误是由于没有启动元数据交换终结点(MEX)导致的.在宿 ...

  10. InputStream和Reader区别

    InputStream,OutputStream  前者为字节输入流,后者为字节输出流.Reader   Writer  前者为字符输入流,后者为字符输出流. 四个均为抽象类.fileInputStr ...