- REPORT zini_prg_parametros.
- TABLES: e070.
- SELECT-OPTIONS: s_orden FOR e070-trkorr,
- s_fecha FOR sy-datum.
- PARAMETERS: p_01(10) DEFAULT 'Opcion 1',
- p_02(10) DEFAULT 'Opcion 2'.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Clase que importa los parámetros de entrada
- CLASS zini_cl_params DEFINITION.
- PUBLIC SECTION.
- 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: t_tab TYPE STANDARD TABLE OF ty_params.
- METHODS:
- constructor IMPORTING p_report TYPE string,
- load_params,
- get_param IMPORTING p_name TYPE string
- EXPORTING p_valor_s TYPE ANY TABLE
- p_valor_p TYPE any,
- set_param IMPORTING p_name TYPE string
- p_valor_s TYPE ANY TABLE OPTIONAL
- p_valor_p TYPE any OPTIONAL.
- PRIVATE SECTION.
- DATA: l_REPORT TYPE rsvar-report,
- t_selctab TYPE STANDARD TABLE OF rsscr,
- l_tab LIKE LINE OF t_tab.
- ENDCLASS.
- CLASS zini_cl_params IMPLEMENTATION.
- METHOD set_param.
- FIELD-SYMBOLS: <fft> TYPE table, <ff> TYPE any.
- CHECK p_name IS NOT INITIAL.
- TRY.
- DATA(l_tipo) = t_tab[ name = to_upper( p_name ) ]-kind.
- DATA(l_new) = t_tab[ name = to_upper( p_name ) ]-objeto.
- CASE l_tipo.
- WHEN 'S'. ASSIGN l_new->* TO <fft>. <fft> = p_valor_s.
- WHEN 'P'. ASSIGN l_new->* TO <ff>. <ff> = p_valor_p.
- ENDCASE.
- CATCH cx_root.
- CLEAR sy-subrc.
- ENDTRY.
- ENDMETHOD.
- METHOD get_param.
- FIELD-SYMBOLS: <fft> TYPE table, <ff> TYPE any.
- CHECK p_name IS NOT INITIAL.
- TRY.
- DATA(l_tipo) = t_tab[ name = to_upper( p_name ) ]-kind.
- DATA(l_new) = t_tab[ name = to_upper( p_name ) ]-objeto.
- CASE l_tipo.
- WHEN 'S'. ASSIGN l_new->* TO <fft>. p_valor_s = <fft>.
- WHEN 'P'. ASSIGN l_new->* TO <ff>. p_valor_p = <ff>.
- ENDCASE.
- CATCH cx_root.
- CLEAR sy-subrc.
- ENDTRY.
- ENDMETHOD.
- METHOD constructor.
- l_report = p_report.
- load_params( ).
- ENDMETHOD.
- METHOD load_params.
- PERFORM load_sscr IN PROGRAM 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.
- ENDCASE.
- APPEND l_tab TO t_tab.
- AT LAST.
- *--[ Cargamos los registros
- FIELD-SYMBOLS: <f_so> TYPE ANY TABLE,
- <f_pa> TYPE any.
- LOOP AT t_tab INTO l_tab.
- CASE l_tab-kind .
- WHEN 'S'.
- DATA(l_name) = |{ l_tab-name }[]|.
- ASSIGN (l_name) TO <f_so>.
- set_param( EXPORTING p_name = CONV #( l_tab-name ) p_valor_s = <f_so>[] ).
- WHEN 'P'.
- ASSIGN (l_tab-name) TO <f_pa>.
- set_param( EXPORTING p_name = CONV #( l_tab-name ) p_valor_p = <f_pa> ).
- ENDCASE.
- ENDLOOP.
- ENDAT.
- ENDLOOP.
- ENDMETHOD.
- ENDCLASS.
- END-OF-SELECTION.
- **--[ Ejemplo de USO
- * DATA(l_param) = NEW zini_cl_params( CONV #( sy-repid ) ).
- * DATA: ff TYPE RANGE OF sy-datum.
- * DATA: p_norel(10).
- * l_param->get_param( EXPORTING p_name = 'P_01' IMPORTING p_valor_p = p_norel ).
- * l_param->get_param( EXPORTING p_name = 'S_fecha' IMPORTING p_valor_s = ff ).
- * BREAK-POINT.
Última modificación de la página el 03 May 2026 a las 07h37
Powered by
PmWiki