bapi_po_create1根据PR创建PO
2012-11-30 15:34
981 查看
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
解决办法: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
相关文章推荐
- BAPI调用 - 创建po的bapi BAPI_PO_CREATE1
- 根据BAPI_PO_CREATE1创建采购订单
- 根据BAPI_PO_CREATE1创建采购订单
- 根据BAPI_PO_CREATE1创建采购订单
- SE37 创建PO订单BAPI_PO_CREATE1
- 创建po的bapi BAPI_PO_CREATE1 刚刚sophie提起搜索相关
- 函数使用一:采购订单BAPI_PO_CREATE1
- BAPI / RFC with Delphi(系列之六)--TSAPFunctions使用BAPI创建PO(有登录对话框的delphi源代码)
- BAPI_PO_CREATE创建采购订单
- 函数使用一:采购订单BAPI_PO_CREATE1
- ABAP模块-根据销售订单创建交货单BAPI
- BAPI / RFC with Delphi(系列之六)--TSAPFunctions使用BAPI创建PO(有登录对话框的delphi源代码)
- EBS标准功能-->PR自动创建PO的逻辑
- BAPI / RFC with Delphi(系列之六)--TSAPFunctions使用BAPI创建PO(有登录对话框的delphi源代码)
- BAPI_PO_CREATE1 创建PO ch_memory_complete = ‘x',导致hold on 解决方案,
- 关于BAPI_PO_CREATE1
- BAPI_PO_CREATE1 批量创建采购订单
- 使用BAPI_REQUISITION_CREATE批量创建PR
- BAPI_PO_CREATE1 批量创建采购订单(可一个PO采购多个材料)
- 根据采购订单创建外向交货单的BAPI