TIPOS DE DATOS Y OTRAS SENTENCIAS

3.1. TIPOS Y OBJETOS de datos

3.2. Tablas internas

3.3. Sentencias para abandonar bloques de proceso

3.4. SENTENCIAS DECLARATIVAS

3.5. SENTENCIAS DE PROCESAMIENTO DE DATOS

3.5.1. Sentencias de asignación y conversión de variables
3.5.2. Sentencias de cálculo
3.5.3. Sentencias de manejo de strings

 

 


 

3.1. TIPOS Y OBJETOS DE datos:

Pueden declararse tipos de datos (son descripciones que definen los objetos de datos que se declaren luego, y no ocupan memoria) y objetos de datos (entidades físicas que ocupan memoria: variables. Tienen un tipo asociado, y se procesan según el tipo que sea).

La longitud se mide en caracteres, NO en bytes. Variables que no sean del mismo tipo exactamente pueden no ser totalmente compatibles, lo que puede provocar errores de conversiones numéricas. Por ej., para operaciones de división usar el tipo P (packed), al menos para el recoger el resultado.

3.2. TABLAS INTERNAS:

Las tablas internas son las creadas como locales en un programa; no pertenecen al Diccionario de Datos. Sólo son visibles localmente en el programa en el que se declaran. Se declaran con:

DATA: BEGIN OF nombre_tabla OCCURS núm_entradas, ... END OFnombre_tabla.

3.3. Sentencias para abandonar bloques de proceso:

Dichas sentencias son: STOP, EXIT, CHECK y REJECT. Son todas incondicionales salvo CHECK. La sentencia CONTINUE vale para pasar a la siguiente vuelta de un bucle.

3.4. SentenCIAS DECLARATIVAS:

 

3.5.1. Sentencias de asignación y conversión de variables:

  • MOVE campo1[offset1] TO campo2[offset2] [ PERCENTAGE nr ].
  • MOVEcopia el contenido del campo1 en campo2. Los offset permiten especificar sólo una parte del campo origen y/o destino, y se escriben así: +número, todo pegado al nombre del campo. En PERCENTAGE puede especificarse un %, es decir, 0 < nr < 100 (si se usa esta opción, ‘campo1’ y ‘campo2’ deben ser tipo C. El resultado es que el nr % de ‘campo1’ se mueve a ‘campo2’ justificado a la izquierda.MOVE hace conversiones de formato, si origen y destino no tienen igual tipo, lo que puede dar lugar a resultados erróneos.
  • MOVE–CORRESPONDING tabla1 TO tabla2.
  • Sentencia similar a MOVE, pero de un registro o cabecera de una tabla a otra igual (o no) en estructura. Si origen y destino no coinciden en todos los campos (en la estructura) sólo se mueven aquellos campos que coincidan (por nombre, no por posición. Por tanto, para evitar errores de conversión, ambos campos de mismo nombre también deberían tener el mismo tipo y tamaño).
  • WRITE campo1[offset1] TO campo2[offset2].
  • Similar a MOVE, salvo que el “campo2” (destino) siempre debe ser de tipo texto. Por tanto, si el origen no es de texto, será convertido. Pueden especificarse offsets a la hora de hacer estas conversiones. Con WRITE (campo1) TO … no se mueve campo1 (va entre paréntesis), sino su contenido (es una indirección).
  • PACK campo TO campo.
  • Convierte ese campo a su forma empaquetada, por ejemplo, números sin ceros a la izquierda. Puede escribirse el resultado sobre la misma variable, o en otra distinta.
  • UNPACK campo TO campo.
  • La operación inversa a PACK (es decir, convierte el campo a su forma desempaquetada). Ejemplo, rellenar con ceros a la izquierda un número, hasta completar la longitud del campo.
  • CONVERT DATE e INVERT DATE
  • Sentencias de conversión de fechas a formato interno de SAP (poco útil).
  • CONVERT TEXT campo1 INTO SORTABLE CODE campo2.

Sentencia que transforma un campo de texto simple a un campo tal que es más rápidamente ordenable, insertando índices, claves, …

 


3.5.2. Sentencias de cálculo:

 

3.5.3. Sentencias de manejo de strings: