自动创建销售订单
需求文档:
通过SE37接口自动创建直接销售订单【Z100】:
- 事务代码:VA01初始界面:
销售订单类型:Z100 --字段名:VBAK- AUART
销售组织: 待定值 --字段名:VBAK-VKORG
分销渠道: 待定值 --字段名:VBAK-VTWEG
产品组: 待定值 --字段名:VBAK-SPART
2. 拍回车进入界面:
售达方: 待定值 --字段名:VBAK-KUNNR
物料: 待定值 --字段名:VBAP- MATNR
订单数量: 待定值 --字段名:VBAP- KWMENG
3. 双击行项目进入条件界面:
类型 ZR10
金额 待定
货币 待定
单位 待定
UOM 待定
4. 保存
5. 事务代码:VA02更改界面,将价格清单从30变成10以供OA审批:
价格清单 10 --字段名:VBKD-PLTYP
注:
如果注明了值的,请写死,注明待定的,请写成OA动态传递的。
程序可参考:ZSDR04(SE38此程序为系统自动创建标准销售订单)
接口可参考:ZFM_MM_MAT_MASTER(SE37此接口为物料主数据创建和修改OA接口)
需求文档:
通过SE37接口自动创建借/贷项订单【Z008/Z009】:
1. 事务代码:VA01初始界面:
销售订单类型:待定值 --字段名:VBAK- AUART
销售组织: 待定值 --字段名:VBAK-VKORG
分销渠道: 待定值 --字段名:VBAK-VTWEG
产品组: 待定值 --字段名:VBAK-SPART
2. 拍回车进入界面:
售达方: 待定值 --字段名:VBAK-KUNNR
采购订单编号 待定值 --字段名:VBKD-BSTKD
物料: 待定值 --字段名:VBAP- MATNR
目标数量: 待定值 --字段名:VBAP- ZMENG
描述: 待定值 --字段名:VBAP- ARKTX
客户物料: 待定值 --字段名:VBAP-KDMAT
3. 转入表头数据:
订单原因 待定值 --字段名:VBAK- AUGRU
4. 双击行项目进入条件界面:
类型 ZR02 (系统自动带出)
金额 待定
货币 待定
单位 待定
UOM 待定
5. 保存
注:
如果注明了值的,请写死,注明待定的,请写成OA动态传递的。
程序可参考:ZSDR04(SE38此程序为系统自动创建标准销售订单)
接口可参考:ZFM_MM_MAT_MASTER(SE37此接口为物料主数据创建和修改OA接口)
程序示例结果:
程序实现:
1. 创建销售订单表头结构:
2. 创建销售订单行项目结构:
3. 接口实现:ZXHN_CREATE_SO:
源代码实现:
FUNCTION ZXHN_CREATE_SO.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_ZCREATESO) LIKE ZXHN_CREATE_SO STRUCTURE
*" ZXHN_CREATE_SO OPTIONAL
*" EXPORTING
*" VALUE(O_RETURN) TYPE CHAR100
*" VALUE(O_MSGTYPE) TYPE CHAR1
*" TABLES
*" LT_ZCREATESO STRUCTURE ZXHN_CREATE_SO_ITEM
*"----------------------------------------------------------------------
TYPES:BEGIN OF zsds_so_return,
vbeln TYPE bapisdhd1-purch_no_c,
type TYPE bapi_mtype,
message TYPE bapi_msg,
END OF zsds_so_return.
DATA ls_zcreateso TYPE zxhn_create_so_item .
DATA: flag TYPE i VALUE 0 ,
l_posnr TYPE vbap-posnr .
DATA : lw_header TYPE bapisdhd1 , "抬头
lw_headerx TYPE bapisdhd1x ,
lw_order_items_in TYPE bapisditm, "销售
lw_order_items_inx TYPE bapisditmx,
lw_order_partners2 TYPE bapiparnr,
lw_salesdocument TYPE bapivbeln-vbeln,
lw_bapischdl TYPE bapischdl,
lw_bapischdlx TYPE bapischdlx,
wa_return TYPE zsds_so_return,
lw_return TYPE bapiret2,
lw_order_conditions_in TYPE bapicond,
lw_order_conditions_inx TYPE bapicondx . "合作伙伴.
DATA: lt_order_items_in TYPE TABLE OF bapisditm, "SD销售相关
lt_order_items_inx TYPE TABLE OF bapisditmx,
lt_extensionin TYPE TABLE OF bapiparex WITH HEADER LINE, "extend
lt_bapischdl TYPE TABLE OF bapischdl, "计划行
lt_bapischdlx TYPE TABLE OF bapischdlx,
lt_order_partners TYPE TABLE OF bapiparnr,
lt_order_conditions_in TYPE TABLE OF bapicond,
lt_return TYPE TABLE OF bapiret2, "返回参数
lt_return1 TYPE TABLE OF bapiret2,
lw_return1 TYPE bapiret2, "行文本条件
lt_order_conditions_inx TYPE TABLE OF bapicondx. "合作伙伴
LOOP AT lt_zcreateso INTO ls_zcreateso .
DATA ls_bape_vbak TYPE bape_vbak.
DATA ls_bape_vbakx TYPE bape_vbakx.
lt_extensionin-structure = 'BAPE_VBAK'.
lt_extensionin-valuepart1 = ls_bape_vbak.
APPEND lt_extensionin.
lt_extensionin-structure = 'BAPE_VBAKX'.
lt_extensionin-valuepart1 = ls_bape_vbak.
APPEND lt_extensionin.
*销售订单抬头创建
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = i_zcreateso-kunnr
IMPORTING
output = i_zcreateso-kunnr.
lw_header-doc_type = i_zcreateso-auart. "订单类型
lw_header-sales_org = i_zcreateso-vkorg. "销售组织
lw_header-distr_chan = i_zcreateso-vtweg. "分销渠道
lw_header-division = i_zcreateso-spart. "产品组
lw_header-price_list = i_zcreateso-pltyp. "价格清单
IF i_zcreateso-auart = 'Z008' OR i_zcreateso-auart = 'Z009' .
lw_header-purch_no_c = i_zcreateso-bstkd."采购订单编号
lw_header-ord_reason = i_zcreateso-augru ."订单原因
lw_headerx-purch_no_c = 'X'.
lw_headerx-ord_reason = 'X'.
ENDIF .
lw_headerx-doc_type = 'X'.
lw_headerx-sales_org = 'X'.
lw_headerx-distr_chan = 'X'.
lw_headerx-division = 'X'.
lw_headerx-price_list = 'X'.
lw_order_partners2-partn_role ='AG'.
lw_order_partners2-partn_numb = i_zcreateso-kunnr