0% found this document useful (0 votes)
20 views12 pages

33 Odata Curd

Uploaded by

Vinay Jooshhi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views12 pages

33 Odata Curd

Uploaded by

Vinay Jooshhi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

class ZCL_ZNOV_ODATA_DPC_EXT definition

public
inheriting from ZCL_ZNOV_ODATA_DPC
create public .

public section.
protected section.

methods ORDERITEMSSET_GET_ENTITYSET
redefinition .
methods PRODUCTSET_CREATE_ENTITY
redefinition .
methods PRODUCTSET_GET_ENTITY
redefinition .
methods PRODUCTSET_GET_ENTITYSET
redefinition .
methods PRODUCTSET_UPDATE_ENTITY
redefinition .
methods SALESORDERSET_GET_ENTITY
redefinition .
methods SALESORDERSET_GET_ENTITYSET
redefinition .
methods SUPPLIERSET_GET_ENTITY
redefinition .
methods SUPPLIERSET_GET_ENTITYSET
redefinition .
methods PRODUCTSET_DELETE_ENTITY
redefinition .
private section.
ENDCLASS.

CLASS ZCL_ZNOV_ODATA_DPC_EXT IMPLEMENTATION.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->ORDERITEMSSET_GET_ENTITYSET
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_FILTER_SELECT_OPTIONS TYPE /IWBEP/T_MGW_SELECT_OPTION
* | [--->] IS_PAGING TYPE /IWBEP/S_MGW_PAGING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [--->] IT_ORDER TYPE /IWBEP/T_MGW_SORTING_ORDER
* | [--->] IV_FILTER_STRING TYPE STRING
* | [--->] IV_SEARCH_STRING TYPE STRING
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITYSET(optional)
* | [<---] ET_ENTITYSET TYPE
ZCL_ZNOV_ODATA_MPC=>TT_ORDERITEMS
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_CONTEXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
METHOD orderitemsset_get_entityset.

DATA : lv_ord_id TYPE bapi_epm_so_id,


ls_header TYPE bapi_epm_so_header,
lt_items_data TYPE TABLE OF bapi_epm_so_item.

READ TABLE it_key_tab INTO DATA(ls_key) INDEX 1.

lv_ord_id = ls_key-value.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = lv_ord_id " C field
IMPORTING
output = lv_ord_id. " Internal display of INPUT, any
category

CALL FUNCTION 'BAPI_EPM_SO_GET_DETAIL'


EXPORTING
so_id = lv_ord_id
IMPORTING
headerdata = ls_header
TABLES
itemdata = lt_items_data
* RETURN =
.

MOVE-CORRESPONDING lt_items_data TO et_entityset.

ENDMETHOD.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->PRODUCTSET_CREATE_ENTITY
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY_C(optional)
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [--->] IO_DATA_PROVIDER TYPE REF TO
/IWBEP/IF_MGW_ENTRY_PROVIDER(optional)
* | [<---] ER_ENTITY TYPE
ZCL_ZNOV_ODATA_MPC=>TS_PRODUCT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method PRODUCTSET_CREATE_ENTITY.

data: ls_entity type zcl_znov_odata_mpc=>ts_product,


ls_product type bapi_epm_product_header,
lt_return type table of bapiret2.

"Step 1: Read all the data incoming


io_data_provider->read_entry_data(
IMPORTING
es_data = ls_entity
).

"Step 2: Pre-checks if needed


IF ls_entity-name is INITIAL.
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
message_unlimited = |Please provide a valid Name of product|
.
ENDIF.

MOVE-CORRESPONDING ls_entity to ls_product.

"Step 3: Call BAPI/Class/ABAP Code to insert data


CALL FUNCTION 'BAPI_EPM_PRODUCT_CREATE'
EXPORTING
headerdata = ls_product
TABLES
RETURN = lt_return
.

"Step 4: Error Handling


IF lt_return is NOT INITIAL.

me->mo_context->get_message_container( )->add_messages_from_bapi(
EXPORTING
it_bapi_messages = lt_return
).

RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception


EXPORTING
message_container = me->mo_context->get_message_container( )
.
ENDIF.

"Step 5: Map the response back


MOVE-CORRESPONDING ls_entity to er_entity.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->PRODUCTSET_DELETE_ENTITY
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY_D(optional)
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method PRODUCTSET_DELETE_ENTITY.

data: lv_prodid TYPE bapi_epm_product_id.

READ TABLE it_key_tab INTO data(ls_key) INDEX 1.


lv_prodid = ls_key-value.

CALL FUNCTION 'BAPI_EPM_PRODUCT_DELETE'


EXPORTING
product_id = lv_prodid
* PERSIST_TO_DB = ABAP_TRUE
* TABLES
* RETURN =
.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->PRODUCTSET_GET_ENTITY
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IO_REQUEST_OBJECT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [<---] ER_ENTITY TYPE
ZCL_ZNOV_ODATA_MPC=>TS_PRODUCT
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_ENTITY_CNTXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method PRODUCTSET_GET_ENTITY.

"Step 1: Declare variables


data: lv_prod_id TYPE bapi_epm_product_id,
ls_header type bapi_epm_product_header,
lt_return type table of bapiret2.

"Step 2: Whatever value of the key was passed, receive it here in a structure
READ TABLE IT_KEY_TAB INTO data(ls_key) INDEX 1.

"Step 3: take key in a variable


lv_prod_id = ls_key-value.

IF lv_prod_id is INITIAL.

RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception


EXPORTING
message_unlimited = |Hey Amigo! please pass a valid id|
.

ENDIF.

"Step 4: BAPI/FM/Select to prepare data


call FUNCTION 'BAPI_EPM_PRODUCT_GET_DETAIL'
EXPORTING
product_id = lv_prod_id " EPM: Product header data
of BOR object SEPM002
IMPORTING
headerdata = ls_header " EPM: Product header data
of BOR object SEPM002
TABLES
* conversion_factors = " EPM: Product conversion factor
data of BOR object SEPM002
return = lt_return " Return Parameter
.

"something gone wrong inside BAPI


IF lt_return IS NOT INITIAL.

me->mo_context->get_message_container( )->add_messages_from_bapi(
EXPORTING
it_bapi_messages = lt_return " Return parameter
table
).

RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception


EXPORTING
message_container = me->mo_context->get_message_container( )
.
ENDIF.
"Step 5: Map data to output = Response
MOVE-CORRESPONDING ls_header to ER_ENTITY.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->PRODUCTSET_GET_ENTITYSET
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_FILTER_SELECT_OPTIONS TYPE /IWBEP/T_MGW_SELECT_OPTION
* | [--->] IS_PAGING TYPE /IWBEP/S_MGW_PAGING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [--->] IT_ORDER TYPE /IWBEP/T_MGW_SORTING_ORDER
* | [--->] IV_FILTER_STRING TYPE STRING
* | [--->] IV_SEARCH_STRING TYPE STRING
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITYSET(optional)
* | [<---] ET_ENTITYSET TYPE
ZCL_ZNOV_ODATA_MPC=>TT_PRODUCT
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_CONTEXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method PRODUCTSET_GET_ENTITYSET.

"Step 1: Declare data types


data : lt_bapi_products type table of bapi_epm_product_header,
lv_top type i,
lv_skip type i,
lv_total type i,
ls_row type BAPI_EPM_MAX_ROWS,
lt_cat_range type TABLE OF BAPI_EPM_PRODUCT_CATEG_RANGE,
ls_cat_range type BAPI_EPM_PRODUCT_CATEG_RANGE,
ls_entity type zcl_znov_odata_mpc=>ts_product.

lv_top = IS_PAGING-top.
lv_skip = IS_PAGING-skip.
lv_total = lv_top + lv_skip.

ls_row-bapimaxrow = lv_total.

read TABLE IT_FILTER_SELECT_OPTIONS into data(ls_filter_sel) with key property


= 'CATEGORY'.
IF sy-subrc = 0.
MOVE-CORRESPONDING ls_filter_sel-select_options to lt_cat_range.
ENDIF.

"Step 2: Calling the class/ Function Module / Select to prepare data


call FUNCTION 'BAPI_EPM_PRODUCT_GET_LIST'
EXPORTING
max_rows = ls_row " Maximum number of lines of
hits
TABLES
headerdata = lt_bapi_products " EPM: Product
header data of BOR object SEPM002
* selparamproductid = " EPM: BAPI range table for
product ids
* selparamsuppliernames = " EPM: BAPI range table for
company names
selparamcategories = lt_cat_range " EPM: Range table
for product categories
* return = " Return Parameter
.

IF lv_total is NOT INITIAL.


LOOP AT lt_bapi_products INTO DATA(wa) from lv_skip + 1 to lv_total.
MOVE-CORRESPONDING wa to ls_entity.
append ls_entity to et_entityset.
ENDLOOP.
else.
"Step 3: Map our data to output of odata
MOVE-CORRESPONDING lt_bapi_products to ET_ENTITYSET.
ENDIF.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->PRODUCTSET_UPDATE_ENTITY
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY_U(optional)
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [--->] IO_DATA_PROVIDER TYPE REF TO
/IWBEP/IF_MGW_ENTRY_PROVIDER(optional)
* | [<---] ER_ENTITY TYPE
ZCL_ZNOV_ODATA_MPC=>TS_PRODUCT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method PRODUCTSET_UPDATE_ENTITY.

data: ls_product type bapi_epm_product_header,


ls_prod_x type bapi_epm_product_headerx,
ls_entity type zcl_znov_odata_mpc=>ts_product,
lv_prodid TYPE bapi_epm_product_id.

READ TABLE it_key_tab INTO data(ls_key) INDEX 1.


lv_prodid = ls_key-value.

io_data_provider->read_entry_data(
IMPORTING
es_data = ls_entity
).

MOVE-CORRESPONDING ls_entity to ls_product.


ls_prod_x-product_id = lv_prodid.
ls_prod_x-price = abap_true.
ls_prod_x-description = abap_true.

CALL FUNCTION 'BAPI_EPM_PRODUCT_CHANGE'


EXPORTING
product_id = lv_prodid
HEADERDATA = ls_product
HEADERDATAX = ls_prod_x
* PERSIST_TO_DB = ABAP_TRUE
* TABLES
* CONVERSION_FACTORS =
* CONVERSION_FACTORSX =
* RETURN =
.

MOVE-CORRESPONDING ls_entity to er_entity.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->SALESORDERSET_GET_ENTITY
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IO_REQUEST_OBJECT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [<---] ER_ENTITY TYPE
ZCL_ZNOV_ODATA_MPC=>TS_SALESORDER
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_ENTITY_CNTXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method SALESORDERSET_GET_ENTITY.

data : lv_ord_id type bapi_epm_so_id,


ls_header type bapi_epm_so_header.

READ TABLE it_key_tab INTO data(ls_key) INDEX 1.

lv_ord_id = ls_key-value.

call FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = lv_ord_id " C field
IMPORTING
output = lv_ord_id " Internal display of INPUT, any
category
.

CALL FUNCTION 'BAPI_EPM_SO_GET_DETAIL'


EXPORTING
so_id = lv_ord_id
IMPORTING
HEADERDATA = ls_header
* TABLES
* ITEMDATA =
* RETURN =
.

MOVE-CORRESPONDING ls_header to er_entity.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->SALESORDERSET_GET_ENTITYSET
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_FILTER_SELECT_OPTIONS TYPE /IWBEP/T_MGW_SELECT_OPTION
* | [--->] IS_PAGING TYPE /IWBEP/S_MGW_PAGING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [--->] IT_ORDER TYPE /IWBEP/T_MGW_SORTING_ORDER
* | [--->] IV_FILTER_STRING TYPE STRING
* | [--->] IV_SEARCH_STRING TYPE STRING
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITYSET(optional)
* | [<---] ET_ENTITYSET TYPE
ZCL_ZNOV_ODATA_MPC=>TT_SALESORDER
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_CONTEXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method SALESORDERSET_GET_ENTITYSET.

data ls_entity type zcl_znov_odata_mpc=>ts_salesorder.

select * UP TO 20 ROWS from snwd_so into table @data(lt_orders).

LOOP AT lt_orders INTO data(ls_orders).


MOVE-CORRESPONDING ls_orders to ls_entity.

SELECT SINGLE bp_id, company_name from snwd_bpa into


(@ls_entity-buyer_id, @ls_entity-buyer_name)
WHERE node_key = @ls_orders-buyer_guid.

append ls_entity to et_entityset.


ENDLOOP.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->SUPPLIERSET_GET_ENTITY
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IO_REQUEST_OBJECT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [<---] ER_ENTITY TYPE
ZCL_ZNOV_ODATA_MPC=>TS_SUPPLIER
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_ENTITY_CNTXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
METHOD supplierset_get_entity.

"Step 1: Declare variables


DATA: lv_bp_id TYPE bapi_epm_bp_id,
lv_prod_id TYPE bapi_epm_product_id,
ls_product TYPE bapi_epm_product_header,
ls_header TYPE bapi_epm_bp_header,
lt_return TYPE TABLE OF bapiret2.

"Step 2: Whatever value of the key was passed, receive it here in a structure
READ TABLE it_key_tab INTO DATA(ls_key) WITH KEY name = 'BP_ID'.

IF sy-subrc = 0.
"Step 3: take key in a variable
lv_bp_id = ls_key-value.
ELSE.
READ TABLE it_key_tab INTO ls_key WITH KEY name = 'PRODUCT_ID'.
IF sy-subrc = 0.

lv_prod_id = ls_key-value.

CALL FUNCTION 'BAPI_EPM_PRODUCT_GET_DETAIL'


EXPORTING
product_id = lv_prod_id " EPM: Product header data of
BOR object SEPM002
IMPORTING
headerdata = ls_product. " EPM: Product header data of
BOR object SEPM002

lv_bp_id = ls_product-supplier_id.
ENDIF.
ENDIF.

IF lv_bp_id IS INITIAL.

RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception


EXPORTING
message_unlimited = |Hey Amigo! please pass a valid id|.

ENDIF.

"Step 4: BAPI/FM/Select to prepare data


CALL FUNCTION 'BAPI_EPM_BP_GET_DETAIL'
EXPORTING
bp_id = lv_bp_id " EPM: Business Partner ID to be used
in BAPIs
IMPORTING
headerdata = ls_header " EPM: Business Partner header data
( BOR SEPM004 )
TABLES
* contactdata = " EPM: Business Partner contact data ( BOR
SEPM004 )
return = lt_return. " Return Parameter

"something gone wrong inside BAPI


IF lt_return IS NOT INITIAL.

me->mo_context->get_message_container( )->add_messages_from_bapi(
EXPORTING
it_bapi_messages = lt_return " Return parameter
table
).

RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception


EXPORTING
message_container = me->mo_context->get_message_container( ).
ENDIF.
"Step 5: Map data to output = Response
MOVE-CORRESPONDING ls_header TO er_entity.

ENDMETHOD.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZNOV_ODATA_DPC_EXT->SUPPLIERSET_GET_ENTITYSET
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING
* | [--->] IV_ENTITY_SET_NAME TYPE STRING
* | [--->] IV_SOURCE_NAME TYPE STRING
* | [--->] IT_FILTER_SELECT_OPTIONS TYPE /IWBEP/T_MGW_SELECT_OPTION
* | [--->] IS_PAGING TYPE /IWBEP/S_MGW_PAGING
* | [--->] IT_KEY_TAB TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR
* | [--->] IT_NAVIGATION_PATH TYPE /IWBEP/T_MGW_NAVIGATION_PATH
* | [--->] IT_ORDER TYPE /IWBEP/T_MGW_SORTING_ORDER
* | [--->] IV_FILTER_STRING TYPE STRING
* | [--->] IV_SEARCH_STRING TYPE STRING
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITYSET(optional)
* | [<---] ET_ENTITYSET TYPE
ZCL_ZNOV_ODATA_MPC=>TT_SUPPLIER
* | [<---] ES_RESPONSE_CONTEXT TYPE
/IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_CONTEXT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method SUPPLIERSET_GET_ENTITYSET.

"Step 1: Declare data types


data : lt_bapi_bps type table of bapi_epm_bp_header,
lv_top type i,
lv_skip type i,
lv_total type i,
ls_row type BAPI_EPM_MAX_ROWS,
ls_entity type zcl_znov_odata_mpc=>ts_supplier.

lv_top = IS_PAGING-top.
lv_skip = IS_PAGING-skip.
lv_total = lv_top + lv_skip.

ls_row-bapimaxrow = lv_total.

"Step 2: Calling the class/ Function Module / Select to prepare data


call FUNCTION 'BAPI_EPM_BP_GET_LIST'
EXPORTING
max_rows = ls_row " EPM: Max row specifictation
TABLES
bpheaderdata = lt_bapi_bps " EPM: Business Partner
header data ( BOR SEPM004 )
.

IF lv_total is NOT INITIAL.


LOOP AT lt_bapi_bps INTO DATA(wa) from lv_skip + 1 to lv_total.
MOVE-CORRESPONDING wa to ls_entity.
append ls_entity to et_entityset.
ENDLOOP.
else.
"Step 3: Map our data to output of odata
MOVE-CORRESPONDING lt_bapi_bps to ET_ENTITYSET.
ENDIF.
endmethod.
ENDCLASS.

You might also like