cancel
Showing results for 
Search instead for 
Did you mean: 

GET_EXPANDED_ENTITYSET problem

Former Member
0 Kudos

Hi, I am trying to follow along this tutorial:

And when I debug my WebService using:

ZHREC_CONTR_CH_GETDETAILS_SRV/HeaderSet?$filter=Formid eq '005056BA6B481ED5B1B3EBDD61A2D44C'&$expand=NavMainDetails

then I noticed that the parameter lt_filter_select_options is empty (and I didn't really get from the blog where it was populated in the first place) and in the Gateway Client I get this error:

Method 'MAINDETAILSSET_GET_ENTITY' not implemented in data provider class  (???)


Scenario

I have a header table Header and infotype tables MainDetails, OrgLocation and SalaryDetails. I want to get data from the three infotype tables with 1 webservice request based on the given filter parameter Formid. Each table has the property Formid which is a key field.


Associations


Navigations



My Redefined /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITYSET



METHOD /iwbep/if_mgw_appl_srv_runtime~get_expanded_entityset.

*----------------------------------------------------------------------*

*       Deep Structure

*----------------------------------------------------------------------*

   DATA: BEGIN OF ls_contr_ch_form_details.

           INCLUDE TYPE zcl_zhrec_contr_ch_get_mpc=>ts_header.

   DATA: navmaindetails TYPE STANDARD TABLE OF zcl_zhrec_contr_ch_get_mpc=>ts_maindetails WITH DEFAULT KEY.

   DATA: navorglocation TYPE STANDARD TABLE OF zcl_zhrec_contr_ch_get_mpc=>ts_orglocation WITH DEFAULT KEY.

   DATA: navsalarydetails TYPE STANDARD TABLE OF zcl_zhrec_contr_ch_get_mpc=>ts_salarydetails WITH DEFAULT KEY,

         END OF ls_contr_ch_form_details,

         ls_maindetails_1 TYPE zcl_zhrec_contr_ch_get_mpc=>ts_maindetails,

         ls_orglocation_1 TYPE zcl_zhrec_contr_ch_get_mpc=>ts_orglocation,

         ls_salarydetails_1 TYPE zcl_zhrec_contr_ch_get_mpc=>ts_salarydetails.

*----------------------------------------------------------------------*

*       Data Declaration

*----------------------------------------------------------------------*

   DATA: ls_maindetails TYPE zcl_zhrec_contr_ch_get_mpc_ext=>ts_maindetails,

         lt_maindetails TYPE TABLE OF zcl_zhrec_contr_ch_get_mpc_ext=>ts_maindetails,

         ls_orglocation TYPE zcl_zhrec_contr_ch_get_mpc_ext=>ts_orglocation,

         ts_orglocation TYPE TABLE OF zcl_zhrec_contr_ch_get_mpc_ext=>ts_orglocation,

         ls_header TYPE zcl_zhrec_contr_ch_get_mpc_ext=>ts_header,

         ltheader TYPE STANDARD TABLE OF zhrec_header,

         lsheader TYPE zhrec_header,

         lsmaindetails TYPE zhrec_contr_ch,

         ltmaindetails TYPE STANDARD TABLE OF zhrec_contr_ch,

         lsorglocation TYPE zhrec_it0001_wtexts,

         ltorglocation TYPE STANDARD TABLE OF zhrec_it0001_wtexts,

         lssalarydetails TYPE zhrec_it0008_wtexts,

         ltsalarydetails TYPE STANDARD TABLE OF zhrec_it0008_wtexts,

         lv_filter_str TYPE string,

         lt_filter_select_options TYPE /iwbep/t_mgw_select_option,

         ls_filter TYPE /iwbep/s_mgw_select_option,

         ls_filter_range TYPE /iwbep/s_cod_select_option,

         ls_expanded_clause1 LIKE LINE OF et_expanded_tech_clauses,

         ls_expanded_clause2 LIKE LINE OF et_expanded_tech_clauses,

         ls_expanded_clause3 LIKE LINE OF et_expanded_tech_clauses,

         lv_formid TYPE zhrec_form_id,

         lt_contr_ch_form_details LIKE TABLE OF ls_contr_ch_form_details.

*----------------------------------------------------------------------*

*       Entity Set - HeaderSet

*----------------------------------------------------------------------*

   CASE iv_entity_set_name.

     WHEN 'HeaderSet'.

       LOOP AT lt_filter_select_options INTO ls_filter.

         LOOP AT ls_filter-select_options INTO ls_filter_range.

           TRANSLATE ls_filter-property TO UPPER CASE.

           CASE ls_filter-property.

             WHEN 'FORMID'.

               lv_formid = ls_filter_range-low.

             WHEN OTHERS.

               " Log message in the application log

               me->/iwbep/if_sb_dpc_comm_services~log_message(

                 EXPORTING

                   iv_msg_type   = 'E'

                   iv_msg_id     '/IWBEP/MC_SB_DPC_ADM'

                   iv_msg_number 020

                   iv_msg_v1     = ls_filter-property

*                  iv_msg_v2     =

*                  iv_msg_v3     =

*                  iv_msg_v4     =

               ).

               " Raise Exception

               RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception

                 EXPORTING

                   textid = /iwbep/cx_mgw_tech_exception=>internal_error.

           ENDCASE.

         ENDLOOP.

       ENDLOOP.

*----------------------------------------------------------------------*

*       Call Function - ZHREC_CONTR_CH_GETDETAIL

*----------------------------------------------------------------------*

       DATA: wa_maindetails TYPE zhrec_contr_ch.

       CALL FUNCTION 'ZHREC_CONTR_CH_GETDETAIL'

         EXPORTING

           iv_formid        = lv_formid

         IMPORTING

           et_maindetails   = lsmaindetails

           et_orglocation   = ltorglocation

           et_salarydetails = ltsalarydetails.

*----------------------------------------------------------------------*

*       Fill Header Values to Deep Structure

*----------------------------------------------------------------------*

       ls_contr_ch_form_details-formid = lv_formid.

*----------------------------------------------------------------------*

*       Fill MainDetails Values to Deep Structure

*----------------------------------------------------------------------*

*      LOOP AT ltmaindetails INTO lsmaindetails.

       CLEAR ls_maindetails_1.

       ls_maindetails_1-formid = lsmaindetails-formid.

       ls_maindetails_1-attachment = lsmaindetails-attachment.

       ls_maindetails_1-ch_valid_from = lsmaindetails-ch_valid_from.

       ls_maindetails_1-empforename = lsmaindetails-empforename.

       ls_maindetails_1-emplastname = lsmaindetails-emplastname.

       ls_maindetails_1-empno = lsmaindetails-empno.

       ls_maindetails_1-hire_date = lsmaindetails-hire_date.

       ls_maindetails_1-notes = lsmaindetails-notes.

       ls_maindetails_1-reasontext = lsmaindetails-reasontext.

       ls_maindetails_1-status = lsmaindetails-status.

       APPEND ls_maindetails_1 TO ls_contr_ch_form_details-navmaindetails.

*      ENDLOOP.

*----------------------------------------------------------------------*

*       Fill OrgLocation Values to Deep Structure

*----------------------------------------------------------------------*

       LOOP AT ltorglocation INTO lsorglocation.

         CLEAR ls_orglocation_1.

         ls_orglocation_1-formid = lsorglocation-formid.

         ls_orglocation_1-company_code = lsorglocation-company_code.

         ls_orglocation_1-company_code_t = lsorglocation-company_code_t.

         ls_orglocation_1-cost_center = lsorglocation-cost_center.

         ls_orglocation_1-cost_center_t = lsorglocation-cost_center_t.

         ls_orglocation_1-employee_group = lsorglocation-employee_group.

         ls_orglocation_1-employee_group_t = lsorglocation-employee_group_t.

         ls_orglocation_1-employee_sgroup = lsorglocation-employee_sgroup.

         ls_orglocation_1-employee_sgroup_t = lsorglocation-employee_sgroup_t.

         ls_orglocation_1-orgunit = lsorglocation-orgunit.

         ls_orglocation_1-payroll_area = lsorglocation-payroll_area.

         ls_orglocation_1-payroll_area_t = lsorglocation-payroll_area_t.

         ls_orglocation_1-personnel_sarea = lsorglocation-personnel_sarea.

         ls_orglocation_1-personnel_sarea_t = lsorglocation-personnel_sarea_t.

         ls_orglocation_1-peamine_ts = lsorglocation-peamine_ts.

         ls_orglocation_1-position_id = lsorglocation-position_id.

         ls_orglocation_1-position_id_t = lsorglocation-position_id_t.

         ls_orglocation_1-position_weight = lsorglocation-position_weight.

         APPEND ls_orglocation_1 TO ls_contr_ch_form_details-navorglocation.

       ENDLOOP.

*----------------------------------------------------------------------*

*       Fill SalaryDetails Values to Deep Structure

*----------------------------------------------------------------------*

       LOOP AT ltsalarydetails INTO lssalarydetails.

         CLEAR ls_salarydetails_1.

         ls_salarydetails_1-formid = lssalarydetails-formid.

         ls_salarydetails_1-paysum = lssalarydetails-paysum.

         ls_salarydetails_1-paytype = lssalarydetails-paytype.

         ls_salarydetails_1-paytype_t = lssalarydetails-paytype_t.

         ls_salarydetails_1-payvalidfrom = lssalarydetails-payvalidfrom.

         ls_salarydetails_1-payvalidto = lssalarydetails-payvalidto.

         APPEND ls_salarydetails_1 TO ls_contr_ch_form_details-navsalarydetails.

       ENDLOOP.

*----------------------------------------------------------------------*

*       Assign the Navigation Properties name to Expand Tech clauses

*----------------------------------------------------------------------*

       ls_expanded_clause1 = 'NAVMAINDETAILS'.

       ls_expanded_clause2 = 'NAVORGLOCATION'.

       ls_expanded_clause3 = 'NAVSALARYDETAILS'.

       APPEND ls_expanded_clause1 TO et_expanded_tech_clauses.

       APPEND ls_expanded_clause2 TO et_expanded_tech_clauses.

       APPEND ls_expanded_clause3 TO et_expanded_tech_clauses.

*----------------------------------------------------------------------*

*       Append Deep Structure Values to Final Internal Table

*----------------------------------------------------------------------*

       APPEND ls_contr_ch_form_details TO lt_contr_ch_form_details.

*----------------------------------------------------------------------*

*       Send back Response to Consumer

*----------------------------------------------------------------------*

       copy_data_to_ref(

         EXPORTING

           is_data = lt_contr_ch_form_details

         CHANGING

           cr_data = er_entityset ).

     WHEN OTHERS.

   ENDCASE.

ENDMETHOD.

I believe the blog left out a few important details when the author thought they were self-explanatory.

Hopefully someone can point out what is missing or what is wrong with my modeling or code.

PS: If you need more info on anything, then plz let me know.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

1. MainDetails and OrgLocation have 1:1 cardinality wrt Header. So the definition for output structure should be like this:

DATA: BEGIN OF ls_contr_ch_form_details. 

           INCLUDE TYPE zcl_zhrec_contr_ch_get_mpc=>ts_header. 

   DATA: navmaindetails TYPE zcl_zhrec_contr_ch_get_mpc=>ts_maindetails. 

   DATA: navorglocation TYPE zcl_zhrec_contr_ch_get_mpc=>ts_orglocation. 

   DATA: navsalarydetails TYPE STANDARD TABLE OF zcl_zhrec_contr_ch_get_mpc=>ts_salarydetails WITH DEFAULT KEY, 

         END OF ls_contr_ch_form_details, 

2. To get all the three infotype tables as an output you should use the request like

ZHREC_CONTR_CH_GETDETAILS_SRV/HeaderSet?$filter=Formid eq '005056BA6B481ED5B1B3EBDD61A2D44C'&$expand=NavMainDetails,NavOrgLocation,NavSalaryDetails

Answers (1)

Answers (1)

Former Member
0 Kudos

I fixed the filter selection problem, but the Method 'MAINDETAILSSET_GET_ENTITY' not implemented in data provider class problem still exists although I get throught the method nicely with all the data I want.