函数使用十四:BAPI_PO_CREATE1

*&---------------------------------------------------------------------*
*& Report  ZBAPI_PO_CREATE2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
"场景:因需求,采购部门将各业务部门的采购需求汇总,单独创建采购订单。
"根据
REPORT  zbapi_po_create2.

DATA:gw_head TYPE bapimepoheader,
     gw_headx TYPE bapimepoheaderx,
     gt_item TYPE TABLE OF bapimepoitem,
     gw_item LIKE LINE OF gt_item,
     gt_itemx TYPE TABLE OF bapimepoitemx,
     gw_itemx LIKE LINE OF gt_itemx,
     gt_return TYPE TABLE OF bapiret2,
     gw_return LIKE LINE OF gt_return,
     gt_sch    TYPE TABLE OF bapimeposchedule,
     gw_sch  LIKE LINE OF gt_sch,
     gt_schx TYPE TABLE OF bapimeposchedulx,
     gw_schx LIKE LINE OF gt_schx,
     gt_comp  TYPE TABLE OF bapimepocomponent,
     gw_comp LIKE LINE OF gt_comp,
     gt_compx TYPE TABLE OF bapimepocomponentx,
     gw_compx LIKE LINE OF gt_compx,
     gv_po    TYPE ebeln.

"header
gw_head-comp_code = '6375'.
*gw_head-comp_code = '8380'.
gw_head-doc_type = 'NB'.
gw_head-status = 'B'.
gw_head-creat_date = sy-datum.
gw_head-doc_date = sy-datum.
gw_head-purch_org = '6375'.
*gw_head-purch_org = '8380'.
gw_head-pur_group = 'D01'.
*gw_head-pur_group = '137'.
gw_head-vendor = '0000401210'.
*gw_head-vendor = '0000100031'.
gw_head-langu = 'E'.
gw_head-ref_1 = 'E'."Your Reference

gw_headx-comp_code = 'X'.
gw_headx-doc_type = 'X'.
gw_headx-status = 'X'.
gw_headx-creat_date = 'X'.
gw_headx-doc_date = 'X'.
gw_headx-purch_org = 'X'.
gw_headx-pur_group = 'X'.
gw_headx-vendor = 'X'.
gw_headx-langu = 'X'.
gw_headx-ref_1 = 'X'.

"PO行项目
gw_item-po_item = 10.
gw_item-material = 'K300000'.
gw_item-item_cat = 'L'.
*gw_item-material = 'T60602475'.
gw_item-plant = '6375'.
*gw_item-plant = '8380'.
*gw_item-STGE_LOC = '8380'.
gw_item-quantity = 2.
gw_item-net_price = 100.
gw_item-price_unit = 1.
gw_item-preq_no = '0010001627'.
gw_item-preq_item = 10.
*gw_item-batch = 'HS'.
APPEND gw_item TO gt_item.CLEAR:gw_item.

gw_itemx-po_item = 10.
gw_itemx-material = 'X'.
gw_itemx-item_cat = 'X'.
gw_itemx-plant = 'X'.
*gw_item-STGE_LOC = '8380'.
gw_itemx-quantity = 'X'.
gw_itemx-net_price = 'X'.
gw_itemx-price_unit = 'X'.
gw_itemx-preq_no = 'X'.
gw_itemx-preq_item = 'X'.
*gw_itemx-batch = 'X'.
APPEND gw_itemx TO gt_itemx.CLEAR:gw_itemx.

"PO计划行
gw_sch-po_item = 10.
gw_sch-sched_line = 1.
gw_sch-delivery_date = '20210605'.
gw_sch-com_date = sy-datum + 1.
gw_sch-po_date = sy-datum.
gw_sch-quantity = 2.
gw_sch-preq_no = '0010001627'.
gw_sch-preq_item = 10.
gw_sch-com_qty = 2.
APPEND gw_sch TO gt_sch.

gw_schx-po_item = 10.
gw_schx-sched_line = 1.
gw_schx-delivery_date = 'X'.
gw_schx-com_date = 'X'.
gw_schx-po_date = 'X'.
gw_schx-quantity = 'X'.
gw_schx-preq_no = 'X'.
gw_schx-preq_item = 'X'.
gw_schx-com_qty = 'X'.
APPEND gw_schx TO gt_schx.

*gw_comp-po_item = 10.
*gw_comp-sched_line = 1.
*gw_comp-item_no = 10.
*gw_comp-material = 'K100000'.
*gw_comp-entry_quantity = 1.
*gw_comp-plant = '6375'.
*gw_comp-change_id = 'I'.
**gw_comp-plant = '8380'.
*APPEND gw_comp TO gt_comp.
*
*gw_compx-po_item = 10.
*gw_compx-sched_line = 1.
*gw_compx-item_no = 10.
*gw_compx-material = 'X'.
*gw_compx-entry_quantity = 'X'.
*gw_compx-plant = 'X'.
*gw_compx-change_id = 'X'.
*APPEND gw_compx TO gt_compx.

CALL FUNCTION 'BAPI_PO_CREATE1'
  EXPORTING
    poheader         = gw_head
    poheaderx        = gw_headx
  IMPORTING
    exppurchaseorder = gv_po
  TABLES
    return           = gt_return
    poitem           = gt_item
    poitemx          = gt_itemx
    poschedule       = gt_sch
    poschedulex      = gt_schx
    pocomponents     = gt_comp
    pocomponentsx    = gt_compx.
READ TABLE gt_return INTO gw_return WITH KEY type = 'E'.
IF sy-subrc = 0.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
  WRITE gv_po.
ENDIF.
^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
原文地址:https://www.cnblogs.com/sapSB/p/15497471.html