Sap 创建销售订单
2018-01-02 11:47
281 查看
FUNCTION z_zsbeo001. *"---------------------------------------------------------------------- *"*"Local interface: *" EXPORTING *" VALUE(E_STATUS) TYPE BAPI_MTYPE *" TABLES *" T_SO_HEADER STRUCTURE ZSO_HEAD *" T_SO_ITEM STRUCTURE ZSO_ITEM *" T_RETURN STRUCTURE BAPIRET2 *"---------------------------------------------------------------------- *& 描 述: 创建销售订单 *&---------------------------------------------------------------------* *& 作 者: *** *& 日 期: 2017.12.19 *"---------------------------------------------------------------------- * 全局变量 DATA: return_flag(1) TYPE c, posnr_g TYPE i VALUE 10 ,"项目号 partn_numb(20) TYPE c. "客户端送达方 * 定义工作区 DATA: wa_so_header LIKE t_so_header, wa_so_item LIKE t_so_item, wa_t_return LIKE t_return, wa_header TYPE bapisdhd1, "表头 wa_headerx TYPE bapisdhd1x, "表头标志 wa_partner TYPE bapiparnr, "业务伙伴 wa_item TYPE bapisditm, "行项目 wa_itemx TYPE bapisditmx, "行项目标志 wa_cond TYPE bapicond, "价格条件 wa_condx TYPE bapicondx, "价格条件标志 wa_schdl TYPE bapischdl, "交付计划 wa_schdlx TYPE bapischdlx, "交付计划标志 wa_return TYPE bapiret2. "返回错误信息 DATA: cond_value LIKE wa_so_item-cond_valur. "价格 * 定义内表 DATA: lt_item TYPE STANDARD TABLE OF bapisditm, lt_itemx TYPE STANDARD TABLE OF bapisditmx, lt_partner TYPE STANDARD TABLE OF bapiparnr, lt_cond TYPE STANDARD TABLE OF bapicond, lt_condx TYPE STANDARD TABLE OF bapicondx, lt_schdl TYPE STANDARD TABLE OF bapischdl, lt_schdlx TYPE STANDARD TABLE OF bapischdlx, lt_return TYPE STANDARD TABLE OF bapiret2. * 给head 赋值 CLEAR wa_header. READ TABLE t_so_header INTO wa_so_header INDEX 1. wa_header-doc_type = wa_so_header-auart. "销售凭证类型 wa_header-sales_org = wa_so_header-vkorg. "销售组织 wa_header-distr_chan = wa_so_header-vtweg. "分销渠道 wa_header-division = wa_so_header-spart. "产品组 wa_header-sales_grp = wa_so_header-vkgrp. "销售组 wa_header-sales_off = wa_so_header-vkbur. "销售办事处 wa_header-req_date_h = wa_so_header-edatu_vbak."请求交货日期 wa_header-purch_no_c = wa_so_header-bstkd. "采购订单编号-PC号 wa_header-pp_search = wa_so_header-ktext_v. "采购订单描述 wa_header-pmnttrms = wa_so_header-dzterm."付款条件 wa_header-ship_cond = wa_so_header-dzterm. "装运条件 wa_header-purch_no_s = wa_so_header-bstkd_e. "装运条件 CLEAR wa_headerx. wa_headerx-doc_type = 'X'. "销售凭证类型X wa_headerx-sales_org = 'X'. "销售组织 wa_headerx-distr_chan = 'X'. "分销渠道 wa_headerx-division = 'X'. "产品组 wa_headerx-sales_grp = 'X'. "销售组 wa_headerx-sales_off = 'X'. "销售办事处 wa_headerx-req_date_h = 'X'."请求交货日期 wa_headerx-purch_no_c = 'X'. "采购订单编号-PC号 wa_headerx-pp_search = 'X'. "采购订单描述 wa_headerx-pmnttrms = 'X'."付款条件 wa_headerx-ship_cond = 'X'. "装运条件 wa_headerx-purch_no_s = 'X'. "装运条件 * 客户 赋值客户号 客户端送达方 partn_numb = wa_so_header-kunnr . * 售达方 CLEAR: wa_partner, lt_partner[]. wa_partner-partn_role = 'AG'. "售达方 wa_partner-partn_numb = partn_numb. APPEND wa_partner TO lt_partner. * 收票方 CLEAR wa_partner. wa_partner-partn_role = 'RE'. "收票方 wa_partner-partn_numb = partn_numb. APPEND wa_partner TO lt_partner. * RG 付款方 CLEAR wa_partner. wa_partner-partn_role = 'RG'."RG 付款方 wa_partner-partn_numb = partn_numb. APPEND wa_partner TO lt_partner. * WE 送达方 CLEAR wa_partner. wa_partner-partn_role = 'WE'. "WE 送达方 wa_partner-partn_numb = partn_numb. * wa_partner-name = '宋大房名称'. APPEND wa_partner TO lt_partner. *行项目处理 REFRESH: lt_item,lt_cond,lt_schdl. * 循环给lt_item 赋值 LOOP AT t_so_item INTO wa_so_item. CLEAR wa_item. wa_item-itm_number = posnr_g. "项目号 wa_item-material = wa_so_item-matnr. "物料号 wa_item-sales_unit = wa_so_item-dzteme. "计量单位 wa_item-target_qty = wa_so_item-dzmeng. "数量 IF wa_so_item-waers EQ ''. wa_item-currency = wa_so_item-waers. "货币代码 ELSE. wa_item-currency = 'CNY'. ENDIF. cond_value = wa_so_item-cond_valur. APPEND wa_item TO lt_item. CLEAR wa_itemx. wa_itemx-itm_number = posnr_g. "项目号 wa_itemx-material = 'X'. "物料号 wa_itemx-sales_unit = 'X'. "计量单位 wa_itemx-target_qty = 'X'. "数量 * wa_itemx-currency = 'X'. "凭证货币不存在此字段 APPEND wa_itemx TO lt_itemx. CLEAR wa_schdl. "计划行 wa_schdl-itm_number = posnr_g. wa_schdl-req_qty = wa_so_item-dzmeng. "数量 APPEND wa_schdl TO lt_schdl. CLEAR wa_schdlx. wa_schdlx-itm_number = posnr_g. wa_schdlx-req_qty = 'X'. "数量 APPEND wa_schdlx TO lt_schdlx. CLEAR: wa_cond. "Item Conditions wa_cond-itm_number = posnr_g. wa_cond-cond_type = 'zp99'. "定价条件 wa_cond-cond_value = cond_value. "价格 APPEND wa_cond TO lt_cond. CLEAR: wa_condx. wa_condx-itm_number = posnr_g. wa_condx-cond_type = 'X'. "定价条件 wa_condx-cond_value = 'X'. "价格 APPEND wa_condx TO lt_condx. posnr_g = posnr_g + 10 . "项目号*2 ENDLOOP. * 调用bapi 接口创建订单 CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = wa_header TABLES return = lt_return "返回记录 order_items_in = lt_item "行记录项 order_partners = lt_partner "客户 order_schedules_in = lt_schdl "计划行 order_conditions_in = lt_cond. "添加 * 处理错误消息:通过判断消息的类型,来判断BAPI是否成功 LOOP AT lt_return INTO wa_return. IF wa_return-type EQ 'E' OR wa_return-type = 'A' OR wa_return = 'X'. return_flag = 'X'. "失败 ENDIF. MOVE-CORRESPONDING wa_return TO wa_t_return. "根据字段名称copy 信息 APPEND wa_t_return TO t_return. ENDLOOP. IF return_flag NE 'X'. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. COMMIT WORK AND WAIT. e_status = 'S'. "返回状态 ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' . e_status = 'E'. "返回状态 ENDIF. ENDFUNCTION.
相关文章推荐
- SAP创建生产订单时要求输入销售订单
- 如何创建一个SAP的销售订单
- SAP创建生产订单时要求输入销售订单
- 如何用代码的方式取出SAP C4C销售订单创建后所有业务伙伴的数据
- SAP无法创建销售订单 装运点没有数据 装运条件有误
- 调用SAP函数创建寄售退货订单的时候报错:业务对象 BUS2032 是销售订单,销售凭证类别 H 是退货。
- SAP收货时自动创建采购订单
- SAP 销售订单查看合同引用
- SAP笔记-SD 销售订单 收入 和 成本 对应科目的逻辑
- sap-abap 取销售订单行的已发货数量
- 通过bdc批量创建销售订单(多个销售订单)
- SAP 销售订单完整性检查
- BAPI:BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单
- 使用API创建销售订单
- sap crm 销售订单创建之后显示文档正在分发
- SAP ABAP编程 创建采购订单
- sap 如何获取公司间采购订单或销售订单的交货状态
- OEOIMP-创建销售订单(R12.2.3)
- sap-abap 取销售订单行的已发货数量
- SAP 物料订单创建、下达、报工、收货与投料(ABAP代码)