INDRA Curso ABAP 1
INDRA Curso ABAP 1
INDRA Curso ABAP 1
INDICE
ndice
P rogramming
/
4
A dvanced
B usiness
A pplication
ndice
Documentacin On-line
Entorno ABAP/4
VER <tabla>
Datos
Tablas
Programa
AYUDA <sentencia>
Tipos de programa
Reports
Modulpool
Procesos de actualizacin on-line
Estructura de un Programa
Declaracin de datos
Seleccin de datos
Definicin de pantalla
10
11
INITIALIZATION.
START OF SELECTION.
END OF SELECTION.
TOP-OF-PAGE.
END-OF-PAGE.
AT LINE-SELECTION.
AT PFxx.
AT USER-COMMAND.
Eventos
12
13
14
15
16
ndice
17
Diccionario de Datos
Datos de material en la Base de datos
tornillo
taladro
martillo
Cantidad
1,100.00
300.00
10.0
0
Precio
1.00
200.00
5.00
Character
Character
Numeric
Numeric
tamao
18
30
7.2
6.
2
*** ***
18
Tabla
utiliza
Elemento
Elementode
deDatos
Datos
utiliza
campo
Dominio
19
Tabla
...
Campo n
Campo 2
Change document
Memory ID
Domain name
Key words
Heading
Formato
Tabla de verificacin
Tamao
Conjunto de valores . . .
...
Campo
Elemento de datos
Dominio
20
Tipos de tablas
21
22
Tipos
Longitud por
defecto
Posible longitud
Valor inicial
Descripcin
1-32000
ESPACIOS
Texto
0.0E+00
Punto flotante
Entero
1-32000
0000
Texto numrico
1-16
Nmero
Empaquetado
1-29870
x00
Hexadecimal
00000000
Fecha YYYYMMDD
000000
Hora HHMMSS
Tipos de datos
23
24
25
26
27
28
29
Declaracin de Variables
Una variable
30
Declaracin de datos
DATA:
COUNTER
TYPE I,
COUNTER2
TYPE COUNTER,
TEXTO(30)
VALUE Sueo tengo oyes,
START_DATE TYPE D,
SUM1(5)
TYPE P.
31
32
Estructuras de datos
Estructura
ADDRESS
NAME
FIRST NAME
PLACE
STREET
PLACE
STREET
ADDRESS_LIST
Cabecera
NAME
FIRST NAME
Tablas internas
33
REPORT
B170D081.
DATA:
AMOUNT ( 5) TYPE P,
BEGIN OF ADDRESS OCCURS 5,
FLAG TYPE C,
ID
LIKE TABNA-ID,
NAME LIKE TABNA-NAME1,
CITY
LIKE TABNA-CITY,
AMOUNT1 LIKE AMOUNT,
END OF ADDRESS.
MOVE X TO ADDRESS-FLAG.
ADD AMOUNT TO ADDRESS-AMOUNT1.
WRITE: ADDRESS-FLAG, ADDRESS-ID, ADDRESS-AMOUNT1.
34
ndice
35
36
Lneas horizontales
Campos de salida (Informacin)
Pulsadores
Lneas en blanco
37
Creacin de TabScrips
(pestaas)
Pulsadores (dentro de la barra
de pulsadores)
Creacin de bloques
38
Opciones de pantalla
Opciones de valor
Opciones de tipo
39
Opciones de valor
Opciones de pantalla
40
Si marcamos la casilla
Referencia el texto del campo
de seleccin se recoger
automticamente del elemento de
datos asignado al campo.
41
AT SELECTION-SCREEN ON KD_BUKRS.
MESSAGE E . . . .
AT SELECTION-SCREEN ON COUNTRY.
MESSAGE E . . . .
42
Smbolos de texto
REPORT B170D037.
WRITE : TEXT-001, 10 SY-DATUM...,
Time(002), 10 SY-UZEIT....
Smbolos texto
No
001
002
Texto
Lenguaje E
Date
Time
Date
Time
31.01.1192
13:25:07
Elementos texto
43
PARAMETERS
BLOQUES
CAMPO DE SALIDA
CHECKBOX
RADIOBUTTON
SELECT-OPTIONS
44
45
INITIALIZATION
46
AT SELECTION-SCREEN OUTPUT
El evento AT SELECTION-SCREEN OUTPUT se procesa
justo antes de aparecer la pantalla de seleccin
(posterior al evento INITIALIZATION), y se reprocesa
cada vez que aparece la pantalla de seleccin.
Consideracin: La pantalla de seleccin se llama a s
misma hasta que pulsemos
. Por tanto, este evento
se ejecutar cada vez que vuelva a aparecer la pantalla
de seleccin.
Se usa principalmente para la creacin de pantallas de
seleccin dinmicas. Usando loop at screen podremos
hacer desaparecer campos, hacerlos obligatorios, etc
en tiempo de ejecucin.
47
AT SELECTION-SCREEN [INPUT]
El evento AT SELECTION-SCREEN INPUT se procesa
justo cuando el usuario actua sobre la pantalla de
seleccin (pulsando enter, ejecutando, etc), igual que
ocurre con el evento anterior se reprocesa con cada
ejecucin de la pantalla de seleccin.
Su uso principal es la validacin de los campos
introducidos en la pantalla de seleccin. Es smamente
importante validar los campos, ya que procesar el report
con valores incorrectos no solo nos hace perder el
tiempo sino que tambin podra ocasionar resultados
inesperados.
48
START-OF-SELECTION
El evento START-OF-SELECTION se procesa
secuencialmente despus de pulsar ejecutar en la
pantalla de seleccin. En este evento se procesa todo el
cuerpo principal de programa.
Como su nombre indica su principal finalidad es la de
seleccionar y guardar (en datos/tablas internos) los
datos que posteriormente usaremos para el resultado
del programa (listado, batchinput, etc). La cada en
desuso del evento END-OF-SELECTION le proporciona a
este evento todo el peso del cuerpo del programa.
49
END-OF-SELECTION
El evento END-OF-SELECTION se procesa
secuencialmente despus de finalizar el START-OFSELECTION. En l se debera procesar la informacin
seleccionada en el evento anterior para realizar el
resultado esperado.
Este evento ha cado en desuso principalmente por no
ofrecer una dinmica especial a la ejecucin del
programa.
50
REPORT
B170D045.
DATA:
NAME1(25),
SORT_NAME(10),
FIRST_LINE(4)
NEXT_LINE
TYPE N,
TYPE I.
Sentencias / Comandos
Asignacin de valores
51
WRITE XYZ.
WRITE NAME.
WRITE COUNTER.
ADD 1 TO COUNTER1.
ADD 1 TO COUNTER2.
ADD 1 TO COUNTER3.
ADD 1 TO : COUNTER1,
COUNTER2,
COUNTER3.
Sentencias / Comandos
Agrupar instrucciones
52
*
*
Nueva Cuenta
Inicializa el campo de totales
CLEAR SUM.
53
PROGRAM
B170D046.
DATA:
COUNTER TYPE I,
AMOUNT TYPE P VALUE 1000,
SUM
TYPE P,
RESULT TYPE P,
NUMBER(2)
TYPE C VALUE 99,
ROOT
TYPE F.
COMPUTE:
COUNTER = COUNTER + 2,
RESULT = AMOUNT * COUNTER.
SUM = RESULT + NUMBER - COUNTER.
RESULT = COUNTER * ( AMOUNT + NUMBER ).
ROOT = SQRT( NUMBER + COUNTER ).
Operadores
Funciones
+ - / * DIV MOD
SQRT EXP LOG SIN COS STRLEN
Sentencias / Comandos
Expresiones aritmticas
54
B170D047.
TYPE P,
TYPE D,
TYPE D.
DATE_1 = SY-DATUM.
DATE_2 = SY-DATUM.
* Primer da del mes
DATE_2 + 6(2) = 01.
*ltimo da del mes anterior
DATE_2 = DATE_2 - 1.
* Diferencia entre fechas
DIFF = DATE_1 - DATE_2.
Sentencias / Comandos
Clculos con fechas
55
REPORT B170D031.
WRITE : *************************************.
SKIP 1.
WRITE : Date, SY-DATUM.
WRITE : Time, SY-UZEIT.
SKIP 2.
WRITE : *************************************.
31.01.1992
--------------------------------------------------------------------------------------------------------------------------------**************************************************************************************************
Date
31.01.1992 Time
14:46:10
**************************************************************************************************
Sentencias / Comandos
Instruccin Write
56
Sentencias / Comandos
Especificar formatos
57
Sentencias / Comandos
Instrucciones de control
58
Sentencia IF
IF <expresin lgica>.
sentencias
ENDIF.
sentencias
ELSE.
sentencias
ENDIF.
IF < expresin lgica >.
sentencias
ELSEIF < expresin lgica >.
sentencias
ELSE.
sentencias
ENDIF.
59
Operadores relacionales
Representacin
=
NE
<>
GT
>
GE
>=
LT
<
LE
<=
Igual a
><
Distinto de
Mayor que
=>
=<
BETWEEN f1 AND f2
IS INITIAL
Es un valor inicial
EQ
Significado
60
Comparacin de caracteres
<f1> CO <f2>
ACCOUNT CO 0123456789_
contiene alguno: f1 contiene al menos
un carcter de f2.
<f1> CS <f2>
ABCDE CS DE
<f1> CP <f2>
ABXDE CP *B+D*
<f1> CA <f2>
61
Expresiones lgicas
COUNTER GE 0
COUNTER GT 0 AND
FLAG IS INITIAL
62
La instruccin ON CHANGE OF
ON CHANGE OF <campo>.
TABNA
COUNTRY
PROGRAM
TABLES:
NAME1
Smith
Jones
Young
B170D071.
TABNA.
Tabla:
63
Sentencia CASE
CASE COUNTRY.
WHEN D.
WHEN GB.
WHEN OTHERS.
ENDCASE.
WHEN USA.
64
Bucle DO
DO <n> TIMES.
ENDDO.
SY-INDEX
sentencias
65
Bucle WHILE
WHILE <expresin lgica>.
sentencias
SY-INDEX
ENDWHILE.
66
Sentencia CHECK
CHECK <expresin lgica>.
WHILE COUNTER GT 0.
sentencias
CHECK FLAG NE SPACE.
sentencias
ENDWHILE.
2. CHECK fuera de un bucle.
sentencias
CHECK <condicin>.
sentencias
67
Sentencia EXIT
EXIT.
1. EXIT dentro de un bucle.
sentencias
IF COUNTER GE 100.
EXIT.
ENDIF.
sentencias
ENDDO.
2. EXIT fuera de un bucle.
sentencias
IF . . . .
EXIT.
ENDIF.
sentencias
DO.
68
ndice
69
70
PARMETROS IMPORT:
Son los valores de entrada a la funcin, pueden ser o no
opcionales (en caso de serlo se le propondr un valor por
defecto).
71
PARMETROS EXPORT:
Son los valores de salida (respuesta) de la funcin.
72
73
PARMETROS TABLES:
Son parmetros de entrada y salida de tablas. El uso de
parmetros tables est cayendo en desuso debido a la mayor
coherencia de usar parmetros import/export de tipo tabla. Sin
embargo, continua su uso por compatibilidad de programas
antiguos.
74
EXCEPTIONS:
Las excepciones son los errores que devuelve la funcin.
Dentro de la funcin mediante la sentencia RAISE se devuelve
una excepcin que se traduce en un sy-subrc distinto a 0 en el
programa de llamada.
75
76
ndice
77
SUBRUTINAS FORMs
Una rutina form es un modo de modularizacin y
encapsulamiento de cdigo muy til en el desarrollo de
un programa. La principal diferencia con los mdulos de
funcin es que su finalidad no es la creacin de
bibliotecas sino ordenar y simplificar el cdigo de un
programa.
La sentencia form define una subrutina y la sentencia
perform realiza la llamada a la misma. Igual que los
mdulos de funcin las subrutinas usan parmetros de
llamada y devuelta, que hacen posible la reutilizacin de
cdigo.
Tambin son usadas las subrutinas con fines de
ordenacin del cdigo. Por ejemplo, dentro del evento
start-of-selection podramos encontrarnos nicamente
la llamada a subrutinas rutina_seleccin,
rutina_proceso, rutina_log_del_proceso.
78
SENTENCIA FORM
Mediante la sentencia form implementaremos una subrutina en
ABAP. La sintaxis de la sentencia es:
79
SENTENCIA PERFORM
Mediante la sentencia perform realizamos una llamada a una
subrutina en ABAP. La sintaxis de la sentencia es:
80
ndice
81
82
Sentencia Select
Diccionario
Definicin
Base de
Datos
Datos
List
Listado
SELECT . . .
83
84
Sentencia SELECT
Sentencias
ENDSELECT.
IF SY-SUBRC NE 0.
Sentencias
ENDIF.
REPORT
B170D062.
TABLES:
TABNA.
SELECT * FROM TABNA
WHERE COUNTRY = USA.
85
IF SY-SUBRC = 0.
WRITE: TABNA-COUNTRY, TABNA-ID,
TABNA-NAME1.
ENDIF.
86
REPORT B170D142.
TABLES: TABNA.
87
Sintaxis: Select
SELECT * FROM <table>
WHERE <campo tabla 1> < operador relacional > < campo 1>
AND
<campo tabla 2> < operador relacional > < campo 2>
<campo tabla n> < operador relacional > < campo n>
ENDSELECT.
<operador relacional>:
EQ
GE
LE
=
>=
<=
NE
GT
LT
<>
>
<
=>
=<
><
AND
88
REPORT B170D143.
TABLES: T001.
89
Ejemplo:Instruccin LIKE
REPORT B170D143.
TABLES: T001.
90
REPORT
DATA:
B170D081.
AMOUNT(5) TYPE P,
BEGIN OF ADDRESS,
FLAG TYPE C,
ID
LIKE TABNA-ID,
NAME LIKE TABNA-NAME1,
CITY
LIKE TABNA-CITY,
AMOUNT1 LIKE AMOUNT,
END OF ADDRESS.
MOVE X TO ADDRESS-FLAG.
ADD AMOUNT TO ADDRESS-AMOUNT1.
WRITE: ADDRESS-FLAG, ADDRESS-ID,
ADDRESS-AMOUNT1.
91
TYPE C,
LIKE TABNA-ID,
LIKE TABNA-NAME1,
LIKE TABNA-CITY,
CLEAR ADDRESS.
MOVE-CORRESPONDING TABNA TO ADDRESS.
TABNA
ID
NAME1
CITY
X
ADDRESS
FLAG
ID
NAME
CITY
REPORT B170D082.
TABLES: TABNA.
DATA:
BEGIN OF ADDRESS,
FLAG
ID
NAME
CITY
. . . ,
END OF ADDRESS.
92
93
94
95
96
97
DESARROLLO DE REPORTS
98
Pas
D
USA
GB
D
GB
A
Ventas
400,000
1,000,000
500,000
7,800,000
50,000
140,000
Lnea de cabecera
1
2
3
APPEND <tabla> SORTED BY <campo>.
4
5
Pas
Ventas
6
D
400,000
Lnea de cabecera
7
1
D
7,800,000
2
USA
1,000,000
3
GB
500,000
4
A
140,000
5
GB
50,000
6
7
APPEND <tabla>.
99
REPORT B170D084.
SELECT * FROM TABNA.
MOVE-CORRESPONDING TABNA TO TAB.
APPEND TAB SORTED BY SALES.
ENDSELECT.
TABNA-COUNTRY,
TABNA-ID,
TABNA-SALES,
REPORT B170D083.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
LIKE
ID
LIKE
SALES
LIKE
END OF TAB.
SELECT * FROM TABNA.
MOVE-CORRESPONDING TABNA TO TAB.
APPEND TAB.
ENDSELECT.
100
Pas
D
USA
GB
D
Ventas (Tipo P)
400,000
Lnea de cabecera
1
1,000,000
2
500,000
3
8,200,000
7,800,000
4
5
REPORT B170D085.
6
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 10,
7
COLLECT <tabla>.
101
TABNA-COUNTRY,
TABNA-ID,
TABNA-NAME1,
TABNA-SALES,
* Una vez que la tabla est llena, se ordena segn el orden de las columnas
SORT TAB.
* O se ordena por unas columnas determinadas:
SORT TAB BY COUNTRY NAME1.
* O se ordena en orden Ascendente o Descendente:
SORT TAB BY COUNTRY
ASCENDING
NAME1
DESCENDING.
102
REPORT B170D087.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
CITY
NAME1
SALES
END OF TAB.
LIKE
LIKE
LIKE
LIKE
TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,
LOOP AT TAB.
WRITE: / SY-TABIX, TAB-COUNTRY, TAB-CITY, . . . .
ENDLOOP.
LOOP AT TAB WHERE COUNTRY BETWEEN A AND D.
WRITE: /TAB-COUNTRY, TAB-CITY, . . . .
ENDLOOP.
SY-TABIX
103
REPORT B180D06B.
TABLES: TABNA.
DATA: BEGIN OF TAB OCCURS 200.
INCLUDE STRUCTURE TABNA.
DATA: END OF TAB.
* atencin al aadido para un INCLUDE.
SELECT * FROM TABNA INTO TABLE TAB
WHERE COUNTRY = USA.
LOOP AT TAB.
WRITE: /TAB-COUNTRY,
TAB-ID,
TAB-NAME1.
END LOOP.
104
REPORT B170D08A.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
CITY
NAME1
SALES
END OF TAB.
. . . .
AT
ATFIRST.
FIRST.
LIKE
LIKE
LIKE
LIKE
TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,
ENDAT.
ENDAT.
AT
NEW
<campo>.
AT NEW <campo>. SUM
SUM. . . . . .
ENDAT.
ENDAT.
AT
END
OF
<campo>.
AT END OF <campo>. SUM
SUM. . . . . .
ENDAT.
ENDAT.
AT
LAST.
SUM.
AT LAST.
SUM. . . . .
ENDAT.
ENDAT.
ENDAT.
WRITE: / TAB-CITY, TAB-NAME1, TAB-SALES.
AT END OF CITY.
ULINE. /(3). SKIP.
ENDAT.
AT END OF COUNTRY.
SUM.
WRITE: / TAB-COUNTRY, TAB-SALES UNDER TAB-SALES.
ENDAT.
ENDLOOP.
SUM
SUM . . . . . .
Control Breaks
105
LIKE
LIKE
LIKE
LIKE
TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,
CLEAR TAB.
MOVE D TO TAB-COUNTRY.
MOVE ABC TO TAB-NAME1.
READ TABLE TAB.
IF SY-SUBRC NE 0.
READ TABLE TAB WITH KEY D Berlin.
READ TABLE TAB WITH KEY USA BINARY SEARCH.
TAB_INDEX = SY-TABIX + 1.
READ TABLE TAB INDEX TAB_INDEX.
IF SY-SUBRC = 0.
REPORT B170D08D.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
CITY
NAME1
SALES
END OF TAB.
TAB_INDEX TYPE I.
. . . .
106
REPORT B170D08E.
TABLES: TABNA.
DATA: BEGIN OF TAB OCCURS 5,
COUNTRY
LIKE
TABNA-COUNTRY,
CITY
LIKE
TABNA-CITY,
NAME1 LIKE
TABNA-NAME1,
SALES LIKE
TABNA-SALES,
END OF TAB.
. . . .
READ TABLE TAB INDEX 1.
MOVE ABC TO TAB-NAME1.
MODIFY TAB INDEX SY-TABIX.
IF SY-SUBRC NE 0, . . . ENDIF.
INSERT TAB INDEX 1.
DELETE TAB INDEX TAB_INDEX.
IF SY-SUBRC NE 0. . . . ENDIF.
INSERT <tabla>
MODIFY <tabla>
DELETE <tabla>
107
B170D08H.
LOOP AT <tabla>.
MODIFY
<tabla>.
DELETE
<tabla>.
ENDLOOP.
INSERT <tabla>.
108
La tabla no se modifica.
REFRESH <tabla>.
109
REPORT
B170D08F.
TABLES:
TABNA.
DATA: BEGIN OF TAB OCCURS 5,
COUNTRY
LIKE
CITY
LIKE
NAME1
LIKE
SALES
LIKE
END OF TAB.
LINE_COUNT TYPE I.
OCCURS_COUNT TYPE I.
TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,
Contiene num. lneas
Contiene num. ln. reserv.
110
DESARROLLO DE REPORTS
Subrutinas
111
Introduccin a Subrutinas
PROGRAM RSDEM001
Calculate Tax
PROGRAM RSDEM002
Llamada a calculate_tax
Calculate Tax
Subrutina
Calculate_tax
Llamada a calculate_tax
112
1
a2
a1
a3
Llamada a calculate_tax
Transferir valores de los campos a1 a2
Obtener el valor del campo a3
Parmetros Actuales
a1
1
Parmetros formales
a2
a3
Paso de parmetros
1
f1
f2
99
2
f3
subrutina calculate_tax
f1
f2
f3
f3 = f1 + f2...........
99
113
DESARROLLO DE REPORTS
Diseo de listados
114
Formato de Pgina
REPORT B190D033
LINE-SIZE
LINE-COUNT
PAGE-COUNT
132
65(2)
20.
132
1
2
3 ... MAX. DE 20 PAGINAS
65
REPORT <nombre>
LINE-SIZE <n>.
LINE-COUNT <m(p)>
PAGE-COUNT <o>.
115
Opciones de edicin
B190D032.
WRITE: BSIK-BELNR,
BSIK-BLDAT DD/MM/YYYY,
BSIK-DMBTR CURRENCY LOCAL,
SY-WAERS,
BSIK-WRBTR CURRENCY SY-WAERS NO-ZERO.
REPORT
116
SY-PAGCT
SY-PAGNO
SY-LINCT
Nmero de lneas
SY-LINNO
SY-LINSZ
Tamao de lnea
SY-COLNO
SY-SROWS
Lneas en pantalla
SY-COLS
Columnas en pantalla
SY-TITLE
117
NEW-LINE.
POSITION <n>.
NEW-PAGE.
SKIP <n>.
118
DESARROLLO DE REPORTS
Tratamiento de ficheros
119
Lectura de ficheros
FOR INPUT
IN BINARY MODE
IN TEXT MODE
120
Escritura de ficheros
FOR OUTPUT
FOR APPENDING
IN BINARY MODE
IN TEXT MODE
LENGTH <longitud>
121
ndice
122
123
124
125
126
127
Transacciones
Modulpools
Dynpros
Lgica
de proceso
Status
de superficie
Funciones
Transacciones
Mens
de ambito
Modulos
129
Transacciones - II
PBO
STATUS de
SUPERFICIE
PAI
Lgica de proceso
130
Transacciones - III
Lgica de proceso
STATUS 001
PBO
Program
a
Titulos
Teclas de funciones
PAI
131
Modulpool
Un Modul Pool es un programa interactivo que contiene ms de una pantalla de interaccin o contiene elementos complejos
del tipo tablas y pestaas o incluso que su disposicin no cumple las normas de los parameters y los select-options. Adems
estos programas constan de una flow-logic diferente al tradicional.
Un Modul Pool se basa en la antigua tcnica de los pantallazos, es decir, se ejecuta un cdigo antes de mostrar la pantalla, se
muestra la pantalla y por ltimo cuando el usuario ha acabado con la pantalla (ha pulsado una tecla de funcin) el control se
devuelve otra vez al programa. Esto sigue hasta un bucle infinito, hasta que se le diga a la pantalla que no se muestre mas.
Esto procresos pre-post-pantalla se conocen con el nombre de PBO (Process Before Output) y PAI (Process After Input).
Estos dos procesos son la lgica de las pantallas. Ya se ver que cuando se cree el Flow-Logic de la pantalla nos los crea
automticamente. Para ello SAP utiliza las sentencias process, el process acaba cuando comienza otro process. Adems
dentro de estas sentencias no se puede escribir ABAP estandar, sino que tienen que utilizarse otro sublenguaje (mismo
ABAP) que slo va a ser utilizado aqui.
Como en los process slo estn pensados para controlar la lgica de las pantallas, slo utilizaremos directivas de pantallas,
tales como:
FIELD, nos permite acceder a un campo.
CHAIN, agrupador.
MODULE, llama a un grupo de funciones.
Estas son las directivas fciles, ya veremos que para poder utilizar subscreens utilizaremos directivas del tipo
CALL SUBSCREEN o tambin, para poder utilizar las tables control utilizaremos los LOOP.
En definitiva, en los Modul Pool se utiliza un pseudo-cdigo asociado a sus pantallas y que luego se convertir en ABAP
puro y su funcionamiento es mediante dos procesos, un pre-pantalla, donde tendremos la opcin de rellenar los campos de
pantalla y un post-pantalla donde seremos capaz de leer los datos que el usuario ha llenado.
132
Process
Sentencia de evento que indica el inicio del proceso PBO. Sentencia de evento que indica el inicio del proceso PAI.
Sentencia de evento que marca el inicio del proceso donde se definen las ayudas no estndar de campos. Sentencia de evento
que marca el inicio del proceso donde se definen los posibles valores para un campo.
Sintaxis:
PROCESS BEFORE OUTPUT.
El proceso PBO se suele utilizar para iniciar los campo de la pantalla, posicionar el cursor, mostrar o esconder campo o
cambiar los atributos de los campos dinmicamente.
PROCESS AFTER INPUT.
El proceso PAI se suele utilizar para validar las entradas realizadas por el usuario, procesar la posicin del cursor o procesar
las funciones activadas.
PROCESS ON HELP-RESQUEST.
Este evento se procesa si el usuario pulsa la tecla F1 estando el cursor sobre algn campo de la pantalla. Si el evento se
define el campo en cuestin (sentencia FIELD), la ayuda que aparece ser la programa en la transaccin.
PROCESS ON HELP-RESQUEST.
Este evento se procesa si el usuario pulsa la tecla F4 estando el cursor sobre algn campo de la pantalla. Si el evento se
define el campo en cuestin (sentencia FIELD), la ayuda que aparece ser la programa en la transaccin.
PROCESS
Definicin
133
Una funcin de SAP es como una API de windows, puede considerarse como un trozo de cdigo fuente
independiente que se llama para realizar ciertas tares y obtener un resultado con ella. Un ejemplo claro puede
ser el que tenemos en pantalla, convertir una moneda que tenemos en una tabla a moneda local, de esta forma
en nuestro cdigo no hace falta volver a picar este cdigo, simplemente se hace una llamada a la funcin y
obtenemos el resultado.
Una funcin consta de cuatro partes, que en verdad son cinco.
Un Grupo de Funciones: Es aquel que nos agrupa todas las funciones de un mismo tipo, por ejemplo,
todas las conversiones de monedas, temperaturas, pesos, podrian estar agrupadas en un grupo conocido
como "UNIDADES".
Interface, no es ms que una forma rpida de crear la funcin y de definir todos los parmetros que va
a utilizar, tanto de entrada como de salida, as como las excepciones de error.
El Texto fuente como su nombre indica es la codificacin propia en ABAP.
Cuando se crea un grupo de funciones o se aade una funcin al grupo hay algo que siempre tienen en
comn, que son los datos globales, en dichos datos definimos vas variables, tablas y estructuras
comunes para todas las funciones del grupo.
Y por ltimo, el programa principal es aquel que alberga a todas las llamadas de todas las funciones.
Una de las ventajas de las funciones es que se pueden "testear" sin tener que hacer un programa, ya que SAP
nos brinda la posibilidad de ello.
Funciones
134
Utilizacin *
Mdulo de funcin F1
Mdulo de funcin F2
Mdulo de funcin F3
Mdulo de funcin F4
Utilizacin F
Mdulo de funcin F6
Utilizacin P
Mdulo de funcin F8
Mdulos
Mdulosde
defunciones
funciones
135
136
REPORT RSDEM000.
....
DATA:
TEXT(20), HEAD(20).
Defecto
valor
-
137
Proceso de excepciones
ABAP/4 funcin STRING_SPLIT (Documentacin)
Texto corto
Parmetros
Significado
..........
..........
..........
FUNCTION STRING_SPLIT. . . .
IF . . .
RAISE NOT_FOUND.
ENDIF.
...
CALL FUNCTION STRING_SPLIT
EXPORTING
IMPORTINGHEAD
EXCEPTIONS
CASE SY-SUBRC.
WHEN 1 . . .
WHEN 2 . . .
WHEN 3 . . .
ENDCASE.
DELIMITER = -
STRING
= TEXT
= HEAD
TAIL
= TEXT2
NOT _FOUND
NOT_VALID = 2
OTHERS
= 1
= 3.
Excepciones
NOT_FOUND
NOT_VALID
TOO_LONG
138
ndice
139
Clases de mensajes
Clases de mensajes
Las clases de mensajes (transaccin SE91) son una
herramienta de SAP que nos permite el mantenimiento de
mensajes en SAP. Estos mensajes son traducibles a distintos
idiomas.
La generacin de clases de mensajes es el modo ptimo de
mantener los mensajes de error, informacin, aviso, etc que
queramos ofrecer al usuario en nuestras transacciones.
Una clase de mensajes puede contener hasta 1000 mensajes,
con lo que son un agrupador de mensajes. Estos mensajes se
distinguen entre s por su ndice (numrico de 3 cifras), y son
usados en programas mediante la sentencia message. Adems
se le puede insertar un texto explicativo a un mensaje, este
texto libre puede insertar toda la informacin que queramos
ofrecer al usuario sobre dicho mensaje.
140
ndice
141
Ejemplos
Ejemplos de programas
SAP contiene todo un cmulo de ejemplos de programas, de
ergomona, de rendimiento y de control. Accesibles desde la
transaccin SE38-Entorno-Ejemplos, o bien, mediante
transacciones directas.
142
ndice
143
Gestin de versiones
Gestin de versiones
A diferencia de otras herramientas (y lenguajes) de
programacin, SAP viene incorporado con toda una gestin de
versiones para todos sus objetos, ya sean, programas, tablas,
clases, mdulos de funcin, etc.
Mediante la gestin de versiones podemos comparar versiones,
volver a versiones anteriores, etc. La gestin de versiones es
accesible desde cualquiera de las transacciones de
mantenimiento de programas (SE38), diccionario (SE11), etc en
el men de utilidades-versiones.
Esta herramienta nos previene de la prdida de versiones de
programas, y nos limita el trabajo de gestion en nuestros
proyectos.
144
ndice
145
146
147
148
149
Avda. de Bruselas 35
28108 Alcobendas,
Madrid Espaa
T +34 91 480 50 00
F +34 91 480 50 80
www.indra.es
150