转自http://blog.sina.com.cn/s/blog_1647b3eff0102wi32.html

1.创建销售订单使用的BAPI

BAPI_SALESORDER_CREATEFROMDAT2

但是  BUSINESS OBJECT限制为 BUS2032

使用FM:

DATA           LV_OBJTYPE TYPE OJ_NAME .

LS_HEADER-SD_DOC_CAT为销售订单类型,即类型为:VBAK-VBTYP

CALL FUNCTION 'SD_OBJECT_TYPE_DETERMINE'
    EXPORTING
      I_DOCUMENT_TYPE   = LS_HEADER-SD_DOC_CAT
    IMPORTING
      E_BUSINESS_OBJECT = LV_OBJTYPE
    EXCEPTIONS
      OTHERS            = 1.

如果LV_OBJTYPE = BUS2032

则可以使用BAPI_SALESORDER_CREATEFROMDAT2

如果其他的业务对象则使用FM: SD_SALESDOCUMENT_CREATE创建销售订单

2.关于销售订单的增强使用

参数 EXTENSIONIN

举个例子,例如VBKD的数据  VBKD- TRATY  VBKD- TRMTYP

大家应该可以看出来VBKD 数据中, 虽然分为vbeln posnr  但是一般只会使用vbeln字段,posnr 为空,

此时,VBKD 数据 一般都可以在bapi参数

ORDER_HEADER_IN 找到,但是VBKD-   TRATY   却在bapi 中没有.

所以我们需要做增强.

首先 我们要确认使用 BAPE_VBAK 和BAPE_VBAKX两个结构

LS_BAPIPAREX-STRUCTURE = 'BAPE_VBAK'.

    LS_BAPE_VBAK-TRATY   = LS_BAPISDHD1_VBKD-TRATY.
    LS_BAPE_VBAK-VSART   = LS_BAPISDHD1_VBKD-VSART.
    LS_BAPE_VBAK-TRMTYP  = LS_BAPISDHD1_VBKD-TRMTYP.
    LS_BAPE_VBAK-SDABW   = LS_BAPISDHD1_VBKD-SDABW.

    LS_BAPIPAREX-VALUEPART1 = LS_BAPE_VBAK.

    APPEND LS_BAPIPAREX TO ET_BAPIPAREX.

    LS_BAPIPAREX-STRUCTURE = 'BAPE_VBAKX'.
    LS_BAPE_VBAKX-TRATY    = CNS_X.
    LS_BAPE_VBAKX-VSART    = CNS_X.
    LS_BAPE_VBAKX-TRMTYP   = CNS_X.
    LS_BAPE_VBAKX-SDABW    = CNS_X.

    LS_BAPIPAREX-VALUEPART1 = LS_BAPE_VBAKX.

其次:VBAKKOZ 需要增加TRATY . VBAKKOZX 也添加相应的控制字段TRATY type BAPIUPDATE

然后请注意,

ORDER_HEADER_INX-UPDATEFLAG = SPACE . !! 这点很重要.详细逻辑请找:

SE38:FV45KFAK_VBAK_FUELLEN_VBAKKOM

补充:2016-09-27

模拟创建过去的销售订单的时候,交货单也应该交货在过去,但是出现报错.

认证研究了逻辑发现如下情况

首先 (数据库表TVAK)

1.配置要求



此字段逻辑:

其次 BAPISCHDL 中 有四个字段需要注意  EDATU MBDAT LDDAT WADAT 都要赋值过去时间

这样创建的销售订单vbep 数据 才会没有问题.

交货单选过去日期才会成功!

创建SO bapi的更多相关文章

  1. F-02 创建财务凭证BAPI

    **.获取抬头参数, documentheader **.项目参数 accountgl = lt_acgl"G/L account item accountreceivable = lt_a ...

  2. [SAP ABAP开发技术总结]业务对象和BAPI

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. ABAP BAPI 复制标准项目模板实现项目立项

    一.复制标准项目模板实现项目立项 因为CJ20N录屏存在困难,所以想通过BDC实现复制项目模板创建项目立项行不通,因此需要通过BAPI解决. 因为项目立项包含:项目定义.WBS.网络.作业,因此需要分 ...

  4. 业务对象(BO)设计

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. SAP BAPI创建批次 为保存内部对象号

    使用BAPI:BAPI_BATCH_CREATE 创建批次时,能够保存成功,但是MCH1表和KSSK表中没有内部对象号. 无奈,查找源码. 最后在BAPI中调用的这个函数这里找到了问题.此处kzcla ...

  6. 【MM系列】SAP 根据采购订单创建外向交货单的BAPI

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 根据采购订单创建外向交货单的 ...

  7. 【FICO系列】SAP 创建会计凭证(FB01)的BAPI

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP 创建会计凭证(FB01) ...

  8. 【SD系列】SAP SD模块-创建供应商主数据BAPI

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD模块-创建供应商主数据B ...

  9. SAP S4系统创建Customer和Vendor的BAPI

    对应的BAPI是:RFC_CVI_EI_INBOUND_MAIN SAP 又调皮了,又不安常理出牌!

随机推荐

  1. iOS开发者证书申请过程

    真机测试前准备工作:1.苹果的MAC一台.如果你用的是***不知道可不可以,反正我没用过...一般公司都会给你配开发工具的.2.iphone手机一部.(本人纯屌丝,用的iphone4)3.开发者账号. ...

  2. MFC之鼠标消息处理

    今天学了点MFC的鼠标处理.用鼠标处理编写了一个小程序.在文本窗口内,绘制鼠标移动轨迹,当按下CTRL键时鼠标将变成十字,并且填充为蓝色的矩形. 第一步:建立单文的MFC程序,添加类CMouseDem ...

  3. Ubuntu 使用Gparted工具扩大第一分区方法步骤

    Ubuntu 使用Gparted工具扩大第一分区方法步骤 环境:vmware9.01 .ubuntu12.04 需要的工具: 1.U盘,Universal-USB-Installer-1.9.6.4. ...

  4. codeblocks个性化配置

    1.general setting设置默认字体大小设置控制台字体大小:"Settings -> Environment -> View -> Message logs' f ...

  5. String.format介绍

    java类中提供的一种方法:String.format(String format, Object ... args) 提供字符串格式化功能: 不同转换符实现不同数据类型到字符串的转换: %s--字符 ...

  6. DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解

    关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  7. 执行时关闭标识位 FD_CLOEXEC 的作用

    首先先回顾 apue 中对它的描述: ① 表示描述符在通过一个 exec 时仍保持有效(书P63,3.14节 fcntl 函数,在讲 F_DUPFD 时顺便提到) ② 对打开文件的处理与每个描述符的执 ...

  8. Angular JS的依赖注入

    依赖注入是一个在组件中给出的替代了硬的组件内的编码它们的依赖关系的软件设计模式.这减轻一个组成部分,从定位的依赖,依赖配置.这有助于使组件可重用,维护和测试. AngularJS提供了一个至高无上的依 ...

  9. hbase数据迁移-HDFS拷贝

    1.把数据表test从hbase下拷出 hdfs dfs -get /hbase/data/default/test /home/hadoop/hbase/test 2.文件放到新集群的系统上 scp ...

  10. 关于启动ubuntu中的nfs启动问题

    嵌入式开发,如果使用nfs挂载来启动内核和文件系统,这样便于调试文件系统和驱动,则首先要保证ubuntu开启nfs服务, 执行以下命令安装nfs服务,安装后自动运行 sudo apt-get inst ...