sap 内部采购订单过账abap代码实现
时间: 2023-10-05 11:04:37 浏览: 56
以下是 SAP 采购订单过账的 ABAP 代码实现:
1. 首先需要定义一些变量,并且获取采购订单的相关信息。
```
DATA: ls_header TYPE bapi_po_header,
lt_poitem TYPE TABLE OF bapi_po_item,
ls_poitem TYPE bapi_po_item,
lt_account TYPE TABLE OF bapi_po_account,
ls_account TYPE bapi_po_account.
ls_header-po_number = '采购订单号'.
ls_header-doc_date = sy-datum.
ls_header-posting_date = sy-datum.
ls_header-username = sy-uname.
CALL FUNCTION 'BAPI_PO_GETDETAIL'
EXPORTING
purchaseorder = ls_header-po_number
IMPORTING
po_header = ls_header
po_items = lt_poitem.
LOOP AT lt_poitem INTO ls_poitem.
ls_poitem-po_number = ls_header-po_number.
ls_poitem-doc_date = sy-datum.
ls_poitem-posting_date = sy-datum.
CALL FUNCTION 'BAPI_PO_GETACCOUNT'
EXPORTING
purchaseorder = ls_header-po_number
po_item = ls_poitem-po_item
TABLES
po_account = lt_account.
LOOP AT lt_account INTO ls_account.
ls_account-po_number = ls_header-po_number.
ls_account-po_item = ls_poitem-po_item.
ls_account-doc_date = sy-datum.
ls_account-posting_date = sy-datum.
ENDLOOP.
ENDLOOP.
```
2. 之后需要调用 `BAPI_PO_CHANGE` 函数进行采购订单的过账。
```
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = ls_header-po_number
headerdata = ls_header
TABLES
return = lt_return
poitem = lt_poitem
poaccount = lt_account.
```
3. 最后需要判断过账是否成功。
```
IF lt_return[] IS INITIAL.
COMMIT WORK.
WRITE: / '采购订单 ', ls_header-po_number, ' 过账成功。'.
ELSE.
ROLLBACK WORK.
WRITE: / '采购订单 ', ls_header-po_number, ' 过账失败。'.
ENDIF.
```
以上就是 SAP 采购订单过账的 ABAP 代码实现。需要注意的是,实现过程中需要根据实际情况进行相应的修改。