Una vez hemos definido gráficamente las pantallas, será preciso escribir una lógica de proceso para cada una de ellas, pasándose a denominar Dynpros.
Para introducir la lógica de proceso de las pantallas, utilizaremos una versión especial del editor de ABAP/4. Goto -> Flow Logic.
La lógica de proceso de las pantallas tienen una estructura determinada, y utilizan comandos y eventos propios de manejo de pantallas, similares a los utilizados en ABAP/4.
Consistirá en dos eventos fundamentales:
PROCESS BEFORE OUTPUT (PBO).
PROCESS AFTER INPUT (PAI).
El PBO será el evento que se ejecutará previamente a la visualización de la pantalla, mientras que el PAI, se ejecutará después de la entrada de datos del usuario en la pantalla.
Además de estos dos eventos obligatorios existen eventos para controlar las ayudas, PROCESS ON HELP-REQUEST (POH), y para controlar los valores posibles de un campo PROCESS ON VALUE REQUEST (POV).
Desde la lógica de proceso de las pantallas no se actualizan datos, únicamente se llaman a los módulos del Module Pool que se encarga de esta tarea.
Para llamar a un módulo utilizaremos la sentencia MODULE.
MODULE <nombre_módulo>.
Si se selecciona un módulo con doble click, el sistema crea las instrucciones MODULE ... END MODULE en el programa incluido correspondiente.
Si el include no existe, el sistema creará uno automáticamente si así se desea. Esto también inserta una instrucción INCLUDE en el programa principal, para hacer referencia a este programa incluido
En el Module Pool el código del módulo empezará con la sentencia: MODULE <nombre_módulo> OUTPUT.
En el caso de ser un módulo llamado desde el PAI será: MODULE <nombre_módulo> INPUT.
En el módulo del PBO los inicializaremos al valor que queramos. Si no inicializamos explícitamente, el sistema le asignará su valor inicial por defecto, al no ser que lo hayamos definido como parámetro SPA/GPA.
En el módulo PBO, indicaremos todos los pasos que queremos realizar antes de que la pantalla sea visualizada, como por ejemplo inicializar los campos de salida. Esta inicialización se realizará en un módulo independiente dentro del Module Pool.