Vous êtes sur la page 1sur 39

ABAP

Advanced Business Application Programming


Programming - Oprations de base

ABAP
Buts de la formation
A l'issue de la formation les participants sont en mesure :
D'utiliser des oprations sur des donnes numriques
De manipuler des chanes de caractres
De traiter des donnes dates et heures

Overview

Introduction
Arithmetic Operations

4-5
6 - 10

Mathematical Operations

11 - 15

Conversion Rules

16 - 18

Character Operations

19 - 29

Date/Time Operations

30 - 36

Conclusion

37 - 39

Overview

Introduction
Arithmetic Operations
Mathematical Operations
Conversion Rules
Character Operations

Conventions
Rules

Date/Time Operations
Conclusion

Introduction
Conventions & Rules
Les espaces/"blank characters" sont essentiels
TOUJOURS un espace avant et aprs un oprateur ou mot cl
Exemple : number1_+_number2 .

TOUJOURS un espace avant et aprs une parenthse


Exemple : _(_number1 + number2_)_ / number3 .

Par contre AUCUN espace entre le mot cl et la parenthse


Exemple : abs(_number1_) .

!
5

Overview

Introduction
Arithmetic Operations
Mathematical Operations
Conversion Rules
Character Operations
Date/Time Operations

Addition

Subtraction
Multiplication
Division

Full/Integral Division
Modulo

Conclusion

Arithmetic Operations
Reminder : Variables Data Types
TYPE i
Entier / Integer

TYPE f
Nombre virgule flottante / Float

TYPE p
Packed Number

Arithmetic Operations
Commands (1)
Opration ADD or +
Addition
Exemple : result = number1 + number2 .

Opration SUBTRACT or Soustraction


Exemple : result = number1 - number2 .

Opration MULTIPLY or *
Multiplication
Exemple : result = number1 * number2 .

Arithmetic Operations
Commands (2)
Opration DIVIDE or /
Division
Exemple : result = number2 / number1 .

Opration DIV
Obtient le rsultat d'une division INTEGRALE
Exemple : result = number2 DIV number1 .

Opration MOD
Obtient le reste d'une division INTEGRALE
Exemple : remainder = number2 MOD number1 .

Arithmetic Operations

Programme ABAP
* Addition
gv_addition = gv_number1 + 2 .
gv_addition = gv_number1 + gv_number2 . "or ADD
* Soustraction
gv_soustraction = gv_number1 - 2 .
gv_soustraction = gv_number1 - gv_number2 . "or SUBTRACT
* Multiplication
gv_multiplication = gv_number1 * 2 .
gv_multiplication = gv_number1 * gv_number2 . "or MULTIPLY
* Division
gv_division = gv_number1 / 2 .
gv_division = gv_number2 / gv_number1 . "or DIVIDE
gv_division_entier = gv_number2 DIV gv_number1 .
gv_division_rest = gv_number2 MOD gv_number1 .

10

Overview

Introduction
Arithmetic Operations
Mathematical Operations
Conversion Rules
Character Operations
Date/Time Operations
Conclusion

Absolute Value
Sign
Integer Value
Decimal Value
Cosinus
Sinus
...

11

Mathematical Operations
Commands (1)
Opration ABS
Valeur absolue
Exemple : n = abs( m ) .

Opration SIGN
Signe (+ ou -) de la variable
Si la valeur est :

Ngatif, = -1
De 0 = 0
Positif = 1
Exemple : n = sign( m ) .

Opration CEIL
Plus petit nombre entier qui n'est pas infrieur la valeur de la variable
(12,25 => 13)
Exemple : n = ceil( m ) .
12

Mathematical Operations
Commands (2)
Opration FLOOR
Plus grand nombre entier qui n'est pas suprieur la valeur de la variable
(12,65 => 12)
Exemple : n = floor( m ) .

Opration TRUNC
Valeur entire de la variable (12,65 => 12)
Exemple : n = trunc( m ) .

Opration FRAC
Valeur dcimale de la variable (12,65 => 0,65)
Exemple : n = frac( m ) .

13

Mathematical Operations
Commands (3)
Opration COS
Cosinus
Exemple : result = cos( pi ) .

Opration SIN
Sinus
Exemple : result = sin( pi ) .

14

Mathematical Operations

Programme ABAP
* Numeric datatypes
DATA gv_n TYPE p DECIMALS 2 .
DATA gv_m TYPE p DECIMALS 2 VALUE '-5.55' .
gv_n = ABS( gv_m ) .
gv_n = SIGN( gv_m ) .
gv_n = CEIL( gv_m ) .
gv_n = FLOOR( gv_m ) .
gv_n = TRUNC( gv_m ) .
gv_n = FRAC( gv_m ) .
* Floating points
DATA: gv_result TYPE f ,
gv_pi(10) TYPE c VALUE '3.14159265' .
gv_result = COS(gv_pi ) .

15

Overview

Introduction
Arithmetic Operations
Mathematical Operations
Conversion Rules
Character Operations

Simple Conversion
Multiple Conversion

Date/Time Operations
Conclusion

16

Conversion Rules
Numeric Data
Conversion d'un nombre dcimal en un entier/"integer"
TYPE p -> TYPE i
Exemple :
4,44 4
5,55 6

Conversion multiple entre diffrents types de donnes


Si une opration numrique contient plusieurs types de donnes, ABAP transforme
TOUS les types de donnes dans le type de donnes le plus lev avant l'excution
de l'opration

Ensuite, ABAP effectue l'opration en utilisant les valeurs converties et insre le


rsultat (si ncessaire, l'aide d'une rgle de conversion) dans le champ de rsultat

17

Practice
Chapiter "Numeric Data"
Arithmetics Operations
Mathematical Operations

18

Overview

Introduction
Arithmetic Operations
Mathematical Operations
Conversion Rules
Character Operations
Date/Time Operations

Move
Replace
Concatenate
Separate

Conclusion

19

Character Operations
Reminder : Variables Data Types
TYPE c
Taille dfinie

TYPE string
Taille non dfinie

TYPE n
Uniquement les caractres numriques
Possibilit d'effectuer des oprations arithmtiques [ pas mathmatiques ]
Le systme effectue les conversions automatiquement

20

Character Operations
Commands
Opration SHIFT
Dplace les caractres gauche jusqu' ce que les zros disparaissent
LEFT/RIGHT DELETING LEADING 'xx'
Exemple : SHIFT phone LEFT DELETING LEADING '0' .

Dplace les caractres d'un nombre de position dfini


BY PLACES RIGHT/LEFT
Exemple : SHIFT phone BY 2 PLACES RIGHT .

Dplace les caractres en "boucle"


BY PLACES CIRCULAR
Exemple : SHIFT phone BY 3 PLACES CIRCULAR . ('0273454545' => '3454545027')

Opration REPLACE
Trouve et remplace la premire occurrence du terme de la recherche
Exemple : REPLACE '_' WITH area_code INTO phone_international .

21

Character Operations

Programme ABAP
DATA gv_phone(8) TYPE n VALUE '887766' .
DATA gv_phoneInt(25) .
* gv_phone = 00887766
SHIFT gv_phone LEFT DELETING LEADING '0' .
* gv_phone = 887766
SHIFT gv_phone BY 2 PLACES RIGHT .
* gv_phone = _ _887766
gv_phoneInt = '_ _887766' .
REPLACE '_' WITH '+41_' INTO gv_phoneInt
* gv_phoneInt = +41_ _887766

22

Character Operations
Commands
Opration CONDENSE
Supprime les espaces supplmentaires entre les caractres
Exemple :
CONDENSE phone_international .
0041_ _27 0041_27

NO-GAPS = Supprime TOUS les espaces entre les caractres


Exemple : CONDENSE phone_international NO-GAPS .

Opration CONCATENATE
Concatnation des contenus des variables dans une variable
Sparateur par dfaut = un espace
Exemple :
CONCATENATE v1 v2 INTO vConcatenate .
CONCATENATE v1 v2 v3 v4 INTO vConcatenate .

SEPARATED BY = ajoute un sparateur au lieu de l'espace


Exemple : CONCATENATE v1 v2 INTO vConcatenate SEPARATED BY '-' .

23

Character Operations

Programme ABAP
* gv_phoneInt = +41_ _887766
CONDENSE gv_phoneInt .
* gv_phoneInt = +41_887766
CONDENSE gv_phoneInt NO-GAPS .
* gv_phoneInt = +41887766
* gv_phone = 887766
DATA gv_code VALUE '+41' .
CONCATENATE gv_code _ gv_phone INTO gv_phoneInt SEPARATED BY '-'
* gv_phoneInt = +41-887766

24

Character Operations
Commands
Opration SPLIT
Spare/coupe la variable en plusieurs variables
AT = sparateur (littral ou variable)
Exemple : SPLIT phone_international AT '-' INTO code phone .

Opration With Direct Positioning


Substring+startPoint(nbCharacter)
Exemple :
code = phone_international(3) .
code = phone_international+4(7) .
phone_international+1(2) = '33' .

ATTENTION aucun espace entre la variable et les parenthses ( )


Exemple : phone_international+1(2) = '33' .

25

Character Operations

Programme ABAP
* gv_phoneInt = +41-887766
SPLIT gv_phoneInt AT '-' INTO gv_code _ gv_phone .
* gv_code = +41
* gv_phone = 887766

gv_code = gv_phoneInt(3) .
* gv_code = +41
gv_phone = gv_phoneInt+4(6) .
* gv_phone = 887766
gv_phoneInt+1(2) = '33' .
* gv_phoneInt = +33-887766

26

Character Operations
Commands
Opration TRANSLATE . TO UPPER CASE .
Met en majuscule les caractres
Exemple : TRANSLATE word1 TO UPPER CASE .

Opration TRANSLATE . TO LOWER CASE .


Met en minuscule les caractres
Exemple : TRANSLATE word1 TO LOWER CASE .

Opration STRLEN(_variable_) .
Calcule la taille d'un string
Retourne un entier
Exemple : taille = STRLEN( word1 ) .

27

Character Operations

Programme ABAP
DATA gv_string1(10) TYPE c VALUE 'AbCdEfGhIj' .
* Majuscule
TRANSLATE gv_string1 TO UPPER CASE.
* Minuscule
TRANSLATE gv_string1 TO LOWER CASE.
* Taille
DATA gv_taille TYPE i .
DATA gv_word1(20) TYPE c VALUE '12345' .
gv_taille = STRLEN( gv_word1 ) . "gv_taille = 5

28

Practice
Chapiter "Character / String"
Concatenation
Split

29

Overview

Introduction
Arithmetic Operations
Mathematical Operations
Conversion Rules
Character Operations

System Fields
Tips & Tricks

Date/Time Operations
Conclusion

30

Date/Time Operations
Reminder : Variables Data Types
TYPE d
Format : AAAAMMJJ
Attention ne pas se fier l'affichage, car il est li au paramtre personnel de l'utilisateur - SU3

TYPE t
Format : HHMMSS
Attention ne pas se fier l'affichage, car il est li au paramtre personnel de l'utilisateur - SU3

Important
Les types d & t sont des caractres et non des nombres !!
Plus ou moins quivalent au type n
Possibilit d'effectuer des oprations arithmtiques
Le systme va effectuer les conversions automatiquement

31

Date/Time Operations
System Fields
sy-datlo
Date locale de l'utilisateur

sy-datum
Date du serveur d'application

sy-fdayw
Jour de la semaine
Exemple : Lundi = 1, ., Vendredi = 5

sy-timlo
Heure locale de l'utilisateur

sy-uzeit
Heure du serveur d'application
32

Date/Time Operations
Tips & Tricks
Jour
DATA monjour TYPE d .
monjour = sy-datum+6(2) .

Dclaration
Mois

DATA madate TYPE d .


madate = sy-datum+6(2) .
OU

DATA monmois TYPE d .


monmois = sy-datum+4(2) .

DATA madate LIKE sy-datum .

Anne
DATA monannee TYPE d .
monannee = sy-datum(4) .
33

Date/Time Operations

Programme ABAP
* Date calculation
DATA gv_ultimo TYPE d.
gv_ultimo = sy-datum.
gv_ultimo+6(2) = '01'. " = first day of this month
gv_ultimo = gv_ultimo - 1. " = last day of previous month
WRITE : / 'ultimo :', gv_ultimo .
* Time calculation
DATA : gv_diff
gv_seconds
gv_hours
gv_t1
gv_t2

TYPE i ,
TYPE i ,
TYPE i ,
TYPE t VALUE '200000' ,
TYPE t VALUE '020000' .

gv_diff = gv_t2 - gv_t1 .


gv_seconds = gv_diff MOD 86400 .
gv_hours = gv_seconds / 3600 .
* or gv_hours = ( ( gv_t2 - gv_t1 ) MOD 86400) / 3600.

34

Date/Time Operations
Commands
Ces dclarations sont obsoltes et ne sont disponibles que pour
assurer la compatibilit avec les versions antrieures 4.6 et 6.10.
Peuvent apparatre dans des programmes plus anciens
Ne doivent plus tre utilises

Opration CONVERT DATE INTO INVERTED-DATE


Conversion
Exemple : CONVERT DATE odate INTO INVERTED-DATE idate .

Opration CONVERT INVERTED-DATE INTO DATE


Conversion
Exemple : CONVERT INVERTED-DATE idate INTO DATE odate .

35

Practice
Chapiter " Date / Time "

36

Overview

Introduction
Arithmetic Operations
Mathematical Operations

Information

Conversion Rules

Questions

Character Operations

Discussion

Date/Time Operations

Contact

Conclusion

37

Conclusion
Information
Ils existent beaucoup d'autres oprations sur les types de donnes.
Plus d'information sont disposition directement via SAP dans la
documentation ABAP
Transaction ABAPDOCU

Source
http://help.sap.com/SAPHELP_NW70EHP1/helpdata/EN/43/41341147041806e100
00000a1553f6/frameset.htm

38

Questions & Discussion

39