Archivo

Posts Tagged ‘pantalla selección’

Mostrar u ocultar campos en pantalla de selección

Caso: se desea crear una pantalla de selección con radiobuttons que al ser presionados, modifique la visualización de otros campos en pantalla.

Solución: para el ejemplo utilizaremos radiobuttons que al ser presionados grisen u oculten otros campos de selección.

REPORT zprueba_abap.
TABLES: bsid,
vbrk.
 
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
PARAMETERS: r_new RADIOBUTTON GROUP r1 USER-COMMAND rbut DEFAULT 'X',
r_pen RADIOBUTTON GROUP r1,
r_pro RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK b1.
 
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
PARAMETERS: p_bukrs TYPE bsid-bukrs.
SELECT-OPTIONS: s_kunnr FOR bsid-kunnr MODIF ID zz1,
s_belnr FOR bsid-belnr MODIF ID zz1.
 
PARAMETERS: p_gjahr TYPE vbrk-gjahr MODIF ID im1.
SELECT-OPTIONS: s_bldat FOR bsid-bldat,
s_zuonr FOR vbrk-zuonr MODIF ID im2.
SELECTION-SCREEN END OF BLOCK b2.
 
AT SELECTION-SCREEN OUTPUT.
PERFORM ocultar_campos.
 
FORM ocultar_campos.
 
IF r_new EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'IM2'.
screen-input = 0. " Campo editable
screen-invisible = 1. " Campo invisible
MODIFY SCREEN.
ENDIF.
ENDLOOP.
 
ELSEIF r_pen EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'ZZ1'.
screen-input = 0. " Campo no editable/grisado
screen-invisible = 0. " Campo invisible
MODIFY SCREEN.
ENDIF.
 
ENDLOOP.
ELSEIF r_pro EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'IM1'.
screen-input = 0. " Campo no editable/grisado
screen-invisible = 1. " Campo invisible
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " OCULTAR_CAMPOS
Anuncios

COMMENT en pantalla selección

Caso: se busca mostrar la descripción de un campo en la pantalla de selección.

REPORT zprueba_descripcion.
TABLES kna1.

DATA: gv_kunnr TYPE kna1-kunnr.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECTION-SCREEN BEGIN OF LINE.
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN COMMENT 48(35) gv_name1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON s_kunnr.
CLEAR gv_name1.

SELECT SINGLE kunnr name1
INTO (gv_kunnr, gv_name1)
FROM kna1
WHERE kunnr IN s_kunnr.

IF sy-subrc NE 0.
MESSAGE s899(mm) WITH ‘Cliente inexistente’ DISPLAY LIKE ‘E’.
ENDIF.