69060 Programación en Diálogo

Embed Size (px)

Citation preview

Programacin en Dilogo

INDICEOBJETIVO......................................................................................................................5 EXPECTATIVAS............................................................................................................6 TCNICAS BSICAS DE PROGRAMACIN EN DILOGO........................................7 Componentes principales..................................................................................................7 Screen Painter...................................................................................................................8 Module Pool....................................................................................................................9 Creacin de Programas...............................................................................................10 Definicin de Pantallas.................................................................................................12 Diseo de Pantallas.....................................................................................................13 Creando objetos en la pantalla....................................................................................14 Lista de vistas de campos............................................................................................15 Creando objetos desde el diccionario de datos...........................................................16 Definiendo los atributos individuales de cada campo..................................................17 Definiendo campos en el Module Pool........................................................................19 Definicin de la Flujo de Control .....................................................................................20 Introduccin a la Lgica de Proceso............................................................................20 Creacin de Mdulos ABAP/4......................................................................................20Process Before Output (PBO).............................................................................................21 Process After Input (PAI).....................................................................................................22

Definiendo la llamada (Cdigos de Transaccin)........................................................22 Leyendo cdigos de funcin en programas.................................................................23 TCNICAS ESPECIALES "SCREEN & MENU PAINTER".........................................25 La validacin de los datos de entrada.............................................................................25 Verificacin automtica................................................................................................25Verificacin de formato......................................................................................................25 Verificacin de campos obligatorios..................................................................................26 Verificacin de llaves forneas...........................................................................................26 Verificacin de valores fijos.................................................................................................26

Verificacin manual en Module Pool............................................................................27 Mensajes en pantalla...................................................................................................29Mensaje de Error ................................................................................................................29 Mensaje de Advertencia (Warning).....................................................................................30 Mensaje de Informacin......................................................................................................30 Mensaje de Buen resultado.................................................................................................31 Mensaje de Interrupcin (Abend)........................................................................................31

Secuencia dinmica de pantallas....................................................................................32 Introduccin..................................................................................................................32 Configuracin dinmica de la siguiente pantalla.........................................................32 Insercin de una o ms pantallas................................................................................33 Ejecucin condicionada de mdulos...............................................................................37 MEN PAINTER .........................................................................................................39 DISEO DE MENS (Men Painter)..............................................................................39 Introduccin..................................................................................................................39 Taclas de Funcin........................................................................................................40Pg: 2

Programacin en Dilogo

Los Pushbuttons.........................................................................................................41 La Barra de Mens.......................................................................................................42 Otras utilidades del Men Painter................................................................................43Activacin de Funciones.....................................................................................................43 FastPaths...........................................................................................................................43

Ttulos de Menu............................................................................................................43 Prueba, Chequeo y Generacin de Status..................................................................43 Mens de mbito o de rea.........................................................................................44 ACTUALIZACIN ASNCRONA..................................................................................45 Concepto de transaccin.................................................................................................45 Transaccin de Base de Datos ( DB LUW )................................................................45 Transaccin SAP..........................................................................................................45 Transaccin SAP y Transaccin DB...........................................................................46 Transaccin SAP y Actualizaciones Asncronas.........................................................46 Concepto de Actualizacin Asncrona.............................................................................47 Programa de dialogo y mdulo de funcin para actualizacin....................................48 Modulo de Funcin de Actualizacin...........................................................................48 Programa de dilogo y tabla de registro......................................................................48 Rollback en los programas de Dialogo: Borrando marcas de Actualizacin..............49 Rollback en el Programa de Actualizacin..................................................................49 PERFORM ON COMMIT.........................................................................50 CONCEPTO DE BLOQUEO DE SAP...........................................................................52 Utilizacin de bloqueos....................................................................................................52 Bloqueo de Base de Datos. ........................................................................................52 Introduccin al Concepto de Bloqueo de SAP.............................................................53 Objetos de Bloqueo SAP..............................................................................................54 Modulo de Funcin Enqueue / Dequeue.....................................................................54 Llamando Mdulos de Bloqueo...................................................................................55 Tabla de Bloqueos.......................................................................................................55 Caractersticas Especiales con ENQUEUE.................................................................56 MODIFICACIN DINMICA DE PANTALLAS............................................................57 Modificacin dinmica......................................................................................................57 Introduccin..................................................................................................................57 Atributos de campos Modificables..............................................................................57 Atributos: Modificacin de grupos................................................................................58 Programa......................................................................................................................58 TABLAS DE CONTROL ..............................................................................................60 Caractersticas del Control de Tabla...............................................................................60 Principios para el control de Tabla..................................................................................61 Llenado. .......................................................................................................................61 Creacin en modo Grfico..........................................................................................62 Creando Tablas de control (Fullscreen Alfanumrico)................................................62 Definicin de una tabla de control en "Module Pool" ..................................................63 Flujo lgico de la tabla de control...............................................................................64 Modificacin..................................................................................................................66Pg: 3

Programacin en Dilogo

Control de pginas.......................................................................................................67 9.2.1.Posicin del cursor..............................................................................................69 VINCULACIN CON LOS COMPONENTES DE PROGRAMAS.................................70 Dilogos (pantallas) y procedimientos de listas.............................................................70 Ramificacin de una lista a un procesamiento de dilogo .........................................70 Ramificacin de un dilogo a un procesamiento de listas..........................................71 Lista en una caja de dialogo modal.............................................................................72 Llamado a un reporte .................................................................................................72 Declaracin "SUBMIT" ................................................................................................73 Llamado a una transaccin .........................................................................................73 Transferencia de datos entre programas (ABAP/4 Memory) ...................................74 FUNCIONES AUTOMTICAS DE AYUDA PROGRAMADAS.....................................76 Funcionalidad F1 y F4.....................................................................................................76 Funciones de Ayuda Automtica.................................................................................76 Programadas................................................................................................................77 Extensin de la funcionalidad "F4" "HELP VIEW" ....................................................77 Creacin "HELP VIEW" ...............................................................................................78 Bsqueda "MATCHCODE"..........................................................................................78Definicin "MATCHCODE OBJECT" .................................................................................79 Seleccin de campos..........................................................................................................80 Definicin "MATCH CODE ID" ............................................................................................81 Seleccin de campos..........................................................................................................81

Programacin de la funcionalidad de "F1" y "F4"........................................................83 Flujo de los eventos "POH" y "POV" ...........................................................................84 Modulos de funciones..................................................................................................84 Transportacin de campos desde y hacia la pantalla ................................................85 Determinacin del contenido de los campos de pantalla (POV, POH).......................85 Transportacin de valores a los campos de pantalla (POV).......................................85 Visualizacin de los valores de entrada para el campo de la tabla (POV) ..............86 ANEXO 1 ABAP EDITOR...................................................................88 COMMANDOS DE CABECERA......................................................................................89 COMANDOS DE LINEA:.................................................................................................91

Pg: 4

Programacin en Dilogo

ObjetivoLos objetivos principales del presente curso, son los siguientes: Proporcionar los conocimientos bsicos de la programacin en dilogo Tcnicas para mantenimiento de pantallas dinmicas Tcnicas para mantenimiento de funciones de ayuda automtica Tcnicas para mantenimiento de mens dinmicos

Pg: 5

Programacin en Dilogo

ExpectativasAl finalizar el presente curso, se espera que el participante podr describir: Los conceptos bsicos para la programacin en dilogo Las tcnicas para definicin de pantallas Las tcnicas para definicin de mens

Pg: 6

Programacin en Dilogo

Tcnicas Bsicas de programacin en dilogoComponentes principales

Ambiente de desarrollo Ambiente de desarrollo Diccionario ABAP/4 Screen Painter Menu Painter

ABAP/4

Ambiente de ejecucin Ambiente de ejecucin

Procesador de dilogo

Procesador de ABAP/4

El Screen Painter y el Menu Painter se utilizan para crear y disear plantillas de pantalla y programas de pantalla. El procesamiento lgico de las pantallas se define en un programa ABAP/4 (conocido como module pool). Para crear una transaccin, ser necesario la generacin de una serie de objetos de desarrollo. Cada transaccin puede dividirse en varaias pantallas, cada una de las cuales puede utilizar distintos mens y todo ello controlado por un programa en ABAP/4 denominado Module Pool, que controla el flujo de la transaccin y realiza las acciones necesarias para cumplir la funcionalidad de la transaccin. Por lo tanto los pasos a seguir para el desarrollo de transacciones ser: 1 2 3 4 5 6 Crear el programa ABAP/4 (Module Pool). Definir las pantallas que intervienen en la transaccin con el Screen Painter. Especificando que datos aparecen en pantalla y de que forma, adems de una lgica de proceso de cada pantalla. Definir los mens con el Men Painter. Especificando el contenido de los mens Pop-up, las teclas de funcin y los botones de comandos que se pueden utilizar. Definir el Flujo de pantallas en el Module Pool.

Pg: 7

Programacin en Dilogo 7 Programar, en el Module Pool, los mdulos de cada pantalla, es decir lo que debe hacer cada pantalla. Programando las acciones ha realizar en tiempo de PBO (Process Before Output), antes de que aparezcan los datos de la pantalla y en tiempo de PAI (Process After Input), despus de que se hayan introducido los datos en los campos de entrada. Crear el cdigo de transaccin. Herramientas -> Case -> Desarrollo -> Transacciones. Indicndole: el tipo de transaccin, la descripcin de la transaccin, el nombre del programa ABAP/4 (Module Pool), el nmero de la primera pantalla, y opcionalmente un objeto de verificacin para ejecutar la transaccin. Las estructuras de datos estan definidas en el Diccionario ABAP/4. Desde el programa ABAP/4 se pueden accesar estas estructuras y utilizarlas para definir los campos de pantallas. El procesador de dilogo controla el flujo de un programa de dilogo. La programacin de dilogo necesita tcnicas especiales de codificacin en ABAP/4, adems de herramientas especficas, como son un editor de pantallas (Screen Painter) y un editor de superficies (Men Painter).

8

Screen PainterScreen Painter

Atributos de pantallaScreen no. Short text Screen type Next screen ... 100 Test Normal 200

Diseo de PantallaNumero:

Atributos de campoNUMBER CHAR 10 Characters input X ...

Lgica de flujo

PROCESS BEFORE OUTPUT. MODULE INIT. PROCESS AFTER INPUT. MODULE READ.

ABAP/4 Datos globalesDATA: NUMBER(10) TYPE C. . . .

mdulos PBOMODULE INIT OUTPUT. CLEAR NUMBER. ENDMODULE. . .

mdulos PAIMODULE READ OUTPUT. SELECT ... : ENDMODULE. :

Para crear una pantalla se deben seguir los siguientes pasos: Definir las caractersticas bsicas de una pantalla (atributos de pantalla) Disear el formato de pantalla (en el editor fullscreen) Definir los atributos de campos (lista de campos) Escribir el flujo de pantalla (lgica de flujo) Pg: 8

Programacin en Dilogo Los componentes ms importantes del programa ABAP/4 se encuentran en los siguientes objetos: Datos globales o estructuras de Diccionario en el programa "Top Include" (declaraciones de datos) Mdulo PBO (Proceso antes de presentar pantalla) Mdulo PAI (Proceso despus de entrada de datos) Subrutinas (solo s son requeridas).

Module PoolEl flujo lgico de pantalla est dividido en dos eventos para cada pantalla: El evento "Process Before Output" (PBO) es ejecutado antes de que la pantalla sea desplegada El evento Process After Input (PAI) es ejecutado despus de que el usuario ha presionado la tecla Enter. El sistema procesa los mdulos de un evento en forma secuencial.Screen Painter ABAP/4PROCESS BEFORE OUTPUT. MODULE INITIALIZE.

1 2

PROCESS AFTER INPUT. MODULE READ_SPFLI MODULE ... . :

1 2

PROGRAM SAPMTALA MESSAGE-ID AT. TABLES SPFLI. MODULE INITIALIZE OUTPUT. CLEAR SPFLI. ENDMODULE. MODULE READ_SPFLI INPUT. SELECT SINGLE * FRO, SPFLI WHERE ... : ENDMODULE.

1 2

Pasa el control del procesador de dilogo al procesador ABAP Pasa el control del procesador ABAP al procesador de dilogorea trabajo Module pool TABLES: SPFLI.

rea de trabajo de Pantalla SPFLI-CARRID

LHSPFLI-CONNID

LH

0400CONNID OK-CODE(4).

PBO PAI

CARRID DATA:

0400OK-CODE

NOM BRES IDNTICOS O O

En cada mdulo el control pasa del procesador de dilogo al procesador ABAP/4. Despus del procesamiento el control es regresado al procesador de dilogo. Cuando todos los mdulos de PBO han sido procesados, el contenido de los campos del rea de trabajo ABAP/4 es copiado a un campo con nombre idntico en el rea de trabajo de pantalla. Antes de que el mdulo PAI sea procesado, el contenido de los campos del rea de trabajo de pantalla es copiado a los campos nombrados idnticamente en el rea de trabajo de ABAP/4.

Pg: 9

Programacin en Dilogo

Creacin de Programas

Pg: 10

Programacin en Dilogo

Developm ent class Program Functional arera Local private objects Local private objects

Edit Edit

$TMP Local objects of the user $TM Local objects of the user P Create Create

Programs s Program . . . . . . Choose Choose SAPMTALA SAPMTALA

Program

W TOP include ith

Para crear un programa (ABAP/4 module pool) se usa el ABAP/4 Development Workbench. Un programa de dilogo del cliente debe tener el formato SAPMZxxx SAPMYxxx. Inicialmente, el programa incluido TOP contiene solo la instruccin PROGRAM. Se puede entonces agregar todas las declaraciones de datos e instrucciones de tablas (datos globales) necesarias. Si se usan programas incluidos, el sistema propone los nombres de acuerdo a la siguiente regla: Los primeros 5 caracteres son los ltimos 5 caracteres del nombre del programa. El sexto caracter identifica el contenido del incluido-por ejem. O para mdulos PBO, F para rutinas FORM (subrutinas) -, mientras que el sptimo y el octavo caracter son iguales a 01, excepto el programa Top Include. Ejemplos: El programa Top Include para el module pool SAPMTALA sera MTALATOP; El programa incluido para los mdulos PAI del mismo programa debera ser MTALAI01, y para los mdulos PBO sera MTALAO01:

Pg: 11

Programacin en Dilogo

Definicin de Pantallas

As tras acceder al Screen Painter desde el ABAP/4 Workbench, tendremos que introducir el programa y el nmero de pantalla que deseamos mantener. Una vez hecho esto aparecer el editor de pantallas Fullscreen Editor. Si estamos creando el dynpro por primera vez, nos pedir los atributos de pantalla.

Pg: 12

Programacin en Dilogo

Se introduce un texto corto que describa a la pantalla, se elige el tipo de pantalla y por ltimo se especifica el nmero de la pantalla siguiente.

Diseo de PantallasGeneralmente se definen los campos de una pantalla utilizando los atributos de campos que ya existen en el Diccionario de ABAP/4. As mismo tambien puedes utilizar los atributos de campos que ya fuern definidos en el module pool. Existen dos modos de funcionamiento de editor de pantallas: el modo grfico y el modo alfanumrico, dependiendo de la interfase grfico sobre el que funcione SAP. En este captulo se describe el uso del Screen Painter en modo grfico (versin 3.0), ya que se le considera como el ms cmodo y avanzado, siendo adems soportado por los interfaces grficos mas extendidos (MS WINDOWS y X11/MOTIF UNIX). De cualquier modo la funcionalidad de ambos modos del editor es la misma. Para activar odesactivar el modo grfico de pantallas se deben seguir la siguiente ruta: Settings -> Graphical Fullscreen El Screen Painter grfico contiene funciones fcil-de-usar para definir los elementos de las pantallas (por ejem. Campos de entrada/salida, textos de campo, cajas, etc.). Se elige cada elemento de pantalla y se posiciona en pantalla utilizando el mouse. Para borrar elementos de pantalla, se selecciona el elemento con el mouse y entonces se elige el botn Delete.

Pg: 13

Programacin en Dilogo

Para mover elementos de pantalla, se usa el mouse arrastrando el elemento a la posicin requerida. En el editor de pantallas podemos observar tres reas diferenciadas. La cabecera: con datos sobre la pantalla y el campo que se esta manteniendo en ese preciso instnte. La barra de objetos (columna izquierda): Lista de los objetos que se pueden crear en la pantalla: textos, entrada de datos, checkboxes, frames, subscreens El rea de dibujo: Es el rea donde se dibuja la pantalla que estamos diseando.

Creando objetos en la pantalla.Para dibujar un objeto en la pantalla tendremos que colocarlo en el rea de trabajo y posteriormente definir sus caractersticas (atributos). Para ello tendremos que pulsar el botn correspondiente en la barra de objetos y marcar el rea donde vamos a situar el objeto. Si queremos cancelar la creacin de un objeto pulsaremos el botn Reset de la misma barra de objetos. Objetos disponibles: Textos: Textos,literales,que son fijos en pantalla y no pueden ser manipulados por el usuario. Para considerar varias palabras como un mismo texto, tendremos que colocar un smbolo _ entre ellas, ya que de otro modo las considerar como objetos de texto completamente distintos. Objetos de entrada/salida (Templates): Son campos para introducir o visualizar datos. Pueden hacerse opcionales u obligatorios. Los caracteres de entrada especifican con el smbolo _, pudiendo utilizar otros caracteres para dar formato a la salida. Por ejemplo una hora podemos definirla como: _:_:_. Radio-buttons: Son pequeos botones redondos que permiten una entrada de dos valores sobre una variable (marcado o no marcado). Los podemos agrupar, de forma que la seleccin de uno implique que no se pueda seleccionar ningn otro. Pg: 14

Programacin en Dilogo Check-boxes: Es como un Radio-button pero de apariencia cuadrada en vez de redonda. La diferencia respecto a los Radio-buttons deriva en su utilizacin en grupos, ya que se pueden seleccionar tantos Checks-boxes como se quiera dentro de un grupo. Pushbuttons: Es un botn de tipo pulsador. Se le asocia a una funcin de forma que en el momento que se pulsa el Pushbutton se ejecute la funcin. Frames (Cajas): Son las cajas que agrupan grupos de objetos dentro de una pantalla como por ejemplo un conjunto de Radio-buttons. Subscreens: Son reas de la pantalla sin ningn campo que se reservan para la salida de otras pantallas (Subscreens) en tiempo de ejecucin. Para definir est rea, nos colocaremos el punto de la pantalla donde queremos situar el ngulo superior izquierda de la subscreen, seleccionaremos Edit -> Subscreen, indicndole el nombre que le vamos a dar, y finalmente sealaremos con Doble-Click, el ngulo inferior derecho de la ventana. Posteriormente ser en los mdulos PBO y PAI cuando le indicaremos con la instruccin CALL SUBSCREEN, que pantalla aparecer en el rea de subscreen que hemos definido.

Una vez situados los objetos sobre el rea de trabajo, podremos modificar su tamao, moverlos o borrarlos. Todos los textos, pushbuttonspueden incorporar iconos en su salida por pantalla. Los iconos tienen una longitud de dos caracteres y estn representados por smbolos estndares. El icono ser un atributo ms de los campos y por tanto se definiran junto al resto de atributos del objeto.

Lista de vistas de camposPara el mantenimiento de los atributos de campos de pantalla existen seis diferentes tipos

de listas. Alternativamente, se pueden definir los campos por medio de una de estas listas. Es posible tambin efectuar el mantenimiento de atributos de un campo en el editor de pantallas (editor fullscreen). En el editor de pantallas, se usan tipos de datos externos. Los tipos de datos externos de los campos seleccionados en el Diccionario ABAP/4 son desplegados en la columna Format. En Pg: 15

Programacin en Dilogo el caso de campos (plantillas) que no tienen ninguna referencia al Diccionario ABAP/4, el usuario puede definir un tipo de dato externo. Se puede encontrar una correspondencia de tipos de datos externos con tipos de datos internos (por ejem. Tipos de datos ABAP/4), al consultar la documentacin referente a la palabra reservada "TABLES". Ejemplos, es esto son: Tipo de datos en Diccionario ABAP/4 CHAR NUMC Tipo de datos en programas ABAP/4 C N

Creando objetos desde el diccionario de datos.

Full screen

Dict/Prog Fields Dict/ProgFields Get from Dict. Table/field name Get from program Template TemplateField Format Lenght Shrt text

Copy

Key word Key word -- short short -- medium medium -- long long -- header header

En la pantalla que estamos diseando, podemos utilizar campos que estan guardados en el Diccionario de Datos o declarados en el Module Pool. Para ello tendremos que seleccionar: Dict/Program fields. Aparecer una pantalla de seleccin de datos en la que indicaremos el campo o la tabla de la cual queremos obtener datos. Adems se deber seleccionar, si queremos ver la descripcin de cada campo (indicando la longitud) y si queremos realizar una entrada de datos (templates) de dicho campo por pantalla. Finalmente pulsaremos el botn correspondiente a crear desde el diccionario de datos o desde un programa. Marcaremos el campo que queremos incorporar a nuestra pantalla y los copiaremos cobre el rea de trabajo, situndolos en la posicin que creamos ms conveniente.

Pg: 16

Programacin en Dilogo

Definiendo los atributos individuales de cada campo.

Full screen

Field attr.

Field attributes Graph. type Field name . . . Dict. attributes Program attributes Display attributes Display attributes

Los atributos de los objetos definen las caracteristicas de estos. Podemos mantener los atributos desde el mantenimiento de atributos de campo o desde listas de campos. Podemos distinguir entre atributos generales, de diccionario, de programa y de visualizacin. Atributos Generales. MatchCode : Permite especificar un MatchCode para la entrada de un campo. References : Especificamos la clave de la moneda en caso de que el campo sea de tipo cantidad (CURR o QUAN). Field Type : Tipo de Campo. Field Name : Nombre del Campo. Con este nombre se identificarn desde el programa. Field Text : Texto del Campo. Si queremos utilizar un icono en vez de texto dejaremos este valor en blanco. With Icon : Si queremos utilizar iconos en la entrada de datos (templates). Icon name : Identifica el nombre de un icono para un campo de pantalla. Rolling (Scrolling): Convierte un campo en desplegable, cuando su longitud real es mayor que su longitud de visualizacin. Quick Info : Es el texto explicativo que aparece cuando pasamos por encima de un icono con el ratn. Line : Especifica la lnea donde el elemento aparecer. El sistema completa este valor automticamente. Cl : Especifica la columna donde el elemento aparecer. El sistema completa este valor automticamente. Ht : Altura en lineas. El sistema completa este valor automticamente. DLg : Longitud del campo. VLg : Longitud de visualizacin. FctCode : Codigo de funcin (cdigo de 4 dgitos). Atributo slo para pushbuttons. FctType : Especifica el tipo de evento en el cual el campo ser tratado. Ltype : Tipo de Step Loop (fijo o variable). El tipo variable significa que el tamao del step loop se ajusta segn el tamao de la pantalla, mientras que fijo no ajusta el step loop. Pg: 17

Programacin en Dilogo Lcnt : Groups : Nmero de lneas de un step loop. Identifica grupos de modificacin para poder modificar varios campos simultneamente. Podemos asignar un campo a varios (4) grupos de modificacin.

Atributos de Diccionario: Format : Identifica el tipo del campo. Determina el chequeo que realiza el sistema en la entrada de los datos. Frm DICT. : El sistema rellena este atributo en el caso de que el campo lo hayamos creado a partir de un campo del diccionario de datos. Modific. : El sistema rellena este campo si detecta alguna diferencia entre la definicin del campo en el diccionario de datos y su utilizacin en pantalla. Conv. Exit : Si queremos utilizar una rutina de conversin de datos no estndar, especificamos aqu el cdigo de esta. Param. ID : Cdigo del parmetro SET / GET. (ver siguiente atributo). SET Param GET Param: Los parmetros SPA (Set Parameter) y GPA (Get Parameter), nos permiten visualizar valores por defecto en campos. Si marcamos el atributo SET param, el sistema guardar en un parmetro ID lo que entremos entremos en este campo. Si marcamos el atributo GET param, el sistema inicializa el campo, con el valor del parmetro ID que tenga asignado en el atributo anterior. Up../Lower : El sistema no convierte la entrada a maysculas. W/o template : Marcamos este atributosi queremos que los caracteres especilaes se traten como textos literales. Foreign Key : Si queremos que sobre el campo el sistema realicen chequeo de llave externa. (hayque definir previamente las claves externas en el diccionario de datos). Atributos de Programa: Input field : Campo de entrada. Output field : Permite visualizacin. Se puede utilizar nen combinacin con el anterior. Output only : Slo Visualizacin Required field: Atributo para campos obligatorios. Se distinguen con un . Poss. Entry : El sistema marca este atributo si hay un conjunto de valores para el campo. No es posible modificar el contenido del atributo. Poss. Entries : Indica como podemos ver la flecha de entradas posibles en un campo. Right-Justif : Justifica cualquier salida del campo a la derecha. Leading Zero : Rellena con ceros por la izquierda en el caso de salidas numricas. *-Entry : Permite la entrada de un asterisco en la primera posicin de un campo. Si se introduce un *se podr hacer un tratamiento en un mdulo: FIELD MODULE ON *-INPUT. No Reset : Cuando activamos este atributo, la entrada de datos no podr ser cancelada mediante el carcter !. Atributos de Visualizacin: Fixed Font : Visualiza un campo de salida en un tamao fijo (no proporcioal). Slo se puede utilizar en campos Output only. Bright : Visualiza un campo en color intenso. Invisible : Oculta un campo. 2-Dimens : Visualiza un campo en dos dimensines en vez de en tres. Pg: 18

Programacin en Dilogo

Definiendo campos en el Module Pool.Top include MTALATOP

ABAP/4PROGRAM SAPMTALA. TABLES: SPFLI. DATA: ... .

ORGlobal data

ABAP/4DATA: ... .

En el procesamiento en dilogo, los datos son transferidos entre pantallas y programas ABAP/4. El sistema ejecuta esta comunicacin automticamente, pero es necesario usar nombres idnticos en las pantallas y en em module pool. Se definen los campos relevantes como datos globales en el programa Top Include. Al hacer esto, se procesa el programa Top Include, las secciones concernientes a las estructuras de datos globales, las estructuras de Diccionario.

Pg: 19

Programacin en Dilogo

Definicin de la Flujo de ControlIntroduccin a la Lgica de Proceso.PROCESS BEFORE OUTPUT. MODULE INITIALIZE. PROCESS AFTER INPUT. MODULE READ_SPFLI.

Screen Painter

Una vez hemos definido grficamente las pantallas, ser preciso escribir una lgica de proceso para cada una de ellas, pasndose a denominar Dynpros. Para introducir la lgica de proceso de las pantallas, utilizaremos una versin especial del editor de ABAP/4. Goto -> Flow Logic. La lgica 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 visualizacin de la pantalla, mientras que el PAI, se ejecutar despus de la entrada de datos del usuario en la pantalla. Adems 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 lgica de proceso de las pantallas no se actualizan datos, nicamente se llaman a los mdulos del Module Pool que se encarga de esta tarea.

Screen Painter

ABAP/4 Flow Logic Module PoolPROGRAM Zxxxxxxx. TABLES: ... MODULE INI_VAR OUTPUT. ... ENDMODULE. MODULE TRATA_VAR_INPUT. ... ENDMODULE.

PROCESS BEFORE OUTPUT. MODULE INI_VAR. PROCESS AFTER INPUT. MODULE TRATA_VAR.

Creacin de Mdulos ABAP/4Pg: 20

Programacin en Dilogo

$TMP programs SAPMTALA SAPMTALA Create

Users local objects

Create

. . PBO modules . . Choose PBO module in include prog.

.. .. PAI modules PAI .. .. Choose PAI module in include prog.

INITIALIZE MTALAO01

READ_SPFLI MTALAI01 MTALAI01

Para llamar a un mdulo utilizaremos la sentencia MODULE. MODULE . Si se selecciona un mdulo 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 automticamente si as se desea. Esto tambin inserta una instruccin INCLUDE en el programa principal, para hacer referencia a este programa incluido En el Module Pool el cdigo del mdulo empezar con la sentencia: MODULE OUTPUT. En el caso de ser un mdulo llamado desde el PAI ser: MODULE INPUT.MODULE INITIALIZE OUTPUT. CLEAR SPFLI. ENDMODULE. MODULE READ_SPFLI INPUT. SELECT SINGLE * FROM SPFLI WHERE CARRID = SPFLI-CARRID AND CONIID = SPFLI-CONNID.. . .

ENDMODULE.

Process Before Output (PBO).

Pg: 21

Programacin en Dilogo En el mdulo del PBO los inicializaremos al valor que queramos. Si no inicializamos explcitamente, el sistema le asignar su valor inicial por defecto, al no ser que lo hayamos definido como parmetro SPA/GPA. En el mdulo PBO, indicaremos todos los pasos que queremos realizar antes de que la pantalla sea visualizada, como por ejemplo inicializar los campos de salida. Esta inicializacin se realizar en un mdulo independiente dentro del Module Pool. Process After Input (PAI). El PROCESS AFTER INPUT se activa cuando el usuario selecciona algn punto de men, pulsa alguna tecla de funcin o pulsa ENTER. Si alguno de estos eventos ocurre, el PAI de la pantalla necesitar responder apropiadamente a la funcin seleccionada por el usuario.

Definiendo la llamada (Cdigos de Transaccin)$TMP programs SAPMTALA Create .. .. Transactions Transactions .. .. Choose TALA Transaction code Transaction type Dialog transaction . . .

Users local objects

Continue

Transaction code Transaction text Program Screen number

TALA TALA TEST TEST SAPMTALA SAPMTALA 100 100

Se puede iniciar un programa de dilogo ABAP/4 ("transaccin"), especificando un cdigo de transaccin. Las transacciones de cliente deben iniciar con "Z" "Y". El sistema almacena las especificaciones en la tabla TSTC. (En vez de crear una transaccin desde la lista de objetos, se puede modificar la tabla directamente).

Pg: 22

Programacin en Dilogo

Leyendo cdigos de funcin en programas.

Pg: 23

Programacin en Dilogo

Screen Painter

PROCESS AFTER INPUT. . . . MODULE USER_COMMAND.

Screen Painter

ABAP/4Display

OKCODE(4), DATA: OKCODE(4), SAVE_OKCODE(4). SAVE_OKCODE(4). Screen Painter MODULE USER_COMMAND INPUT. SAVE_OKCODE = OKCODE. CLEAR OKCODE. CASE SAVE_OKCODE. WHEN MORE. MORE. . . . ENDMODULE.

Field list Field name PUSH_100 OKCODE

Lg 5

Form OK

FctCode MORE

Cuando el usuario de una transaccin, pulsa una tecla de funcin, un punto de men, un pushbutton, un icono o simplemente la tecla ENTER, los datos introducidos en la pantalla se pasan a los mdulos del PAI para ser procesados junto a un cdigo de funcin que indicar que funcin a solicitado el usuario. En el Screen Painter, ser necesario crear un campo de tipo cdigo de funcin, OK, (de longitud 4), que normalmente aparece al final de la lista de campos de cada pantalla. Tradicionalmente a este campo se le denomina OK_CODE, y ser declarado en nuestro module Pool como cadena de caracteres de 4 posiciones: En la lgica de proceso de cada pantall, tendremos que realizar al tratamiento del OK_CODE. Para ello utilizaremos un modulo que deber ser el ltimodel evento PAI, es decir que se ejecutar una vez que todos los datos de entrada han sido validados correctamente. Una vez procesado el mdulo de funcin, borraremos el contenido del OK_CODE, inicializndolo para la prxima pantalla. Podemos guardar el contenido del OK_CODE en una variable intermedia e inicializarlo inmediatamente

Pg: 24

Programacin en Dilogo

Tcnicas especiales "Screen & Menu painter"La validacin de los datos de entrada.Una de las funciones ms importanes de Process After Input, es la de validar los datos de entrada de la pantalla antes de ser usados. Existen dos tipos de validacin de los datos de entrada: Un chequeo automtico realizado por el sistema y un chequeo manual programado con el comando FIELD de la lgica de proceso de Dynpros.

Verificacin automticaEl sistema realiza automticamente una serie de chequeos de los datos de entrada, antes de procesar el evento PAI. Verificacin de formatoScreen Screen Painter Painter Format DATS DEC

Field list Field name DATE . . . Amount

Date AmountE: Invalid date

30.02.1996

Date Amount 12A3

E: Please enter numeric value

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.

Pg: 25

Programacin en Dilogo Verificacin de campos obligatorios

Field list Field name PLANETYPE

Screen Painter OBLIGATORY X

?

Al momento de que algn campos de la pantalla se le asigna el atributo de que es obligatorio, el procesador de dilogo no continua con el proceso, almenos que todos los campos obligatorios tiengan algn valor. Verificacin de llaves forneas

Field list Field FIELD1 Foreign key X C

Screen Painter

Check table PFIELD A B C . .

P1

Field 1

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. Verificacin de valores fijos

Pg: 26

Programacin en Dilogo 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.

Verificacin manual en Module Pool.Adems del chequeo automtico es posible realizar una validacin ms extensa de los valores de entrada a los campos valores de entrada a los campos con las instrucciones FIELD y CHAIN de la lgica de proceso del Screen Painter. Con FIELD podemos validar individualmente cada campo de forma que en caso de error, la siguiente entrada de datos slo permitir introducir el campo errneo sobre el que estamos utilizando la instruccin FIELD. Dependiendo del tipo de sentencia FIELD que utilicemos, el mecnismo de chequeo se realizar en la lgica de proceso del Screen Painter o en un mdulo ABAP/4.

PROCESS AFTER INPUT. FIELD SELECT FROM WHERE = .

Screen Painter

1E... mensaje

1

Listo para la nueva entrada

Es posible realizar distintas validaciones de un campo de entrada dependiendo de la fuente con la que contrastamos los valores posibles. As podemos checar el contenido de un campo comparandolo con una tabla de la base de datos, con una lista de valores, o realizando la validacin en un mdulo del Module Pool. Para checar un campo contra la base de datos utilizamos: FIELD SELECT FROM WHERE = . Si no se encuentran registros en el Diccionario de Datos el sistema emite un mensaje de error estndar. Existe una versin ampliada de la instruccin anterior que permite enviar mensajes o warnings en caso de que encuentre o no registros: FIELD SELECT * FROM Pg: 27

Programacin en Dilogo WHERE WHENEVER (NOT) FOUND SEND ERRORMESSAGE / WARNING WITH . Para checar un campo respecto a una lista de valores utilizamos: FIELD VALUES (). Donde puede ser: () (not) (,,NOT) (BETWEEN AND ) (NOT BETWEEN AND ) Si el valor entrado por el usuario no corresponde a ningun valor de la lista el sistema emite un mensaje de error. Para checar un campo en un mdulo de ABAP/4 utilizamos: FIELD MODULE .

PROCESS AFTER INPUT. FIELD MODULE .

Screen Painter

ABAP/4MODULE INPUT. . . MESSAGE E ... . ENDMODULE.

1E... mensaje

1

1

Listo para la nueva entrada

Si el mdulo resulta con un error (E) o un mensaje de advertencia (W), la pantalla es desplegada nuevamente pero sin procesar los mdulos PBO. El texto del mensaje es mostrado, y solo el campo que ocasion el error estar disponible para introducir datos nuevamente. La instruccin CHAINENDCHAIN encierrra un conjunto de instrucciones FIELD, en caso de error en la entrada de alguno de ellos, todos los campos del CHAIN se podrn modificar, mientras que los que no pertenezcan al CHAIN estarn bloqueados para la entrada de datos.

Pg: 28

Programacin en DilogoScreen PROCESS AFTER INPUT. Painter CHAIN. FIELD: , , . . MODULE . ENDCHAIN.

ABAP/4 ABAP/4MODULE INPUT. . . MESSAGE E ... . ENDMODULE.

1 1 1E... mensaje

1 1 1

1

Listo para la nueva entrada

CHAIN. FIELD , , . MODULE . MODULE . ENDCHAIN. CHAIN. FIELD ,. MODULE . FIELD MODULE ON CHAIN INPUT. ENDCHAIN.

Mensajes en pantallaMensaje de ErrorScreen Painter

PROCESS AFTER INPUT. FIELD MODULE CHECK.

ABAP/4 PROGRAM SAPMAIN MESSAGE-ID AT. . . . MODULE CHECK INPUT. IF SY-SUBRC NE 0. MESSAGE E002 WITH ... . ENDIF. ENDMODULE.

Nueva entrada

Campo

E: . . .

El texto de un mensaje de error (E) es desplegado en la pantalla actual. Pg: 29

Programacin en Dilogo

Todos los campos de pantalla asignados al mdulo correspondiente (instruccin FIELD) se vuelven disponibles para introducir informacin de nuevo. El sistema obliga al usuario a reintroducir datos. Mensaje de Advertencia (Warning)

PROCESS AFTER INPUT. FIELD MODULE CHECK.

Screen Painter

ABAP/4 PROGRAM SAPMAIN MESSAGE-ID AT. . . . MODULE CHECK INPUT. IF SY-SUBRC NE 0. MESSAGE W002 WITH ... . ENDIF. Enter ENDMODULE.

Nueva entrada

Campo

W: . . .

El texto del mensaje de advertencia (W) es desplegado en la pantalla actual. Todos los campos de pantalla asignados al mdulo correspondiente (instruccin FIELD) se vuelven disponibles para introducir informacin de nuevo. El usuario puede reintroducir los datos o ignorar el mensaje de advertencia presionando la tecla ENTER. Mensaje de InformacinScreen Painter Painter

PROCESS AFTER INPUT. FIELD MODULE INFO.

ABAP/4 PROGRAM SAPMAIN MESSAGE-ID AT. . . .MODULE INFO INPUT. IF SY-SUBRC ... . MESSAGE I005. ENDIF. ENDMODULE.

Informacin

i ...Enter

El texto de un mensaje de informacin (I) es desplegado en la pantalla actual.

Pg: 30

Programacin en Dilogo El proceso de la pantalla actual es suspendido. Despus de que el usuario presione la tecla ENTER, el programa continua con su ejecucin normal desde el punto donde fue suspendido. Mensaje de Buen resultado

PROCESS AFTER INPUT. FIELD MODULE M.

Screen Painter Painter

ABAP/4 PROGRAM SAPMAIN MESSAGE-ID AT. . . .MODULE M INPUT. . . .

Siguiente pantalla

IF SY-SUBRC ... . MESSAGE S001 WITH ... . ENDIF. ENDMODULE.

...

Un mensaje de texto de buen resultado ('S') es desplegado en la pantalla siguiente a la actual. Mensaje de Interrupcin (Abend)

PROCESS AFTER INPUT. FIELD MODULE M.

Screen Painter Painter

ABAP/4 PROGRAM SAPMAIN MESSAGE-ID AT. . . . MODULE M INPUT. . . . IF SY-SUBRC ... . MESSAGE A005. ENDIF. ENDMODULE.

AbendSTOP

...

Exit

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.

Pg: 31

Programacin en Dilogo

Secuencia dinmica de pantallasIntroduccin

SET SCREEN SET SCREEN

CALL SCREEN CALL SCREEN

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

Configuracin dinmica de la siguiente pantallaScreen Painter Screen Painter

Screen attributes Screen number 100 . . . Next screen 100

Screen attributes Screen number 200 . . . Next screen 300

200 Screen Painter

Screen PainterPROCESS BEFORE OUTPUT. . . .

PROCESS AFTER INPUT. MODULE OK_CODE.

ABAP/4MODULE OK_CODE INPUT. . . . SET SCREEN 200. LEAVE SCREEN.

PROCESS AFTER INPUT. . . .

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 .

Pg: 32

Programacin en Dilogo La instruccin SET SCREEN nnnn reescribe temporalmente la siguiente pantalla a procesar. La pantalla nnnn debe ser una pantalla del mismo "module pool". La pantalla siguiente es procesada despus de procesar la pantalla actual, o almenos que se termina 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 nnn.

Insercin de una o ms pantallasScreen attributes Screen number 100 . . . Next screen 200 Screen PainterPROCESS AFTER INPUT. MODULE OK_CODE.

Screen Painter

Screen attributes Screen number 201 . . . Next screen 301

Screen Painter Painter

Screen PROCESS BEFORE OUTPUT. Painter . . .PROCESS AFTER INPUT. MODULE OK_CODE.

ABAP/4MODULE OK_CODE INPUT. . . . CALL SCREEN 201. MODULE OK_CODE INPUT. . . . SET SCREEN 0. LEAVE SCREEN.

ABAP/4

La instruccin CALL SCREEN nnnn interrumpe el procesamiento de la pantalla actual para procesar la pantalla nnnn y las pantallas subsecuentes. La pantalla llamada con esta instruccin deber ser una pantalla del mismo "module pool". Cualquiera de las instrucciones: SET SCREEN 0, LEAVE SCREEN, LEAVE TO SCREEN 0, regresa el control a la locacin donde fue ejecutada la instruccin CALL SCREEN nnnn. Si se usa cualquiera de estas instrucciones cuando no se esta en el modo de llamada, el programa termina. Por ejemplo el regresar al lugar donde este programa fue llamado (ver tambin la instruccin LEAVE PROGRAM). Usando las adiciones STARTING AT y ENDING AT en la instruccin CALL SCREEN, se puede especificar la posicin y el tamao de la pantalla a llamar. En estos casos, los estndares ergonmicos de SAP establecen que la pantalla debe estar definida como de dilogo tipo modal. Se puede usar la adicin STARTING AT sin la adicin ENDING AT. Aqu, el sistema determina el tamao de la pantalla de dilogo segn el tamao definido en el atributo de pantalla conocido como "Used size". El punto de comienzo de esta pantalla ser la esquina superior izquierda. Si tambin se usa ENDING AT, el sistema incluye lo ms posible de la pantalla de dilogo dentro del rea definida por las coordenadas, iniciando en la esquina superior izquierda. Pg: 33

Programacin en Dilogo Si la pantalla aparece incompleta, se incluye en la misma una barra de desplazamiento.

Pg: 34

Programacin en Dilogo

Pg: 35

Programacin en Dilogo

Pantalla 100CALL SCREEN 101 STARTING AT sp zl.

Modal dialog box 101

Pantalla 100CALL SCREEN 101 STARTING AT sp zl ENDING AT sp zl.

Pantalla 100

Pg: 36

Programacin en Dilogo

Ejecucin condicionada de mdulosPROCESS AFTER INPUT. FIELD . MODULE ON INPUT. . . PROCESS AFTER INPUT. CHAIN. FIELD . ON CHAIN-INPUT.

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. Se puede usar la adicin ON INPUT solamente si la instruccin MODULE es especificada dentro de una instruccin FIELD. 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. Se puede usar la adicin ON REQUEST solamente si la instruccin MODULE es especificada dentro de una instruccin FIELD.PROCESS AFTER INPUT. FIELD . MODULE ON REQUEST. . .

Screen Painter

Pg: 37

Programacin en Dilogo Screen Painterpantalla>, pantalla>, pantalla>. ON CHAIN-REQUEST.

PROCESS AFTER INPUT. CHAIN. FIELD Men Painter. Dando el codigo de transaccin SE41. Dentro del editor de ABAP/4, posicionar el cursor en el nombre del status en el estatutto SET PFSTATUS dando doble clic y/o presionar F2.

Pg: 39

Programacin en Dilogo Es posible mantener tanto un estatus de un determinado programa, como los diferentes objetos de un GUI que forman parte de los status (Barras de Mens, teclas de funcin, ttulos de men).

Taclas de Funcin.

Pg: 40

Programacin en Dilogo Como es recomendable que todas las teclas de funcin que se definan, estn incluidas en la barra de mens y si se desea en la barra de aplicacin, comenzaremos por definir estas teclas de funcin primeramente. Para definir las teclas de funcin utilizamos el espacio destinado para ello. Indicando el cdigo de la funcin en la lnea correspondiente a la tecla que deseamos utilizar. El texto de la tecla de funcin aparecer automticamente, pero podr ser modificada en caso de desearlo. SAP no recomienda definir nuevas teclas de funcin en el espacio reservado para teclas de funcin estndar.

Los Pushbuttons.

Los pushbuttons son botones tridimensionales que aparecen debajo de la barra de herramientas estndar (barra de aplicacin). Previamente a definir un botn ser necesario definir la funcin deseada como una tecla de funcin. Para ver que funciones se pueden utilizar nos situaremos sobre Aplication Toolbar y pulsaremos F4. Indicaremos el cdigo de funcin que deseamos que aparezca en la barra de herramientas de aplicacin. Podemos especificar si queremos que aparezca un texto corto o nicamente un icono que identifique la funcin. No ser necesario definir las funciones de la barra de herramientas estndar, Standard Toolbar. Pg: 41

Programacin en Dilogo Para definir iconos para visualizarlos en la barra de herramientas de aplicacin ser necesario: Seleccionar: Edit -> Insert -> Function with icon. Entrar el cdigo de funcin. Introducir el nombre del icono y el texto del men.

La Barra de Mens.

Para definir un men, se le pone el nombre en espacio disponible. Se pueden incluir ha sta 6 mens en la barra de mens. Adems de los mens del usuario, el sistema aadir automticamente System y Help. Cada men puede tener hasta 15 entradas. Cada una de las cuales puede ser otro men en cascada o una funcin. Para abrir un men o submen, hacer un Doble-Click socre el nombre. Cada entrada estar compuesta de un cdigo de funcin y un texto de funcin o un texto de men. Con F4 podemos ver una lista de las funciones que podemos utilizar. Se pueden anidar hasta 4 niveles de submens. En el caso de las funciones bastar con indicar el cdigo de la funcin para que el texto de esta aparezca automticamente, si esta ya existe previamente. Podemos definir los atributos de una funcin nueva con Doble-Click sobre la nueva funcin definida. En el caso de un men en cascada, no ser necesario indicar el cdigo, y con Doble-Click podemos desarrollar las opciones del submen.

Pg: 42

Programacin en Dilogo

Otras utilidades del Men Painter.Activacin de Funciones. Podemos hacer que las funciones de la barra de mens estn en modo activo o inactivo. En caso de estar inactivas, se visualizarn en la barra de mens en baja intensidad y su seleccin no implicar efecto alguno, en cambio las funciones activas sern completamente ejecutables. Para activar o desactivar funciones seleccionar Function Activation. FastPaths. Un FastPaths (Camino rpido), es una manera rpida de escoger funciones en un men, asignando a cada funcin una tecla. Podemos mantener FastPaths seleccionando: Goto -> Further Options -> FastPath. Indicaremos para las funciones deseadas una letra, normalmente la primera, teniendo cuidado de no especificar la misma letra para distintas funciones.

Ttulos de Menu.Es posible mantener distintos ttulos para un men. Goto -> Title List. Cada ttulo se identificar con un cdigo de ttulo de 3 dgitos. Introduciremos el texto del ttulo, pudiendo utilizar variables de la misma forma que lo hacamos con los mensajes en ABAP/4, es decir utilizando el smbolo &. Posteriormente ser en el programa ABAP/4 donde le indiquemos que ttulo vamos a utilizar con la instruccin: SET TITLEBAR WITH En tiempo de ejecucin el ttulo del men se guardar en la variable del sistema SY-TITLE.

Prueba, Chequeo y Generacin de Status.Podemos probar el status simulando la ejecucin de la interface con: User Interface -> Test Status, y introduciendo los datos: Nmero de pantalla, y Cdigo del ttulo. Antes de usar la interfase podemos comprobar que la hemos definido correctamente, realizando un proceso de chequeo con: User Interface -> Check Syntax. Posteriormente realizaremos un proceso de generacin de la interface que incluye el chequeo y la grabacin de la misma.

Pg: 43

Programacin en Dilogo

Mens de mbito o de rea.Un men de mbito es una agrupacin de transacciones en forma de men. Es una manera de agrupar las transacciones ms frecuentemente utilizadas por un usuario bajo un mismo men. A diferencia de una transaccin de dilogo, el men de mbito slo llama a otras transacciones, no pudiendo incorporar otro tipo de funciones propias. Podemos crear los mens de mbito con una version simpplificada del Men Painter. Tools Development -> Other Tools -> Area Menus. Unicamente ser necesario introducir los cdigos de transaccin (tabla TSTC) y el texto del men. Para ms informacin sobre las posibilidades del Men Painter, ver el captulo Men Painter del manual BC ABAP/4 Worckbench Tools .

Pg: 44

Programacin en Dilogo

Actualizacin AsncronaConcepto de transaccin.Transaccin de Base de Datos ( DB LUW )Sistema SAP CMI / OMT RLBC OLAK UDT PAE ISR NET DLT EEE CMI / OMT RLBC OLAK cd o ig r ton e ro Oe r n d d le e teTb 3 a la

cd o ig rtro eon Sistema BD P nod ut e s co iz c n in r n a i B D c m it o m o B D r llb c o ak Oe r n d udt p aeTb 1 a la Tb 2 a la

cd o ig rtro eon Oe r n d in et sr

Pn d u to e s co iz c n in r n a i B D c m it o m o B D r llb c o ak

B D u d te pa

B D in et sr

B D d le e te

B D Eta o1 s d

B D S ra a in e liz r c mio a bs

B D S ra a in e liz r c mio a bs

B D S ra a in e liz r c mio a bs

B D Eta o2 s d

Una transaccin de base de datos es introducida por un punto de sincronizacin el cual es puesto por la aplicacin de la base de datos ( en el caso del sistema R/3). En el curso de una transaccin de base de datos, el sistema realiza actualizaciones de la tabla, en requerimientos hechos por el sistema R/3. Las entradas a la tabla modificada permanecen bloqueadas hasta que la transaccin haya terminado. Despus de cada actualizacin de la base de datos, el sistema de base de datos informa al sistema R/3 que la actualizacin fue exitosa o no exitosa, en forma de un cdigo de retorno. Una transaccin de base de datos es terminada por otro punto de sincronizacin puesto por el sistema R/3 el cual enva un COMMIT para confirmar las actualizaciones de las tablas, o un ROLLBACK al sistema de base de datos. En respuesta, el sistema de base de datos realiza un commit para confirmar las actualizaciones de la tabla, o realiza un rollback el cual cancela las actualizaciones realizadas por la transaccin de base de datos. En este caso el estado 2 es idntico al estado 1. En ambos casos, los bloqueos hechos por la base de datos son liberados.

Transaccin SAP. Una transaccin SAP consiste en procesos de dialogo. Un proceso de dialogo comienza cuando el usuario presiona Enter, cuando activa una funcin presionando alguna tecla funcin, hace un doble clic o escoge una funcin de un men. Esto termina cuando la siguiente pantalla es desplegada. En el curso de un proceso de dialogo, los mdulos PAI pertenecen a la pantalla en ejecucin y los mdulos PBO pertenecen a la siguiente pantalla que es ejecutada.

Pg: 45

Programacin en Dilogo Cada proceso de dialogo puede contener requerimientos de actualizacin (UPDATE, INSERT, DELETE).

Transaccin SAP y Transaccin DB.Sistema R/3 PO B PI A PO B PI A PO B PI A

UDT PAE

ISR NET

DLT EEE

Sistema BD

B D c m it o m B D udt pae

B D c m it o m B D isr net

B D c m it o m B D dlt eee

Despus de cada proceso de dialogo, el sistema R/3 automticamente pasa un commit de base de datos al sistema de base de datos. El sistema de base de datos distribuye los requerimientos de actualizacin de un proceso de dialogo individual pasando por varias transacciones. Un rollback en un proceso de dialogo no tiene efecto en actualizaciones previamente realizadas a la base de datos en procesos de dialogo previos.

Transaccin SAP y Actualizaciones Asncronas.Sistema R/3 Proceso de dilogoPBO PAI PBO PAI PBO PAI

marca UPDATE

marca marca INSERT INSERT

marca marca DELETE DELETE

log tablemarca UPDATE marca INSERT marca DELETE

COMMIT WORK

Proceso de actualizacinUPDATE INSERT DELETE

Sistema BD Proceso de Base de Datos estado 1UPDATE INSERT DELETE

estado 2

Una actualizacin asncrona permite combinar un total de actualizaciones realizadas por procesos de dialogo consecutivos de una transaccin SAP, en una unidad conocida como Logical Unit of Work (unidad lgica de Trabajo) o SAP LUW. Pg: 46

Programacin en Dilogo

En el LUW, todas las actualizaciones son realizadas en una sola. Aqu los requerimientos de actualizacin no son pasados directamente a la base de datos, pero son almacenados en una tabla de registro (log table) para actualizarse. El comando de ABAP/4 COMMIT WORK concluye el LUW. El sistema R/3 comienza un proceso de actualizacin especial el cual usa la tabla de registro (log table) para realizar la actualizacin en la base de datos dentro del contexto de una transaccin de base de datos. Si ocurre un error, el LUW es terminado por el comando ABAP/4 ROLLBACK WORK. Las entradas a la tabla de registro son descartadas y no comienza el proceso de actualizacin. El COMMIT WORK termina la tarea del dialogo y continua en la tarea de actualizacin.

Concepto de Actualizacin Asncrona.

marca update

log table

Dilogo

1inicia actualizacin

2Actualizacin

3

lee requerimiento de update

6borra registro log/ log error

5 4

COMMIT o ROLLBACK

Base de Datos

cambia respuestas

En SAP, la actualizacin asncrona para el manejo de requerimientos de bases de datos es dividida entre un programa de dialogo interactivo y un programa de actualizacin el cual corre en background. En SAP, la actualizacin asncrona divide el proceso en actualizaciones de tiempos crticos (V1) y actualizaciones de tiempos menos crticos (V2).

Dilogo

* INCLUDE MTCF1I101. . . . CALL FUNCTION 'TRAIN410_UPD_SFLIGHT' IN UPDATE TASK TABLES TAB = UPDATE_TAB. . . . COMMIT WORK.

Actualizacin

FUNCTION TRAIN410_UPD_SFLIGHT. . . . UPDATE SFLIGHT FROM TABLE TAB. . . . ENDFUNCTION.

Pg: 47

Programacin en Dilogo

Programa de dialogo y mdulo de funcin para actualizacin. Para la implementacin del concepto de actualizacin, se requiere de un programa para el proceso de dialogo y uno o ms mdulos de funcin para el proceso de actualizacin. Si en el comando CALL FUNCTION en el programa de dialogo tiene adems IN UPDATE TASK, la llamada no es ejecutada inmediatamente, pero es agregada en la tabla de registro.

Modulo de Funcin de Actualizacin.

AdministracinFunction group Update with immediate start (V1) Immediate start, no restart (V1) Update with delayed start (V2)

Interfase

Import parameter

Reference

Proposal

Table parameter

Se pueden asignar mdulos de funcin usados en una transaccin SAP a diferentes grupos de funciones. En la seccin de administracin, se especifica el tipo de funcin: V1 (ejecucin inmediata) o V2 (ejecucin posteriormente). En un mdulo de funcin para actualizacin, solo los parmetros de entrada (import) y las tablas son tomadas en cuenta. Se especifica los campos de referencia o la estructura segn corresponda. Los parmetros de salida (export parameters) y las excepciones (exceptions), son ignorados en una funcin de actualizacin. Si se desea reglamentar la opcin para realizar despus una actualizacin despus de un error, con la transaccin SM13 seleccione Immediate start, no restart.

Programa de dilogo y tabla de registro.

Pg: 48

Programacin en Dilogo En el momento que cada CALL FUNCTION ... IN UPDATE TASK es ejecutada en un programa en dilogo, se agrega una entrada en la tabla registro (log table) con el nombre de la funcin y sus parmetros. Todas los requerimientos de actualizacin en un SAP LUW tiene la misma llave (conocida como update key). Un registro de encabezado (log header) para asociar los registros se genera solo cuando un COMMIT WORK es ejecutado.

Rollback en los programas de Dialogo: Borrando marcas de Actualizacin.

Programa de dialogo

PROGRAM . . . MODULE . . . . CASE . WHEN 'UPDA'. . COMMIT WORK. WHEN 'BACK'. . ROLLBACK WORK. . ENDCASE. . . . ENDMODULE.

En el curso de un dialogo que involucra varios pasos, se puede juntar una serie de actualizaciones y ejecutar el requerimiento asociado con un COMMIT WORK explcito. Sin embargo, se pueden tener para borrar todas las actualizaciones del SAP LUW en curso con ROLLBACK WORK. El comando ROLLBACK regresa todas las actualizaciones hechas por el LUW en ejecucin.

Rollback en el Programa de Actualizacin.Programa de Actualizaci n

FUNCTION-POOL . . . . . . FUNCTION . . . . . . UPDATE . . . IF SY-SUBRC NE 0. MESSAGE Annn ENDIF. INSERT . . . IF SY-SUBRC NE 0. MESSAGE Annn

. . .

. . .

Pg: 49

Programacin en DilogoENDIF. . . . ENDFUNCTION.

La funcin de actualizacin pasa el requerimiento de actualizacin a la base de datos y analiza el cdigo de retorno. Si la base de datos no ejecuta correctamente la actualizacin, en el mdulo de funcin se decide la forma de proceder en estos casos. Si se desea realizar un Rollback de base de datos en el programa de actualizacin, es necesario desplegar un mensaje tipo abend. Los comandos ABAP/4 COMMIT WORK Y ROLLBACK WORK no son permitidos en mdulos de funcin de actualizacin. Solo pueden ser usados en programas de dialogo.

PERFORM ON COMMIT.Dialogo S LU AP W

PE O RF RM ON CO I MM T

F 1

CO I MM T WO RK PE O RF RM ON CO I MM T PE O RF RM ON CO I MM T m arca F 3 T abla interna F 1 F 2 F 3 F 2 ejecutar

Si se ejecuta una subrutina con PERFORM ON COMMIT, no es ejecutado hasta el siguiente COMMIT WORK. Con PERFORM ... ON COMMIT no se pueden pasar parmetros. Con el ROLLBACK WORK, las elementos de la tabla interna son borrados. Las subrutinas que son ejecutadas con PERFORM ... ON COMMIT pueden ellas mismas contener llamadas a mdulos de funciones de actualizacin.MODULE PAI_100. . . . PERFORM F1 ON COMMIT. . . . ENDMODULE. MODULE PAI_200. . . . PERFORM F2 ON COMMIT. . . . COMMIT WORK. ENDMODULE. . . .

Pg: 50

Programacin en Dilogo

FORM F1. CALL FUNCTION 'UPDATE_LFA1'. IN UPDATE TASK EXPORTING . . . . . . ENDFORM. FORM F2. CALL FUNCTION 'UPDATE_LFB1'. IN UPDATE TASK EXPORTING . . . . . . ENDFORM.

.

.

Pg: 51

Programacin en Dilogo

Concepto de Bloqueo de SAP.Utilizacin de bloqueos

Flight no. Passenger Book

LH0470 Miller

Flight no. LH0470

No. of free seats 1

Flight no. Flight no. Passenger Book LH0470 Meyer LH0470 LH0470 LH0470 LH0470

Passenger Smith Balfour Hansen

Si varios usuarios quieren tener acceso a un mismo recurso, stos deben estar sincronizados para garantizar la consistencia de los datos. Los bloqueos, constituyen un conveniente mtodo para coordinar los accesos de cada usuario a los recursos. Cada usuario requiere de un bloqueo antes de tener acceso a datos crticos.

Bloqueo de Base de Datos.Sistem a R/3 Dilogo

CO M M IT (implcito)

CO M M IT (implcito)

CO M M IT W R O K (explcito)

UPDATESistem a BD Bloqueos

INSERT

SELECT FOR UPD

INSERT

Pg: 52

Programacin en Dilogo Si un programa de dilogo contiene estatutos de actualizacin, el sistema de base de datos pone los bloqueos apropiados. Al final de una transaccin de base de datos, el sistema de base de datos libera todos los bloqueos puestos durante la transaccin. No obstante, el sistema R/3 realiza un commit implcito a la base de datos en cada cambio de pantalla, el bloqueo de base de datos puesto durante un paso de dialogo, solo es retenido mientras no termine este paso e inicie el siguiente.

Introduccin al Concepto de Bloqueo de SAP.Dilogo 1 Transaccin SAP 1liberado colocado bloqueo Lock table

Transaccin SAP 2liberado

bloqueo colocado

Dilogo 2bloqueo no colocado bloqueo colocado liberado

Transaccin SAP A objeto bloqueo 1

Transaccin SAP B objeto bloqueo 3 objeto bloqueo 2 Tiempo

Los bloqueos de base de datos son insuficientes si se desea que el bloqueo tenga una duracin de varios cambios de pantalla. En el contexto de bloqueo de base de datos de SAP, hay una transaccin SAP la cual coloca los bloqueos en una tabla (lock table) para que los registros de la tabla sean procesados. La transaccin SAP obtiene informacin sobre el suceso del bloqueo para retornar un cdigo de retorno. Al final del proceso, los bloqueos deben ser liberados explcitamente por el programa de dilogo. Si el usuario terminar el programa de dialogo ( tecleando en la lnea de comandos /n, o dentro del programa se ejecuta un estatuto LEAVE PROGRAM o LEAVE TO TRANSACTION; o si es desplegado un mensaje tipo A), los bloqueos son liberados automticamente.

Pg: 53

Programacin en Dilogo

Objetos de Bloqueo SAP.Diccionario ABAP/4 Argumentos de Blqueo

Name Primary table Secondary tables Table SFLIGHT SFLIGHT SFLIGHT SFLIGHT Table SFLIGHT

ESFLIGHT SFLIGHT

Field name MANDT CARRID CONNID FLDATE Mode E

Lock argument MANDT CARRID CONNID FLDATE Modo de Blqueo

Para realizar un bloqueo, primeramente se define un objeto de bloqueo en diccionario de ABAP/4. Estos objetos cubren las tablas que van a ser bloqueadas. Consiste de una tabla primaria, pero tambin se pueden agregar otras tablas secundarias para usar llaves forneas dependientes. El nombre de un objeto para clientes debe iniciar con EY o EZ. Los argumentos del bloqueo son los campos que forman la llave de las tablas. Por cada tabla se puede definir el modo de bloqueo: Modo E para exclusivo, modo S para compartido.

Modulo de Funcin Enqueue / Dequeue.Objeto de bloqueoESFLIGHT

Activar

Mdulo de FuncinENQUEUE_ESFLIGHT

Mdulo de FuncinDEQUEUE_ESFLIGHT

Pg: 54

Programacin en Dilogo Cuando un objeto bloqueado ha sido activado exitosamente, el sistema genera unos mdulos de funcin ENQUEUE y DEQUEUE.

Llamando Mdulos de Bloqueo.CALL FUNCTION 'ENQUEUE_ESFLIGHT' EXPORTING CARRID = . . . CONNID = . . . FLDATE = . . . EXCEPTIONS FOREIGN_LOCK = 1 SYSTEM_FAILURE = 2. CASE SY-SUBRC. WHEN 1. . . . WHEN 2. . . . ENDCASE.coloca una entrada de bloqueo

correctamente

Lock table

CALL FUNCTION 'DEQUEUE_ESFLIGHT' EXPORTING CARRID = . . . CONNID = . . . FLDATE = . . .

borra la entrada

Cuando se llama un mdulo de funcin ENQUEUE, el programa de dilogo coloca un bloqueo. Los parmetros de exportacin que se refieren al bloqueo de argumentos, identifican las entradas de la tabla o las entradas a ser bloqueadas. Si uno de estos parmetros no contienen un valor, el sistema lo trata como una especificacin genrica. Si se desea borrar todos los bloqueos de la tabla, los cuales han sido puestos en tu programa se puede usar el mdulo de funcin DEQUEUE_ALL.

Tabla de Bloqueos Los argumentos de los bloqueos, son almacenados en la lock table para casa tabla bloqueada. Client 007 007 007 007 007 007 007 User Meyer Miller Miller Miller Smith Schultz Balfour Time 11:00 11:01 11:01 11:01 11:02 11:03 11:04 Shared Table SFLIGHT SFLIGHT LFB1 LFC1 YLFA YLFA YLFB1 Lock argument LH470 UA250 0074712 0815 0074712 08151994 LIEF1 LIEF1 00764715

X X

Pg: 55

Programacin en Dilogo Para desplegar la tabla de bloqueos, elija Tools -> Administration -> Lock entries (Transaccin SM12).

Caractersticas Especiales con ENQUEUE. El parmetro MODE_ maneja el modo de bloqueo definido por el bloqueo del objeto (S = shared / compartido, E = Exclusivo). El parmetro _SCOPE define la duracin del bloqueo y los libera cuando no se necesitan ms. _SCOPE = 1 : El Bloqueo permanece en el programa de dialogo. _SCOPE = 2 (default) : El bloque es retenido por el programa de actualizacin. _SCOPE = 3 : El programa de dialogo y actualizacin son dueos de los bloqueos y hay dos entradas por objeto. El parmetro _WAIT define donde un bloqueo deber repetirse despus de un error. Se pueden especificar la duracin de las repeticiones con el parmetro ENQUEUE / DELAY. Si un argumento de bloqueo no contiene valor o tiene un espacio, se establece un bloqueo genrico. Si se desea bloquear el valor inicial, se debe marcar el parmetro X_.

Pg: 56

Programacin en Dilogo

Modificacin dinmica de pantallasModificacin dinmicaIntroduccin

Change Display

Change Display

A B

A B

campos de salida

campos de entrada y salida

Se pueden cambiar temporalmente ciertos atributos de campos, por ejemplo cambiar los campos de solo-lectura en campos de entrada/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 ModificablesLos 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.

Tabla SCREEN / Atributos modificables de campos Pg: 57

Programacin en Dilogo

SCREEN-NAME SCREEN-GROUP1 SCREEN-GROUP2 SCREEN-GROUP3 SCREEN-GROUP4 SCREEN-REQUIRED SCREEN-INPUT SCREEN-OUTPUT SCREEN-INTENSIFIED SCREEN-INVISIBLE SCREEN-LENGTH SCREEN-ACTIVE SCREEN-DISPLAY_3D SCREEN-VALUE_HELP SCREEN-REQUEST

Field name Modification group1 Modification group2 Modification group3 Modification group4 Required field Input field Output field Highlighted field Invisible field Field length Active field 3-dimensional field Field with value help Input exist (PAI only)

Atributos: Modificacin de gruposScreen Painter Lista de campos: Modificacin de grupos Field name SPFLI_ITAB-CONNID SPFLI_ITAB-CITYFROM SPFLI_ITAB-CITYTO ... Gr1 SEL SEL SEL Gr2 Gr3 Gr4 ...

Se puede asignar un campo a cuatro grupos diferentes. Los nombres de grupos son de tres caracteres de longitud y pueden ser definidos libremente.

ProgramaPara programar la modificacin de la pantalla, es necesario un mdulo que se ejecuta durante el mdulo PROCESS BEFORE OUTPUT. Se pueden cambiar los atributos de un campo y/o un grupo de campos en la tabla SCREEN. (LOOP AT SCREEN WHERE y READ TABLE SCREEN son soportados.) Se activan o desactivan los atributos asignando valores 1 0. Para almacenar los cambios realizados, se utiliza la instruccin MODIFY SCREEN. Pg: 58

Programacin en Dilogo No es permitido el usar la instruccin SCREEN-ACTIVE = 1 como una operacin dinmica para activar un campo que no se ha definido como oculto en el Screen Painter. Sin embargo, si se puede usar esta instruccin para inactivar un campo definido como visible en el Screen Painter. SCREEN-ACTIVE = 0 tiene el mismo efecto que las tres instrucciones SCREENINVISIBLE =1, SCREEN-INPUT = 0 y SCREEN-OUTPUT = 0.PROCESS BEFORE OUTPUT. . . MODULE MODIFY_SCREEN. . . MODULE MODIFY_SCREEN OUTPUT. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'SEL'. SCREEN-INPUT = 1. ENDIF. IF SCREEN-NAME = 'SFLIGHT-CARRID'. SCREEN-ACTIVE = 0. ENDIF. MODIFY SCREEN. ENDLOOP. ENDMODULE.

Screen Painter

ABAP/4

Pg: 59

Programacin en Dilogo

Tablas de ControlCaractersticas del Control de Tabla

Seleccionar y Seleccionar y mover columna(s) mover columna(s)

Modificar ancho columna Modificar ancho columna

Almacenar Almacenar caractersticas caractersticas

Depart from

Connection to

Depart Arrive

Seleccionar Seleccionar linea(s) linea(s)

Fijar columnas Fijar columnas

Barras de desplazamiento Barras de desplazamiento automticas automticas

Con el control de tabla, puedes mostrar o introducir lineas y/o datos en forma tabular. Alcance de Funcin: - Cambiar de tamao la tabla para desplegar y editar dato. - El ancho y posicin de columna puede ser modificado por el usuario. - La seleccin de columna y/o lnea seleccin con color-intenso. - Seleccin de lnea(s), mltiple, total y de-seleccionar. - Encabezados de columna son mostrados como botones para seleccin de columna. - Desplazamiento horizontal y vertical con barras de desplazamiento. - Compuesto de algn nmero de columnas clave (columnas fixed lead). - Los atributos de celda modificables. El usuario puede almacenar diferente caractersticas variables y colocar alguno de estos o el las caractersticas bsicas como el actual.

Pg: 60

Programacin en Dilogo

Principios para el control de Tabla.Llenado.

Base de tados

Tabla interna (memoria)

Control de tabla 1 2 3 4 Pgina siguiente 5 6 7 8

Tabla de Base de Datos

1 2 3 4 5 6 7 8 9 . . .

Por razones de optimizacin, lees los datos para la tabla de control una vez y los almacenas en una tabla interna. Las lneas de la tabla de control son entonces tomadas de esta tabla interna. Hay solo un rea de trabajo para editar lneas dentro de la tabla de control. Por esta razn, necesitas una instruccin LOOP ... ENDLOOP para cada tabla de control en los mdulos PBO y PAI del flujo lgico.Screen PainterPantalla 1 PBO Pantalla 2 (con tabla de control) PBO LOOP . . . lee la tabla interna lnea por lnea ENDLOOP. PAI Lee las lnear desde la base de datos y las carga en la tabla interna PAI LOOP . . . actualiza la tabla interna lnea por lnea ENDLOOP.

Pg: 61

Programacin en Dilogo

En el mdulo PBO, una lnea de la tabla de control debe estar llenada con una lnea de la tabla interna cada vez que el ciclo es procesado. Similarmente, el mdulo PAI debe copiar los cambios en una lnea de tabla de control dentro de la lnea de tabla interna correspondiente. Cuando manejas funciones, debes diferenciar entre las que se aplican solo en una lnea en una tabla de control y las relacionadas con la pantalla completa.

Creacin en modo Grfico

Attributes Attributes

Dict./prog.fields Dict./prog.fields

Field list Field list

Text Text Entry Entry

Flight

From

To

Table Table

En el editor fullscreen grfico, elige Table para crear una tabla de control y usa el botn izquierdo del ratn para posicionarlo en la pantalla. Entonces, define los campos en la tabla de control, por ejem: usando estos en ABAP/4 Dictionary.

Creando Tablas de control (Fullscreen Alfanumrico) Puedes definir una tabla de control en el editor alfanumrico fullscreen. En el men Edit, elige Create element y entonces Table control. Obtienes un cuadro de dilogo donde introduces el nombre de la tabla de control e inicializas los atributos. Vas al modo de seleccin y determinas el tamao de una tabla de control posicionando el control. Entonces, defines los campos de la tabla de control. Puedes usar tambin campos de ABAP/4 Dictionary o crear nuevos en el programa. Pg: 62

Programacin en Dilogo

Screen Painter Painter Editor de Pantallas en modo Alfanumrico Edicin Crear elemento Control de tabla

Especificar nombre de campo (= nombre de CT) Inicializar atriutos Continuar Seleccionar tamao del CT Definir campos del CT

Definicin de una tabla de control en "Module Pool"CONTROLS ctrl TYPE TABLEVIEW USING SCREEN scr.El tipo TABLEVIEW corresponde a la estructura CXTAB_CONTROL con los siguientes campos: FIXED_COLS TYPE I Nmero de columnas fijas LINES TYPE I Nmero de lneas para el desplazamiento vertical TOP_LINE TYPE I Primera lnea en el siguiente PBO CURRENT_LINE TYPE I Lnea actual (en un LOOP ENDLOOP) LEFT_COL TYPE I Primera columna desplegada y movible LINE_SEL_MODE TYPE I Seleccin de lnea (0=ninguna, 1=simple, 2=mltiple) COL_SEL_MODE TYPE I Seleccin de columna (0=ninguna, 1=simple, 2=mltiple) LINE_SELECTOR Indicador de lnea seleccionada V_SCROLL Indicador de barra de desplazamiento vertical H_GRID Indicador de lnea de grid horizontal V_GRID Indicador de lnea de grid vertical COLS TYPE CXTAB_COLLUMN OCCURS 10 El tipo CXTAB_COLLUMN consta de los siguientes campos: SCREEN LIKE SCREEN INDEX TYPE I SELECTED VISLENGTH LIKE ICON-OLENG INVISIBLE Atributos de la estructura SCREEN Posicin de columna (secuencia de despliegue) Indicador de columna seleccionada Ancho visible de columna Indicador de columna invisible

La instruccin CONTROLS define un objeto de dato complejo de el tipo TABLEVIEW el cual corresponde a el tipo CXTAB_CONTROL definido en el ABAP/4 Dictionary (ver grupo tipo CXTAB). Pg: 63

Programacin en Dilogo

Mantienes los valores iniciales en el Screen Painter. Con la adicin USING SCREEN, determinas la pantalla de la cual quieres obtener los valores iniciales para la tabla de control. Puedes usar la instruccin REFRESH CONTROL ctrl FROM SCREEN scr alguna vez para inicializar una pantalla con valores iniciales de la pantalla screen.

Flujo lgico de la tabla de control.Opcin 1: Leer la tabla interna e la lgica de control, pasandolos a los campos de la pantalla.

ScreenPROCESS BEFORE OUTPUT. Painter LOOP AT SPFLI_ITAB WITH CONTROL CONNECTIONS CURSOR CONNECTIONS-CURRENT_LINE. ENDLOOP. PROCESS AFTER INPUT. LOOP AT SPFLI_ITAB. FIELD SPFLI_ITAB-MARK MODULE MODIFY_SPFLI_ITAB ON REQUEST. ENDLOOP.

ABAP/4MODULE MODIFY_SPFLI_ITAB INPUT. MODIFY SPFLI_ITAB INDEX CONNECTIONS-CURRENT_LINE. ENDMODULE.

En el flujo lgico, puedes leer una tabla interna usando la instruccin LOOP. Defines la referencia a la tabla de control especificando WITH CONTROL . Determinas cual entrada de tabla es leda especificando CURSOR-CURRENT_LINE. El sistema calcula -CURRENT_LINE de -TOP_LINE + SY-STEPL, el cual es el ciclo especial indexado por LOOPs en el flujo lgico. El sistema calcula -TOP_LINE cuando el usuario desplaza scrolls con la scroll bar, pero no hace lo mismo para desplazar una pgina. T tienes que programarlo. Despus de leer la operacin, el contenido del campo es colocado en la linea de encabezado de la tabla interna. Si los campos en la tabla de control tienen los mismos nombres que los campos de la tabla interna, enseguida son llenados. Debes reflejar algunos cambios que el usuario hace a los campos de una tabla de control en la tabla interna. De otra manera, no aparecern cuando la pantalla se vuelve a mostrar despus de que PBO es ejecutado otra vez, por ejem. Cuando el usuario presiona ENTER o scrolls. Sin embargo, este procesamiento se debe ejecutar solo si los cambios han sido hechos a la lnea de la tabla de control.

Pg: 64

Programacin en Dilogo

Pg: 65

Programacin en Dilogo

Opcin 2: Leer la tabla interna en el Module Pool, los campos del diccionario sobre la pantalla

ABAP/4MODULE SFLIGHT_ITAB_READ OUTPUT. READ TABLE SFLIGHT_ITAB INDEX FLIGHTS-CURRENT_LINE. IF SY-SUBRC EQ 0. MOVE-CORRESPONDING SFLIGHT_ITAB TO SFLIGHT. ELSE. EXIT FROM STEP-LOOP. ENDIF. ENDMODULE.

Painter PROCESS BEFORE OUTPUT. LOOP WITH CONTROL FLIGHTS.MODULE SFLIGHT_ITAB_READ. ENDLOOP. PROCESS AFTER INPUT. LOOP WITH CONTROL FLIGHTS. FIELD SFLIGHT-PRICE MODULE MODIFY_SPFLI_ITAB ON REQUEST. ENDLOOP.

Screen

ABAP/4MODULE MODIFY_SPFLI_ITAB INPUT. MOVE-CORRESPONDING SFLIGHT TO SFLIGHT_ITAB. MODIFY SPFLI_ITAB INDEX FLIGHTS-CURRENT_LINE. ENDMODULE.

Si usas una instruccin LOOP sin una tabla interna en el flujo lgico, debes leer el dato en un mdulo PBO el cual es llamado cada vez que el ciclo es procesado. Ya que, el sistema no puede determinar el nmero de entradas de tabla interna, se debe usar la instruccin EXIT FROM STEP-LOOP para asegurar que no hay lneas vacas blank desplegadas en la tabla de control si no hay ms entradas de tablas interna correspondientes. Tambin debes determinar el nmero de lneas para desplazamiento vertical como punto conveniente. -LINES = nmero de entradas.

Modificacin

PROCESS BEFORE OUTPUT. MODULE CTRL_MODIFY_1.

Screen Painter

Cambia atributos Cambia atributos de las entradas de de las entradas de control de tabla control de tabla Cambia atributos Cambia atributos de campos en el de campos en el control de tabla control de tabla temporalmente temporalmente Cambia atributos Cambia atributos de las entradas de de las entradas de control de tabla control de tabla

1

LOOP ... MODULE MODIFY_SCREEN. ENDLOOP. PROCESS AFTER INPUT. LOOP ... ... ENDLOOP. MODULE CTRL_MODIFY_2.

2

1

Puedes cambiar los atributos de la tabla de control por los contenidos de campos. Pg: 66

Programacin en Dilogo Para modificar los atributos de celdas individuales temporalmente (!), cambias la tabla SCREEN en un mdulo PBO que es procesado entre LOOP y ENDLOOP en el flujo lgico. (Use LOOP AT SCREEN, MODIFY SCREEN).1 Screen Painter 2MODULE MODIFY_SCREEN OUTPUT. CHECK SPFLI_ITAB-FLAG = X. LOOP AT SCREEN. IF SCREEN-GROUP1 = SEL. SCREEN-INTENSIFIED = 1. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE.

FIELD FIXED_COLS MODULE CHANGE_TABLE_CONTROL ON REQUEST.

ABAP/4DATA WA LIKE LINE OF CONNECTIONS-COLS. ... MODULE CHANGE_TABLE_CONTROL INPUT. CONNECTIONS-FIXED_COLS = FIXED_COLS. LOOP AT CONNECTIONS-COLS INTO WA. IF WA-INDEX BETWEEN 1 AND FIXED_COLS. WA-SCREEN-INTENSIFIED = 1. ELSE. WA-SCREEN-INTENSIFIED = 0. ENDIF. MODIFY CONNECTIONS-COLS FROM WA. ENDLOOP. ENDMODULE.

Ejemplo 1 muestra como puedes reaccionar al requerir el componente de una columna. Si el usuario requiere el componente de una columna, la tabla de control es por consiguiente cambiada(CONNECTIONS-FIXED_COLS = FIXED_COLS). Los componentes de columnas son remarcados en color. Este es almacenado cambiando la tabla de control. Ejemplo 2 muestra una posible reaccin de una lnea seleccionada. Durante PAI, el campo ayuda itab-FLAG es llenado con X. En PBO, el procesamiento reacciona a esto remarcando el color todos los campos en una lnea donde el itab-FLAG es colocado a X (todos ellos tienen el grupo atributo SEL ). Esto es almacenado cambiando la tabla SCREEN.

Control de pginas Para implementar desplazamiento de pgina, calculas usando el atributo de tabla de control -TOP_LINE. Para esto (en PAI), necesitas conocer el nmero actual de lneas en la tabla de control. En PBO, el campo de sistema SY-LOOPC contiene el nmero actual de lneas de tabla de control. En PAI, contiene el nmero de lneas actualmente llenas. SY-LOOPC solo contiene un valor entre LOOP y ENDLOOP porque cuenta el nmero de ciclos. Note por favor que debes estas preparado para repartir algn overflow DATA: LOOPLINES LIKE SY-LOOPC ... MODULE GET_LOOPLINES OUTPUT. Pg: 67

Programacin en Dilogo PROCESS BEFORE OUTPUT. LOOP ... . MODULE GET_LOOPLINES. ENDLOOP. PROCESS AFTER INPUT. LOOP ... ... ENDLOOP. . LOOPLINES = SY-LOOPC. ENDMODULE. MODULE USER_COMMAND_0200 INPUT. ... WHEN F21. FLIGHTS-TOP_LINE = 1. WHEN F22. FLIGHTS-TOP_LINES = FLIGHTS-TOP_LINES - LOOPLINES. IF FLIGHTS-TOP_LINES < 1. FLIGHTS-TOP_LINES = 1. ... WHEN F24. FLIGHTS-TOP_LINE = FLIGHTS_ITAB_LINES - LOOPLINES + 1. ENDMODULE.

MODULE USER_COMMAND_0200.

Pg: 68

Programacin en Dilogo

9.2.1.

Posicin del cursor

Sintaxis Sintaxis GET CURSOR GET CURSORFIELD FIELD VALUE VALUE LINE LINE OFFSET OFFSET f f v v l l o. o.

Determinar posicin del cursor: Qul entrada de la tabla interna corresponde a la lnea de la tabla de control?

ABAP/4DATA: SELLINE LIKE SY-STEPL, TABIX LIKE CONNECTIONS-TOP_LINE. ... GET CURSOR LINE SELLINE. TABIX = CONNECTIONS-TOP_LINE + SELLINE -1. READ TABLE SPFLI_ITAB INDEX TABIX.

SET CURSOR SET CURSORFIELD FIELD VALUE VALUE LINE LINE OFFSET OFFSET f f v v l l o. o.

El parmetro LINE en la instruccin GET o SET se refiere a el campo de sistema SY-STEPL, el cual es el ciclo de flujo lgico especial indexado. Para determinar la entrada de tabla interna que corresponde a la lnea de tabla de control seleccionada, se calcula como sigue: Lnea requerida = -TOP_LINE + linea de posicin del cursor determinada -1. La instruccin GET CURSOR es apoyada por el cdigo de regreso encontrado en el campo de sistema SY-SUBRC. Si el valor es 0, el cursor es posicionado en un campo. Si el valor es 4, el cursor no est en un campo.

Pg: 69

Programacin en Dilogo

Vinculacin con los componentes de programasDilogos (pantallas) y procedimientos de listas1LISTA Funcin A Funcin A modal dialog box DIALOGO PANTALLA 100

1 2 1

SIGUIENTE PANTALLA 200

CALL SCREEN Puede ser pantalla completa o caja de dilogo

2Regresa al procesamiento de lista

PA