Continuamos en este post con la introducción a ABAP. En este caso vamos a comentar las instrucciones mas básicas que podemos realizar.
Asignación
Existen varias formas de asignar a una variable:
-
Asignación directa: <variable> = valor.
El valor se puede especificar como un literal, el contenido de una constante o el contenido de una variable.
-
Sentencia MOVE: Asigna un valor a una variable.
MOVE <valor> TO <variable>.
-
Sentencia MOVE-CORRESPONDING: Mueve el contenido de los campos de una estructura a los campos que tengan el mismo nombre de otra estructura.
MOVE-CORRESPONDING <origen> TO <destino>.
-
Sentencia CLEAR: Inicializa el contenido de un campo a su valor inicial según el tipo de dato.
CLEAR <campo>.
-
OFFSETS: Se puede hacer referencia parcial a una parte de un campo, indicando el número de posiciones que hay hasta la posición en la que se comienza a referenciar utilizando + y la cantidad de posiciones que se referencia entre paréntesis.
MOVE <campo1> + <posiciones>(longitud) TO <campo2>.
Ejemplo:
DATA: d_dato1(8) TYPE c VALUE ‘ABCDEF’,
d_dato2(4) TYPE c. d_dato2 = d_dato1+2(4). Ahora
d_dato2 = ‘CDEF’.
Condicionales
Operadores condicionales.
Igual: <valor1>
EQ <valor2>
<valor1>
= <valor2>
No igual: <valor1>
NE <valor2>
<valor1>
<> <valor2>
Mayor: <valor1>
GT <valor2>
<valor1> > <valor2>
Menor: <valor1>
LT <valor2>
<valor1> < <valor2>
Mayor o igual: <valor1>
GE <valor2>
<valor1> >= <valor2>
Menor o igual: <valor1>
LE <valor2>
<valor1> <= <valor2>
<valor1>
BETWEEN <valor2>
AND <valor3>.
<valor1>
IS INITIAL. Si tiene el valor inicial.
<valor>
IN <rango>. Si <valor> tiene un valor comprendido en el rango <rango>
Operadores lógicos.
<condicion1>
AND <condicion2>
< condicion1>
OR <condicion2>
NOT <condición>.
Sentencias IF <condición> ..... ENDIF.
Ejemplo:
IF NOT d_dato IS INITIAL.
WRITE d_dato.
ENDIF.
Escribe por pantalla el valor introducido en d_dato si se recibe un valor distinto del inicial.
Sentencias CASE <variable>.......ENDCASE.
Permiten ejecutar diferentes grupos de sentencias en función del valor contenido en <variable>, delimitando las sentencias con la cláusula
WHEN <valor>.
El valor
OTHERS comprende todos los valores que no hayan sido especificados en las anteriores cláusulas
WHEN.
Ejemplo:
CONSTANTS: c_centrado TYPE c VALUE ‘c’,
c_izquierda TYPE c VALUE ‘i’,
c_derecha TYPE c VALUE ‘d’.
DATA: d_alineación TYPE c,
d_texto(100) TYPE c.
CASE d_alineación.
WHEN c_centrado.
WRITE d_texto CENTERED.
WHEN c_izquierda.
WRITE d_texto LEFT-JUSTIFIED.
WHEN c_derecha.
WRITE d_texto RIGHT-JUSTIFIED.
WHEN OTHERS.
WRITE d_texto.
ENDCASE.
Operadores condicionales para cadenas de texto.
<cadena1>
CO <cadena2> Si todos los caracteres, incluidos los espacios de 1, están en 2.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena1>, sino, contiene el OFFSET del primer carácter de <cadena1> que no existe en <cadena2>.
<cadena1>
CN <cadena2> Si existe algún carácter en 1 que no está en 2, incluido espacios.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <cadena1> que no existe en <cadena2>, sino, contiene la longitud de <cadena1>.
<cadena1>
CA <cadena2> Si alguno de 1 incluido espacios, está en <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <cadena1> que existe en <cadena2>, sino, contiene la longitud de <cadena1>.
<cadena1>
NA <cadena2> Si ninguno de los caracteres de <cadena1>, está en <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena1>, sino, contendrá el OFFSET del primer carácter de <cadena1> que existe en <cadena2>.
<cadena1>
CS <cadena2> La condición se cumple si <cadena1> contiene a <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <cadena2> que existe en <cadena1>, sino, contiene la longitud de <cadena1>.
<cadena1>
NS <cadena2>. La condición se cumple si <cadena1> no contiene a <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena1>, sino, contendrá el OFFSET del primer carácter de <cadena2> que existe en <cadena1>.
<cadena>
CP <patrón>. La condición se cumple si <cadena> contiene el patrón de búsqueda <patrón>. Este patrón permite utilizar el carácter * para representar cualquier cadena de caracteres y + para representar cualquier carácter.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <patrón> que existe en <cadena>, sino, contiene la longitud de <cadena>.
Ejemplo: La condición ‘Jose Luis Diaz’ CP ‘Jose*Diaz’ es verdadera y devuelve 0 en SY-FDPOS. La condición ‘JoseLuisDiaz’CP ‘Jose+Luis’ es falsa y devuelve 12 en SY-FDPOS.
<cadena>
NP <patrón>. La condición se cumple si <cadena> no contiene el patrón de búsqueda <patrón>.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena>, sino, contendrá el OFFSET del primer carácter de <patrón> que existe en <cadena>.