Vous êtes sur la page 1sur 206

SOMMAIRE

SOMMAIRE

SOMMAIRE

 

I

Introduction à SAP

 

1

Client serveur Processus Instances Mandants Premiers pas sous SAP R/3 ABAP/4 (Advanced Business Application Programming)

1

1

1

1

2

3

L’EDITION DE DONNEES

 

7

Instruction WRITE

7

Symboles et icônes dans les

7

Spécifications de format

7

Symbole de

8

En-tête de page

8

Rupture de page / nouvelle

9

Attribut d‟édition

9

ZONES 7
ZONES 7

Liste des Zones système

TYPES DE DONNEES

Types de données ABAP/4, attributs et

DECLARATION

10

10

14

14

15

Déclaration des données

15

Déclaration de

15

Les tables

15

Déclaration des structures de

16

Déclaration de zones

16

OPERATIONS SUR LES VARIABLES

17

Affectation de

17

Expressions arithmétiques

17

18

Opérations de chaîne

18

Opérateurs relationnels

19

OPERATEURS CONDITIONNELS

20

Instruction IF

20

Instruction

20

Boucle

21

Boucle WHILE :

21

Instruction CHECK

21

Instruction

21

Instruction STOP

21

LES TABLES

22

Remplir "une table à la main"

22

Consulter les données d‟une table "à la main"

22

Remplissage des tables

22

Tri des tables internes

23

Traitement des tables

24

Lecture des entrées des tables internes

24

Modification des

25

Suppression des tables

26

Les stocks de données intermédiaires

26

INSTRUCTIONS SELECT

I

27

SOMMAIRE

Instruction select

27

Instruction select

27

SELECT * FROM <tab> INTO TABLE <tabint> FOR ALL ENTRIES IN

27

Maximum minimum

27

LES BASES DE DONNEES LOGIQUES

28

Les bases de données logiques

28

Acquisition de données à l‟aide d‟une base de donnée

28

La structure de la base de données logique F1S est la suivante :

29

Le programme associé à la BDL F1S est le suivant :

29

Le programme concernant l'écran de sélection de F1S est:

35

Les textes de sélection concernant F1S:

36

Les matchcodes concernant la BDL F1S sont:

36

Un exemple de programme ZHENBDL1 rappelant la BDL F1S:

37

Deuxième exemple avec la BDL KDF

39

ECRAN DE SELECTION

41

SELECT-OPTION

41

Déclaration des zones avec PARAMETERS

41

42

AT SELECTION-SCREEN

42

Création d'écrans de sélections.

44

Programme permettant la saisie d'un vol aérien:

44

Création d'écran pour l'aide en ligne (touches F1 et F4)

45

Les événements AT sous ABAP/4

50

AT Evénements dans les listes

50

AT - Evénements dans les écrans de sélection

53

AT - Points de contrôle avec les stocks de données intermédiaires

56

AT Points de contrôle avec les tables internes

58

LISTES
LISTES

61

Lecture des listes

61

Modification des listes

61

FENETRES

62

Instruction Window

62

L'Object Browser

63

Création d'une interface de saisie

64

Création d'un écran de commande STATUT GUI

68

Les écrans de

69

La

transaction

70

La programmation

71

Le Batch Input

87

Le batch input

87

Exercice sur l'importation de données

88

Les bons reflexes:

90

Informations sur le batch input

91

Mise en œuvre d'un dossier Batch Input

92

Lancement du Batch Input

98

SAPscript

99

Les formulaires

99

Impression d'un formulaire :

104

Quelques commandes SAP pour le sapscript

105

Symboles dans SAPscript:

106

Fonction d'appels sous ABAP/4

107

CALL FUNCTION 'OPEN_FORM'

107

CALL FUNCTION 'START_FORM'

107

II

SOMMAIRE

CALL FUNCTION 'WRITE_FORM'

107

CALL FUNCTION 'END_FORM'

108

CALL FUNCTION 'CLOSE_FORM'

108

Exercice

108

GESTION DES MESSAGES EXEMPLE ET EXPLICATIONS

121

MODULARISATION

123

Les instructions PERFORM et FORM

123

Passage par valeurs entre paramètres réels et paramètres formels

123

L‟instruction SUBMIT

126

TRUCS ET ASTUCES

127

Création de vues

127

CREATION DE

128

Gestion de curseurs en lecture de table

132

Astuces lors de l‟affichage de listes

133

COMMANDES SQL :

136

Affectation dynamique

138

Ecrire des

140

Liste alphabétique des commandes SAP

141

Classification des mots clés par type

 

148

Mots clés déclaratifs :

148

Mots clés liés aux événements :

148

Mots clés de contrôle :

148

Mots clés liés aux opérations :

149

Commentaires

151

Appel aux composantes d‟autres programmes :

151

Quelques transactions utiles à connaître

ANNEXE

Les codes à barres

152

154

154

Les codes à barres dans SAPscript et le Système de Spool

154

Impression des codes à

156

Impression OCR dans le système de SAP

156

Codes à barres et SAPWIN

157

Compatibilité entre le code à barres .DLL et SAPLPD

158

Configuration requise

158

Test d‟impression des codes à barres

158

Ajouter vos propres définition des codes à barres

159

BC410

161

Autres techniques dans Screen Painter et Menu Painter

161

Mise à jour asynchrone

166

Concept de blocage SAP

170

Modification dynamique des écrans

172

Table Control

173

Lien entre les composantes de

177

Fonction d'aide automatique et programmé

178

Liste des SAPistes

III

180

Introduction à SAP

Introduction à SAP

SAP (System Application Product in data processing)

domaine :

est composé de modules. Chacun est spécialisé dans un

- gestion des articles, stocks, achats, fournisseurs, inventaires

- appel d‟offre, commande client, livraison, facture, gestion fiche client

- comptabilité financière, trésorerie, investissement, contrôle de gestion

- gestion du personnel, salaire

- etc.…

MM

SD

FICO

HR

Les modules ont des liens + ou forts. Tous les modules ne sont pas forcément immédiatement indispensables pour une entreprise donnée. Ils peuvent être implantés progressivement dans le temps.

Les données sont conservées dans des tables.

Le langage ABAP/4 permet de faire le lien entre les modules et de redéfinir des états standards (c‟est le sapscript), de récupérer des données d‟une ancienne base (c‟est le batch-input), etc.

Client serveur

Le système SAP R/3 est distribué selon la technologie client/serveur. Ses composantes sont réparties sur trois niveaux.

le site central: il fonctionne comme un serveur de base de données, c'est-à-dire qu'il contient les processus constitutifs du service de base de données. Il abrite également le service de mise à jour du système R/3, ce qui signifie qu'il exécute les mises à jour de la base,

la logique applicative: le site central peut être connecté à plusieurs serveurs d'application, sur lesquels sont traitées la logique de l'application courante,

les frontaux: chaque serveur d'application peut être rattaché à plusieurs frontaux (postes de travail, PC), sur lesquels travaillent les utilisateurs. Toutes les tâches de présentation sont réalisées sur ces stations individuelles.

Processus

SAP fonctionne avec des processus de travail. Chacun gère un seul type de requêtes, tel que Dialog,

Background, Update, Enqueue ou Spool.

(voir page 1-4 du BC400)

Instances

Une instance est une unité administrative qui regroupe les composantes d'un système R/3 assurant un ou plusieurs services. Un système central SAP R/3est constitué d'une instance unique, comprenant tous les services indispensables. Chaque instance dispose de sa propre mémoire tampon SAP.

Mandants

La notion de mandant est très importante au sein de SAP. Dans le vocabulaire commercial ou technique, un mandant est une unité intégrée du système R/3. SAP fait la distinction entre quatre types de mandants, qui doivent être répartis dans au moins deux systèmes R/3 et jouent un rôle spécifique. Ces 4 types de mandant sont:

développement / test: permet de personnaliser ses activités, de réaliser et tester ses propres objets de repository (repository étant un terme englobant toutes les notions de traitement sur les tables système, transparentes, etc.), assurance qualité: permet de tester le customizing du système R/3, formation: Mandant sous lequel se passe les formations, production: ce mandant reçoit les options de customizing testées et les objets de repository. Il ne faut définir qu'un seul mandant de production.

Introduction à SAP

En standard, SAP R/3 comprend deux mandants identiques contenant les mêmes options de customizing, mais aucunes donnée d'application. Ainsi, le mandant 000 est le mandant de référence de SAP, modifié à chaque mise à niveau. Il ne faut absolument pas y toucher. Pour travailler, il faut utilisez le mandant 001.

Premiers pas sous SAP R/3

Lancement du programme sur un serveur de éloigné

Lors de la connexion sur le serveur de éloigné, via l'outil de connexion SAPgui, on accède à un écran de connexion dans lequel 4 champs sont à renseigner (voir la figure ci-contre). Le champ client demande le numéro du mandant qui va utiliser cette connexion. Dans notre cas, le mandant sera "900" (mandant de formation). Ce champ est renseigné par défaut par l'outil SAPgui. Dans notre cas, nous n'avons donc en fait que les trois champs suivants à remplir. Dans le cadre de la formation, les noms de login que l'on pourra utiliser sont du type "student_N" (en majuscules ou en minuscules), où N est un nombre compris entre 1 et 10 (dans l'exemple ci-contre, les nom de login est "student10"). Il faut ensuite donner le mot de passe de l'utilisateur "student10" pour accéder au progiciel SAP R/3. Pour l'ensemble des utilisateurs "student1" à "student10", ce mot de passe est "uniontec". Enfin, il ne faut pas omettre de spécifier la langue que l'on veut utiliser dans la zone "Language". Par défaut, le progiciel utilise la langue anglaise. Pour utiliser le français, taper la lettre "F" ou "f" dans la case adéquate. Il est possible par la suite d'omettre cette dernière case, si et seulement si on a spécifié au système R/3 que la langue par défaut sera le français. Cette opération est à réaliser dans le menu Système Données utilisateur.

Fenêtre SAP R/3

menu Système  Données utilisateur . Fenêtre SAP R/3 Une fois la connexion établie, on accède

Une fois la connexion établie, on accède à la fenêtre de base du système SAP R/3. Cette fenêtre permet de naviguer dans l'ensemble des modules du système R/3:

bureautique,

logistique,

gestion comptable,

gestion du personnel,

systèmes information,

outils.

du personnel,  systèmes information,  outils. Dans le cadre de la formation qui nous est

Dans le cadre

de la formation qui

nous est

proposée, nous allons étudiez le module "ABAP/4 development Workbench" (ABAP/4 = Advanced Business Application Programming / 4 (4 ème génération)), langage de programmation conçu par SAP, et qui permet de développer des applications de façon interactive. Toutes les applications développées avec ABAP/4 development Workbench peuvent fonctionner directement sur toute plate-forme, système de base de données ou interface utilisateur graphique gérés par SAP.

Introduction à SAP

ABAP/4 (Advanced Business Application Programming)

Module ABAP/4

Pour accéder au module ABAP/4, il faut cliquer sur le menu déroulant Outils ABAP/4 Workbench. Il faut alors cliquer sur le bouton "Editeur ABAP/4" pour arriver à l'éditeur tel que décrit ci-contre. Une autre technique pour atteindre l'éditeur est d'utiliser les "OK codes" dans la zone de saisie, située juste sous les menus déroulants. Le code pour l'éditeur ABAP/4 est:

SE38.

Afin de créer un nouveau programme, il faut donner un nom de programme valide (commençant par la lettre "Z"), et comportant au maximum 8 caractères. Les boutons à cocher, dans le menu "Sous-objets" servent à accéder aux différentes éléments du programme que l'on désire réaliser. Parmi ceux-ci, "Texte source" permet l'accès au listing du programme, "Attributs" autorise l'édition et les modifications des attributs du programme (application, classe de

ou encore "Eléments de texte"

développement,

permettra d'utiliser, au sein d'un programme ABAP/4, des variables textes qui contiendront des phrases types à afficher à l'écran. Cette technique permet alors de changer rapidement ces phrases, dans une langue étrangère, par exemple, sans avoir à parcourir l'ensemble du code source.

sans avoir à parcourir l'ensemble du code source. ), Création et édition d’un programme Nous allons

),

Création et édition d’un programme

Nous allons créer notre premier programme ABAP/4. Dans l'écran de la section précédente, il faut donner un nom au nouveau programme, nom commençant obligatoirement par la lettre Z. Ceci permet de dissocier les programmes personnels des programmes du système R/3. Dans l'exemple dont nous disposons ici, ce nom sera "Zchen6. On appuiera alors sur le bouton , pour accéder à la fenêtre d'édition des attributs du nouveau programme. Pour gérer les attributs de notre programme, nous allons:

renseigner la zone Désignation (titre descriptif de l'application), affecter à la zone Type la valeur 1 (on va créer un état), affecter à la zone Application la valeur S (programme système), remarque: pour connaître les valeurs que l'on peut attribuer à ces différentes zones, on peut cliquer sur la zone à renseigner, puis appuyer sur la touche fonction F4. Cette action ouvrira une fenêtre d'aide comprenant les valeurs accessibles ainsi qu'une brève description les concernant. Il faut cependant savoir, en ce qui concerne les attributs d'un programme, que la zone Classe de développement est obligatoire à renseigner. Elle permet de gérer la transportabilité du programme dans le système R/3. Dans notre cas, cette zone est automatiquement affectée de la valeur $TMP, classe de développement n'autorisant pas le transport des programmes. ces derniers sont alors considérés comme des objets locaux et privés. On sauvegarde alors le programme, puis, en cliquant sur le bouton , on accède à l'éditeur de lignes de code de ABAP/4 (figure ci-jointe). Comme on peut le constater sur la figure ci-jointe, un programme en ABAP/4 commence toujours par le mot clé REPORT, suivi par le nom du programme (ici ZCHEN6), et des instruction d'inclusion (dans notre cas NO STANDARD PAGE HEADING, signifiant que la désignation introduite dans les attributs du programme n'apparaîtrons pas sur la surface de l'écran. Un programme ABAP/4 est constitué d'instructions individuelles. Chaque mot clé, dans une instruction individuelle, est séparée du suivant par un espace. Chaque ligne de commande se termine par un point. On peut écrire plusieurs commandes sur une même ligne, du moment qu'elles sont séparées par des points, mais cela nuit à la lisibilité de l'ensemble du programme.

par des points, mais cela nuit à la lisibilité de l'ensemble du programme. Cours ABAP.doc Page
par des points, mais cela nuit à la lisibilité de l'ensemble du programme. Cours ABAP.doc Page

Introduction à SAP

Une commande peut également déborder du cadre de la ligne. Cela ne dérange pas l'interpréteur, du moment qu'il trouve bien un point à la fin de l'instruction. On peut également créer des instructions en chaîne, en concaténant plusieurs instructions consécutives dotées d'une partie commune, grâce au symbole ":", placé en fin de la partie commune, les parties concaténées étant séparées par des virgules. deux petits exemples pour clarifier les choses:

WRITE 'XYZ'. WRITE Name1. WRITE Counter1. WRITE: 'XYZ', Name1, Counter1. ADD 1 TO Counter1. ADD 1 TO Counter2. ADD 1 TO Counter3. ADD 1 TO: Counter1, Counter2, Counter3. On peut insérer deux types de commentaires en ABAP/4. Lorsqu'on désire documenter une ligne complète, on utilisera le symbole "*" en tout première position dans la ligne. La ligne complète deviendra alors rouge. Si l'on désire documenter une fin de ligne, derrière une instruction, on utilisera le symbole """, le commentaire restant de la même couleur que les instructions.

Introduction à SAP

trucs et astuces

Les retours à la page précédente s‟effectuent par le bouton ou en appuyant sur la touche la touche F3.

Si l'on n‟a pas renseigné les champs obligatoires (signalé par un ?), il est impossible de changer de page. Il

par un ?), il est impossible de changer de page. Il faut alors utiliser la flèche

faut alors utiliser la flèche jaune vers le haut (

page. Il faut alors utiliser la flèche jaune vers le haut ( ).  Pour naviguer

).

Pour naviguer plus facilement dans les écrans, penser à double cliquer sur les noms d‟objets ; on y accède alors directement sans passer par tous les menus (si l'objet n‟existe pas, il est alors créer).

Utiliser la Tabulation pour passer d‟une case à remplir à l‟autre.

Le bouton à la même fonction que la touche ENTREE.

Le bouton reprendre sert à sauvegarder les modifications.

Le bouton reprendre sert à sauvegarder les modifications.  Utiliser le bouton pour sauvegarder.  Utiliser
Le bouton reprendre sert à sauvegarder les modifications.  Utiliser le bouton pour sauvegarder.  Utiliser

Utiliser le bouton pour sauvegarder.

Utiliser le bouton pour changer de mode (basculer entre les modes affichage et modification).

Pour imprimer, allez dans le menu utilitaire téléch/télédécharger télédécharger, donner un nom de fichier et l‟imprimer depuis un traitement de texte local (sinon l'impression se fera sur le serveur SAP)

local (sinon l'impression se fera sur le serveur SAP)  Dans un gros programme, éviter d‟utiliser

Dans un gros programme, éviter d‟utiliser le bouton contrôler ( ). Il vaut mieux générer le programme ( )

Il est possible de copier un morceau d‟écran pour l'insérer dans un document Word par exemple. Pour cela, cliquer sur la surface à copier, appuyer sur les touches CTRL-Y et sélectionner la zone désirée. Appuyer ensuite sur les touches CTRL-C pour copier cette zone dans le presse-papiers de Windows.

La fonction programmePretty printer de l‟éditeur ABAP/4, permet de réaliser l'indentation automatique du programme en cours de développement (alignement des commandes IF ENDIF par exemple …).

Dans un pool de modules, l‟arborescence visible ne correspond pas toujours à la réalité, les dernières modifications pouvant ne pas apparaître. Il faut alors rafraîchir l'affichage via le menu Traiter Actualiser.

Un statut déclaré en dynpro par erreur (alors qu‟on voulait le déclarer en liste) devra faire l‟objet de toutes les attentions. Il faut bien veiller à ce que les attributs du statut correspondent au dynpro désiré (allocation des touches de fonction par exemple).

Pour supprimer un blocage, aller dans la transaction sm12, lister l'ensemble de blocages ( ), sélectionner le travail que l'on désire débloquer, puis le supprimer en cliquant sur le bouton .

et appuyer sur la

Pour obtenir de l'aide sur une instruction posant problème, positionner le curseur dessus touche F1.

Hotline SAP: OSS pour laisser des messages en cas de plantage dû à un bug présumé de SAP.

messages en cas de plantage dû à un bug présumé de SAP.  Programmation Un programme
messages en cas de plantage dû à un bug présumé de SAP.  Programmation Un programme
messages en cas de plantage dû à un bug présumé de SAP.  Programmation Un programme
messages en cas de plantage dû à un bug présumé de SAP.  Programmation Un programme

Programmation

Un programme au sens large du terme peut être :

un REPORT, créé à partir de l‟éditeur abap/4 [transaction SE38], un PROGRAM, créé à partir de l‟object browser (dans un pool de modules) [transaction SE80].

Lors de la création d‟un report, choisir un type "1", et une application "S" ou "noyau système" ou "*". Sauvegarder, puis cliquer sur le bouton . Les noms donnés à nos programmes doivent toujours commencer par la lettre Z ou Y, et comporter au minimum 4 lettres. Il en sera de même pour tout objet créé personnellement.

Il en sera de même pour tout objet créé personnellement. Les lignes de commandes se finissent

Les lignes de commandes se finissent toujours par un point.

Le programme, une fois écrit, est soit contrôlé (report) soit généré (pool de modules), sauvegardé puis exécuté en appuyant sur la touche F8 ou en passant par le menu Programme Exécuter.

Le débogueur peut être lancé de trois manières :

dans l'éditeur ABAP/4, lancer la transaction "/h", puis exécuter le programme en cours,

" /h ", puis exécuter le programme en cours,  sous l'éditeur abap/4, préciser le nom

sous l'éditeur abap/4, préciser le nom du programme et cliquer sur le bouton ,

sous l'object browser, alors qu'est affichée l'arborescence du programme en cours, cliquer sur le bouton puis choisir le radio bouton Débogage. Sous le débogueur, il est possible de visualiser les variables, de les forcer à des valeurs désirées, d'exécuter le programme pas à pas, de définir des points d‟arrêts obligatoires (double cliquer au début de la ligne souhaitée pour placer un point d'arrêt, le supprimer via la barre de menu)

point d'arrêt, le supprimer via la barre de menu)  Il est également possible de créer

Il est également possible de créer des variantes de programmes dans l'object browser (radio bouton variante, Znomvariante, puis bouton Créer ( ), remplir l'écran d'attributs, puis Suite). Pour lancer la variante, il suffit, de cocher le radio bouton Variante et d'exécuter la variante.

variante, il suffit, de cocher le radio bouton Variante et d'exécuter la variante. Cours ABAP.doc Page

Introduction à SAP

Le dictionnaire

Le dictionnaire [transaction SE11] permet de visualiser la structure et le contenu (Utilitaire Contenu de table) des tables ou d'en créer de nouvelles.

Des bugs à connaître

Se méfier de l'AT NEW avec les tables internes,

Lorsque l'on se trompe dans la définition d'un menu ( dynpro, liste, boîte de dialogue et liste dans une boîte de dialogue) il ne suffit pas d'aller changer les attributs du menu mais aussi dans saut dialogue Jenesaisplus .

le bouton pour un programme assez gros,

l‟insertion d‟image dans SAPSCRIPT.

Dans le Batch Input lorsque l'on passe les valeurs (dynbegin, program, dynpro, fnam, fval) il faut mettre un clear dans le IF et dans le ELSE (idem pour le Append), car si l'on ne mets pas ça dans la boucle conditionnelle rien ne marche.

mets pas ça dans la boucle conditionnelle rien ne marche. Après ces premières informations d'ordre général

Après ces premières informations d'ordre général sur la programmation en ABAP/4, nous allons à présent voir les instructions mises à notre disposition pour réaliser des programmes.

L'édition des données

L’EDITION DE DONNEES

Instruction WRITE.

WRITE <format> <valeur> <option>.

Format :

/p(I) / Nouvelle ligne. p Position de colonne I Longueur d‟édition Valeur : Valeur éditée zone ou littéral Option : options de mise en forme, format d‟édition.

WRITE : / „*******************‟ . WRITE permet d‟éditer le contenu d‟une zone ou d‟une constante dans le format adapté a chaque type.

SKIP 2. L‟instruction SKIP permet de générer des lignes blanches.

WRITE : „ DATE‟,

WRITE : „HEURE‟, sy-uzeit. Les instructions WRITE consécutive permettent d‟éditer des données sur la même ligne. Si l‟espace est insuffisant sur la ligne, l‟édition se poursuit sur la ligne suivante.

sy-datum.

SKIP 2. WRITE : / „*******************‟.

Symboles et icônes dans les listes.

INCLUDE <SYMBOL> WRITE <zone> AS SYMBOL.

INCLUDE <LIST> WRITE <zone> AS ICON.

Les icônes ne peuvent pas être imprimées.

Spécifications de format.

WRITE : 5 „*******************‟.

SKIP 2.

WRITE : 5 „ DATE‟ ,

20 sy-datum.

WRITE : 5 „HEURE‟ ,

20 sy-uzeit.

SKIP 2.

ULINE .

ULINE génère un souligné.

L‟insertion d‟un chiffre dans l‟instruction WRITE permet de positionner les données à la colonne souhaitée.

L'édition des données

Symbole de texte.

WRITE :

TEXT-001,

10 sy-datum.

/ TEXT-002,

10 sy-uzeit. Rappelle dans le programme du texte 001 .

Pour gérer les symboles de texte double-cliquez sur TEXT-XXX ou alors sélectionner ELEMENTS DE TEXTE SYMBOLE DE TEXTE. Pour traduire dans d‟autres langues, utiliser la fonction TRADUIRE. Pour adresser des symboles texte dans un programme : TEXT-XXX XXX est une chaîne de trois caractères. L‟un des avantages des symboles de texte réside dans le fait que la chaîne n‟est plus codée en dur dans le programme ; vous pouvez donc mettre à jour le texte sans passer par le code source. Une procédure de ce genre convient particulièrement aux logiciel multilingues.

En-tête de page.

Pour les listes, vous pouvez gérer un en-tête de liste et quatre en-têtes de colonne au plus. Pour ce faire, sélectionner ELEMENTS DE TEXTE suivi de TITRE ET INTITULES.

Une autre manière de gérer les en-têtes d‟une liste affichée consiste à sélectionner SYSTEME

INTITULE DE LISTE. Cette méthode présente l‟avantage de faciliter le positionnement des en-têtes de colonnes

car la liste est affichée à l‟écran.

LISTE

car la li ste est affichée à l‟écran.  LISTE  Les lignes d‟en -tête apparaîtront

Les lignes d‟en-tête apparaîtront automatiquement dans la liste lors du lancement suivant le programme.

Si vous n‟indiquez pas d‟en-tête de liste, c‟est le titre du programme qui s‟affiche.

Vous pouvez traduire les textes dans d‟autres langues. Pour ce faire, sélectionner ELEMENT DU TEXTE MODIFIER SAUT TRADUCTION.

L'édition des données

Rupture de page / nouvelle page.

NEW-PAGE. Le compteur de page est automatiquement remis à jour et les titres spécifiques au programme sont affichés à la page suivante.

L‟instruction ne génère pas de page blanche.

Paramètres de l’instruction NEW-PAGE.

NEW-PAGE

NO-TITLE.

WITH-TITLE.

NO-HEADING.

WITH-HEADING

Attribut d’édition.

L‟instruction format gère les attributs d‟édition. Ils sont actifs dés l‟instruction write suivante.

Options

Désignations

Option de COLOR

Désignation

INTENSIFIED

Surbrillance

OFF

col_background

Arrière plan

1

col_heading

Titre

INPUT

Modifiable en

2

col_normal

Corps de liste

saisie

3

col_total

Total

4

col_key

Colonne clé

COLOR <n>

Couleur d‟arrière

5

col_positive

Valeur positive

plan

6

col_negative

Valeur négative

7

col_group

Niveau hiérarchique

INVERSE

Permute les couleurs de 1 er et d‟arrière plan

Zones système

ZONES SYTEME

Liste des Zones système.

SY-ABCDE

Constante : alphabet (A,B,C,

)

SY-APPLI

Applications SAP

SY-BATCH

Mode batch actif.

SY-BATZD

BATCH-SUBMIT : tous les jours

SY-BATZM

BATCH-SUBMIT : mensuel

SY-BATZO

BATCH-SUBMIT : une seule fois

SY-BATZS

BATCH-SUBMIT : batch-submit immédiat

SY-BATZW

BATCH-SUBMIT : hebdomadaire

SY-BINPT

Batch input actif (X)

SY-BREP4

BATCH_SUBMIT : nom racine du programme d'exécution

SY-BSPLD

BATCH-SUBMIT : édition de liste dans le spool

SY-CALLD

Appel mode actif (X)

SY-CALLR

IMPRIMER : Id. pour fonction dialogue d'impression

SY-CCURS

Indication du cours/zone de résultat CURRENCY CONVERT

SY-CCURT

Cours de table de l'application CURRENCY CONVERSION

SY-CDATE

Date du cours de CURRENCY CONVERSION

SY-CFWAE

Utilisation interne

SY-CHWAE

Utilisation interne

SY-COLNO

Colonne actuelle lors création de liste

SY-CPAGE

Numéro de page actuel

SY-CPROG

RUNTIME : programme principal

SY-CTABL

Table des cours de CURRENCY CONVERSION

SY-CTYPE

Type de cours "M", "B", "G" de CURRENCY CONVERSION

SY-CUCOL

Position curseur (colonne)

SY-CUROW

Position curseur (ligne)

SY-DATAR

Témoin : donnée reçue

SY-DATLO

Date locale par rapport à l'utilisateur

SY-DATUM

SYSTEME : date du jour

SY-DATUT

Date globale par rapport à UTC (GMT)

SY-DAYST

Heure d'été active ? ("Daylight Saving Time")

SY-DBCNT

Nombre éléments en quantités traitées pour les opérations BD

SY-DBNAM

Base de données logiques pour programme ABAP/4

SY-DBSYS

SYSTEM système base de données

SY-DCSYS

SYSTEM : système dialogue

SY-DEBUG

Utilisation interne

SY-DSNAM

RUNTIME : nom du dataset pour l'édition spool

SY-DINGR

Groupe de dynpros du dynpro actif

SY-DYNNR

Numéro de l'écran actif

SY-ENTRY

Utilisation interne

SY-FDAYW

Jour de la semaine du calendrier d'entreprise

SY-FDPOS

Chaîne caractères trouvée dans

SY-FFILE

INTERNE : flatfile (USING/GENERATING DATASET)

SY-FLENG

Utilisation interne (longueur de zone)

SY-FMKEY

Menu code fonction actuel

SY-FODEC

Utilisation interne (zone de décimales)

SY-FOLEN

Utilisation interne (longueur d'édition de la zone)

SY-FTYPE

Utilisation interne (type de zone)

Zones système

SY-GROUP

INTERNE : regroupement

SY-HOST

Nom machine

SY-INDEX

Nombre de passages de la boucle

SY-INPUT

Utilisation interne

SY-LANGU

Code langue de l'ouverture de la session SAP

SY-LDBPG

PROGRAM : Programme de base de données ABAP/4 de SY-DBNAM

SY-LILLI

 

Numéro de ligne de liste actuelle

SY-LINCT

Nombre de lignes

SY-LINNO

Ligne actuelle lors création liste

SY-LINSZ

Longueur de liste

SY-LISEL

 

INTERACT : ligne sélectionnée

SY-LISTI

 

Numéro de ligne de liste actuelle

SY-LOCDB

Base de données locale existe

SY-LOCOP

Opération base de données locale

SY-LOOPC

Nombre de lignes "loop" (boucle) pour steploop de dynpro

SY-LPASS

Utilisation interne

SY-LSIND

 

Numéro de la liste secondaire

SY-LSTAT

INTERACT : Information statut par niveau de liste

SY-MACDB

PROGRAMME : Nom du fichier permettant accès aux matchcodes

SY-MACOL

Nombre de colonnes de l'instruction SET MARGIN

SY-MANDT

Numéro mandant de la connexion SAP

SY-MARKY

Lettre de marquage de ligne actuelle p. MARK

SY-MAROW

Nombre de lignes de l'instruction SET MARGIN

SY-MODNO

Nombre de modes alternatifs

SY-MSGID

Id. message

SY-MSGLI

INTERACT : Ligne message (ligne23)

SY-MSGNO

Numéro message

SY-MSGTY

Type de message (E, I, W,

)

SY-MSGV1

Variable message

SY-MSGV2

Variable message

SY-MSGV3

Variable message

SY-MSGV4

Variable message

SY-NEWPA

Utilisation interne

SY-NRPAG

Utilisation interne

SY-ONCOM

INTERNE : on commit fLag

SY-OPSYS

SYSTEM : système d'exploitation

SY-PAART

IMPRIMER : mise en forme

SY-PAGCT

Nombre de pages de la liste de l'instruction REPORT

SY-PAGNO

page actuelle lors création de liste

SY-PAUTH

Utilisation interne

SY-PDEST

IMPRIMER : imprimante

SY-PEXPI

IMPRIMER : durée de résidence dans le spool

SY-PFKEY

RUNTIME : statut actuel des touches fonctions

SY-PLAYO

Utilisation interne

SY-PLAYP

Utilisation interne

SY-PLIST

IMPRIMER : nom de l'ordre spool (nom de liste)

SY-PNWPA

Utilisation interne

SY-PRABT

IMPRIMER : service indiqué sur page de garde

SY-PRBIG

IMPRIMER : page de garde de sélection

SY-PRCOP

IMPRESSION : nombre d'exemplaires

SY-PRDSN

IMPRIMER : nom du dataset du spool

SY-PREFX

Préfixe ABAP/4 pour jobs batch

SY-PRI40

Utilisation interne

SY-PRIMM

IMPRIMER : impression immédiate

SY-PRINI

Utilisation interne

SY-PRLOG

Utilisation interne

SY-PRNEW

IMPRIMER : nouvel ordre spool (liste)

SY-PRREC

IMPRIMER : destinataire

Zones système

SY-PRREL

IMPRIMER : supprimer après édition

SY-PRTXT

IMPRIMER : texte de la page de garde

SY-REPI2

Utilisation interne

SY-REPID

 

PROGRAMME : Nom du programme. ABAP/4

SY-RSTRT

Utilisation interne

SY-RTITL

IMPRIMER : intitulé du programme d'impression

SY-SAPRL

SYSTEME : version SAP

SY-SCOLS

Colonnes sur écran

SY-SFNAM

non utilisé

SY-SFOFF

Utilisation interne

SY-SLSET

Nom du SELECTION-SET

SY-SPONO

RUNTIME : numéro spool lors de l'édition d'une liste

SY-SPONR

RUNTIME : numéro spool de l'instruction TRANSFER

SY-SROWS

Lignes sur écran

SY-STACO

INTERACT.: Liste affichée à partir colonne

SY-STARO

INTERACT. : page affichée à partir ligne

SY-STEPL

Numéro de la ligne "loop" (boucle) p. step dynpro

SY-SUBCS

INTERNE : statut CALL du programme

SY-SUBRC

Valeur confirmation après certaines instructions ABAP/4

SY-SUBTY

ABAP/IV : type d'appel pour SUBMIT

SY-SYSID

SYSTEM : Identification du système SAP

SY-TABID

Utilisation interne

SY-TABIX

 

Durée d'exécution : ligne actuelle d'une table interne

SY-TCODE

SESSION : code transaction actuel

SY-TFDSN

RUNTIME : nom du data set pour extraits de données

SY-TFILL

Nombre actuel d'entrées dans table interne

SY-TIMLO

Heure locale par rapport à l'utilisateur

SY-TIMUT

Heure globale par rapport à UTC(GMT)

SY-TITLE

 

PROGRAMME : Titre du programme ABAP/4

SY-TLENG

Ligne d'une table interne

SY-TLOPC

Utilisation interne

SY-TMAXL

Nombre max. d'entrées dans la table interne

SY-TNAME

Nom de la table interne après accès

SY-TOCCU

Paramètre occurs pour tables internes

SY-TPAGI

Code indiquant si table interne dans bloc de pagination

SY-TSTIS

Utilisation interne

SY-TSTLO

Horodatage (date et heure) se référant à l'utilisateur

SY-TSTUT

Horodatage (date et heure) se référant à UTC (GMT)

SY-TTABC

N° de la dernière ligne lue d'une table interne

SY-TTABI

Décalage de la table interne dans le roll area

SY-TVAR0

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR1

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR2

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR3

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR4

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR5

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR6

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR7

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR8

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TVAR9

RUNTIME : variable texte pour éléments de texte ABAP/4

SY-TZONE

Décalage horaire par rapport au temps GMT (en secondes)

SY-UCOMM

INTERACT.: Saisie fonction dans code OK

SY-ULINE

 

CONSTANT : soulignement (

)

SY-UNAME

SESSION : Nom de l'utilisateur de la session SAP

SY-UZEIT

 

SYSTEME: Heure

SY-VLINE

 

CONSTANT : barre verticale

SY-WAERS

T001 : devise société après lecture du segment B

SY-WILLI

Numéro de ligne de la fenêtre active

Zones système

SY-WINCO

Position curseur dans fenêtre(colonne)

SY-WINDI

Index de la ligne de la fenêtre active

SY-WINRO

Position curseur dans la fenêtre(ligne)

SY-WINSL

INTERACT.: ligne de la fenêtre sélectionnée

SY-WINX1

Coordonnées de la fenêtre (colonne de gauche)

SY-WINX2

Coordonnées de la fenêtre (colonne de droite)

SY-WINY1

Coordonnées de la fenêtre (ligne de gauche)

SY-WINY2

Coordonnées de la fenêtre (ligne de droite)

SY-WTITL

Indicateur pour intitulé pages standard

SY-XCODE

Code OK étendu

SY-XFORM

Utilisation interne (form SY-STEM-EXIT)

SY-XPROG

Utilisation interne (programme SY-STEM-EXIT)

SY-ZONLO

Fuseau horaire de l'utilisateur

Types de données

TYPES DE DONNEES

Types de données ABAP/4, attributs et édition.

Type de

Signification

Valeur

Longueur

Longueur

Exemple

Données

initiale

Standard

autorisée

P

 

Nombre packé

0

8

1-16

579, -713, „2.17‟

I

Entier

0

*

-

917, -882

F

 

Virgule flottante

0.000…

*

-

‟25.873‟, „1.213E15', „17E-6‟

N

Texte numérique

00…0

1

1-max

„778‟, „87931‟

C

Texte

blanc

1

1-max

„AXZ‟, „B123‟, „ABCD‟

D

Date (AAAAMMJJ)

00000000

8

8

„19960221‟

T

Heure (HHMMSS)

000000

6

6

„105743‟

X

hexadécimal

X‟00‟

1

1-max

„0FFF‟

 

Longueur

 

Type de

Données

d’édition

Standard

Edition

 

P

2*LZ

Justifié à droite

I

(*)

Justifié à droite

F

22

Justifié à droite

N

LZ

Justifié à gauche

C

LZ

Justifié à gauche

D

8

Justifié à gauche

T

6

Justifié à gauche

X

2*LZ

Justifié à gauche

Déclaration

DECLARATION

Déclaration des données.

DATA :

COUNTER

TYPE I,

NAME1(25)

VALUE „SAP‟,

START_DATE

TYPE D,

FIRST_LINE

TYPE I VALUE 1,

SUM1(5)

TYPE P DECIMALS 2.

RECOMMANDATION :

- Toujours utiliser une lettre comme premier caractère, les autres caractères pouvant être des lettres et/ou des chiffres.

- Le seul caractère spécial autorisé est le souligné (_), lorsque les noms comprennent plusieurs mots.

Si aucun type n‟est spécifié, la

zone est par défaut de type C.

Si aucune longueur n‟est indiquée, la

Le paramètre VALUE permet de déterminer la valeur de départ d‟une zone. Par défaut, chaque zone est paramétrée sur une valeur initiale adaptée au type. Les constantes ne sont pas autorisées.

longueur standard du type s‟applique

.

L‟option DECIMALS permet d‟indiquer le nombre de décimales (option réservée au type P ou 14 décimales sont autorisées).

Déclaration de type.

TYPES :

MYTYPE

TYPE I,

NAME1(25),

DATE1

LIKE sy-datum,

LIKE permet d‟avoir des données de même structure qu‟une donnée connue.

SUM_FIELD

TYPE P DECIMALS 2.

Les conventions d‟attribution de nom sont identiques à celles des Déclarations de données. Pour l‟utilisation de type voir Déclaration de zones similaire.

Les tables

- Déclaration dans le programme : TABLES: Znommatab1, nomtabsyst1, nomtabsyst2.,

- il existe des tables systèmes (TSTC, ICON, TCURX, SYST, TO06, etc.) et des tables internes (qui n'existent que durant l'exécution du programme),

- en double cliquant sur le nom d‟une table système, on accède à sa structure dans le dico,

- on peut créer un type de table :

TYPE: BEGIN OF TYPTAB1, …, END OF TYPTAB1. DATA: NOMTAB1 TYPE TYPTAB1 OCCURS N. où OCCURS permet d'allouer en mémoire n lignes pour cette table. Si N vaut 0, le système alloue dynamiquement l'espace mémoire, au fur et à mesure du remplissage de la table,

- une déclaration sans l'instruction OCCURS permet de déclarer une structure de table. Il n'y aura pas d‟allocation mémoire.

Déclaration

Déclaration des structures de zones.

DATA :

BEGIN OF TABINT OCCURS 0,

FLAG TYPE C, CARRID LIKE SFLIGHT-CARRID, CONNID LIKE SFLIGHT-CONNID, FLDATE LIKE SFLIGHT-FLDATE, PRICE LIKE SFLIGHT-PRICE,

END OF TABINT.

Fin de la structure.

Début de la structure.

Le paramètre OCCURS indique au système l‟espace mémoire qu‟il doit allouer à la table interne. 0 est le paramètre qui indique au système que l‟on ne sait pas combien il y a de lignes à prévoir pour la table interne dans ce cas le système alloue des blocs de 8 et 16 Ko de mémoire et s‟adapte aux lignes de la table.

DATA : BEGIN OF TABINT OCCURS 0,

Début de la structure.

INCLUDE STRUCTURE SFLIGHT. Création d‟une table interne étant la copie des noms des champs de sflight.

DATA : END OF TABINT.

Fin de la structure.

Déclaration de zones similaire.

TYPE : NAMETYPE1 LIKE SCUSTOM-NAME,

NAMETYPE2(25).

DATA : NAME1 TYPE

NAMETYPE1,

NAME2

TYPE NAMETYPE2,

NAME3

LIKE NAME1.

Le paramètre

définie .
définie
.
LIKE
LIKE

permet de déclarer des

zones dotées des mêmes attributs qu‟une zone précédemment

La zone de référence peut-être une zone interne ou une zone de base de données.

Le paramètre LIKE aide à créer des programmes facilement modifiables car il vous suffit de corriger les attributs à un seul endroit.

Ce paramètre peut-être également utilisé lorsque vous définissez des types avec l‟instruction TYPES.

Opérations sur les variables

OPERATIONS SUR LES VARIABLES

Affectation de valeurs.

DATA :

NAME1(25),

SORT_NAME(10),

FIRST_LINE(4) TYPE N,

NEXT_LINE

TYPE I.

.

.

.

MOVE „SAP‟ TO NAME1. MOVE 5 TO FIRST_LINE. COMPUTE NEXT_LINE = FIRST_LINE + 1.

SORT_NAME = NAME1. ADD 1 TO NEXT_LINE.

Pour attribuer des valeurs à des zones il existe des instructions ABAP/4, dont les plus importantes sont MOVE et COMPUTE (cette dernière est facultative).

En cas d‟incohérence de longueur ou de type entre la zone et la valeur attribuée, le système effectue une comparaison automatique.

Pour effectuer des opérations arithmétiques simples , vous pouvez également utiliser les instructions ADD, SUBTRACT, MULTIPLY et DIVIDE.

Expressions arithmétiques.

DATA :

COUNTER

TYPE I,

AMOUNT

TYPE P

VALUE „1000‟,

SUM

TYPE P,

RESULT

TYPE P,

NUMBER(2)

TYPE C

VALUE „99‟,

ROOT

TYPE F.

COMPUTE :

COUNTER

= COUNTER + 2 , = AMOUNT * COUNTER.

 

RESULT

SUM

=

=

=

RESULT + NUMBER COUNTER. COUNTER * ( AMOUNT + NUMBER ). SQRT ( NUMBER + COUNTER ).

RESULT

ROOT

Le mot clé

COMPUTE est facultatif.

 

Vous pouvez imbriquer autant d‟expressions entre parenthèses que vous le souhaitez.

Chaque opérateur et parenthèse sont interprétés comme un mot, aussi devez-vous les séparer par des blancs, sauf les parenthèses ouvrantes des fonctions qui doivent apparaître juste à côté du nom. Par exemple : SQRT( … )

Incorrect :

a = (B+EXP(C))*E/SIN(3-G).

Correct :

a = ( B + EXP( C ) ) * E / SIN( 3 G ).

Les valeurs non numériques sont automatiquement converties en valeurs numériques avant l‟exécution de toute opération arithmétique.

Les opérateurs

La fonction STRLEN retourne la longueur d‟une chaîne de caractères.

DIV et MOD renvoient un résultat entier

.

Opérations sur les variables

Seules les expressions arithmétiques peuvent être utilisées conjointement avec l‟instruction COMPUTE.

Liste des fonctions :

SQRT, EXP, LOG, SIN, COS, STRLEN, TAN…

Opérateurs :

ADD 1 TO var. SUBTRACT 1 FROM var. MULTIPLY 1 BY var DIVIDE 1 BY var.

Sous-zones.

Elles permettent de ne traiter qu‟une partie d'une chaîne de caractères donnée.

DATA :

ACCOUNT(10) TYPE C, START LIKE SY-DATUM.

 

ACCOUNT = „1234567890‟.

START

= „19950715‟.

WRITE :

ACCOUNT+8(2), „**‟,

Prend les 2 chiffres après les 8 premiers et écrit les chiffres.

START(4).

Prend tous les chiffres après les 4 premiers.

START+6(2) = „01‟.

Copie 01 sur les 2 chiffres suivant les 6 premiers.

ACCOUNT+6 = „9999‟.

Copie 9999 après les 6 premiers.

WRITE: /

ACCOUNT, „****‟, START.

Opérations de chaîne

CONCATENATE F1 F2 F3 INTO G

F1 F2 F3 G
F1
F2
F3
G

Valeur de code retournée pour CONCATENATE :

Sy-subrc = 0 : Le résultat tient dans la zone cible. Sy-subrc = 4 : Le résultat est trop long pour la cible, seule la longueur définie est transférée.

Opérations sur les variables

F1 F2 F3 G SPLIT G AT SPACE INTO F1 F2 F3
F1
F2
F3
G
SPLIT G AT SPACE INTO F1 F2 F3

Valeur de code retournée pour SPLIT :

Sy-subrc = 0 : Toutes les zones cibles sont suffisamment longues. Sy-subrc = 4 : L‟une des zones cible est trop courte.

Parmi les autres commandes de traitement de chaînes, citons SEARCH, SHIFT, REPLACE, TRANSLATE et CONDENSE.

Opérateurs relationnels.

 

Opérateur

Signification

EQ

=

Egal Différent Supérieur Supérieur ou égal Inférieur Inférieur ou égal

NE

<>

><

GT

>

GE

>=

=>

LT

<

LE

<=

=<

BETWEEN f1 AND f2 IS INITIAL

Plage

Valeur initiale

Opérateurs conditionnels

OPERATEURS CONDITIONNELS

Instruction IF.

IF <expression logique>. INSTRUCTIONS ELSE. INSTRUCTIONS ENDIF.
IF <expression logique>.
INSTRUCTIONS
ELSE.
INSTRUCTIONS
ENDIF.

Si l‟expression logique est fausse les instructions contenues dans ELSE sont exécutées

IF <expression logique>. INSTRUCTIONS ENDIF.
IF <expression logique>.
INSTRUCTIONS
ENDIF.

Si l‟expression logique est vraie le traitement de IF s‟effectue sinon le traitement du programme continu après ENDIF

IF <expression logique>.

INSTRUCTIONS

ELSEIF <expression logique>. INSTRUCTIONS

ELSEIF <expression logique>. INSTRUCTIONS ELSEIF <expression logique>. INSTRUCTIONS ELSE.

ELSEIF <expression logique>.

INSTRUCTIONS

ELSE.

INSTRUCTIONS

ENDIF.

ELSEIF permet de mettre autant de condition que l‟on veut

Instruction CASE.

Une seule séquence d‟instructions est traitée.

L‟instruction WHEN OTHERS est facultative.

Une seule valeur peut suivre

WHEN. Cette valeur

être une constante ou le nom de la zone contenant la

valeur.

peut

CASE <zone>. WHEN <valeur>. INSTRUCTIONS WHEN <valeur2>. INSTRUCTIONS WHEN OTHERS.
CASE <zone>.
WHEN <valeur>.
INSTRUCTIONS
WHEN <valeur2>.
INSTRUCTIONS
WHEN OTHERS.
INSTRUCTIONS
ENDCASE.

Opérateurs conditionnels

Boucle DO.

DO <n> TIMES.

Instructions

ENDDO.

Vous pouvez indiquez le nombre de passages de boucles dans une constante ou une zone.
Vous pouvez indiquez le nombre de passages de boucles dans une constante
ou une zone.
Le paramètre
<n> TIMES est facultatif.
 Si vous ne le formulez pas n‟oubliez pas de mettre une instruction de fin
de boucle.
Il est possible d‟imbriquer des instructions de boucles.
Le nombre de passages n‟est pas modifiable dans la zone système
sy-index.

Boucle WHILE :

WHILE <Expression logique>.

Instructions

ENDWHILE.

Tant que l‟expression logique est vrai les instructions sont exécutées.

Instruction CHECK.

CHECK <expression logique>.

Si une instruction CHECK se trouve à l‟intérieur d‟une structure de boucle et que

fausse
fausse

, alors on sort de la boucle.

Si l‟instruction se trouve en dehors d‟une structure de boucle et que traitement du programme prend fin.

l‟expression logique est

, alors le

l‟expression logique est fausse

Instruction EXIT.

IF <expression logique>. EXIT.

ENDIF.

Si une instruction EXIT se trouve à l‟intérieur d‟une structure de boucle et que l‟expression logique est vraie, alors on sort de la boucle. Si l‟instruction se trouve en dehors d‟une structure de boucle et que l‟expression logique est vraie, alors le traitement du programme prend fin.

Instruction STOP.

Après une instruction STOP, le système termine le traitement du programme. Contrairement à l‟instruction EXIT, le traitement END-OF-SELECTION est effectué s‟il existe.

Les tables

LES TABLES

Remplir « une table à la main »

Si la case à cocher "sm30 sm31" à été cochée, faire Utilitaire Saisie entrée - Remplir les zones et faire F11 pour enregistrer la ligne de données.

Consulter les données d’une table « à la main »

Faire Utilitaire Contenu de table, puis cliquer sur faire une sauvegarde suite à chaque ligne entrée.

Remplissage des tables internes.

à chaque ligne entrée. Remplissage des tables internes. pour afficher les données stockées dans la table.

pour afficher les données stockées dans la table. Il faut

MOVE zone par zone.

DATA :

BEGIN OF TABINT, FLAG TYPE C, CARRID LIKE SFLIGHT-CARRID, CONNID LIKE SFLIGHT-CONNID, FLDATE LIKE SFLIGHT-FLDATE, PRICE LIKE SFLIGHT-PRICE,

END OF TABINT.

SELECT * FROM SFLIGHT

MOVE-CORRESPONDING

ENDSELECT.

SFLIGHT

Il est possible aussi de faire :

SELECT * FROM SFLIGHT

MOVE
MOVE

SFLIGHT

ENDSELECT.

TO
TO

TABINT.

TO
TO

TABINT.

Transfère les valeurs de SFLIGHT dans TABINT. Le transfert n‟est possible que si les noms de zones sont identiques.

Si et seulement si toutes les zones ont même structure et même nom. Cette instruction
Si et seulement si toutes
les zones
ont même structure et même nom.
Cette instruction est plus rapide que
celle vue précédemment.

Si l‟on ne souhaite faire la copie de quelques zones :

SELECT * FROM SFLIGHT MOVE SFLIGHT-CARRID TO TABINT-CARRID. MOVE SFLIGHT-CONNID TO TABINT-CONNID. ENDSELECT.

Les tables

SELECT * FROM SFLIGHT MOVE SFLIGHT TO TABINT.

APPEND TABINT. ENDSELECT.

APPEND.

APPEND ajoute le contenu de la ligne d‟en-tête à la fin de la table interne.
APPEND ajoute le contenu de la ligne d‟en-tête à la fin de
la table interne.

SELECT * FROM SFLIGHT MOVE SFLIGHT TO TABINT. APPEND TABINT SORTED BY CARRID. ENDSELECT.

APPEND <tabint> SORTED BY <zone> permet de générer des listes rangées en ordre décroissant.

C‟est le paramètre OCCURS qui détermine le nombre maximal d‟entrées dans la table. Si la table est saturée, les entrées qui se trouvent en fin de table sont éjectées.

SELECT * FROM SFLIGHT MOVE SFLIGHT TO TABINT.

COLLECT TABINT. ENDSELECT.

COLLECT.

COLLECT ajoute le contenu de la ligne d‟en-tête d‟une table interne, créant ainsi une nouvelle
COLLECT ajoute le contenu de la ligne d‟en-tête
d‟une table interne, créant ainsi une nouvelle entrée,
ou l‟ajoute à une entrée existante de même type.

SELECT * FROM <tab> INTO TABLE <tabint>

Avec INTO TABLE, on fait la sélection que l‟on met directement dans la table interne. Le WHERE se fait après, si besoin est.

Tri des tables internes.

SORT TABINT BY PRICE ASCENDING FLDATE DESCENDING.

Le paramètre ASCENDING est facultatif. On peut effectuer un tri sur toute une table en écrivant :

SORT tabint.

Tri la table suivant la zone PRICE suivant l‟ordre croissant et la zone FLDATE suivant l‟ordre décroissant.

Les tables

Traitement des tables internes.

LOOP AT <tabint> … ENDLOOP.

LOOP AT <tabint>.

Instructions

ENDLOOP.

A chaque itération de la boucle les instructions sont effectuées et le système place l‟entrée suivante dans la ligne d‟en-tête.

LOOP AT <tabint> WHERE <condition> … ENDLOOP.

LOOP AT <tabint> WHERE <expression logique>.

Instructions

ENDLOOP.

La condition WHERE permet de testé l‟entrée de la table interne. Si aucune entrée ne satisfait l‟expression logique alors SY-SUBRC est positionné à 0.

LOOP AT <tabint> AT … ENDAT. ENDLOOP.

AT FIRST … ENDAT.

Le bloc de traitement entre AT FIRST et ENDAT est exécuté avant le début du traitement des lignes détails.

AT NEW … ENDAT.

L‟instruction AT NEW est utilisée pour sélectionner les en-têtes dans une zone. AT NEW est exécuté dés le premier tour dans la boucle.

AT END OF … ENDAT.

L‟instruction AT END OF est utilisée pour sélectionner les bas de page dans une zone.

AT LAST … ENDAT.

Le bloc de traitement entre AT LAST et ENDAT est exécuté à la fin du traitement des lignes détails.

Lecture des entrées des tables internes.

READ TABLE <tabint> WITH KEY…

READ TABLE tabint WITH KEY „LH 0400‟.

Permet de lire la première entrée de la table interne dont les clés sont égales à „LH 0400‟. Si l‟accès s‟est bien passé alors SY-SUBRC vaut 0, sinon une autre valeur est retournée.

READ TABLE <tabint> INDEX <i>.

Permet de lire la ligne i de la table interne. Si l‟accès s‟est bien passé alors SY-SUBRC vaut 0, sinon une autre valeur est retournée.

Les tables

Modification des tables.

INSERT <tab> INDEX <i>.

L‟instruction génère une nouvelle entrée de la table précédant l‟entrée i à partir de la ligne d‟en-tête.

MODIFY <tab> IDEX <i>.

L‟instruction remplace l‟entrée de la table i par le contenu de la ligne d‟en-tête. L‟entrée i doit déjà exister.

DELETE <tab> INDEX <i>.

DELETE.

L‟instruction supprime l‟entrée de la table i.

DELETE <tab> WHERE

Dans ce cas l‟instruction DELETE ne s‟applique exclusivement aux entrée de la table qui satisfont la condition.

DELETE <tab> FROM <n1> TO <n2>.

Dans ce cas toutes les entrées allant de n1 à n2 sont supprimées, y compris les limites de l‟intervalle. Si vous ne spécifié FROM ou TO dans une instruction DELETE, soit toutes les entrées de n1 à la fin seront supprimées, soit toutes les entrées depuis le début jusqu‟à n2 le seront.

UPDATE

UPDATE <dbtab> FROM <wa>. UPDATE <dbtab>. UPDATE <dbtab> SET <S1>…<Sn> WHERE <condition>. UPDATE <dbtab> FROM TABLE <itab>.

Pour modifier une ou plusieurs lignes dans une table de base de données, utilisez l‟une des variantes suivantes de la commande UPDATE :

Variante 1 : Le contenu de la chaîne de zones <wa> écrase la ligne de la base de données <dbtab> qui a la même clé primaire que <wa>. Variante 2 : Aucune chaîne de zones <wa> n‟est indiquée. L‟UPDATE est effectué sur le contenu courant de la zone de la table de travail <dbtab>. Variante 3 : Dans la liste <S1>…<Sn> de la clause SET, les colonnes des lignes à mettre à jour sont indiquées et les valeurs attribuées. La clause WHERE indique la condition qui s‟applique aux lignes à mettre à jour (en l‟absence de clause WHERE, toutes les lignes sont mises à jour). Variante 4 : Toutes les lignes de la table interne <itab> écrasent les lignes de la base de données avec la même clé primaire.

Les tables

Suppression des tables.

CLEAR <tab>.

L‟instruction CLEAR <tab> initialise toutes les zones de la ligne d‟en-tête selon leur type.

REFRESH <tab>.

L‟instruction REFRESH <tab> supprime toutes les entrées de la table mais l‟espace mémoire utilisé par la table n‟est pas libéré. La ligne d‟en-tête reste inchangée.

FREE <tab>.

L‟instruction FREE <tab> libère l‟espace mémoire utilisé par la table. La ligne d‟en-tête reste inchangée.

Les stocks de données intermédiaires

Encore appelés FIELD-GROUPs, ils évitent la redondance des données dans le cas d‟utilisation de plusieurs

tables.

(page 3-15 du BC405)

Instructions SELECT

INSTRUCTIONS SELECT

Instruction select 1.

TABLES : SBOOK.

SELECT * FROM SBOOK.

L‟instruction : tables permet d‟appeler les tables système.

Permet de lire toutes les entrées de la table.

WRITE :/ SBOOK-CARRID, SBOOK-CONNID.

Affiche les champs de la table.

ENDSELECT.

Fin de la boucle SELECT.

Instruction select 2.

 

TABLES : SBOOK.

SELECT * FROM SBOOK WHERE CARRID = „LH‟ .

Le paramètre WHERE permet de limiter en lecture le nombre d‟entrées de la table.

<instructions>.

ENSELECT.

IF SY-SUBRC NE 0.

<instructions>.

ENDIF.

Si aucune entrées de la table ne satisfait la condition WHERE, la valeur code retourné de la zone système SY-SUBRC est positionnée sur une valeur différente de 0.

Fin de la boucle IF.

SELECT * FROM <tab> INTO TABLE <tabint> FOR ALL ENTRIES IN <tabint2>.

EXEMPLE :

SELECT * FROM SFLIGHT

INTO TABLE TABINT WHERE CARRID

SELECT * FROM SBOOK INTO TABLE TABINT2 FOR ALL ENTRIES IN TABINT WHERE CARRID

Maximum minimum

SELECT

MAX( DISTANCE ) MIN( DISTANCE ) COUNT( * ) FROM SPFLI INTO
MAX( DISTANCE )
MIN( DISTANCE )
COUNT( * )
FROM
SPFLI
INTO

( MAXFIELD, MINFIELD, COUNTER ).

Les bases de données logiques

LES BASES DE DONNEES LOGIQUES

Les bases de données logiques

On y accède dans ABAP/4 Workbench outils développement environnement BD logique ou grâce à la transaction SE36.

Usage: les bases de données logiques (BDL) représentent des regroupements de tables comportant une logique d'exécution réalisant l'extraction des données désirées. Cela permet de réduire considérablement un programme, ce dernier n'ayant qu'à faire un simple appel à cette BDL pour en obtenir les données.

Structure: une BDL se présente comme une arborescence de tables ayant des champs de clé en commun. La première table de la BDL est appelée le nœud de la table. A chaque nouvelle table de la BDL, un ou plusieurs champs se rajoutent à la clé (cf. l'exemple ci-dessous). Une BDL contient les 5 objets suivants :

Structure Sélection Programme de la BD Texte de sélection Sélection matchcode

son arborescence, déclaration de l'écran de sélection, déclaration de la logique d'exécution de la BDL, déclaration des textes de sélection des paramètres, déclaration des objets de matchcodes.

Utilisation: on ne peut utiliser une base de donnée logique que dans les reports de type 1, application *. L'utilisation de la BDL (nom de trois lettres) est renseignée dans les attributs du programme. Il faut alors déclarer dans l'instruction tables le nom des tables de la BDL que l'on va utiliser. Puis, dans le programme ABAP/4, on fait un unique appel à chaque table au moyen de l'instruction get. get Table1 fields Champ1 Champ 2 … Champn.

Remarque: un programme ne peut faire appel qu'à une seule BDL. En revanche, une BDL peut être utilisée par plusieurs programmes.

Acquisition de données à l’aide d’une base de donnée logique.

TABLES : SPFLI, SFLIGHT, SBOOK.

GET SPFLI.

Traitement SPFLI

GET SFLIGHT.

Traitement SFLIGHT

L‟événement GET assure la liaison entre le traitement du programme et la base de données logique. Si la base de données logique prévoit pour la table une sélection par zones, vous pouvez spécifier pour les événements GET uniquement les zones nécessaires au traitement en rajoutant FIELDS <zone1><zone2>.

GET SBOOK FIELDS BOOKID CUSTOMID.

Les bases de données logiques

La structure de la base de données logique F1S est la suivante :

de la base de données logique F1S est la suivante : Le programme associé à la

Le programme associé à la BDL F1S est le suivant :

*-------------------------------------------------------------------------------*

* DATABASE PROGRAM OF LOGICAL DATABASE F1S

*-------------------------------------------------------------------------------*

*

*

*

*

The automatically generated subroutines (FORMs) are called by

*

system routines. Therefore their names must not be changed!!!

*

*

If the source code is automatically generated,

*

please perform the following steps:

*

1. Replace ? by suitable ABAP statements.

*

2. Activate ABAP statements (delete stars).

*

3. Save source code.

*

4. Check syntax of database program.

*

SELECT-OPTIONS and PARAMETERS will be checked automatically.

*--------------------------------------------------------------------*

*--------------------------------------------------------------------*

* Performance notes

*--------------------------------------------------------------------*

*

General information about the use of logical databases is contained

*

in the extended help information of transaction SE36.

*

Please consider in particular the following aspects:

*

1. Use of internal tables:

*

SELECT * FROM table INTO TABLE i_table WHERE

*

LOOP AT i_table.

*

MOVE-CORRESPONDING table TO i_table.

*

PUT table.

*

ENDLOOP.

*

2. Use of OPEN/FETCH CURSOR for nested structures.

*

3. Use of dynamic selections to enable further selection criteria

*

(cf. documentation of SELECTION-SCREEN DYNAMIC SELECTIONS).

*

4. Authority checks already at PAI of selection screen.

*--------------------------------------------------------------------*

Les bases de données logiques