Está en la página 1de 53

Captulo I: Programacin en Dilogo. 1. Tcnicas Especiales del Screen Painter. 1.1 Verificacin automtica en Module Pool Verificacin de formato.

. Verificacin de campos obligatorios. Verificacin de llaves forneas. Verificacin valores fijos. 1.2 Mensajes en pantalla Mensaje de Error. Mensaje de Advertencia. Mensaje de Informacin. Mensaje de Buen Resultado. Mensaje de Interrupcin. 1.3 Configuracin dinmica de pantallas 1.4 Ejecucin Condicionada De Mdulos ON CHAIN-[INPUT REQUEST] 2 Modificacin Dinmica de Pantallas. 3 Definicin y Manejo de Tabstrip controls.

2 5 6 7 14 17 19 21 23 25 31 58 67

Captulo I: Programacin en Dilogo.

4 horas

Tcnicas Especiales del Screen Painter. 3.1 Verificacin automtica en Module Pool Verificacin de formato. Verificacin de campos obligatorios. Verificacin de llaves forneas. Verificacin valores fijos.

Verificacin automtica en Module Pool.


3.2 Verificacin de formato. El procesador de dilogo valida las entradas de acuerdo a los atributos de cada campo. Si el sistema detecta un valor incorrecto, despliega un mensaje de error y vuelve a mostrar los campos para su nueva entrada. Ejemplo: Crear un dynpro similar a este:

En el Servidor, el programa ZNICAPII1A llama a este dynpro de la forma siguiente:

El dynpro tendra los siguientes elementos: I_FECHA: elemento de Formato Fecha DATS. I_MONTO: elemento de Formato Fecha DEC.

Finalmente, una vez activado el Dynpro se pueden hacer las pruebas con los siguientes valores, se observar que sin agregar cdigo el sistema valida el contenido de los campos de pantalla de acuerdo a su formato.

3.3 Verificacin de campos obligatorios. Al momento de que algn campo de la pantalla se le asigna el atributo de que es obligatorio, el procesador de dilogo no contina con el proceso, al menos que todos los campos obligatorios tengan algn valor. Ejemplo: Al crear un dynpro similar al ejemplo de Verificacin de formato, modificando el elemento I_FECHA, del siguiente modo:

En el Servidor, el programa ZNICAPII1B llama a este dynpro del ejemplo: Finalmente, una vez activado el Dynpro se pueden verificar que el sistema pide que se ingrese un valor para el campo I_FECHA.

3.4 Verificacin de llaves forneas. Una verificacin de clave fornea es procesada solo si un campo de pantalla se refiere a un campo del Diccionario para el cual se ha definido una tabla de verificacin. Al mismo tiempo, la funcionalidad de la tecla F4 es activada. Esto significa que las posibles entradas para un campo son desplegadas. Ejemplo: Al crear en un dynpro un elemento que haga referencia a un campo de una Tabla que tiene Foreign Key a otra Tabla, como es el caso de SBOOK-CARRID con SCARRCARRID, del siguiente modo:

En el Servidor, el programa ZNICAPII1C llama a este dynpro del ejemplo: Finalmente, una vez activado el Dynpro se pueden verificar que el sistema slo permite el ingreso se valores existentes en el campo de la Tabla SBOOK-CARRID.

3.5 Verificacin valores fijos. En el Diccionario ABAP/4, se pueden definir los valores fijos para los dominios. Si se define un campo de pantalla con referencia a un dominio con valores fijos, ocurre lo siguiente: Los valores fijos son desplegados si el usuario presiona la tecla F4 para ver los posibles valores para el campo de entrada. El procesador de dilogo verifica los valores introducidos en el campo contra el conjunto de valores fijos del Dominio correspondiente. Ejemplo: Al crear en un dynpro un elemento que haga referencia a un campo de una Tabla que tiene un dominio con valores fijos, como es el caso del campo Clase de Vuelo del campo de tabla SBOOK-CLASS, del siguiente modo.

En el Servidor, el programa ZNICAPII1D llama a este dynpro del ejemplo: Finalmente, una vez activado el Dynpro se pueden verificar que el sistema slo permite el ingreso se valores existentes del dominio para el campo de la Tabla SBOOK-CLASS. Conjunto de valores para el campo SBOOK-CLASS: C Business class Y Economy class F First class

3.6 Mensajes en pantalla Mensaje de Error. Mensaje de Advertencia. Mensaje de Informacin. Mensaje de Buen Resultado. Mensaje de Interrupcin.

Mensajes en pantalla
3.7 Mensaje de Error. El texto de un mensaje de error (E) es desplegado en la pantalla actual. Todos los campos de pantalla asignados al mdulo correspondiente (instruccin se vuelven disponibles para introducir informacin de nuevo. El sistema obliga al usuario a reintroducir datos. Ejemplo de Mensaje de Error Al crear un dynpro con 3 elementos que haga referencia a 3 variables de un programa.
FIELD)

En el Servidor, el programa ZNICAPII1G llama a este dynpro del ejemplo:


REPORT ZNICAPII1F MESSAGE-ID zmsg001 . ************************************************************************ *CAPITULO II * * Mensajes en pantalla * * Mensaje de Error * ************************************************************************ DATA: ok_code TYPE sy-ucomm, input1 TYPE i, input2 TYPE i, input3 TYPE i, sum TYPE i. CALL SCREEN 100. *Modulos PBO MODULE init_screen_100 OUTPUT. CLEAR: input1, input2, input3. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE. MODULE chain_module_1 INPUT. CLEAR sum. sum = sum + : input1, input2, input3. IF sum <= 100. *EMITIR MENSAJE MESSAGE e003 WITH text-006. ENDIF. ENDMODULE.

El flow logic del dynpro 100 sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE init_screen_100. PROCESS AFTER INPUT. MODULE cancel AT EXIT-COMMAND. CHAIN. FIELD input1. FIELD input2. FIELD input3 MODULE chain_module_1. ENDCHAIN.

Casos de Prueba Mensaje de Error El Modulo chain_module_1 muestra un mensaje de error si la Suma de los campos es menor a 100, Chain permite el ingreso de valores en los 3 campos.

3.8 Mensaje de Advertencia. El texto del mensaje de advertencia (W) es desplegado en la pantalla actual. Todos los campos de pantalla asignados al mdulo correspondiente (instruccin se vuelven disponibles para introducir informacin de nuevo.
FIELD)

El usuario puede reintroducir los datos o ignorar el mensaje de advertencia presionando la tecla ENTER. Ejemplo de Mensaje de Advertencia Al crear un dynpro con 3 elementos que haga referencia a 3 variables de un programa.

En el Servidor, el programa ZNICAPII1H llama a este dynpro del ejemplo:


REPORT ZNICAPII1H MESSAGE-ID zmsg001 . ************************************************************************ *CAPITULO II * * Mensajes en pantalla * * Mensaje de Advertencia * ************************************************************************ DATA: ok_code TYPE sy-ucomm, input1 TYPE i, input2 TYPE i, input3 TYPE i, sum TYPE i. CALL SCREEN 100. *Modulos PBO MODULE init_screen_100 OUTPUT. CLEAR: input1, input2, input3. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE. MODULE chain_module_1 INPUT. CLEAR sum. sum = sum + : input1, input2, input3. IF sum = 100. *EMITIR MENSAJE MESSAGE W004 WITH text-007. ENDIF. ENDMODULE.

10

El flow logic del dynpro 100 sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE init_screen_100. PROCESS AFTER INPUT. MODULE cancel AT EXIT-COMMAND. CHAIN. FIELD input1. FIELD input2. FIELD input3 MODULE chain_module_1. ENDCHAIN.

Casos de Prueba Mensaje de Advertencia El Modulo chain_module_1 muestra un mensaje de Advertencia si la Suma de los campos es igual a 100, Chain permite el ingreso de valores en los 3 campos.

11

3.9 Mensaje de Informacin. El texto de un mensaje de informacin (I) es desplegado en la pantalla actual. El proceso de la pantalla actual es suspendido. Despus de que el usuario presione la tecla ENTER, el programa contina con su ejecucin normal desde el punto donde fue suspendido. Ejemplo de Mensaje de Informacin Al crear un dynpro con 3 elementos que haga referencia a 3 variables de un programa.

En el Servidor, el programa ZNICAPII1I llama a este dynpro del ejemplo:


REPORT ZNICAPII1I MESSAGE-ID zmsg001 . ************************************************************************ *CAPITULO II * * Mensajes en pantalla * * Mensaje de Informacin * ************************************************************************ DATA: ok_code TYPE sy-ucomm, input1 TYPE i, input2 TYPE i, input3 TYPE i, sum TYPE i. CALL SCREEN 100. *Modulos PBO MODULE init_screen_100 OUTPUT. CLEAR: input1, input2, input3. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE. MODULE chain_module_1 INPUT. CLEAR sum. sum = sum + : input1, input2, input3. IF ( sum >= 100 and sum <= 150 ). *EMITIR MENSAJE MESSAGE I005 WITH text-008. ENDIF. ENDMODULE.

12

El flow logic del dynpro 100 sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE init_screen_100. PROCESS AFTER INPUT. MODULE cancel AT EXIT-COMMAND. CHAIN. FIELD input1. FIELD input2. FIELD input3 MODULE chain_module_1. ENDCHAIN.

Casos de Prueba Mensaje de Informacin El Modulo chain_module_1 muestra un mensaje de Informacin si la Suma de los campos est en el rango de 100 a 150, Chain permite el ingreso de valores en los 3 campos.

13

3.10

Mensaje de Buen Resultado.

Un mensaje de texto de buen resultado ( S) es desplegado en la pantalla siguiente a la actual. Ejemplo de Mensaje de Buen Resultado Al crear un dynpro con 3 elementos que haga referencia a 3 variables de un programa.

En el Servidor, el programa ZNICAPII1J llama a este dynpro del ejemplo:


REPORT ZNICAPII1J MESSAGE-ID zmsg001 . ************************************************************************ *CAPITULO II * * Mensajes en pantalla * * Mensaje de Buen Resultado * ************************************************************************ DATA: ok_code TYPE sy-ucomm, input1 TYPE i, input2 TYPE i, input3 TYPE i, sum TYPE i. CALL SCREEN 100. *Modulos PBO MODULE init_screen_100 OUTPUT. CLEAR: input1, input2, input3. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE. MODULE chain_module_1 INPUT. CLEAR sum. sum = sum + : input1, input2, input3. IF ( sum >= 100 ). *EMITIR MENSAJE MESSAGE S005 WITH text-009. ELSE. MESSAGE E003 WITH text-006. ENDIF.

14

El flow logic del dynpro 100 sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE init_screen_100. PROCESS AFTER INPUT. MODULE cancel AT EXIT-COMMAND. CHAIN. FIELD input1. FIELD input2. FIELD input3 MODULE chain_module_1. ENDCHAIN.

Casos de Prueba Mensaje de Buen Resultado El Modulo chain_module_1 muestra un mensaje de Buen Resultado si la Suma de los campos es mayor a 100.

El Modulo chain_module_1 muestra un mensaje de Error si la Suma de los campos es menor a 100, Chain permite el ingreso de valores en los 3 campos.

15

3.11

Mensaje de Interrupcin.

El texto de un mensaje de Interrupcin (A) es desplegado en la pantalla actual. Despus de que el usuario presione la tecla ENTER, el proceso actual es terminado y el proceso regresa a la pantalla inicial. Ejemplo de Mensaje de Buen Resultado Al crear un dynpro con 3 elementos que haga referencia a 3 variables de un programa.

En el Servidor, el programa ZNICAPII1K llama a este dynpro del ejemplo:


REPORT ZNICAPII1K MESSAGE-ID zmsg001 . ************************************************************************ *CAPITULO II * * Mensajes en pantalla * * Mensaje de Interrupcin * ************************************************************************ DATA: ok_code TYPE sy-ucomm, input1 TYPE i, input2 TYPE i, input3 TYPE i, sum TYPE i. CALL SCREEN 100. *Modulos PBO MODULE init_screen_100 OUTPUT. CLEAR: input1, input2, input3. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE. MODULE chain_module_1 INPUT. CLEAR sum. sum = sum + : input1, input2, input3. CLEAR sum. sum = sum + : input1, input2, input3. IF ( sum >= 100 ). *EMITIR MENSAJE MESSAGE S005 WITH text-009. ELSEIF ( sum < 10 ).. MESSAGE A003 WITH text-006. ENDIF. ENDMODULE.

16

El flow logic del dynpro 100 sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE init_screen_100. PROCESS AFTER INPUT. MODULE cancel AT EXIT-COMMAND. CHAIN. FIELD input1. FIELD input2. FIELD input3 MODULE chain_module_1. ENDCHAIN.

Casos de Prueba Mensaje de Interrupcin El Modulo chain_module_1 muestra un mensaje de Interrupcin si la Suma de los campos es menor a 10, el proceso actual es terminado.

Y el proceso regresa a la pantalla inicial.

17

3.12

Configuracin dinmica de pantallas

Configuracin dinmica de pantallas


Desde una transaccin podemos ir controlando el flujo de pantallas de la misma, llamar a otras transacciones o reportes.
SET SET SCREEN SCREEN

CALL CALL SCREEN SCREEN

3.13

Configuracin Dinmica de la siguiente pantalla.

Ejemplo de Sentencia SET SCREEN Crear dos dynpro cualquiera 100 y 200 asociados a un programa. En el Servidor, el programa ZNICAPII1L llama a estos dynpros del ejemplo:
1

En el Screen Painter (Transaccin SE51), creamos los dynpros 100 y 200 para el programa ZNICAPII1L.

18

19

Por defecto, cuando acaben los mdulos del evento PAI, el sistema saltar a la pantalla que indique el atributo Next Screen de la pantalla en ejecucin. Es posible modificar el atributo de la prxima pantalla con la instruccin SET. SET SCREEN <no._pantalla>.

Partiendo de un Dynpro 100, Su flow logic correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE PBO_100. PROCESS AFTER INPUT. MODULE PAI_100.

Donde los mdulos PBO_100 y PAI_100 (dentro del programa ZNICAPII1L) seran de la siguiente forma:
*Modulos PBO *&---------------------------------------------------------------------* *& Module PBO_100 OUTPUT *&---------------------------------------------------------------------* MODULE PBO_100 OUTPUT. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI *&---------------------------------------------------------------------* *& Module PAI_100 INPUT *&---------------------------------------------------------------------* MODULE PAI_100 INPUT. SET SCREEN 200. LEAVE SCREEN. ENDMODULE.

La instruccin SET SCREEN XXX rescribe temporalmente la siguiente pantalla a procesar. La pantalla xxx debe ser una pantalla del mismo "module pool".

20

La pantalla siguiente es procesada despus de procesar la pantalla actual, o al menos que se termine la ejecucin de la pantalla actual con la instruccin LEAVE SCREEN. Al encontrar esta instruccin, se ejecuta la pantalla siguiente en forma inmediata.

Si se desea terminar el procesamiento de la pantalla actual e ir directamente a la pantalla siguiente en una sola instruccin, se puede usar el estatuto LEAVE TO SCREEN xxx.

21

3.14

Insercin de una o ms pantallas

La instruccin CALL SCREEN xxx interrumpe el procesamiento de la pantalla actual para procesar la pantalla xxx y las pantallas subsecuentes. La pantalla llamada con esta instruccin deber ser una pantalla del mismo "module pool". Ejemplo de Sentencia CALL SCREEN Crear dos dynpro cualquiera 100 y 200 asociados a un programa. En el Servidor, el programa ZNICAPII1L llama a estos dynpros del ejemplo:
1

En el Screen Painter (Transaccin SE51), creamos los dynpros 100 y 200 para el programa ZNICAPII1M (Ntese que son iguales al del programa ZNICAPII1L).
La lgica del programa ZNICAPII1M sera como el siguiente:
REPORT ZNICAPII1M MESSAGE-ID zmsg001. CALL SCREEN 100. *&---------------------------------------------------------------------* *& Module PBO_XXX OUTPUT *&---------------------------------------------------------------------* MODULE PBO_XXX OUTPUT. SET PF-STATUS 'STATUS_XXX'. ENDMODULE. *&---------------------------------------------------------------------* *& Module PAI_100 INPUT *&---------------------------------------------------------------------* MODULE PAI_100 INPUT. CALL SCREEN 200. ENDMODULE. *&---------------------------------------------------------------------* *& Module PAI_200 INPUT *&---------------------------------------------------------------------* MODULE PAI_200 INPUT. SET SCREEN 0. LEAVE SCREEN. ENDMODULE. *&---------------------------------------------------------------------* *& Module CANCELAR INPUT *&---------------------------------------------------------------------* MODULE CANCELAR INPUT. LEAVE PROGRAM. ENDMODULE.

22

Partiendo de un Dynpro 100, Su flow logic correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE PBO_XXX. PROCESS AFTER INPUT. MODULE CANCELAR AT EXIT-COMMAND. MODULE PAI_100.

El flow logic del Dynpro 200 correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE PBO_XXX. PROCESS AFTER INPUT. MODULE CANCELAR AT EXIT-COMMAND. MODULE PAI_200.

El Status XXX sera como el siguiente (slo el icono cancel ira):

Finalmente, una vez grabado y activado el programa y los dynpros, podemos ver el fuljo de los dynpros:

23

Ejecucin Condicionada De Mdulos ON CHAIN-[INPUT REQUEST]

Ejecucin Condicionada de Mdulos.


Si se especifica la adicin ON INPUT despus de MODULE en una instruccin FIELD, el mdulo es ejecutado solamente si el campo relevante contiene un valor diferente al valor inicial. En un estatuto CHAIN se debe usar la instruccin ON CHAIN-INPUT. Entonces, el mdulo concerniente es procesado solamente si al menos uno de los campos de pantalla del estatuto CHAIN contiene un valor diferente al valor inicial.
PROCESS AFTER INPUT. FIELD <campo de pantalla>. MODULE <mdulo> ON INPUT. . . PROCESS AFTER INPUT. CHAIN. FIELD <campo de pantalla>, <campo de pantalla>, . . <Campo de pantalla>. MODULE <mdulo> ON CHAIN-INPUT. ENDCHAIN. . .

Si se especifica la adicin ON REQUEST despus de MODULE en una instruccin FIELD, el mdulo es ejecutado nicamente si el campo relevante tiene una nueva entrada. En un estatuto CHAIN, se debe usar la instruccin ON CHAIN-REQUEST. Entonces, el mdulo concerniente es procesado solamente si al menos uno de los campos de pantalla del estatuto CHAIN tiene una nueva entrada.
PROCESS AFTER INPUT. FIELD <campo de pantalla>. MODULE <mdulo> ON REQUEST. . . PROCESS AFTER INPUT. CHAIN. FIELD <campo de pantalla>, <campo de pantalla>, . . <Campo de pantalla>. MODULE <mdulo> ON CHAINREQUEST. ENDCHAIN.

24

Ejemplo de Sentencia ON INPUT, ON CHAIN-INPUT y ON CHAIN-REQUEST Creamos un programa con 6 campos, del modo siguiente: En el Servidor, el programa ZNICAPII1N llama a este dynpro del ejemplo:

La lgica del programa ZNICAPII1N sera como el siguiente:


REPORT ZNICAPII1N MESSAGE-ID zmsg001 . ************************************************************************ *CAPITULO II * *EJECUCIN CONDICIONADA DE MDULOS * * Sentencia-ON INPUT, ON CHAIN-INPUT y ON CHAIN-REQUEST * ************************************************************************ DATA: ok_code TYPE sy-ucomm, input1 TYPE i, input2 TYPE i, input3 TYPE i, input4 TYPE i, input5 TYPE i, input6 TYPE i. CALL SCREEN 100. *Modulos PBO MODULE init_screen_100 OUTPUT. * CLEAR: input1, input2, input3, input4, input5, input6. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI MODULE MOD_A INPUT. MESSAGE i888(sabapdocu) WITH text-001. ENDMODULE. MODULE MOD_B INPUT. MESSAGE i888(sabapdocu) WITH text-002. ENDMODULE. MODULE MOD_C INPUT. MESSAGE i888(sabapdocu) WITH text-003. ENDMODULE. MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE.

25

Partiendo de un Dynpro 100, Su flow logic correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE init_screen_100. PROCESS AFTER INPUT. MODULE cancel AT EXIT-COMMAND. FIELD input1 MODULE MOD_A ON INPUT. CHAIN. FIELD input2. FIELD input3 MODULE MOD_B ON CHAIN-INPUT. ENDCHAIN. CHAIN. FIELD input4. FIELD input5. FIELD input6 MODULE MOD_C ON CHAIN-REQUEST. ENDCHAIN.

El Status STATUS_100 sera como el siguiente (slo el icono cancel ira):

Los Text-Elements text-001, text-002 y text-003 que mostraran los mdulos PAI seran como los siguientes:

26

Finalmente, una vez grabado y activado el programa y sus elementos podemos ver como trabajan las sentencias ON INPUT, ON CHAIN-INPUT y ON CHAIN-REQUEST.

INPUT: FIELD ON INPUT

Por cada campo que se modifica se genera un mensaje.

REQUEST: CHAIN ON FIELD REQUEST

Si se modifica al menos un campo, sale el mensaje, Notar que si no modificamos los valores ingresados y le damos ENTER a la pantalla el mensaje ON CHAIN-REQUEST no vuelve a aparecer porque no ha variado los valores en los campos.

27

Configuracin dinmica de pantallas


Desde una transaccin podemos ir controlando el flujo de pantallas de la misma, llamar a otras transacciones o reportes.
SET SET SCREEN SCREEN

CALL CALL SCREEN SCREEN

3.15

Configuracin Dinmica de la siguiente pantalla.

Ejemplo de Sentencia SET SCREEN Crear dos dynpro cualquiera 100 y 200 asociados a un programa. En el Servidor, el programa ZNICAPII1L llama a estos dynpros del ejemplo:
1

En el Screen Painter (Transaccin SE51), creamos los dynpros 100 y 200 para el programa ZNICAPII1L.

28

Por defecto, cuando acaben los mdulos del evento PAI, el sistema saltar a la pantalla que indique el atributo Next Screen de la pantalla en ejecucin. Es posible modificar el atributo de la prxima pantalla con la instruccin SET. SET SCREEN <no._pantalla>.

Partiendo de un Dynpro 100, Su flow logic correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE PBO_100. PROCESS AFTER INPUT. MODULE PAI_100.

Donde los mdulos PBO_100 y PAI_100 (dentro del programa ZNICAPII1L) seran de la siguiente forma:
*Modulos PBO *&---------------------------------------------------------------------* *& Module PBO_100 OUTPUT *&---------------------------------------------------------------------* MODULE PBO_100 OUTPUT. SET PF-STATUS 'STATUS_100'. ENDMODULE. *Modulos PAI *&---------------------------------------------------------------------* *& Module PAI_100 INPUT *&---------------------------------------------------------------------* MODULE PAI_100 INPUT. SET SCREEN 200. LEAVE SCREEN. ENDMODULE.

La instruccin SET SCREEN XXX rescribe temporalmente la siguiente pantalla a procesar. La pantalla xxx debe ser una pantalla del mismo "module pool".

29

La pantalla siguiente es procesada despus de procesar la pantalla actual, o al menos que se termine la ejecucin de la pantalla actual con la instruccin LEAVE SCREEN. Al encontrar esta instruccin, se ejecuta la pantalla siguiente en forma inmediata.

Si se desea terminar el procesamiento de la pantalla actual e ir directamente a la pantalla siguiente en una sola instruccin, se puede usar el estatuto LEAVE TO SCREEN xxx.

30

3.16

Insercin de una o ms pantallas

La instruccin CALL SCREEN xxx interrumpe el procesamiento de la pantalla actual para procesar la pantalla xxx y las pantallas subsecuentes. La pantalla llamada con esta instruccin deber ser una pantalla del mismo "module pool". Ejemplo de Sentencia CALL SCREEN Crear dos dynpro cualquiera 100 y 200 asociados a un programa. En el Servidor, el programa ZNICAPII1L llama a estos dynpros del ejemplo:
1

En el Screen Painter (Transaccin SE51), creamos los dynpros 100 y 200 para el programa ZNICAPII1M (Ntese que son iguales al del programa ZNICAPII1L).
La lgica del programa ZNICAPII1M sera como el siguiente:
REPORT ZNICAPII1M MESSAGE-ID zmsg001. CALL SCREEN 100. *&---------------------------------------------------------------------* *& Module PBO_XXX OUTPUT *&---------------------------------------------------------------------* MODULE PBO_XXX OUTPUT. SET PF-STATUS 'STATUS_XXX'. ENDMODULE. *&---------------------------------------------------------------------* *& Module PAI_100 INPUT *&---------------------------------------------------------------------* MODULE PAI_100 INPUT. CALL SCREEN 200. ENDMODULE. *&---------------------------------------------------------------------* *& Module PAI_200 INPUT *&---------------------------------------------------------------------* MODULE PAI_200 INPUT. SET SCREEN 0. LEAVE SCREEN. ENDMODULE. *&---------------------------------------------------------------------* *& Module CANCELAR INPUT *&---------------------------------------------------------------------* MODULE CANCELAR INPUT. LEAVE PROGRAM. ENDMODULE.

31

Partiendo de un Dynpro 100, Su flow logic correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE PBO_XXX. PROCESS AFTER INPUT. MODULE CANCELAR AT EXIT-COMMAND. MODULE PAI_100.

El flow logic del Dynpro 200 correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. MODULE PBO_XXX. PROCESS AFTER INPUT. MODULE CANCELAR AT EXIT-COMMAND. MODULE PAI_200.

El Status XXX sera como el siguiente (slo el icono cancel ira):

Finalmente, una vez grabado y activado el programa y los dynpros, podemos ver el fuljo de los dynpros:

32

4. Modificacin dinmica de pantallas


Modificacin dinmica de campos de pantallas. Se pueden cambiar temporalmente ciertos atributos de campos, por ejemplo cambiar los campos de solo-lectura en campos de entrada/salida.

Change <-> Display

Change <-> Display

A B

A B

campos de salida

campos de entrada y salida

Tambin se puede usar la modificacin dinmica de pantallas para facilitar el ocultar ciertos campos y as evitar secuencias dinmicas de pantallas. Atributos de campos Modificables Los campos de pantalla y sus atributos modificables son automticamente almacenados en la tabla interna SCREEN. La tabla SCREEN es inicializada con los campos definidos en el Screen Painter y con sus atributos cada vez que el mdulo PBO es ejecutado. Para determinar los campos para los cuales se puede cambiar uno ms atributos, se lee el campo SCREEN-NAME y del campo SCREEN-GROUP1 al campo SCREEN-GROUP4 en la tabla SCREEN. El campo SCREEN-REQUEST est reservado para uso interno del sistema. Puede modificar la estructura de un Dynpro en su programa ABAP durante el evento PBO del Dynpro. Las nicas sentencias permitidas que se puede utilizar para modificar la pantalla son:
LOOP AT SCREEN. ... MODIFY SCREEN. ... ENDLOOP.

es una sentencia propia, que no debe confundirse con un LOOP ms sobre una tabla interna.
LOOP AT SCREEN

En reportes se utiliza la sentencia


OUTPUT.

LOOP AT SCREEN

en el evento

AT SELECTION-SCREEN

33

Tabla SCREEN / Atributos modificables de campos


Component surname group1 group2 group3 group4 required input output intensified invisible length active display_3d value_help request Length Type Meaning 132 C Name of the screen field 3 C Modification group 1 3 C Modification group 2 3 C Modification group 3 3 C Modification group 4 1 C Field input is mandatory 1 C Field is ready for input 1 C Field is for display only 1 C Field is highlighted 1 C Field is suppressed 1 X Field length 1 C Field is active 1 C Three-dimensional box 1 C Input help button display 1 C Input exists Attribute Name Group 1 Group2 Group3 Group4 Mandatory field Entry The output is as follows: Highlighted Invisible VisLg Input/Output/Invisible Two-dimensional Input helps -

Atributos: Modificacin de grupos Se puede asignar un campo a cuatro grupos diferentes. Los nombres de grupos son de tres caracteres de longitud y pueden ser definidos libremente.
Modificacin de Grupos Field name Group1 Group2 Group3 Group4
DEMO_CONN-CARRID DEMO_CONN-CONNID DEMO_CONN-CITYFROM DEMO_CONN-CITYTO DEMO_CONN-ARRTIME DEMO_CONN-DISTANCE DEMO_CONN-FLDATE MOD MOD MOD MOD MOD

En el Screen Painter en atributos del campo y en la Parte Groups, podemos asignar un campo a cuatro grupos diferentes. En la grfica se asigna el campo DEMO_CONNCITYFROM al grupo MOD.

34

Ejemplo de Modificacin dinmica de campos de pantallas. Creamos un programa de dilogo con un dynpro 100. En el Servidor, el programa ZNICAPII4A llama a este dynpro del ejemplo: El dynpro 100 tiene siete campos de entrada, que hacen referencia a los campos de diccionario de la estructura DEMO_CONN. Los campos DEMO_CONNCARRID y DEMO_CONNCONNID no estn asignados a ningn grupo de modificacin, el resto de campos de la estructura DEMO_CONN estn asignados al grupo de modificacin MOD El botn Alternar en la pantalla y el botn el men bar Alternar/Modificar tienen el mismo Function code = ALT.

35

El dynpro 100 tiene siete campos de entrada, que hacen referencia a los campos de diccionario de la estructura DEMO_CONN.

Los campos de entrada DEMO_CONNCARRID y DEMO_CONNCONNID no estn asignados a ningn grupo de modificacin, El resto de campos de entrada de la estructura DEMO_CONN estn asignados al grupo de modificacin MOD

36

El botn Alternar en la pantalla y el botn el men bar Alternar/Modificar tienen el mismo Function code = ALT. Para el dynpro 100, se crea el STATUS 'SCREEN_100'. En el Application toolbar se crea el Function code = ALT.

En el Screen Painter para el botn Alternar en el dynpro 100 se le asocia el Function code = ALT.

37

Para el dynpro 100, en el STATUS 'SCREEN_100'. En el Standard toolbar se crea el Function code = OUT, del tipo E. Para el mdulo PAI MODULE cancel AT EXIT-COMMAND, el cual permite escapar de la pantalla ante cualquier validacin.

El flow logic del Dynpro 100 correspondiente sera como el siguiente:

PROCESS BEFORE OUTPUT. MODULE status_0100. PROCESS AFTER INPUT. * Function code = OUT, escapa de las validaciones MODULE cancel AT EXIT-COMMAND. MODULE user_command_0100.

38

La lgica del programa ZNICAPII4A (el cual contienen los Mdulos necesarios) sera como el siguiente:
REPORT ZNICAPII4A. ************************************************************************ *CAPITULO II * * Modificacin dinmica de campos de pantallas * * Ejemplo de LOOP AT SCREEN-- MODIFY SCREEN * * Responsable: Carlos Ancasi (7C) * ************************************************************************ DATA: OK_CODE TYPE SY-UCOMM, FCODE TYPE SY-UCOMM. DATA flag(1) TYPE C. CALL SCREEN 100. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'SCREEN_100'. SET TITLEBAR 'TIT_100'. * Modif. dinmica de campos de pantallas, PERMITIR O NO INGRESAR VALORES LOOP AT SCREEN. IF screen-group1 = 'MOD'. IF flag = ' '. screen-input = '0'. ELSEIF flag = 'X'. screen-input = '1'. ENDIF. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. fcode = ok_code. clear ok_code. CASE fcode. WHEN 'ALT'. IF flag = ' '. flag = 'X'. ELSEIF flag = 'X'. flag = ' '. ENDIF. WHEN 'SALIR'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Module cancel INPUT *&---------------------------------------------------------------------* MODULE cancel INPUT. LEAVE PROGRAM. ENDMODULE. " cancel INPUT

39

Finalmente, una vez grabado y activado el programa y sus elementos podemos ver como trabajan las sentencias LOOP AT SCREEN y MODIFY SCREEN. Abrimos una sesin y ejecutamos el programa ZNICAPII4A y notaremos que los ltimos 5
campos estn bloqueados para ingresar valores.

Si damos click en el botn Alternar de la pantalla o en el botAlternar/Modificardel men bar notaremos que los ltimos 5 campos ya no estn bloqueados para ingresar valores.

40

Definicin y Manejo de Tabstrip controls.

Tabstrips Controls
Definicin de Tabstrip controls Un control tabstrip pantalla es un objeto compuesto por dos o ms fichas o pestaas. Cada ficha consta de un ttulo y una zona para elementos de pantalla. Si la zona ocupada por el control tabstrip es demasiado estrecha para mostrar todos los ttulos de la pestaa, aparece una barra de desplazamiento, lo que le permite llegar a los ttulos que no se muestran. Tambin hay un botn que le permite mostrar una lista de todos los ttulos de ficha.

Pasos para creacin un control tabstrip. Cuando se crea un control tabstrip, usted debe: 1. Definir el rea del tabstrip en la pantalla y los ttulos de las pestaas. 2. Asignar un Subscreen para cada una de los ttulos de las pestaas. 3. Programar el flow logic de la pantalla. 4. Programar la lgica de procesamiento ABAP. Programacin del flow logic En el flow logic, todo lo que tiene que hacer a mano es incluir los correctos subscreens. El flujo de pantallas y el transporte de datos para el programa ABAP es el mismo que para subscreens normales.
El flow logic del Dynpro que contiene al tabstrip sera como el siguiente:

PROCESS BFORE OUTPUT. ... CALL SUBSCREEN: area1 INCLUDING [prog1] dynp1, area2 INCLUDING [prog2] dynp2, area3 INCLUDING [prog3] dynp3, ... ... PROCESS AFTER INPUT. ... CALL SUBSCREEN: area1, area2, area3, ... ...

41

42

Ejemplo de Tabstrip Controls. Creamos un programa con un dynpro 100, el cual contiene el tabstrip w_tabstrip. El tabstrip tiene tres pestaas, a las cuales se les asignar los subscreen 110, 120 y 130. (En el Servidor, el programa ZNICAPII5A llama a este dynpro del ejemplo). Creamos el programa ZNICAPII5A en la Transaccin SE80. Crear el tabstrip en el screen painter. Llamamos un dynpro 100 y lo creamos. En el screen painter seleccionamos el icono tabstrip control y dibujamos el rea que ocupar, por default nos aparecern dos pestaas.

Nos pedir el nombre del tabstrip (w_tabstrip para el ejemplo), y en la parte de Atributos en Tab title (nmero de pestaas) le ponemos 3.

43

Procedemos a definir las pestaas. Definicin pestaa 1. Le damos doble clic en la primera pestaa y le colocamos los sgtes valores.

Debemos Asignar el Fct Code = PUSH1 con el Fct Type = P, los cuales permiten el traslado entre pestaas y el visualizar los subscreens de las pestaas. En Atributos en el campo Ref. field ir el subscreen rea (SUB1) que colocaremos dentro del rea de la pestaa. En el screen painter seleccionamos el icono dentro del rea de la pestaa y le llamamos SUB1. subscreen rea, el cual dibujamos

Si vemos de nuevo los atributos de la pestaa notaremos que el campo ha sido llenado con SUB1, y ya tenemos definida la pestaa. En un paso posterior dibujaremos los campos del subscreen (110 para el ejemplo) que ir dentro del subscreen rea SUB1.

44

Procedemos de igual forma para la segunda y tercera pestaa. Definicin pestaa 2. En Atributos en el campo Ref. field ir el subscreen rea (SUB2) que colocaremos dentro del rea de la segunda pestaa.

En un paso posterior dibujaremos los campos del subscreen (120 para el ejemplo) que ir dentro del subscreen rea SUB2. Definicin pestaa 3. En Atributos en el campo Ref. field ir el subscreen rea (SUB3) que colocaremos dentro del rea de la tercera pestaa.

En un paso posterior dibujaremos los campos del subscreen (130 para el ejemplo) que ir dentro del subscreen rea SUB3.

45

Procedemos a definir los subscreens. Definicin subscreen 110. En la transaccin SE80 para el programa ZNICAPII5A.

Llenamos los campos respectivos y le damos clic en

crear o F5.

En el

Layout dibujaremos los campos del subscreen 110.

46

El subscreen 110 sera del siguiente modo. Tiene un campo de entrada input1 del tipo Numrico.

Definicin subscreen 120. Procedemos de igual modo que el subscreen 110, entonces el subscreen 120 sera del siguiente modo. Tiene un campo de entrada input2 del tipo Numrico.

47

Definicin subscreen 130. Procedemos de igual modo que el subscreen 110, entonces el subscreen 130 sera del siguiente modo. Tiene un campo de entrada input3 del tipo Numrico similar a input2. Adems tiene un botn promediar con el FctCode = PROM, el cual calcula el promedio de input1 y input2 y lo muestra en input3

La pantalla principal 100, la cual contiene al tabstrip tiene un botn continue el cual muestra un mensaje con la pestaa activa.

48

Procedemos a definir GUI STATUS Definicin GUI STATUS SCREEN_100. En la transaccin SE80 para el programa ZNICAPII5A.

Colocamos el nombre del GUI SATUS y le damos clic en

crear o F5.

En el Standard Toolbar el Function code = CANCEL es del tipo E el cual se utiliza en los Eventos AT EXIT-COMMAND para escapar de todas la validaciones en pantalla.

49

La lgica del programa ZNICAPII5A (el cual contienen los Mdulos necesarios) sera como el siguiente:
REPORT ZNICAPII5A . CONTROLS w_tabstrip TYPE TABSTRIP. DATA: ok_code TYPE sy-ucomm, save_ok TYPE sy-ucomm. DATA: INPUT1(10) TYPE N,"CAMPO INPUT DE SUBSCREEN 110 INPUT2(10) TYPE N,"CAMPO INPUT DE SUBSCREEN 120 INPUT3(10) TYPE N."CAMPO INPUT DE SUBSCREEN 130 w_tabstrip-activetab = 'PUSH3'. CALL SCREEN 100. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'SCREEN_100'. SET TITLEBAR 'T100'. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module CANCEL INPUT *&---------------------------------------------------------------------* MODULE CANCEL INPUT. LEAVE PROGRAM. ENDMODULE. " CANCEL INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. save_ok = ok_code. CLEAR ok_code. IF save_ok = 'OK'. MESSAGE i888(sabapdocu) WITH 'Pestaa Activa W_TABSTRIP-ACTIVETAB =' w_tabstrip-activetab. ENDIF. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Module UC_0130 INPUT *&---------------------------------------------------------------------* MODULE UC_0130 INPUT. save_ok = ok_code. * CLEAR ok_code. CASE SAVE_OK. WHEN 'PROM'. INPUT3 = ( INPUT1 + INPUT2 ) / 2. ENDCASE. ENDMODULE. " UC_0130 INPUT

50

El flow logic del Dynpro 100 (el cual contiene el tabstrip) correspondiente sera como el siguiente:
PROCESS BEFORE OUTPUT. MODULE STATUS_0100. *DEFINE EL SUBSCREEN EN QUE SUBSCREEN AREA APARECER CALL SUBSCREEN: SUB1 INCLUDING SY-REPID '0110', SUB2 INCLUDING SY-REPID '0120', SUB3 INCLUDING SY-REPID '0130'. PROCESS AFTER INPUT. MODULE CANCEL AT EXIT-COMMAND. *LLAMA A LOS MODULOS PAI DE LOS SUBSCREENS CALL SUBSCREEN: SUB1, SUB2, SUB3. MODULE USER_COMMAND_0100.

El flow logic del subscreen 110 correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. * MODULE STATUS_0110. * PROCESS AFTER INPUT. * MODULE USER_COMMAND_0110.

El flow logic del subscreen 120 correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. * MODULE STATUS_0120. * PROCESS AFTER INPUT. * MODULE USER_COMMAND_0120.

El flow logic del subscreen 130 correspondiente sera como el siguiente:


PROCESS BEFORE OUTPUT. * MODULE STATUS_0130. * PROCESS AFTER INPUT. *MODULO QUE CALCULA EL PROMEDIO DE INPUT1 Y INPUT2 MODULE UC_0130.

51

Finalmente, una vez grabado y activado el programa y sus elementos podemos ver como se trabajan con los tabstrip. Abrimos una sesin y ejecutamos el programa ZNICAPII5A y colocamos valores en las
Pestaas A y B.

Luego vamos a la pestaa C y si damos click en el botn Promediar notaremos que en el campo aparece el promedio de los valores ingresados en las pestaas A y B.

52

53

También podría gustarte