sábado, 15 de noviembre de 2014

Introducción ABAP. Definición de datos

Voy a comenzar a publicar varios post sobre los conceptos básicos del lenguaje de programación de SAP, ABAP.
El primer apartado lo vamos a dedicar a la definición de datos. El primer caso es conocer que tipos de datos nos proporciona el lenguaje. Os voy a presentar los tipos básicos que nos proporciona ABAP:

Variables

Las variables se definen por defecto de tipo carácter Texto con longitud 1.
  Ejemplo:   DATA  d_caracter.              (Vble de texto con long 1)
                   DATA  d_caracter(8).         (Vble de texto con long 8)
                   DATA: d_numero_car(5)    TYPE N,


                                d_numero               TYPE I,
                                d_fecha                   TYPE D.
                   DATA  d_contador             TYPE I VALUE 1.

 

Con la cláusula LIKE podemos declarar una variable con los mismos atributos de longitud y tipo que un campo del diccionario de datos o que otra variable definida anteriormente.
        Ejemplo:    DATA  d_dato  LIKE lfa1-lifnr.

Constantes

Las constantes se definen con la sentencia CONSTANTS:
        
CONSTANTS  <constante> (longitud) TYPE <tipo> VALUE <valor>.

Mismas reglas que para variables, excepto que siempre hay que inicializarlo y no puede ser modificado durante la ejecución.
     Ejemplo:  CONSTANTS  c_dato  LIKE lfa1-lifnr VALUE ‘JOSE’.

Estructuras

Una estructura es un conjunto de campos relacionados lógicamente y se define con DATA:
   DATA: BEGIN OF <estructura>


                ………………,
                END OF <estructura>.

 
   
  Ejemplo:   DATA: BEGIN OF   r_estructura


                                  Codigo LIKE lfa1-lifnr,
                                  Fecha   TYPE d,
                                END OF  r_estructura.

 
 
También se puede incluir en la definición de una estructura, la de una tabla del diccionario de datos o una estructura definida previamente en el programa utilizando la instrucción  INCLUDE ESTRUCTURE ......... .
        Ejemplo:  DATA  BEGIN OF  r_sociedades OCCURS 0.


                                       INCLUDE STRUCTURE T001.
                                       DATA: contador(20) TYPE N,
                                    END OF r_sociedades.

 
      
Para llamar a los campos de una estructura se especifica el nombre de la estructura y del campo, separados por guión.
     Ejemplo:        r_sociedades-nombre = ‘JOSE’.

Rangos

Los rangos son tablas internas con una estructura determinada que se utilizan para almacenar rangos de valores para un tipo de campo y se definen con RANGES:
            RANGES:   <rango> FOR  <campo>.

La estructura de un rango se compone de los siguientes campos:
-SIGN: Campo de tipo carácter de longitud 1, que indica si los valores especificados en el rango se incluyen (I) o se excluyen (E) del mismo.
 
-OPTION: Campo de tipo carácter de dos posiciones que indica el operador lógico que une los valores especificados en el rango. Los valores que puede tomar son:
  • EQ = equal
  • NE = not equal
  • GE = greater or equal
  • GT = greater than
  • LE = less or equal
  • LT = less than
  • CP = contains pattern
  • NP = not contains pattern
-LOW: Valor inicial del rango. Este campo tiene el mismo tipo que el campo al que hace referencia el rango.
 
-HIGH: Valor final del rango. Es del mismo tipo que el campo al que hace referencia el rango.

Los rangos se utilizan para chequear valores válidos en sentencias condicionales del campo en cuestión. Si el rango no tiene ningún registro, se asume que cualquier valor del campo es válido.
Ejemplo:    TABLES:  LFA1.


                   RANGES:  r_rango FOR lfa1-lifnr.
                   r_rango-sign    = ‘I’.
                   r_rango-option = ‘BT’.        (entre)
                   r_rango-low     = ‘1’.
                   r_rango-high    = ‘9’.
                   APPEND r_rango.

 

El rango creado hace referencia a los valores del campo lfa1-lifnr comprendidos entre el 1 y el 9, ambos inclusive por tener ‘I’.
  
Field-Symbols
 
Los Field-Symbols son campos simbólicos que se pueden referenciar a un campo concreto, en tiempo de ejecución del programa y se definen con FIELD-SYIBOLS:
        FIELD-SYMBOLS   <nombre>.                ¡¡Poner <........>!!

Utilizando ASSIGN se asigna un campo al field-symbol y a partir de entonces, las operaciones que se realicen sobre el field-symbol, hacen referencia al campo asignado.
 
Ejemplo: FIELD-SYMBOLS:  <campo>.


               DATA: d_contador1 TYPE i,
                            d_contador2 TYPE i.

 
               ASSIGN d_contador1 to <campo>.


               <campo>  =  <campo> + 1.
               ASSIGN d_contador2 to <campo>.
               <campo>  =  <campo> + 2.

 

Ahora   d_contador1 tiene el valor 1 y d_contador2 tiene el valor 2.
 

No hay comentarios:

Publicar un comentario