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 . . ..
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.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.
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.
Addition | |
Subtraction | |
Multiplication | |
Division | |
Exponentiation | |
Integer division | |
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:
Publicar un comentario