EXIT_SAPMM06E_006, Include ZXM06U36
EXIT_SAPMM06E_017, include ZXM06U42
Utilidades para tener siempre a mano en la programacion Abap...
EXIT_SAPMM06E_006, Include ZXM06U36
EXIT_SAPMM06E_017, include ZXM06U42
Con el siguiente código podremos crear pantallas de entrada de datos dinámicas. Donde según el radio button que se elija, aparecerán distintos filtros de selección.
TABLES: KNA1, MARA.
************************************************************************
*** SELECTION-SCREEN / PARAMETERS / SELECT-OPTIONS ***
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-A01.
PARAMETERS:
R_CLIE RADIOBUTTON GROUP GRUP USER-COMMAND R DEFAULT ‘X’,
R_MATE RADIOBUTTON GROUP GRUP.
SELECTION-SCREEN END OF BLOCK B1.
*Datos Clientes
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-B02.
SELECT-OPTIONS: SO_CLIE FOR KNA1-KUNNR MODIF ID CLI,
SO_NAME FOR KNA1-NAME1 MODIF ID CLI,
SO_LAND FOR KNA1-LAND1 MODIF ID CLI.
SELECTION-SCREEN END OF BLOCK B2.
*Datos Materiales
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-B03.
SELECT-OPTIONS: SO_MATE FOR MARA-MATNR NO INTERVALS NO-EXTENSION MODIF ID MAT.
SELECTION-SCREEN END OF BLOCK B3.
*———————————————————————–*
*AT SELECTION-SCREEN.
*———————————————————————–*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = ‘MAT’.
CASE R_MATE.
WHEN ‘X’.
SCREEN-ACTIVE = 1.
WHEN OTHERS.
SCREEN-ACTIVE = 0.
ENDCASE.
ELSEIF SCREEN-GROUP1 = ‘CLI’.
CASE R_MATE.
WHEN ‘X’.
SCREEN-ACTIVE = 0.
WHEN OTHERS.
SCREEN-ACTIVE = 1.
ENDCASE.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Ejemplo de creación de un ALV con columnas dinámicas generado mediante una tabla interna de columnas dinámicas.
REPORT ZPRUEBA_ALV_DINAMICO.
TYPE-POOLS: slis.
FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE, " Dynamic internal table name
<fs_dyntable>, " Field symbol to create work area
<fs_fldval> type any. " Field symbol to assign values
PARAMETERS: p_cols(5) TYPE c, " Input number of columns
p_rows(5) TYPE c.
DATA: t_newtable TYPE REF TO data,
t_newline TYPE REF TO data,
fs_fldcat TYPE slis_t_fieldcat_alv,
t_fldcat TYPE lvc_t_fcat,
wa_it_fldcat TYPE lvc_s_fcat,
wa_colno(2) TYPE n,
wa_flname(5) TYPE c.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = t_fldcat
IMPORTING
ep_table = t_newtable.
ASSIGN t_newtable->* TO <t_dyntable>.
CREATE DATA t_newline LIKE LINE OF <t_dyntable>.
ASSIGN t_newline->* TO <fs_dyntable>.
** Populate internal table
DATA: fieldname(20) TYPE c.
DATA: fieldvalue(10) TYPE c.
DATA: index(3) TYPE c.
DATA: index2(3) TYPE c.
DO p_rows TIMES.
index2 = sy-index.
DO p_cols TIMES.
index = sy-index.
MOVE sy-index TO wa_colno.
CONCATENATE 'COL'
wa_colno
INTO wa_flname.
fieldvalue.
CONDENSE fieldvalue NO-GAPS.
ASSIGN COMPONENT wa_flname
OF STRUCTURE <fs_dyntable> TO <fs_fldval>.
<fs_fldval> = fieldvalue.
ENDDO.
APPEND <fs_dyntable> TO <t_dyntable>.
ENDDo.