0% found this document useful (0 votes)
24 views14 pages

37 PUT Delete Image and FM

The document describes code for extending a DPC class in ABAP. It includes redefinitions of runtime methods to add custom logic for actions and data retrieval. It also includes protected methods for entity set retrieval and creation that interface with BAPIs.

Uploaded by

janilkumar
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)
24 views14 pages

37 PUT Delete Image and FM

The document describes code for extending a DPC class in ABAP. It includes redefinitions of runtime methods to add custom logic for actions and data retrieval. It also includes protected methods for entity set retrieval and creation that interface with BAPIs.

Uploaded by

janilkumar
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/ 14

MPC EXT Code

method DEFINE.

super->define( ).

"extra code to mark property for image and type


data(lo_entity) = me->model->get_entity_type( 'Product' ).
lo_entity->get_property( iv_property_name = 'PRODUCT_PIC_URL' )-
>set_as_content_source( ).
lo_entity->get_property( iv_property_name = 'MIME_TYPE' )->set_as_content_type(
).

endmethod.

DPC EXT Code

class ZCL_ZJAN_2021_DPC_EXT definition


public
inheriting from ZCL_ZJAN_2021_DPC
create public .

public section.

methods /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM
redefinition .
methods /IWBEP/IF_MGW_APPL_SRV_RUNTIME~EXECUTE_ACTION
redefinition .
protected section.

methods ORDERITEMSET_GET_ENTITYSET
redefinition .
methods PRODUCTSET_CREATE_ENTITY
redefinition .
methods PRODUCTSET_DELETE_ENTITY
redefinition .
methods PRODUCTSET_GET_ENTITY
redefinition .
methods PRODUCTSET_GET_ENTITYSET
redefinition .
methods PRODUCTSET_UPDATE_ENTITY
redefinition .
methods SUPPLIERSET_GET_ENTITY
redefinition .
methods SUPPLIERSET_GET_ENTITYSET
redefinition .
private section.
ENDCLASS.

CLASS ZCL_ZJAN_2021_DPC_EXT IMPLEMENTATION.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Public Method
ZCL_ZJAN_2021_DPC_EXT->/IWBEP/IF_MGW_APPL_SRV_RUNTIME~EXECUTE_ACTION
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ACTION_NAME TYPE STRING(optional)
* | [--->] IT_PARAMETER TYPE
/IWBEP/T_MGW_NAME_VALUE_PAIR(optional)
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_FUNC_IMPORT(optional)
* | [<---] ER_DATA TYPE REF TO DATA
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
METHOD /iwbep/if_mgw_appl_srv_runtime~execute_action.

DATA: lv_prod_id TYPE bapi_epm_product_id,


ls_header TYPE bapi_epm_product_header,
ls_entity TYPE zcl_zjan_2021_mpc=>ts_product.

CASE iv_action_name.
WHEN 'GetMostExpensiveProduct'.

SELECT SINGLE product_id INTO lv_prod_id FROM snwd_pd WHERE


price = ( SELECT MAX( price ) from snwd_pd ).

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

MOVE-CORRESPONDING ls_header TO ls_entity.

me->copy_data_to_ref(
EXPORTING
is_data = ls_entity
CHANGING
cr_data = er_data
).
WHEN OTHERS.
ENDCASE.

ENDMETHOD.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Public Method
ZCL_ZJAN_2021_DPC_EXT->/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM
*
+----------------------------------------------------------------------------------
---------------+
* | [--->] IV_ENTITY_NAME TYPE STRING(optional)
* | [--->] IV_ENTITY_SET_NAME TYPE STRING(optional)
* | [--->] IV_SOURCE_NAME TYPE STRING(optional)
* | [--->] IT_KEY_TAB TYPE
/IWBEP/T_MGW_NAME_VALUE_PAIR(optional)
* | [--->] IT_NAVIGATION_PATH TYPE
/IWBEP/T_MGW_NAVIGATION_PATH(optional)
* | [--->] IO_TECH_REQUEST_CONTEXT TYPE REF TO
/IWBEP/IF_MGW_REQ_ENTITY(optional)
* | [<---] ER_STREAM TYPE REF TO DATA
* | [<---] 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 /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM.

data: lv_prod_id TYPE bapi_epm_product_id,


ls_media type ty_s_media_resource,
ls_header type bapi_epm_product_header.

"Request
READ TABLE it_key_tab INTO data(ls_key) INDEX 1.
lv_prod_id = ls_key-value.

"Processing
CALL FUNCTION 'BAPI_EPM_PRODUCT_GET_DETAIL'
EXPORTING
product_id = lv_prod_id
IMPORTING
HEADERDATA = ls_header
.

cl_mime_repository_api=>get_api( )->get(
EXPORTING
i_url = ls_header-product_pic_url " Object
URL
IMPORTING
e_content = ls_media-value " Object Contents
e_mime_type = ls_media-mime_type " MIME Type
).

"Response
me->copy_data_to_ref(
EXPORTING
is_data = ls_media
CHANGING
cr_data = er_stream
).

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_DPC_EXT->ORDERITEMSET_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_ZJAN_2021_MPC=>TT_ORDERITEM
* | [<---] 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 ORDERITEMSET_GET_ENTITYSET.

data : lv_product_id type BAPI_EPM_PRODUCT_id,


lt_range_prod TYPE TABLE OF BAPI_EPM_PRODUCT_ID_RANGE,
ls_bapi_max type BAPI_EPM_MAX_ROWS,
lt_ord_items type TABLE OF BAPI_EPM_SO_ITEM.

READ TABLE IT_KEY_TAB INTO data(ls_key) INDEX 1.


lv_product_id = ls_key-value.
ls_bapi_max-bapimaxrow = 5.

append VALUE #( sign = 'I' option = 'EQ' LOW = lv_product_id


) to lt_range_prod.

CALL FUNCTION 'BAPI_EPM_SO_GET_LIST'


EXPORTING
MAX_ROWS = ls_bapi_max
TABLES
* SOHEADERDATA =
SOITEMDATA = lt_ord_items
* SELPARAMSOID =
* SELPARAMBUYERNAME =
SELPARAMPRODUCTID = lt_range_prod
* RETURN =
.

ET_ENTITYSET = CORRESPONDING #( lt_ord_items ).

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_ZJAN_2021_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_ZJAN_2021_MPC=>TS_PRODUCT,


ls_message type SCX_T100KEY,
lt_return type table of bapiret2,
ls_header type bapi_epm_product_header .

"What is the input data which has come along with the REQUEST
IO_DATA_PROVIDER->read_entry_data(
IMPORTING
es_data = ls_entity
).
* CATCH /iwbep/cx_mgw_tech_exception. " mgw technical exception
"Validation of the data
ZCL_ANUBHAV_VALIDATE=>VALIDATE_CURRENCY_CODE( i_currency_code = ls_entity-
currency_code ).

"Preprocessing of data if needed


"Insert data using INSERT / BAPI
MOVE-CORRESPONDING ls_entity to ls_header.
ls_header-measure_unit = 'EA'.

call FUNCTION 'BAPI_EPM_PRODUCT_CREATE'


EXPORTING
headerdata = ls_header " EPM: Product header data
of BOR object SEPM002
TABLES
return = lt_return " Return Parameter
.

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.
* DATA : ls_db_str type dbname.
* MOVE-CORRESPONDING ls_entity to ls_db_str.
* INSERT INTO dbtab VALUES ls_db_str.
"Prepare the response and send back
MOVE-CORRESPONDING ls_entity to er_entity.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_prod_id TYPE bapi_epm_product_id.

READ TABLE it_key_tab INTO data(ls_key) INDEX 1.


lv_prod_id = ls_key-value.

CALL FUNCTION 'BAPI_EPM_PRODUCT_DELETE'


EXPORTING
product_id = lv_prod_id " EPM: Product ID
* persist_to_db = abap_true " Flag: Save data to DB (yes/no)
* TABLES
* return = " Return Parameter
.
* delete from snwd_pd WHERE product_id = lv_prod_id.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_ZJAN_2021_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.

data: lv_prod_id type bapi_epm_product_id,


ls_header type BAPI_EPM_PRODUCT_HEADER,
lt_return type TABLE OF bapiret2,
ls_product type snwd_pd.

"Request
read TABLE IT_KEY_TAB INTO data(ls_key) INDEX 1.
lv_prod_id = ls_key-value.

IF lv_prod_id is INITIAL.
""Blast
raise EXCEPTION type /iwbep/cx_mgw_busi_exception
EXPORTING
* textid =
* previous =
* message_container =
* http_status_code =
* http_header_parameters =
* sap_note_id =
* msg_code =
* exception_category =
* entity_type =
* message =
message_unlimited = |Dude you passed me a wrong product id |
* filter_param =
* operation_no =
.
ENDIF.
"Processing
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
.

IF lt_return is NOT INITIAL.

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

raise EXCEPTION type /iwbep/cx_mgw_busi_exception


EXPORTING
message_container = lo_msg_obj
.
ENDIF.
"Response
MOVE-CORRESPONDING ls_header to ER_ENTITY.

"1. Direct Select Query Approach


* select SINGLE * FROM snwd_pd into CORRESPONDING FIELDS OF @ls_product
* WHERE product_id = @lv_prod_id.
*
* select SINGLE * from snwd_bpa into @data(ls_bp) where node_key = @ls_product-
SUPPLIER_GUID.
*
* MOVE-CORRESPONDING ls_product to ER_ENTITY.
* ER_ENTITY-supplier_id = ls_bp-bp_id.
* ER_ENTITY-supplier_name = ls_bp-company_name.

* CHECK ls_key-name = 'PRODUCT_ID'.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_ZJAN_2021_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.

"how do we know here that what was the value of $top user passed?

* append INITIAL LINE TO et_entityset.


DATA: lt_bapi_products type TABLE OF BAPI_EPM_PRODUCT_HEADER,
ls_bapi_max type BAPI_EPM_MAX_ROWS,
ls_entity like LINE OF ET_ENTITYSET,
lt_category type TABLE OF BAPI_EPM_PRODUCT_CATEG_RANGE,
lv_top type i,
lv_skip type i,
lv_total type i.

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

ls_bapi_max-bapimaxrow = lv_total.

READ TABLE it_filter_select_options INTO data(ls_filter_sel) with key


property = 'CATEGORY'.
IF sy-subrc = 0.
lt_category = CORRESPONDING #( ls_filter_sel-select_options ).
ENDIF.

"Step 1: Call the BAPI where all the product data is available
* call FUNCTION 'BAPI_EPM_PRODUCT_GET_LIST'
* EXPORTING
* max_rows = ls_bapi_max " 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_category " EPM: Range table
for product categories
** return = " Return Parameter
* .

select * FROM snwd_pd as prod INNER JOIN snwd_texts as desc on


prod~desc_guid = desc~parent_key and desc~language
= @sy-langu
into CORRESPONDING FIELDS OF table @lt_bapi_products WHERE
prod~category IN @lt_category.

"Step 2: Map this data from the BAPI to my EntitySet output table
IF lv_total > 0.
LOOP AT lt_bapi_products INTO data(ls_bapi_product) FROM lv_skip + 1 to
lv_total.
MOVE-CORRESPONDING ls_bapi_product to ls_entity.
append ls_entity to ET_ENTITYSET.
ENDLOOP.
else.
ET_ENTITYSET = CORRESPONDING #( lt_bapi_products ).
ENDIF.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_ZJAN_2021_MPC=>TS_PRODUCT
* | [!CX!] /IWBEP/CX_MGW_BUSI_EXCEPTION
* | [!CX!] /IWBEP/CX_MGW_TECH_EXCEPTION
*
+----------------------------------------------------------------------------------
----</SIGNATURE>
method PRODUCTSET_UPDATE_ENTITY.

data: ls_entity TYPE ZCL_ZJAN_2021_MPC=>TS_PRODUCT,


lv_prod_id type bapi_epm_product_id,
ls_header TYPE bapi_epm_product_header,
lt_return type TABLE OF bapiret2,
ls_header_X type bapi_epm_product_headerx.

read TABLE it_key_tab INTO data(ls_key) INDEX 1.

lv_prod_id = ls_key-value.

io_data_provider->read_entry_data(
IMPORTING
es_data = ls_entity
).

MOVE-CORRESPONDING ls_entity to ls_header.


ls_header_x-product_id = lv_prod_id.
ls_header_X-name = abap_true.
ls_header_X-description = abap_true.
ls_header_X-price = abap_true.
ls_header_X-currency_code = abap_true.

CALL FUNCTION 'BAPI_EPM_PRODUCT_CHANGE'


EXPORTING
product_id = lv_prod_id
HEADERDATA = ls_header
HEADERDATAX = ls_header_X
TABLES
RETURN = lt_return
.

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.

MOVE-CORRESPONDING ls_entity to er_entity.


* update dbtable set p = val p = vl where pk = key

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_ZJAN_2021_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.

data: lv_bp_id type bapi_epm_bp_id,


ls_header type BAPI_EPM_BP_HEADER,
lt_return type TABLE OF bapiret2,
ls_product type snwd_bpa.

"Request
read TABLE IT_KEY_TAB INTO data(ls_key) INDEX 1.
IF ls_key-name = 'PRODUCT_ID'.
SELECT SINGLE BP_ID INTO @lv_bp_id from snwD_bpa as bpa INNER JOIN snwd_pd as
pda
on bpa~node_key = pda~SUPPLIER_GUID.
else.
lv_bp_id = ls_key-value.
ENDIF.

IF lv_bp_id is INITIAL.
""Blast
raise EXCEPTION type /iwbep/cx_mgw_busi_exception
EXPORTING
message_unlimited = |Dude you passed me a wrong partner id |
.
ENDIF.
"Processing
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
.

IF lt_return is NOT INITIAL.

data(lo_msg_obj) = me->mo_context->get_message_container( ).

lo_msg_obj->add_messages_from_bapi(
EXPORTING
it_bapi_messages = lt_return " Return parameter
table
).

raise EXCEPTION type /iwbep/cx_mgw_busi_exception


EXPORTING
message_container = lo_msg_obj
.
ENDIF.
"Response
MOVE-CORRESPONDING ls_header to ER_ENTITY.

endmethod.

*
<SIGNATURE>------------------------------------------------------------------------
---------------+
* | Instance Protected Method ZCL_ZJAN_2021_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_ZJAN_2021_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.

DATA: lt_bapi_products type TABLE OF BAPI_EPM_PRODUCT_HEADER,


ls_bapi_max type BAPI_EPM_MAX_ROWS,
ls_entity like LINE OF ET_ENTITYSET,
lt_category type RANGE OF SNWD_COMPANY_NAME,
lv_top type i,
lv_skip type i,
lv_total type i.

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

ls_bapi_max-bapimaxrow = lv_total.

READ TABLE it_filter_select_options INTO data(ls_filter_sel) with key


property = 'COMPANY_NAME'.
IF sy-subrc = 0.
lt_category = CORRESPONDING #( ls_filter_sel-select_options ).
ENDIF.

IF lt_category is INITIAL.
select BP_ID, company_name, STREET, CITY, COUNTRY, BP_ROLE, CURRENCY_CODE,
EMAIL_ADDRESS FROM snwD_bpa as bpa INNER JOIN snwd_ad as desc on
bpa~address_guid = desc~node_key
into table @data(lt_bps) .
else.
select BP_ID, company_name, STREET, CITY, COUNTRY, BP_ROLE, CURRENCY_CODE,
EMAIL_ADDRESS FROM snwD_bpa as bpa INNER JOIN snwd_ad as desc on
bpa~address_guid = desc~node_key
into table @lt_bps WHERE bpa~company_name in @lt_category.
ENDIF.

"Step 2: Map this data from the BAPI to my EntitySet output table
IF lv_total > 0.
LOOP AT lt_bps INTO data(ls_bps) FROM lv_skip + 1 to lv_total.
MOVE-CORRESPONDING ls_bps to ls_entity.
append ls_entity to ET_ENTITYSET.
ENDLOOP.
else.
ET_ENTITYSET = CORRESPONDING #( lt_bps ).
ENDIF.

endmethod.
ENDCLASS.

You might also like