81
Formation ABAP Version : 1.0 Formation Développement SAP ABAP/4 Advanced Business Application Programming 1 / 81 R/3 Client/Serveur A BA P/4 SD SD Ventes MM MM A chatet stocks PP PP G estion de production QM QM G estion de la qualité PM PM M aintenance HR HR G estion du personnel FI FI Com ptabilité financière CO CO Contrôlede gestion AM AM Imm obili- sations PS PS G estion de projet WF WF Workflow IS IS Solutions m étiers

Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Formation Développement

SAP

ABAP/4Advanced Business Application Programming

1 / 63

R/3Client / Serveur

ABAP/4

SDSDVentes

MMMMAchat etstocksPPPP

Gestion deproduction

QMQMGestion de la

qualitéPMPM

MaintenanceHRHR

Gestion dupersonnel

FIFIComptabilité

financièreCOCO

Contrôle degestion AMAM

Immobili-sations

PSPSGestion de

projetWFWF

WorkflowISIS

Solutionsmétiers

Page 2: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Identification du document

Auteur  : Mohamed LAARAIBIVersion : 1.0Fichier : document.doc

Date modif Par Paragraphe Objet de la modif

2 / 63

Page 3: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Plan de la formation1. PROGRAMMATION.....................................................................................................................................8

1.1. INTRODUCTION............................................................................................................................................81.1.1. Evénements........................................................................................................................................81.1.2. Syntaxe..............................................................................................................................................8

1.1.2.1. Commentaires................................................................................................................................................81.1.2.2. Points.............................................................................................................................................................81.1.2.3. Deux points et virgule...................................................................................................................................8

1.2. DÉCLARATIONS...........................................................................................................................................81.2.1. Tables................................................................................................................................................81.2.2. Types.................................................................................................................................................9

1.2.2.1. Types élémentaires........................................................................................................................................91.2.2.2. Autres types...................................................................................................................................................9

1.2.3. Data...................................................................................................................................................91.2.3.1. Type.............................................................................................................................................................101.2.3.2. Like..............................................................................................................................................................101.2.3.3. Value...........................................................................................................................................................10

1.2.4. Constants.........................................................................................................................................111.2.5. Structures........................................................................................................................................11

1.2.5.1. Syntaxe........................................................................................................................................................111.2.5.2. Include structure..........................................................................................................................................11

1.2.6. Tables internes................................................................................................................................121.2.6.1. Déclaration..................................................................................................................................................121.2.6.2. Include structure..........................................................................................................................................12

1.2.7. Parameters......................................................................................................................................131.2.7.1. Default.........................................................................................................................................................131.2.7.2. Checkbox.....................................................................................................................................................141.2.7.3. Radiobutton.................................................................................................................................................141.2.7.4. Matchcode...................................................................................................................................................141.2.7.5. Obligatory....................................................................................................................................................15

1.2.8. Select-options..................................................................................................................................151.2.8.1. Description table interne.............................................................................................................................161.2.8.2. Default.........................................................................................................................................................161.2.8.3. No-extension – No intervals........................................................................................................................161.2.8.4. Obligatory....................................................................................................................................................17

1.2.9. Selection-screen..............................................................................................................................171.2.9.1. ULINE.........................................................................................................................................................171.2.9.2. SKIP............................................................................................................................................................181.2.9.3. Comment.....................................................................................................................................................181.2.9.4. Block...........................................................................................................................................................18

1.2.10. Ranges.............................................................................................................................................181.2.10.1. Description table interne........................................................................................................................191.2.10.2. Occurs....................................................................................................................................................19

1.2.11. Field-symbols..................................................................................................................................191.2.11.1. Définition...............................................................................................................................................191.2.11.2. Assign field............................................................................................................................................191.2.11.3. Assign (zone).........................................................................................................................................20

1.3. EVÉNEMENTS............................................................................................................................................201.3.1. Report..............................................................................................................................................20

1.3.1.1. Message-Id..................................................................................................................................................201.3.1.2. Line-count...................................................................................................................................................211.3.1.3. Line-size......................................................................................................................................................211.3.1.4. No standard page heading...........................................................................................................................21

1.3.2. At Selection-screen..........................................................................................................................211.3.2.1. Sur champ....................................................................................................................................................211.3.2.2. Sur bloc.......................................................................................................................................................221.3.2.3. Output..........................................................................................................................................................22

1.3.3. Initialization....................................................................................................................................221.3.4. At line-selection...............................................................................................................................221.3.5. Start-of-selection.............................................................................................................................221.3.6. Get...................................................................................................................................................231.3.7. End-of-selection..............................................................................................................................23

3 / 63

Page 4: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.3.8. Top-of-page.....................................................................................................................................231.3.9. End-of-page.....................................................................................................................................23

1.4. CONTRÔLES...............................................................................................................................................231.4.1. Appels..............................................................................................................................................23

1.4.1.1. Form ... Endform.........................................................................................................................................23 Using.................................................................................................................................................................23 Changing...........................................................................................................................................................23 Tables................................................................................................................................................................24 Structure............................................................................................................................................................24

1.4.1.2. Perform........................................................................................................................................................24 Using.................................................................................................................................................................24 Changing...........................................................................................................................................................24 Form(nom_du_prog)........................................................................................................................................25 Tables................................................................................................................................................................25

1.4.1.3. Call..............................................................................................................................................................25 Fonction............................................................................................................................................................25 Transaction.......................................................................................................................................................25

1.4.2. Boucles............................................................................................................................................261.4.2.1. Do ... Enddo.................................................................................................................................................26

Varying.............................................................................................................................................................26 Times................................................................................................................................................................26

1.4.2.2. While ... Endwhile.......................................................................................................................................26 Vary..................................................................................................................................................................27

1.4.2.3. Select ... Endselect.......................................................................................................................................27 From..................................................................................................................................................................27 Single................................................................................................................................................................27 Where................................................................................................................................................................28 Into....................................................................................................................................................................28 Order by............................................................................................................................................................28 Code retour.......................................................................................................................................................28

1.4.2.4. Loop at ... Endloop......................................................................................................................................29 Where................................................................................................................................................................29 At first...............................................................................................................................................................29 At new...............................................................................................................................................................29 At end of...........................................................................................................................................................29 At last................................................................................................................................................................29 Sum...................................................................................................................................................................30

1.4.3. Sorties..............................................................................................................................................301.4.3.1. Check...........................................................................................................................................................301.4.3.2. Continue......................................................................................................................................................301.4.3.3. Exit..............................................................................................................................................................301.4.3.4. Stop..............................................................................................................................................................30

1.4.4. Conditions.......................................................................................................................................311.4.4.1. Comparateurs..............................................................................................................................................31

Comparaisons...................................................................................................................................................31 Comparaisons de chaînes de caractères............................................................................................................31 Plage de valeurs................................................................................................................................................32 Valeur initiale...................................................................................................................................................32 in.......................................................................................................................................................................32

1.4.4.2. IF ... Else ... Endif........................................................................................................................................321.4.4.3. Case ... When ... [others] … Endcase..........................................................................................................321.4.4.4. Check...........................................................................................................................................................32

1.5. OPÉRATIONS..............................................................................................................................................331.5.1. Opérations.......................................................................................................................................33

1.5.1.1. Opérations numériques................................................................................................................................33 Compute............................................................................................................................................................33 Add – subtract – multiply – divide...................................................................................................................33 Add-corresponding - ........................................................................................................................................34

1.5.1.2. opérations sur textes....................................................................................................................................34 Concatenate......................................................................................................................................................34 Translate...........................................................................................................................................................35 Shift..................................................................................................................................................................35 Replace.............................................................................................................................................................35 Condense..........................................................................................................................................................36

1.5.2. Affectations......................................................................................................................................36

4 / 63

Page 5: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.5.2.1. Move............................................................................................................................................................361.5.2.2. Move-corresponding...................................................................................................................................361.5.2.3. Clear............................................................................................................................................................361.5.2.4. Assign..........................................................................................................................................................371.5.2.5. Extract.........................................................................................................................................................371.5.2.6. Write to........................................................................................................................................................371.5.2.7. Set Parameter ID.........................................................................................................................................371.5.2.8. Get Parameter ID.........................................................................................................................................38

1.5.3. Les données système........................................................................................................................381.6. BASES DE DONNÉES LOGIQUES..................................................................................................................39

1.6.1. Structures........................................................................................................................................391.6.1.1. SE36............................................................................................................................................................39

Structure............................................................................................................................................................39 Programmes......................................................................................................................................................39 Sélections..........................................................................................................................................................40

1.6.1.2. Déclaration dans un programme.................................................................................................................40 Attributs de SE38..............................................................................................................................................40

1.6.2. Instructions......................................................................................................................................401.6.2.1. Get...............................................................................................................................................................401.6.2.2. Get DBTable Late.......................................................................................................................................401.6.2.3. Reject...........................................................................................................................................................411.6.2.4. Check Select-options...................................................................................................................................41

1.6.3. Sélection..........................................................................................................................................411.6.3.1. Ecrans de sélection......................................................................................................................................41

1.7. COMMANDES D’ÉDITION...........................................................................................................................411.7.1. Write................................................................................................................................................41

1.7.1.1. Positionnement............................................................................................................................................42 Saut de ligne « / ».............................................................................................................................................42 At......................................................................................................................................................................42 Position.............................................................................................................................................................42

1.7.1.2. Options........................................................................................................................................................42 No-zero.............................................................................................................................................................42 No-sign.............................................................................................................................................................42 Decimals...........................................................................................................................................................42 DD/MM/YY.....................................................................................................................................................42 Using edit mask................................................................................................................................................43 Under................................................................................................................................................................43 No-gap..............................................................................................................................................................43 Left-justified – centered – right-justified..........................................................................................................43

1.7.2. Format.............................................................................................................................................431.7.2.1. Color............................................................................................................................................................431.7.2.2. Intensified....................................................................................................................................................431.7.2.3. Input............................................................................................................................................................441.7.2.4. Back.............................................................................................................................................................44

1.7.3. New-page........................................................................................................................................441.7.3.1. Line-count...................................................................................................................................................441.7.3.2. Line-size......................................................................................................................................................441.7.3.3. Print-on........................................................................................................................................................44

1.7.4. Skip..................................................................................................................................................441.7.5. Position...........................................................................................................................................441.7.6. Uline................................................................................................................................................441.7.7. Reserve............................................................................................................................................441.7.8. Set blank lines on............................................................................................................................44

1.8. COMMANDES DE TABLES INTERNES..........................................................................................................451.8.1. Mise à jour......................................................................................................................................45

1.8.1.1. Insert............................................................................................................................................................451.8.1.2. Modify.........................................................................................................................................................451.8.1.3. Append........................................................................................................................................................451.8.1.4. Collect.........................................................................................................................................................451.8.1.5. Delete..........................................................................................................................................................45

1.8.2. Réinitialisation................................................................................................................................461.8.2.1. Clear............................................................................................................................................................461.8.2.2. Refresh........................................................................................................................................................461.8.2.3. Free..............................................................................................................................................................46

5 / 63

Page 6: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.8.3. Sort..................................................................................................................................................461.8.3.1. By................................................................................................................................................................461.8.3.2. Ascending – Descending.............................................................................................................................46

1.8.4. Read table.......................................................................................................................................461.8.5. Loop at ... Endloop..........................................................................................................................46

1.9. COMMANDES DE FIELD-GROUPS...............................................................................................................471.9.1. Insert...............................................................................................................................................471.9.2. Extract.............................................................................................................................................471.9.3. Sort..................................................................................................................................................481.9.4. Loop ... Endloop..............................................................................................................................48

1.9.4.1. At first, At new, At end of, At last, at field-group......................................................................................481.9.4.2. Sum( ), Cnt( )............................................................................................................................................48

1.10. FICHIERS...............................................................................................................................................481.10.1. Fichiers sur le serveur (application server)...................................................................................48

1.10.1.1. Open.......................................................................................................................................................481.10.1.2. Read dataset...........................................................................................................................................491.10.1.3. Transfer..................................................................................................................................................491.10.1.4. Close......................................................................................................................................................49

1.10.2. Fichiers locaux................................................................................................................................491.10.2.1. WS_DOWNLOAD................................................................................................................................491.10.2.2. WS_UPLOAD.......................................................................................................................................49

1.11. BATCH-INPUT.......................................................................................................................................501.11.1. Présentation....................................................................................................................................501.11.2. Table de transfert............................................................................................................................501.11.3. Fonctions utilisée............................................................................................................................50

1.11.3.1. Ouverture du dossier..............................................................................................................................501.11.3.2. Transfert dans la table............................................................................................................................501.11.3.3. Insertion dans le dossier.........................................................................................................................511.11.3.4. Fermeture du dossier..............................................................................................................................51

1.11.4. Programmation...............................................................................................................................51

2. SAPSCRIPT.................................................................................................................................................53

2.1. FORMULAIRES...........................................................................................................................................532.1.1. Entête de formulaire........................................................................................................................532.1.2. Pages...............................................................................................................................................542.1.3. Fenêtres...........................................................................................................................................542.1.4. Fenêtres de page.............................................................................................................................552.1.5. Paragraphes....................................................................................................................................552.1.6. Chaînes de caractères.....................................................................................................................552.1.7. Eléments de texte.............................................................................................................................55

2.1.7.1. Elément de texte..........................................................................................................................................552.1.7.2. Paragraphe...................................................................................................................................................562.1.7.3. Ligne de commande....................................................................................................................................562.1.7.4. Commentaire...............................................................................................................................................562.1.7.5. Commandes.................................................................................................................................................56

2.1.8. Gestion des langues dans les formulaires.......................................................................................572.1.9. Copie de formulaire........................................................................................................................572.1.10. Impression des informations concernant un formulaire.................................................................57

2.2. PROGRAMME DE PILOTAGE D’UN FORMULAIRE........................................................................................572.2.1. Open_Form.....................................................................................................................................582.2.2. Start Form.......................................................................................................................................582.2.3. Write_Form.....................................................................................................................................582.2.4. End Form........................................................................................................................................582.2.5. Close_Form.....................................................................................................................................582.2.6. Exemple (ZZARSAPS).....................................................................................................................59

2.3. TEXTES STANDARDS..................................................................................................................................59

3. INTRODUCTION À LA PROGRAMMATION INTERACTIVE........................................................59

3.1. HIDE..........................................................................................................................................................593.2. SET............................................................................................................................................................60

3.2.1. Pf-status..........................................................................................................................................60

6 / 63

Page 7: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

3.2.2. Titlebar............................................................................................................................................603.2.3. Screen..............................................................................................................................................603.2.4. Cursor.............................................................................................................................................60

3.3. EVÈNEMENTS POUR LISTE INTERACTIVE...................................................................................................613.3.1. AT LINE SELECTION....................................................................................................................613.3.2. AT USER COMMAND....................................................................................................................61

4. DIVERS........................................................................................................................................................61

4.1.1. Include.............................................................................................................................................614.1.2. Message...........................................................................................................................................61

4.1.2.1. Id - Type – Number.....................................................................................................................................614.1.2.2. With.............................................................................................................................................................624.1.2.3. Raising exception........................................................................................................................................62

5. NORMES DE PROGRAMMATION........................................................................................................62

5.1.1. Document joint................................................................................................................................625.1.2. Programme modèle (ZZARMODE)................................................................................................625.1.3. Programme exemple (ZZAREXEM)................................................................................................62

7 / 63

Page 8: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1. Programmation

ABAP = Advanced Business Application Programming

1.1. Introduction

1.1.1. Evénements

L'ABAP/4 est un langage de 4ème génération, de type événementiel.Le programme commence par l'événement Report.La séquence d'instruction associée à un événement est exécutée à la détection de ce dernier.

1.1.2. Syntaxe

1.1.2.1. Commentaires

« * » en début de linge = toute la ligne est un commentaireEn milieu de ligne « " » sert à commencer un commentaireExemple:

" toute la ligne est en commentaireWRITE 'bonjour'. " écran d'accueil

1.1.2.2. Points

Chaque instruction ABAP/4 doit se terminer par un point.

1.1.2.3. Deux points et virgule

Au lieu d'écrireWrite 'bonjour'.Write 'Tout le monde'.On peut écrire

WRITE : 'bonjour' , 'Tout le monde'.

Exercice: ZZML0001

1.2.Déclarations

1.2.1. Tables

Toute table utilisée dans un programme doit être préalablement déclarée.

8 / 63

Page 9: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Les tables sont déclarées par:

TABLES mara. TABLES : mara, " Fiche article : données générales makt. " Désignations des articles

1.2.2. Types

1.2.2.1. Types élémentaires*******

Type Libellé Long. Val. Init.C caractère 1 Blank N numérique 1 '00...0' D date (YYYYMMDD) 8 '00000000'T temps 6 '000000' X hexa 1 X'00' I Entier 4 0 P paquet 8 0 F réel à virgule flottante 8 '0.0'

1.2.2.2. Autres types

On peut définir ses propre type via l'instruction types.

TYPES mon_type TYPE type_déjà_défini.

Exemples :Types numeric type n. Définition par rapport à un type standardTypes num2 type numeric. Définition par rapport à un type déjà défini

1.2.3. Data

Toutes les variables utilisées dans le programme doivent être déclarées préalablement. La déclaration se fait par le mot clé DATA suivie du nom et du type de la variable.

DATA w_char type c.

La déclaration de plusieures variables peut se faire par une seule instruction DATA suivie de « : ». Les variables seront séparées par des « , ». La déclaration entière finira par un point.

9 / 63

Page 10: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

DATA : w_char type c, w_num type n, w_char1 type c.

Les noms des variables doivent avoir une longueur inférieure à 30. Ne pas utiliser les caractères : plus (+), point (.), virgule (,), et parenthèses (). Il est

déconseillé d’utiliser le (-). Ne pas utiliser des noms constitués que de caractères numériques, ils seront interprétés

comme des constantes numériques. Il est fortement conseillé de suivre le standard de développement fourni par le client ou à

défaut le standard CMG.

1.2.3.1. Type

Le type d’une variable se définit à la déclaration de celle-ci.

DATA : w_char(3) TYPE c, "définition de variable caractère de longueur 3Un_char TYPE mon_type. "définition de variable par rapport à un type défini.

Le type par défaut est C de longueur 1. ( data char. data char(1) type c. data char(3). data char(3) type c. )

Les types D, F, I et T sont de longueur prédéfinies.

1.2.3.2. Like

On peut déclarer des données par référence à une donnée standard ou une donnée déjà définie.

DATA: w_ char(3) type cw_char2 LIKE char,w_matnr LIKE mara-matnr. "N° d'article

L’appel d’une donnée standard par like ne nécessite pas la déclaration de celle-ci : dans l’exemple précédent, la déclaration de la table mara par l’instruction tables n’est pas nécessaire ( si la table mara est utilisée dans le programme sa déclaration devient obligatoire )

1.2.3.3. Value

Lors de la déclaration d’une variable on peut lui attribuer une valeur initiale à l’aide de l’instruction VALUE.

DATA: w_char(7) type c VALUE 'bonjour',w_matnr like mara-matnr VALUE 'ART0100'.

10 / 63

Page 11: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.2.4. Constants

CONSTANTS num(3) type n VALUE 156.

Permet de définir des constantes d'un type donné et d'une valeur donnée.La valeur de la constante ne peut pas être changée ultérieurement.

Les constantes littérales : 44, -1 pour les numérique.'hello' pour les textes.'l''essentiel'  la valeur de cette constante est « l’essentiel »

Exercice : ZZML0002

1.2.5. Structures

Une structure est une liste de zones.

1.2.5.1. Syntaxe

Data : BEGIN OF g_struc,

Liste de zones,

END OF g_struc.

Exemple :

Data: begin of ID_01,Titre(4), " Mme, Mr, MlleNom like ,Prenom(10) type c,Num(5) type n,Art_pref like mara-matnr,End of ID_01.

1.2.5.2. Include structure

Une structure peut être créée en référence à une structure définie dans le DDIC (data dictionary ) ou une structure déjà définie dans le programme.

Data : BEGIN OF g_article.

Include STRUCTURE mara.

11 / 63

Page 12: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Data : END OF g_article.

Data : BEGIN OF g_article01.

Include STRUCTURE g_article.

Data : END OF g_article01.

1.2.6. Tables internes

Les tables internes sont des objets créés pour le traitement de plusieurs occurrences de données. Elles permettent la réorganisation des données, le calcul des sommes. Plusieurs opérations sont possibles sur les tables internes : tri, recherche, filtrage, ajout et suppression de ligne.

La table interne ne vit que pendant la durée d’exécution du programme.

La déclaration d'une table interne se fait par le mot clé : OCCURS.

1.2.6.1. Déclaration

Data : BEGIN OF T_table OCCURS n,Liste de zones constituant chaque ligneEND OF T_table.

OCCURS n réserve l’espace mémoire pour n lignes de la table. Dès qu’une première ligne est écrite dans la table interne le système réserve l’espace mémoire pour n lignes. Au delà de n ligne le système étend cette mémoire automatiquement. Dans le cas de l’indisponibilité de la place mémoire les données sont écrites dans le buffer ou sur le disque.

Exemple :

Data : begin of T_identity occurs 5, Titre(4), " Mme, Mr, MlleNom(10),Prenom(10) type c,Num(5) type n,end of T_identity.

1.2.6.2. Include structure

Les tables internes peuvent être créées en référence à des structures ou à des tables du DDIC ou préalablement créées.

12 / 63

Page 13: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Data : BEGIN OF T_table OCCURS 0,INCLUDE STRUCTURE table.

Data: END OF T_table .

Dans cette syntaxe table peut être une structure de DDIC, une table de DDIC, une structure déjà déclarée dans le programme ou une table interne déjà déclarée dans le programme.

Exemple : Data : begin of T_identity1 occurs 10.

Include structure T_identity.Data : end of T_identity1.

Exercice: ZZLM0003

1.2.7. Parameters

PARAMETERS permet de définir des paramètres en entrée de programme à valeur unique.

PARAMETERS p_nom TYPE type.

Exemple:

Parameters p_num(5) type n.

1.2.7.1. Default

Définition d'une valeur par défaut du paramètre. Cette valeur s’affiche à l'écran de saisie lors de l’exécution du programme.

PARAMETERS p_num(5) TYPE n DEFAULT 1.

13 / 63

Page 14: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.2.7.2. Checkbox

Affichage sous forme de case à cocher, il s'agira toujours d'une variable de type c et de longueur 1 alimentée par les valeur space et ‘X’.

PARAMETERS p_yes AS CHECKBOX.

PARAMETERS p_yes AS CHECKBOX DEFAULT 'X'.

1.2.7.3. Radiobutton

Permet de regrouper des paramètres ( type c longueur 1) dont un choix unique est possible.

PARAMETERS : p_choix1 RADIOBUTTON GROUP rad1,p_choix2 RADIOBUTTON GROUP rad1 DEFAULT 'X'.

Exemple :parameters : p_choix1 radiobutton group rad1,

p_choix2 radiobutton group rad1 default 'X', p_choix3 radiobutton group rad1.

1.2.7.4. Matchcode

Pour utiliser le matchcode sur un paramètre de saisie.

PARAMETERS p_param LIKE zone MATCHCODE OBJECT nom_matchcode.

Exemple : parameters p_art like mara-matnr matchcode object mat1.

14 / 63

Page 15: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Si on clique sur le matchcode (la flêche) on peut avoir accès à l’outil de recherche du matchcode ( dans ce cas MAT1 )

1.2.7.5. Obligatory

Rendre une zone de saisie obligatoire.

PARAMETERS p_article LIKE mara-matnr OBLIGATORY.PARAMETERS p_article LIKE mara-matn MATCHCODE OBJECT mat1 OBLIGATORY.

Une zone obligatoire se reconnaît à l’écran par le point d’interrogation qu’elle contient.Exemple:Parameters p_articl like mara-matnr obligatory

Exercice: ZZLM0004

1.2.8. Select-options

Les select-options sont des « paramètres » de sélection multiples. Elles permettent de définir:- des intervalles de valeurs- une liste de valeurs individuelles

SELECT-OPTIONS s_nom FOR zone.

Remarque :Le nom du select-options ne doit pas dépasser 8 caractères.La zone utilisée après FOR doit être déclarée Il n’est pas obligatoire que zone soit une zone standard de DDIC, elle peut bien être une variable préalablement déclarée.

15 / 63

Page 16: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Exemple :select-options s_articl for mara-matnr.

La table mara doit être déclarée par le mot clé tables.

1.2.8.1. Description table interne

Un select-options est une table interne dans la structure est la suivante :

SIGN OPTION LOW HIGH

SIGN I = includeE = exclude

OPTION EQ = égalGT = supérieur àBT = between LT = inférieur àNE = différent de…

LOW borne inférieure

HIGH borne supérieure

1.2.8.2. Default

Définition de valeur par défaut.

SELECT-OPTIONS s_nom FOR zone DEFAULT 'valeur1' [to] valeur2 [OPTION]…[SIGN]… .

Exemples :

select-options s_articl for mara-matnr default 'ART_001'.select-options s_articl for mara-matnr default 'ART_001' option gt sign i.select-options s_articl for mara-matnr default 'ART_001' to 'ART_002'.select-options s_articl for mara-matnr default 'ART_001' to 'ART_002' option bt sign e.

1.2.8.3. No-extension – No intervals

Pour supprimer les extensions, c’est à dire pour ne donner la possibilité d’utiliser qu’une seul occurrence dans la table du select-options on utilise la syntaxe :

16 / 63

Page 17: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

SELECT-OPTIONS s_nom FOR zone NO-EXTENTION.

Exemple :select-options s_articl for mara-matnr no-extension.

Pour n’utiliser que la partie low-value.

SELECT-OPTIONS s_nom FOR zone NO INTERVALS.

Exemple :select-options s_articl for mara-matnr no intervals.

1.2.8.4. Obligatory

SELECT-OPTIONS s_nom FOR zone OBLIGATORY.

Exemple :select-options s_articl for mara-matnr obligatory.

Exercice : ZZLM0005

1.2.9. Selection-screen

Selection-screen permet de formater l’écran de sélection d’un programme.

1.2.9.1. ULINE

Dessiner une ligne horizontale.

SELECTION-SCREEN ULINE

17 / 63

Page 18: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Exemple :selection-screen uline /10(5). " retour à ligne, dessin de ligne à la position 10 sur

une " longueur 5

1.2.9.2. SKIP

Saut de n lignes

SELECTION-SCREEN SKIP n.

1.2.9.3. Comment

Pour écrire un commentaire à l'écran de sélection.

SELECTION-SCREEN COMMENT p(l) text-nnn

Exemple :selection-screen comment 10(5) text-001. " écrire le texte à la position 10 sur une

"longueur de 5

1.2.9.4. Block

SELECTION-SCREEN BEGIN OF BLOCK mon_bloc [WITH FRAME][ TITLE text-nnn].parameters: p_par1,p_par2,p_par3.

SELECTION-SCREEN END OF BLOCK mon_bloc.

Exemple :selection-screen begin of block mon_blo with frame title text-002.parameters: p1,

p2,p3.

selection-screen end of block mon_blo.

Exercice : ZZLM0006

1.2.10. Ranges

Sert à créer une table interne permettant la saisie d’intervalles et de valeurs.La structure de cette table est équivalente à celle d’un select-options.

18 / 63

Page 19: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

RANGES r_interval for zone.

Ce-ci est équivalent à la déclaration suivante:

DATA: BEGIN OF r_interval OCCURS 10, SIGN(1), OPTION(2), LOW LIKE zone, HIGH LIKE zone,

END OF r_interval.

1.2.10.1. Description table interne

SIGN OPTION LOW HIGH

SIGN I = includeE = exclude

OPTION EQ = égalGT = supérieur ou égal…

LOW borne inférieure

HIGH borne supérieure

1.2.10.2. OccursSi le nombre de lignes à créer initialement doit être différent de 10, on doit le spécifier par la close occurs.

RANGES mon_interval FOR champ OCCURS n.

1.2.11. Field-symbols

Les field-symbols jouent le rôle de pointeurs.Ils permettent la gestion dynamique des zones.

1.2.11.1. Définition

FIELD-SYMBOLS <F> [TYPE].

19 / 63

Page 20: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.2.11.2. Assign field

ASSIGN zone TO <field-symbols> .

Exemple :

Data : w_crit_tri_1,w_crit_tri_2.

Field-symbols <critere_de_tri> .* pour utiliser le critère 1assign crit_tri_1 to <critere_de_tri> .* pour utiliser le critère de tri 2assign crit_tri_2 to <critere_de_tri> .

Une fois assign effectué, le champ et le field-symbols désignent la même entité, tout changement qui affecte la valeur de l'un affecte l'autre.

On peut spécifier un offset assign zone+2(3) to <f>.

( Il faut utiliser les offset avec prudence pour ne pas déborder sur les zones mémoire adjacentes au lieu de assign zone+2 to <f> utiliser assign zone+2(*) to <f> )

1.2.11.3. Assign (zone)

ASSIGN (champ) TO < critere_de_tri> .

Le contenu de champ est considéré comme le nom d’une zone et assigné au field-symbols.Data : w_crit_tri_1,

w_crit_tri_2,w_champ(10).

Field-symbols <critere_de_tri>.Champ = ' w_crit_tri_1'.Assign (w_champ) to < critere_de_tri> assign w_crit_tri_1 to <critere_de_tri>.

Exercice : ZZLM0007.

1.3.Evénements

1.3.1. Report

Un programme démarre à l'événement report.

Report zzml0001 [Message-Id z9][ Line-count 10][ Line-size 100][ No standard page heading.]

1.3.1.1. Message-Id

20 / 63

Page 21: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Définit la classe de messages à utiliser.

Chemin pour la gestion des classes des messages

=>

1.3.1.2. Line-countDéfinit le nombre de lignes du report.

1.3.1.3. Line-sizeDéfinit la longueur de ligne.

1.3.1.4. No standard page headingDésactive l'entête de page standard.

1.3.2. At Selection-screen

Cette événement est à utiliser uniquement dans les reports.Evénement déclenché après le renseignement de l'écran de sélection (PAI = process after input).

1.3.2.1. Sur champ

AT SELECTION-SCREEN ON zone.

Déclenche un traitement spécifique concernant ce champ.

Exempleparameters : p_par0. selection-screen begin of block b1.parameters : p_par1, p_par2. selection-screen end of block b1.parameters : p_par3.at selection-screen on p_par0. if p_par0 = 'A'. message e000(z9) with p_par0. endif.

21 / 63

Page 22: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

S i on fait enter l’écran affiche La seule

zone qui reste accessible à l’écran est p_par0. La barre d’état affiche le message 000 :

1.3.2.2. Sur bloc

AT SELECTION-SCREEN ON BLOCK blo.

Toutes les zones faisant partie du bloc restent accessibles si la condition n’est pas remplie.

Exercice : ZZLM0008

1.3.2.3. Output

Peut être utilisé pour agir sur l'écran de sélection avant affichage de celui-ci.On peut l'utiliser pour personnaliser les écrans de sélection des BD logiques.

Exemple :

Un report qui utilise la BD logique KDF.Le code suivant permet d'intensifier le contenu de la borne supérieure du select-options sur le code fournisseur.

at selection-screen output.loop at screen.

if screen-name = 'KD_LIFNR-HIGH'.screen-intensified = '1'.modify screen.

endif. endloop.

1.3.3. Initialization

Cet événement est exécuté avant l'affichage de l'écran de sélection. Il permet des traitement dont le résultat sera affiché à l’écran de séléctio par exemple.

1.3.4. At line-selection

Evénement déclenché sur la sélection d'une ligne.

1.3.5. Start-of-selection

22 / 63

Page 23: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Evénement de début de traitement.

1.3.6. Get

Evénement pour accéder via les BD logiques.

1.3.7. End-of-selection

Evénement après tous les accès aux bases de données.

1.3.8. Top-of-page

Evénement déclenché avant l'édition des données sur une nouvelle page.

1.3.9. End-of-page

Evénement de fin de page déclenché à l’arrivée sur la dernière ligne.

1.4.Contrôles

1.4.1. Appels

1.4.1.1. Form ... Endform

Une sous-routine est définie par :FORM nom_form.……ENDFORM.

A l'intérieur d'un form on peut utiliser les variables préalablement déclarées dans le programme ou en déclarer des locales.

UsingFORM nom_form USING par1 par2….……ENDFORM

par1 par2… sont des paramètres formels (voir perform using)

Form difference using par1 par2.Par1 = par1 – par2.Write par1.Endform

Changing

FORM mon_form USING zone1 CHANGING VALUE(Zone2).

23 / 63

Page 24: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

……ENDFORM.

Si la valeur de zone2 est affectée dans le programme, elle ne changera qu’à la sortie de la routine.

Tables

FORM aff_tab TABLES ma_table LIKE art_tab[]. ……ENDFORM.

Structure

FORM util_struct strUcture struc LIKE mara.……ENDFORM.

1.4.1.2. Perform

PERFORM nom_form.

Permet l'appel d'une sous-routine définie par form endform.

Using

Appel un form ayant des paramètres formels.

PERFORM nom_form USING w_val1 w_val2 …

Les zones appelées par using remplacent respectivement les paramètres formels de la sous-routine ( voir Form … Using )

Exemple :Data: w_sup(3) type n,

w_inf(3) type n.

Perform difference using w_sup w_inf.

Changing

Perform difference using w_val1 changing w_val2.

24 / 63

Page 25: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Form(nom_du_prog)

Appel d'une sous-routine parvenant d'un autre programme.

PERFORM mon_form(nom_prog)

Exemple :

Perform mon_form(ZZLM00A9)

Exercice : ZZLM0009.

Tables

PERFORM tables t_itab.

Exercice : ZZLM0010.

1.4.1.3. Call

Fonction

Utiliser modèle d’instruction pour l'appel d'une fonction dans le code. Cela permet de rapatrier les paramètres de la fonction correctement.

CALL FUNCTION ‘nom_de_la_fonction’.

Transaction

CALL TRANSACTION 'nom_transaction’.

Exemple :Call transaction 'MM03'.

Appelle la transaction MM03.

On peut passer des paramètres à la transaction exemple :set parameter id 'MAT' field '40-100C'. call transaction 'MM03'.

Si on veut traiter le premier écran automatiquement : call transaction and skip first screen.

Exercice: ZZLM0011.

25 / 63

Page 26: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.4.2. Boucles

1.4.2.1. Do ... Enddo

DO … ...ENDDO.

Répétition du code jusqu'à une instruction de sortie ( EXIT, STOP)

Varying

DO VARYING variable FROM champ1 NEXT champ2……ENDDO.

Permet de balayer une structure de gauche à droite.Les champs balayés doivent avoir le même type que celui de variable.La distance entre champ1 et champ2 définit le pas.Il faut prévoir une sortie de la boucle pour ne pas fausser les résultats.

Exemple :

data: begin of bl, one,two,three,four,five,

end of bl,let. bl = '1234*'. do varying let from bl-one next bl-three.

write let. if let = '* '. exit.endif.

enddo.

Le programme affiche : 1 3

TimesDO n TIMES.……ENDDO.

Exécution des instructions n fois.

1.4.2.2. While ... Endwhile

26 / 63

Page 27: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

WHILE condition.……ENDWHILE.

Exécution du code tant que la condition est valide. La condition est évaluée avant l’entrée dans la boucle.

VaryWHILE condition VARY variable FROM champ1 NEXT champ2. …

… ENDWHILE.

Sensiblement équivalent à Do… varying.

Exemple :data: begin of bl,

one,two,three,four,five, end of bl,let. bl = '1234*'.

while let <> '*' vary let from bl-one next bl-three. write let.

endwhile.

Résultat : 1 3 *.

Exercice : ZZML0012.

1.4.2.3. Select ... Endselect

From

SELECT * FROM DBTable.……ENDSELECT.

Permet d'accéder à la base de données par une lecture séquentielle.Le traitement entre select et endselect concerne tout le contenu de la table.

Single

SELECT SINGLE * FROM DBTable.

Permet de lire le premier enregistrement de la table ( voir Where )On n’utilise pas de endselect.

27 / 63

Page 28: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Where

SELECT * FROM Dbtable WHERE conditons.……ENDSELECT.

Les champs de la table sont appelés dans la condition par leur nom simple. Exemple :

Select * from mara where matnr = ‘ART_001’. ‘ ( matnr et non pas mara-matnr )

Le traitement est exécuté pour l’enregistrement de la table vérifiant les conditions spécifiées.

SELECT SINGLE * FROM DBTable WHERE conditions.

Permet de lire le premier enregistrement vérifiant les conditions spécifiée par la clause where. Il n’y a pas de endselect.Les champs de la table sont appelés dans la condition par leur nom simple.

Into

SELECT * FROM DBtable INTO TABLE t_itab.

Lecture de base de données dans une table interne. Les donnée lues sont écrites dans la table dont la structure doit être la même que celle de la table de base de données.

Le contenu éventuellement préexistant de la table interne avant cette instruction est complètement écrasé.

Pour ajouter les données dans la table interne en gardant le contenu précédent on utilisera la clause APPENDING .

SELECT * FROM DBtable APPENDING TABLE t_itab.

Order bySELECT * FROM DBTable ORDER BY field1 field2 …SELECT * FROM DBTable WHERE condition ORDER BY field1 field2 …

Code retour

Le code retour sy-subrc prend les valeur suivantes:

- 0 : au moins une valeur a été trouvée.- 4 : aucune ligne n'a été lue.

28 / 63

Page 29: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

- 8 : ( pour select single ) toute les clés primaires n'ont pas été renseignées et aucun enregistrement n'a été trouvé.

Exercice : ZZLM0013

1.4.2.4. Loop at ... EndloopLOOP AT t_itab.……ENDLOOP.

Permet la lecture séquentielle des tables internes. Les traitements à effectuer sur le contenu de la table doivent être codés entre les instructions loop at et endloop.Les événement qui suivent s'utilisent à l'intérieur de loop.

WhereOn peut lire la table interne que pour les enregistrements vérifiant une condition par :

LOOP AT t_itab WHERE condition.……ENDLOOP.

At first

At first . …endat.

Evénement déclenché à au premier passage de loop.

At new

At new field.…endat.

Où field est un champ de la table interne.

At end of

At end of field.…Endat.

au déclenchement des événements at new field et at end of field les champs situés à droite de field dans la déclaration de la table interne sont remplis de ‘*’.

At last

At last.

29 / 63

Page 30: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

…endat.

Evénement déclenché au dernier passage de loop.

Remarque :Les champs de la table interne sont appelés dans ces événements par leur nom simple faire appel à la table.

Sum Sum.

Instruction utilisée dans une loop. Elle effectue la somme de tous les champs de type I, P et F et place cette somme dans l'entête de la table.

Exercice : ZZML0015.

1.4.3. Sorties

1.4.3.1. Check

CHECK conditions.

Utilisé dans une boucle: si la condition n'est pas vérifiée la boucle passe à l'enregistrement suivant.

Utilisé dans les BD logiques :Permet le filtrage des données.

1.4.3.2. Continue

CONTINUE.

A cette instruction la boucle saute à l'enregistrement suivant, sans exécuter le reste des instructions à l'intérieur de ladite boucle.

1.4.3.3. Exit

EXIT.

A l’intérieur d’une boucle, elle permet d’en sortir.A l’intérieur d’un sous-programme, elle permet d’en sortir. A l’intérieur d’un programme ; hors boucle et sous-programme ; elle permet d’en sortir complètement.

1.4.3.4. Stop

STOP.

30 / 63

Page 31: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Permet de se brancher à l'événement end-of-selection, s'il n'y en a pas il joue le rôle de exit.

Exercice : ZZML0016.

1.4.4. Conditions

Utiliser les parenthèses pour séparer les expressions logiques.Les parenthèses doivent être précédées et suivies par des espaces.Les expressions peuvent être combinées par AND, OR ou NOT.Les expressions sont évaluées de gauche à droite.

1.4.4.1. Comparateurs

Comparaisons

EQ ou = EQual  : Egal à NE ou <> ou >< Not : Différent deGT ou > Greater Than : Supérieur strictementLT ou < Lower Than : Inférieur strictementGE ou => ou >= Greater or Equal : Supérieur ou égalLE ou =< ou <= Lower or Equal : Inférieur ou égalBT … AND … Between : compris entreNB … AND … Not Between : HorsLike % : remplace une chaîne de caractère

_  : remplace un caractère

Exemple :Select * from mara where matnr like ‘_R%’. Permet de sélectionner les articles dont la deuxième position du numéro est un R.

Comparaisons de chaînes de caractères

Comparaison Désignation significationch1 CO ch2 Contains only ch1 contient seulement des caractères de ch2ch1 CN ch2 Contains not only ch1 ne contient pas seulement des caractères de ch2ch1 CA ch2 Contains any ch1 contient au moins un caractère de ch2ch1 NA ch2 Contains not any ch1 ne contient pas de caractères de ch2ch1 CS ch2 Contains string ch1 contient la séquence de caractère ch2ch1 NS ch2 Contains no string ch1 ne conteint pas la séquence de caractères de ch2ch1 CP ch2 Contains pattern Recherche par motif

'*' = une séquence de caractères( if 'ABCDE' CP '*CD*' ) est vraie

'+' = un caractère.( if 'ABCDE' CP '+CD*' ) est fausse

'#' permet d'utiliser les caractères spéciaux * et + en tant

31 / 63

Page 32: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

que simple caractères '#*', '#+', '##'.ch1 NP ch2 No pattern ch1 ne contient pas le motif de caractères ch2

Plage de valeurs

IF val1 BETWEEN val2 AND val3.

Valeur initiale

IF champ IS INITIAL.

Pour vérifier si la zone a été modifiée depuis son « initialisation ».La négation de cette proposition est :

if NOT champ IS INITIAL.

inSi on utilise : select-options s_articl for mara-matnr.

IF champ IN s_articl.

Cette condition ne sélectionne que les champ compris dans le select-options s_articl.Cette condition est aussi utilisée pour les données définies par ranges.

1.4.4.2. IF ... Else ... Endif

IF condition.…ELSE. "facultatif, pour traiter le cas où la condition n’est pas remplie…ENDIF.

1.4.4.3. Case ... When ... [others] … EndcasePour le traitement cas par cas l’instruction CASE est la mieux adaptée. Le cas OTHERS permet le traitement quand la valeur de variable est différente des cas individuellement spécifiés

CASE variable.WHEN valeur1.…WHEN valeur2.……WHEN OTHERS.…

ENDCASE.

1.4.4.4. Check

32 / 63

Page 33: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

CHECK condition.

Si la condition est fausse :- sortie du programme si check est utilisée dans le programme principal avant end-

of-selection.- Branchement sur end-of-selection

Exercice : ZZML0017.

1.5.Opérations

1.5.1. Opérations

1.5.1.1. Opérations numériques

Compute

COMPUTE a = b.

Pour effectuer une opération numérique.Son utilisation est facultative. Compute a = b. a = b.

Add – subtract – multiply – divide

Add

ADD var1 TO var2.Ajoute le contenu de var1 à var2 et met le résultat dans var2.

var2 = var2 + var1. est équivalent.

Substract

SUBSTRACT var1 FROM var2.Retranche la valeur de var1 de var2.

var2 = var2 - var1. est équivalent.

Multiply

MULTIPLY var2 BY var1.Multiplie le contenu de var1 par var2 et met le résultat dans var2 (premier opérande)

Var2 = var2 * var1. est équivalent.

Divide

DIVIDE var2 BY var1divise le contenu de var2 par var1 et met le résultat dans var2 (premier opérande)

33 / 63

Page 34: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Var2 = var2 / var1. est équivalent. Division euclidienne

Var3 = var2 DIV var1.

Modulo ( reste de la division euclidienne )

Var3 = var2 MOD var1.

Exponentielle

Var3 = var2 ** var1.

Add-corresponding - ...

Supposons définies, deux structures str1 et str2.Str1 et Str2 ont en commun un certain nombre de champs com1, com2 …

ADD-CORRESPONDING str1 TO str2.

Est equivalent à :Add str1-com1 to str2-com1.Add str1-com2 to srt2-com2.…

Les autres champs restent inchangés.Cela est valable pour les structures et pour les entêtes de tables.

1.5.1.2. opérations sur textes

Concatenate

CONCATENATE char1 char2 … charn INTO char.

Les blancs à la fin de chaque char sont ignorés.Les blancs de début de chaque char sont retenus.

Exemples : concatenate 'ABC ' 'DE' into w_var.

w_var aura le contenu ‘ABCDE’.

concatenate ‘ABC’ ‘ DE’ into w_varw_var aura le contenu ‘ABC DE’

CONCATENATE w_char1 w_char2 … w_charn INTO char SEPARATED BY separateur.

34 / 63

Page 35: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

La longueur du séparateur separateur est respectée ( les blancs sont repris ).

Exemples :Le resultat de var après: concatenate ‘ABC ‘ ‘DE’ into var separated by separateur.sera ‘ABCXXDE’ si separateur est égal à ‘XX’ (separateur de longueur 2 )

‘ABCXX DE’ si separateur est égal à ‘XX ’ (separateur de longueur 3 )

Translate

TRANSLATE w_char TO UPPER CASE. Convertir en majuscules TRANSLATE w_char TO LOWER CASE. Convertir en minuscules

TRANSLATE w_char using w_char2.

w_char2 joue le rôle d’une table de conversion où le premier caractère est destiné à être remplacé par le deuxième le troisième par le quatrième etc. Si :

W_char = ‘X0xhX01’Translate char using ‘X0ha’

Pour chaque caractère de w_char : remplacer les ‘X’ par un ‘0’.les ‘h’ par un ‘a’.

w_char contiendra donc la valeur ‘00xa001’.

La distinction majuscules et minuscules est respectée.

Shift

Pour déplacer les caractères à l’intérieur d’une chaîne.

Supposons que la variable w_char contient la valeur ‘ABCDE’Opération Valeur de char à la fin de l’opérationSHIFT w_char ou SHIFT w_char LEFT ‘BCDE ‘SHIFT w_char RIGHT ‘ ABCD’SHIFT w_char CIRCULAR ‘BCDEA’

Voir l’aide pour : shift char by n placesShift char up to c1.Shift char left deleting leading c1.Shift char right deleting trailing c1.

Replace

REPLACE string1 WITH string2 INTO w_char.

Exemple :w_char = ‘ABCD’.

35 / 63

Page 36: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

replace 'B' with 'string' into w_char.

w_char aura la valeur ‘AstringCD’.

Les caractère qui sont au delà de la longueur de la chaîne résultat de ce traitement sont perdus.

Condense

CONDENSE w_char.

Suppression des blancs au début d’une chaîne de caractères.Exemple :

w_char = ‘ FIN’.Après Condense w_char2. , w_char2 aura la valeur ‘FIN’.

Exercice : ZZML0018.

1.5.2. Affectations

1.5.2.1. Move

MOVE var1 TO var2. var2 = var1.

L’affectation multiple est possible.

Exemple : var3 = var2 = var.

1.5.2.2. Move-corresponding

MOVE-CORRESPONDING str1 TO str2.

Supposons définies, deux structures str1 et str2.Str1 et Str2 ont en commun un certain nombre de champs com1, com2 …

move-corresponding str1 to str2.

Est équivalent à :move str1-com1 to str2-com1.move str1-com2 to srt2-com2

La valeur des autres champs reste inchangée.

1.5.2.3. Clear

36 / 63

Page 37: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

CLEAR zone.

Remet la valeur initiale dans zone en fonction de son type.

ExempleSi w_char est de type caractères ( c ), clrear w_char remettra la valeur space dans w_char.

CLEAR g_struc.

Equivalent à clear pour chaque champ de la structure.

clear t_tab.Si tab est avec entête : Initialise l’entête de la table.Si tab est sans entête : Initialise toute la table.

1.5.2.4. Assign

Voir field-symbols.

1.5.2.5. ExtractVoir field-groups.

1.5.2.6. Write to

WRITE f1 TO f2.

Ecriture d’un champ dans un autre. La valeur écrite dans le champ cible sera la même que celle qui s’affichera à l’écran avec une instruction write . Les paramètres utilisateur tel que le format de décimale sont pris en compte.

Ici on peut utiliser les offset.

Exemple :Write w_char1to w_char2+2(4)

WRITE f TO t_itab INDEX n.

L’écriture se fait dans la nième ligne de la table interne. Les spécifications des offset et

longueurs se font par rapport à la structure de la ligne de la table.

1.5.2.7. Set Parameter ID

SET PARAMETER ID pid FIELD f.

Envoi d’une donnée à la mémoire globale SAP.

37 / 63

Page 38: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Exemple :set parameter id 'MAT' field '40-100C'.Envoi de la valeur '40-100C'dans la mémoire globale SAP sous l’ID « MAT » qui désigne le n° d’article dans les transaction sap.Si on lance la transaction ‘MM03’, par exemple, après l’exécution de cette instruction la valeur par défaut proposée pour le numéro d’article est '40-100C'. 

pour trouver l’identifiant de la zone mémoire, il suffit de faire F1, puis F9 sur la zone d’écran.

1.5.2.8. Get Parameter ID

GET PARAMETER ID pid FIELD f.

Récupération de données envoyées à la mémoire centrale globale SAP, par exemple par set parameter. Voir call transaction pour un exemple.

Exercice : ZZML0019, ZZML0A19 et ZZML0B19.

1.5.3. Les données système

Les données système sont disponibles dans la structure SYST.Elle peuvent être appelées par sy-nom : sy-subrc.Afficher cette structure par SE11, ou par show dans la barre de commande si vous êtes en mode éditeur. ( show sy ).ExemplesDonnée SignificationSy-subrc Code retourSy-index Indice courant dans une boucle DO

38 / 63

Page 39: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Sy-tabix Indice courant dans une boucle LOOPSy-repid Nom du reportSy-pagno N° de page courantSy-lisel Contenu d’une ligne après sélection Sy-curowSy-cucol

Position du curseur

Sy-dbsys Base de données utiliséeSy-opsys Système d’exploitationSy-batch Est-on en mode batch

ces variables sont accessibles en lecture.

1.6.Bases de données logiques

1.6.1. Structures

Une base de données logique est une méthode d’accès aux données.Les programmes ABAP peuvent lire et traiter les données via cette méthode.Pour qu’un programme ABAP puisse utiliser cette méthode il faut que la BD logique soit déclarée dans les attributs du programme.

Le nom d’une BD logique est composé de 3 lettres dont la dernière correspond à l’application ( material, sales, …)

1.6.1.1. SE36Outils / ABAP4 workbench / développement / environnement de développ / BD Logiques

Structure

Une BD Logique a une architecture arborescente. Cette structure détermine l’ordre dans lequel les données sont mises à disposition pour le programme ABAP :

- un seul nœud au niveau le plus haut.- Chaque nœud peut avoir plusieurs fils- Un nœud ne peut être que le fils d’un seul autre nœud.

Programmes

A la BD Logique XXX est associé le programme SAPDBXXX.

39 / 63

Page 40: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Le programme de la BD Logique contient des routines qui sont appelées par ABAP lors de la soumission du programme.Ces routines permettent la préparation des écrans de sélection, la sélection des données, et le contrôle des autorisations.

Sélections

Les écrans de sélection sont définis dans le programme DBxxxSEL ou xxx est la BD logique.

1.6.1.2. Déclaration dans un programme

Attributs de SE38

1.6.2. Instructions

1.6.2.1. Get

GET DBTable.

Cet événement est déclenché à la lecture des données via la BD logique .On peut ici accéder à tous les champs de la table appelée.Les tables hiérarchiquement supérieures à DBTable sont lues. Celles qui sont déclarées en début de programme sont donc accessibles.

1.6.2.2. Get DBTable Late

Get DBTable Late.Pour exécuter un traitement à la fin de la lecture de toutes les tables qui sont hiérarchiquement inférieures à DBTable.

exemple :

40 / 63

Page 41: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Table1 ___ |---- table2

Si table2 contient plusieurs occurrences comportant une quantité Q pour la même clé Key de table1.

Get table2. somme = somme + Q.Gat table1 late.

Write somme. Clear somme.

1.6.2.3. Reject

Exemple BD Logique F1S Hiérarchie: SPFLI -> SFLIGHT -> SBOOK TABLES: SFLIGHT, SBOOK. GET SFLIGHT. ... GET SBOOK. ... REJECT 'SFLIGHT'. ...

dans ce cas le traitement de GET SBOOK est interrompu et on continue avec le traitement de GET SFLIGHT.

1.6.2.4. Check Select-options

Check select-options.

Vérification des select-options ajoutées aux sélections de la BD Logique.

1.6.3. Sélection

1.6.3.1. Ecrans de sélection

L’écran de sélection est généré avec les select-options et parameters de la BD Logique ainsi que celles du programme.

41 / 63

Page 42: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.7.Commandes d’édition

1.7.1. Write

L’instruction write permet l’édition du contenu d’une zone à l’écran. Des zones successives éditées par write sont séparées par un espace.

1.7.1.1. Positionnement

WRITE 5(10) champ.Edition à la position 5 sur une longueur 10.

Saut de ligne « / »

WRITE / champ.Saut de ligne avant l’édition de champ.

WRITE /.Saut de ligne.

At

WRITE AT 10 champ. write 10 champ.

Position

POSITION 5.Définit une position à laquelle le write qui suit effectuera l’addition.

1.7.1.2. Options

No-zero

Suppression des zéro non significatifs.Material = ‘00000654’.Write material NO-ZERO.

Résultat : 654.

No-signEdition des nombres négatifs sans signe.

DecimalsSpécification du nombre de décimales à éditer.

DD/MM/YYWRITE date DD/MM/YY.

On peut aussi utiliser les formats d’affichage suivants :

42 / 63

Page 43: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

MM/DD/YYDD/MM/YYYYMM/DD/YYYY DDMMYY MMDDYY YYMMDDOù DD est le jour, MM le mois et YY l’année.

Using edit mask

WRITE champ USING EDIT MASK masque.

Formate l’édition en fonction du masque d’édition spécifié.

Write (8) time using edit mask ‘__ H__ :__’.

Under

WRITE zone1 UNDER zone2.Permet d’éditer une zone dans la même colonne qu’une autre zone.

w_var = ‘hello’.Write 10 w_var.Write / ‘bonjour’ under w_var.

Le résultat sera : hello bonjour

No-gap

Write ajoute un espacement entre les champ à éditer successivement.Pour éviter cet espace il faut utiliser NO-GAP.

Left-justified – centered – right-justified

Pour aligner les éditions.Par défaut :

- Les zones numériques sont alignés à droite.- Toutes les autres zones sont alignées à gauche.

1.7.2. Format

Détermine la manière dont les données seront affichées à l’écran.

1.7.2.1. Color

FORMAT COLOR n.

43 / 63

Page 44: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Définition de la couleur d’arrière plan.

1.7.2.2. Intensified

Affichage en surbrillance.

1.7.2.3. Input

Zone en saisie.

1.7.2.4. Back

Dans le cas où l’instruction reserve n’est pas utilisée, Back permet de retourner à la première ligne de la page juste après les ligne d’entête (gérées dans l’événement top-of-page )

Après l’instruction reserve n lines , back retourne à la première ligne de ce groupe.

1.7.3. New-page

Débute une nouvelle page.

1.7.3.1. Line-count

1.7.3.2. Line-size

1.7.3.3. Print-on

1.7.4. Skip

Skip. Saut d'une ligne.Skip n. Saut de n ligne.Skip to line n. Se positionner sur la ligne n.

1.7.5. Position

Précise le n° de colonne où se fera l’ordre write qui suit. L’ ordre write ne doit pas dans ce cas posséder de clause ‘/’ ni de n° de colonne.

1.7.6. Uline

Uline. Dessin d'une ligne horizontale.

1.7.7. Reserve

RESERVE n LINES.

Permet de passer à la page suivante s’il reste moins de n lignes.

44 / 63

Page 45: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.7.8. Set blank lines on

Permet d’afficher les lignes vides.

45 / 63

Page 46: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.8.Commandes de tables internes

1.8.1. Mise à jour

1.8.1.1. Insert

INSERT t_itab.

Insertion d’une ligne avec le contenu du header dans la table.

INSERT t_itab INDEX n.Insertion de ligne à la position n.

1.8.1.2. Modify

MODIFY t_itab.

Modification de la ligne courante au cours d’un loop après avoir affecté les valeurs voulues au header.

MODIFY t_itab INDEX n.

Modification de la ligne n° n.

1.8.1.3. AppendAjoute une occurrence à la table.

APPEND t_itab.

Ajoute le contenu de l'entête de table en fin de table.

1.8.1.4. Collect

1.8.1.5. Delete

Supprime une ligne d’une table interne.

DELETE t_itab.

Supprime la ligne courante de la table interne.

46 / 63

Page 47: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.8.2. Réinitialisation

1.8.2.1. Clear

CLEAR t_itab.

Initialisation de l’entête de la table interne.

1.8.2.2. Refresh

REFRESH t_itab.

Initialisation de la table entière. Suppression de toutes les lignes.

1.8.2.3. Free

FREE t_itab.

Libération de la mémoire utilisée par la table.

1.8.3. Sort

SORT t_itab.

Tri d'une table interne.

1.8.3.1. By

SORT t_itab BY champ1 chmap2 …

Tri de ITAB par les champs champ1 champ2 …

1.8.3.2. Ascending – Descending

SORT t_itab BY champ1 chmap2 …ASCENDING champn… DESCENDING.

Définit le sens de tri.

1.8.4. Read table

READ TABLE t_itab WITH KEY Champ1 = … Champ 2= …

….Se positionne sur le premier enregistrement vérifiant les critères spécifiées.

1.8.5. Loop at ... Endloop

47 / 63

Page 48: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

LOOP AT t_itab.…ENDLOOP.

LOOP AT t_itab WHERE conditions…ENDLOOP

Lecture des occurrences de la table interne vérifiant les conditions spécifiées. Exercice : ZZML0020.

1.9.Commandes de Field-groups

La production de listes triées est facilitée par l’utilisation des field-groups.

Les fileld-groups sont déclarés en début du report par :

FIELD-GROUPS : header,Field1,…

Header doit toujours être spécifié.

1.9.1. Insert

Pour l’affectation des zones aux groupe de zones :

INSERT liste_de_zones INTO header.

Cette instruction n’est qu’une association, il n’y a pas de manipulation de données à ce stade.

Cette association n’est figée que lorsqu’on procède au premier extract.

1.9.2. Extract

EXTRACT nom_de_field-groups.

Permet de stocker les données dans le dataset défini par le groupe de zones.

A chaque extract nom_de_field-groups le dataset est rempli de la façon suivante :

Header nom_de_field-groupsFh1 Fh2 … Fhn Fn1 Fn2 … Fnn

48 / 63

Page 49: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.9.3. Sort

SORT.

Permet de trier le dataset par les champs associés au header.

Après l’exécution de sort aucun extract n’est possible.

1.9.4. Loop ... Endloop

1.9.4.1. At first, At new, At end of, At last, at field-group.

Utilisation similaire que dans loop at itab.

AT nom_de_field-groups.

Evénement déclenché à chaque lecture de ce field-group.

AT nom_de_field-groups1 WITH nom_de_field-groups2.

Evénement déclenché à chaque lecture du premier field-group s’il est suivi par le deuxième field-group dans le dataset.

1.9.4.2. Sum( ), Cnt( )

SUM(f1) = la somme des valeur contenues dans f1.CNT(f1) = compte les différentes valeurs de f1.

Exercice : ZZML0021.

1.10. Fichiers

1.10.1. Fichiers sur le serveur (application server)

1.10.1.1. Open

OPEN DATASET nom_du_fichier FOR INPUT.

Ouverture d’un fichier pour lecture.

OPEN DATASET nom_du_fichier FOR OUTPUT.

49 / 63

Page 50: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Ouverture d’un fichier pour écriture.

On peut récupérer le message du système d’exploitation à l’ouverture en utilisant une variable w_mess(60) et en utilisant la syntaxe

Open dataset nom_du_fichier message w_mess.

1.10.1.2. Read dataset

READ DATASET nom_de_fichier INTO g_struc.

Lecture d’un enregistrement du fichier dans la structure g_struc ou dans une entête de table interne.

1.10.1.3. Transfer

TRANSFER g_struc TO nom de fichier.

Ecriture dans un fichier du contenu de la structure struc ou entête de table.

1.10.1.4. Close

CLOSE DATASET nom de fichier.

Fermeture d’un fichier.

Exercice : ZZML0022.

1.10.2. Fichiers locaux

Les fichier locaux sont accessibles par des fonctions spéciales .

1.10.2.1. WS_DOWNLOAD

CALL FUNCTION ‘WS_DOWNLOAD’.

Chargement d’un fichier local dans une table interne.

1.10.2.2. WS_UPLOAD.

CALL FUNCTION ‘WS_UPLOAD’.

Sauvegarde du contenu d’une table interne dans un fichier local.

Exercices : ZZML0023 , ZZML0A23.

50 / 63

Page 51: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

1.11. Batch-Input

1.11.1. Présentation

Le batch input est une méthode de transfert de données vers SAP.

Elle est utilisée pour le transfert initial des données de l’ancien système vers SAP.Elle est utilisée pour faire coexister d’autre systèmes avec SAP qui génèrent des données indispensables et qu’on doit transférer régulièrement.

Le batch input permet, à partir du programme de reprise, de créer un dossier batch input.

1.11.2. Table de transfert

Les données sont écrites dans une table interne avant leur insertion dans le dossier.Cette table doit avoir la structure BDCDATA (structure livrée par SAP)

champ type long DescriptionPROGRAM CHAR 8 Pool de modules BDCDYNPRO NUMC 4 Numéro de dynpro BDCDYNBEGIN CHAR 1 Lancement BDC d'un dynproFNAM CHAR 35 Noms de zones BDCFVAL CHAR 132 BDC-FieldValue

1.11.3. Fonctions utilisée

Les fonctions décrites ci-dessous sont utilisées dans le programme de reprise qui créera le dossier batch input.

1.11.3.1. Ouverture du dossier

CALL FUNCTION ‘BDC_OPEN’.

Ouverture du dossier batch-input.

1.11.3.2. Transfert dans la table Pour transférer un écran  on renseignera la table de la façon suivante :

PROGRAM Nom du programmeDYNPRO Le n° d’écranDYNBEGIN XFNAM VideFVAL Vide

Pour transférer un champ

PROGRAM Nom du programmeDYNPRO Vide

51 / 63

Page 52: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

DYNBEGIN VideFNAM Nom technique du champFVAL Valeur à transmettre

1.11.3.3. Insertion dans le dossier

CALL FUNCTION ‘BDC_INSERT’.

Insère les données dans la transaction.

1.11.3.4. Fermeture du dossier

CALL FUNCTION ‘BDC_CLOSE’

1.11.4. Programmation

Il est conseillé d’utiliser le squelette suivant :

REPORT ZBTCIMOD .

PARAMETERS: DOSSIER(12).

* Batchinputdata of single transactionDATA: BEGIN OF BDC_TAB OCCURS 0. INCLUDE STRUCTURE BDCDATA.DATA: END OF BDCDATA.

START-OF-SELECTION.

PERFORM OPEN_GROUP.

*----- boucle d'insertion des donnéesCLEAR BDC_TAB.REFRESH BDC_TAB.PERFORM BDC_DYNPRO USING : 'program' 'écran'.PERFORM BDC_FIELD USING : 'champ' 'valaur'.

*----- insertion de la transactionPERFORM BDC_INSERT USING 'Tran'.*------ fin de la boucle.PERFORM CLOSE_GROUP.

*---------------------------------------------------------------------** forms*---------------------------------------------------------------------**----------------------------------------------------------------------** creation de dossier batch input **----------------------------------------------------------------------*FORM OPEN_GROUP.

52 / 63

Page 53: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = DOSSIER USER = SY-UNAME KEEP = 'X' HOLDDATE = SY-DATUM.ENDFORM.

*----------------------------------------------------------------------** fermeture du dossier **----------------------------------------------------------------------*FORM CLOSE_GROUP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.ENDFORM.

*----------------------------------------------------------------------** insertion d'une transaction **----------------------------------------------------------------------*FORM BDC_INSERT USING TCODE. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = BDC_TAB..ENDFORM.

*----------------------------------------------------------------------** insertion d'un écran **----------------------------------------------------------------------*FORM BDC_DYNPRO USING PROGRAM DYNPRO. CLEAR BDC_TAB. BDC_TAB-PROGRAM = PROGRAM. BDC_TAB-DYNPRO = DYNPRO. BDC_TAB-DYNBEGIN = 'X'. APPEND BDC_TAB.ENDFORM.

*----------------------------------------------------------------------** insertion d'un champ **----------------------------------------------------------------------*FORM BDC_FIELD USING FNAM FVAL. CLEAR BDC_TAB. BDC_TAB-FNAM = FNAM. BDC_TAB-FVAL = FVAL. APPEND BDC_TAB.ENDFORM.

Modèle : ZZBTIMOD.

53 / 63

Page 54: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

2. Sapscript

SAPScript est un traitement de texte intégré.

Il est utilisé pour la réalisation, la mise en forme et l’édition de formulaires (états) et de textes standards.Il existe déjà un certain nombre de formulaires standards dans SAP tels que bon de commande, facture, relance client, etc.

2.1.Formulaires

Le chemin pour y accéder est : outils/traitement de texte/formulaire, ou par la transaction SE71.

Un formulaire est constitué des éléments suivants :Entête, pages, fenêtres, fenêtres de page, paragraphes, chaînes de caractères, éléments de textes.

2.1.1. Entête de formulaire Données générales du formulaires en particulier :

- la langue du formulaire - la langue d’origine- la date et l’heure de création, l’auteur de la création.

Une page de début doit être indiquée à ce niveau.

54 / 63

Page 55: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

2.1.2. Pages Un formulaire doit être défini par au moins une page logique.Pour définir une page : Traiter / créer élément

Donner un nom de page (FIRST, NEXT, LAST) et une courte description.

2.1.3. Fenêtres

Toute donnée éditée dans un formulaire doit se faire dans une fenêtre.Ici on définit les fenêtres : nom, type. Les dimensions et positions sont faites au niveau des fenêtres de pages.La fenêtre MAIN est une fenêtre obligatoire définie par défaut.

55 / 63

Page 56: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

2.1.4. Fenêtres de page

Dans cette section on associe les fenêtres aux pages.Chaque fenêtre est correctement positionnée et dimensionnée dans la page.

2.1.5. Paragraphes

Les paragraphes sont définis par un type de police, une taille de police et des tabulations pour formater de blocs de textes.Exemple : P1 Texte1 Texte2

Texte3

2.1.6. Chaînes de caractères Les chaînes de caractères sont définies par un type et une taille de police pour formater des blocs de textes à l’intérieur d’un paragraphe.Exemple : P1 Texte1

<GR> Texte2 </> Texte3

2.1.7. Eléments de texte

Les éléments de texte sont associés à chaque fenêtre. Ils définissent le contenu de la fenêtre.

2.1.7.1. Elément de texteLes éléments de texte permettent de regrouper des blocs de texte. Un élément de texte est désigné par un nom.

/E nom de l’élément 1P1 texte

/E nom de l’élément 2P1 texte

...

Les éléments de textes sont sélectionnés dans le programme de pilotage.

56 / 63

Page 57: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

2.1.7.2. Paragraphe

Une ligne a le format du paragraphe utilisé.

2.1.7.3. Ligne de commande

/ : définit une ligne de commande

2.1.7.4. Commentaire

/* définit un commentaire

2.1.7.5. Commandes

Quelques commandes SAPScript :

NEW-PAGE : passage à une nouvelle page

PROTECT … ENDPROTECT : paragraphe solidaire

DEFINE : définir un symbole de texte / :define &mon_symbol& = ‘valeur’

INCLUDE : /: INCLUDE MYTEXT LANGUAGE 'E' PARAGRAPH 'A1'MYTEXT étant un texte standard

ADDRESSENDADDRESS : formate l’adresse suivant le pays défini au niveau du paramètre

COUNTRY TOP

ENDTOP : les lignes de textes comprises entre ces deux commandes seront toujours affichées au début de chaque fenêtre MAIN

BOTTOMENDBOTTOM : les lignes de textes comprises entre ces deux commandes

seront toujours affichées à la fin de chaque fenêtre MAINIF condition

ENDIF : les lignes comprises entre ces deux commandes seront affichées seulement si la condition est vérifiée

CASE symbol

57 / 63

Page 58: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

ENDCASE : teste un symbol donné par rapport à des valeurs spécifiques PERFORM

ENDPERFORM : appel de sous-programmes (FORM) d’autres programmes/ : Perform <form> in program <prog> / : Endperform

BOX, POSITION, SIZE : dessiner des cadres/ : BOX [xppos] [ypos] [width] [height] [frame] [intensity]/ : POSITION [xorigin] [yorigin] [window] [page]/ : SIZE [width] [height] [window] [page]

2.1.8. Gestion des langues dans les formulaires

Un formulaire est créé dans une langue d ’origine.Le formulaire supporte plusieurs langues.La conception du formulaire ( définition de pages, de fenêtres, de positionnement…), se fait dans la langue d’origine.Dans les autres langues on peut personnaliser le contenu des fenêtres ( éléments de texte ).

2.1.9. Copie de formulaire

Avant toute modification de formulaire standard, procéder d’abord à une copie du formulaire concerné sous un nom commençant par un ‘Y’ ou un ‘Z’.Pour cela, une fois dans l’écran de gestion des formulaires SE71, faire utilitaire/copier du mandant.Renseigner les zones :

- Nom du formulaire par le nom du formulaire à copier- Mandant source par le mandant où se trouve le formulaire à copier- Formulaire cible par un nom de formulaire commençant par ‘Y’ ou ‘Z’.

2.1.10. Impression des informations concernant un formulaire

En mode affichage ou modification : utilitaires/info formulaire

2.2.Programme de pilotage d’un formulaire

58 / 63

ABAPProgramme de pilotage

Formulaire

Langue1 Langue2 Langue3

Page 59: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

2.2.1. Open_Form

Call function ‘OPEN_FORM’Exporting

Form = nom du formulaireLanguage = langue du formulaire.

Ouverture du formulaire.

2.2.2. Start Form

Call function ‘START_FORM’Importing

Form = nom du formulaire Language = langue du formulaireStartpage = première page

ExportingLanguage = langue du formulaire.

Début du formulaire.

2.2.3. Write_Form

Call function ‘WRITE_FORM’Importing

Element = nom d’élément de texte Window = nom de fenêtre.

Ecriture dans le formulaire.

2.2.4. End Form

Call function ‘END_FORM’.

Fermeture de formulaire si la fonction ‘start_form’ a été appelée.

2.2.5. Close_Form

Call function ‘CLOSE_FORM’.

59 / 63

Page 60: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

Fermeture de formulaire.

2.2.6. Exemple (ZZARSAPS)

2.3.Textes standards

La création d’un texte standard se fait via outils/traitement de texte/texte standard par :

- Le nom du texte- Un id- Une langue

Le texte standard ainsi créé peut être appelé dans les formulaires :

/ : INCLUDE nom [OBJECT o] [ID i] [LANGUAGE l] [PARAGRAPH p]

3. Introduction à la programmation interactive

La programmation interactive permet à l’utilisateur de participer activement au déroulement du processus.Pour les états interactifs, par exemple :au lieu d’avoir une seule liste avec toutes les informations de commandes, on peut créer une première liste à partir duquel l’utilisateur peut se positionner sur une ligne de commande et en double cliquant fait apparaître dans une seconde liste les informations détaillées de la commande.

3.1.Hide

HIDE < f >.

La technique du ‘Hide’ est utilisé lors de la création de listes à plusieurs niveaux pour garder en mémoire une information spécifique dans le but de l’utiliser plus tard.

Exemple : Hide EKKO-EBELN. (cf programme ZLISTINT)

60 / 63

Page 61: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

3.2.Set

3.2.1. Pf-status

SET PF-STATUS pfstat.

Cette commande a pour effet l’activation du statut pfstat.Un statut est constitué d’une barre de menus, de touches de fonctions, de boutons de commande et d’un certain nombre de fonctions actives. Ces éléments sont à créer via MENU PAINTER (Transaction SE41).

Exemple : Set pf-status ‘ZLISTINT’. (cf programme ZLISTINT)

3.2.2. Titlebar

SET TITLEBAR titre.

Cette commande a pour effet l’activation d’un titre d’écran. Titre est un alphanumérique sur 3 caractères entre cotes. L’élément titre doit être créé via MENU PAINTER (Transaction SE41).

Exemple : Set titlebar ‘T02’. (cf programme ZLISTINT)

3.2.3. Screen

SET SCREEN scr. (scr est un numéro d’écran)

Cette commande a pour effet d’appeler l’écran numéro scr immédiatement après l’écran en cours.

3.2.4. Cursor

SET CURSOR FIELD f.

Cette commande a pour effet de positionner dynamiquement le curseur au début du champ f.

SET CURSOR FIELD f LINE x OFFSET y.

Cette commande a pour effet de positionner dynamiquement le curseur à la ligne x de la liste et à la position y du champ f.

Exemple : Cf programme ZSETCURS.

61 / 63

Page 62: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

3.3.Evènements pour liste interactive

3.3.1. AT LINE SELECTION

Cet événement est activé lorsque l’utilisateur double clique sur une ligne valide de la liste de base.

Exemple : Cf programme ZLISTINT.

3.3.2. AT USER COMMAND

Cet événement permet au programme d’agir lorsque l’utilisateur sélectionne un code fonction.

Exemple : Cf programme ZLISTINT.

4. Divers

4.1.1. Include

Pour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer des include.

INCLUDE zzinclud.

revient à insérer le contenu de zzinclud.

4.1.2. Message

Chaque programme ABAP (PROGRAM ou REPORT) peut être associé à une classe de messages.Une classe de messages contient un ou plusieurs messages et est identifiée par un ID nn où nn est un alphanumérique sur 2 positions.Exemple : PROGRAM ZACCTSP MESSAGE-ID 89.Pour la gestion des messages :

ABAP /4 development workbench/Envir. développement/Messages

4.1.2.1. Id - Type – Number

La commande Message xnnn a pour effet l’affichage du message numéro nnn pour le message-id spécifié dans le programme avec le type de message x, où x peut prendre les valeurs suivantes :

I – Info : tapez sur ENTREE pour continuer W – Warning : correction possible

62 / 63

Page 63: Formation Développement SAPsap.technique.free.fr/doc/Formation%20D%e9velopement%20... · Web viewPour une meilleure lisibilité ou pour pouvoir réutiliser du code on peut créer

Formation ABAPVersion : 1.0

E – Error : correction obligatoire A – Abend : transaction terminée X – Exit : transaction terminée avec short dump

S - Success : Message sur écran suivant

Exemple : programme ZLISTINT.

4.1.2.2. With

Si on rajoute à la commande précédente with f1 … f4, cela a pour effet d’insérer le contenu des champs fi consécutivement à la place des & dans les textes de messages.

Exemple : Message E010 with ‘Exemple’ sy-uname.

Exemple : programme ZLISTINT.

4.1.2.3. Raising exception

Raising exception ne peut être rajouté à la commande précédente que si on se trouve au niveau d’un module fonction.

Exemple : Message E777 raising not_found.

5. Normes de programmation

5.1.1. Document joint

5.1.2. Programme modèle (ZZARMODE)

5.1.3. Programme exemple (ZZAREXEM)

63 / 63