dlver sintaxis lenguaje abap

Upload: angelmoisescarballobasto

Post on 13-Oct-2015

14 views

Category:

Documents


0 download

DESCRIPTION

sintaxis abap

TRANSCRIPT

Sintaxis en ABAP

Sintaxis en ABAP

La sintaxis en ABAP consta de los siguientes elementos:

1.- Generalidades

1.1.- Sentencias

Un programa en ABAP no es ms que un conjunto de sentencias ABAP interrelacionadas entre s. Cada sentencia comienza con una palabra clave y termina con un punto.PROGRAM FIRST_PROGRAM.

WRITE Mi primer programa.

Este ejemplo contiene dos sentencias, una por lnea. Las palabras clave son PROGRAM y WRITE. El programa en cuestin presenta una lista por pantalla, que consiste en la lnea Mi primer programa.

Las palabras clave determinan la categora de la sentencia. El siguiente diagrama muestra la estructura de una sentencia ABAP. El siguiente diagrama muestra la estructura de una sentencia ABAP:

1.2.- Formateo de sentencias ABAP

ABAP no tiene restricciones en lo que a la forma de disponer las sentencias se refiere, de modo que escribir:PROGRAM TEST.WRITE Esto es una sentencia.

es lo mismo que escribir:PROGRAM TEST. WRITE Esto es una sentencia.

o lo mismo que:

PROGRAM TEST.WRITE Esto es una sentencia.

Por tanto, la forma de escribir las sentencias se deja a decisin del propio programador, que deber guiarse por la inteligibilidad de sus programas.

1.3.- Un caso especial: literales

Los literales son secuencias de caracteres alfanumricos dentro del cdigo de programa que estn encerradas entre comillas simples. Si un literal se extiende ms all de una lnea, podemos encontrarnos con las siguientes dificultades: Todos los espacios habidos entre ambas comillas se interpretan como parte del literal.

Letras en literales dentro de una lnea que no est temrinada en comillas simples se interpretan como maysculas por el editor ABAP.

Para paliar el problema de escribir literales que abarquen ms de una lnea, ABAP nos brinda el carcter &, para concatenar varias cadenas de caracteres. Por ejemplo:

PROGRAM TEST.WRITE 'Esto es una sentencia.

inserta todos los espacios entre las comillas simples como literales, y convierte las letras a maysculas. Por tanto, lo que hemos de hacer es lo siguiente:PROGRAM TEST.WRITE 'This' & ' is ' &'a statement'.

con lo que conseguimos combinar los tres literales en uno slo.1.4.- Sentencias encadenadas

ABAP nos permite concatenar sentencias consecutivas con idnticas primeras partes dentro de una sentencia encadenada.

Para ello, hemos de escribir la parte comn de las sentencias slo una vez, escribir dos puntos y poner las partes de las sentencias diferencias separadas por comas. Por ejemplo:

WRITE SPFLI-CITYFROM.WRITE SPFLI-CITYTO.WRITE SPFLI-AIRPTO.Podemos escribirlo de esta otra forma:

WRITE: SPFLI-CITYFROM, SPFLI-CITYTO, SPFLI-AIRPTO.

Aqu podemos ver otro ejemplo:

SUM = SUM + 1.

SUM = SUM + 2.

SUM = SUM + 3.

SUM = SUM + 4.

Chain statement:

SUM = SUM + : 1, 2, 3, 4.

1.5.- Comentarios

Los comentarios son textos que se escriben al objeto de ilustrar mejor al lector el propsito y funcionamiento de nuestro programa.

Para insertar lneas enteras de comentarios en nuestro programa, habremos de precederlas de un asterisco (*). Si lo que queremos es insertar un comentario en cualquier lugar de una lnea de cdigo habremos de precederlo con dobles comillas ().

* Comienzo de la seleccin

START-OF-SELECTION.

i_tab-nombre = p_nombre." Entrada de nombre

i_tab-direccion = p_direcc.

i_tab-telefono = p_telef.

i_tab-dni = p_dni.

2.- Estructura de un programa en ABAP

En general, podramos seguir el siguiente esquema a la hora de escribir un programa en ABAP:

Sentencia REPORT (slo si se trata de un programa ON LINE).

Declaracin de las tablas del diccionario que vayamos a usar.

Declaracin de las tablas internas.

Declaracin de variables.

Especificacin de las pantallas de seleccin.

Declaracin de eventos.

Subrutinas.

2.1.- Sentencia REPORT

REPORT es la primera sentencia en un programa, y sirve para especificar al sistema que se trata de un listado on line.Esta sentencia tiene las siguientes opciones:

NO STANDARD PAGE HEADING ( Suprime la salida de la cabecera estndar de pgina. De esta forma, visualizaremos los ttulos o cabeceras que hayamos creado. LINE-SIZE ( Nmero de columnas contenidos en una lnea.

LINE-COUNT ( Nmero de filas contenidas en una lnea.

DEFINING DATABASE ( Aqu especificaremos el nombre de la base de datos lgica a la que pertenece nuestro programa, si procede.

MESSAGE xx ( Este parmetro define la clase de mensaje estndar para el programa principal; xx es el nmero de la librera donde podemos encontrar los mensajes. RESERVE n LINES ( Si no hay espacio suficiente en la actual pgina para al menos n lneas, el programa comienza una nueva pgina para el listado de dichas lneas. El parmetro n puede ser bien una constante o una variable. PAGE-COUNT ( Aqu especificaremos el nmero mximo de pginas por listado.2.2.- Declaracin de tablas del diccionarioEn esta parte del programa es donde le especificamos al sistema qu tablas del diccionario vamos a usar. Para ello, debemos usar la sentencia TABLES. Ejemplo:TABLES: spfli, mara.2.3.- Declaracin de tablas internas

Por definicin, una tabla interna bien puede ser un tipo de dato o un objeto de dato, por lo que la implementacin en ABAP bien podra ser de esta forma:

DATA: BEGIN OF OCCURS ,

{,..., | INCLUDE STRUCTURE },

END OF .

O bien de estas otras:

1. TYPES itabtype {TYPE tabkind OF linetype

LIKE tabkind OF lineobj}

[WITH [UNIQUE NON-UNIQUE] keydef] [INITIAL SIZE n].

2. TYPES itabtype TYPE RANGE OF type.

TYPES itabtype LIKE RANGE OF f.

3. TYPES itabtype {TYPE linetype LIKE lineobj} OCCURS n.Dependiendo de si la definimos como un objeto de dato o un tipo de dato, respectivamente.

En la definicin de la tabla interna, hemos de tener en cuenta que adems se establece una lnea de cabecera o rea de trabajo.

2.4.- Declaracin de variables

Para la declaracin de variables en nuestro programa habremos de usar la sentencia DATA. Para ello, podemos definirlas de tres formas diferentes: Directamente, mediante la sentencia TYPE (ver epgrafe 3). En concreto, ABAP distingue entre los siguientes tipos de variable:

TipoDescripcinLongitudValor inicial

CCarcter1Espacio en blanco

NTexto Numrico100 0

DFecha YYYYMMDD800000000

THora HHMMSS6000000

XByte (hexadecimal)1X00

IEntero40

PNmero empaquetado80

FNmero en coma flotante80.0

Asignando tipo y atributos del campo de una tabla del diccionario a la variable que queramos declarar:

DATA: Variable LIKE tabla_dicc-nom_campo.

Y finalmente, declarndola con la estructura de otra:DATA: variable1 LIKE variable2.

De esta manera, variable1 hereda la estructura de variable2.

Anlogamente, podemos hacer lo mismo con una tabla:

DATA: i_table LIKE spfli.2.5.- Especificacin de las pantallas de seleccinEn ABAP, reciben el nombre de pantallas de seleccin aquellas en las que el usuario introduce datos de entrada, que sern empleados posteriormente por el sistema para generar una salida.

Dentro de una pantalla de seleccin, podemos estructurar la informacin a introducir por el usuario en bloques diferenciados, que reciben el mismo nombre dentro de ABAP.En general, y para hacernos una mejor idea, ste sera el aspecto de una pantalla de seleccin corriente:

En un programa ABAP, podemos implementar tantas pantallas de seleccin como queramos.La sintaxis para especificar una pantalla de seleccin sera la siguiente:

SELECTION-SCREEN BEGIN OF BLOCK nom-bloque WITH FRAME TITLE nom-titulo.

INSTRUCCIONES

SELECTION-SCREEN END OF BLOCK nom-bloque.

Esto generara una pantalla de seleccin con un nico bloque de entrada de datos.No obstante, tambin es posible generar varias pantallas de seleccin para un mismo programa mediante las sentencias:SELECTION-SCREEN BEGIN OF SCREEN scr.

INSTRUCCIONES.

SELECTION-SCREEN END OF SCREEN scr.Como es lgico, dentro de las screen creadas se pueden ir definiendo los bloques que queramos para el ingreso de datos.Veamos el siguiente ejemplo:

TABLES: SPFLI.

SELECT-OPTIONS SEL0 FOR SY-TABIX. PARAMETERS PAR0(5).

SELECTION-SCREEN BEGIN OF SCREEN 123 AS WINDOW TITLE TEXT-456. SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1 NO INTERVALS. SELECT-OPTIONS SEL1 FOR SY-SUBRC. PARAMETERS PAR1 LIKE SPFLI-CARRID. SELECTION-SCREEN COMMENT /10(20) TEXT-COM. SELECTION-SCREEN END OF BLOCK BL1. SELECTION-SCREEN END OF SCREEN 123.

SELECTION-SCREEN ULINE.

SELECTION-SCREEN BEGIN OF SCREEN 99. SELECTION-SCREEN PUSHBUTTON 15(25) PUBU USER-COMMAND US01. SELECT-OPTIONS SEL2 FOR SPFLI-CONNID. PARAMETERS PAR2 TYPE I. SELECTION-SCREEN END OF SCREEN 99. Adicionalmente, la sentencia SELECTION-SCREEN contiene un par de parmetros interesantes para la salida formateada de datos:

ULINE ( Intercala en la salida una lnea horizontal.

SKIP n ( El programa da un salto de n lneas para imprimir la siguiente.As mismo, disponemos de las siguientes herramientas para pedir informacin a travs de la pantalla de seleccin:

2.5.1.- PARAMETERSEsta sentencia sirve para intercalar un campo de entrada de datos en la pantalla de seleccin. Su sintaxis es la siguiente:

( PARAMETERS: variable LIKE campo-tabla-dicc.( Idem variable(longitud) TYPE opciones-campo.( Idem variable AS CHECKBOX DEFAULT X.( Idem variable RADIOBUTTON opciones-resto.En las dos primeras, se tratara de definir la clase de variable que va a contener el dato ingresado por el usuario, bien por la sentencia TYPE o por LIKE, como a continuacin se explicar.

Las dos ltimas sirven para definir las variables de entrada como checkbox o radiobuttons, elementos tambin muy importantes en la estructuracin de cualquier pantalla de seleccin.

Las opciones de campo posibles son las siguientes:

OBLIGATORY ( Fuerza al usuario a introducir un valor para ese campo de entrada.

LOWER CASE ( Convierte la cadena de caracteres introducida a minscula.

MATCHCODE OBJECT nombre_matchcode ( Esta sentencia asocia un matchcode creado a la variable de entrada.

GROUP n ( Este parmetro se usa con los radiobutton, agrupndolos funcionalmente.

MODIF ID group ( Esta clusula indica que el objeto puede modificarse, debiendo ste estar previamente incluido en un grupo.2.5.2.- SELECT-OPTIONS

Esta clusula nos permite trabajar con una serie de valores prefijados de antemano y comprendidos dentro de un rango, que podrn ser seleccionados dentro de la pantalla de seleccin. Su sintaxis es la siguiente:SELECT-OPTION nombre_seleccin FOR CAMPO_1

Por lo tanto, campo_1 va a contener todas las posibles entradas.

As mismo, disponemos de una clusula adicional denominada DEFAULT para proponer valores nicos o intervalos:

DEFAULT XXX TO YYY. DAFAULT ZZZ.

2.6.- Declaracin de eventos

En ABAP, los eventos pueden ser de dos tipos:

Sncronos ( Que suceden con cierta periodicidad.

Asncronos ( Que pueden suceder en cualquier momento.

As mismo, podemos distinguir entre los siguientes eventos:

INITIALIZATON: En este evento, todas las variables de nuestro programa se inicializan.

START-OF-SELECTION: este es un evento que se utiliza para la seleccin de datos de tablas o ficheros, o para la carga de los mismos.

END-OF-SELECTION: este evento provoca la finalizacin de la seleccin de datos, bien sea desde fichero o desde una base de datos lgica.

TOP-OF-PAGE: este evento se ejecuta justo antes de que el primer dato salga por pantalla. Suele utilizarse conjuntamente con la sentencia NO STANDARD PAGE HEADING para el formateo de ttulos.

As mismo, si aadimos la instruccin DURING LINE SELECTION, se ejecutar slo en los listados secundarios provenientes de una accin del usuario en el Report.

END-OF-PAGE: este evento se lanza al trmino de la pgina actual.

AT LINE-SELECTION: que se lanza tras la seleccin por parte del usuario de una lnea cualquiera dentro del listado en un REPORT.

AT USER-COMMAND: este evento se lanza cuando el usuario selecciona una tecla de funcin o ingresa un algn valor en la ventana de comandos.

AT SELECTION-SCREEN: este evento se lanza justo despus de haber sido procesada la pantalla de seleccin, en el PAI. Merece la pena destacar, entre sus adiciones, la de ON VALUE-REQUEST FOR campo; esto lanza un proceso en la pantalla de seleccin que provoca la presentacin al usuario de todos los valores posibles que el campo de la variable a la que referencia permite ingresar.2.7.- Subrutinas

Una subrutina no es ms que un trozo de cdigo ligado al resto, pero diferenciado del mismo por razones de funcionalidad. En otros lenguajes de programacin puede recibir el nombre de procedimiento.

Para la creacin de subrutinas, debemos usar la siguiente instruccin:

PERFORM nom-subrutina.Al hacer doble click sobre la instruccin, el editor nos pregunta si queremos crear dicha subrutina. Contestamos que s, y despus nos da la opcin de crearla, bien en el propio cuerpo del cdigo del programa principal, o bien en un include aparte.En cualquier caso, al margen de lo que hayamos escogido, ABAP genera solo el cdigo correspondiente de la siguiente manera:

*----------------------------------------------------------------------*

***INCLUDE ZPRUEBA .

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Form PRUEBA

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

*