SAP ABAP - Operadores
ABAP proporciona un amplio conjunto de operadores para manipular variables. Todos los operadores ABAP se clasifican en cuatro categorías:
- Operadores aritméticos
- Operadores de comparación
- Operadores bit a bit
- Operadores de cadenas de caracteres
Operadores aritméticos
Los operadores aritméticos se usan en expresiones matemáticas de la misma manera que se usan en álgebra. La siguiente lista describe los operadores aritméticos. Suponga que la variable entera A tiene 20 y la variable B tiene 40.
S.No. | Operador aritmético y descripción |
---|---|
1 | + (Addition) Agrega valores a ambos lados del operador. Ejemplo: A + B dará 60. |
2 | − (Subtraction) Resta el operando de la derecha del operando de la izquierda. Ejemplo: A - B dará -20. |
3 | * (Multiplication) Multiplica los valores a ambos lados del operador. Ejemplo: A * B dará 800. |
4 | / (Division) Divide el operando de la izquierda por el operando de la derecha. Ejemplo: B / A dará 2. |
5 | MOD (Modulus) Divide el operando de la izquierda por el operando de la derecha y devuelve el resto. Ejemplo: B MOD A dará 0. |
Ejemplo
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 150,
B TYPE I VALUE 50,
Result TYPE I.
Result = A / B.
WRITE / Result.
El código anterior produce la siguiente salida:
3
Operadores de comparación
Analicemos los distintos tipos de operadores de comparación para diferentes operandos.
S.No. | Operador de comparación y descripción |
---|---|
1 | = (equality test). Alternate form is EQ. Comprueba si los valores de dos operandos son iguales o no, si es así, la condición se convierte en verdadera. El ejemplo (A = B) no es cierto. |
2 | <> (Inequality test). Alternate form is NE. Comprueba si los valores de dos operandos son iguales o no. Si los valores no son iguales, la condición se cumple. Ejemplo (A <> B) es cierto. |
3 | > (Greater than test). Alternate form is GT. Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho. Si es así, la condición se convierte en verdadera. El ejemplo (A> B) no es cierto. |
4 | < (Less than test). Alternate form is LT. Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho. Si es así, la condición se convierte en verdadera. Ejemplo (A <B) es cierto. |
5 | >= (Greater than or equals) Alternate form is GE. Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho. Si es así, la condición se convierte en verdadera. El ejemplo (A> = B) no es cierto. |
6 | <= (Less than or equals test). Alternate form is LE. Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho. Si es así, la condición se convierte en verdadera. Ejemplo (A <= B) es cierto. |
7 | a1 BETWEEN a2 AND a3 (Interval test) Comprueba si a1 se encuentra entre a2 y a3 (inclusive). Si es así, entonces la condición se vuelve verdadera. Ejemplo (A ENTRE B Y C) es verdadero. |
8 | IS INITIAL La condición se cumple si el contenido de la variable no ha cambiado y se le ha asignado automáticamente su valor inicial. Ejemplo (A ES INICIAL) no es cierto |
9 | IS NOT INITIAL La condición se cumple si ha cambiado el contenido de la variable. Ejemplo (A NO ES INICIAL) es verdadero. |
Note- Si el tipo de datos o la longitud de las variables no coinciden, se realiza la conversión automática. El ajuste de tipo automático se realiza para uno o ambos valores mientras se comparan dos valores de diferentes tipos de datos. El tipo de conversión se decide por el tipo de datos y el orden de preferencia del tipo de datos.
A continuación se muestra el orden de preferencia:
Si un campo es de tipo I, el otro se convierte en tipo I.
Si un campo es de tipo P, el otro se convierte en tipo P.
Si un campo es de tipo D, el otro se convierte al tipo D. Pero los tipos C y N no se convierten y se comparan directamente. Similar es el caso del tipo T.
Si un campo es de tipo N y el otro es de tipo C o X, ambos campos se convierten al tipo P.
Si un campo es de tipo C y el otro es de tipo X, el tipo X se convierte en tipo C.
Ejemplo 1
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 115,
B TYPE I VALUE 119.
IF A LT B.
WRITE: / 'A is less than B'.
ENDIF
El código anterior produce la siguiente salida:
A is less than B
Ejemplo 2
REPORT YS_SEP_08.
DATA: A TYPE I.
IF A IS INITIAL.
WRITE: / 'A is assigned'.
ENDIF.
El código anterior produce la siguiente salida:
A is assigned.
Operadores bit a bit
ABAP también proporciona una serie de operadores lógicos bit a bit que se pueden utilizar para construir expresiones algebraicas booleanas. Los operadores bit a bit se pueden combinar en expresiones complejas usando paréntesis y así sucesivamente.
S.No. | Operador bit a bit y descripción |
---|---|
1 | BIT-NOT Operador unario que voltea todos los bits de un número hexadecimal al valor opuesto. Por ejemplo, aplicar este operador a un número hexadecimal que tenga el valor de nivel de bit 10101010 (por ejemplo, 'AA') daría 01010101. |
2 | BIT-AND Este operador binario compara cada campo bit a bit utilizando el operador booleano AND. |
3 | BIT-XOR Operador binario que compara cada campo bit a bit utilizando el operador booleano XOR (OR exclusivo). |
4 | BIT-OR Operador binario que compara cada campo bit a bit utilizando el operador booleano OR. |
Por ejemplo, a continuación se muestra la tabla de verdad que muestra los valores generados al aplicar los operadores booleanos AND, OR o XOR contra los valores de dos bits contenidos en el campo A y el campo B.
Campo A | Campo B | Y | O | XOR |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Operadores de cadenas de caracteres
A continuación se muestra una lista de operadores de cadenas de caracteres:
S.No. | Operador de cadena de caracteres y descripción |
---|---|
1 | CO (Contains Only) Comprueba si A está compuesto únicamente por los caracteres de B. |
2 | CN (Not Contains ONLY) Comprueba si A contiene caracteres que no están en B. |
3 | CA (Contains ANY) Comprueba si A contiene al menos un carácter de B. |
4 | NA (NOT Contains Any) Comprueba si A no contiene ningún carácter de B. |
5 | CS (Contains a String) Comprueba si A contiene la cadena de caracteres B. |
6 | NS (NOT Contains a String) Comprueba si A no contiene la cadena de caracteres B. |
7 | CP (Contains a Pattern) Comprueba si A contiene el patrón en B. |
8 | NP (NOT Contains a Pattern) Comprueba si A no contiene el patrón en B. |
Ejemplo
REPORT YS_SEP_08.
DATA: P(10) TYPE C VALUE 'APPLE',
Q(10) TYPE C VALUE 'CHAIR'.
IF P CA Q.
WRITE: / 'P contains at least one character of Q'.
ENDIF.
El código anterior produce la siguiente salida:
P contains at least one character of Q.