bapi_po_create1根据PR创建PO

bapi_po_create1根据PR创建PO,PO创建成功之后无法改变PR状态.是因为在调用这个BAPI时,传进的参数不够完整.

解决办法:bapimepoitem, bapimepoitemx ,bapimeposchedule ,bapimeposchedulx .这四个参数里面的PREQ_NO,PREQ_ITEM.这两个参数要填.

总结:

在用到一些bapi时,要在SAP中的走下这个BAPI所对应的业务.例如PR转PO这个业务.特别是在根据PR转PO时,既创建采购订单时,要注意创建采购订单这个屏幕上面所填的数据,这些数据就是你调用BAPI时所要传输的数据.

FORM FRM_BAPI_CREATE_PO .
DATA: poheader  LIKE TABLE OF bapimepoheader  WITH HEADER LINE ,
poheaderx LIKE TABLE OF bapimepoheaderx WITH HEADER LINE,
return LIKE TABLE OF bapiret2  WITH HEADER LINE,
poitem    LIKE TABLE OF bapimepoitem WITH HEADER LINE,
poitemx LIKE TABLE OF bapimepoitemx WITH HEADER LINE,
poschedule LIKE TABLE OF bapimeposchedule WITH HEADER LINE,
poschedulex LIKE TABLE OF bapimeposchedulx WITH HEADER LINE,
potextitem LIKE TABLE OF bapimepotext WITH HEADER LINE.
CONSTANTS: con VALUE ‘X’.
DATA: lifnr TYPE lfa1-lifnr,
netpr TYPE ekpo-netpr,
row TYPE i,
scheduleline TYPE i.
DATA: epo LIKE bapimepoheader-po_number.
DATA: l_return LIKE return,
wa_data LIKE LINE OF it_convert_data.

REFRESH it_save_data.

SORT it_convert_data BY bsart ekorg ekgrp lifnr.
LOOP AT it_convert_data.
wa_data = it_convert_data.
AT NEW lifnr.
CLEAR lifnr.
lifnr = wa_data-lifnr.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = lifnr
IMPORTING
output = lifnr.

poheader-doc_type    = wa_data-bsart.
poheader-vendor       = lifnr.
poheader-purch_org  = ‘1000′.
IF wa_data-ekorg IS NOT INITIAL.
poheader-purch_org  = wa_data-ekorg.
ENDIF.
poheader-pur_group  = wa_data-ekgrp.
poheader-comp_code = ‘8000′.
poheader-doc_date   = sy-datum.
poheader-langu         = sy-langu.
poheader-currency = wa_data-waers.“货币

poheaderx-doc_type    = con.
poheaderx-vendor       = con.
poheaderx-purch_org  = con.
poheaderx-pur_group  = con.
poheaderx-comp_code = con.
poheaderx-ref_1          = con.
poheaderx-doc_date   = con.
poheaderx-langu         = con.
poheaderx-currency = con.“货币

ENDAT.

CLEAR :netpr.
IF wa_data-netpr2 IS NOT INITIAL.
netpr = wa_data-netpr2.
ELSEIF wa_data-netpr1 IS NOT INITIAL.
netpr = wa_data-netpr1.
ELSE.
netpr = wa_data-netpr.
ENDIF.

*    CALL FUNCTION ’CONVERSION_EXIT_ALPHA_INPUT’
*      EXPORTING
*        input  = bstae
*      IMPORTING
*        output = bstae.
row = row + 10.
poitem-po_item = row. “采购凭证的项目编号
poitem-preq_no = wa_data-banfn.
poitem-preq_item = wa_data-bnfpo.
poitem-acctasscat = wa_data-knttp.“科目分配类别
poitem-short_text = wa_data-txz01.“短文本
poitem-quantity = wa_data-menge.“采购订单数量
poitem-po_unit = wa_data-meins .“采购订单的计量单位
poitem-net_price = netpr.“净价
poitem-po_price = ‘2′.
poitem-material = wa_data-matnr.
poitem-matl_group = wa_data-matkl.“物料组
poitem-plant = wa_data-werks. “工厂
poitem-trackingno = wa_data-bednr.“需求跟踪号
poitem-preq_name = wa_data-afnam.“需求者/请求者姓名
poitem-ref_doc = wa_data-banfn.
poitem-ref_item = wa_data-bnfpo.
*    poitem-tax_code = wa_data-mwskz.”销售税代码
*    poitem-conf_ctrl = bstae.”确认控制代码
APPEND poitem.
CLEAR poitem.

poitemx-po_item = row . “采购凭证的项目编号
poitem-preq_no = con.
poitem-preq_item = con.
poitemx-acctasscat = con .“科目分配类别
poitemx-short_text = con.“短文本
poitemx-quantity = con.“采购订单数量
poitemx-po_unit = con .“采购订单的计量单位
poitemx-net_price = con.“净价
poitemx-po_price = con.
poitemx-material = con.
poitemx-matl_group = con.“物料组
poitemx-plant = con.“工厂
poitemx-trackingno = con.“需求跟踪号
poitemx-preq_name = con.“需求者/请求者姓名
poitemx-ref_doc = con.
poitemx-ref_item = con.
*    poitemx-tax_code = con.”销售税代码
*    poitemx-conf_ctrl = con.”确认控制代码
*    poitemx-ret_item = con.”退货项目
APPEND poitemx.
CLEAR poitemx.
scheduleline = scheduleline + 1.
poschedule-po_item = row . “采购凭证的项目编号
poschedule-sched_line = scheduleline . “采购凭证的项目编号
poschedule-del_datcat_ext = ‘D’.“交货日期的类别
poschedule-delivery_date = wa_data-lfdat.“交货日期
poschedule-quantity  = wa_data-menge.“采购订单数量
poschedule-preq_no = wa_data-banfn.
poschedule-preq_item = wa_data-bnfpo.
APPEND poschedule.
CLEAR poschedule.

poschedulex-po_item = row . “采购凭证的项目编号
poschedulex-sched_line = scheduleline . “采购凭证的项目编号
poschedulex-del_datcat_ext = con.“交货日期的类别
poschedulex-delivery_date = con.“交货日期
poschedulex-quantity  = con.“采购订单数量
poschedulex-preq_no = con.
poschedulex-preq_item = con.
APPEND poschedulex.
CLEAR poschedulex.
AT END OF lifnr.

CALL FUNCTION ‘BAPI_PO_CREATE1′
EXPORTING
poheader               = poheader
poheaderx              = poheaderx
*         POADDRVENDOR           =
*         TESTRUN                =
*         MEMORY_UNCOMPLETE      =
*         MEMORY_COMPLETE        =
*         POEXPIMPHEADER         =
*         POEXPIMPHEADERX        =
*         VERSIONS               =
*         NO_MESSAGING           =
*         NO_MESSAGE_REQ         =
*         NO_AUTHORITY           =
*         NO_PRICE_FROM_PO       =
IMPORTING
exppurchaseorder       = epo
*         EXPHEADER              =
*         EXPPOEXPIMPHEADER      =
TABLES
return = return
poitem                 = poitem
poitemx                = poitemx
*         POADDRDELIVERY         =
poschedule             = poschedule
poschedulex            = poschedulex
*         poaccount              =  poaccount
*         POACCOUNTPROFITSEGMENT =
*         poaccountx             = poaccountx
*         POCONDHEADER           =
*         POCONDHEADERX          =
*         POCOND                 =
*         POCONDX                =
*         POLIMITS               =
*         POCONTRACTLIMITS       =
*         POSERVICES             =
*         POSRVACCESSVALUES      =
*         POSERVICESTEXT         =
*         EXTENSIONIN            =
*         EXTENSIONOUT           =
*         POEXPIMPITEM           =
*         POEXPIMPITEMX          =
*         POTEXTHEADER           =
*         potextitem             =  potextitem
*         ALLVERSIONS            =
*         POPARTNER              =
*         POCOMPONENTS           =
*         POCOMPONENTSX          =
*         POSHIPPING             =
*         POSHIPPINGX            =
*         POSHIPPINGEXP          =
.
LOOP AT return WHERE type = ‘E’ OR type = ‘A’.
ENDLOOP.
wa_data-tdline = ”.
IF sy-subrc = 0.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

LOOP AT return INTO l_return WHERE type = ‘E’ .
CONCATENATE wa_data-tdline l_return-message ‘;’ INTO wa_data-tdline.
ENDLOOP.
APPEND wa_data TO it_save_data.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
MOVE epo TO wa_data-ebeln2 .
MOVE sy-datum TO wa_data-bedat .
ENDIF.
MODIFY it_convert_data FROM wa_data.
REFRESH: poitem,poitemx,poschedule,poschedulex,
poheader,poheaderx,return.
CLEAR: it_convert_data, wa_data, row, poitem,poitemx,poschedule,poschedulex,
poheader,poheaderx,return.

ENDAT.
ENDLOOP.

ENDFORM. “ FRM_BAPI_CREATE_PO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值