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:

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

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

    Saludos,
    Blag.

    ReplyDelete
  3. Anonymous8:07 PM

    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??

    ReplyDelete
  4. 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.

    ReplyDelete
  5. Anonymous11:20 AM

    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.

    ReplyDelete
  6. 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.

    ReplyDelete