Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1-16
Declaracin de datos
2-16
Leccin 1
Declaracin de variables
Declaramos una variable mediante la palabra clave DATA. Si queremos declarar
varias podemos usar DATA y enumerar las variables separadas por comas.
DATA f. (Donde f es la variable) Si no especificas tipo de referencia el sistema
crea la variable tipo C.
f
f
f
f
TYPE type.
LIKE f1.
TYPE LINE OF itabtype.
LIKE LINE OF itab.
I-> Entero.
N-> Numrico.
P-> Empaquetado.
F-> Coma flotante.
C-> Carcter.
D-> Fecha (AAAAMMDD).
T-> Hora (HHMMSS).
X-> Hexadecimal.
Declaracin de datos
3-16
El objeto TAB_WA ahora tiene los mismos atributos que una lnea de la tabla
tipo TAB_TYPE.
DATA f LIKE LINE OF itab.
El tipo del objeto itab debe ser una una tabla interna con o sin cabecera. El sistema
crea un objeto con el mismo tipo de lnea de la tabla especificada.
Ejemplo:
DATA TAB
Declaracin de datos
4-16
Leccin 2
Declaracin de estructuras
Para definir una estructura lo hacemos de la siguiente forma:
DATA: BEGIN OF struc,
...
END OF struc.
Cuando definimos el campo estructura struc todos los campos definidos entre
"BEGIN OF struc" y "END OF struc" forman parte de la estructura.
Si para tu estructura necesitas componentes de otra estructura predefinida, puedes
usar INCLUDE STRUCTURE para incluirla aunque es mejor usar LIKE.
Ejemplo:
DATA: BEGIN OF PERSON,
NAME(20),
AGE TYPE I,
END OF PERSON.
PERSON-AGE = 35.
DATA: BEGIN OF PERSON1,
NAME2(20) V.
INCLUDE STRUCTURE PERSON.
DATA END OF PERSON1.
Declaracin de datos
5-16
Leccin 3
Declaracin de tablas internas
Podemos declarar una tabla interna de diferentes formas:
DATA itab TYPE itabtype [WITH HEADER LINE].
DATA itab {TYPE tabkind OF linetype|LIKE tabkind OF lineobj}
WITH [UNIQUE|NON-UNIQUE] keydef [INITIAL SIZE n]
[WITH HEADER LINE].
DATA itab {TYPE TABLE OF linetype|LIKE TABLE OF lineobj}.
Es posible modificar tablas internas usando las siguientes instrucciones:
INSERT, APPEND, READ TABLE, LOOP, SORT.
Mediante OCCURS y INITIAL SIZE determinamos el nmero inicial de lneas para
la tabla. La tabla es ampliada por el sistema cuando es necesario.
Si se especifica WITH HEADER LINE, la tabla es creada con cabecera. De esta
forma un campo es creado con el mismo nombre de la tabla. Su tipo es el mismo
que el tipo de un registro de la tabla.
DATA itab TYPE itabtype [WITH HEADER LINE].
Itabtype debe ser un tipo de tabla interna definido mediante TYPES. El sistema
crea una tabla interna con el tipo especificado.
Ejemplo:
TYPES: BEGIN OF STRUC, NAME(10), AGE TYPE I, END OF STRUC,
HTAB TYPE HASHED TABLE OF STRUC WITH UNIQUE KEY NAME.
DATA : PERSONS TYPE HTAB.
DATA itab {TYPE tabkind OF linetype|LIKE tabkind OF lineobj}
WITH [UNIQUE|NON-UNIQUE] keydef [INITIAL SIZE n]
[WITH HEADER LINE].
El sistema crea una tabla interna del tipo tabla tabkind. No es posible usar los tipos
ANY TABLE or SORTED TABLE.
La construccin de las lneas de la tabla es definida por linetype (si usas TYPE) o
por el tipo del objeto lineobj (si usas LIKE)
Declaracin de datos
6-16
...INITIAL SIZE n
INITIAL SIZE especifica cuantas lineas van a ser creadas inicialmente. Si no es
definido, el valor inicial es 0.
... WITH HEADER LINE
WITH HEADER LINE crea una lnea de cabecera, es decir, un campo con el
mismo nombre que la tabla cuyo tipo corresponde con el tipo de las lneas de la
tabla.
Declaracin de datos
7-16
Leccin 4
Declaracin de constantes
Declaracin de datos
8-16
Leccin 5
Declaracin de tablas de diccionario
Declaramos una tabla de la siguiente forma:
TABLES dbtab.
Al declarar una tabla, se crea una estructura o rea de trabajo (work area) en el
programa para la tabla, vista o estructura dbtab con el mismo nombre. La
estructura de la tabla corresponde exactamente con una linea de la tabla dbtab.
Ejemplo:
TABLES spfli
SELECT * FROM spfli
WRITE: / spfli-carrid, spfli-connid
ENDSELECT.
Imagen: 13.5-1
Declaracin de datos
9-16
Leccin 6
Declaracin de tipos
Podemos declarar tipos de la siguiente forma:
TYPES type.
TYPES type TYPE type1.
TYPES type LIKE f.
TYPES type TYPE LINE OF itabtype.
TYPES type LIKE LINE OF itab.
TYPES: BEGIN OF structype,
...
END OF structype.
TYPES type.
Crea un nuevo tipo llamado type. Si no usas TYPE O LIKE el nuevo tipo es
declarado del tipo C por defecto.
El nombre de un tipo puede tener hasta 30 caracteres de longitud. El nombre puede
solo consistir en caracteres alfanumricos y tambin puede usarse el _.
Recomendaciones para los nombres de los tipos:
-
Declaracin de datos
10-16
Ejemplo
La siguiente declaracin define un tipo llamado num_ac del tipo entero.
TYPES num_ac TYPE i.
TYPES type LIKE type1.
Un nuevo tipo es definido con el mismo tipo que el campo f. F puede ser un campo
del diccionario de datos o un campo que ha sido declarado anteriormente.
Ejemplo:
TYPES date1 LIKE sy-datum.
El tipo date1 es del mismo tipo que el campo sy-datum (Campo del sistema que
contiene la fecha actual)
Trabajando de esta forma, si se cambia el tipo de datos al que haces referencia, el
tipo que defines se cambia automticamente. Es decir, si en el sistema se cambiase
el tipo de sy-datum, se cambiara automticamente en nuestro programa.
TYPES type LINE OF itabtype.
El tipo especificado itabtype debe referirse al tipo de una tabla interna (con o sin
cabecera). El sistema crea un tipo con la misma estructura que una lnea de la
tabla.
Ejemplo:
TYPES tab_type TYPE STANDARD TABLE OF I WITH NON-UNIQUE DEFAULT
KEY.
Declaracin de datos
11-16
El tipo my_type tiene los mismos atributos que una lnea de la tabla tab, es decir,
tipo entero.
TYPES: BEGIN OF structype,
...
END OF structype.
Define un tipo estructura donde todos los campos definidos entre
" BEGIN OF structype" y "END OF structype" son components de la estructura
tipo. Podemos hacer referencia a un componente de forma individual usando el
prefijo "structype-".
Ejemplo:
TYPES: BEGIN OF PERSON,
NAME(20) TYPE C,
AGE
TYPE I,
END OF PERSON.
Declaracin de datos
12-16
Leccin 7
Declaracin de tipos tabla
Podemos definir tipos tabla de la siguiente forma:
STANDAR TABLE:
La clave es siempre NON-UNIQUE por defecto.
SORTED TABLE:
Declaracin de datos
13-16
HASHED TABLE:
No hay propiedades por defecto en este tipo de tablas, sin embargo, debes
definir una UNIQUE clave. La opcin NON-UNIQUE no est permitida
TYPES itabtype
{TYPE RANGE OF type | TYPES itabtype LIKE RANGE OF f}.
De esta forma se crea un tipo tabla del tipo standard tabla. El tipo de la lnea es
una estructura de la siguiente forma:
Declaracin de datos
14-16
SIGN(1)
OPTION(2)
LOW
HIGH
TYPE C
TYPE C
TYPE type or LIKE f
TYPE type or LIKE f
Declaracin de datos
15-16
Leccin 8
Declaracin de Field-Symbol
Podemos declarar Field-symbol de la siguiente forma;
FIELD-SYMBOLS <fs>.
FIELD-SYMBOLS <fs> TYPE type.
FIELD-SYMBOLS <fs> TYPE LINE OF type.
FIELD-SYMBOLS <fs> LIKE s.
FIELD-SYMBOLS <fs> LIKE LINE OF s
Con esta instruccin podemos declarar campos simblicos <fs>. En tiempo de
ejecucin, es posible concretar el campo para el field-symbol usando ASSIGN.
Todas las operaciones realizadas con el field-symbol afectan directamente al campo
asignado a l.
Ejemplos:
FIELD-SYMBOLS <PT> TYPE ANY.
DATA SFLIGHT_WA TYPE SFLIGHT.
...
ASSIGN SFLIGHT_WA-PLANETYPE TO <PT>.
WRITE <PT>.
DATA SBOOK_WA LIKE SBOOK.
FIELD-SYMBOLS <SB> STRUCTURE SBOOK
DEFAULT SBOOK_WA.
...
WRITE: <SB>-BOOKID, <SB>-FLDATE.
Para asignar y desasignar un campo a un field symbol:
ASSIGN f TO <fs>.
UNASSIGN <fs>.
Asignamos un campo f a un field-symbol <fs>. El Fields-symbol apunta
directamente al contenido del campo f en tiempo de ejecucin, es decir, cualquier
cambio en el campo f es visible en <fs> y cualquier cambio en <fs> es visible en f.
Si no quieres especificar el tipo para el field-symbol <fs>, este hereda el tipo y los
atributos del campo f en tiempo de ejecucin. En caso contrario, el sistema checkea
si f y <fs> son compatibles en tiempo de ejecucin.
Declaracin de datos
16-16