Example: BAPI Interface and Function Module 
The definition of a BAPI in the Business Object Repository and its associated function module in the Function Builder must correspond to each other. This example shows the relationships between the method and the function module.
Business Object PurchaseOrder with Key Fields and Methods
The graphic below shows the SAP business object type PurchaseOrder (BUS2012) in the BAPI Explorer view of the BOR.

Note the following:
Function Module BAPI_PO_GETDETAIL
This function module BAPI_PO_GETDETAIL implements the BAPI GetDetail() of the business object type PurchaseOrder.
Keep in mind the following points when reading the source code extract below:
Program Code
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.