SAP ABAP - Operadores
ABAP fornece um rico conjunto de operadores para manipular variáveis. Todos os operadores ABAP são classificados em quatro categorias -
- Operadores aritméticos
- Operadores de comparação
- Operadores bit a bit
- Operadores de string de caracteres
Operadores aritméticos
Operadores aritméticos são usados em expressões matemáticas da mesma forma que são usados em álgebra. A lista a seguir descreve os operadores aritméticos. Suponha que a variável inteira A tenha 20 e a variável B tenha 40.
S.No. | Operador aritmético e descrição |
---|---|
1 | + (Addition) Adiciona valores em qualquer lado do operador. Exemplo: A + B resultará em 60. |
2 | − (Subtraction) Subtrai o operando direito do operando esquerdo. Exemplo: A - B dará -20. |
3 | * (Multiplication) Multiplica os valores em ambos os lados do operador. Exemplo: A * B dará 800. |
4 | / (Division) Divide operando esquerdo pelo operando direito. Exemplo: B / A dará 2. |
5 | MOD (Modulus) Divide o operando à esquerda pelo operando à direita e retorna o restante. Exemplo: B MOD A dará 0. |
Exemplo
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 150,
B TYPE I VALUE 50,
Result TYPE I.
Result = A / B.
WRITE / Result.
O código acima produz a seguinte saída -
3
Operadores de comparação
Vamos discutir os vários tipos de operadores de comparação para diferentes operandos.
S.No. | Operador de comparação e descrição |
---|---|
1 | = (equality test). Alternate form is EQ. Verifica se os valores dos dois operandos são iguais ou não, se sim a condição torna-se verdadeira. O exemplo (A = B) não é verdadeiro. |
2 | <> (Inequality test). Alternate form is NE. Verifica se os valores de dois operandos são iguais ou não. Se os valores não forem iguais, a condição se torna verdadeira. O exemplo (A <> B) é verdadeiro. |
3 | > (Greater than test). Alternate form is GT. Verifica se o valor do operando esquerdo é maior que o valor do operando direito. Se sim, a condição se torna verdadeira. O exemplo (A> B) não é verdadeiro. |
4 | < (Less than test). Alternate form is LT. Verifica se o valor do operando esquerdo é menor que o valor do operando direito. Se sim, a condição se torna verdadeira. Exemplo (A <B) é verdadeiro. |
5 | >= (Greater than or equals) Alternate form is GE. Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito. Se sim, a condição se torna verdadeira. O exemplo (A> = B) não é verdadeiro. |
6 | <= (Less than or equals test). Alternate form is LE. Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito. Se sim, a condição se torna verdadeira. Exemplo (A <= B) é verdadeiro. |
7 | a1 BETWEEN a2 AND a3 (Interval test) Verifica se a1 está entre a2 e a3 (inclusive). Se sim, então a condição se torna verdadeira. O exemplo (A BETWEEN B AND C) é verdadeiro. |
8 | IS INITIAL A condição torna-se verdadeira se o conteúdo da variável não tiver mudado e seu valor inicial tiver sido atribuído automaticamente. Exemplo (A IS INITIAL) não é verdadeiro |
9 | IS NOT INITIAL A condição se torna verdadeira se o conteúdo da variável mudou. Exemplo (A NÃO É INICIAL) é verdadeiro. |
Note- Se o tipo de dados ou comprimento das variáveis não corresponderem, a conversão automática será realizada. O ajuste automático de tipo é executado para um ou ambos os valores ao comparar dois valores de diferentes tipos de dados. O tipo de conversão é decidido pelo tipo de dados e a ordem de preferência do tipo de dados.
A seguir está a ordem de preferência -
Se um campo for do tipo I, o outro será convertido para o tipo I.
Se um campo for do tipo P, o outro será convertido para o tipo P.
Se um campo for do tipo D, o outro será convertido para o tipo D. Mas os tipos C e N não são convertidos e são comparados diretamente. Semelhante é o caso do tipo T.
Se um campo for do tipo N e o outro for do tipo C ou X, ambos os campos serão convertidos para o tipo P.
Se um campo for do tipo C e o outro for do tipo X, o tipo X será convertido para o tipo C.
Exemplo 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
O código acima produz a seguinte saída -
A is less than B
Exemplo 2
REPORT YS_SEP_08.
DATA: A TYPE I.
IF A IS INITIAL.
WRITE: / 'A is assigned'.
ENDIF.
O código acima produz a seguinte saída -
A is assigned.
Operadores bit a bit
ABAP também fornece uma série de operadores lógicos bit a bit que podem ser usados para construir expressões algébricas booleanas. Os operadores bit a bit podem ser combinados em expressões complexas usando parênteses e assim por diante.
S.No. | Operador bit a bit e descrição |
---|---|
1 | BIT-NOT Operador unário que inverte todos os bits em um número hexadecimal para o valor oposto. Por exemplo, aplicar este operador a um número hexadecimal com o valor de nível de bit 10101010 (por exemplo, 'AA') resultaria em 01010101. |
2 | BIT-AND Este operador binário compara cada campo bit a bit usando o operador booleano AND. |
3 | BIT-XOR Operador binário que compara cada campo bit a bit usando o operador Boolean XOR (OR exclusivo). |
4 | BIT-OR Operador binário que compara cada campo bit a bit usando o operador booleano OR. |
Por exemplo, a seguir está a tabela verdade que mostra os valores gerados ao aplicar os operadores booleanos AND, OR ou XOR aos dois valores de bits contidos no campo A e no campo B.
Campo A | Campo B | E | OU | XOR |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Operadores de string de caracteres
A seguir está uma lista de operadores de string de caracteres -
S.No. | Operador de string de caracteres e descrição |
---|---|
1 | CO (Contains Only) Verifica se A é composto exclusivamente pelos caracteres de B. |
2 | CN (Not Contains ONLY) Verifica se A contém caracteres que não estão em B. |
3 | CA (Contains ANY) Verifica se A contém pelo menos um caractere de B. |
4 | NA (NOT Contains Any) Verifica se A não contém nenhum caractere de B. |
5 | CS (Contains a String) Verifica se A contém a cadeia de caracteres B. |
6 | NS (NOT Contains a String) Verifica se A não contém a cadeia de caracteres B. |
7 | CP (Contains a Pattern) Ele verifica se A contém o padrão em B. |
8 | NP (NOT Contains a Pattern) Ele verifica se A não contém o padrão em B. |
Exemplo
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.
O código acima produz a seguinte saída -
P contains at least one character of Q.