需求:通过BAPI函数创建销售订单,并且计划行里的确认的数量为0.

解决方法:使用BAPI BAPI_SALESORDER_CREATEFROMDAT2创建SO后,再使用函数 SD_BACKORDER_UPDATE 对确认的数量进行修改。

tips:使用BAPI_SALESORDER_CREATEFROMDAT2创建SO时,订单的数量只在参数表order_items_in中设置target_qty不起作用,需要在参数表order_schedules_in中设置REQ_QTY。

*"----------------------------------------------------------------------
* 销售订单抬头数据
*"----------------------------------------------------------------------ls_head_in-purch_no_c = gs_head-backup.        "客户采购订单编号ls_head_in-purch_no_s = gs_head-thmno.       "运达方采购订单编号    PO号ls_head_in-doc_type = 'ZOR'.          "销售凭证类型IF sy-sysid = 'D10'.  "ls_head_in-sales_org = '2016'.     "销售组织ls_head_in-distr_chan = '10'.      "分销渠道ELSE.ls_head_in-sales_org = '2016'.         "销售组织ls_head_in-distr_chan = '10'.        "分销渠道ENDIF.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'.DATA: ls_kna1 TYPE 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.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.LOOP AT gt_item INTO ls_item.lv_posnr = lv_posnr + 1.
ls_items_in-itm_number = lv_posnr.                    "销售订单行项目编号
ls_items_in-material   = ls_zsdt002-matnr.             "物料
ls_items_in-item_categ = 'ZTAN'.           "销售凭证项目类别
ls_items_in-target_qty = ls_item-zmeng.                "订单数量
ls_items_in-sales_unit = lv_meins.                "销售单位
ls_items_in-plant      = ls_zsdt002-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'.                  "工厂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      = ls_item-zmeng.         "订单数量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.ENDLOOP.
*"----------------------------------------------------------------------
* 调用BAPI创建销售订单
*"----------------------------------------------------------------------DATA: lv_testrun TYPE bapiflag-bapiflag VALUE 'X'.    "测试运行
**  一般销售订单CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'EXPORTINGorder_header_in     = ls_head_inorder_header_inx    = ls_head_inxtestrun             = lv_testrunTABLESreturn              = lt_returnorder_items_in      = lt_items_inorder_items_inx     = lt_items_inxorder_partners      = lt_partnersorder_schedules_in  = lt_schedules_inorder_schedules_inx = lt_schedules_inxextensionin         = 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_result-status = '20000'.ENDLOOP.IF gs_result-status = '20000'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.IF gs_result-message_text IS INITIAL.gs_result-message_text = lv_msg  .ELSE.gs_result-message_text = gs_result-message_text && ';' && lv_msg  .ENDIF.ELSE.lv_testrun = ''.CLEAR lv_vbeln.CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'EXPORTINGorder_header_in     = ls_head_inorder_header_inx    = ls_head_inxtestrun             = lv_testrunIMPORTINGsalesdocument       = lv_vbelnTABLESreturn              = lt_returnorder_items_in      = lt_items_inorder_items_inx     = lt_items_inxorder_partners      = lt_partnersorder_schedules_in  = lt_schedules_inorder_schedules_inx = lt_schedules_inxextensionin         = lt_extensionin.gs_result-vbeln = 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_result-status = '20000'.ENDLOOP.IF gs_result-status = '20000'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.IF gs_result-message_text IS INITIAL.gs_result-message_text = lv_msg  .ELSE.gs_result-message_text = gs_result-message_text && ';' && lv_msg  .ENDIF.ELSE.lv_msg = '订单' && gs_head-thmno && '创建成功!'.gs_result-message_text = lv_msg  .gs_result-status = '10000'.MODIFY zsdt007 FROM TABLE lt_zsdt007.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ls_kortab-vbeln = gs_result-vbeln.MODIFY lt_kortab from ls_kortab TRANSPORTING vbeln WHERE vbeln is INITIAL.CLEAR lt_return.CALL FUNCTION 'SD_BACKORDER_UPDATE'TABLESkortab    = lt_kortabet_return = lt_return.ENDIF.ENDIF.

创建计划行确认数量为0的销售订单相关推荐

  1. SAP 限制出货数量小于销售订单数量

    在标准SAP系统中,创建一张SO之后,默认情况下,销售发货过账是可以超过销售订单总量的.当然,在做交货的时候,交货数量不会超出销售订单数量,须人为将数量放大. 这个要求是看管理而定的,看看管理上是否允 ...

  2. 金蝶KIS专业版销售出库反审核不成功,销售订单关联的出库数量为负!

    该问题为销售出库单来源选择销售订单,销售出库单保存审核之后未能将出库数量反写到销售订单,此问题金蝶各版本均有可能出现,请先查找对应版本有否补丁解决再参考本文 执行以下语句(订单完全出库情况下适用) s ...

  3. android10 三星升级计划,三星公布Android 10.0国行升级计划:规模庞大

    科技快报 11月28日,三星公布了国行三星手机Android 10.0升级计划,Android 10.0将搭配三星自家的One UI 2.0一起推送至国行各个机型,具体推送时间安排如下.科技快报 20 ...

  4. 国行new moto x升级android6,喜大普奔:国行MOTO升级Android6.0计划终于来了

    [TechWeb报道]安卓6.0推出已经很长一段时间了,Moto海外版在去年就已经有很多机型都已经陆续收到Andriod6.0推送,而国行版Andriod6.0的升级计划一直都不得而知,国内Moto粉 ...

  5. android10 三星升级计划,国行三星手机Android 10.0升级计划表 Note10明年2月升级

    原标题:国行三星手机Android 10.0升级计划表 Note10明年2月升级 11月28日,三星公布了国行三星手机Android 10.0升级计划,Android 10.0将搭配三星自家的One ...

  6. SAP-SD计划行类别解析

    计划行类别. 计划行类别的例子Schedule Line categories 系统交付了不同schedule line categories来为Item在销售流程中提供不同的控制选项: schedu ...

  7. 做好计划事半功倍论文_Picocli 2.0:事半功倍

    做好计划事半功倍论文 介绍 Picocli是一个单文件命令行解析框架,它使您几乎不需要任何代码即可创建命令行应用程序. 使用@Option或@Parameters注释应用程序中的字段,picocli将 ...

  8. SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求

    不知道业务怎么配置的,创建销售单时,一堆计划行类别,什么CN,DN...都有,但是审核后需要计划行变更为CP,这样在MD04才能看到需求. 原有逻辑是弄个后台程序,审核后调一下,更新一下计划行,这样是 ...

  9. 终于要把魔爪伸向shell编程了_命令行参数数量预检测——莫韵乐的小脚印笔记

    终于要把魔爪伸向shell编程了_命令行参数数量预检测 有时候我们在时使用shell的时候都需要传入一些参数,但是有时候我们传入的命令行参数数量不正确就很容易发生错误,因此我们需要在需要传入参数的sh ...

  10. VC++创建计划任务的若干方式

    文章目录 1. 创建计划任务的两种方式 1.1 利用CMD命令行创建计划任务 1.2 利用COM组件的API编程创建计划任务 1.2.1 几个基本概念 1.2.2 Task API 2. 使用Task ...

最新文章

  1. Linux下使用diff和patch制作及打补丁(已经实践可行!)
  2. PDOStatement 类 FETCH_* 系列
  3. Adobe Prelude 2020中文版
  4. Python 技术篇 - 通过paramiko库判断连接linux服务器的账号密码是否正确方法演示
  5. Java Instant类
  6. 《长安十二时辰》中的跨域行人重识别问题
  7. 《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一2.3 完善OpenShift集群...
  8. 新手:Mac状态栏图标管理技巧
  9. Docker 安装基本操作
  10. Retrofit2的再封装实战—多线程下载与断点续传(三)
  11. Atitit spirngboot 访问 html文件总结 自设计web服务器原理与实现 Url路由压力,读取url,获得项目更路径绝对路径,拼接为文件路径。读取文建内容输出即可 目录路径 u
  12. 项目整体管理:实施整体变更控制
  13. ZXECS-IBX1000综合业务交换
  14. Matlab学习笔记(8)——hist函数
  15. 职能式管理和流程式管理
  16. Android 播放Gif 动画
  17. 12306html布局,12306-Assistant
  18. mysql plus多表关联_结合mybatis-plus 实现实体操作多表关联查询
  19. oracle新建一个自增列,sequence的使用
  20. HadoopSpark

热门文章

  1. phpstudy linux安装教程
  2. iOS高仿app源码:10天时间纯代码打造高仿优质《内涵段子》
  3. 计算机操作系统-2-处理器管理
  4. matlab中算术平方根,改进的平方根法matlab
  5. 教你一个小技巧给latex表格添加脚注 (非footnote)
  6. 【操作系统】GPT和MBR分区的区别
  7. wps页眉偶数页不同怎么设置_请问在wps文档中如何设置奇偶页不同的页眉
  8. Python 实现的、带GUI界面的词云生成器
  9. JavaScript文档注释JSDoc注释
  10. Centos 7 开机提示 Entering emergency mode 解决方法