*
REPORT ZINI_PRG_PARAMETROS.
tables: e070.
types: begin of ty_params,
name(8),
KIND type RSSCR_KIND, "S / P
length type i, "<--- hay que / 2
dtyp(4),
objeto type REF TO data,
end of ty_params.
data: l_REPORT LIKE RSVAR-REPORT,
t_selctab type STANDARD TABLE OF RSSCR,
t_tab type STANDARD TABLE OF ty_params,
l_tab like LINE OF t_tab.
l_report = '{NOMBRE_del_report}'.
perform load_sscr(rsdbrunt) tables t_selctab
USING l_REPORT
CHANGING sy-subrc.
loop at t_selctab into data(l_f) where kind ca 'SP'.
MOVE-CORRESPONDING l_f to l_tab.
l_tab-length = l_tab-length div 2.
case l_tab-kind.
when 'P'.
CREATE DATA l_tab-objeto type (l_f-type) LENGTH l_tab-length.
when 'S'.
DATA:
gr_structdescr TYPE REF TO cl_abap_structdescr,
gr_tabledescr TYPE REF TO cl_abap_tabledescr,
gr_datadescr TYPE REF TO cl_abap_datadescr,
gr_typedescr type ref to cl_abap_typedescr,
gt_components TYPE abap_component_tab,
gw_component TYPE LINE OF abap_component_tab,
gr_wa TYPE REF TO data,
gr_tab TYPE REF TO data.
FIELD-SYMBOLS: <fs_wa> TYPE ANY.
FIELD-SYMBOLS: <fs_tab> TYPE table.
MOVE 'SIGN' TO gw_component-name.
refresh gt_components.
gw_component-type ?= cl_abap_elemdescr=>get_c( p_length = 1 ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'OPTION' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_c( p_length = 2 ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'LOW' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_c( p_length = l_tab-length ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'HIGH' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_c( p_length = l_tab-length ).
INSERT gw_component INTO TABLE gt_components.
* get structure descriptor -> GR_STRUCTDESCR
gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
* create work area of structure GR_STRUCTDESCR -> GR_WA
CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
ASSIGN gr_wa->* TO <fs_wa>.
gr_datadescr ?= gr_structdescr.
gr_tabledescr ?= cl_abap_tabledescr=>create( gr_datadescr ).
* Create dynmaic internal table
CREATE DATA L_TAB-OBJETO TYPE HANDLE gr_tabledescr.
* ASSIGN gr_tab->* TO <fs_tab>.
endcase.
append l_tab to t_tab.
endloop.
BREAK-POINT.