Saturday, February 17, 2007

Utilizar Selection-Screens en un Dynpro


Como sabemos, en los dynpros no existen controles para crear los tan necesarios Selection-Screen...Felizmente, podemos crearlos desde un programa ABAP.

REPORT ZPRUEBA_ATG.

TABLES: SPFLI.

SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN.
SELECT-OPTIONS:
CARRID FOR SPFLI-CARRID.
SELECTION-SCREEN END OF SCREEN 0101.

START-OF-SELECTION.

CALL SCREEN 100.

Simplemente, creamos un SELECTION-SCREEN de tipo SubScreen.

Y en la transacción SE51, creamos un control SubScreen...


En el flujo lógico debemos colocar lo siguiente:

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.
CALL SUBSCREEN: SUBSCREEN_TEST INCLUDING SY-REPID '0101'.

PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
CALL SUBSCREEN: SUBSCREEN_TEST.

Finalmente, el programa quedaría así...


Saludos,

Blag.

6 comments:

a::. said...

Muy bueno!
Te he robado el código, gracias por compartirlo!
Saludos desde Argentina.
Alejandro

Alvaro "Blag" Tejada Galindo said...

Me alegra mucho que te haya sido útil -:)

Saludos,
Blag.

Anonymous said...

Gracias por el Codigo, muy util.
Una pregunta,
cuando usaba parametros en mi Dynpro, capturaba los datos que se ponian en ellos con el codigo:

---------------------------
PROCESS AFTER INPUT.
MODULE exit_cero.
FIELD: scarr-carrid,
scarr-carrname.
---------------------------
Como hago ahora para poder capturarlos los datos de los parametros y select-options incluidos en la SUBSCREEN??

Alvaro "Blag" Tejada Galindo said...

Los parametros y select-options los llamas igual como si estuvieran en tu ventana principal, el hecho de que esten en la SubScreen no afecta mucho...

Saludos,
Blag.

Anonymous said...

He hecho la subscreen tal y como se indica en esta guía. Intenté colorac varios select-options en la subscreen. Funciona pero no para más de un rango en cada select-option. Este seria el código donde declaro la subscreen:

"TOP del reporte
SELECTION-SCREEN BEGIN OF SCREEN 220 AS SUBSCREEN .
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS so_usr FOR zrhtt_reg_usrima-id_usuario.
SELECT-OPTIONS so_dni FOR zrhtt_reg_usrima-dni.
SELECT-OPTIONS so_cargo FOR zrhtt_reg_usrima-cargo.
SELECT-OPTIONS so_proy FOR zrhtt_tar_usrima-proyecto.
SELECT-OPTIONS so_nreq FOR zrhtt_tar_usrima-nro_req.
SELECT-OPTIONS so_sred FOR zrhtt_tar_usrima-status_redmine.
SELECT-OPTIONS so_pora FOR zrhtt_tar_usrima-porc_avance.
SELECT-OPTIONS so_fech FOR zrhtt_tar_usrima-fecha.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 220.

La subscreen se genera automáticamente. Le cree un espacio en la 200:
"SCREEN 200
PROCESS BEFORE OUTPUT.
CALL SUBSCREEN SC220 INCLUDING sy-repid '220'.
MODULE STATUS_0200.

PROCESS AFTER INPUT.
CALL SUBSCREEN SC220.
MODULE USER_COMMAND_0200.

El SUBSCREEN AREA que cree en la 200 se llama SC220.

Alvaro "Blag" Tejada Galindo said...

Imanol:

Este post es de hace 7 años...y no hago nada de ABAP desde hace casi 4 años...así que la verdad no creo que pueda ayudarte -:(

Asumo que como dices en tu comentario...Funciona pero no para más de un rango en cada select-option

Esto debe ser una limitación del mismo subscreen...

Saludos,

Blag.
Development Culture.