Beispiel: BAPI-Schnittstelle und Funktionsbaustein 

Die Definition eines BAPIs im Business Object Repository und der zugehörige Funktionsbaustein im Function Builder müssen genau aufeinander abgestimmt sein. Dieses Beispiel gibt einen Überblick über die Zusammenhänge zwischen Methode und Funktionsbaustein.

Business-Objekt PurchaseOrder mit Schlüsselfeld und Methoden

Folgende Abbildung zeigt zunächst den SAP-Business-Objekttyp PurchaseOrder (BUS2012) in der BAPI Explorer-Sicht des BORs.

Beachten Sie folgendes:

Funktionsbaustein BAPI_PO_GETDETAIL

Der Funktionsbaustein BAPI_PO_GETDETAIL implementiert das BAPI GetDetail() zum Business-Objekttyp PurchaseOrder.

Beachten Sie folgendes in nachstehendem Auszug aus dem Programmcode:

Programmcode

FUNCTION BAPI_PO_GETDETAIL.
*"----------------------------------------------------------------------
*"
*"local interface:
*" IMPORTING
*" VALUE(PURCHASEORDER) LIKE BAPIEKKO-PO_NUMBER
*" VALUE(ITEMS) LIKE BAPIMMPARA-SELECTION DEFAULT 'X'
*" VALUE(ACCOUNT_ASSIGNMENT) LIKE BAPIMMPARA-SELECTION
*" DEFAULT SPACE
*" VALUE(SCHEDULES) LIKE BAPIMMPARA-SELECTION
*" DEFAULT SPACE
*" VALUE(HISTORY) LIKE BAPIMMPARA-SELECTION
*" DEFAULT SPACE
*" VALUE(ITEM_TEXTS) LIKE BAPIMMPARA-SELECTION
*" DEFAULT SPACE
*" VALUE(HEADER_TEXTS) LIKE BAPIMMPARA-SELECTION
*" DEFAULT SPACE
*" VALUE(SERVICES) LIKE BAPIMMPARA-SELECTION
*" DEFAULT SPACE

*" EXPORTING
*" VALUE(PO_HEADER) LIKE BAPIEKKOL STRUCTURE BAPIEKKOL
*" VALUE(PO_ADDRESS) LIKE BAPIADDRESS
*" STRUCTURE BAPIADDRESS

*" TABLES
*" PO_HEADER_TEXTS STRUCTURE BAPIEKKOTX OPTIONAL
*" PO_ITEMS STRUCTURE BAPIEKPO OPTIONAL
*" PO_ITEM_ACCOUNT_ASSIGNMENT STRUCTURE BAPIEKKN
*" OPTIONAL
*" PO_ITEM_SCHEDULES STRUCTURE BAPIEKET OPTIONAL
*" PO_ITEM_TEXTS STRUCTURE BAPIEKPOTX OPTIONAL
*" PO_ITEM_HISTORY STRUCTURE BAPIEKBE OPTIONAL
*" PO_ITEM_HISTORY_TOTALS STRUCTURE BAPIEKBES OPTIONAL
*" PO_ITEM_LIMITS STRUCTURE BAPIESUH OPTIONAL
*" PO_ITEM_CONTRACT_LIMITS STRUCTURE BAPIESUC OPTIONAL
*" PO_ITEM_SERVICES STRUCTURE BAPIESLL OPTIONAL
*" PO_ITEM_SRV_ACCASS_VALUES STRUCTURE BAPIESKL
*" OPTIONAL
*" RETURN STRUCTURE BAPIRETURN OPTIONAL

*"----------------------------------------------------------------------

* reset all structures and tables

CLEAR: PO_HEADER, PO_ADDRESS, PO_ITEMS, PO_HEADER_TEXTS,
PO_ITEM_ACCOUNT_ASSIGNMENT, PO_ITEM_SCHEDULES,
PO_ITEM_TEXTS, RETURN, EKPOKEY, PO_ITEM_HISTORY,
PO_ITEM_HISTORY_TOTALS, PO_ITEM_LIMITS, PO_ITEM_SERVICES,
PO_ITEM_CONTRACT_LIMITS, PO_ITEM_SRV_ACCASS_VALUES,
CEKKO, CEKPO, CEKKN, CEKET, CEKAN, SEKKO, SEKPO, CADR.

REFRESH:
PO_HEADER_TEXTS, PO_ITEM_ACCOUNT_ASSIGNMENT, PO_ITEM_SCHEDULES,
PO_ITEM_TEXTS, PO_ITEMS, RETURN, EKPOKEY, PO_ITEM_HISTORY,
PO_ITEM_HISTORY_TOTALS, PO_ITEM_LIMITS, PO_ITEM_SERVICES,
PO_ITEM_CONTRACT_LIMITS, PO_ITEM_SRV_ACCASS_VALUES,
CEKKN, CEKET, SEKKO, SEKPO.

* select the header data from database

SELECT SINGLE * FROM EKKO WHERE EBELN EQ PURCHASEORDER.
IF SY-SUBRC NE 0.
PERFORM FILL_BAPIRETURN TABLES RETURN
USING 'E'
'W5'
'107'
PURCHASEORDER
SPACE
SPACE
SPACE.
EXIT.
ENDIF.

* authority check

PERFORM PO_AUTHORITY_HEADER TABLES RETURN
USING EKKO.
IF NO_AUTHORITY NE SPACE.
PERFORM FILL_BAPIRETURN TABLES RETURN
USING 'E'
'W5'
'033'
SPACE
SPACE
SPACE
SPACE.
EXIT.
ENDIF.

…….

…….

SORT PO_ITEMS BY PO_NUMBER PO_ITEM.
SORT PO_ITEM_ACCOUNT_ASSIGNMENT BY PO_ITEM SERIAL_NO.
SORT PO_ITEM_SCHEDULES BY PO_ITEM SERIAL_NO.
SORT PO_ITEM_HISTORY BY PO_ITEM SERIAL_NO.
SORT PO_ITEM_HISTORY_TOTALS BY PO_ITEM SERIAL_NO.
SORT PO_ITEM_LIMITS BY PCKG_NO
SORT PO_ITEM_CONTRACT_LIMITS BY PCKG_NO LINE_NO.
SORT PO_ITEM_SERVICES BY PCKG_NO LINE_NO.
SORT PO_ITEM_SRV_ACCASS_VALUES BY PCKG_NO LINE_NO SERNO_LINE.

ENDFUNCTION.