Implement the GET_ENTITYSET method for the SalesOrders entity.
method SALESORDERS_GET_ENTITYSET. field-symbols: <fs_key> type /iwbep/s_mgw_name_value_pair. data: ls_company_name type SNWD_COMPANY_NAME. data: lt_range type table of BAPI_EPM_CUSTOMER_NAME_RANGE, ls_range type BAPI_EPM_CUSTOMER_NAME_RANGE, lv_bp_id(10) type N. * Return all SalesOrders if no navigation path. if it_navigation_path is initial. CALL FUNCTION 'BAPI_EPM_SO_GET_LIST' * EXPORTING * MAX_ROWS = TABLES SOHEADERDATA = et_entityset * SOITEMDATA = * SELPARAMSOID = * SELPARAMBUYERNAME = * SELPARAMPRODUCTID = * RETURN = . else. * Navigation path from BusinessPartners. Return sales orders for a specific business partner. * However, can only lookup using "Company Name", not BP_ID. So need * to get Company Name using BP_ID first. read table it_key_tab assigning <fs_key> index 1. lv_bp_id = <fs_key>-value. * Look up buyer name based on BP_ID select single company_name from snwd_bpa into ls_company_name where bp_id = lv_bp_id. ls_range-sign = 'I'. ls_range-option = 'EQ'. ls_range-low = ls_company_name. append ls_range to lt_range. CALL FUNCTION 'BAPI_EPM_SO_GET_LIST' * EXPORTING * MAX_ROWS = TABLES SOHEADERDATA = et_entityset * SOITEMDATA = * SELPARAMSOID = SELPARAMBUYERNAME = lt_range * SELPARAMPRODUCTID = * RETURN = . endif. endmethod.
For sales orders, the resulting list of sales order entities depends primarily on whether a navigation path (from BusinessPartners) is followed or not. If so, the key of the BusinessPartner instance must be passed in to retrieve sales orders that belong to that business partner.
The function you want to use to return the sales order list, BAPI_EPM_SO_GET_LIST, has a selection parameter for the buyer name (or company name), not the BP_ID. A duplicate company name may return sales orders that belongs to a different buyer. If there is no navigation path, all sales orders entities are returned.