创建销售订单的函数有3个:

BAPI_SALESORDER_CREATEFROMDAT2
BAPI_CUSTOMERRETURN_CREATE
SD_SALESDOCUMENT_CREATE

前面2个BAPI都是调用的第三个函数SD_SALESDOCUMENT_CREATE,区别在于里面的业务类型是固定的,BAPI_SALESORDER_CREATEFROMDAT2限制了业务对象为BUS2032,创建退货类型的销售订单时会提示BUS2032与H类型不匹配,需要使用函数SD_SALESDOCUMENT_CREATE来创建。

DATA: lv_msg(100) TYPE c,ls_kna1     TYPE kna1,lv_kunnr    TYPE kna1-kunnr,ls_zsdt005  TYPE zsdt005,lv_vbeln    TYPE bapivbeln-vbeln,lv_posnr    TYPE vbap-posnr,ls_edit     TYPE lvc_s_styl,lt_edit     TYPE lvc_t_styl.DATA: ls_head_in        TYPE bapisdhd1,ls_head_inx       TYPE bapisdhd1x,lt_items_in       TYPE TABLE OF bapisditm,ls_items_in       TYPE bapisditm,lt_items_inx      TYPE TABLE OF bapisditmx,ls_items_inx      TYPE bapisditmx,lt_partners       TYPE TABLE OF bapiparnr,ls_partners       TYPE bapiparnr,lt_schedules_in   TYPE TABLE OF bapischdl,ls_schedules_in   TYPE bapischdl,lt_schedules_inx  TYPE TABLE OF bapischdlx,ls_schedules_inx  TYPE bapischdlx,lt_conditions_in  TYPE TABLE OF bapicond,ls_conditions_in  TYPE bapicond,lt_conditions_inx TYPE TABLE OF bapicondx,ls_conditions_inx TYPE bapicondx,lt_extensionin    TYPE TABLE OF bapiparex,ls_extensionin    TYPE bapiparex,lt_text           TYPE TABLE OF bapisdtext,ls_text           TYPE bapisdtext,lt_return         TYPE TABLE OF bapiret2,ls_return         TYPE bapiret2,lt_kortab         TYPE TABLE OF mdvu,ls_kortab         TYPE mdvu.DATA: ls_bape_vbak  TYPE bape_vbak, "屏幕增强字段ls_bape_vbakx TYPE bape_vbakx.DATA: ls_bape_vbap  TYPE bape_vbap, "屏幕增强字段ls_bape_vbapx TYPE bape_vbapx.*"----------------------------------------------------------------------
* 销售订单抬头数据
*"----------------------------------------------------------------------CLEAR gs_data.READ TABLE gt_data INTO gs_data WITH KEY zsel = 'X' kunnr = pv_kunnr."客户编号lv_kunnr = gs_data-kunnr.ls_head_in-purch_no_c = gs_data-remark.        "客户采购订单编号ls_head_in-purch_no_s = gs_data-bookingid.       "运达方采购订单编号    PO号ls_head_in-doc_type = 'ZJR'.          "销售凭证类型ls_head_in-sales_org = '2016'.         "销售组织ls_head_in-distr_chan = '10'.        "分销渠道ls_head_in-division = '20'.          "产品组ls_head_in-doc_date = sy-datum.              "凭证日期,创建日期ls_head_in-created_by = sy-uname.            "订单创建人ls_head_in-req_date_h = sy-datum.           "交货日期ls_head_in-price_date = sy-datum.     "定价日期和汇率ls_head_in-currency = 'CNY'.  "SD 凭证货币TRANSLATE ls_head_in-currency TO UPPER CASE."销售订单抬头字段确认ls_head_inx-purch_no_c = 'X'.                "采购订单编号ls_head_inx-purch_no_s = 'X'.                "采购订单编号ls_head_inx-doc_type = 'X'.                  "销售凭证类型ls_head_inx-sales_org = 'X'.                 "销售组织ls_head_inx-distr_chan = 'X'.                "分销渠道ls_head_inx-division = 'X'.                  "产品组ls_head_inx-doc_date = 'X'.                  "凭证日期ls_head_inx-req_date_h = 'X'.                "交货日期ls_head_inx-price_date = 'X'.      "定价日期和汇率ls_head_inx-currency = 'X'.***合作伙伴CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGinput  = lv_kunnrIMPORTINGoutput = lv_kunnr.ls_partners-partn_role = 'AG'.     "售达方ls_partners-partn_numb = lv_kunnr.APPEND ls_partners TO lt_partners.CLEAR ls_partners.ls_partners-partn_role = 'WE'.      "送达方ls_partners-partn_numb = lv_kunnr.ls_partners-country = 'CN'.CLEAR ls_kna1.SELECT SINGLE * INTO ls_kna1 FROM kna1 WHERE kunnr =  lv_kunnr.ls_partners-name = ls_kna1-name1.ls_partners-postl_code = ls_kna1-pstlz.ls_partners-city = ls_kna1-ort01.ls_partners-langu = ls_kna1-spras."取地址信息CLEAR ls_zsdt005.SELECT SINGLE *FROM zsdt005INTO ls_zsdt005WHERE lgortno = gs_data-lgortno.IF sy-subrc = 0.CONCATENATE ls_zsdt005-streetls_zsdt005-str_suppl1ls_zsdt005-str_suppl2ls_zsdt005-str_suppl3INTO ls_partners-street.       "送达地址ENDIF.ls_partners-region = ls_zsdt005-region. "地区ls_partners-transpzone = ls_zsdt005-transpzone."运输区域TRANSLATE ls_partners-transpzone TO UPPER CASE.APPEND ls_partners TO lt_partners.CLEAR ls_partners.ls_partners-partn_role = 'RE'.     "收票方ls_partners-partn_numb = lv_kunnr.APPEND ls_partners TO lt_partners.CLEAR ls_partners.ls_partners-partn_role = 'RG'.       "付款方ls_partners-partn_numb = lv_kunnr.APPEND ls_partners TO lt_partners.CLEAR ls_partners.** 抬头增强CLEAR: ls_extensionin,ls_bape_vbak.ls_extensionin-structure = 'BAPE_VBAK'.ls_bape_vbak-zppdy = 'CD01'.      "品牌单元ls_extensionin+30(960) = ls_bape_vbak.APPEND ls_extensionin TO lt_extensionin.CLEAR: ls_extensionin,ls_bape_vbakx.ls_extensionin-structure = 'BAPE_VBAKX'.ls_bape_vbakx-zppdy = 'X'.ls_extensionin+30(960) = ls_bape_vbakx.APPEND ls_extensionin TO lt_extensionin.*"----------------------------------------------------------------------
* 销售订单行项目数据
*"----------------------------------------------------------------------"可用性检查DATA:lv_meins   TYPE mara-meins,lv_flag    TYPE bapicm61v-diafl,lt_wmdvsx  TYPE TABLE OF bapiwmdvs,ls_wmdvsx  TYPE bapiwmdvs,lt_zsdt007 TYPE TABLE OF zsdt007,ls_zsdt007 TYPE zsdt007,lt_wmdvex  TYPE TABLE OF bapiwmdve.CLEAR :lv_msg.LOOP AT gt_data INTO gs_data WHERE cfmmg > 0.lv_posnr = lv_posnr + 10."记录日志ls_zsdt007-posnr    = lv_posnr.ls_zsdt007-thitemid = gs_data-thitemid.ls_zsdt007-thmno    = gs_data-thmno.ls_zsdt007-bookingid    = gs_data-bookingid.APPEND ls_zsdt007 TO lt_zsdt007.CLEAR ls_zsdt007.CLEAR :ls_items_in,lv_meins.SELECT SINGLE meins INTO lv_meins FROM mara WHERE matnr = gs_data-matnr.ls_items_in-itm_number = lv_posnr.                    "销售订单行项目编号ls_items_in-material   = gs_data-matnr.             "物料ls_items_in-item_categ = 'ZJR'.           "销售凭证项目类别ls_items_in-store_loc = gs_data-lgort_i.           "库存地点ls_items_in-target_qty = gs_data-cfmmg.                "订单数量ls_items_in-sales_unit = lv_meins.                "销售单位ls_items_in-plant      = gs_data-werks.             "工厂APPEND ls_items_in TO lt_items_in.CLEAR ls_items_inx.ls_items_inx-itm_number = lv_posnr.                     "销售订单行项目编号ls_items_inx-material   = 'X'.             "物料ls_items_inx-item_categ = 'X'.                "销售凭证项目类别ls_items_inx-target_qty = 'X'.                "订单数量ls_items_inx-sales_unit = 'X'.ls_items_inx-plant      = 'X'.                  "工厂ls_items_inx-store_loc = 'X'.           "库存地点APPEND ls_items_inx TO lt_items_inx.***计划行CLEAR  ls_schedules_in.ls_schedules_in-itm_number   = lv_posnr.           "销售订单行项目编号ls_schedules_in-req_date      =  sy-datum.   "计划交货日期ls_schedules_in-req_qty      = gs_data-cfmmg.         "订单数量APPEND ls_schedules_in TO lt_schedules_in.CLEAR  ls_schedules_inx.ls_schedules_inx-itm_number   = lv_posnr.      "销售订单行项目编号ls_schedules_inx-req_date      = 'X'.                "计划交货日期ls_schedules_inx-req_qty      = 'X'.                "订单数量APPEND ls_schedules_inx TO lt_schedules_inx."计划行中数量设置为0CLEAR ls_kortab.ls_kortab-posnr = lv_posnr.ls_kortab-mbdat = sy-datum.ls_kortab-vmeng = 0.APPEND ls_kortab TO lt_kortab.ENDLOOP.CHECK lt_items_in IS NOT INITIAL.*"----------------------------------------------------------------------
* 调用BAPI创建销售订单
*"----------------------------------------------------------------------DATA: lv_testrun TYPE bapiflag-bapiflag VALUE 'X'.    "测试运行
**  一般销售订单CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'EXPORTINGsales_header_in     = ls_head_insales_header_inx    = ls_head_inxtestrun             = lv_testrunTABLESreturn              = lt_returnsales_items_in      = lt_items_insales_items_inx     = lt_items_inxsales_partners      = lt_partnerssales_schedules_in  = lt_schedules_insales_schedules_inx = lt_schedules_inxextensionin         = lt_extensionin.*  CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
*    EXPORTING
*      order_header_in     = ls_head_in
*      order_header_inx    = ls_head_inx
*      testrun             = lv_testrun
*    TABLES
*      return              = lt_return
*      order_items_in      = lt_items_in
*      order_items_inx     = lt_items_inx
*      order_partners      = lt_partners
*      order_schedules_in  = lt_schedules_in
*      order_schedules_inx = lt_schedules_inx
*      extensionin         = lt_extensionin.*"----------------------------------------------------------------------
* 消息处理
*"----------------------------------------------------------------------CLEAR :lv_msg.LOOP AT lt_return INTO ls_return WHERE type CA 'AEX'.IF lv_msg IS INITIAL.lv_msg = ls_return-message.ELSE.lv_msg = lv_msg && ls_return-message.ENDIF.gs_data-status = icon_red_light.    "红色错误ENDLOOP.IF gs_data-status = icon_red_light.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.IF gs_data-msgtx IS INITIAL.gs_data-msgtx = lv_msg  .ELSE.gs_data-msgtx = gs_data-msgtx && ';' && lv_msg  .ENDIF.ELSE.lv_testrun = ''.CLEAR lv_vbeln.CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'EXPORTINGsales_header_in     = ls_head_insales_header_inx    = ls_head_inxtestrun             = lv_testrunIMPORTINGsalesdocument_ex    = lv_vbelnTABLESreturn              = lt_returnsales_items_in      = lt_items_insales_items_inx     = lt_items_inxsales_partners      = lt_partnerssales_schedules_in  = lt_schedules_insales_schedules_inx = lt_schedules_inxextensionin         = lt_extensionin.*    CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
*      EXPORTING
*        order_header_in     = ls_head_in
*        order_header_inx    = ls_head_inx
*        testrun             = lv_testrun
*      IMPORTING
*        salesdocument       = lv_vbeln
*      TABLES
*        return              = lt_return
*        order_items_in      = lt_items_in
*        order_items_inx     = lt_items_inx
*        order_partners      = lt_partners
*        order_schedules_in  = lt_schedules_in
*        order_schedules_inx = lt_schedules_inx
*        extensionin         = lt_extensionin.gs_data-vbeln_i = lv_vbeln.CLEAR :lv_msg.LOOP AT lt_return INTO ls_return WHERE type CA 'AEX'.IF lv_msg IS INITIAL.lv_msg = ls_return-message.ELSE.lv_msg = lv_msg && ls_return-message.ENDIF.gs_data-status = icon_red_light.    "红色错误ENDLOOP.IF gs_data-status = icon_red_light.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.IF gs_data-msgtx IS INITIAL.gs_data-msgtx = lv_msg  .ELSE.gs_data-msgtx = gs_data-msgtx && ';' && lv_msg  .ENDIF.ELSE.lv_msg = '换入单' && gs_data-vbeln_i && '创建成功!'.gs_data-msgtx = lv_msg  .gs_data-status = icon_green_light."记录日志LOOP AT lt_zsdt007 INTO ls_zsdt007.ls_zsdt007-vbeln = lv_vbeln.ls_zsdt007-zzernam = sy-uname.ls_zsdt007-zzerdat = sy-datum.ls_zsdt007-zzertim = sy-uzeit.MODIFY lt_zsdt007 FROM ls_zsdt007.ENDLOOP.MODIFY zsdt007 FROM TABLE lt_zsdt007.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'."途虎接口确认单数为0ls_kortab-vbeln = gs_data-vbeln_i.MODIFY lt_kortab FROM ls_kortab TRANSPORTING vbeln WHERE vbeln IS INITIAL.CLEAR lt_return.*          CALL FUNCTION 'SD_BACKORDER_UPDATE'
*            TABLES
*              kortab    = lt_kortab
*              et_return = lt_return.ENDIF.ENDIF.

创建销售订单的BAPI相关推荐

  1. 创建销售订单BAPI一些心得

    1.创建销售订单使用的BAPI BAPI_SALESORDER_CREATEFROMDAT2 但是  BUSINESS OBJECT限制为 BUS2032 使用FM: DATA           L ...

  2. 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)

    通过bapi函数创建销售订单,并更新增强字段 1,为构造增强字段(BAPE_VBAK,BAPE_VBAKX,VBAK,VBAKKOM,) 2,增强标准程序:将增强的字段赋给标准程序 (FV45KFAK ...

  3. ABAP创建销售订单BAPI示例

    ABAP中创建销售订单BAPI 1.BAPI种类 2.BAPI区别 3.创建抬头行项目输入结构 4.创建接口函数,并配置传入传出参数 5.代码 1.BAPI种类 BAPI_SALESORDER_CRE ...

  4. VA02修改销售订单的BAPI举例

    销售订单修改BAPI:BAPI_SALESORDER_CHANGE *&------------------------------------------------------------ ...

  5. 使用postman和SAP C4C OData服务创建销售订单

    我们使用OData服务创建销售订单,这是一个HTTP post请求,按照SAP C4C的规定需要在HTTP请求的头部附上一个CSRF token. 为此我们先要使用一个独立的HTTP get请求去获取 ...

  6. Oracle EBS 处理PR无法创建销售订单问题datafix

    PR审批以后,请交"创建内部订单",然后再提交"订单导入"创建内部销售订单. 问题症状: 1. "订单导入"日志输出提示: Order Nu ...

  7. SAP 创建销售订单-用外部给号的方法步骤

    前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 For this create the number range in VN01 with the number rang ...

  8. 启用FM模块后VA01创建销售订单报错,消息号 FI311 “未在项目00001 11AA 中输入承诺项目”

    文章目录 一.错误场景再现 二.错误分析 2.1 查询工厂所属公司代码-OX14/OMWD 2.2 检查和添加派生策略-FMDERIVE 2.3 验证配置是否生效 一.错误场景再现 VA01参考合同创 ...

  9. SAP 创建销售订单和生产订单收货如何冲减独立需求

    今天用户问我,这两张销售订单为什么没有让下面这个45的独立需求变成 43 之前我都不知道会有这个业务,于是百度了一下 首先, 在创建销售订单的时候会 根据销售订单类型+物料主数据中的项目类别组 --- ...

  10. 在SAP C4C创建销售订单时如何绑定创建者的微信open id

    假设我将SAP C4C销售订单的OData创建服务暴露给微信小程序使用,然后我想把使用微信小程序的用户的openid和创建好的销售订单绑定,最简单的方式: {"Name": &qu ...

最新文章

  1. OpenVINO + OpenCV实现车辆检测与道路分割
  2. spring mvc-REST
  3. xilinx IP核之ROM
  4. c++ 暂停功能_2020.10.16撸友简报:NC资本澄清;去嗨皮打赏交易
  5. 荣耀Magic V真机首曝:2022折叠机的引领之作
  6. 宝塔如何备份网站_宝塔备份网站怎样还原_服务器备份数据恢复教程
  7. awk substr()函数
  8. cobar mysql 性能_Cobar
  9. 正则表达式详解及示例
  10. 问题解决:虚拟机无法复制粘贴文件
  11. 殡仪馆计算机控制火化机,殡仪馆火化炉进行尾气处理
  12. 腾讯云域名解析:未检测到A记录,请前往您的解析服务商确认解析状态是否正常
  13. 石器时代linux架设教程,CentOS 6.5架设石器时代教程(客户端篇)
  14. Emscripten 单词_这300个单词务必让孩子在三年级前搞定
  15. MYSQL安装完成后,需要手动安装workbench
  16. 群晖增量同步Linux文件夹,用自定义脚本实现群晖NAS中本地文件夹之间的增量同步复制...
  17. 歪果小姐姐教你用代码画画,真大佬!
  18. Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等
  19. 起诉传音,华为为何会对一张壁纸要价2000万?
  20. java计算机毕业设计ssm智慧餐厅点餐管理系统

热门文章

  1. 伍斯特理工学院计算机硕士怎么样,伍斯特理工学院硕士怎么样?
  2. matlab常用命令整理
  3. HBuilder 开发工具
  4. 20190904_chip-seq/ ATAC-seq/DAP-seq 原理理解
  5. Windows API实现弹出U盘
  6. TI 杯2019年全国大学生电子设计竞赛题
  7. 南大计算机学硕复试,2017年南京大学计算机科学与技术系考研复试名单
  8. google license key格式不对
  9. Google Chrome谷歌浏览器清理缓存的常用方法
  10. Matlab小波变换-音频去噪