in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]
METHOD manage_odp_ds_acc_methods.
CLEAR: et_return, ev_sy_subrc.
DATA:
lv_fieldname TYPE string,
lo_access TYPE REF TO cl_rsds_accessmethods,
lt_method TYPE rsds_t_r_accessattr,
lt_fields TYPE cl_rsds_access_odp=>tt_fields,
ls_t100_key TYPE scx_t100key.
FIELD-SYMBOLS:
<ls_field> TYPE cl_rsds_access_odp=>ts_fields,
<ls_method> LIKE LINE OF lt_method.
CALL METHOD cl_rsds_accessmethods=>create_object
EXPORTING
i_datasource = iv_data_source
i_logsys = iv_logsys
i_infopackage = space
i_objvers = rs_c_objvers-new
IMPORTING
e_r_methods = lo_access
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
CALL METHOD lo_access->get_methods(
EXPORTING
i_filter = 'X'
RECEIVING
r_t_methods = lt_method ).
LOOP AT lt_method ASSIGNING <ls_method>.
lo_access->get_methods( ).
CALL METHOD lo_access->set_attributes
EXPORTING
i_accessmethod = <ls_method>-accessmethod.
CALL FUNCTION 'RSDS_ODP_SET_GET_GLOBAL'
EXPORTING
i_odp = iv_odpname
i_logsys = iv_logsys
i_datasource = iv_data_source.
CALL METHOD lo_access->get_attributes
EXPORTING
i_accessmethod = <ls_method>-accessmethod.
CALL METHOD lo_access->set_structure_for_prop
EXPORTING
i_accessmethod = <ls_method>-accessmethod.
CALL FUNCTION 'RSDS_ODP_SET_GET_GLOBAL'
IMPORTING
et_fields = lt_fields.
LOOP AT lt_fields ASSIGNING <ls_field>
WHERE name_ds = cl_rs_b4htapd_dp_odp_ds=>co_forbidden_fieldnm-record OR
name_ds = cl_rs_b4htapd_dp_odp_ds=>co_forbidden_fieldnm-request OR
name_ds = cl_rs_b4htapd_dp_odp_ds=>co_forbidden_fieldnm-datapakid OR
name_ds = cl_rs_b4htapd_dp_odp_ds=>co_forbidden_fieldnm-partno.
MOVE <ls_field>-name_ds TO lv_fieldname.
"lv_fieldname = mo_dp_odp_cds->correct_field( lv_fieldname ). TODO
MOVE lv_fieldname TO <ls_field>-name_ds.
ENDLOOP.
CALL FUNCTION 'RSDS_ODP_SET_GET_GLOBAL'
EXPORTING
it_fields = lt_fields.
CALL METHOD lo_access->get_structure_for_prop
EXPORTING
i_accessmethod = <ls_method>-accessmethod
i_no_popup = rs_c_true
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
ENDLOOP.
eo_access = lo_access.