BAPI

阅读: 评论:0

BAPI

BAPI

BAPI_SALESORDER_CREATEFROMDAT2

创建销售订单

注:

1.销售订单行项目支持跳号,如果输入20,最后创建生成的订单行项目就是20的

2.order_partners 如果传合作伙伴号,会从主数据带过来数据,如果传了street等,则其他字段都不会带过来了。可以传adrnr直接关联。

 

BAPI_CUSTOMERRETURN_CREATE

创建退货销售订单

 

demo

  • BOE ZSDB008 正向带extension
  • BOE ZSDB010 正向、退货

 

附加字段(行项目,抬头是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小时内删除。

标签:BAPI
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23