创建销售订单的BAPI
创建销售订单的函数有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相关推荐
- 创建销售订单BAPI一些心得
1.创建销售订单使用的BAPI BAPI_SALESORDER_CREATEFROMDAT2 但是 BUSINESS OBJECT限制为 BUS2032 使用FM: DATA L ...
- 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)
通过bapi函数创建销售订单,并更新增强字段 1,为构造增强字段(BAPE_VBAK,BAPE_VBAKX,VBAK,VBAKKOM,) 2,增强标准程序:将增强的字段赋给标准程序 (FV45KFAK ...
- ABAP创建销售订单BAPI示例
ABAP中创建销售订单BAPI 1.BAPI种类 2.BAPI区别 3.创建抬头行项目输入结构 4.创建接口函数,并配置传入传出参数 5.代码 1.BAPI种类 BAPI_SALESORDER_CRE ...
- VA02修改销售订单的BAPI举例
销售订单修改BAPI:BAPI_SALESORDER_CHANGE *&------------------------------------------------------------ ...
- 使用postman和SAP C4C OData服务创建销售订单
我们使用OData服务创建销售订单,这是一个HTTP post请求,按照SAP C4C的规定需要在HTTP请求的头部附上一个CSRF token. 为此我们先要使用一个独立的HTTP get请求去获取 ...
- Oracle EBS 处理PR无法创建销售订单问题datafix
PR审批以后,请交"创建内部订单",然后再提交"订单导入"创建内部销售订单. 问题症状: 1. "订单导入"日志输出提示: Order Nu ...
- SAP 创建销售订单-用外部给号的方法步骤
前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 For this create the number range in VN01 with the number rang ...
- 启用FM模块后VA01创建销售订单报错,消息号 FI311 “未在项目00001 11AA 中输入承诺项目”
文章目录 一.错误场景再现 二.错误分析 2.1 查询工厂所属公司代码-OX14/OMWD 2.2 检查和添加派生策略-FMDERIVE 2.3 验证配置是否生效 一.错误场景再现 VA01参考合同创 ...
- SAP 创建销售订单和生产订单收货如何冲减独立需求
今天用户问我,这两张销售订单为什么没有让下面这个45的独立需求变成 43 之前我都不知道会有这个业务,于是百度了一下 首先, 在创建销售订单的时候会 根据销售订单类型+物料主数据中的项目类别组 --- ...
- 在SAP C4C创建销售订单时如何绑定创建者的微信open id
假设我将SAP C4C销售订单的OData创建服务暴露给微信小程序使用,然后我想把使用微信小程序的用户的openid和创建好的销售订单绑定,最简单的方式: {"Name": &qu ...
最新文章
- OpenVINO + OpenCV实现车辆检测与道路分割
- spring mvc-REST
- xilinx IP核之ROM
- c++ 暂停功能_2020.10.16撸友简报:NC资本澄清;去嗨皮打赏交易
- 荣耀Magic V真机首曝:2022折叠机的引领之作
- 宝塔如何备份网站_宝塔备份网站怎样还原_服务器备份数据恢复教程
- awk substr()函数
- cobar mysql 性能_Cobar
- 正则表达式详解及示例
- 问题解决:虚拟机无法复制粘贴文件
- 殡仪馆计算机控制火化机,殡仪馆火化炉进行尾气处理
- 腾讯云域名解析:未检测到A记录,请前往您的解析服务商确认解析状态是否正常
- 石器时代linux架设教程,CentOS 6.5架设石器时代教程(客户端篇)
- Emscripten 单词_这300个单词务必让孩子在三年级前搞定
- MYSQL安装完成后,需要手动安装workbench
- 群晖增量同步Linux文件夹,用自定义脚本实现群晖NAS中本地文件夹之间的增量同步复制...
- 歪果小姐姐教你用代码画画,真大佬!
- Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等
- 起诉传音,华为为何会对一张壁纸要价2000万?
- java计算机毕业设计ssm智慧餐厅点餐管理系统