jueves, 24 de julio de 2008

ABAP. Asignar,convertir y calcular.

Sentencias de asignación.Clear
Clear es la sentencia que se utiliza en principio para 'borrar' el contenido de una variable, o dicho de otra forma, llevarla a sus valores por defecto, sin embargo tiene algunos añadidos para iniciar la variable a conveniencia del programador.
  • Si v1 es una variable tipo c sin adicciones, es rellenada con blancos. Si v1 es e cualquier otro tipo , es rellenada con ceros. Si v1 es un field string, sus componentes siguen la misma norma.
  • Si usamos "with v2" , el primer byte de v2 es usado para rellenar todo v1.
  • Si usamos "whit 'A'" todo v1 se rellenará del literal 'A'. (¿Y si v1 es numérico?).
  • Si usamos "with NULL", se rellena todo v1 con nulos. (????).


Sentencias de asignación.Move.
Move es el operador de asignación de contenido a cualquier variable, es equivalente al igual.
Al destino se le asigna todo o parte del origen.
Tenemos las siguentes sintaxis:

move v1 to v2.
v2 = v1.
v2 = v1 = vm = vn . . ..

¡Cuidado con los espacios que son obligatorios!


Subcampos y asignación de subcampos.

move v1[+N(L)] to v2[+N(L)].
v2[+N(L)] = v1[+N(L)].

Si v1 es un char de 10:
v1(3) referencia a las tres primeras posiciones de v1, es equivalente a v1+0(3),
si v1='123456789' entonces v1+2(3) es '345' .
Los subcampos solamente son válidos con tipos char.



Asignaciones simples numericas-char.

Las conversiones con variables simples se hacen automáticamente.
Ejemplo:

REPORT .
data: caracter(5) type c,
entero type i.
caracter = 126.
caracter = '126'.
entero = 128.
caracter = entero.
entero = '128'.
entero = 129.

write: / caracter,entero.



Problemática con las conversiones de tipos numéricos.

Los sistemas operativos suelen requerir que los campos numéricos se ajusten a ciertas reglas. Por ejemplo, la dirección de un entero de cuatro bytes requieren que sea un número par. Este tipo de normas se llama Alineamento de datos numéricos.
Este alineamiento, puede dar lugar a errores en las asignaciones de field strings que se supone que copia byte a byte.

De todas formas con la entrada del unicode, esto se complica mas.




La sentencia move-corresponding
Con la sentencia move-corresponding, podemos copiar field string en otro field string solamente copiando los nombres que coincidan, el resto no se copia.

Es una solucción simple para los movimientos de datos numéricos de distintos tipos.

sintaxis: move-correspondig sf1 to sf2. " sf1 y sf2 son field string.



Calculos en ABAP.Operator.
La sentencia para realizar operaciones en ABAP, es la sentencia operator.
Operadores en ABAP
Operator
Operation
+
Addition
-
Subtraction
*
Multiplication
/
Division
**
Exponentiation
DIV
Integer division
MOD
Remainder of integer division


compute v3 = v1 op v2 [op vn ...].
v3 = v2 op v2 [op vn ...].


Calculos en ABAP.add, substract,multiply,divide.
Son calculos simples directos.

add v1 to v2
substract v1 to v2
multiply v1 to v2
divide v1 to v2


Calculos en ABAP field string.add-correspondig,
substract-corresponding,
multiply-correspondig,
divide-correspondig.


Se pueden hacer operaciones con field strings cuando coinciden los tipos de datos de los componentes.
Si los tipos de datos son distintos tenemos la posibilidad de operar solo con subcampos con los mismos nombres.




Calculos con date.






Asignación dinámica. Punteros.
Un puntero se representa con entre tags <puntero&lgt;

La sintasix simple es:
field-symbols <nombrepuntero>.


Y podemos asignarlo de esta forma
assign variable to <nombrepuntero>. 


A partir de entonces el <nombrepuntero> se puede usar de la misma forma que la variable
data var(3).
field-symbols <pun>.
assign var to <pun>.
<pun> = 'XYZ'. " es equivalente a var = 'XYZ'.

xxxxxxx

No hay comentarios: