BAPI_SALESORDER_CREATEFROMDAT2
创建销售订单
注:
1.销售订单行项目支持跳号,如果输入20,最后创建生成的订单行项目就是20的
2.order_partners 如果传合作伙伴号,会从主数据带过来数据,如果传了street等,则其他字段都不会带过来了。可以传adrnr直接关联。
BAPI_CUSTOMERRETURN_CREATE
创建退货销售订单
demo
附加字段(行项目,抬头是k)
1.给结构BAPE_VBAP附加结构zzvbap_2,直接复制vbap的附加结构的zzvbap的字段名即可,注意数据类型必须为char。
2.再给结构BAPE_VBAPX附加结构,类型全部用char1即可(必须要用char1,否则BAPI_SALESDOCUMENT_CHANGE不能修改附加字段值)。
3.同样修改VBAPKOZ、VBAPKOZX(必须修改,否则bapi写不进去,不是VBAPKOM,改了VBAPKOM bapi不管用,而且mm02等会dump掉)
注意这几个接口增加的字段要一致
问题
1.净价扩大10倍:没有输入货币
注意
1 如果传入价格不使用销售价格,需要传入一行 D ,再传一行 I
DEMO
function zmm_yxj_0011_va01.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(INPUT_HEAD) TYPE ZSMM_VA01_INPUT OPTIONAL
*" VALUE(INPUT_ITEM) TYPE ZSMM_VA01_INPUT_ITEM_TBL OPTIONAL
*" VALUE(ZCHECK) TYPE CHAR1 OPTIONAL
*" EXPORTING
*" REFERENCE(OUTPUT) TYPE ZSMM_RET_MES
*"----------------------------------------------------------------------
data wa_order_header_in type bapisdhd1 .
data order_header_in type standard table of bapisdhd1.
data wa_order_header_inx type bapisdhd1x.
data order_header_inx type standard table of bapisdhd1x.
data wa_order_partners type bapiparnr.
data order_partners type standard table of bapiparnr.
data wa_order_items_in type bapisditm.
data order_items_in type standard table of bapisditm.
data wa_order_items_inx type bapisditmx.
data order_items_inx type standard table of bapisditmx.
data wa_order_conditions_in type bapicond.
data order_conditions_in type standard table of bapicond.
data wa_order_conditions_inx type bapicondx.
data order_conditions_inx type standard table of bapicondx.
data wa_order_schedules_in type bapischdl.
data order_schedules_in type standard table of bapischdl.
data wa_order_schedules_inx type bapischdlx.
data order_schedules_inx type standard table of bapischdlx.
data wa_item type zsmm_va01_input_item.
data l_pornr type vbap-posnr value '000000'.
data return_so type standard table of bapiret2.
data salesdocument type bapivbeln-vbeln.
data wa_return_so type bapiret2.
*"*"-------订单抬头-----------------------------------------------------
if input_head-faksk is not initial.
wa_order_header_in-bill_block = '0' && input_head-faksk+0(1). "ADD BY CYL
endif.
wa_order_header_in-doc_type = input_head-auart.
wa_order_header_in-sales_org = input_head-vkorg.
wa_order_header_in-distr_chan = input_head-vtweg.
wa_order_header_in-sales_off = input_head-vkorg."和销售组织保持一致--
wa_order_header_in-division = input_head-spart.
wa_order_header_in-purch_date = syst-datum.
wa_order_header_in-doc_date = sy-datum.
if input_head-augru is not initial.
wa_order_header_in-ord_reason = input_head-augru.
wa_order_header_inx-ord_reason = 'X'.
endif.
if input_head-vsbed is not initial.
wa_order_header_in-ship_cond = input_head-vsbed.
wa_order_header_inx-ship_cond = 'X'.
endif.
wa_order_header_in-bill_date = sy-datum."
wa_order_header_in-purch_no_c = input_head-bstkd."
wa_order_header_inx-updateflag = 'I'.
wa_order_header_inx-bill_block = 'X'. "ADD BY CYL
wa_order_header_inx-doc_type = 'X'.
wa_order_header_inx-sales_org = 'X'.
wa_order_header_inx-distr_chan = 'X'."
wa_order_header_inx-sales_off = 'X'.
wa_order_header_inx-division = 'X'.
wa_order_header_inx-purch_date = 'X'.
wa_order_header_inx-doc_date = 'X'.
wa_order_header_inx-purch_no_c = 'X'.
* 合作伙伴
wa_order_partners-partn_numb = input_head-kunnr.
wa_order_partners-partn_role = 'RE'."rec
append wa_order_partners to order_partners.
wa_order_partners-partn_numb = input_head-kunnr.
wa_order_partners-partn_role = 'AG'."sale to
append wa_order_partners to order_partners.
wa_order_partners-partn_numb = input_head-kunnr.
wa_order_partners-partn_role = 'RG'."PAY
append wa_order_partners to order_partners.
wa_order_partners-partn_numb = input_head-kunnr.
wa_order_partners-partn_role = 'WE'."SEND TO
append wa_order_partners to order_partners.
*行项目
loop at input_item into wa_item.
l_pornr = l_pornr + 10.
wa_order_items_in-itm_number = l_pornr."
wa_order_items_in-material = wa_item-matnr.
wa_order_items_in-sales_unit = wa_item-zieme.
* WA_ORDER_ITEMS_IN-ITEM_CATEG = WA_ITEM-ITEM_CATEG.
wa_order_items_in-plant = wa_item-werks.
wa_order_items_in-purch_date = sy-datum.
* WA_ORDER_ITEMS_IN-PMTGAR_PRO = WA_ITEM-PMTGAR_PRO."
* WA_ORDER_ITEMS_IN-BILL_DATE = WA_ITEM-FKDAT.
if zcheck = ''.
* WA_ORDER_ITEMS_IN-PRICE_LIST = '01'.
* WA_ORDER_ITEMS_INX-PRICE_LIST = 'X'.
wa_order_items_in-route = 'Z00002'.
wa_order_items_inx-route = 'X'.
endif.
wa_order_items_in-store_loc = wa_item-lgort.
* WA_ORDER_ITEMS_IN-PMNTTRMS = '0001'.
wa_order_items_in-batch = wa_item-charg.
wa_order_items_in-mat_pr_grp = wa_item-kondm.
append wa_order_items_in to order_items_in.
clear : wa_order_items_in.
wa_order_items_inx-updateflag = 'I'.
wa_order_items_inx-itm_number = 'X'.
wa_order_items_inx-material = 'X'.
* WA_ORDER_ITEMS_INX-SHIP_POINT = 'X'.
wa_order_items_inx-sales_unit = 'X'.
* WA_ORDER_ITEMS_INX-ITEM_CATEG = 'X '.
if wa_item-kondm is not initial.
wa_order_items_inx-mat_pr_grp = 'X'.
endif.
wa_order_items_inx-plant = 'X'.
wa_order_items_inx-purch_date = 'X'.
* WA_ORDER_ITEMS_INX-PMTGAR_PRO = 'X'.
* WA_ORDER_ITEMS_INX-BILL_DATE = 'X'.
wa_order_items_inx-store_loc = 'X'.
* WA_ORDER_ITEMS_INX-PMNTTRMS = 'X'.
wa_order_items_inx-batch = `X`.
append wa_order_items_inx to order_items_inx.
clear : wa_order_items_inx.
wa_order_schedules_in-itm_number = l_pornr.
* WA_ORDER_SCHEDULES_IN-REQ_DATE = WA_ITEM-REQ_DATE.
wa_order_schedules_in-req_qty = wa_item-zmeng.
append wa_order_schedules_in to order_schedules_in.
clear:wa_order_schedules_in.
wa_order_schedules_inx-itm_number = l_pornr.
* WA_ORDER_SCHEDULES_INX-REQ_DATE = 'X'.
wa_order_schedules_inx-req_qty ='X'.
wa_order_schedules_inx-updateflag = 'X'.
append wa_order_schedules_inx to order_schedules_inx.
clear :wa_order_schedules_inx.
*条件类型
endloop.
if zcheck = 'X'.
call function 'BAPI_CUSTOMERRETURN_CREATE'
exporting
return_header_in = wa_order_header_in
return_header_inx = wa_order_header_inx
importing
salesdocument = salesdocument
tables
return = return_so
return_items_in = order_items_in
return_items_inx = order_items_inx
return_schedules_in = order_schedules_in
return_schedules_inx = order_schedules_inx
return_partners = order_partners.
* ORDER_CONDITIONS_IN = ORDER_CONDITIONS_IN
* ORDER_CONDITIONS_INX = ORDER_CONDITIONS_INX.
else.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
order_header_in = wa_order_header_in
order_header_inx = wa_order_header_inx
importing
salesdocument = salesdocument
tables
return = return_so
order_items_in = order_items_in
order_items_inx = order_items_inx
order_schedules_in = order_schedules_in
order_schedules_inx = order_schedules_inx
order_partners = order_partners.
* ORDER_CONDITIONS_IN = ORDER_CONDITIONS_IN
* ORDER_CONDITIONS_INX = ORDER_CONDITIONS_INX.
endif.
loop at return_so into wa_return_so where type = 'E' or type = 'A' or type = 'X'.
endloop.
if wa_return_so is not initial.
output-ret_id = 'E' .
loop at return_so into wa_return_so where type = 'E' or type = 'A' or type = 'X'.
concatenate output-ret_text wa_return_so-message into output-ret_text.
clear wa_return_so.
endloop.
call function 'BAPI_TRANSACTION_ROLLBACK' .
clear salesdocument.
else.
output-ret_id = 'S'.
output-ret_number = salesdocument.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
endif.
endfunction.
本文发布于:2024-01-28 12:01:14,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064144827271.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |