Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación en Diálogo
Programación en Diálogo
INDICE
1.
OBJETIVO...............................................................................................................5
2.
EXPECTATIVAS......................................................................................................6
3.
3.1.
Componentes principales.....................................................................................7
3.2.
Screen Painter......................................................................................................9
3.2.1. Module Pool......................................................................................................9
3.2.2. Creacin de Programas..................................................................................10
3.2.3. Definicin de Pantallas....................................................................................11
3.2.4. Diseo de Pantallas........................................................................................12
3.2.5. Creando objetos en la pantalla.......................................................................13
3.2.6. Lista de vistas de campos..............................................................................14
3.2.7. Creando objetos desde el diccionario de datos.............................................15
3.2.8. Definiendo los atributos individuales de cada campo....................................16
3.2.9. Definiendo campos en el Module Pool...........................................................18
3.3.
Definicin de la Flujo de Control........................................................................19
3.3.1. Introduccin a la Lgica de Proceso..............................................................19
3.3.2. Creacin de Mdulos ABAP/4........................................................................20
3.3.2.1. Process Before Output (PBO)..........................................................................21
3.3.2.2. Process After Input (PAI)...................................................................................21
3.3.3.
3.3.4.
4.
4.1.
La validacin de los datos de entrada...............................................................23
4.1.1. Verificacin automtica...................................................................................23
4.1.1.1.
4.1.1.2.
4.1.1.3.
4.1.1.4.
4.1.2.
4.1.3.
Verificacin
Verificacin
Verificacin
Verificacin
de
de
de
de
formato.....................................................................................23
campos obligatorios.................................................................24
llaves forneas.........................................................................24
valores fijos..............................................................................24
3.4.3.1.
3.4.3.2.
3.4.3.3.
3.4.3.4.
3.4.3.5.
Mensaje
Mensaje
Mensaje
Mensaje
Mensaje
de Error..............................................................................................27
de Advertencia (Warning)...................................................................28
de Informacin...................................................................................28
de Buen resultado..............................................................................29
de Interrupcin (Abend).....................................................................29
4.2.
Secuencia dinmica de pantallas......................................................................30
4.2.1. Introduccin....................................................................................................30
4.2.2. Configuracin dinmica de la siguiente pantalla............................................30
4.2.3. Insercin de una o ms pantallas...................................................................31
4.3.
Ejecucin condicionada de mdulos..................................................................33
5.
MEN PAINTER....................................................................................................35
5.1.
DISEO DE MENS (Men Painter).................................................................35
5.1.1. Introduccin....................................................................................................35
5.1.2. Taclas de Funcin...........................................................................................36
Pg: 2
Programacin en Dilogo
5.1.3.
5.1.4.
5.1.5.
Los Pushbuttons............................................................................................37
La Barra de Mens.........................................................................................38
Otras utilidades del Men Painter...................................................................39
5.1.6.
5.1.7.
5.1.8.
6.
Ttulos de Menu..............................................................................................39
Prueba, Chequeo y Generacin de Status.....................................................39
Mens de mbito o de rea............................................................................40
ACTUALIZACIN ASNCRONA...........................................................................41
6.1.
Concepto de transaccin...................................................................................41
6.1.1. Transaccin de Base de Datos ( DB LUW )...................................................41
6.1.2. Transaccin SAP.............................................................................................41
6.1.3. Transaccin SAP y Transaccin DB..............................................................42
6.1.4. Transaccin SAP y Actualizaciones Asncronas.............................................42
6.2.
Concepto de Actualizacin Asncrona................................................................44
6.2.1. Programa de dialogo y mdulo de funcin para actualizacin......................44
6.2.2. Modulo de Funcin de Actualizacin..............................................................45
6.2.3. Programa de dilogo y tabla de registro........................................................45
6.2.4. Rollback en los programas de Dialogo: Borrando marcas de Actualizacin. 46
6.2.5. Rollback en el Programa de Actualizacin.....................................................46
6.2.6. PERFORM <subrutina> ON COMMIT............................................................47
7.
7.1.
Utilizacin de bloqueos......................................................................................49
7.1.1. Bloqueo de Base de Datos.............................................................................49
7.1.2. Introduccin al Concepto de Bloqueo de SAP................................................50
7.1.3. Objetos de Bloqueo SAP................................................................................51
7.1.4. Modulo de Funcin Enqueue / Dequeue........................................................51
7.1.5. Llamando Mdulos de Bloqueo......................................................................52
7.1.6. Tabla de Bloqueos..........................................................................................52
7.1.7. Caractersticas Especiales con ENQUEUE....................................................53
8.
8.1.
Modificacin dinmica........................................................................................54
8.1.1. Introduccin....................................................................................................54
8.1.2. Atributos de campos Modificables.................................................................54
8.1.3. Atributos: Modificacin de grupos...................................................................55
8.1.4. Programa........................................................................................................55
9.
TABLAS DE CONTROL........................................................................................57
9.1.
Caractersticas del Control de Tabla..................................................................57
9.2.
Principios para el control de Tabla.....................................................................58
9.2.1. Llenado...........................................................................................................58
9.2.2. Creacin en modo Grfico.............................................................................59
9.2.3. Creando Tablas de control (Fullscreen Alfanumrico)...................................59
9.2.4. Definicin de una tabla de control en "Module Pool".....................................60
9.2.5. Flujo lgico de la tabla de control..................................................................61
9.2.6. Modificacin....................................................................................................63
Pg: 3
Programacin en Dilogo
9.2.7.
9.2.8.
10.
Control de pginas..........................................................................................64
Posicin del cursor..........................................................................................65
Funcionalidad F1 y F4.....................................................................................................72
11.1.1.
Funciones de Ayuda Automtica.................................................................72
11.1.2.
Programadas...............................................................................................73
11.1.3.
Extensin de la funcionalidad "F4" "HELP VIEW"....................................73
11.1.4.
Creacin "HELP VIEW"...............................................................................74
11.1.5.
Bsqueda "MATCHCODE"..........................................................................75
11.1.5.1.Definicin "MATCHCODE OBJECT".................................................................76
11.1.5.2. Seleccin de campos.......................................................................................77
11.1.5.3. Definicin "MATCH CODE ID"..........................................................................77
11.1.5.4. Seleccin de campos.......................................................................................78
11.1.6.
11.1.7.
11.1.8.
11.1.9.
11.1.10.
11.1.11.
11.1.12.
ANEXO 1
ABAP EDITOR.......................................................................84
COMMANDOS DE CABECERA......................................................................................85
COMANDOS DE LINEA:.................................................................................................87
Pg: 4
Programacin en Dilogo
1. Objetivo
Los objetivos principales del presente curso, son los siguientes:
Pg: 5
Programacin en Dilogo
2. Expectativas
Al 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
3.
Ambiente
Ambientede
dedesarrollo
desarrollo
Diccionario
ABAP/4
Screen
Painter
ABAP/4
Menu
Painter
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
Especificando que datos aparecen en pantalla y de que forma, adems de una lgica de
proceso de cada pantalla.
Especificando el contenido de los mens Pop-up, las teclas de funcin y los botones de
comandos que se pueden utilizar.
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.
Atributos
de pantalla
Screen no.
Short text
Screen type
Next screen
...
Diseo de
Pantalla
100
Test
Normal
200
Numero:
Atributos
de campo
Lgica de
flujo
NUMBER
CHAR
10 Characters
input X
...
Screen
Painter
PROCESS BEFORE
OUTPUT.
MODULE INIT.
PROCESS AFTER INPUT.
MODULE READ.
ABAP/4
Datos globales
DATA: NUMBER(10)
TYPE C.
.
.
.
mdulos PBO
MODULE INIT OUTPUT.
CLEAR NUMBER.
ENDMODULE.
.
.
mdulos PAI
MODULE READ OUTPUT.
SELECT ...
:
ENDMODULE.
:
Programacin en Dilogo
ABAP/4
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
1
2
1
2
1
2
LH
SPFLI-CONNID
LH
PBO
CARRID
0400
CONNID
0400
OK-CODE
PAI
DATA:
OK-CODE(4).
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.
Pg: 9
Programacin en Dilogo
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.
Edit
Edit
Local
Local private
private objects
objects
$TMP
$TMP Local
Local objects
objects of
of the
the user
user
Create
Create
Programs
Programs
..
..
..
Choose
Choose
Program
SAPMTALA
SAPMTALA
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: 10
Programacin en Dilogo
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: 11
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.
Pg: 12
Programacin en Dilogo
Programacin en Dilogo
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.
Para 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).
Pg: 14
Programacin en Dilogo
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 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
Full screen
Dict/Prog Fields
Dict/ProgFields
Get from Dict.
Table/field name
Copy
Key
Key word
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: 15
Programacin en Dilogo
Full screen
Field attr.
Field attributes
Graph. type
Field name
.
.
.
Dict. attributes
Program attributes
Display attributes
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.
Pg: 16
Programacin en Dilogo
Ltype :
Lcnt :
Groups :
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:
Pg: 17
Programacin en Dilogo
Fixed Font :
Bright :
Invisible :
2-Dimens :
ABAP/4
PROGRAM SAPMTALA.
TABLES: SPFLI.
DATA: ...
.
OR
Global data
ABAP/4
DATA: ...
Pg: 18
Programacin en Dilogo
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 Pool
PROGRAM Zxxxxxxx.
TABLES: ...
MODULE INI_VAR OUTPUT.
...
ENDMODULE.
MODULE TRATA_VAR_INPUT.
...
ENDMODULE.
Programacin en Dilogo
$TMP
Create
Create
.
.
PBO modules
modules
.
.
..
..
PAI
PAI modules
modules
..
..
Choose
Choose
PBO module
in include prog.
INITIALIZE
MTALAO01
Choose
PAI module
READ_SPFLI
READ_SPFLI
in include prog.
MTALAI01
ENDMODULE.
1.1.
Pg: 20
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.
1.2.
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.
Create
Choose
TALA
Transaction code
Transaction type
Dialog transaction
..
.
Continue
Transaction code
Transaction text
Program
Screen number
TALA
TALA
TEST
TEST
SAPMTALA
SAPMTALA
100
100
Pg: 21
Programacin en Dilogo
Screen
Painter
ABAP/4
OKCODE(4),
DATA: OKCODE(4),
SAVE_OKCODE(4).
SAVE_OKCODE(4).
Display
Screen
Painter
Field list
Field name
PUSH_100
Lg
Form
OKCODE
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: 22
Programacin en Dilogo
4.1.1.
Verificacin automtica
El sistema realiza automticamente una serie de chequeos de los datos de entrada, antes de
procesar el evento PAI.
4.1.1.1.
Verificacin de formato
Screen
Painter
Field list
Date
Amount
E: Invalid date
30.02.1996
Field name
Format
DATE
.
.
.
Amount
DATS
DEC
Date
Amount
12A3
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: 23
Programacin en Dilogo
4.1.1.2.
Screen
Painter
Field list
Field name
OBLIGATORY
PLANETYPE
Screen
Painter
Field list
Field
FIELD1
Foreign key
X
Field 1
Check table
P1
PFIELD
A
B
C
.
.
Pg: 24
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.
4.1.2.
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.
Screen
Painter
1
E... mensaje
Pg: 25
Programacin en Dilogo
FIELD <campo_pantalla> SELECT * FROM <tabla>
WHERE <condicin>
WHENEVER (NOT) FOUND SEND
ERRORMESSAGE / WARNING <nmero>
WITH <campo-texto>.
Para checar un campo respecto a una lista de valores utilizamos:
FIELD <campo_pantalla> VALUES (<lista_valores>).
Donde <lista_valores> puede ser:
(<valor>)
(not<valor>)
(<valor 1>,<valor 2>,NOT<valor n>)
(BETWEEN <valor 1> AND <valor 2>)
(NOT BETWEEN <valor 1> AND <valor 2>)
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 <campo_pantalla> MODULE <mdulo_ABAP/4>.
Screen
Painter
ABAP/4
MODULE <mdulo> INPUT.
.
.
MESSAGE E ... .
ENDMODULE.
1
E... mensaje
Pg: 26
Programacin en Dilogo
Screen
PROCESS AFTER INPUT. Painter
CHAIN.
FIELD: <campo pant 1>,
<campo pant 2>,
.
.
MODULE <mdulo>.
ENDCHAIN.
ABAP/4
MODULE <mdulo> INPUT.
.
.
MESSAGE E ... .
ENDMODULE.
1
1
1
1
1
E... mensaje
CHAIN.
FIELD <campo 1>, <campo 2>, <campo 3>.
MODULE <mod1>.
MODULE <mod2>.
ENDCHAIN.
CHAIN.
FIELD <campo 1>,<campo 2>.
MODULE <mod1>.
FIELD <campo 3> MODULE <mod2> ON CHAIN INPUT.
ENDCHAIN.
4.1.3.
1.1.
Mensajes en pantalla
Mensaje de Error
Screen
Painter
ABAP/4
PROGRAM SAPMAIN MESSAGE-ID AT.
.
.
.
MODULE CHECK INPUT.
IF SY-SUBRC NE 0.
MESSAGE E002 WITH ... .
ENDIF.
ENDMODULE.
Nueva entrada
Campo
E: . . .
Programacin en Dilogo
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: . . .
Mensaje de Informacin
Screen
Painter
ABAP/4
PROGRAM SAPMAIN MESSAGE-ID AT.
.
.
.
MODULE INFO INPUT.
IF SY-SUBRC ... .
MESSAGE I005.
ENDIF.
ENDMODULE.
Informacin
i ...
Enter
Pg: 28
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.
1.4.
Screen
Painter
ABAP/4
PROGRAM SAPMAIN MESSAGE-ID AT.
.
.
.
MODULE M INPUT.
.
.
.
Siguiente pantalla
IF SY-SUBRC ... .
MESSAGE S001 WITH ... .
ENDIF.
ENDMODULE.
...
Screen
Painter
ABAP/4
PROGRAM SAPMAIN MESSAGE-ID AT.
.
.
.
MODULE M INPUT.
.
.
.
IF SY-SUBRC ... .
MESSAGE A005.
ENDIF.
ENDMODULE.
Abend
STOP
...
Exit
Exit
Pg: 29
Programacin en Dilogo
Introduccin
SET
SETSCREEN
SCREEN
CALL
CALL SCREEN
SCREEN
4.2.2.
Screen attributes
Screen number 100
.
.
.
Next screen
100
Screen
Painter
Screen attributes
Screen
Painter
200
Screen
Painter
Screen
Painter
PROCESS BEFORE OUTPUT.
.
.
.
ABAP/4
MODULE
OK_CODE INPUT.
.
.
.
SET SCREEN 200.
LEAVE SCREEN.
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>.
Pg: 30
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.
4.2.3.
Screen
Painter
Screen attributes
Screen number 201
.
.
.
Next screen
301
Screen
Painter
PROCESS AFTER INPUT.
MODULE OK_CODE.
Screen
PROCESS BEFORE OUTPUT. Painter
.
.
.
PROCESS AFTER INPUT.
MODULE OK_CODE.
ABAP/4
MODULE
OK_CODE INPUT.
.
.
.
CALL SCREEN 201.
Screen
Painter
ABAP/4
MODULE
OK_CODE INPUT.
.
.
.
SET SCREEN 0.
LEAVE SCREEN.
Programacin en Dilogo
dilogo dentro del rea definida por las coordenadas, iniciando en la esquina superior
izquierda.
Si la pantalla aparece incompleta, se incluye en la misma una barra de desplazamiento.
Pantalla 100
CALL SCREEN 101
STARTING AT sp zl.
Pantalla 100
CALL SCREEN 101
STARTING AT sp zl
ENDING
AT sp zl.
Pantalla 100
Pg: 32
Programacin en Dilogo
Screen
Painter
Screen
Painter
pantalla>,
pantalla>,
pantalla>.
ON CHAIN-INPUT.
Screen
Painter
Pg: 33
Programacin en Dilogo
Screen
Painter
pantalla>,
pantalla>,
pantalla>.
ON CHAIN-REQUEST.
Es posible que en alguna ocasin el usuario quiera salir de la pantalla sin necesidad de pasar
las validaciones automticas (Por ejemplo utilizando las funciones estndares BACK, EXIT o
CANCEL). En este caso utilizaremos la clusula AT EXIT COMMAND de la instruccin
MODULE.
MODULE <mdulo_ABAP> AT EXIT-COMMAND.
Function list
Function
Screen
Painter
Menu
Painter
Type
ABBR
OKCODE:
Campo
ABBR
ABAP/4
Cancel
Screen
Painter
Field list
Field name
ABBRUCH
Fcode
ABBR
Type
Para poder utilizar un AT EXIT COMMAND en un botn de campo, ser necesario asignar el
valor E en el atributo de campo FctType del editor de pantallas o en las funciones del Men
Painter.
En el mdulo que llamamos incluiremos las instrucciones necesarias para poder salir de la
transaccin o de la pantalla en proceso. Por ejemplo: LEAVE TO SCREEN 0.
Pg: 34
Programacin en Dilogo
5. Men Painter
5.1. DISEO DE MENS (Men Painter).
5.1.1.
Introduccin
Development object
Edit
Goto
....
GUI title
SET TITLE BAR <codigo>.
SY-TITLE: Texto del ttulo
ENTER
F1 Help
F2 Choose
F3 .
.
.
Barra de ttulo
Barra de men
Barra herramientas estndar
Barra de herramientas aplicacin
GUI status
SET PF-STATUS <status>.
SY-PFKEY: Status
Con el Menu Painter disearemos las superficies GUI, (Grafical User Interface), sobre las que
corrern las transacciones SAP.
Una GUI contiene todos los mens, teclas de funcin, pushbuttons, etc disponibles para el
usuario, durante la ejecucin de una transaccin.
Podremos indicar el status que utilizaremos en una pantalla o el titulo en un mdulo PBO de la
pantalla con las instrucciones:
SET PF-STATUS <cod_status>.
SET TITLEBAR <cod_ttulo>.
Indicaremos las diferentes interfaces GUI de una transaccin mediante los status. Una
transaccin tendr muchos status diferentes. No ser necesario redefinir todos los objetos de
los status, ya que muchos objetos definidos en un status podrn ser utilizados en otro. Por
ejemplo es posible crear una barra de mens igual para toda una transaccin.
Para iniciar el Men Painter, puedes usar cualquiera de los siguientes caminos:
Seleccionando: Tools -> ABAP/4 Workbench -> Desarrollo -> 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 <status> dando doble clic y/o presionar F2.
Pg: 35
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).
5.1.2.
Taclas de Funcin.
Pg: 36
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.
5.1.3.
Los Pushbuttons.
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.
5.1.4.
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: 38
Programacin en Dilogo
5.1.5.
5.1.5.1.
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.
5.1.5.2.
FastPaths.
5.1.6.
Ttulos de Menu.
5.1.7.
Pg: 39
Programacin en Dilogo
5.1.8.
Pg: 40
Programacin en Dilogo
6. Actualizacin Asncrona
6.1. Concepto de transaccin.
6.1.1.
UPDATE
INSERT
cdigo
retorno
Sistema BD
Punto de
sincronizacin
cdigo
retorno
BD commit
o
BD rollback
cdigo
retorno
Orden
delete
Orden
insert
Orden
update
Tabla 1
COMMIT /
ROLLBACK
DELETE
Tabla 2
BD update
Punto de
sincronizacin
Tabla 3
BD insert
BD commit
o
BD rollback
BD delete
BD
BD
BD
BD
Estado 1
Sin realizar
cambios
Sin realizar
cambios
Sin realizar
cambios
BD
Estado 2
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.
6.1.2.
Transaccin SAP.
Pg: 41
Programacin en Dilogo
6.1.3.
PAI
PBO
UPDATE
PBO
PAI
PAI
INSERT
DELETE
Sistema BD
BD commit
BD commit
BD
update
BD commit
BD
insert
BD
delete
6.1.4.
PAI
PBO
marca
UPDATE
PAI
marca
marca
INSERT
INSERT
PBO
PAI
marca
DELETE
log table
marca UPDATE
marca INSERT
marca DELETE
COMMIT WORK
Proceso de actualizacin
UPDATE
INSERT
DELETE
INSERT
DELETE
Sistema BD
Proceso de Base de Datos
estado 1
UPDATE
estado 2
Pg: 42
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.
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.
log table
marca update
Dilogo
inicia actualizacin
Actualizacin
COMMIT o ROLLBACK
6
borra registro log/
log error
Base de Datos
4
cambia
respuestas
Pg: 43
Programacin en Dilogo
6.2.1.
Actualizacin
* INCLUDE MTCF1I101.
. . .
CALL FUNCTION 'TRAIN410_UPD_SFLIGHT'
IN UPDATE TASK
TABLES
TAB = UPDATE_TAB.
. . .
COMMIT WORK.
FUNCTION TRAIN410_UPD_SFLIGHT.
. . .
UPDATE SFLIGHT FROM TABLE TAB.
. . .
ENDFUNCTION.
6.2.2.
Administracin
Function group
Update with immediate start (V1)
Immediate start, no restart (V1)
Update with delayed start (V2)
Interfase
Import parameter
Reference
Proposal
Table parameter
Programacin en Dilogo
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.
6.2.3.
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.
6.2.4.
Programa
de dialogo
PROGRAM . . .
MODULE <read ok-code>.
. . .
CASE <ok-code>.
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.
Pg: 45
Programacin en Dilogo
6.2.5.
FUNCTION-POOL
. . .
. . .
FUNCTION . . .
. . .
UPDATE . . .
IF SY-SUBRC NE 0.
MESSAGE Annn
ENDIF.
INSERT . . .
IF SY-SUBRC NE 0.
MESSAGE Annn
ENDIF.
. . .
ENDFUNCTION.
. . .
. . .
6.2.6.
PERFORM
F1
COMMIT
ON COMMIT
WORK
PERFORM
F2
ON COMMIT
ejecutar
PERFORM
F3
ON COMMIT
Tabla interna
marca
F1
F2
F3
Programacin en Dilogo
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.
. . .
FORM F1.
CALL FUNCTION 'UPDATE_LFA1'.
IN UPDATE TASK
EXPORTING . . .
. . .
ENDFORM.
FORM F2.
CALL FUNCTION 'UPDATE_LFB1'.
IN UPDATE TASK
EXPORTING . . .
. . .
ENDFORM.
Pg: 47
Programacin en Dilogo
Flight no.
LH0470
Passenger
Miller
Flight no.
LH0470
Flight no.
Passenger
LH0470
LH0470
LH0470
LH0470
Smith
Balfour
Hansen
Book
Flight no.
LH0470
Passenger
Meyer
Book
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.
7.1.1.
COMMIT
(implcito)
COMMIT
WORK
(explcito)
COMMIT
(implcito)
UPDATE
INSERT
SELECT
FOR UPD
INSERT
Sistem a BD
Bloqueos
Pg: 48
Programacin en Dilogo
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.
7.1.2.
Transaccin SAP 2
liberado
liberado
bloqueo
colocado
colocado
bloqueo
Lock table
Dilogo 2
bloqueo
liberado
no colocado
bloqueo
Transaccin SAP A
colocado
Transaccin SAP B
objeto bloqueo 3
objeto bloqueo 1
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.
Programacin en Dilogo
7.1.3.
Name
ESFLIGHT
Primary table
SFLIGHT
Diccionario
ABAP/4
Argumentos
de Blqueo
Secondary tables
Table
SFLIGHT
Field name
MANDT
Lock argument
MANDT
SFLIGHT
CARRID
CARRID
SFLIGHT
CONNID
CONNID
SFLIGHT
FLDATE
FLDATE
Table
SFLIGHT
Modo de
Blqueo
Mode
E
Consiste de una tabla primaria, pero tambin se pueden agregar otras tablas secundarias
para usar llaves forneas dependientes.
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.
7.1.4.
Activar
Mdulo de Funcin
Mdulo de Funcin
ENQUEUE_ESFLIGHT
DEQUEUE_ESFLIGHT
Pg: 50
Programacin en Dilogo
7.1.5.
correctamente
Lock table
borra la entrada
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.
7.1.6.
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
X
X
Table
SFLIGHT
SFLIGHT
LFB1
LFC1
YLFA
YLFA
YLFB1
Lock argument
LH470
UA250
0074712 0815
0074712 08151994
LIEF1
LIEF1
00764715
Pg: 51
Programacin en Dilogo
Para desplegar la tabla de bloqueos, elija Tools -> Administration -> Lock entries
(Transaccin SM12).
7.1.7.
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.
Pg: 52
Programacin en Dilogo
Introduccin
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.
8.1.2.
Programacin en Dilogo
8.1.3.
SCREEN-NAME
SCREEN-GROUP1
SCREEN-GROUP2
SCREEN-GROUP3
SCREEN-GROUP4
Field name
Modification
Modification
Modification
Modification
SCREEN-REQUIRED
Required field
SCREEN-INPUT
Input field
SCREEN-OUTPUT
Output field
SCREEN-INTENSIFIED
Highlighted field
SCREEN-INVISIBLE
Invisible field
SCREEN-LENGTH
Field length
SCREEN-ACTIVE
Active field
SCREEN-DISPLAY_3D
3-dimensional field
SCREEN-VALUE_HELP
SCREEN-REQUEST
group1
group2
group3
group4
Gr1
SPFLI_ITAB-CONNID
SPFLI_ITAB-CITYFROM
SPFLI_ITAB-CITYTO
...
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.
8.1.4.
Programa
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
SCREEN-INVISIBLE =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: 55
Programacin en Dilogo
9. Tablas de Control
9.1. Caractersticas del Control de Tabla
Seleccionar
Seleccionar yy
mover
mover columna(s)
columna(s)
Modificar
Modificar ancho
ancho columna
columna
Depart from
Connection to
Almacenar
Almacenar
caractersticas
caractersticas
Depart Arrive
Seleccionar
Seleccionar
linea(s)
linea(s)
Fijar
Fijar columnas
columnas
Barras
Barras de
de desplazamiento
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.
Pg: 56
Programacin en Dilogo
Llenado.
Base de tados
Tabla interna
(memoria)
Tabla de
Base de Datos
Control de tabla
1
2
3
4
1
2
3
4
5
6
7
8
9
.
.
.
Pgina
siguiente
5
6
7
8
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 Painter
Pantalla 1
PBO
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: 57
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.
9.2.2.
Attributes
Attributes
Dict./prog.fields
Dict./prog.fields
Field
Field list
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.
9.2.3.
Programacin en Dilogo
Screen Painter
Editor de Pantallas en modo Alfanumrico
Edicin
Crear elemento
Control de tabla
9.2.4.
Inicializar atriutos
Continuar
Pg: 59
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.
9.2.5.
Screen
ABAP/4
MODULE 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 <ctrl>.
El sistema calcula <ctrl>-TOP_LINE cuando el usuario desplaza scrolls con la scroll bar,
pero no hace lo mismo para desplazar una pgina. T tienes que programarlo.
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.
Pg: 60
Programacin en Dilogo
Sin embargo, este procesamiento se debe ejecutar solo si los cambios han sido hechos a
la lnea de la tabla de control.
Opcin 2: Leer la tabla interna en el Module
Pool, los campos del diccionario
sobre la pantalla
Screen
Painter
PROCESS BEFORE OUTPUT.
LOOP WITH CONTROL FLIGHTS.
MODULE SFLIGHT_ITAB_READ.
ABAP/4
MODULE 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.
ENDLOOP.
ABAP/4
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.
Tambin debes determinar el nmero de lneas para desplazamiento vertical como punto
conveniente. <ctrl>-LINES = nmero de entradas.
9.2.6.
Modificacin
Screen
Painter
MODULE CTRL_MODIFY_1.
LOOP ...
MODULE MODIFY_SCREEN.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP ...
...
ENDLOOP.
MODULE CTRL_MODIFY_2.
Cambia
Cambiaatributos
atributos
de
delas
lasentradas
entradasde
de
control
controlde
detabla
tabla
Cambia
Cambiaatributos
atributos
de
decampos
camposen
enel
el
control
controlde
detabla
tabla
temporalmente
temporalmente
Cambia
Cambiaatributos
atributos
de
delas
lasentradas
entradasde
de
control
controlde
detabla
tabla
Pg: 61
Programacin en Dilogo
Puedes cambiar los atributos de la tabla de control por los contenidos de campos.
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
FIELD FIXED_COLS
MODULE CHANGE_TABLE_CONTROL ON REQUEST.
2
MODULE MODIFY_SCREEN OUTPUT.
CHECK SPFLI_ITAB-FLAG = X.
ABAP/4
DATA 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.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = SEL.
SCREEN-INTENSIFIED = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
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.
9.2.7.
Control de pginas
Para esto (en PAI), necesitas conocer el nmero actual de lneas en la tabla de control.
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
Pg: 62
Programacin en Dilogo
MODULE USER_COMMAND_0200.
Pg: 63
Programacin en Dilogo
9.2.8.
Sintaxis
Sintaxis
GET
GET CURSOR
CURSOR
FIELD
FIELD
VALUE
VALUE
LINE
LINE
OFFSET
OFFSET
ff
vv
ll
o.
o.
SET
SET CURSOR
CURSOR
FIELD
FIELD
VALUE
VALUE
LINE
LINE
OFFSET
OFFSET
ff
vv
ll
o.
o.
ABAP/4
DATA: 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.
El parmetro LINE en la instruccin GET o SET se refiere a el campo de sistema SYSTEPL, 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:
Pg: 64
Programacin en Dilogo
DIALOGO
PANTALLA 100
LISTA
Funcin A
Funcin A
SIGUIENTE
PANTALLA 200
modal
dialog box
PANTALLA
Vuelo no.
Fecha
LISTA NIVEL 0
VENTANA LISTA
LISTA NIVEL 1
2
Regresa al
procesamiento
de lista
Funcin
1
CALL SCREEN
Puede ser pantalla
completa o caja de
dilogo
LISTA NIVEL 2
F3
F3
1
Se extientiende a
procesamiento de
list
Regresa al
prosesamiento
de dilogo
Del procesamiento de lista, puedes activar una secuencia de pantallas. Estas pantallas
pueden ser mostradas como ventanas modales o como pantallas completas.
10.1.1.
En el procesamiento de lista, hay un nmero de eventos interactivos que puedes usar para
responder a funciones ejecutadas por el usuario. La ms importante de estas son AT LINESELECTION y AT USER-COMMAND. El cdigo funcin llamado por el usuario es
almacenado en el campo de sistema SY-UCOMM.
Puedes usar la instruccin CALL SCREEN para llamar pantallas como cuadros de dilogo
o fullscreen de la lista.
Pg: 65
Programacin en Dilogo
LISTA
Funcin A
Funcin B
1
modal
dialog box
2
DIALOGO
PANTALLA
10.1.2.
PANTALLA 100
PANTALLA 300
*
*
F3
LISTA
REPORT ...
REPORT
TABLES: SPFLI, SFLIGHT.
GET SPFLI.
...
GET SFLIGHT.
...
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN DETL.
CALL SCREEN 100
STARTING AT 30 05
ENDING
AT 50 15.
...
:
MODULE OK-CODE_0100 INPUT.
CASE SAVE_OK_CODE.
WHEN BACK.
LEAVE TO SCREEN 0.
:
ENDCASE.
ENDMOSULE.
F3
PROGRAM
...
...
MODULE LISTDYNPRO INPUT.
LEAVE TO LIST-PROCESSING.
* LEAVE TO LIST-PROCESSING
* AND RETURN TO SCREEN 300.
SET PF-STATUS SPACE.
SELECT * FROM SPFLI.
...
WRITE: / SPFLI-CARRID,
SPFLI-CONNID,
SPFLI-CITYFROM,
SPFLI-CITYTO.
ENDSELECT.
ENDMODULE.
TOP-OF-PAGE.
WRITE: / TEXT-001.
ULINE.
AT USER-COMMAND.
...
Pg: 66
Programacin en Dilogo
Antes de que la lista sea mostrada, todos los mdulos PAI de la pantalla actual son
procesados.
Usa la instruccin SET PF-STATUS SPACE para colocar el estatus de lista estndar.
10.1.3.
PANTALLA 100
Pantalla 200
LISTA
Screen
Painter
Pantalla 100
ABAP/4
MODULE M INPUT.
.
.
.
CALL SCREEN 200
STARTING AT 20 10
ENDING
AT 50 15.
.
.
.
ENDMODULE.
Pantalla 200
ABAP/4
Si quieres desplegar una lista en un cuadro de dilogo en una pantalla, debes llamar una
pantalla, pero puedes eliminar el dialogo con la instruccin SUPPRESS DIALOG en PBO.
10.1.4.
Llamado a un reporte
Si especificas AND RETURN, regresas al lugar donde el reporte fue llamado cuando ste
ha finalizado.
Pg: 67
Programacin en Dilogo
Llamando un reporte, puedes usar bases de datos lgicas para el proceso ledo.
SUBMIT RCCC071
...
AND RETURN.
...
Llamada
Llamada
reporte
reporte
LISTA
F3
SUBMIT RCCC071
...
VIA SELECTION-SCREEN
AND RETURN.
...
SUBMIT RCCC071
... .
...
Pantalla de
seleccin
LISTA
F3
F3
LISTA
F3
10.1.5.
Declaracin "SUBMIT"
SUBMIT <> VIA SELECTION SCREEN AND RETURN
WITH <parameter> <relational operador> <value> SIGN <s>
WITH <parameter> BETWEEN VALUE1 AND <value2> SIGN <s>
WITH <parameter> NOT BETWEEN VALUE1 AND <value2> SIGN <s>
WITH <select-option> IN <selection table>
... .
RANGES
SUBMIT
WITH
WITH
WITH
RSCCC071
CARRID
CONNID
FLDATE
AND
EQ
EQ
IN
RETURN
SFLIGHT-CARRID
SFLIGHT-CONNID
SEL_TAB.
Si quieres pasar a la pantalla de seleccin (default) cuando se llama un reporte y pasa los
valores, hay un nmero de opciones diferentes que puedes usar, dependiendo de las
opciones de seleccin que requieres.
10.1.6.
De la misma forma que existan dos mtodos para cambiar las pantallas de una
transaccin, existen dos formas para llamar a otra transaccin independiente de la
transaccin que se est ejecutando.
Pg: 68
Programacin en Dilogo
Un caso tpico es querer ejecutar una transaccin pero evitando introducir los parmetros
de entrada de esta manualmente (es decir, saltando la primera pantalla). En este caso
usaremos la instruccin:
CALL TRANSACTION cod_trans AND SKIP FIRST SCREEN.
10.1.7.
Memoria ABAP/4
MYID
IT_SPFLI
SPFLI
PROGRAM P1 ... .
...
DATA: P1_SPFLI LIKE SPFLI,
IT_SPFLI LIKE SPFLI
OCCURS 0.
...
EXPORT
SPFLI FROM P1_SPFLI
IT_SPFLI
TO MEMORY ID MYID.
PROGRAM P2 ... .
...
DATA: P2_SPFLI LIKE SPFLI,
IT_SPFLI LIKE SPFLI
OCCURS 0.
...
IMPORT
SPFLI INTO P2_SPFLI
IT_SPFLI
FROM MEMORY ID MYID.
Para transferir datos entre diferentes programas (reportes o programas de dilogo), usa la
memoria SAP y la memoria ABAP/4.
Pg: 69
Programacin en Dilogo
Puedes usar la memoria ABAP/4 para transferir variables ABAP/4 (campos, cadenas de
campos, tablas internas, objetos complejos) entre internal modi.
Cada modo external tiene su propia memoria ABAP/4. Cuando el usuario termina un
modo external (introduciendo / I en el comando campo), la memoria asociada ABAP/4 es
liberada.
Usa EXPORT TO MEMORY para copiar variables ABAP/4 con sus valores actuales (como
un dato almacenado) a memoria ABAP/4. Para identificar diferentes datos almacenados,
usa la adicin ID (mximo 32 caracteres). EXPORT TO MEMORY sobre escribe datos
almacenados que ya existen.
Usa la instruccin IMPORT FROM MEMORY para tomar datos de memoria ABAP/4.
Pg: 70
Programacin en Dilogo
Documentacin
Texto campo
Valores de entrada
F4
11.1.1.
F1
Campo de tabla
Elemento de datos
Campo de tabla
Dominio
Tabla de valores
Valores fijos
Documentacin
elemento de datos
Ayuda
F4
Psibles
entradas
Campo de
pantalla
Objeto Matchcode
Llave fornea
Vista de ayuda
Matchcode
El sistema SAP R/3 provee ayuda al usuario (F1, F4) como funcionalidad estndar. La
base de este es la informacin almacenada en el Diccionario de ABAP/4 el cual sirve como
documentacin del sistema actual para todas las aplicaciones.
Pg: 71
Programacin en Dilogo
Si hay una relacin con un objeto de matchcode (en Screen Painter, un atributo de
campo), el matchcode manejado es activado cuando el usuario llamas Possible entries.
11.1.2.
son desplegados
Programadas
Campo de tabla
F1
Ayuda
Screen
Painter
PROCESS ON HELP-REQUEST
Campo local
modulos de funcin especiales
Campo de tabla
F4
Psibles
entrdas
ABAP/4
Screen
Painter
PROCESS ON VALUE-REQUEST
Campo local
modulos de funcin especiales
ABAP/4
- variable
texto ayuda
- suplemento
elemento
datos
variable
formato
valor
Para hacer esto puedes usar los eventos PROCESS ON HELP-REQUEST y PROCESS
ON VALUE-REQUEST.
11.1.3.
Cuando el usuario presiona F4 para ayuda de valores de entrada, solo los campos claves
de la tabla check son mostrados.
Pg: 72
Programacin en Dilogo
Si quieres incluir otros campos de la tabla check en el display, debes definir una help view
para la tabla check.
Si la ayuda existe para una tabla, es automticamente usado en conexin con F4 para el
es mostrada.
11.1.4.
Primero, defines la vista de la tabla y asignas la tabla primaria. Puedes incluir tablas
secundarias en la vista, pero esto es posible solo para las tablas las cuales son
relacionadas a la tabla primaria mediante la dependencia de una llave fornea.
Puedes usar cada tabla del diccionario como una tabla primaria por un help view.
En un paso, haces una seleccin de campo de todas las tablas asignadas (tablas primaria
y secundaria).
Pg: 73
Programacin en Dilogo
11.1.5.
Bsqueda "MATCHCODE"
Para un objeto matchcode, estos pueden tomar varios valores (matchcode IDs).
En base de la restriccin, el sistema genera una lista resultado de la cual el usuario puede
seleccionar una clave.
Pg: 74
Programacin en Dilogo
Primero, asignas una tabla primaria. Puedes entonces incluir tablas secundarias en la
vista, pero esto es posible solo para esas tablas que estn relacionadas a la tabla primaria
va la dependencia de la llave fornea.
Pg: 75
Programacin en Dilogo
Una lista de tablas para almacenar datos matchcode es necesario solo en casos
excepcionales (para ciertos tipos de matchcode Ids). Como regla, debes usar views con
objetos matchcode. Entonces, una lista de tabla no es requerida en la base de datos.
11.1.5.2. Seleccin de campos
Cuando has asignado las tablas relevantes para un objeto matchcode, elige los campos.
Para hacer esto, defines el nivel de objeto el conjunto bsico de campos que se pueden
usar definiendo matchcode IDs.
Debes sealar uno de esos campos como un campo de bsqueda - usualmente, este es
el campo clave de una tabla primaria. Despus de una bsqueda matchcode, Los
contenidos de este campo estn colocados en el campo de pantalla asignado en tiempo
de ejecucin.
Si es posible, usa tipo I actual (vistas: datos no redundantes!). En este caso, el sistema
genera una vista (de acuerdo a la seleccin de campo de ID especifico ). Esta vista
automticamente es creada en la base de datos cuando el matchcode es activado.
Pg: 76
Programacin en Dilogo
Pg: 77
Programacin en Dilogo
Ahora puedes elegir campos de nivel matchcode ID. Para hacer esto, defines esos
campos que estas usando como criterio de bsqueda para este matchcode ID.
Aqu, puedes referirte a esos campos que han sido seleccionados con el objeto
matchcode. Este normalmente incluira el campo marcado como nivel de objeto de
bsqueda del campo, as que este campo puede ser sealado como no visible y usado
como un criterio de bsqueda.
Para campos que tienen un parmetro ID asignado a ellos, puedes activar el parmetro
SET/GET funcionando.
11.1.6.
1
1.1
1.2
2
Scren
Paimter
PROCESS ON HELP-REQUEST.
FIELD campo WITH 0001.
FIELD campo WITH variable.
FIELD campo MODULE X WITH variable.
FIELD campo MODULE Y.
...
PROCESS ON VALUE-REQUEST.
FIELD ... MODULE Z.
MODULE modulo.
...
ENDMODULE.
ABAP/4
Programacin en Dilogo
Hay varias formas en que puede direccionar el elemento de dato para suplementar la
documentacin (ver la informacin de PROCESS en la pantalla de flujo lgico). Puedes
definir suplementos a la documentacin de elemento de datos tambin en el diccionario
de ABAP/4 o en la lista de campo del Screen Painter.
- Mostrando la variable de texto de help (1.2):
En elABAP/4 module pool, puedes llamar mdulos de funciones
documentacin de elementos de datos.
que muestren la
11.1.7.
funcin interfase
PAI
PAI
transportacin
transportacin
automtica
automticade
decampos
campos
F1
F4
POH
POH
POV
POV
transportacin
transportacinno
no
automtica
automticade
decampos
campos
Cuando el usuario presiona F1 F4, el POH o POV tambin es procesado. No hay campo
transportado automticamente de una pantalla a un mdulo pool.
Pg: 79
Programacin en Dilogo
11.1.8.
Modulos de funciones
11.1.9.
Los parmetros DYNAME y DYNUMB te permiten determinar la pantalla que quieres leer, o
a la que quieres escribir valores.
Para la tabla de parmetro DYNPFIELDS, necesitas una tabla interna con estructura
DYNPREAD del diccionario de ABAP/4. En esta tabla, especificas los nombres de los
campos de pantalla relevante.
Pg: 80
Programacin en Dilogo
11.1.10.
11.1.11.
de campo de
Por cada mdulo de funcin DYNP_VALUES_UPDATE, listas los nombres de los campos
de pantalla que quieres transportar a los campos de pantalla relevantes en la primera
columna de t tabla interna DYNPFIELDS (con pasos de campos de ciclo o campos de
tabla de control, tambin das un ciclo ndice en la segunda columna ). En la tercer
columna introduces los valores.
Despus de procesar con el mdulo de funcin, los valores son transportados a los
campos de pantalla.
11.1.12.
CALL
FUNCTION HELP_VALUES_GET_EXTEND
EXPORTING
DYNAME
DYNUM
FIELDNAME
INPUT_VALUE
=
=
=
=
TABNAME
SHRINK
=
=
Program name
Screen number
Field name
Input value to restric selection
condition
Name of a table
Value restriction yes/no
Importing
RETURNCODE
Return code:
TABLES
...
GETFIELDS
UPDFIELDS
...
0 = OK
4 = Nothing found
Pg: 81
Programacin en Dilogo
Pasas el campo de pantalla que has definido por referencia de un campo de tabla del
Diccionario a el parmetro FIELDNAME; y el nombre de la tabla del campo de pantalla a el
parmetro TABNAME.
Usas el parmetro TABLES GETFIELDS para especificar los nombres de esos campos de
pantalla whose valores actuales have to be taken into account on data selection (por ejem.
este contenido de campos de pantalla son ledos por el programa de pantalla para ejecutar
un transporte de campo de la pantalla).
La tabla de parmetros GETFIELDS y UPDFIELDS ambos necesitan una tabla interna con
la estructura DYNPFLD.
Pg: 82
Programacin en Dilogo
ANEXO 1
ABAP EDITOR
Se pueden especificar los comandos del editor en cualquiera de las formas siguientes:
-
Pg: 83
Programacin en Dilogo
COMMANDOS DE CABECERA.
A(TTACH) n
B(OTTOM)
Ir al final.
T(OPE)
Ir al principio.
Siguiente pgina.
FIND c
Pgina Anterior.
Si la cadena contiene blancos o caracteres especiales, se
debern acotar entre caracteres especiales no contenidos en la
cadena a localizar.
Ejemplo: FIND / - /
El comando no distingue entre maysculas y minsculas.
N(EXT)
R(EPLACE) c1 c2
F(ETCH) prog
S(AVE)
RES(TORE)
RES(TORE) AKTIV
SAVEAS prog
U(PDATE)
CHECK
PCF(ETCH)
PC(DOWN)
HELP word
I(NSERT) n
Programacin en Dilogo
IC word
IC FUNCTION func
IC SELECT tab
IC
PP
RENUM(VER)
Renumera lneas.
SHOW tab
SHOW FUNCTION
func
Pg: 85
Programacin en Dilogo
COMANDOS DE LINEA:
*
T+
Ir a la primera lnea
B-
Ir a la ltima lnea
>
<
CCCC
In
Inserta n lneas.
Borra la lnea.
DD...DD
Repite la lnea.
Rn
RRRR
SHSH
WW
WW
Programacin en Dilogo
XXXX
YYYY
Ver XX.
Ver Y
ZZZZ
Ver XX.
Ver X.
CLEAR
PRPR
Pg: 87