SAP ABAP - Operatori

ABAP fornisce un ricco set di operatori per manipolare le variabili. Tutti gli operatori ABAP sono classificati in quattro categorie:

  • Operatori aritmetici
  • Operatori di confronto
  • Operatori bit per bit
  • Operatori di stringa di caratteri

Operatori aritmetici

Gli operatori aritmetici vengono utilizzati nelle espressioni matematiche nello stesso modo in cui vengono utilizzati in algebra. Il seguente elenco descrive gli operatori aritmetici. Supponiamo che la variabile intera A contenga 20 e la variabile B contenga 40.

S.No. Operatore aritmetico e descrizione
1

+ (Addition)

Aggiunge valori su entrambi i lati dell'operatore. Esempio: A + B darà 60.

2

− (Subtraction)

Sottrae l'operando della mano destra dall'operando della mano sinistra. Esempio: A - B darà -20.

3

* (Multiplication)

Moltiplica i valori su entrambi i lati dell'operatore. Esempio: A * B darà 800.

4

/ (Division)

Divide l'operando sinistro per l'operando destro. Esempio: B / A darà 2.

5

MOD (Modulus)

Divide l'operando di sinistra per l'operando di destra e restituisce il resto. Esempio: B MOD A darà 0.

Esempio

REPORT YS_SEP_08. 
DATA: A TYPE I VALUE 150, 
B TYPE I VALUE 50, 
Result TYPE I. 
Result =  A / B. 
WRITE / Result.

Il codice precedente produce il seguente output:

3

Operatori di confronto

Discutiamo i vari tipi di operatori di confronto per diversi operandi.

S.No. Operatore di confronto e descrizione
1

= (equality test). Alternate form is EQ.

Controlla se i valori di due operandi sono uguali o meno, in caso affermativo la condizione diventa vera. L'esempio (A = B) non è vero.

2

<> (Inequality test). Alternate form is NE.

Controlla se i valori di due operandi sono uguali o meno. Se i valori non sono uguali, la condizione diventa vera. L'esempio (A <> B) è vero.

3

> (Greater than test). Alternate form is GT.

Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro. Se sì, la condizione diventa vera. L'esempio (A> B) non è vero.

4

< (Less than test). Alternate form is LT.

Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro. Se sì, la condizione diventa vera. L'esempio (A <B) è vero.

5

>= (Greater than or equals) Alternate form is GE.

Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro. Se sì, la condizione diventa vera. L'esempio (A> = B) non è vero.

6

<= (Less than or equals test). Alternate form is LE.

Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro. Se sì, la condizione diventa vera. L'esempio (A <= B) è vero.

7

a1 BETWEEN a2 AND a3 (Interval test)

Controlla se a1 si trova tra a2 e a3 (inclusi). Se sì, la condizione diventa vera. L'esempio (A TRA B AND C) è vero.

8

IS INITIAL

La condizione diventa vera se il contenuto della variabile non è cambiato e le è stato automaticamente assegnato il valore iniziale. L'esempio (A È INIZIALE) non è vero

9

IS NOT INITIAL

La condizione diventa vera se il contenuto della variabile è cambiato. L'esempio (A NON È INIZIALE) è vero.

Note- Se il tipo di dati o la lunghezza delle variabili non corrispondono, viene eseguita la conversione automatica. La regolazione automatica del tipo viene eseguita per uno o entrambi i valori confrontando due valori di diversi tipi di dati. Il tipo di conversione viene deciso dal tipo di dati e dall'ordine di preferenza del tipo di dati.

Di seguito è riportato l'ordine di preferenza:

  • Se un campo è di tipo I, l'altro viene convertito nel tipo I.

  • Se un campo è di tipo P, l'altro viene convertito in tipo P.

  • Se un campo è di tipo D, l'altro viene convertito nel tipo D. Ma i tipi C e N non vengono convertiti e vengono confrontati direttamente. Simile è il caso del tipo T.

  • Se un campo è di tipo N e l'altro è di tipo C o X, entrambi i campi vengono convertiti nel tipo P.

  • Se un campo è di tipo C e l'altro è di tipo X, il tipo X viene convertito nel tipo C.

Esempio 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

Il codice precedente produce il seguente output:

A is less than B

Esempio 2

REPORT YS_SEP_08. 

DATA: A TYPE I.
      IF A IS INITIAL.
      WRITE: / 'A is assigned'.
      ENDIF.

Il codice precedente produce il seguente output:

A is assigned.

Operatori bit per bit

ABAP fornisce anche una serie di operatori logici bit per bit che possono essere utilizzati per creare espressioni algebriche booleane. Gli operatori bit per bit possono essere combinati in espressioni complesse utilizzando parentesi e così via.

S.No. Operatore bit per bit e descrizione
1

BIT-NOT

Operatore unario che capovolge tutti i bit in un numero esadecimale al valore opposto. Ad esempio, l'applicazione di questo operatore a un numero esadecimale avente il valore del livello di bit 10101010 (ad esempio "AA") darebbe 01010101.

2

BIT-AND

Questo operatore binario confronta ogni campo bit per bit utilizzando l'operatore booleano AND.

3

BIT-XOR

Operatore binario che confronta ogni campo bit per bit utilizzando l'operatore booleano XOR (OR esclusivo).

4

BIT-OR

Operatore binario che confronta ogni campo bit per bit utilizzando l'operatore booleano OR.

Ad esempio, di seguito è riportata la tabella della verità che mostra i valori generati quando si applicano gli operatori booleani AND, OR o XOR rispetto ai due valori di bit contenuti nel campo A e nel campo B.

Campo A Campo B E O XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Operatori di stringa di caratteri

Di seguito è riportato un elenco di operatori di stringhe di caratteri:

S.No. Operatore e descrizione della stringa di caratteri
1

CO (Contains Only)

Controlla se A è composto esclusivamente dai caratteri in B.

2

CN (Not Contains ONLY)

Controlla se A contiene caratteri che non sono in B.

3

CA (Contains ANY)

Controlla se A contiene almeno un carattere di B.

4

NA (NOT Contains Any)

Controlla se A non contiene alcun carattere di B.

5

CS (Contains a String)

Verifica se A contiene la stringa di caratteri B.

6

NS (NOT Contains a String)

Controlla se A non contiene la stringa di caratteri B.

7

CP (Contains a Pattern)

Controlla se A contiene il pattern in B.

8

NP (NOT Contains a Pattern)

Controlla se A non contiene il pattern in B.

Esempio

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.

Il codice precedente produce il seguente output:

P contains at least one character of Q.