miércoles, 23 de julio de 2008

abap.Variables,literales,constantes

Buffer de Programa y el Area Roll

Los Programas son almacenados en el servidor de aplicaciones en un buffer de programa. Cuando un usuario pide ejecutar un programa, una busqueda es hecha en el buffer. Si es encontrado, y no ha sido modificado en la base de datos, la copia almacenada es usada. Si no se encuentra, o si la copia de la base de datos es mas nueva, el programa se vuelve a cargar.

Si varios usuarios quieren ejecutar un programa, se usa la misma copia. La diferencia está en un area separada de memoria llamada roll area. Un area roll es creada por cada usuario y programa.
El sistema usa el roll area para almacenar la información sobre la ejecución del programa y las asignaciones de memoria. La informacion de las variables y sus valores, el puntero al programa, y la lista de salida son guardadas en el roll area.

Por ejemplo, suponemos que un usuario ejecuta un programa y un area roll es asignada.
Si, sin esperar para terminar, el usuario cambia a otra sesión y empieza el mismo programa otra vez , otra area roll es asignada para la segunda ejecución del programa.

El usuario tiene dos areas roll, una para cada ejecución del programa.
Si el usuario ejecuta otro programa, el usuario tendrá dos roll areas, una para cada programa.


Definiendo Objetos de Datos

Data objects son localizaciones de memoria que usamos para almacenar datos mientras el programa se está ejecutando.

  • Objetos de datos Modificables
  • variables
  • field strings=estructuras
  • internal tables=arrays
  • Objetos de datos No Modificables
  • Literales
  • Constantes

Cuando comienza el programa, el espacio de memoria para cada objeto de datos se ubica en el area roll del programa.

Cuando el programa se está ejecutando, se puede leer el contenido de los objetos de datos y modificar los objetos de datos modificables. Cuando el programa termina, el sistema libera la memoria para todos los objetos y su contenido se pierde.



Literales.

Un literal es un objeto de datos no modificable. Los literales pueden aparecer en cualquier parte de un programa, y se definen simplemente escribiendolos cuando es necesario.
  • cadena de caracteres
  • numéricos
  • punto flotante
  • hexadecimal.



Literales. Cadenas de caracteres


Cadenas de caracterees literales son case-sensitive secuencias de caracteres de cualquier longitud cerradas entre simples comillas. 'hola Mundo','buenos dias'.
Caso de tener que incluir comillas simples dentro de la cadena, escribiremos la comilla simple dos veces: 'y Cesar dijo : ''hijo mio''' (y cesar dijo : 'hijo mio').


Literales. Numéricos.

Los literales Numericos son numeros escritos directamente en el código( hard-coded) y opcionalmente signo y punto decimal.

Pueden escribirse con comillas simples o sin comillas simples.

Obligatorio uso de comillas simples si :

  • Escribimos punto decimal.
Correcto
Erroneo
Explicación
-99
99-
Signo al final obliga a comillas..
'-12' '12-'
12-
Con comillas, el signo al principio o al final
'12.3'
12.3
Punto decimal con comillas siempre
'125'
125


Podemos escribir con o sin comillas estos casos



  • Si queremos escribir el signo a la izquierda.

Literales. Numéricos.

Los literales Numericos son numeros escritos directamente en el código( hard-coded) y opcionalmente signo y punto decimal.



Literales. Coma flotante.

Los literales en Coma-Flotante se escriben con comillas simples de esta forma :

'<mantisa>E<exponente>'.

La mantisa puede escribirse con signo al principio y con punto decimal y decimales.

El exponente puede escribirse con signo a la izquierda y admite ceros a la izquierda.

Ejemplos: '9.99E9', '-10E-32', and '+1E09'



Literales. Hexadecimales.

Los literales Hexadecimales se escriben entre comillas simples, numeros(0-9) y letras mayúsculas(A-F) siempre en número par y por supuesto pueden empezar con cero.

Ejemplos : '0F', 'A0B4', '00'




VARIABLES.
Dos sentencias son las usadas comúnmente para definir variables en un programa ABAP/4.
  • data
  • parameters

Declarar variables data, consiste en dar un nombre, tipo y opcionalmente inicializar una variable.

Declarar variables parameters, es parecido a data, con la diferencia que hay que indicar como se presentan las variables en pantalla.

Un parámetro es un especial tipo de variable que se define usando la sentencia parameters.

La diferencia entre un parametro y un data está en que el sistema presenta los parametros en una pantalla inicial para que el usuario los 'valide' o modifique y un boton para ejecutar antes de que el programa realmente se ejecute.

Pueden usarse las veces que se requiera las sentencias data y parameters en el mismo programa.


TIPOS DE VARIABLES DATA/PARAMETERS.
http://help.sap.com/saphelp_46c/helpdata/en/fc/eb2c46358411d1829f0000e829fbfe/frameset.htm
Vamos a hablar solo de los tipos elementales. Posteriormente veremos que se pueden usar tipos definidos por el usuario a parte de otros definidos por el sistema.
Tipos Data Caracter.
Lista de tipos Data Caracter.
Tipo de DataDescripción
Interna
Longitud
Interna por
defecto
Longitud
Interna
Maxima
Valores
Validos
Valor inicial por Defecto
c
character
1
65535
Any char
Blank
n
numeric text
1
65535
0-9
0
d
date
8 (fixed)
-
0-9
00000000
t
time
6 (fixed)
-
0-9
000000
x
hexadecimal
1
65535
Any

Hay que pensar que estos tipos de caracter son guardados internamente por ABAP/4 como cadenas de caracteres.

Tipos de Data Numéricos.
Un guión en Máxima Lognitud indica que la longitud no se puede cambiar. Un asterisco indica que es máquina dependiente.

Tipos Data Numéricos

Tipo Data


Descripción
Longitud Interna por Defecto
Maxima longitud

Maximo decimales

Valores Válidos
Valor inicial por defecto.
i
integer
4(fixed)
-
0
-2^31 to +2^31-1
0
p
packed decimal
8
16
14
0-9 .
0
f
floating-point
8
8
15*
-1E-307 to 1E308
0.0

Todas las variables numéricas son con signo. Las variables de coma-flotante el exponente es también con signo.



DECLARACION VARIABLES CON LA SENTENCIA DATA.

data v1[(l)] [type t] [decimals d] [value 'xxx'].
  • v1=Nombre de la variable
  • l=longitud interna.
  • t=tipo de la variable data
  • d=numero de decimales
  • 'xxx'=valor inicial.
Nombres de las variables:
  • Los nombres de variable names pueden ser de 1 a 30 characters de largo.
  • Puede contener cualquier caracter excepto: ( ) + . , :
  • Tienen que contener al menos un caracter alfabético.
  • SAP recomienda
  • Siempre comenzar el nombre de variable con un caracter.
  • No utilizar guiones, en su lugar usar subrrayado.
  • No usar USING or CHANGING como nombres de variables.

Otras cuestiones sobre variables.
  • La longitud por defecto depende del tipo de dato.
  • El tipo por defecto es c (character).
  • El valor inicial por defeto es es 0, salvo el tipo c que es blanco.
  • La inicialización, sólo acepta literales o constantes(mas tarde las definimos) no se pueden usar variables.
La sentencia data puede aparecer en cualquier lugar del programa. La única restrición es que no puede usarse una variable antes de ser declarada por la sentencia data.

Declaración con like

Si queremos que una variable sea como otra, podemos utilizar:
data v1 like v2  [value 'xxx'].

v2 puede ser una variable ya definida, o un campo de una tabla o estructura del diccionario.
v2 copia el 'formato' de v1, no el contenido.


DECLARACION VARIABLES CON LA SENTENCIA PARAMETERS.

parameters p1[(l)] [type t] [decimals d] [default 'xxx']
[obligatory] [lower case] [as checkbox] [radiobutton group g]


  • p1=Nombre de la variable
  • l=longitud interna.
  • t=tipo de la variable data
  • d=numero de decimales
  • 'xxx'=valor inicial.
  • g= Se explica en la opcion radiobutton.



  • Los nombres de variables son como en la sentencia data, pero máxima longitud es 8.
  • Como en data, El valor por defecto es 0, salvo el tipo c que es blanco.
  • Como en data, el tipo por defecto es c (character).
  • Al contrario que data, acepta otras variables como inicialización.
  • Todos las variables parameters, sin tener encuenta en que sitio del programa estén, aparecerán en la pantalla de seleccion en el orden en que se han escrito antes de que se ejecute el programa.
  • Los parameters, son visualizados en el stadard formato de SAP. Para modificar su apariencia o su posición, hay que usar la sentencia selection-screen.
  • Por defecto las variables son en mayusculas, ver la opción lowercase.
  • La forma de presentación en la pantalla inicial es un cuadro de texto, y opcionalmente check-box y radiobottom.
Opción lowercase.
Permite que se introduzcan datos en minúsculas, si no escribimos esta opción, el texto se convertirá en mayusculas.
Opción checkbox.
Un checkbox tiene dos estados chequeado y no chequeado. Si usamos esta opción significa que vamos a presentar una elección del tipo on/off o verdadero/falso.
Los checkbox son independientes entre si .
No se puede especificar tipo y longitud. siempre su tipo es c y su longitud es 1.
Los valores de un checkbox son X y espacio. No existen otros valores de este parámetro.
Opción radiobutton group g
Como los checkbox, un radio button tiene también dos estados, selecionado y no selecionado. Sin embargo los radio buttons funcionan en grupos de modo que solamente uno de los parámetros del grupo puede estar selecionado.

No se puede especificar tipo y longitud. siempre su tipo es c y su longitud es 1.
Para mostrar un parámetro como radiobutton, hay que especificar de que grupo es.
Se pueden crear varios grupos en el programa.
Los valores de un parametro radiobutton son X y espacio.
Opción obligatory

Con esta opción en la pantalla inicial, los campos a rellenar obligatorios aparecen con una marca, y no se puede ejecutar el programa hasta que los campos estén 'rellenos'.

Declaración con like

Si queremos que un parametro sea del mismo tipo que otro parametro,variable....

parameters p2 like v1 [default 'xxx']
[obligatory] [lower case] [as checkbox] [radiobutton group g]


p2 puede ser una variable/parámetro ya definida, o un campo de una tabla o estructura del diccionario.
p2 copia el 'formato' de v1, no el contenido.


Constantes. Sentencia constants.

Las constantes son como las variables data pero que posteriormente no se pueden modificar en el programa.
Requieren una inicialización.
constants c1[(l)] [type t] [decimals d] value 'xxx'.
constants c1 like cv value 'xxx'.
Observar la obligatoriedad de la opcion 'value'
Ejemplos:
1 constants c1(2) type c value 'AA'.
2 constants c2 like c1 value 'BB'.
3 constants error_threshold type i value 5.
4 constants amalgamation_date like sy-datum value '19970305'.








Tabla de Tipos Basicos ABAP/4 vs tipos diccionario.

Esta tabla puede ser util para saber los tipos que se estan usando cuando se crean variables con la palabra 'like' a variables del sistema o campos del diccionario.

Tipos de datos del diccionario y su correspondencia con TIPOS ABAP/4
DDIC
Data Type
Description
ABAP/4
Data Definition
char
Character c(L)
clnt
Client c(3)
dats
Date d
tims
Time t
cuky
Currency key c(5)
curr
Currency p((L+2)/2)
dec
Decimal p((L+2)/2)
fltp
Floating-point f
int1
1-byte integer (none)
int2
2-byte integer (none)
int4
4-byte integer I
lang
Language c(1)
numc
Numeric text n(L)
prec
Precision x(2)
quan
Quantity p((L+2)/2)
unit
Units c(L)





n.t. COSAS PENDIENTES.

- Cambio de las etiquetas de la pantalla de seleccion(entrada).
una vez en el editor y el programa editado, si nos vamos a: pasar-a->elementos de texto->textos de seleccion, podremos cambiar los datos de las etiquetas de entrada de los campos parametros

- tanto las variables data como las variables parametro, tienen una sintaxis like to, que hay que estudiar.

- tampoco hemos mirado la relación entre tipos de datos del diccionario con los tipos de abap.

- una cosa rarta en el documento es al final cuando habla de check table.

1 comentario:

Sara dijo...

Gracias por la aportación, de gran ayuda a los que nos iniciamos en ésto.

Saludos