Create Deep Insert Odata for SAPUI5
Hello everyone, in this Netweaver Gateway, we will learn how to create Deep Insert OData service for SAPUI5 Using BAPI_SALESORDER_CREATEFROMDAT2.
Prerequisite: You should create a OData service to support $expand. At first We need to create $expand Query :
Goto SEGW Tcode : Create Project. Then Create Entity Type and Entity Set for Sales Order and SalesItem :
SalesOrder Entity:
SalesItem Entitiy
Create Associations given below
Create Navigation given below
First, it calls the GET_ENTITY / GET_ENTITYSET for sales order header data:
METHOD salesorderset_get_entity.
DATA: lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
w_vbak TYPE vbak,
salesno TYPE vbak-vbeln.
READ TABLE it_key_tab INTO lwa_key_tab WITH KEY name = 'Salesdocument'.
IF sy-subrc = 0.
salesno = lwa_key_tab-value.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = salesno
IMPORTING
output = salesno.
SELECT SINGLE * FROM vbak INTO w_vbak WHERE vbeln = salesno .
er_entity-salesdocument = w_vbak-vbeln.
er_entity-sales_org = w_vbak-vkorg .
er_entity-distr_chan = w_vbak-vtweg .
er_entity-division = w_vbak-spart .
ENDMETHOD.
Second, it calls the GET_ENTITYSET of order items in a Loop for each above sales orders retrieved :
method SALESITEMSET_GET_ENTITYSET.
DATA: lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
w_vbak TYPE vbak,
lt_itemdata TYPE STANDARD TABLE OF vbap,
ls_itemdata TYPE vbap,
w_item TYPE zcl_zsd_deep_enty_mpc=>ts_salesitem,
salesno TYPE vbak-vbeln.
READ TABLE it_key_tab INTO lwa_key_tab WITH KEY name = 'Salesdocument'.
IF sy-subrc = 0.
salesno = lwa_key_tab-value.
ENDIF.
* salesno = '4030000231'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = salesno
IMPORTING
output = salesno.
SELECT * FROM vbap INTO TABLE lt_itemdata WHERE vbeln = salesno .
LOOP AT lt_itemdata INTO ls_itemdata.
w_item-salesdocument = salesno.
w_item-req_qty = ls_itemdata-klmeng.
* w_item-PARTN_ROLE = ls_itemdata-
* w_item-PARTN_NUMB = ls_itemdata-
w_item-itm_number = ls_itemdata-posnr.
w_item-material = ls_itemdata-matnr.
w_item-plant = ls_itemdata-werks.
w_item-target_qty = ls_itemdata-zmeng.
APPEND w_item TO et_entityset.
ENDLOOP.
endmethod.
After successful creation of OData service. Go to the DPC_EXT class and identity the method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITY and redefine it :
METHOD /iwbep/if_mgw_appl_srv_runtime~get_expanded_entityset.
DATA : BEGIN OF ls_order_item_data.
INCLUDE TYPE zcl_zsd_deep_enty_mpc=>ts_salesorder.
DATA: itemdata TYPE zcl_zsd_deep_enty_mpc=>tt_salesitem,
END OF ls_order_item_data.
CONSTANTS: lc_expand_tech_clause TYPE string VALUE 'ToItem'.
DATA: lv_entity_set_name TYPE /iwbep/mgw_tech_name,
ls_headerdata TYPE vbak,
lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_key_tab TYPE /iwbep/s_mgw_name_value_pair,
lt_itemdata TYPE STANDARD TABLE OF vbap,
salesno TYPE vbak-vbeln,
w_item TYPE zcl_zsd_deep_enty_mpc=>ts_salesitem,
w_vbak TYPE vbak,
ls_itemdata TYPE vbap.
lv_entity_set_name = io_tech_request_context->get_entity_set_name( ).
CASE lv_entity_set_name.
WHEN 'SalesOrderSet'.
READ TABLE it_key_tab INTO lwa_key_tab WITH KEY name = 'Salesdocument'.
IF sy-subrc = 0.
salesno = lwa_key_tab-value.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = salesno
IMPORTING
output = salesno.
SELECT SINGLE * FROM vbak INTO w_vbak WHERE vbeln = salesno .
ls_order_item_data-salesdocument = w_vbak-vbeln.
ls_order_item_data-sales_org = w_vbak-vkorg .
ls_order_item_data-distr_chan = w_vbak-vtweg .
ls_order_item_data-division = w_vbak-spart .
SELECT * FROM vbap INTO TABLE lt_itemdata WHERE vbeln = salesno .
LOOP AT lt_itemdata INTO ls_itemdata.
w_item-salesdocument = salesno.
w_item-req_qty = ls_itemdata-klmeng.
* w_item-PARTN_ROLE = ls_itemdata-
* w_item-PARTN_NUMB = ls_itemdata-
w_item-itm_number = ls_itemdata-posnr.
w_item-material = ls_itemdata-matnr.
w_item-plant = ls_itemdata-werks.
w_item-target_qty = ls_itemdata-zmeng.
APPEND w_item TO ls_order_item_data-itemdata.
ENDLOOP.
copy_data_to_ref( EXPORTING is_data = ls_order_item_data
CHANGING cr_data = er_entityset ).
INSERT lc_expand_tech_clause INTO TABLE et_expanded_tech_clauses.
WHEN OTHERS.
TRY.
CALL METHOD super->/iwbep/if_mgw_appl_srv_runtime~get_expanded_entityset
EXPORTING
iv_entity_name = iv_entity_name
iv_entity_set_name = iv_entity_set_name
iv_source_name = iv_source_name
it_filter_select_options = it_filter_select_options
it_order = it_order
is_paging = is_paging
it_navigation_path = it_navigation_path
it_key_tab = it_key_tab
iv_filter_string = iv_filter_string
iv_search_string = iv_search_string
io_expand = io_expand
io_tech_request_context = io_tech_request_context
IMPORTING
er_entityset = er_entityset
et_expanded_clauses = et_expanded_clauses
et_expanded_tech_clauses = et_expanded_tech_clauses
es_response_context = es_response_context.
CATCH /iwbep/cx_mgw_busi_exception .
CATCH /iwbep/cx_mgw_tech_exception .
ENDTRY.
ENDCASE.
ENDMETHOD.
METHOD salesorderset_get_entity.
DATA: lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
w_vbak TYPE vbak,
salesno TYPE vbak-vbeln.
READ TABLE it_key_tab INTO lwa_key_tab WITH KEY name = 'Salesdocument'.
IF sy-subrc = 0.
salesno = lwa_key_tab-value.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = salesno
IMPORTING
output = salesno.
SELECT SINGLE * FROM vbak INTO w_vbak WHERE vbeln = salesno .
er_entity-salesdocument = w_vbak-vbeln.
er_entity-sales_org = w_vbak-vkorg .
er_entity-distr_chan = w_vbak-vtweg .
er_entity-division = w_vbak-spart .
ENDMETHOD.
Second, it calls the GET_ENTITYSET of order items in a Loop for each above sales orders retrieved :
method SALESITEMSET_GET_ENTITYSET.
DATA: lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
w_vbak TYPE vbak,
lt_itemdata TYPE STANDARD TABLE OF vbap,
ls_itemdata TYPE vbap,
w_item TYPE zcl_zsd_deep_enty_mpc=>ts_salesitem,
salesno TYPE vbak-vbeln.
READ TABLE it_key_tab INTO lwa_key_tab WITH KEY name = 'Salesdocument'.
IF sy-subrc = 0.
salesno = lwa_key_tab-value.
ENDIF.
* salesno = '4030000231'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = salesno
IMPORTING
output = salesno.
SELECT * FROM vbap INTO TABLE lt_itemdata WHERE vbeln = salesno .
LOOP AT lt_itemdata INTO ls_itemdata.
w_item-salesdocument = salesno.
w_item-req_qty = ls_itemdata-klmeng.
* w_item-PARTN_ROLE = ls_itemdata-
* w_item-PARTN_NUMB = ls_itemdata-
w_item-itm_number = ls_itemdata-posnr.
w_item-material = ls_itemdata-matnr.
w_item-plant = ls_itemdata-werks.
w_item-target_qty = ls_itemdata-zmeng.
APPEND w_item TO et_entityset.
ENDLOOP.
endmethod.
After successful creation of OData service. Go to the DPC_EXT class and identity the method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITY and redefine it :
METHOD /iwbep/if_mgw_appl_srv_runtime~get_expanded_entityset.
DATA : BEGIN OF ls_order_item_data.
INCLUDE TYPE zcl_zsd_deep_enty_mpc=>ts_salesorder.
DATA: itemdata TYPE zcl_zsd_deep_enty_mpc=>tt_salesitem,
END OF ls_order_item_data.
CONSTANTS: lc_expand_tech_clause TYPE string VALUE 'ToItem'.
DATA: lv_entity_set_name TYPE /iwbep/mgw_tech_name,
ls_headerdata TYPE vbak,
lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_key_tab TYPE /iwbep/s_mgw_name_value_pair,
lt_itemdata TYPE STANDARD TABLE OF vbap,
salesno TYPE vbak-vbeln,
w_item TYPE zcl_zsd_deep_enty_mpc=>ts_salesitem,
w_vbak TYPE vbak,
ls_itemdata TYPE vbap.
lv_entity_set_name = io_tech_request_context->get_entity_set_name( ).
CASE lv_entity_set_name.
WHEN 'SalesOrderSet'.
READ TABLE it_key_tab INTO lwa_key_tab WITH KEY name = 'Salesdocument'.
IF sy-subrc = 0.
salesno = lwa_key_tab-value.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = salesno
IMPORTING
output = salesno.
SELECT SINGLE * FROM vbak INTO w_vbak WHERE vbeln = salesno .
ls_order_item_data-salesdocument = w_vbak-vbeln.
ls_order_item_data-sales_org = w_vbak-vkorg .
ls_order_item_data-distr_chan = w_vbak-vtweg .
ls_order_item_data-division = w_vbak-spart .
SELECT * FROM vbap INTO TABLE lt_itemdata WHERE vbeln = salesno .
LOOP AT lt_itemdata INTO ls_itemdata.
w_item-salesdocument = salesno.
w_item-req_qty = ls_itemdata-klmeng.
* w_item-PARTN_ROLE = ls_itemdata-
* w_item-PARTN_NUMB = ls_itemdata-
w_item-itm_number = ls_itemdata-posnr.
w_item-material = ls_itemdata-matnr.
w_item-plant = ls_itemdata-werks.
w_item-target_qty = ls_itemdata-zmeng.
APPEND w_item TO ls_order_item_data-itemdata.
ENDLOOP.
copy_data_to_ref( EXPORTING is_data = ls_order_item_data
CHANGING cr_data = er_entityset ).
INSERT lc_expand_tech_clause INTO TABLE et_expanded_tech_clauses.
WHEN OTHERS.
TRY.
CALL METHOD super->/iwbep/if_mgw_appl_srv_runtime~get_expanded_entityset
EXPORTING
iv_entity_name = iv_entity_name
iv_entity_set_name = iv_entity_set_name
iv_source_name = iv_source_name
it_filter_select_options = it_filter_select_options
it_order = it_order
is_paging = is_paging
it_navigation_path = it_navigation_path
it_key_tab = it_key_tab
iv_filter_string = iv_filter_string
iv_search_string = iv_search_string
io_expand = io_expand
io_tech_request_context = io_tech_request_context
IMPORTING
er_entityset = er_entityset
et_expanded_clauses = et_expanded_clauses
et_expanded_tech_clauses = et_expanded_tech_clauses
es_response_context = es_response_context.
CATCH /iwbep/cx_mgw_busi_exception .
CATCH /iwbep/cx_mgw_tech_exception .
ENDTRY.
ENDCASE.
ENDMETHOD.
Go to the DPC extension class and identity the method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_DEEP_ENTITY and redefine it :
METHOD /iwbep/if_mgw_appl_srv_runtime~create_deep_entity.
DATA : BEGIN OF ls_order_item_data.
INCLUDE TYPE zcl_zsd_deep_enty_mpc=>ts_salesorder.
DATA : headtoitem TYPE zcl_zsd_deep_enty_mpc=>tt_salesitem,
END OF ls_order_item_data.
* DATA : ls_order_item_data TYPE ZCL_ZSD_DEEP_ENTY_MPC_EXT=>ts_deep_entity.
DATA: lv_entity_set_name TYPE /iwbep/mgw_tech_name,
lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_req_itemdata TYPE zcl_zsd_deep_enty_mpc=>ts_salesitem.
DATA: v_vbeln TYPE bapivbeln-vbeln,
wa_header TYPE bapisdhd1,
wa_headerx TYPE bapisdhd1x,
wa_item TYPE bapisditm,
it_item TYPE TABLE OF bapisditm,
wa_itemx TYPE bapisditmx,
it_itemx TYPE TABLE OF bapisditmx,
wa_partner TYPE bapiparnr,
it_partner TYPE TABLE OF bapiparnr,
wa_return TYPE bapiret2,
it_return TYPE TABLE OF bapiret2,
wa_text TYPE bapisdtext,
it_text TYPE TABLE OF bapisdtext,
wa_condition TYPE bapicond,
it_condition TYPE TABLE OF bapicond,
wa_conditionx TYPE bapicondx,
it_conditionx TYPE TABLE OF bapicondx,
wa_schedule TYPE bapischdl,
it_schedule TYPE TABLE OF bapischdl,
wa_schedulex TYPE bapischdlx,
it_schedulex TYPE TABLE OF bapischdlx.
lv_entity_set_name = io_tech_request_context->get_entity_set_name( ).
CASE lv_entity_set_name.
WHEN 'SalesOrderSet'.
* TRY.
* CALL METHOD me->custome_create_deep_entity
* EXPORTING
* iv_entity_name = iv_entity_name
* iv_entity_set_name = iv_entity_set_name
* iv_source_name = iv_source_name
* io_data_provider = io_data_provider
* it_key_tab = it_key_tab
* it_navigation_path = it_navigation_path
* io_expand = io_expand
* io_tech_request_context = io_tech_request_context
* IMPORTING
* er_deep_entity = ls_order_item_data
* .
* CATCH /iwbep/cx_mgw_busi_exception .
* CATCH /iwbep/cx_mgw_tech_exception .
* ENDTRY.
io_data_provider->read_entry_data( IMPORTING es_data = ls_order_item_data ).
*
* Header data
wa_header-doc_type = ls_order_item_data-doc_type.
wa_header-sales_org = ls_order_item_data-sales_org.
wa_header-distr_chan = ls_order_item_data-distr_chan.
wa_header-division = ls_order_item_data-division."'00'.
* APPEND wa_header .
*
wa_headerx-updateflag = 'i'.
wa_headerx-doc_type = 'x'.
wa_headerx-sales_org = 'x'.
wa_headerx-distr_chan = 'x'.
wa_headerx-division = 'x'.
*
LOOP AT ls_order_item_data-headtoitem INTO ls_req_itemdata.
wa_partner-partn_role = ls_req_itemdata-partn_role."'ag'.
wa_partner-partn_numb = ls_req_itemdata-partn_numb."'0000023422'.
APPEND wa_partner TO it_partner.
*
* Line item number.
wa_item-itm_number = ls_req_itemdata-itm_number. " '000013'.
wa_item-material = ls_req_itemdata-material."'cyd'.
wa_item-plant = ls_req_itemdata-plant." 'sl31'.
wa_item-target_qty = ls_req_itemdata-target_qty."'2'.
APPEND wa_item TO it_item.
*
wa_itemx-itm_number = ls_req_itemdata-itm_number.
wa_itemx-material = 'x'.
wa_itemx-plant = 'x'.
wa_itemx-target_qty = 'x'.
wa_itemx-updateflag = 'i'.
APPEND wa_itemx TO it_itemx.
*
wa_schedule-itm_number = ls_req_itemdata-itm_number. "'000013'.
wa_schedule-req_qty = ls_req_itemdata-req_qty."'2'.
APPEND wa_schedule TO it_schedule.
*
wa_schedulex-itm_number = ls_req_itemdata-itm_number.
wa_schedulex-req_qty = 'x'.
wa_schedulex-updateflag = 'i'.
APPEND wa_schedulex TO it_schedulex.
*
ENDLOOP.
*
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = wa_header
order_header_inx = wa_headerx
IMPORTING
salesdocument = v_vbeln
TABLES
return = it_return
order_items_in = it_item
order_items_inx = it_itemx
order_partners = it_partner
order_text = it_text
order_conditions_in = it_condition
order_conditions_inx = it_conditionx
order_schedules_in = it_schedule
order_schedules_inx = it_schedulex.
LOOP AT it_return INTO wa_return WHERE type = 'e' OR type = 'a'.
EXIT.
ENDLOOP.
*
IF sy-subrc EQ 0.
WRITE: / 'error in creating document'.
ELSE.
* Commit the work.
COMMIT WORK AND WAIT.
WRITE: / 'document ', v_vbeln, ' created'.
ls_order_item_data-salesdocument = v_vbeln.
copy_data_to_ref( EXPORTING is_data = ls_order_item_data
CHANGING cr_data = er_deep_entity ).
ENDIF.
WHEN OTHERS.
TRY.
CALL METHOD super->/iwbep/if_mgw_appl_srv_runtime~create_deep_entity
EXPORTING
iv_entity_name = iv_entity_name
iv_entity_set_name = iv_entity_set_name
iv_source_name = iv_source_name
io_data_provider = io_data_provider
it_key_tab = it_key_tab
it_navigation_path = it_navigation_path
io_expand = io_expand
io_tech_request_context = io_tech_request_context
IMPORTING
er_deep_entity = er_deep_entity.
CATCH /iwbep/cx_mgw_busi_exception .
CATCH /iwbep/cx_mgw_tech_exception .
ENDTRY.
ENDCASE.
ENDMETHOD.
We are done with coding part. Lets test the service again in SAP Netweaver Gateway Client /IWFND/GW_CLIENT.Call the below OData service URI with HTTP GET, to get the data of any sales order using $expand you should see the below output.
/sap/opu/odata/SAP/ZSD_DEEP_ENTY_SRV/SalesOrderSet('4030000231')?$expand=HeadtoItem
In the HTTP Request section clear the Sales order number and line item numbers, as we are creating a new sales order using this data :
METHOD /iwbep/if_mgw_appl_srv_runtime~create_deep_entity.
DATA : BEGIN OF ls_order_item_data.
INCLUDE TYPE zcl_zsd_deep_enty_mpc=>ts_salesorder.
DATA : headtoitem TYPE zcl_zsd_deep_enty_mpc=>tt_salesitem,
END OF ls_order_item_data.
* DATA : ls_order_item_data TYPE ZCL_ZSD_DEEP_ENTY_MPC_EXT=>ts_deep_entity.
DATA: lv_entity_set_name TYPE /iwbep/mgw_tech_name,
lwa_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_req_itemdata TYPE zcl_zsd_deep_enty_mpc=>ts_salesitem.
DATA: v_vbeln TYPE bapivbeln-vbeln,
wa_header TYPE bapisdhd1,
wa_headerx TYPE bapisdhd1x,
wa_item TYPE bapisditm,
it_item TYPE TABLE OF bapisditm,
wa_itemx TYPE bapisditmx,
it_itemx TYPE TABLE OF bapisditmx,
wa_partner TYPE bapiparnr,
it_partner TYPE TABLE OF bapiparnr,
wa_return TYPE bapiret2,
it_return TYPE TABLE OF bapiret2,
wa_text TYPE bapisdtext,
it_text TYPE TABLE OF bapisdtext,
wa_condition TYPE bapicond,
it_condition TYPE TABLE OF bapicond,
wa_conditionx TYPE bapicondx,
it_conditionx TYPE TABLE OF bapicondx,
wa_schedule TYPE bapischdl,
it_schedule TYPE TABLE OF bapischdl,
wa_schedulex TYPE bapischdlx,
it_schedulex TYPE TABLE OF bapischdlx.
lv_entity_set_name = io_tech_request_context->get_entity_set_name( ).
CASE lv_entity_set_name.
WHEN 'SalesOrderSet'.
* TRY.
* CALL METHOD me->custome_create_deep_entity
* EXPORTING
* iv_entity_name = iv_entity_name
* iv_entity_set_name = iv_entity_set_name
* iv_source_name = iv_source_name
* io_data_provider = io_data_provider
* it_key_tab = it_key_tab
* it_navigation_path = it_navigation_path
* io_expand = io_expand
* io_tech_request_context = io_tech_request_context
* IMPORTING
* er_deep_entity = ls_order_item_data
* .
* CATCH /iwbep/cx_mgw_busi_exception .
* CATCH /iwbep/cx_mgw_tech_exception .
* ENDTRY.
io_data_provider->read_entry_data( IMPORTING es_data = ls_order_item_data ).
*
* Header data
wa_header-doc_type = ls_order_item_data-doc_type.
wa_header-sales_org = ls_order_item_data-sales_org.
wa_header-distr_chan = ls_order_item_data-distr_chan.
wa_header-division = ls_order_item_data-division."'00'.
* APPEND wa_header .
*
wa_headerx-updateflag = 'i'.
wa_headerx-doc_type = 'x'.
wa_headerx-sales_org = 'x'.
wa_headerx-distr_chan = 'x'.
wa_headerx-division = 'x'.
*
LOOP AT ls_order_item_data-headtoitem INTO ls_req_itemdata.
wa_partner-partn_role = ls_req_itemdata-partn_role."'ag'.
wa_partner-partn_numb = ls_req_itemdata-partn_numb."'0000023422'.
APPEND wa_partner TO it_partner.
*
* Line item number.
wa_item-itm_number = ls_req_itemdata-itm_number. " '000013'.
wa_item-material = ls_req_itemdata-material."'cyd'.
wa_item-plant = ls_req_itemdata-plant." 'sl31'.
wa_item-target_qty = ls_req_itemdata-target_qty."'2'.
APPEND wa_item TO it_item.
*
wa_itemx-itm_number = ls_req_itemdata-itm_number.
wa_itemx-material = 'x'.
wa_itemx-plant = 'x'.
wa_itemx-target_qty = 'x'.
wa_itemx-updateflag = 'i'.
APPEND wa_itemx TO it_itemx.
*
wa_schedule-itm_number = ls_req_itemdata-itm_number. "'000013'.
wa_schedule-req_qty = ls_req_itemdata-req_qty."'2'.
APPEND wa_schedule TO it_schedule.
*
wa_schedulex-itm_number = ls_req_itemdata-itm_number.
wa_schedulex-req_qty = 'x'.
wa_schedulex-updateflag = 'i'.
APPEND wa_schedulex TO it_schedulex.
*
ENDLOOP.
*
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = wa_header
order_header_inx = wa_headerx
IMPORTING
salesdocument = v_vbeln
TABLES
return = it_return
order_items_in = it_item
order_items_inx = it_itemx
order_partners = it_partner
order_text = it_text
order_conditions_in = it_condition
order_conditions_inx = it_conditionx
order_schedules_in = it_schedule
order_schedules_inx = it_schedulex.
LOOP AT it_return INTO wa_return WHERE type = 'e' OR type = 'a'.
EXIT.
ENDLOOP.
*
IF sy-subrc EQ 0.
WRITE: / 'error in creating document'.
ELSE.
* Commit the work.
COMMIT WORK AND WAIT.
WRITE: / 'document ', v_vbeln, ' created'.
ls_order_item_data-salesdocument = v_vbeln.
copy_data_to_ref( EXPORTING is_data = ls_order_item_data
CHANGING cr_data = er_deep_entity ).
ENDIF.
WHEN OTHERS.
TRY.
CALL METHOD super->/iwbep/if_mgw_appl_srv_runtime~create_deep_entity
EXPORTING
iv_entity_name = iv_entity_name
iv_entity_set_name = iv_entity_set_name
iv_source_name = iv_source_name
io_data_provider = io_data_provider
it_key_tab = it_key_tab
it_navigation_path = it_navigation_path
io_expand = io_expand
io_tech_request_context = io_tech_request_context
IMPORTING
er_deep_entity = er_deep_entity.
CATCH /iwbep/cx_mgw_busi_exception .
CATCH /iwbep/cx_mgw_tech_exception .
ENDTRY.
ENDCASE.
ENDMETHOD.
We are done with coding part. Lets test the service again in SAP Netweaver Gateway Client /IWFND/GW_CLIENT.Call the below OData service URI with HTTP GET, to get the data of any sales order using $expand you should see the below output.
/sap/opu/odata/SAP/ZSD_DEEP_ENTY_SRV/SalesOrderSet('4030000231')?$expand=HeadtoItem
Comments
Post a Comment