Vous êtes sur la page 1sur 76

Pense bête par type de traitement

Vers. Date Author Visa Reviewed by Visa Validated by Visa


V.2.0 12/11/2002 E. Bertot

Dernier enregistrement le 17/04/09 page 1 / 77


Ecran de Selection __________________________________________________________ 5
Select-options : ________________________________________________________________________ 5
Parameters : __________________________________________________________________________ 6
Selection-screen : ______________________________________________________________________ 6
Exemple :_____________________________________________________________________________ 7
Declaration des données______________________________________________________ 7
type de données________________________________________________________________________ 7
Typage Interne et Externe _______________________________________________________________ 8
Tableau ou table interne ________________________________________________________________ 9
Création de REPORT :______________________________________________________ 11
Report : _____________________________________________________________________________ 11
Write : ______________________________________________________________________________ 11
Zones Systemes _______________________________________________________________________ 11
Modify current line ___________________________________________________________________ 11
Selection de Zones : ___________________________________________________________________ 11
Position du curseur : __________________________________________________________________ 11
Imprimer :___________________________________________________________________________ 11
Using N° edit mask :___________________________________________________________________ 11
Reserve<n> Llines:____________________________________________________________________ 11
Set left scroll-boundary ________________________________________________________________ 11
New-line no-scrolling : _________________________________________________________________ 12
Print control : ________________________________________________________________________ 12
Structure d’un programme REPORT______________________________________________________ 13
Les évènements possibles _____________________________________________________________ 14
Mise en forme de l’en tête de l’état ______________________________________________________ 14
Mise en forme de l’en-tête de colonnes sans write (état simple) ________________________________ 14
écriture dune ligne ___________________________________________________________________ 14
commentaires :______________________________________________________________________ 14
Report : exemple avec débranchement sur une sous-liste_____________________________________ 15
Report : conseil pour l’alignement des colonnes ____________________________________________ 16
débranchement (touches , boutons) sur plusieurs transaction après sélection d’une ligne __________ 17
Création des boutons de débranchement __________________________________________________ 17
Création du formulaire à partir du programme _____________________________________________ 17
Association touche fonction avec transaction : _____________________________________________ 18
Positionnement des boutons dans la barre d’outils applicative ________________________________ 18
Activation des boutons d’outils non standards _____________________________________________ 18
Ecrire les données_____________________________________________________________________ 19
Selection des données :______________________________________________________ 20
LES AGGREGATS ___________________________________________________________________ 21
LES VUES___________________________________________________________________________ 21
Les vues (Quintet)__________________________________________________________________ 21
Instruction JOIN _____________________________________________________________________ 22
Les index ____________________________________________________________________________ 22
LA BUFFERISATION_________________________________________________________________ 22

Dernier enregistrement le 17/04/09 page 2 / 77


LA MISE A JOUR ____________________________________________________________________ 22
LES INDEX _________________________________________________________________________ 23
Table interne : alimentation ____________________________________________________________ 23
Traitement itératif sut table SAP à partir d’une table interne : _______________________________ 23
SELECTION DES CHAMPS ___________________________________________________________ 23
INSERT_____________________________________________________________________________ 23
Les SELECT imbriqués : FOR ALL ENTRIES ____________________________________________ 24
Tables transparentes tables internes______________________________________________________ 25
SELECT : élémentaire, boucle __________________________________________________________ 26
SELECT (T_FIELDS) FROM (P_TABLE) _______________________________________________ 26
Traitement des données : ____________________________________________________ 28
Gestion d'une table interne : ____________________________________________________________ 29
Table transparente ____________________________________________________________________ 29
Gestion d’une table transparente ________________________________________________________ 29
Tableau ou table interne _______________________________________________________________ 30
Lecture, tri , rupture d’une table interne__________________________________________________ 32
Suppression __________________________________________________________________________ 33
Tables ______________________________________________________________________________ 33
Boucle ____________________________________________________________________________ 34
Lecture unitaire _____________________________________________________________________ 34
Opérateur : __________________________________________________________________________ 34
IF Conditions ____________________________________________________________________ 35
Sous-programme : FORM______________________________________________________________ 35
Subroutines ef fonctions________________________________________________________________ 35
Opérations sur chaînes de caractères _____________________________________________________ 37
Concatenate ________________________________________________________________________ 37
Split ______________________________________________________________________________ 37
shift ______________________________________________________________________________ 37
Replace ___________________________________________________________________________ 37
translate ___________________________________________________________________________ 37
Search ____________________________________________________________________________ 37
Concaténation / division d’une chaine____________________________________________________ 38
Call transaction ______________________________________________________________________ 38
Code retour ________________________________________________________________________ 39
Zones système ______________________________________________________________________ 39
Création de fichier en Sortie. _________________________________________________ 40
Les fichiers __________________________________________________________________________ 40
Ouverture, transfert, lecture, fermeture ___________________________________________________ 40
WS_DOWNLOAD / WS_UPLOAD_____________________________________________________ 41
Exemple :__________________________________________________________________________ 42
Batch input _______________________________________________________________ 43
Les modules fonction __________________________________________________________________ 43
Démarche ___________________________________________________________________________ 43
Mode de traitement ___________________________________________________________________ 45
Mode correction ______________________________________________________________________ 45
Statut du dossier ______________________________________________________________________ 45
Call transaction ______________________________________________________________________ 46
Dernier enregistrement le 17/04/09 page 3 / 77
Code retour ________________________________________________________________________ 46
Zones système ______________________________________________________________________ 46
Instructions à utiliser : suivant le type de lancement : différé ou immédiat ______________________ 47
Lancement d’un batch input ____________________________________________________________ 48
Depuis un pgm : submit_______________________________________________________________ 48
Ecran de lancement du dossier du Batch Input : SM35 _______________________________________ 48
Batch Input Standard _________________________________________________________________ 49
Batch input specifique _________________________________________________________________ 50
Direct input __________________________________________________________________________ 51
Formulaires ______________________________________________________________ 52
Composants et navigation ______________________________________________________________ 52
Modification élément de texte d’une fenêtre _______________________________________________ 52
Les symboles _________________________________________________________________________ 53
système ___________________________________________________________________________ 53
Les symboles standards : table TTDGT __________________________________________________ 53
Les symboles de textes : DEFINE &symbole& = ‘valeur’: INCLUDE/symboles/TexteI_____________ 53
Les symboles de programme ___________________________________________________________ 53
Options de formatage_________________________________________________________________ 53
Commandes particulières interessantes de la fenêtre principale MAIN __________________________ 53
Lien entre formulaire et pgm ___________________________________________________________ 53
Appel depuis un formulaire : exemple conversion d’un montant ______________________________ 53
Programmes ______________________________________________________________ 56
attributs d’un programme: _____________________________________________________________ 56
Généralités _______________________________________________________________ 58
Definitions :__________________________________________________________________________ 58
Exportation captures diverses : pgm, écran,.. ______________________________________________ 58
Quelques transactions _________________________________________________________________ 59
Transaction pour la programmation______________________________________________________ 59
TRANSACTIONS DE CONTRÔLE D'ACCÈS____________________________________________ 60
TRANSACTIONS DE LOGISTIQUE ___________________________________________________ 60
TRANSACTIONS DE ressources humaines_______________________________________________ 62
TRANSACTIONS DE VENTES ET DISTRIBUTION ______________________________________ 62
TRANSACTIONS D'ADMINISTRATION FINANCIÈRE ___________________________________ 62
Transactions par ordres alphabetiques ___________________________________________________ 63
TRANSACTIONS__________________________________________________________ 63
TABLES _________________________________________________________________ 67
Modèle conceptuel MM ________________________________________________________________ 67
Définition MM _______________________________________________________________________ 71
Définition d’une DA _________________________________________________________________ 71
Types de DA _______________________________________________________________________ 71
Définition d’un contrat _______________________________________________________________ 71
Types de contrat ______________________________________________________________________ 71
Définition d’une commande ___________________________________________________________ 71
Types de Commande _________________________________________________________________ 71
La Fiche article _____________________________________________________________________ 72
La Fiche fournisseur _________________________________________________________________ 72
Définitions _________________________________________________________________________ 72
Les groupes de compte _______________________________________________________________ 72
Définition Du schéma partenaire _______________________________________________________ 72
Définitions La Fiche-Info Achat ou FIA __________________________________________________ 72
Définitions Le Répertoire des Sources d’Approvisionnement Autorisées (RSA) __________________ 72
Dernier enregistrement le 17/04/09 page 4 / 77
Définitions Les quotas________________________________________________________________ 73
Exemples de tables transparentes utilisables pour optimiser les sélections ______________________ 73
Transactions Diverses _________________________________________________________________ 73
Modules sap _________________________________________________________________________ 75
Les subdivisions : _____________________________________________________________________ 75

Ecran de Selection

Select-options :
Structure interne du Select-Options
Il existe une table interne correspondant au 'Select-options' (Ex : date).
On peut utiliser cette table interne comme toute autre table interne du programme.

Description de la table interne :


sign
I : Including,
E : Excluding.
Option
Dernier enregistrement le 17/04/09 page 5 / 77
BT : Between
CP : Contient le modele,
EQ : Equal,
NE = different,
NB = non entre ,
LT = inferieur,
NP = pas de modele,
LE = inferieur ou egal,
GT = superieur,
GE : Superieur ou egal,

Low valeur basse

High valeur haute

le Parametres Default g = valeur du parametre par defaut,


default g .. option xx .. Sign s = precision de l’option et du signe de ce critere de selection,
Default g to h = proposition d’un intervalle,
Default g to h … option xx Sign s = proposition d’un intervalle avec option et inclusion / exclusion,
Memory id pid = derniere valeur saisie par l’utilisateur dans le parametre pid,
Matchcode Object mobj = attribution d’un matchcode,
Modif Id key groupement des champs en vue de modifier ses attributs,
No-display = la selection est geree en interne et n’apparaît pas l’ecran,
Lower Case = Parametre non sensible a la casse de la saisie ,
Obligatory = saisie obligatoire,No-extension = saisier sur une seule ligne,
NO-intervals = affichage du bouton fleche à choix multiples,
Values request = bouton renseignant les valeur possibles (BDL) ,
Value-request for low/high = bouton renseignant les valeurs basses et hautes(BDL)
Help-request = lien avec l’aide(BDL).

Exemple : SELECT-OPTIONS:
*compte client
p_comcli FOR zecr-zcompteclient.
SELECT-OPTIONS: w_bldat FOR bsad-bldat MODIF ID pie.
SELECT-OPTIONS : S_HKONT FOR BSEG-HKONT NO-DISPLAY.

Parameters :
nom_zone : zone de saisie simple
PARAMETERS <nom> TYPE <type>
PARAMETERS <nom> LIKE <champ-objet de donnée>(l’objet doit être déclaré dans le pgm)
Radio bouton :
parameters :
p_tole radiobutton group bloc,
p_liti radiobutton group bloc,
p_depa radiobutton group bloc.
Case à cocher : parameters :
P_CREDOS AS CHECKBOX.

LE Parametres Default g = valeur du parametre par defaut,


Type typ = type de champ,
Decimals dec = nombre de decimales autorise,
Like g = attribution d’un format existant,
Memory id pid = derniere valeur saisie par l’utilisateur dans le parametre pid,
Matchcode Object mobj = attribution d’un matchcode,
Modif Id key groupement des champs en vue de modifier ses attributs,
No-display = la selection est geree en interne et n’apparaît pas l’ecran,
Lower Case = Parametre non sensible a la casse de la saisie ,
Obligatory = saisie obligatoire,
As checkbox = sous forme de case a cocher : choix entre oui et non ,
Radiobutton Group radi = offre un seul choix possible dans un groupe de radio-boutons,
For Table dbtab = assignation à une table,
As Matchcode Structure = plusieurs matchcodes,
Value-request = bouton renseignant les valeurs possibles,
As Matchcode structure = plusieurs matchcodes,
Value-reqest = Bouton renseignant les valeurs possibles,
Help-request = lien avec l’aide.

Exemple : PARAMETERS : p_nomfi2(10) TYPE c DEFAULT 'KEC2'.


PARAMETERS: P_CHX1 RADIOBUTTON GROUP TRI DEFAULT 'X'.
PARAMETERS: p_bukrs LIKE bbkpf-bukrs OBLIGATORY,
p_batch(12) TYPE c OBLIGATORY.
PARAMETERS: p_ficin LIKE rlgrap-filename DEFAULT space OBLIGATORY.
PARAMETERS: fic_out LIKE filename-fileextern OBLIGATORY.
DEFAULT 'D:\usr\sap\SFD\DVEBMGS00\data\test_cordouan_jr'.
PARAMETERS: P_CREDOS AS CHECKBOX.

Selection-screen :

préparation de l’écran de sélection.


Selection-screen begin of line = definition d’une ligne(debut),
Selection-screen end of line = fin de line,
Selection-screen skip n = saut de ligne,
Selection-screen ulline = ligne souligne,
Selection-screen Position pos = position du text en colonne,
Selection-screen Comment fmt name = insertion de texte,
Selection-screen Pushbutton fmt name User-command ucom = insertion d’un bouton,
Selection-screen Begin of Block block With frame-title text-001 = debut de division de l’ecran en blocs finir par end of block + titre du block,
Selection-screen Function Key n = activivation touches de fonction dans la barre de mene 5 maxi,

Dernier enregistrement le 17/04/09 page 6 / 77


Selection-screen begin of Version ver Text-xxx = definition de version d’ecran de selection, Selection-screen end of Version ver
Selection-screen exclude …. . = possibilite d’exclure des parametres d’affichages,
Selection-screen Dynamic selections For Table dbtab = selection sur des tables non incluses dans une BDL,
Selection-screen Field Selection For Table dbtab = selection des champs d’une BDL.

Traitement que l’on peut faire sur l’écran de sélection :


*traitement valable pour tous les écrans.
Loop at scren.
If insermod = 1.
If screen-name = ‘YC02-BUKRS’.
Screen-input = 0.
Modify screen.
Endif.
Endif.
Andloop.
TABLES: bsad.
* pour que soit pris en compte les actions sur l’écran de sélection .
SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE text-002.
PARAMETERS r1 RADIOBUTTON GROUP gr1 USER-COMMAND ucom.
PARAMETERS r2 RADIOBUTTON GROUP gr1.
SELECTION-SCREEN END OF BLOCK rad1.
SELECT-OPTIONS: w_augdt FOR bsad-augdt MODIF ID rap.
SELECT-OPTIONS: w_bldat FOR bsad-bldat MODIF ID pie.
INITIALIZATION.
MOVE 'X' TO r1.
PERFORM change_date.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'RAP'.
IF r1 = 'X'.
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'PIE'.
IF r2 = 'X'.
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

Exemple :
SELECTION-SCREEN BEGIN OF BLOCK prep_stru
WITH FRAME
TITLE text-020.
*bouton radion preparation des structure BTCI 'oui'
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (37) text-045.
PARAMETERS: p_pri1 RADIOBUTTON GROUP pri DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(5) text-043.
*bouton radion preparation des structure BTCI 'non'
PARAMETERS: p_pri2 RADIOBUTTON GROUP pri .
SELECTION-SCREEN COMMENT 52(5) text-044.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
*bouton radion reprise par rapport a ZECR_fac 'non'
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (37) text-021.
PARAMETERS: p_rep1 RADIOBUTTON GROUP rep DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(5) text-043.
*bouton radion reprise par rapport a ZECR_fac 'oui'
PARAMETERS: p_rep2 RADIOBUTTON GROUP rep .
SELECTION-SCREEN COMMENT 52(5) text-044.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
* nom logique du fichier à traiter
SELECTION-SCREEN COMMENT (27) text-041.
PARAMETERS :p_nomfic(10) TYPE c DEFAULT 'KEC2'.
*Lot de traitement repris
SELECTION-SCREEN COMMENT 42(25) text-040.
PARAMETERS :p_lot_p(10) TYPE c. "Lot de traitement repris
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK prep_stru.

SELECTION-SCREEN: POSITION 40, COMMENT 40(10) TEXT-024.

Declaration des données


type de données

P(*) nombre condensé packed 8 1-16


I entier integer x 64ko max
F virgule flottante floating x
N(*) texte numérique numeric 1 1-max
C(*) texte char 1 1-max
Dernier enregistrement le 17/04/09 page 7 / 77
D date (aaaammjj) date 8 8
T heure(hhmmss) time 6 6
X(*) hexadecimal 1 1-max

(*) : la longueur en octets peut être précisée. Pour ces types de données

Typage Interne et Externe


Les typages utilisés dans le dictionnaire de données prennent en compte des masques d'édition à l'écran.

Externe Interne Description


char(x) c(x) Character
cuky c(5) Currency Key
curr p(n/2 + 1) Currency
decimals m n digits, m dec
dats d Date
int4 i Integer
lang c(1) Language
numc(x) n(x) Numeric char
tims t Time

Types de donnees : C = caractere, N = Numerique , D = date , T = heure , X = Octet, I = Integer , P = nb packe, F =


Virgule flottante, STRING = chaine de
caractere, Xstring = Chaine octet

Type
Type description
Length
Initial value
position
C
Text (Character)
1
Space
Centrer à gauche

N
Numeric text
1
'00...0'
Droite

D
Date YYYYMMDD)
8
'00000000'

T
Time (HHMMSS)
6
‘000000'

X
Hexadecimal
1
X'00'
Droite

I
Whole number (integer)
4
0
Droite

P
Packed number
8
0
Droite

F
Floating point number
8
'0.0'
droite

Dernier enregistrement le 17/04/09 page 8 / 77


déclaration de données
DATA: nom-donnée_1 TYPE I,
nom_donnée_2 TYPE D,
Firsrt-line TYPE I VALUE 1,
SUM1 (5) TYPE P DECIMALS 2.
type
Déclaration de type : idem déclaration avec TYPES à la place de DATA
Utilisation d'un type : DATA : nom_donnée_3 TYPE nom_donnée_2 ,
nom_donnée_4 LIKE nom_donnée_3
exemple de définition d’une variable :
DATA : <nom-zone>(longueur-zone) TYPE <code type> : W-Toto(12) TYPE C
DATA : <nom-zone> LIKE <autre-zone-reference dans le pgm>
DATA : PI TYPE P [DECIMALS 4] [VALUE ‘3.1415’].

Exemple : DATA P_TEXT(88).


DATA P_GREEN LIKE ICON-ID.
. ******************************* "*******declaration d’un parametre id**************************************************
DATA MEMORY_ID_ART_DIV(30) VALUE 'TOTO '
********************************Constante*******************************************************
CONSTANTS WC_ST LIKE MARC-MMSTA VALUE 'ST'

* ranges
*il faut que la variable soit déclaré
RANGES: r_dec01 FOR w_typfc.

Tableau ou table interne

• Qu'est-ce qu'une table interne ?


La table interne peut être un snapshot de la table de la base de donnée, ou un moyen de stockage temporaire
de données.
En utilisant les tables internes, vous n'avez pas à vous soucier de l'allocation dynamique de mémoire, gérée
par le système.

• La Header Line
Lorsque l'on déclare une table interne, il est possible de lui attacher une 'Header Line', c'est à dire une zone
d’échange entre la table interne et le programme.
S'il n'y a pas de 'Header Line', il faut définir un enreg. pour pouvoir manipuler les enregistrement de la table
interne.

• La Header Line

• Header line implicite


data : begin of itab_salarié occurs 10,
include structure str_salarié,
end of itab_salarié.
Lorsque la déclaration fait appel à la définition de tous les champs de manière élémentaire, ou fait
référence à une structure, la header line est créée automatiquement.

• Header line explicite


data itab_salarié like salarié occurs 10
with header line.
Lorsque la déclaration fait référence à une définition de table transparente, la header line n’est pas créée
automatiquement.

déclaration
Chaine de zone (avec OCCURS cela correspond à une table interne)
DATA: Zone-1 type I,
BEGIN OF groupe-zone [OCCURS <n>], (la table est générée avec un HEADER LINE)
zone-2 TYPE...,
zone-3 LKE...,
END OF groupe-zone.
adressage : groupe-zone-zone-2

DATA: Zone-1 type I,


Dernier enregistrement le 17/04/09 page 9 / 77
BEGIN OF groupe-zone [OCCURS <n>].
INCLUDE STRUCTURE <nom_table_ATAB>.
END OF groupe-zone.

Exemple :
******************************** table interne avec ajout de champ et créé sur un includ*******************************
DATA: BEGIN OF WT_VISU OCCURS 0.
INCLUDE STRUCTURE ZMM_ART_STK_T.
DATA: NAME_LAST LIKE ADRP-NAME_LAST, "Nom
NAME_FIRST LIKE ADRP-NAME_FIRST, Prenom
TELNR_LONG LIKE ADR2-TELNR_LONG, "n° tel
BUILDING LIKE ADCP-BUILDING, "Site
EQUI LIKE MARA-MATNR, "equivalence
ETAT LIKE ICON-ID, "bloqué/non bloqué
END OF WT_VISU.
:*******************************déclaration d’une table field-groups*******************************************
FIELD-GROUPS
HEADER,
DETAIL.
*****************************************structure*******************************************************************
DATA : BEGIN OF WT_MAJ_CRE
MATNR LIKE MARC-MATNR,
ETFZ1 LIKE EKPO-ETFZ1,
FXHOR LIKE MARC-FXHOR,
KZSTU LIKE EKPO-KZSTU,
END OF WT_MAJ_CRE.
*********************************structure pour recuperer les vues *****************************************************
DATA: BEGIN OF BDC OCCURS 0
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC.
* table interne pour eviter les acceds zdec01
DATA : BEGIN OF t_stru_kec_ex .
INCLUDE STRUCTURE zaa_kec_cordouan_1n.
DATA : compteur TYPE z_compteur_fc.
DATA : END OF t_stru_kec_ex.

* Declaration du type de lastructures KEC de travail completees


TYPES : BEGIN OF t_stru_kec_c.
INCLUDE STRUCTURE zaa_kec_cordouan_1n.
TYPES : compteur TYPE z_compteur_fc,
END OF t_stru_kec_c.

*declaration de la table de la structure


TYPES tt_stru_kec_c TYPE STANDARD TABLE OF t_stru_kec_c.
**declaration de la table interne avec entete
DATA : itab_kec_c TYPE t_stru_kec_c
OCCURS 100
WITH HEADER LINE.

* structure avec donnees + une autre structure incluse.


DATA : BEGIN OF t_struc_zecr_btci.
DATA :
w_bschl_d LIKE zdec03-z_bschl_d, " cle comptable
w_bschl_c LIKE zdec03-z_bschl_d, " cle comptable
w_collectif LIKE knb1-akont, " cpt gene. collec
w_erreur_fic(1) TYPE c, " traitment fichie
w_erreur_typ(1) TYPE c, " type de piece
w_erreur_maj_zecr_excl_zdec TYPE c, " pas de code exclu
w_erreur_comp_imput TYPE c. " compte a impute
INCLUDE STRUCTURE itab_kec_c.
DATA :
END OF t_struc_zecr_btci.

* table interne du fichier BTCI


DATA : BEGIN OF t_out OCCURS 0,
donnees(2379) TYPE c,
END OF t_out.

INCLUDE de programme .
INCLUDE zbccommun.
INCLUDE zbc_kec.

Dernier enregistrement le 17/04/09 page 10 / 77


Création de REPORT :

Report :
Le nom du programme ne peut exceder plus de huit caracteres.
L’option NO STRANDARD PAGE HEADING supprime l’affichage de l’intitulé du programme au debut de chaque page d’édition
défini dans ses attributs lors de sa création.

Write :
Write : / ‘Bienvenue dans mon programme’ Intensified Hotspot Inverse Color <i>, <n2><nom_table_-nom_champ>.
Write At /<n>(<lg>) <f>. = Edition du f sur la ligne (/) en position <n1> sur une longueur <lg>Color<i> : coloration de l’edition en
arriere plan ,1 bleu gris,2 gris clair, 3 jaune,4 bleu vert, 5 vert, 6 rouge, 7 violet. Inverse Color <i>
= coloration direct de l’edition, Intensified color <i> = les couleurs sont intensifiees,
Hotspots = main
Write <f> <options> Left-justified =cadrage a gauche, Centered = centrage, Right-justified = cadrage au droite, Under en dessous
,No-gap = suppressions des colonnes de séparations, No-Zero = Sup. des zero initiaux (type N,P),Decimals<d> = <d> decimals apres
la virgule.

Zones Systemes
pour liste secondaire : Sy-lsind = numero de liste ,Sy-lisel = pour selectionner une ligne et recupérer le contenue,
Hide <zone> cette instruction permet de memoriser le contenue des zone cle ou autre pour une liste seconddaire,
Sy-curow = pos du curseur(ligne), sy-cucol = pos du curseur en colonne, Sy-cpage = numero de la page courante, sy-staco = 1er
colonne de la liste affichee a l’ecran, sy-staro = premiere ligne de la liste affichee a l’ecran, sy-listi = index du niv. De la liste
selectionnée, Sy-lilli = n° de la ligne selectionnee.

Modify current line


cette instruction traite la dernier ligne lue dans la liste courante et permet de modifier des contenus de zone ou des attributs d’ecran
pour les zones ou les lignes d’une liste.
Window Starting At <n1> <n2> Ending At <m1><m2> : pour ajouter une fenetre en coordonnee.
With Frame Title : Permezt d’associer un titre a une fenetre.

Selection de Zones :
Get cursor field <zone1> Value <zone2> = ces instruction permettent de collecter interractivement des informations
complémentaire Get cursor line <lin>. relatives à une zone que l’utilisateur à déterminé avec le curseur. Field = zone
d’édition, Value= valeur éditée, Line = variante permettant de rechercher le curseur de maniere dynamique dans les crans

Position du curseur :
Set cursor field <zone1>. = dans la zone d’écran zone 1, Set cursor <colonne><ligne>. Set cursor line <lin>

Imprimer :
fonction GET_print_paramters : pour imprimer

Using N° edit mask :


Utilise ou pas le masque de saisie

Reserve<n> Llines:
Evite la separation de Nlignes par une rupture de page.

Set left scroll-boundary


(COULUMN<n>) : Colonne de gauche fige dans une liste .

Dernier enregistrement le 17/04/09 page 11 / 77


New-line no-scrolling :
Fige une ligne

Print control :
Definit le format de l’impression

Exemple :
IF sy-subrc NE 0 .
FORMAT COLOR 6 INTENSIFIED.
WRITE : text-t10 . " err
SKIP.
FORMAT RESET.
ENDIF.

Write : /3 text-004 color 1 intensified on, 15 tabcom-vkbur color 1 intensified off, 24 text-040 color 5 intensified on, 44 tabcom-netwr color 5 intensified off, / sy-uline.
FORMAT INTENSIFIED ON.
WRITE : /10 'ZFIE0020 - COMPTE-RENDU d''''exéction du', sy-datum ,
'à', sy-uzeit .

WRITE AT /5(50) sy-uline.

FORMAT INTENSIFIED ON.


ULINE AT /1(208).

WRITE : /1 sy-vline ,
3 text-026 COLOR 3,
11 sy-vline,
13 text-027 COLOR 3,
26 sy-vline,
28 text-028 COLOR 3,
47 sy-vline,
49 text-029 COLOR 3,
68 sy-vline,
70 text-030 COLOR 3,
88 sy-vline,
90 text-031 COLOR 3,
110 sy-vline,
112 text-032 COLOR 3,
130 sy-vline,
132 text-033 COLOR 3,
151 sy-vline,
153 text-034 COLOR 3,
180 sy-vline,
182 text-035 COLOR 3,
208 sy-vline.
.
ULINE AT /1(208).
FORMAT INTENSIFIED OFF.
*lecture de tab_zecr_btci pour compter les dif. statut*

PERFORM lecture_statut_purge.

SORT t_cpt_rendu_purg BY z_zlottrt.


LOOP AT t_cpt_rendu_purg.
MOVE-CORRESPONDING t_cpt_rendu_purg TO s_cpt_rendu_purg.
AT NEW z_zlottrt.

WRITE : /1 sy-vline ,
s_cpt_rendu_purg-z_znomficlog UNDER text-026,
11 sy-vline,
s_cpt_rendu_purg-z_zlottrt UNDER text-027,
26 sy-vline,
s_cpt_rendu_purg-z_prep_lues2 UNDER text-028,
47 sy-vline,
s_cpt_rendu_purg-z_prep_pur2 UNDER text-029,
68 sy-vline,
s_cpt_rendu_purg-z_exc_lues8 UNDER text-030,
88 sy-vline,
s_cpt_rendu_purg-z_exc_purg8 UNDER text-031,
110 sy-vline,
s_cpt_rendu_purg-z_exc_lues9 UNDER text-032,
130 sy-vline,
s_cpt_rendu_purg-z_exc_purg9 UNDER text-033,
151 sy-vline,
s_cpt_rendu_purg-z_lo_np_lues01 UNDER text-034,
180 sy-vline,
s_cpt_rendu_purg-z_lot_np_pur01 UNDER text-035,

208 sy-vline.
ULINE AT /1(208).
ENDAT.

ENDLOOP.

****************************************************
* compte rendu prise en compte F.sesame & exclusion*
****************************************************
* taille des colonnes cpt rendu prise en compte F.sesame & exclusion
DATA : w_largeur_compte_rendu TYPE i VALUE 76,
w_col_fichier TYPE i VALUE 15,
w_col_lot TYPE i VALUE 16,
w_col_nb_ecr_kec TYPE i VALUE 16,
w_col_nb_ecr_exc1 TYPE i VALUE 26,
w_largeur_tous_col1 TYPE i VALUE 115,
w_col_nb_ecr_exc2 TYPE i VALUE 26.

WRITE :/.
WRITE :/5 'Compte-rendu Prise en compte F. Sésame & Exclusion'.
WRITE AT /5(50) sy-uline.

WRITE AT /1(w_largeur_tous_col1) sy-uline.


FORMAT COLOR COL_HEADING.
WRITE :/1 sy-vline.

Dernier enregistrement le 17/04/09 page 12 / 77


WRITE : AT (w_col_fichier) 'Non logique' CENTERED, sy-vline.
WRITE : AT (w_col_lot) 'Lot traitement ' CENTERED, sy-vline.
WRITE : AT (w_col_nb_ecr_kec) 'Nb ecr. KEC ' CENTERED, sy-vline.
WRITE : AT (w_col_nb_ecr_exc1) 'Nb ecr. Exclues 8' CENTERED, sy-vline.
WRITE : AT (w_col_nb_ecr_exc2) 'Nb ecr. Exclues 9' CENTERED, sy-vline.
WRITE AT /1(w_largeur_tous_col1) sy-uline.
FORMAT COLOR COL_HEADING OFF.
WRITE :/1 sy-vline.
WRITE : AT (w_col_fichier) tab_zecr_btci-znomficlog CENTERED, sy-vline.
WRITE : AT (w_col_lot) tab_zecr_btci-zlottrt CENTERED, sy-vline.
WRITE : AT (w_col_nb_ecr_kec) w_cpt_ecr_kec_lu CENTERED,
sy-vline.
WRITE : AT (w_col_nb_ecr_exc1) w_cpt_ecr_ecr_exclu8 CENTERED, sy-vline.
WRITE : AT (w_col_nb_ecr_exc2) w_cpt_ecr_ecr_exclu9 CENTERED,
sy-vline.
WRITE AT /1(w_largeur_tous_col1) sy-uline.
ENDIF.
*

SKIP.

WRITE :/10 'Compte client :', 50 p_comcli NO-ZERO COLOR 2.

Structure d’un programme REPORT


Séq. Instruction Commentaire
1 REPORT suivi du nom de report et éventuellement d’une classe de messages, ainsi que les
commentaires d’entête du programme
2 INCLUDE DE DONNEES déclaration des tables, structures, variables, constantes, ranges, field-groups...
3 PARAMETERS
SELECT-OPTIONS
4 INITIALIZATION Evénement avant l’affichage des paramètres
5 AT SELECTION-SCREEN Evénement après saisie des paramètres
6 START-OF-SELECTION Début des traitements
7 END-OF-SELECTION Facultatif.
8 TOP-OF-PAGE Evénement survenant avant l’écriture de la première ligne d’une page
9 END-OF-PAGE Evénement survenant après avoir écrit la dernière ligne d’une page
10 INCLUDE DE Contient l’ensemble des routines (FORM)
PROGRAMME

Parameters …: permet la saisie par l’utilisateur de données pour sélection


INITIALIZATION : permet de modifier les valeurs de paramètres avant l’affichage de l’écran de sélection
START-OF-SELECTION : permet de créer des listes
SELECT * from tcurr.
WRITE : / tcurr-fcurr, tcurr-tcurr, tcurr-ukurs.
HIDE : tcurr-fcurr, tcurr-tcurr. “zone réaffichable après selection de la ligne

ENDSELECT
AT LINE-SELECTION.déclenche l’affichage d’un état “détail”Les données courante sont celles
de la ligne sélectionnée “
WRITE : / tcurr-kurst, tcurr-fcurr, tcurr-tcurr.
END-OF-SELECTION.
FORM <nom-form>….
ENDFORM <nom-form>….

Variable système utile : SY-SLIND : niveau de détail s’incrémente (se décrémente) à chaque descente
(remontée) (attention : même s’il n’y a pas de niveau de détail supplémentaire, elle s’incrémente à chaque double
clic sur une ligne détail de l’état de détail)

Dernier enregistrement le 17/04/09 page 13 / 77


Les évènements possibles
AT LINE SELECTION Pour lancer à partir des valeurs des champs cachés de la ligne sélectionnée :
un état détail : Select…WRITE
un affichage écran : CALL SCREEN N°_ecran
AT USER COMMAND Pour lancer une transaction à partir des valeurs des champs cachés de la ligne
sélectionnée véhiculés par les paramètres ID : CALL TRANSACTION ?
AT SELECTION Event after processing the user input on the selection screen, while the
SCREEN selection screen is still active
START OF SELECTION Event after processing the selection screen. The system sets this event keyword
automatically when you specify no other event keyword (for example, in your
program the last section).
GET <tablename> Event at which the logical database in use offers a line of the database table
<tablename>.
GET <tablename> LATE Event after processing all tables that are hierarchically inferior to the database
table <tablename> in the structure of the logical database in use.
END-OF-SELECTION Event after processing all lines offered by the logical database in use
TOP-OF-PAGE Event during list processing when a new page starts.

• Evènements
Il existe des évènements pour initialiser des actions sur l’écran de sélection. Ils sont exécutés avant
l’ ordre Start-of-selection.

• initialization
Déclenché une seule fois au début du programme et avant le traitement de l’écran de
sélection.
• at selection-screen output
Exécuté avant que les données de l’écran de sélection soient affichées (sur touche
ENTREE)
• at selection-screen on p/s
Exécuté après que l’utilisateur ait spécifié le paramètre P ou l’option se sélection S.
• at selection-screen
Exécuté après que l’utilisateur ait spécifié tous les paramètres.

Mise en forme de l’en tête de l’état


Al l’affichage après exécution, cliquer sur ‘Système/Listes/listes/intitulé de liste :
Penser aux variables SY-TVAR0 à SY-TVAR9 chargées dans le programme et utilisés avec &0 à &9

Mise en forme de l’en-tête de colonnes sans write (état simple)


SM38 : saisir le nom de l’état, /cliquer sur ‘Elements de texte’/ cliquer sur ‘afficher’/ cliquer sur ‘titres et
intitulés’
Ou système/liste/intitule de liste

écriture dune ligne


WRITE : / 'date', cc zone+8(2) . " écrire les 2car de zone - qui sont en 8ème position - à partir
de la colonne cc : par défaut la zone entière est positionnée à la suite de l'autre avec un espace ?
SKIP 2.

commentaires :
* : en début de ligne indique que toute la ligne est du commentaire
" : en cours de ligne indique que la suite de la ligne est du commentaire

Dernier enregistrement le 17/04/09 page 14 / 77


Report : exemple avec débranchement sur une sous-liste

report zpillon2 .
tables : tcurr,t001,t001k.
start-of-selection.
select * from tcurr.
write : / sy-lsind, tcurr-fcurr, tcurr-tcurr, tcurr-ukurs.
HIDE : tcurr-fcurr, tcurr-tcurr.
endselect.
at line-selection.
*** 1er niveau de détail
if sy-lsind = 1.
select * from t001 where waers = tcurr-fcurr
write : / sy-lsind, t001-bukrs, t001-butxt
HIDE : t001-bukrs
endselect
endif.

*** 2ème niveau de détail après sélection d’une ligne


if sy-lsind = 2.
select * from t001k where bukrs = t001-bukrs.
write : / 'test : ',sy-lsind, t001-bukrs, t001k-bwkey.
endselect.
If sy-subrc <> 0.
WRITE : / ‘ niveau ‘, sy-lsind , ‘ vide ‘.
Endif.
endif.
end-of-selection

ésultats
0 FRF BEF 6.14447
0 FRF BEF 6.13500
0 FRF DEM 0.29833
0 FRF DEM 0.29900

1 FR01 Country Template FR


1 JS00 JSFR-Plan comptes ref
1 JS01 JET SUD EST
1 JS03 JET OUEST

test : 2 JS01 D011


test : 2 JS01 D012

Dernier enregistrement le 17/04/09 page 15 / 77


Report : conseil pour l’alignement des colonnes
- créer des zones contenant la largeur de chaque colonne
- utiliser cette zone pour indiquer la largeur de la colonne d’en-tëte et de celle de détail

* largeur des colonnes pour édition


data : w_largeur_titre type i value 112,
w_largeur_etat type i value 112,
w_col_comma type i value 10,
w_col_piece type i value 10,
w_col_socie type i value 5,
w_col_creat type i value 10,
w_col_date type i value 10,
w_col_total type i value 15,
w_col_fourn type i value 30.

*-----------------------------------------------------------------------
form en-tete-colonnes.
*-----------------------------------------------------------------------
write at /1(w_largeur_etat) sy-uline.

format color col_heading.

write : /1 sy-vline.
write : at (w_col_comma) text-001 centered, sy-vline.
write : at (w_col_piece) text-002 centered, sy-vline.
write : at (w_col_socie) text-003 centered, sy-vline.
write : at (w_col_creat) text-004 centered, sy-vline.
write : at (w_col_date) text-005 centered, sy-vline.
write : at (w_col_total) text-006 centered, sy-vline.
write : at (w_col_fourn) text-007 centered, sy-vline.
format color off.
write at /1(w_largeur_etat) sy-uline.

endform.

*-----------------------------------------------------------------------
form ligne.
*-----------------------------------------------------------------------
format color col_normal.
write : /1 sy-vline.
write : at (w_col_comma) t_bseg-ebeln, sy-vline.
write : at (w_col_piece) t_bseg-belnr, sy-vline.
write : at (w_col_socie) t_bseg-bukrs, sy-vline.
write : at (w_col_creat) ekko-ernam, sy-vline.
write : at (w_col_date) t_bseg-budat, sy-vline.
write : at (w_col_total) t_bseg-dmbtr, sy-vline.
write : at (w_col_fourn) lfa1-name1, sy-vline.
hide : t_bseg-belnr, t_bseg-ebeln, t_bseg-bukrs, t_bseg-gjahr.
if sy-linno eq 64.
write at /1(w_largeur_etat) sy-uline.
endif.
endform.

Dernier enregistrement le 17/04/09 page 16 / 77


débranchement (touches , boutons) sur plusieurs transaction après sélection d’une ligne
- créer les boutons de débranchement
- préparer les valeurs à passer (HIDE) après l’instruction d’écriture de la ligne de report :
hide : t_bseg-belnr, t_bseg-ebeln, t_bseg-bukrs, t_bseg-gjahr.

- rechercher les noms des paramètres id pour chaque transaction


- lancer la transaction
- pour chaque champ Curseur dans la zone de saisie
Clic sur touche clavier F1
Affichage de la fenêtre ‘performance assistant’
Clic sur l’icône ‘marteau clé plate’
Affichage de la fenêtre ‘information technique’
Dans le bloc ‘données de zone’, lire le contenu de ‘Id de paramètre’

- passer les valeurs pour chaque transaction : SET PARAMETERS-ID


AT USER-COMMAND.
SET PARAMETER id 'BES' FIELD t_bseg-ebeln.
SET PARAMETER id 'BLN' FIELD t_bseg-belnr.
SET PARAMETER id 'BUK' FIELD t_bseg-bukrs.
SET PARAMETER id 'GJR' FIELD t_bseg-gjahr.

- Appeler la transaction sélectionnée

call transaction SY-UCOMM and skip first screen.

Création des boutons de débranchement


Création du formulaire à partir du programme
après dernière ligne du programme principal : écrire la ligne SET Pf-STATUS 'nom_ecran'.

Double clic avec curseur sur 'nom_ecran' (Si l’écran n’existe pas, proposition de le créer : validez)

Affichage de l’écran ‘gérer le statut nom_ecran de l’utilisateur nom_utilisateur


L’écran comprend 3 lignes de commandes :
- Barre de menus
- Barre d’outils
- Touche Fonction :

Interface YFIRE045 Actif(ve)

Barre de menus Débranchement depuis YFIRE045

Barre d'outils d'app Débranchement depuis YFIRE045

Touches de fonction Débranchement depuis YFIRE045

Cliquer sur le bouton ( vert avec flèche orientée en bas)associé à ‘Touche de fonction’

Dernier enregistrement le 17/04/09 page 17 / 77


3 blocs s’ajoutent en dessous du bloc précédent :
Barre d'outils
Allocations recommandées p. touches fct.
Touches fonction pouvant être allouées

Touches fonction pouvant être allouées


F5 ME23N Visualisation de...
F6 FB03 Visualisation de ...
F7 KOB1 Postes individuel...
F8 KSB1 Postes individuel...
Maj-F1

Association touche fonction avec transaction :


Pour chaque fonction à associer Renseigner la celllule de la 1ère colonne
Double-Cliquer
la fenêtre ‘propriété de fonction’ s’affiche
renseigner le ‘texte de fonction’
renseigner le ‘nom de l’icône’
valider
Activer

Positionnement des boutons dans la barre d’outils applicative


Cliquer sur le bouton ( vert avec flèche orientée en bas)associé à ‘Barre d'outils d'app’
Un tableau vient s’intercaler
Saisir le nom de la fonction à la position voulue
Valider

Positions 1 - 7 ME23N FB03 KOB1 KSB1


Comman

Positions 8 - 14

Positions 15 - 21

Positions 22 - 28

Positions 29 - 35

Activation des boutons d’outils non standards


Cliquer sur le bouton ( vert avec flèche orientée en bas)associé à ‘Touche de fonction’

Dans le bloc ‘Barre d ‘outils’:


Pour chaque fonction désirée :
Choisir la colonne correspondant à l’icône standard
saisir le code de la fonction et double cliquer
la fenêtre ‘propriété de la fonction’ s’ouvre
Saisir ‘E4 pour type de fonction

Dernier enregistrement le 17/04/09 page 18 / 77


Ecrire les données

write : 'Nous sommes le : ', sy-datum.


new-line.
write : 'Nouvelle ligne',
/ 'Encore une autre ligne'.
skip 3.
write : '3 lignes vides'.

Résultat :
Nous sommes le 01/07/1998
-- ligne blanche
Nouvelle ligne
Encore une autre ligne
--
--
--
3 lignes vides

write at 5 'position 5'.


pos = 20.
write at pos 'position 20'.
Permet de préciser la position à laquelle on veut écrire.
len = 5.
write at pos (len) 'position 20'.
Permet de préciser la position + longueur à laquelle on veut écrire.
Options :

• no-sign : signe supprimé,

• decimals : précise nb de décimales

• using edit mask : précise un masque d'édition,

• no-gap : supprime espace entre les mots.

Dernier enregistrement le 17/04/09 page 19 / 77


Selection des données :

Select : AGREGAT Select Max ( Nom du champ ) <<la plus grande valeur du champs
Min ( Nom du champ ) <<la plus petite valeur
AVG( Nom du champ ) << Moyenne d’un champ numerique
SUM( Nom du champ ) <<Somme d’un champ numerique
COUNT (*) <<Nombre total d’enregistr. From <nom de table> Into (<zone de travail1>, (<zone de travail1>).
1) Selection * From <nom de table> Into Corresponding Fields Of <zone de travail1> .
2) Selection * From <nom de table> Into Corresponding Fields Of Table <nom de table interne> = Seuls les champs communs aux
deux tables seront lus dans la table et transferes dansla table interne.
3) Selection * From <nom de table> Appending Corresponding Fields Of Table <nom de table interne>. Cette instruction ne remplace
pas les entrees de tables existantes, mais en ajoute simplement de nouvelles.
4) Selection * From <nom de table> Where <zone de travail1> Like ‘_A%’. endselect. = selection de tous les enregistrements ou
apparaît un <<A>> en deuxieme position dans la zone de table et qui sont suivis d’une sequence de caracteres.
5) Selection * From <nom de table> Appending Table <nom de table interne> = Ajout d’enregistrement aux entrees existantes.
6) Selection * From <nom de table> For All Entries In <nom de table interne> Where <condition> Endselect = Extraction de toutes les
entrees obltenues lors du remplacement des zones de la table interne adressee par la condition where, par les valeur correspondantes
des entrees de la table.
7) Selection * From <nom de table> Order By <zone1> <zone2> Endselect. = Extraction des entrees de la base de donnees dans un
ordre Selection <A1> <A2> Into (<F1> <F2>) From <nom de table> Groupe By … Endselect. =Un groupe est constitué des entrees
figurant dans les colonnes indiquees apres Groupe By et possedant des valeurs identiques.
8) Selection * From <nom de table> By Passing Buffer. Endselect = lecture des donnees de la base et non celles se trouvant dans la
memoire tampon.

Exemple : select mdv01 from mkal up to 1 rows (lorsque l’on a pas la cle complète a la dif. Select single)
Select spmon pmnux wenux basme absat lagri from s076 into corresponding fields of s076 where **
SELECT F1~EBELN F1~MATNR F1~ETFZ2 F2~BSART F2~BSTYP***** avec jointure simple
INTO
(WT_ART_DIV-EBELN,
WT_ART_DIV-MATNR,
WT_ART_DIV-ETFZ2,
WT_ART_DIV-BSART,
WT_ART_DIV-BSTYP)
FROM EKPO AS F1 INNER JOIN
EKKO AS F2
ON F1~EBELN = F2~EBELN
WHERE F1~MATNR = WT_VISU_ECRAN-MATNR
OR F1~ETFZ2 > WT_VISU_ECRAN-ETFZ1
AND F2~BSART = 'LPA'
AND F2~BSTYP = 'L'.
SELECT f2~dokar f2~doknr f2~doktl MAX( f2~dokvr ) ***** avec jointure avec max
INTO (draw-dokar, draw-doknr, draw-doktl, draw-dokvr)
FROM drad as f1
INNER JOIN draw as f2
ON f1~dokar = f2~dokar
AND f1~doknr = f2~doknr
AND f1~dokvr = f2~dokvr
AND f1~doktl = f2~doktl
WHERE ( f1~objky IN (ekpo-matnr, ekpo-ematn)
AND f1~dokar IN ('R2M', 'R12') )
OR ( f1~objky IN (ekpo-ematn) AND f1~dokar IN ('Q10') )
AND f2~dokst = '06'
GROUP BY f2~dokar f2~doknr f2~doktl.
SELECT marc~sernp marc~matnr mseg~bwart mseg~mblnr mseg~zeile mseg~menge ***** double jointure sans fisans renommer
INTO (w_profil, w_article, w_bwart, w_commande, w_poste, w_quantite)
FROM mkpf
INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr
* début modif 250301: SJAL
AND mkpf~mjahr = mseg~mjahr
INNER JOIN marc ON mseg~matnr = marc~matnr
AND mseg~werks = marc~werks
* fin modif 250301
WHERE mkpf~budat = p_date
AND vgart = 'WA'
AND ( bwart = '915' OR bwart = '961' )
AND mseg~werks = p_werks
AND mseg~lgort = p_lgort
AND sernp IN p_critere.

OPTIMISATION
Ce chapitre aborde les principaux points de programmation qui vont nous permettre d’optimiser au mieux les
développements : accès aux tables, utilisation des index ...
LA CONDITION WHERE
Toujours spécifier les conditions dans la clause WHERE. Le système de base de données peut alors utiliser
un index (s’il existe).
Ne pas sélectionner de données qui seront filtrées ensuite (par un CHECK par exemple).
Eviter les WHERE complexes (ex : les OR abusifs). Ne pas utiliser l’opérateur NOT.
Exemple

A EVITER A UTILISER
SELECT * FROM SBOOK. SELECT * FROM SBOOK
CHECK: SBOOK-CARRID = 'LH' AND WHERE CARRID = 'LH' AND
SBOOK-CONNID = '0400'. CONNID = '0400'.
ENDSELECT. ENDSELECT.
SELECT SINGLE
Le SELECT SINGLE n’effectue qu’un seul accès à la base de données au lieu de deux pour un SELECT-
ENDSELECT.

Dernier enregistrement le 17/04/09 page 20 / 77


Exemple

A EVITER A UTILISER
SELECT * FROM SCARR SELECT SINGLE * FROM SCARR
WHERE CARRID = 'LH'. WHERE CARRID = 'LH'.
ENDSELECT.

LES AGGREGATS
Afin de trouver le maximum, le minimum, la somme, la valeur moyenne ou le nombre d’enregistrement d’une
table, utiliser un SELECT avec les instructions aggrégées.
Exemple

A EVITER A UTILISER
C4A = '000'. SELECT MAX( MSGNR ) FROM T100 INTO C4A
SELECT * FROM T100 WHERE SPRSL = 'D' AND
WHERE SPRSL = 'D' AND ARBGB = '00'.
ARBGB = '00'.
CHECK: T100-MSGNR > C4A.
C4A = T100-MSGNR.
ENDSELECT.

LES VUES

Pour traiter une jointure, utiliser une vue au lieu de SELECT imbriqués
Exemple

A EVITER A UTILISER
SELECT * FROM DD01L SELECT * FROM DD01V
WHERE DOMNAME LIKE 'CHAR%' WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'. AND DDLANGUAGE = SY-LANGU.
SELECT SINGLE * FROM DD01T ENDSELECT.
WHERE DOMNAME = DD01L-DOMNAME
AND AS4LOCAL = 'A'
AND AS4VERS = DD01L-AS4VERS
AND DDLANGUAGE = SY-LANGU.
ENDSELECT.

Les vues (Quintet)

Il est possible d'améliorer les accès à une combinaison de tables en utilisant les vues existantes dans
le dictionnaire de données ou en créant des vues spécifiques.

En utilisant la transaction SE11 et en faisant un cas d'emploi sur une table en cochant 'Utilisation dans
Vues', on obtient une liste de vues qui peuvent être utilisées.
Exemple : Cas d'emploi sur VBAK permet de trouver 25 occurrences dont VBAKUK, VIVEDA et
M_VMVAA.

Les aides à la recherche et les matchcodes sont construits sur des vues.
 Pour les commandes : M_VMVAx avec x = A,B …
 Pour les livraisons : M_VMVLx
 Pour les factures : M_VMCFx

Quelques exemples de vues du dictionnaire de données :


Vue Tables jointure Libellé
MFAUF MARA + MARC "Vue division article pour l'OF"
VBRKUK VBRK + VBUK Entête facture +données statut
VBAKUK VBAK + VBUK Vue: En-tête doc.vte + données statut
VIVEDA VBAK + VBAP Poste document commercial
M_VMVAA VBAK + VBKD View générée pour ID matchcode VMVA -A

Remarque : toutes les zones des tables ne sont pas forcément toutes présentes dans les vues. Il faut
donc bien analyser le cas à traiter et l'ensemble des vues existantes avant de faire un choix technique.
Dernier enregistrement le 17/04/09 page 21 / 77
Instruction JOIN
Il est des cas où il n'existe pas de vue. Si les critères de sélection se rapportent à deux tables ou plus,
il est alors intéressant de créer des jointures "éphémères" ; c'est à dire qui n'existent que pour la
durée du programme. Pour que ce travail soit efficace, il faut que le lien entre ces tables portent sur
des champs clé.

Exemple : table VBRK et KNA1.


SELECT K~VBELN
A~NAME1
INTO TABLE TAB
FROM VBRK AS K INNER JOIN KNA1 AS A ON K~MATNR = A~MATNR
WHERE K~ERDAT EQ '20001018'
AND A~MATNR IN S_MATNR.

Les index

Il est possible de créer des index en fonction des besoins spécifiques du client. Pour optimiser cette
démarche il faut savoir que la notion d'index est réellement efficace lorsque la zone utilisée comporte
un grand nombre de valeurs par rapport au nombre d'enregistrements de la table.

Exemple :
Dans la table des commandes, VBAK ( plus de 300.000 enregistrements) il peut être intéressant de
créer un index sur la zone SUBMI (utilisée pour stocker un n° de commande client) qui comporte
quasiment autant d'occurrences que de commandes crées. Ce n'est pas le cas de la zone VKORG
(organisation commerciale) qui comporte uniquement 4 valeurs.

LA BUFFERISATION

Utiliser les buffers autant que possible. L'instruction BYPASSING BUFFER ne doit être utilisée que si c'est
vraiment nécessaire.
Les instructions suivantes n’utilisent pas le buffer : DISTINCT, SINGLE FOR UPDATE et les instructions
aggrégées du SELECT.
Exemple

A EVITER A UTILISER
SELECT SINGLE * FROM T100 SELECT SINGLE * FROM T100
BYPASSING BUFFER WHERE SPRSL = 'D'
WHERE SPRSL = 'D' AND ARBGB = '00'
AND ARBGB = '00' AND MSGNR = '999'.
AND MSGNR = '999'.

LA MISE A JOUR
Utiliser la mise à jour par colonne au lieu d’une mise à jour ligne à ligne. Ne mettre à jour que les champs
concernés par UPDATE. Eviter l'écrasement systématique de la ligne complète par la zone de travail de la table.
Exemple

A EVITER A UTILISER
SELECT * FROM SFLIGHT. UPDATE SFLIGHT
SFLIGHT-SEATSOCC = SET SEATSOCC = SEATSOCC - 1.
SFLIGHT-SEATSOCC - 1.
UPDATE SFLIGHT.
ENDSELECT.
Dernier enregistrement le 17/04/09 page 22 / 77
LES INDEX
Exploiter les index pour une utilisation plus efficace des WHERE. Pour cela les champs d'index devront être
sélectionnés avec un opérateur EQ (=).
Exemple

A EVITER A UTILISER
SELECT * FROM T100 SELECT * FROM T002.
WHERE ARBGB = '00' SELECT * FROM T100
WHERE SPRSL = T002-SPRAS
AND MSGNR = '999'. AND ARBGB = '00'
ENDSELECT. AND MSGNR = '999'.
ENDSELECT.
ENDSELECT.

Table interne : alimentation


Pour alimenter une table interne, utiliser la syntaxe INTO TABLE, beaucoup plus rapide que l’instruction
APPEND.
Exemple 1

A EVITER A UTILISER
REFRESH X006. SELECT * FROM T006 INTO TABLE X006
SELECT * FROM T006 INTO X006.
APPEND X006.
ENDSELECT.

Exemple 2
SELECT : récupération des valeurs des champs lus dans postes de table
select WTG001 WOG001 from coss
into TABLE t_coss
where ( wtg001 <> coss-wog001 )
or ( wtg001 <> coss-wkg001 ).

Traitement itératif sut table SAP à partir d’une table interne :


Il est préférable de passer par une table interne pour le traitement des données
Exemple
A EVITER A UTILISER
SELECT * FROM T006. SELECT * FROM T006 INTO TABLE X006.
ENDSELECT. LOOP AT X006.
ENDLOOP

SELECTION DES CHAMPS


Eviter le SELECT * dans la mesure du possible. Préciser les champs souhaités

A EVITER A UTILISER
SELECT * FROM DD01L SELECT DOMNAME FROM DD01L
INTO DD01L-DOMNAME
WHERE DOMNAME LIKE 'CHAR%' WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'. AND AS4LOCAL = 'A'.
ENDSELECT. ENDSELECT.

INSERT
Utiliser la mise à jour tableau au lieu d’une mise à jour ligne à ligne.
Exemple

A EVITER A UTILISER
LOOP AT TAB. INSERT CUSTOMERS FROM TABLE TAB.
INSERT INTO CUSTOMERS VALUES TAB.
ENDLOOP.

Dernier enregistrement le 17/04/09 page 23 / 77


Les SELECT imbriqués : FOR ALL ENTRIES
Eviter les séries de boucle SELECT. Travailler plutôt avec des tables internes.
Exemple

SELECT * FROM MKPF


WHERE ( BUDAT IN SO_DAT1 OR BUDAT IN SO_D1 ).
SELECT * FROM MSEG A EVITER
WHERE MBLNR = MKPF-MBLNR
AND MJAHR = SO_D1-LOW(4).
ENDSELECT.
ENDSELECT.

SELECT MBLNR BUDAT FROM MKPF INTO TABLE T_INTER


WHERE ( BUDAT IN SO_DAT1
OR BUDAT IN SO_D1 ).
SELECT MBLNR MJAHR BWART XAUTO MATNR WERKS ERFMG
GSBER KOKRS KOSTL BUKRS TANUM GRUND
FROM MSEG INTO TABLE T_MSEG
FOR ALL ENTRIES IN T_INTER A UTILISER
WHERE MBLNR = T_INTER-MBLNR
AND MJAHR = SO_D1-LOW(4).

Exemple 2
SELECT (T_FIELDS) FROM (P_TABLE)
APPENDING CORRESPONDING FIELDS OF TABLE T_TABLE
FOR ALL ENTRIES IN T_JCDS
WHERE LEDNR = '00'
AND OBJNR = T_JCDS-OBJNR
AND WRTTP = '04'.

Sélection des enr. De P_table dont certains champs ont des valeurs spécifiques
et dont le champ objnr est une valeur de la table T_JCDS

Select

• Sélection de données avec condition


data itab_salarié like salarié.
select * from salarié into itab_salarié
where date_entree >= '01/01/98'.
write : / itab_salarié-nom.
endselect.

• Sélection d'une seule entrée


select single from salarié
where num_id = '10203'.
if sy-subrc = 0
write : / salarié-nom.
endif.

data : wnom like salarié-nom,


wprenom like salarié-prénom.

select nom prénom into (wnom, wprénom)


from salarié.
write : / salarié-nom.
endselect.

• Statistiques
select count(*) into wcpt from salarié.

count : Comptage, avg : moyenne,


max : valeur maxi, sum : somme,
min : valeur mini.

La variable système SY-DBCNT contient le nombre de lignes traitées par le dernier select.

Dernier enregistrement le 17/04/09 page 24 / 77


Tables transparentes tables internes

• Sélection de données - Table Transparente

– Déclaration des tables


tables : candidat salarié.

– Sélection.
select * from salarié.
write : / salarié-nom.
endselect.
Permet de sélectionner tous les champs de toutes les lignes de la table salarié.
Une zone de travail est allouée à la table par défaut.
Select / Endselect constitue une boucle de lecture.

– Sélection (avec structure identique)


data str_salarié like salarié.
select * from salarié into str_salarié.
write : / str_salarié-nom.
endselect.

– Sélection (avec structure différente)


select * from salarié into corresponding fields of str_salarié.
...
endselect.

select * from salarié into corresponding fields of table itab_salarié.


...
endselect.

--> Correspondance sur le nom des champs.

– Loop / Endloop
data itab_salarié like salarié occurs 100
with header line.
select * from salarié into itab_salarié.
loop at itab_salarié.
write : / itab_salarié-nom.
endloop.

Dernier enregistrement le 17/04/09 page 25 / 77


SELECT : élémentaire, boucle
Select unique SELECT SINGLE FROM <nom_table>
[INTO <table interne>]
WHERE <nom_champ_table> =..
.
IF SY-SUBRC = 0 il y’a un enr. Sélectionné ou c’est le 1er de ceux répondant aux critères
Select multiple SELECT… FROM
INTO
WHERE
ENDSELECT
SY-DBCNT contient le nbre d’occurrences sélectionnées
Exemple DATA BEGIN OF WA2,
CARRID LIKE SCARR-CARRID,
CARRNAME LIKE SCARR-CARRNAME,
REST(100),
END OF WA2.
SELECT CARRID CARRNAME
INTO WA2 copie dans l’ordre des rubriques quel que soit le nom
INTO CORRESPONDING FIELDS OF WA2 :
copie dans les zones de même nom de la structure
FROM SCARR.

WRITE: / WA2-CARRID, WA2-CARRNAME.


ENDSELECT.

SELECT (T_FIELDS) FROM (P_TABLE)


SELECT : Indication des champs dont les valeurs sont à récupérer à partir d’une table contenant le nom d’un
champ par poste

DATA: BEGIN OF T_FIELDS OCCURS 0, "Liste des champs pour Select


FNAME LIKE DNTAB-FIELDNAME, “ CHAR 30
END OF T_FIELDS.

PERFORM T_FIELDS_COSL.
PERFORM RECHERCHE_TABLE TABLES T_COSL USING 'COSL '.

FORM T_FIELDS_COSL.
* Initialisation
CLEAR : W_PERIO, T_FIELDS, T_FIELDS[].
FREE T_FIELDS.
* Champs d'en-tête
Dernier enregistrement le 17/04/09 page 26 / 77
T_FIELDS-FNAME = 'LEDNR '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'OBJNR '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'GJAHR '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'WRTTP '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'VERSN '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'VRGNG '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'PERBL '. APPEND T_FIELDS.
T_FIELDS-FNAME = 'MEINH '. APPEND T_FIELDS.
* Champs valeur
DO 13 TIMES.
ADD 1 TO W_PERIO.
CONCATENATE 'LST' W_PERIO INTO T_FIELDS-FNAME.
APPEND T_FIELDS.
ENDDO.

ENDFORM. " T_FIELDS_COSL

FORM RECHERCHE_TABLE TABLES T_TABLE


USING P_TABLE LIKE DNTAB-TABNAME.
* Sélection des données budgétées (01)
SELECT (T_FIELDS) FROM (P_TABLE)
INTO CORRESPONDING FIELDS OF TABLE T_TABLE
FOR ALL ENTRIES IN T_JEST
WHERE LEDNR = '00'
AND OBJNR = T_JEST-OBJNR
AND WRTTP = '01'.
* Sélections des données produites (04)
SELECT (T_FIELDS) FROM (P_TABLE)
APPENDING CORRESPONDING FIELDS OF TABLE T_TABLE
FOR ALL ENTRIES IN T_JEST
WHERE LEDNR = '00'
AND OBJNR = T_JEST-OBJNR
AND WRTTP = '04'.

ENDFORM. " RECHERCHE_TABLE

Dernier enregistrement le 17/04/09 page 27 / 77


Traitement des données :
Field-Groups : = Il sagit de fichiers sequentiels a structure variable, Ils permettent de traiter une grande quantite de donnees sous forme d’un bloc, un
fichier extract est constitué d’une sequence d’enregistrements, Ces enregistrements peuvent avoir une structure variable, On ne peut
definir qu’un seul fichier extract par programme, On ne peut lire un fichier extract que de facon sequentielle.
Les groupe de zones : FIELD-GROUPS <fg>. = un field goupe les meme champs sous un meme nom. Il ne reserve pas un espace
memoire mais est relie à des champs existants grace à un pointeur. Il existe un field-groupe particulier appelé HEADER. Les champs
relié au header sont presents dans chaque enregistrement d’un fichier extract.FIELD-GROUPS : HEADER , DIVISION, MAGASIN.
L’affection de zones à un field-group peut se faire jusqu’au moment ou le premier enregistrement utilisant ce field-groups est crée.

INSERT : Num_art Div Mag Into Hearder, Stock_div Into Division, Stock_mag Into Magasin.
Création des enregistrements. Extract <fg> créer un enregistrement contenant les valeurs des zones du HEADER puis des zones du
field-group <fg> au moment de l’EXTRACT. EXTRACT DIVISION. EXTRACT MAGAZIN. Num_art_ div Mag Stock_div
DIVISION . Num_art_ div Mag Stock_mag MAGASIN.
Pour ajouter une ligne d’en-tete a la table, on utilise l’instruction With Hearder Line .
FIELD-GROUPS: header, detail.
INSERT : we_rec-centre we_rec-sep1 we_rec-hyp INTO header.
* Insertion des donnees en fonction des paramètres de tri
INSERT: we_rec INTO detail. "-centre,
SELECT SINGLE * FROM zco_nat_hyp WHERE ktopl IN s_ktopl
AND hkont = coss-kstar.
and hkont = cosp-kstar.MG001
IF sy-subrc = 0.
MOVE zco_nat_hyp-zcod_hyp TO we_rec-hyp.
EXTRACT detail. "mg003

Endif.

Les groupes de champ (instructions FIELD-GROUPS) doivent être codés sur 6


caractères significatifs (ex. : HEADER ; DETAIL ;...)

Rupture At First : AT FIRST ... ENDAT = traitement du premier poste de la table


AT NEW ... ENDAT = Traitement d’une nouvelle valeur d’une zone
AT END OF ... ENDAT= Traitement d’un fin de valeur d’une zone
AT LAST ... ENDAT = Traitement du dernier poste de la table
AT fg ... ENDAT
DATA : SUM_VMSAL LIKE MBEW-VMSAL,
SUM_VMKUM LIKE MBEW-VMKUM.
SORT WT_DONNEES_CAL BY MATNR.

LOOP AT WT_DONNEES_CAL.

MOVE WT_DONNEES_CAL-CODE_MVT TO WT_FIC_DONNEES-CODE_MVT.


MOVE WT_DONNEES_CAL-MATNR TO WT_FIC_DONNEES-CODE_PROD.
MOVE WT_DONNEES_CAL-BUKRS TO WT_FIC_DONNEES-CODE_SOC.
MOVE WT_DONNEES_CAL-WAERS TO WT_FIC_DONNEES-CLE_DEV_INT.
MOVE 0 TO WT_FIC_DONNEES-VAL_STOCK.
MOVE 0 TO WT_FIC_DONNEES-QTE_STOCK.

AT NEW MATNR.
CLEAR : SUM_VMSAL , SUM_VMKUM.
ENDAT.

SUM_VMSAL = SUM_VMSAL + WT_DONNEES_CAL-VMSAL.


SUM_VMKUM = SUM_VMKUM + WT_DONNEES_CAL-VMKUM.

AT END OF MATNR.
WT_FIC_DONNEES-PMP-2 = SUM_VMSAL / SUM_VMKUM.

IF WT_FIC_DONNEES-PMP-2 NE 0.
MOVE WT_FIC_DONNEES-PMP-2 TO WT_FIC_DONNEES-PMP-2.
APPEND WT_FIC_DONNEES.

ELSE.
MESSAGE S001(ZZ) WITH TEXT-010 WT_DONNEES_CAL-MATNR.
ENDIF.
ENDAT.

Evenement : TOP-OF-PAGE, END-OF-PAGE = evenement se produisant en en-tete et pied de tete de page d’edition.
START-OF-SELECTION = Marque le debut du corps du programme(declare le debut du programme apres l’ecran de selection)
END-OF-SELECTION= Marque la fin du corps du programme (declare la fin de la consultation de la BDL)
At the end of the program
AT SELE CTION-SCREEN evenement utilise pour le reporting interactif. Il est declenché après la saisie de l’ecran de selection)

GET (lecture d’un enregistrement dans la bas e de donnée logique)


GET <tablename> LATE :Event after processing all tables that are hierarchically
inferior to the database table <tablename> in the structure of the logical database in use.
At user command = l’evene. se produit lorsque le user presse une touche de fonct. ou un bouto de cmd le code fonct. est dans sy-
ucomm
At PF-Key = Pour gerer les touches de fonctions
At line-selection = Le double clique de la souris sur la ligne de liste provoque le passage à un autre ecran une autre liste
INITIALIZATION= Pour mettre les variable a blancs(traitement associe (codé à la suite) à cet événement s’éxécutent avant
l’affichage de l’écran de sélection. Il s’agit generalement de traitement d’initialisation de l’ecran de sélection )
LOAD-OF-PROGRAM
At the start of a new page
TOP-OF-PAGE DURING LINE-SELECTION = Evenement permettant la mise en forme des entete de page pour les liste
enerees de maniere interactive(liste secondaire)
Les valeurs saisie sur un ecran de selection peuvent etre controlees. Il suffit pour cela d’utiliser une évenement. Cette phase de
contrôle intervient apres que l’utillisateur est saisi ses informations(PBO).At Selection-screen = contrôle l’intégralite de l’ecran, At
Selection-screen On <non du champ> = contrôle d’un champ. Tout message rend la zone saisissable, At Selection-screen On
Radiobutton Group <group> = contrôle radio bouton , At selection-screen on block <nom du bloc> contrôle le bloc, At
selection-screen On End Of <nom du champ> = contrôle d’un champ a la fin de la PAI, At Selection-screen On Help-resquest For
<Nom de la zone> = Lorsque l’on fait F1 sur la zone, At Selection-screen on value-request For <nom de la zone = permet de consulter
la liste des entrees possibles en selectionnant la touche F4 .

GET PARAMETER ID 'MAT' FIELD WT_VISU_ECRAN-MATNR.*****pour lire le PI***********

Dernier enregistrement le 17/04/09 page 28 / 77


Gestion d'une table interne :
chargement des zones de la ligne d'en-tête (= nom des zones de la table sans indication d'occurrence???) ,
APPEND <nom-table-interne> [SORTED BY <zone>] (ajout à la fin avec débordement possible de la
table[ajout avec re-triage sans débordement possible ])
COLLECT <nom-table-interne> : idem APPEND mais recherche préalable si poste idetique sur zone alpha et le
cas échéant somme sur les zones numériques à partir des valeurs de l'en-tête

Table transparente

Gestion d’une table transparente

– Insertion de ligne : INSERT

– tables salarié.
salarié-nom = 'EINSTEIN'.
salarié-prénom = 'Albert'.
insert salarié.

– record str_salarié renseigné.


insert into salarié values str_salarié.

– Insertion de plusieurs lignes : INSERT

– table interne itab_salarié renseignée.


insert salarié from table itab_salarié.

• Modification d'une table

– Modification d'une ligne : UPDATE


tables salarié.
salarié-nom = 'Durant'.
update salarié.

– Modification de plusieurs lignes : UPDATE

– tables salarié.
select * from salarié into itab_salarié
where prénom = space.
Loop at itab_salarié.
itab_salarié-prénom = 'Inconnu'.
modify itab_salarié.
endloop.
update salarié from table itab_salarié.

– tables salarié.
update salarié set prénom = 'Inconnu'
where prénom = space.

• Suppression d'un ensemble de lignes

– DELETE
Dernier enregistrement le 17/04/09 page 29 / 77
Read table all_salarié with key nom = 'Durand'.
if sy-subrc = 0.
delete all_salarié index sy-tabix.
endif.

• Suppression d'un ensemble de lignes

– DELETE
nom = 'durand'.

– delete salarié.
suppression nom = durand

– delete from salarié where nom ne 'Durand'.


suppression nom < durand

• Nom de table dynamique


data table_name(15) type c.
table_name = 'salarié'.
insert ( table_name ) from itab_salarié.

Tableau ou table interne

• Qu'est-ce qu'une table interne ?


La table interne peut être un snapshot de la table de la base de donnée, ou un moyen de stockage temporaire
de données.
En utilisant les tables internes, vous n'avez pas à vous soucier de l'allocation dynamique de mémoire, gérée
par le système.

• La Header Line
Lorsque l'on déclare une table interne, il est possible de lui attacher une 'Header Line', c'est à dire une zone
d’échange entre la table interne et le programme.
S'il n'y a pas de 'Header Line', il faut définir un enreg. pour pouvoir manipuler les enregistrement de la table
interne.

• La Header Line

• Header line implicite


data : begin of itab_salarié occurs 10,
include structure str_salarié,
end of itab_salarié.
Lorsque la déclaration fait appel à la définition de tous les champs de manière élémentaire, ou fait
référence à une structure, la header line est créée automatiquement.

• Header line explicite


data itab_salarié like salarié occurs 10
with header line.
Lorsque la déclaration fait référence à une définition de table transparente, la header line n’est pas créée
automatiquement.

déclaration
Chaine de zone (avec OCCURS cela correspond à une table interne)
DATA: Zone-1 type I,
BEGIN OF groupe-zone [OCCURS <n>], (la table est générée avec un HEADER LINE)
zone-2 TYPE...,
zone-3 LKE...,
END OF groupe-zone.
adressage : groupe-zone-zone-2

Dernier enregistrement le 17/04/09 page 30 / 77


DATA: Zone-1 type I,
BEGIN OF groupe-zone [OCCURS <n>].
INCLUDE STRUCTURE <nom_table_ATAB>.
END OF groupe-zone.

SORT <nom-table-interne> BT <nom-zone-table> [ASCENDING/DESCENDING]

MOVE CORRESPONDING <f1> TO <f2> : transfert des zones de f1 vers zone de f2 de même nom; f1 et f2
n'ont pas forcément la même structure
MOVE <f1> TO <f2> : transfert des zones de f1 vers zone de f2 de même nom; f1 et f2 ont la même structure

– Ajout de ligne : APPEND

– select * from salarié.


move-corresponding salarié to itab_salarié.
append itab_salarié.
endselect.

– select * from salarié appending table itab_salarié.

– append lines of itab_salarié to itab2_salarié .

– Insertion de ligne : INSERT

– insert itab_salarié index 3


permet d'insérer une ligne en 3ème position dans la table.

– insert lines of itab_salarié from 2 to 4


into itab2_salarié index 3.
permet d'insérer un bloc de ligne (ligne 2,3,4) à une position précise.

– Modification d'une ligne : MODIFY


Read table itab_salarié with key nom = 'Durand'.
if sy-subrc = 0.
itab_salarié-prénom = 'Jean'.
modify itab_salarié index sy-tabix.
endif.
SY-TABIX est une variable système permettant de connaître l'indice de l’enregistrement courant.

– Copie complète de table : MOVE

– move all_salarié to old_salarié.

Dernier enregistrement le 17/04/09 page 31 / 77


Lecture, tri , rupture d’une table interne

• Lecture d'une table interne

– Loop / endloop

– loop at itab_salarié (into ... where ...)


write : / nom.
endloop.
into : Lorsqu’il n’y a pas de header line associée.

– Lecture 1 seule ligne : READ

– read table itab_salarié index 3 (into ...).

– read table itab_salarié with key nom = 'Dupont'.

Le résultat de la recherche peut toujours être testé avec la zone système SY-SUBRC.
SY-SUBRC = 0 quand recherche OK.

• Tri d'une table interne

– SORT

– sort all_salarié.
L'ordre du tri est implicitement déterminé par le séquencement des champs dans la structure.
La colonne la plus à gauche représente le critère de tri le plus élevé.

– sort all_salarié by prénom descending.


Permet de préciser le ou les critères de tri.

• Les ruptures

– at first / endat
traitement exécuté au début de la table.

– at new f / endat
traitement exécuté lorsque le contenu du champ f (ou des champs précédents) a changé.

– at end of f / endat
traitement exécuté lorsque le contenu du champ f (ou des champs précédents) va changer au prochain
passage.

– at last / endat
traitement exécuté à la fin de la table.

Dernier enregistrement le 17/04/09 page 32 / 77


Suppression

– Suppression d'un ensemble de lignes DELETE


Read table itab_salarié with key nom = 'Durand'.
if sy-subrc = 0.
delete itab_salarié index sy-tabix.
endif.

delete itab_salarié where nom = 'Durand'.

delete itab_salarié where nom = 'Durand'.

– REFRESH
refresh itab_salarié.
Permet de détruire toutes les lignes de la table interne en une seule instruction.
Attention : Si la table interne a une Hearder Line, celle-ci n’est pas mise à jour.

– CLEAR
clear itab_salarié.
Permet d’effacer le contenu de la Header Line.


Collect : L’ordre collect cree les postes de table en considérant les zones de type D,C,N comme clé de la table et les zones de F,P,I comme zone
de cumul. Pour une meme cle,Collect ne crée qu’un seul poste de table et additionne les valeurs dans les zones de cumul.
Data : begin of tab occurs 10, zonec(1) type c, zonen(3) type n, zonep(3) type p,end of tab.
Move ‘AB’ to zonec. Move ‘999’ to zonen. Move 5 to zonep. Collect tab. Move ‘AB’ to zonec. Move ‘999’ to zonen. Move 2 to
zonep. Collect tab. RESULTAT AB99900007C

Consultation de table : loop-endloop. = Lecture ou parcours séquentiel de table loop at tab from indx1 to indx2 = en spécifiant les index aux bornes de
l’intervalle. Loop at tab where zone1 = AA. En acces direct renseignez la clé de la table interne (zone de type c,d,n) au préalable.
Move ‘ab’ to tab-zonec. Move ‘999’ to tab-zonen. Read table tab. If sy-subrc ne 0. Else. Endif. Il est posible de specifier la clé l’option
With key w_cle Binary Searsh. Permet une recherche dichotomique plus rapide. Cette methode necessite un tri préalable de la table.
Refresh.
Suppression d’une entree de table : Refresh = elimine toutes les entrees de la table. Clear = elimine l’en tete de la table . Delete = pour supprimer un poste
particulier en specifiant l’indexe.
Insert = ajouter un poste de table , Modify = permettent de modifier un poste de table, Delete = supprimer un poste de table

Describe : = demande d’information . Lines = retourne le nombre d’entrées . Occurs = Retourne la valeur du parametre Occurs.
(data : l_count type i, l_occurs type i. describe table tab1. Lines l_count. Occurs l_occurs.

Tables
standard Doublons sur clés
Triée
Addresses calculées
Traitement individuel ajout APPEND APPEND w-tab TO tab (tables standard)
Traitement individuel insère INSERT INSERT w-tab INTO tab condition
- table standard = append
- table triée = insertion à la bonne place
- table d’adr. calc. = insertion suivant algor. :
Traitement individuel Lire READ READ tab INTO w-tab condition [WITH TABLE KEY
[avec adresse calculée] nom-1 = ‘ ‘
Traitement individuel modifier MODIFY MODIFY nom_table [FROM w_gr_zones]
Traitement d’un groupe modifier MODIFY MODIFY nom_table WHEREcondition
Traitement individuel Supprimer DELETE DELETE tab condition
Traitement individuel Ajouter/modi COLLECT Cumul sur toutes les zones numériques
fier avec Toutes les zones alphanumériques sont considérées comme composant
cumul de la clé
Traitement par groupe boucle LOOP..END LOOP AT nom_table [INTO wa_ffff]…..ENDLOOP
LOOP
Traitement par groupe supprimer DELETE DELETE table condition
Traitement par groupe insérer INSERT INSERT tab2 condition2 [FROM tab1] WHERE condition1
Traitement par groupe Ajouter APPEND APPEND tab2 condition2 [FROM tab1] WHERE condition1
contenu
FREE, SORT, REFRESH, SORT

Dernier enregistrement le 17/04/09 page 33 / 77


Reprise des données via la memoire SPA/GPA : Set Parameter Id <id> Field <zone> Cette fonction ecrit le contenu du champ <zone> dans une
mémoire SAP sous une clé d’identification PID composée de trois lettres.
Set_Parameter_Id_Too_long = Cle d’identification de plus de trois lettre.
Set_Parameter_Id_Wrong_Type = cle de type autre que c et n.
Set_Parameter_Id_value_too_long = valeur de zone de longueur supérieure à 250 caracteres.
Reprise des donnees avec export et import : Export <obj1> <objn> to Memory. Export <obj1> <objn> to database dbtab(ar) Id <key>.
Export <obj1> <objn> to Dataset dsn(ar) Id <key>. Export <obj1> <objn> to Shared Buffer dsn(ar) Id <key>. ==
Obj1 … objn constituent les noms des objets de données dont on souhaite stocker les valeurs dans une ùéùoire utilisateur.
Import f i tab …. From Memory. Import f i tab …. From database dbtab(ar) Id <key>.
Import f i tab …. From to Dataset dsn(ar) Id <key>. Import f i tab …. From Shared Buffer dsn(ar) Id <key>.
DATA : SCR_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
TABLES : MARC.
DATA MEMORY_ID_ART_DIV(30) VALUE 'TOTO '. "pid
DATA: BEGIN OF WT_ART_DIV OCCURS 0,
MATNR LIKE MARC-MATNR,
KZSTU LIKE EKPO-KZSTU,
ETFZ1 LIKE EKPO-ETFZ1,
FXHOR LIKE MARC-FXHOR,
WERKS LIKE MARC-WERKS,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
TRANS LIKE SY-TCODE,
END OF WT_ART_DIV.
CLEAR W_INPUT.
W_INPUT = INPUT.
OUTPUT = INPUT.
** importation des données des l'ecran ZPLM
IMPORT WT_ART_DIV FROM MEMORY ID MEMORY_ID_ART_DIV.

Calculs de date : Lorsque vous affectez une zone date à une zone packée , abap IV calcule le nombre de jour depuis 1900, les zone de date sont
converties en valeurs packees avant toute opération arimétique.
Datej = sy-datum . date du jour | datedm+6(2) = ‘01’. jour début de mois | datefm = datedm –1. date fin mois précédent |
datej = datedm –datej. Nombre de jour |
Cas : calculez le premier et le dernier jour du mois.
Data : datedm like sy-datum. « date debut du mois | data : datefm like sy-datum. « date fin mois
sort : Sur les tables internes, la clé de la table est constituée des champs non alphanumériques (<>P,F,I).
(ascending,descending) et les zones de tri. Dans ce cas, les zones de tri doivent etre dans le header.
concatenate : A B C  ABC = Concatenate A B C into ABC separated by space.
X Y Z  XYZ = split XYZ into X Y Z . Search = recherche chaine de caracteres. Replace = substitution de caracteres.
Translate = Translation (majuscule, minuscule). Condense = supprime les espaces (no-gap).

DO : EXIT : Sortie de la boucle. STOP : arret du programme. REJECT : sortie de la boucle. Do n Times. Traitement. Enddo.
Une forme plus complète de l’instruction do permet de faire varier la valeur d’une zone lors de chaque iteration.
Data : begin of val, zone1(1) type c value ‘1’, zone1(2) type c value ‘2’, end of val. Data : Zone like val-zone1.
Do 2 times varying zone from val-zone 1 next val-zone2. Write : zone. Enddo.

Boucle

SY-INDEX index de boucles


DO <n> TIMES ENDDO.
WHILE <expression logique>. instructions ENDWHILE
LOOP AT <nom-table_interne> ...INTO wa ENDLOOP

CHECK expression logique : dans une boucle, si l'expression logique n'est pas vérifié passage à l'itération
suivante
EXIT : dans une boucle, met fin au traitement de la boucle courante

Lecture unitaire
READ TABLE <nom_table_interne> WITH KEY '...'. IF SY-SUBRC NOT = 0 ...ENDIF.
READ TABLE <nom_table_interne> WITH KEY <k1> = <v1> <k2> = <v2>. IF SY-SUBRC NOT = 0
...ENDIF.

While : la seconde forme de boucle avec condition While i>7. I = i + 1. Write : i. endwhile.
Avec modification a chaque boucle While i < a vary zone from val-zone1 next val-zone2. I=i+1. Traitement…….Endwhile.

Initial. : le teste d’une valeur nulle se fait sous forme . If zone1 is Initial. Le test d’une valeur non nulle sous forme If not zone1 is initial.

Opérateur :

NE :Non Egal EQ : Egal


GE :Supérieur ou égal GT : Supérieur à
Like = contient,
I: Inclur
E: Exclure
LE :Infèrieur ou égal LT : Inférieur ou égal
BT :Entre NB : Pas entre
P :Contient un modèle NP : Aucun modèle
CO : contient seulement. CN : ne contient pas seulement.
CA : en contient un NA : ne contient aucun
Dernier enregistrement le 17/04/09 page 34 / 77
CASE : Case okcode When ‘PF03’. Retour When ‘PF13’. Sauvegarde. When Other. Continuer. Endcase.

IF Conditions

• if / elseif / else / endif.


if n > 0.
n = n + 1.
elseif n = 0.
write 'zéro'.
else.
n = n - 1.
endif.

Operation : Add n To m. equivalente à m = m + n. add n1 then n2 Until nz Giving m. = m = n1+n2+..+nz.


Subtract n1 Form n2 ou n2 = n2 – n1.
Multiply n1 By n2 ou n1 = n1 x n2.
Divide n1 By n2 ou n1 = n1/n2.
SHIFT : permet de decaler une chaine de caracteres vers la gauche et de pader à blanc à droite.
Shift chaine Circular. Transporte le caractere de gauche vers la droite. 234567891.
: shift w_valstock left deleting leading space (enleve les espace a gauche).
Translate chaine to lower-case. : transforme en minuscule . et Upper case en majuscule.
La fonction permet aussi de transcoder une chaine de caractere en fonction d’un code.
Le code est forme du caractere à modifier et du caractere de remplacement associe.
Pour le code : AfNjfwea les caractere à remplacer sont A N f e les caract de remplacement f j w a
Data : code(8) value ‘AiBEEFGo’, chaine(8) value ‘ABCDEFGH’. Translate chaine using code.
(chaine=iECDGoGH).

Perform le sous programme peut etre ecrit dans un autre programme. Le nom de ce programme doit etre
spécifié lors de l’appel. ex : Perform sp-lecture(zfreap01).
Il est aussi possible de transferer des tables internes. Perform sp-lecture(zfreap01) tables tab1 tab2.
Forms sp-lecture tables tab1 tab2. **** endform.

Sous-programme : FORM

FORM <nom-form>
USING <Paramètre> TYPE la modification dans le ss-pgm est gardée
USING VALUE (<Paramètre>) TYPE la modification dans le ss-pgm n’est pas gardée
CHANGING <Paramètre> TYPE la modification dans le ss-pgm est gardée
CHANGING VALUE (<Paramètre>) TYPE la modification dans le ss-pgm ???

Subroutines ef fonctions

• Form ou Subroutines
procédures dans un programme.
perform toto.
Form toto.
do 100 times.
i = i + 1.
enddo.
endform.

Passage de paramètres :
perform toto changing p1
using p2.
form toto changing p1 using p2.
endform.

• Fonctions
Composant global pouvant être appelé par différents programmes.
Call function 'TOTO'.
...
Function 'TOTO'.
write 'Fonction'.
Endfunction.

Call function 'toto'


importing var1 = var2
exporting champ1 = champ2
tables tab1 = tab2
Dernier enregistrement le 17/04/09 page 35 / 77
exceptions not found = 1
others = 2.

Dernier enregistrement le 17/04/09 page 36 / 77


Opérations sur chaînes de caractères

Concatenate

debut = 'Con'.
milieu = 'ca'.
fin = 'tenate'.

– concatenate debut milieu fin into total.


total = 'Concatenate'.

– concatenate debut milieu fin into total separated by '/'.


total = 'Con/ca/tenate'.

Split
liste = 'abc,defgh,ijklm’.

– split liste at ',' into var1 var2 var3.


var1 = 'abc' var2 = 'defgh' var3 = 'ijklm'

shift
nom1 = 'Dupont'.
nom2 = 'Durant'.
nom3 = 'Duchemin---'.
nom4 = 'Salut les gars'.

– shift nom1.

– shift nom2 by 3 places.

– shift nom3 right.

– shift nom4 up to 'les'.

– shift nom3 right deleting trailing space.


nom1 = 'upont'.
nom2 = 'ant'.
nom3 = '-Duchemin--';
nom4 = 'les gars'.
nom3 = '---Duchemin'.

Replace
nom4 = 'Salut les gars' .

– replace 'gars' with 'amis' into nom4.


nom4 = 'Salut les amis'.

translate
expression = ' a ** 2 + b ** 2 = c ** 2'

– translate expression using 'axbycz'.


expression = x ** 2 + y ** 2 = z ** 2'.

Search
nom = 'Salut les gars' .

– search nom for 'les'.


positionnement de sy-subrc.
si sy-subrc <> 0, alors non trouvé.Move
off1 = 4.
len1 = 4.
off2 = 3.
len2 = 4.
s = 'Arrosoir'.
t = 'Bonjour'.
move s+off1(len1) to t+off2(len2).t = 'Bonsoir'.

Dernier enregistrement le 17/04/09 page 37 / 77


Liste des instructions

Concaténation / division d’une chaine


concaténation :
CONCATENATE zone_1 zone_2 zone_3 INTO zone_3 SEPARATED BY
SPACE

diviser une chaîne :

SPLIT AT SPACE zone_3 INTO zone_1 zone_2


Split : split w-valstock at ‘.’ into wl_val_unité wl_valdecimal (decoupage a tous les points)
Translate : Translate string to upper case. Translate rc291-matnr using ‘*%’ ‘il remplace tous * par %
Remplace : while wl-val_decim ca space. Remplace space with ‘0’ into wl_val_decim1. Endwhile.(remplace les esace par les 0 par espace
Field-symbols data : wl_werk(8) type c, wl_codp(8) type c, wl_compt(2).
Field-symbols <werks>. Field-symbols <codp>. Clear wl_compt.
Do 30 times. Wl_compt = wl_compt + 1. Concatenate ‘p_werks’ wl_compt into wl_werk. Concatenate ‘p_codp’ wl_codp into wl_codp.
Assign (wl_werk) to <werks>. Assign(wl_codp) to <codp>. If not <werks> is initial and not (<codp> is initial).
Move <werks> to wt_dest-werks. Move <codp> to wt-dest-pelican. Append wt_dest. Enddif. Enddo. Endform.

Imprimer : fonction GET_print_paramters : pour imprimer

Continue rrent loop pass within a DO, WHILE, LOOP or (Pour arrerla finde la boucle et reprendre au debut)
DynproL SCREEN N° : Appelle un ecran et les suivants.
SET SCREEN N° : Ecrase un ecran puis revient à l’ecran de depart
LEAVE TO SCREEN : Quitte l’ecran
LEAVE PROGRAM : Quitte le programme

System-call commande d’exploitation


Unpack un move de paquet a non paquet
Window uvrir une fenetre SELECTION-SCREEN BEGIN OF SCREEN 500 AS WINDOW. (Pour Appeler une sous
fenetre)
Autority-check Nom de l’Objet
ID ‘Nom de la zone’ FIELD valeur(sous forme de variable)
ID ‘ACTVT’ FIELD VALEUR DE CONTROLE (01=créer, 02=modifier,03=afficher) suivi d’un teste sur SY-SUBRC ne 0.
AUTHORITY-CHECK OBJECT 'Z:GM_MATKL'
ID 'ACTVT' DUMMY
ID 'MATKL' FIELD MARA-MATKL.
IF SY-SUBRC NE 0.
MESSAGE E003(Z5).
ENDIF.

PARAMETERS : wa_flight TYPE sflight-carrid.


AT SELECTION-SCREEN. S’exécute après la saisie des paramètres de sélection
AUTHORITY-CHECK OBJECT ‘S_CARRID’
ID ‘CARRID’ FIELD pa_car
ID ‘ACTVT’ FIELD actvt_display
IF SY-SUBRC <> 0
MESSAGE E045 (bc400) WITH pa_car.
ENDIF

Using N° edit mask : Utilise ou pas le masque de saisie


Reserve<n> Llines: Evite la separation de Nlignes par une rupture de page.

Call transaction

Par opposition au batch input, cette fonction permet de passer les données directement à l’interface de dialogue (sans
utilisation de la file d’attente),

Une table interne de structure BDCDATA est utilisée pour stocker les données à traiter,

La transaction est appelée et les données transférées directement vers les écrans de transaction.

Dernier enregistrement le 17/04/09 page 38 / 77


Call transaction « code transaction »
using « table BDC »
mode « mode affichage »
update « mode de mise à jour »
messages into « table message ».
« Mode» Affichage :

– A : Affiche tout,
– E : N’affiche qu’en cas d’erreur,
– N : N’affiche rien.
« Mode de mise à jour » :

– S : Mode synchrone
– A : Mode asynchrone
L’option «Messages» permet de conserver tous les messages générés dans une table interne, de structure
BDCMSGCOLL.

Code retour
Signification Valeur
SY-SUBRC
Succès O

Erreur dans programme de dialogue < 1000

Erreur dans traitement de batch input (zones systèmes) > 1000

Zones système
Signification Zone

Id de message SY-MSGID

Type de message (E,I,W,S,A) SY-MSGTY

Numéro de message SY-MSGNO

Variable de message 1 SY-MSGV1


 
Variable de message 4 SY-MSGV4

Dernier enregistrement le 17/04/09 page 39 / 77


Création de fichier en Sortie.
Open dataset fichier For Input : Do. Read Dataset fichier into zonelecture. If sy-subrc ne 0. Exit. (permet de sortir de la boucle Do) Else. (Traitement generique)
Enddo. Close dataset fichier.
TRANSFERT. Open dataset fichier for output.(ouverture en sortie). Transfert Struc to fichier. (ecriture d’un enregistrement sur fichier)
Close dataset fichier. (fermeture)
For output = ouvre le fichier pour permet l’accés en ecriture. S’il existe deja son contenu est efface. Il est crée s’il n’a pas été défini.
For input = Ouvre un fichier deja cree pour permettre l’acces en lecture.
For appending = ouvre le fichier pour permettre l’acces en ecriture a la fin du fichier. Si fichier n’existe pas il le cree
In binary mode = le contenu des donnees n’est interpréteé ni par l’operation de lecture read dataset ni par l’op d’ecriture transfert.
Les intervales de données indiquée avec ces deux instruction sont chargé ou édité de facon directe . il n’est
nécessaire de specifier explicitement in binary mode.
* ouverture du fichier en lecture
PERFORM ouverture_fichier_lecture USING p_fic CHANGING v_stat.
IF v_stat NE '0'.
WRITE :/ text-t02, p_fic, text-t03, v_stat.
wt_messages-msgnr = '008'.
wt_messages-msgv1 = sy-cprog.
wt_messages-msgv2 = v_stat.
wt_messages-msgv3 = v_fic_orig.
EXIT.
ENDIF.

Les fichiers

Ouverture, transfert, lecture, fermeture

• Ouverture d’un fichier

– open dataset ‘monfichier’ for input in text mode


– For input : Ouverture Lecture,
– For output : Ouverture Ecriture,
– For appending : Ouverture pour ajout de données en fin de fichier.
– in text mode : précise que l’enregistrement est du texte,
– in binary mode : mode par défaut.
– message : permet de récupérer les messages d’erreur

• Transfert de données dans le fichier

– Transfer ‘Durant’ to ‘monfichier’.


– Transfer salarié-nom to ‘monfichier’.
– Transfer itab-salarié to ‘monfichier’.
transfert de l’enregistrement complet vers fichier.

– Transfer itab-salarié to ‘monfichier’ length 10.


transfert de l’enregistrement complet vers fichier, limité à une
longueur de 10 caractères.

L’ordre TRANSFER permet d’écrire un fichier sur le serveur d’application.

• Lecture de données

Dernier enregistrement le 17/04/09 page 40 / 77


– read dataset ‘monfichier’ into itab_salarie.
L’ordre READ permet de lire un fichier sur le serveur d’application.

• Fermeture fichier

– close dataset ‘monfichier’.


Chaque ordre (Ouverture, lecture, ecriture et fermeture) positionne la variable système SY-
SUBRC, qui peut être testée en retour.

WS_DOWNLOAD / WS_UPLOAD

• Opérations de lecture et écriture sur le serveur de présentation (Local)

Afin de pouvoir lire et écrire des données sur le PC en local, il est nécessaire d’utiliser
les fonctions suivantes :

• WS_DOWNLOAD
Permet de sauvegarder une table interne sous forme de fichier.

• WS_UPLOAD
Permet de charger un fichier plat dans une table interne.

• WS_UPLOAD
tables : salarié.
data itab_salarié like salarié occurs 100 with header line.
call function ‘WS_UPLOAD’
exporting
filename = ‘monfichier’
tables
data_tab = itab_salarié
exceptions
file_open_error = 1
others = 2.
case sy-subrc.
when 1.
write ‘Erreur ouverture fichier’. exit.
when 2.
write ‘erreur autre’. exit.
endcase.

• WS_DOWNLOAD
tables : salarié.
data itab_salarié like salarié occurs 100 with header line.
select * from salarié into table itab_salarié.
call function ‘WS_DOWNLOAD’
exporting
filename = ‘monfichier’
tables
data_tab = itab_salarié
exceptions
file_open_error = 1
others = 2.
case sy-subrc.
when 1.
write ‘Erreur ouverture fichier’. exit.
when 2.
write ‘erreur autre’. exit.
endcase.

Dernier enregistrement le 17/04/09 page 41 / 77


Exemple :
 ***
 FORM ouverture_fichier_lecture USING z_fic LIKE v_fichier
 CHANGING r_status.
 r_status = '0'.
 v_fic_orig = z_fic.
 OPEN DATASET z_fic FOR INPUT IN TEXT MODE.
 IF sy-subrc EQ 0.
 * MODIF_EL170399 (+) début : Mode exploitation , recherche du fic orig.
 READ DATASET z_fic INTO v_fic_orig. " Nom original du fichier
 IF NOT v_fic_orig CS 'v_fic_orig='.
 v_fic_orig = z_fic .
 CLOSE DATASET z_fic .
 OPEN DATASET z_fic FOR INPUT IN TEXT MODE.
 ENDIF.
 * MODIF_EL170399 (+) Fin
 IF sy-batch EQ 'X'.
 * Ouverture du fichier en lecture : &
 MESSAGE i010(zz) WITH v_fic_orig. " z_fic. MODIF_EL230399
 ENDIF.
 ELSE.
 r_status = sy-subrc. " MODIF_EL220399 (+)
 * Erreur d'ouverture du fichier : & - Sy-subrc = &
 * message e004(zz) with z_fic sy-subrc. " MODIF_EL220399 (-)
 ENDIF.
 *
 ENDFORM. " OUVERTURE_FICHIER_LECTURE
 ****

lecture du fichier et enregistrement des données dans la table


interne wt_delai
PERFORM lecture_fichier USING p_fic.
 **
 FORM lecture_fichier USING z_fichier LIKE v_fichier.
 *
 DATA : wl_reste TYPE i. " Reste
 *
 IF sy-batch EQ 'X'.
 * Début boucle lecture fichier : &
 MESSAGE i020(zz) WITH z_fichier.
 ENDIF.
 *
 DO.
 CLEAR we_rec.
 READ DATASET z_fichier INTO we_rec." Lecture du fichier en entrée
 CASE sy-subrc.
 WHEN 4.
 * BGz Début modif : 001
 * if sy-index = 0. " Fichier vide
 IF sy-index = 1. " Fichier vide
 * Aucun enregistrement dans le fichier : &
 * PLO début modif 17643
 * IF sy-batch = 'X'.
 MESSAGE i008(zz) WITH z_fichier. " si msg <>i plantage!
 * ELSE.
 * MESSAGE e008(zz) WITH z_fichier.
 * ENDIF.
 * Fin modif 17643
 EXIT.
 ELSE.
 * Fin modif : 001
 EXIT. " Fin de fichier - Sortie du do
 ENDIF.
 WHEN 8. " Erreur de lecture
 * Erreur de lecture du fichier : &
 MESSAGE e009(zz) WITH z_fichier.
 ENDCASE.
 ADD 1 TO v_nb_lues. " Nombre de lignes lues
 *
 IF sy-batch EQ 'X'.
 wl_reste = v_nb_lues MOD 100.
 IF wl_reste EQ 0.
 * Nombre de lignes lues : &
 MESSAGE i022(zz) WITH v_nb_lues.
 ENDIF.
 ENDIF.
 *
 PERFORM traitement. " Traitement ***
 FORM traitement.
 * transfert des données du fichier dans la table interne wt_in
 MOVE we_rec(10) TO wt_in-contrat_cadre.
 MOVE we_rec+11(5) TO wt_in-poste.
 MOVE we_rec+17(3) TO wt_in-delai.
 MOVE we_rec+21(1) TO wt_in-temoin.
 MOVE we_rec+23(1) TO wt_in-typ_px. "modif £09
 APPEND wt_in.
 CLEAR wt_in.
 CLEAR we_rec.
 ENDFORM.
 ENDDO.
 IF sy-batch EQ 'X'.
 * Fin boucle lecture du fichier : &
 MESSAGE i021(zz) WITH z_fichier.
 ENDIF.
 *
 ENDFORM. " LECTURE_FICHIER

fermeture du fichier
PERFORM fermeture_fichier USING p_fic.

on vérifie que la table interne wt_in contient des données


DESCRIBE TABLE wt_in LINES w_line.
IF w_line EQ 0.
WRITE : / text-t05.
EXIT.
ENDIF.

SKIP.

si aucun poste a été sélectionné on quitte le programme sinon on trie


la table interne wt_donnees et on traite les données
IF sy-subrc NE 0.

Dernier enregistrement le 17/04/09 page 42 / 77


WRITE : / text-t04.
EXIT.
ELSE.
SORT wt_in BY contrat_cadre poste.

Batch input
Les modules fonction

Module fonction BDC_OPEN_GROUP

Call function ‘BDC_OPEN_GROUP’


exporting
client = «mandant» (sy-mandt)
group = «nom dossier»
holdate = «date de blocage»
keep = «temoin de suppression»
user = «nom utilisateur» (BDC)
Exceptions
queue_error = 1
client_invalid = ....
group_error = ....
others = .... .

keep = «.» - Supprimer le dossier après exécution


keep = «X» - Conserver le dossier après exécution
La valeur des exceptions est testée par SY-SUBRC.

Module fonction BDC_INSERT

Call function ‘BDC_INSERT’


exporting
tcode = «code transaction»
tables
dynprotab = «table BDC»
Exceptions
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
others = .... .

Module utilisé pour insérer les données correspondant à UNE transaction.


La valeur des exceptions est testée par SY-SUBRC.

Module fonction BDC_CLOSE

Call function ‘BDC_CLOSE’


Exceptions
not_open = 2
queue_error = 3
others = .... .

Module utilisé pour fermer un dossier de batch input.

La valeur des exceptions est testée par SY-SUBRC.

Démarche

1 . Préparer l’écriture d’un batch input

• Exécuter d’abord, pas à pas, la fonction d’application à simuler,

Dernier enregistrement le 17/04/09 page 43 / 77


• Noter :

– le nom du programme et le numéro de dynpro pour chaque écran,


– le nom de la zone et de la structure de dynpro pour chaque saisie ou chaque positionnement de
curseur,

– le numéro de chaque touche de fonction utilisée ou les codes fonctions utilisées,


– la séquence de dynpros
Utiliser le menu Système -> Statut et la fonction d’aide Info Technique (F1 + F9)

2 . Dans le programme, remplir la table BDCDATA,

• zone PROGRAM

– le nom du programme pour chaque écran.


• zone DYNPRO

– le numéro de dynpro pour chaque écran.


• zone DYNBEGIN

– ‘ X’ ou ' '
• zone FNAM

– nom zone pour saisie,


ou

– BDC_OKCODE (nom de zone pour touche de fonction)


ou

– BDC_CURSOR (nom de zone ligne de ‘table control’)


• zone FVAL

– valeur de la zone,
ou

– ( / + n° touche de fonction ) ou code fonction

3 . Dans le programme, créer le dossier batch input

• call ‘BDC_OPEN_GROUP’
...

• call ‘BDC_INSERT’
...

• call ‘BDC_CLOSE_GROUP’
...

4 . Lancer le programme, qui va créer un dossier de Batch Input

5 . Traiter le dossier de batch input

Dernier enregistrement le 17/04/09 page 44 / 77


• Transaction SM35
ou

• Systèmes -> Services -> Batch Input

Permet d’exécuter le dossier de batch input.

Mode de traitement
A Avant Plan Affiche toutes les étapes du dialogue

N Affichage des erreurs Affiche les étapes du dialogue uniquement pour les messages d’interruption ou d’erreur
uniquement
Arrière Plan Traitement en arrière plan. Etapes du dialogue non affichées

Mode correction

Permet de contrôler le traitement du dossier en saisissant une commande dans la ligne de commande

Fonction OK Code

Interrompre la transaction active et la marquer comme incorrecte /N

Supprimer la transaction active dans le dossier /BDEL

Interrompre le traitement et le marquer comme incorrect /BEND

Passer du mode d’affichage ‘Erreur uniquement’ à ‘Avant plan’ /BDA

Passer du mode d’affichage ‘Avant plan’ à ‘Erreur uniquement’ /BDE

Statut du dossier

Le dossier est affecté d’un statut avant et après le traitement.

Dossier traité avec succès Traité

Dossier traité, mais contient toujours des Incorrect


transactions incorrectes
Dossier créé mais pas encore traité A Traiter

Dossier en cours d’enregistrement Création

Dossier en cours de traitement Traitement

Dossier traité en arrière plan Arrière Plan

Dernier enregistrement le 17/04/09 page 45 / 77


Call transaction

Par opposition au batch input, cette fonction permet de passer les données directement à l’interface de dialogue (sans
utilisation de la file d’attente),

Une table interne de structure BDCDATA est utilisée pour stocker les données à traiter,

La transaction est appelée et les données transférées directement vers les écrans de transaction.

Call transaction « code transaction »


using « table BDC »
mode « mode affichage »
update « mode de mise à jour »
messages into « table message ».
« Mode» Affichage :

– A : Affiche tout,
– E : N’affiche qu’en cas d’erreur,
– N : N’affiche rien.
« Mode de mise à jour » :

– S : Mode synchrone
– A : Mode asynchrone
L’option «Messages» permet de conserver tous les messages générés dans une table interne, de structure
BDCMSGCOLL.

Code retour
Signification Valeur
SY-SUBRC
Succès O

Erreur dans programme de dialogue < 1000

Erreur dans traitement de batch input (zones systèmes) > 1000

Zones système
Signification Zone

Id de message SY-MSGID

Type de message (E,I,W,S,A) SY-MSGTY

Numéro de message SY-MSGNO

Variable de message 1 SY-MSGV1


 
Variable de message 4 SY-MSGV4

Dernier enregistrement le 17/04/09 page 46 / 77


Instructions à utiliser : suivant le type de lancement : différé ou immédiat

DATA BDCDATA like BDCDATA occurs 0 with header line

Ouverture et création du CALL FUNCTION 'BDC_OPEN_GROUP'


différé dossier EXPORTING
CLIENT = SY-MANDT
GROUP = ‘nom-du-groupe’
USER = USER
KEEP = KEEP
HOLDDATE = HOLDDATE.
différé Alimentation du code CALL FUNCTION 'BDC_INSERT'
transaction EXPORTING
TCODE = 'code-transaction'
TABLES
DYNPROTAB = BDCDATA.
1 Activation du dynpro
PERFOMR BDC_DYNPRO USING
'nom pgm module pool’.
‘Numero-DYNPRO’.

2 Alimentation d’un champ PERFOMR BDC_FIELD USING.


du dynpro activé ‘Nom du champ’
Valeur du champ

différé Fermeture du dossier CALL FUNCTION 'BDC_CLOSE_GROUP'.


différé Exécution du dossier SUBMIT RSBDCSUB WITH MAPPE = ‘nom-groupe’
WITH VON = SY-DATUM
WITH BIS = SY-DATUM
EXPORTING LIST TO MEMORY
AND RETURN
immédia Exécution du BI CALL TRANSACTION ‘code_transaction’
t USING BCDDATA
MODE ‘X’ avec x= ‘A’ ou ‘M’

FORM Bdc_Dynpro Using Program CLEAR BDCDATA.


Dynpro BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
FORM Bdc_Field Using Fnam Fval CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.

Dernier enregistrement le 17/04/09 page 47 / 77


Lancement d’un batch input

Depuis un pgm : submit


Les variables alimentant les champs sont ici toutes passées par paramètres

Programme appelant Programme exécutant le BI


Submit pgm_2 WITH par_1 Parameters : par-1…, par_2 …
WITH par_2 PERFOMR BDC_DYNPRO USING
PERFORM BDC_FIELD USING
PERFORM BDC_FIELD USING

PERFOMR BDC_DYNPRO USING
PERFORM BDC_FIELD USING

CALL TRANSACTION ‘nom_trans’

Ecran de lancement du dossier du Batch Input : SM35


Nom du dossier
Date de création De
à
Statut du dossier À traiter
erroné
Système en arrière Machine cible
plan
Protocole étendu

Dernier enregistrement le 17/04/09 page 48 / 77


Batch Input Standard
: Dans un programme de reprise il peut etre interessant de connaître la liste des valeur possible d’un domaine afin d’effectuer les
controles nécessaire. Il existe une fonction standard FC_GET_DOMAIN_VALUES qui renvoie la liste des constantes d’un domaine
de la maniere suivante :
- si la constante est une valeur fixe alors la fonction renvoie vette valeur dans la zone DOMVALUE_L
- si la constantes est un intervalle alors la fonction renvoie la borne inferieure dans Domvalue_l et la borne sup. dans domvalue_h

Programme Description TRANSACTION Prog . tests


RCCLBI01 O021 RCCLBISH

MG/composantes inter-
application/classification/outil/ reprise de
donnees / classes/ realiser transfert de
données
RCCLBI02 CLB1 RCCLBISC

IMG/composantes inter-
application/classification/outil/ reprise de
donnees / classes/ realiser transfert de
données :réaliser transfert de données via
procédé batch input
Rmmbim0 Omsu,ov/4 Rmmmbime

Articles
Rfbide00 Ot38,ov/2 Rfbideto

Clients
Rm07ie31 Mie1

Commandes client
Rvinvb00 Ov/6 Rvinvbt0

Commandes clients en cours


Rv14btci OV :5

Condition
RM06BBIO OMHK RM06BBIE

DEMANDES D4ACHAT
RMMM60BI OMPF

Données besoin indépant


RCPTRA01 OP8d RCPTRA00

Données de gammes
RM07II40 MI40,OMC9

Ecarts d’inventaire
RMDATSHO Omy0

Fiche article
RFBIKR00 OMSV,OT39,OV/3 RFBIKRT0

Fournisseurs
RCCTBI01 CT21
IMG/composantes inter-
application/classification/outil/ reprise de
donnees / caracteristiques/ realiser
transfert de données
RAALTD01 OA13

Immobilisations
RM06IBIO OMFL RM06IBIE

Info achats
RM07MMBL MBBM,OMC5

Mouvement de stock
SAPMFM00 OF03

Moyen de paiment
RCSBI010 OS41

Nomenclature
RHALTD00 OODT

Personnel
RLBEST00 LX19 RLBEST20

Stock
RFBIBL00 OBG4

Piece comptable
RM07RRES OMCA

Reservation de stock
RCVBI010 OD91 RCVBI005

Transfert de document

Dernier enregistrement le 17/04/09 page 49 / 77


Gestion du Dossier : Call transaction ‘MM01’ using tab mode ‘A’ update ‘S’
MM01 = transaction création fiche article.
TAB = table de données (structure BDCDATA)
Mode = A : execution de la transaction ecran par ecran. N : aucun affichage des ecrans. E : seuls les ecrans avec erreur sont affichés.
UPDATE = s : mise à jour synchrone des données. A :mise a jour asynchrone des données

Batch input specifique


: La structure de la table BDCDATA .

Nom Clé Typelg/decim Libelle


BDCDATA-program Char C 8 Pool de modules BDC
BDCDATA-dynpro Numc N 4 Numero de dynpro BDC
BDCDATA-dynbegin Char C 1 Lancement bdc d’un dynpro
BDCDATA-fnam Char C 35 Nom de zones bdc
BDCDATA-fval Char C 80 Bdc-fieldvalue

FORM traitement_bdc.
LOOP AT wt_in.
* AT NEW contrat_cadre.
* premier écran de modification d'un contrat
PERFORM bdc_dynpro USING 'SAPMM06E' '0205'.
PERFORM bdc_field USING 'RM06E-EVRTN' wt_in-contrat_cadre.
PERFORM bdc_okcode USING '/00'.
* ENDAT.
* AT NEW poste.
SELECT SINGLE * FROM ekpo WHERE ebeln = wt_in-contrat_cadre
AND ebelp = wt_in-poste.
* verification du delai pour traitement de cette partie
IF NOT wt_in-delai IS INITIAL OR
NOT wt_in-typ_px IS INITIAL . "modif £08 et £09
*selection du poste.
PERFORM selec_poste USING sy-subrc .
* synthese poste contrat-cadre une ligne
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_okcode USING '=DETZ'.
PERFORM bdc_cursor USING 'RM06E-EVRTP(01)'.
* ENDAT.
* chargement du délai de livraison au niveau des postes dans la vue
* "données supplémentaires"
PERFORM bdc_dynpro USING 'SAPMM06E' '0212'.
PERFORM bdc_field USING 'EKPO-PLIFZ' wt_in-delai.
PERFORM bdc_field USING 'EKPO-MEPRF' wt_in-typ_px. "modif £09 £08
PERFORM bdc_okcode USING '=BACK'.

* supprimer le poste**************************
ENDIF.
IF wt_in-temoin = 'X'.
PERFORM selec_poste USING sy-subrc.
* selection du poste complet.

PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.


PERFORM bdc_okcode USING '=DL'.
PERFORM bdc_cursor USING 'RM06E-EVRTP(01)'.
PERFORM bdc_field USING 'RM06E-TCSELFLAG(01)' 'X'.
* destruction du poste.
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_okcode USING '=BU'.
ENDIF.
* avant de changer de numéro de contrat on sauvegarde les modifications
* effectuées
* AT END OF contrat_cadre. "pour n'avoir qu'un dossier pour + postes
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_okcode USING '=BU'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.


PERFORM bdc_okcode USING '=YES'.

IF p_credos IS INITIAL.
PERFORM call_transaction_msg USING 'ME32' 'A'.
ELSE.
PERFORM bdc_transaction USING 'ME32'.
ENDIF.
ENDIF.
* ENDAT.

ENDLOOP.

ENDFORM. " TRAITEMENT_BDC

Dernier enregistrement le 17/04/09 page 50 / 77


Direct input
: Il existe une alternative au batch-input, le direct-input. La technologie du direct input est équivalente au batch input, la couche ecran à
été supprimée. Il existe des programmes propres à une application qui utilisent la technique du DI.
L’entrée directe est préférable lorsque vous devez traiter une quantité très importantes de données.
Le rapport est de l’ordre de 1 a 3 sur la durée d’éxecution entre BI et DI. Cette technique enregistre directement les données , sans
dossier) et évite ainsi l’appel d’ecrans.les donnees sont integrées en lancant des modules fonction,qui vérifie et mettent à jour les tables
concernées.
Le programme RBMVSHOW permet d’exécuter les direct input.
EXEMPLE DE DI STANDARD / : RFBIBL00 = enregistre les document (FI). RMDATINO = importe les fiches article (MM)
RVAFSS 00 = gènère les documents de facturation SD et piéce FI. RKVEXTO = transfgére les données externe au compte de
resultat(CO). RAALTD11 Créé des fiches immobilisations (AM).

Dernier enregistrement le 17/04/09 page 51 / 77


Formulaires
Composants et navigation

Les composants d’un formulaire Les pages, les fenêtres de page, les données d’en-tête, les
fenêtres (type VAR (texte sur une seule page) ou MAIN
(textes sur plus. pages) de chaque page
Les paragraphes utilisables dans le texte
Les éléments d’une fenêtre
‘PC editeur painter’ (no recommandé) En mode ‘form painter graphique’ permet de modifier le
texte directement dans la fenêtre (après avoir cliqué sur
éléments de textes ? ?)
‘form painter graphique’ En cochant ‘disposition’: sur L’écran se superposent 2
fenêtres :
à droite : la maquette du formulaire
à gauche : la définition de l’objet sélectionné

Permet de dimensionner/positionner les fenêtres avec la


souris
Les outils alphanumériques pour modifier Toutes versions SAP : éditeur alphanumérique
un formulaire Naviguer entre
‘données d’en-tête
‘fenêtres’ : après sel. Fenêtre /‘éléments de texte’
‘pages’
‘fenêtre de page’: pour modifier dim/pos fenêtres,
(recommandé)
‘format paragraphes’ : pour maj paragraphes ,
‘format caractères’
Le cas échéant : décocher le ‘form painter graphique’ et le
‘PC editeur painter’
Liste des générale de tous les éléments et SE71 / saisir le nom du formulaire / cliquer sur bouton radio
descriptions du formulaire ‘en-tête’: /menu ‘utilitaires’/ choix ‘’info formulaire’:

Impression du formulaire SE71/ saisie du nom du formulaire : /menu ‘utilitaires’/


choix ‘impression test’
Se mettre en mode non graphique SE71/ options/ formpainter:/ décocher ‘form painter
graphique’

Lister les éléments par fenêtre (être en mode non SE71 / saisie du nom du formulaire / cocher bouton
graphique) radio ‘fenêtre’
Sélectionner la fenêtre par double-click sur la ligne
Cliquer sur l’icône crayon ou menu ‘traiter’ choix
‘éléments de texte’‘
Connaître le pgm qui est appelé Manip ‘Lister les éléments par fenêtre’
Marquer un éléments et cliquer sur l’icône avec bulle
‘définition de symbole’ ou menu ‘saut’ / choix
‘programme d’impression’ / choix ’définition de
symbole’
Aller sur le pgm qui est appelé Manip ‘Connaître le pgm qui est appelé’
Cliquer sur le bouton ‘récupérer’

Modification élément de texte d’une fenêtre


Désactiver form painter graphique et edition pc SE71 / menu options /form painter
graphique

Dernier enregistrement le 17/04/09 page 52 / 77


Sélectionner la fenêtre à modifier SE71 / saisie du nom du formulaire / cocher bouton
radio ‘fenêtre’
Sélectionner la fenêtre par double-click sur la ligne
Cliquer sur l’icône crayon ou menu ‘traiter’ choix
‘éléments de texte’‘

Les symboles

système
DATE,
DAY NAME_OF_DAY
MONTH, NAME_OF_MONTH
YEAR
TIME, HOURS, MINUTES, SECONDS
PAGE, NEXTPAGE
SPACE, ULINE, VLINE Espace, sous-lignement, ligne verticale

Les symboles standards : table TTDGT

Les symboles de textes : DEFINE &symbole& = ‘valeur’: INCLUDE/symboles/TexteI

Les symboles de programme

Options de formatage
&symbole&
&symbole+4& Décalage
&symbole(5)& Longueur
&symbole(I)& Non affiché si valeur intiale
&symbole(Z)& Supprime zéros initiaux
&symbole( C)& Comprime espaces vides
&symbole( R)& Alignement à droite
&symbole(S)& Supprime opérateurs
&symbole(*)& Longueur dictionnaire
&symbole(8.2)& Format décimal
&’Text1’SYMBOL’text2’&symbole& Insertion texte avant et après

Commandes particulières interessantes de la fenêtre principale MAIN


/: TOP…./:ENDTOP /: BOTTOM…/: ENDBOTTOM

Lien entre formulaire et pgm


Pgm :
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'TOTAL_PAR_CODE_TVA'
WINDOW = 'TOTAUX'.

Appel depuis un formulaire : exemple conversion d’un montant

report zscnveuf .

*----------------------------------------------------------------------*
* Syntaxe de l'appel depuis le formulaire *
*----------------------------------------------------------------------*
** /: PERFORM CONVERSION_FRANC_EURO IN PROGRAM ZSCNVEUF. *
** /: USING &montant_en_franc&. *
Dernier enregistrement le 17/04/09 page 53 / 77
** /: CHANGING &MONTANT-en_EURO&. *
** /: ENDPERFORM. *
* *
*----------------------------------------------------------------------*
* conversion d'un montant en franc en un montant en euro *
* la routine est normalement appelée d'un formulaire *
* le pgm principal sert à tester la conversion par saisie d'un montant *
* la récupération des valeurs se fait à partir de l'index de la table *
* (READ TABLE winput INDEX 1.) *
* plutot que par la zone 'name' pour permettre *
* (READ TABLE WINPUT WITH KEY NAME = 'REGUD-SWRBT'.) *
* son utilisation généralisée *
* idem pour l'écriture dans la table en sortie *
*----------------------------------------------------------------------*
* le montant provenant d'une zone texte , il est nécessaire de le *
* transformer pour qu'il soit reconnu comme un montant *
* - suppression de tous les blancs *
* - supression du '.' des milliers *
* - remplacement de la ',' décimale par le '.' décimal *
* *
* ATTENTION : la zone montant doit être écrite dans une zone texte *
* intermédaire avant d'être écrite dans la zone 'value' *
* de la table pour être correctement récupérée dans *
* le formulaire *
*----------------------------------------------------------------------*
* données en entree : 1 enr. de la table de structure ITCSY *
* *
* (zone 'name' et zone 'value') *
* données en sortie : 1 enr. de la table de structure ITCSY *
*----------------------------------------------------------------------*
tables : itcsy .
data : begin of w_itcsy_in occurs 0.
include structure itcsy.
data : end of w_itcsy_in.
data : begin of w_itcsy_out occurs 0 .
include structure itcsy.
data : end of w_itcsy_out.
data : w_valeur_retour(15) type c.
*-----------------------------------------------------------------*
parameters : s_mont like bseg-dmbtr.
*-----------------------------------------------------------------*
start-of-selection.
clear w_itcsy_in.
write s_mont to w_itcsy_in-value .
append w_itcsy_in.
append w_itcsy_out.
perform conversion_franc_euro tables w_itcsy_in
w_itcsy_out .
loop at w_itcsy_out.

write : / ' name : ', w_itcsy_out-name,


' value : ' , w_itcsy_out-value.
endloop.
*-----------------------------------------------------------------*
form conversion_franc_euro tables winput structure itcsy
woutput structure itcsy.
*-----------------------------------------------------------------*
data : w_euro like bsik-waers value 'EUR'. .
data : w_franc like bsik-waers value 'FRF' .
data: w_montant_euro_2 like bseg-dmbtr ,
w_montant_fran_2 like bseg-dmbtr .
data : w_zone_19(19) type c.
*-----------------------------------------------------------------*
read table winput index 1.

replace '.' with '' into winput-value.


replace ',' with '.' into winput-value.
condense winput-value no-gaps.

move winput-value to w_montant_fran_2.


*-----------------------------------------------------------------*
Dernier enregistrement le 17/04/09 page 54 / 77
call function 'CONVERT_TO_LOCAL_CURRENCY'
exporting
date = sy-datum
foreign_amount = w_montant_fran_2
foreign_currency = w_franc
local_currency = w_euro
importing
local_amount = w_montant_euro_2
exceptions
no_rate_found = 1
overflow =2
no_factors_found = 3
no_spread_found = 4
others = 5.

*-----------------------------------------------------------------*
read table woutput index 1.
write w_montant_euro_2 to w_zone_19.
write w_zone_19 to woutput-value.

modify woutput index 1.

endform.
*-----------------------------------------------------------------*

Dernier enregistrement le 17/04/09 page 55 / 77


Programmes
attributs d’un programme:

• Définition des attributs du programme

– Nom du programme, sur 8 caractères, commençant par :

• R : Report SAP,

• M : ModulePool,

• Z : Report Client (Niveau société),

• Y : Report Client (Consolidation)

– Type :

• 1 : programme Online,

• I : Include,

• M : ModulePool,

• F : Fonctions

– Etat (Précise l'objet du report)

• T : Programme Test,

• P : Programme de Production,

• K : Programme Client,

• S : Programme Système


– Application
Identifie le domaine applicatif

• F : Comptabilité Financière,

• K : Comptabilité Analytique,

• M : Gestion des Articles,

• S : Système

– Groupe Autorisation
Permet de gérer les accès au programme.

– Classe de Développement

• Nom commençant par Y ou Z pour les classes Clients.


Détermine les attributs de transferts des objets SAP

Dernier enregistrement le 17/04/09 page 56 / 77


Dernier enregistrement le 17/04/09 page 57 / 77
Généralités
Definitions :
Table : Une table est une matrice à 2 dimensions , constituee d’une en-tete definissant les champs de la table et d’un nombre variable
de poste contenant les valeurs de chaque champ. Chaque table comporte une clé primaire permettant l’accés aux postes.
Type de tables :
Transparente : la structure de la table est identique à celle definie dansla base ded données. La table contient des valeurs dansla base de
données.
Pool : une physique dans la base de données regroupe différents tables transparentes SAP. Seulement défini en standard. Gain du
nombre de tables une définition commune dans le DDIC.
Cluster : Plusieur tables sont enregistrées dans une seules tables physique. Table de stockage massif. Les clés primaire des tables
regroupées doivent correspondre. Utilisées pour regroupement de tables hiéarchiques.
Structure : uniquement une structure définie dans le dictionnaire ne comprend aucune valeur(equivalent copy cobol).
Créer une table : Determination des zones : 1)définition du nom des zones commencant par un Z, 2) définition des zones clé, 3) définition d’un élément
de donnée, 4) définition des clés externes.

Zone : Les caractéristique technique (longueur,format, contrôle) de la zone sont géreer par le domaine et la documentation et libellé sont
gérer par l’élément de données.
Elément de donnée : gère pour la zone les libéllés(court, moyen, long et intitulé). Les intitulés sont utilisé lors de l’affichage de la table des valeurs et de la
gestion avec la transaction SM31. Un élément de données est enrelation avec seul domaine.Il gere aussi le Parametre ID
Domaine : le domaine décrit les caractéristique technique d’une zone. Format et longueeur. Les valeurs admises pour la zone liste de constantes,
Ou,table de valeur(voir clé externe).Un domaine peut etre affecté à plusieur élément de données différent dans la meme table.
Clé externe : Une clé externe permet le contrôle de la valeur d’une zone par rapport à la valeur d’une autre table(table de contrôle). La zone de la
table de contrôle doit etre une clé.
Gestion des tables : Pour créer l’écran de gestion , dans le meme écran appuyer dans le menu environnement >G2N2R Gest tab.
La gestion à 1 niv consiste à afficher et à gérer les données sur le méme écran.
La gestion à 2 niv. Consiste à afficher les données sur le premier écran et gérer les données sur le 2 eme
Index secondaire : il améliore less performances d’accés aux tables relationnelles.Il constitue un nouveau chemin d’accés aux données d’une table
un index secondaire est constitué de zones de la table. C’est zones générent une clé de substitution à la clé primaire.
Le systeme crée une table index. Un index permeet d’accéder directement aux données d’une table sans faire appel aux clé primaires de
celle ci. Les indexes secondaire ne s’appliquent qu’aux tables transparentes.
Une VUE : une vue est une table virtuelle composée des colonnes d’une ou plusieur tables.
Type de Vues : Vue de base de données. Accés uniquement en lecture. Une vue équivalente est crée dans la base de données. Les
données sont selectionnées à partir des tables source suivants les condition de jointure.
Vue de projection : Composée d’une selection de colonnes d’une seule table.
Vue d’aide : utilisee par l’aide à la saisie pour la sélection des valeurs possibles d’un champ, association d’une valeur et de sa
désignation . 1 vue d’aide par table transparente.
Vue de gestion. ; c’est une vue constitué de plusieurs tables dont les liens (criteres de selection) sont les clés externes.
Objet de blocage : est utilisé pour bloquer en registrement de table lors d’une mise à jour par plusieur utilisateurs de facon simultanée.
Les champs de l’objet de blocage sont des champs clé de toutes les tables impliquées dans le blocage.
La transaction SM12 permet une gestion manuelle des objets de blocage attention transaction dangereuse !
Matchcode : Sont des tables ou des vues SAP. Ils peuvent prendre une forme virtuelle ou physique. Il sont utilisé comme un chemin secondaire
lorsque le primaire est inconnu. Un matchcode peut comprendre des champs de plusieurs tables , transparentes ou non. Des conditions
de selection peuvent etre stipulées. Un matchcode repose sur une objet de matchcode est sur un identifiant de matchcode.
Objet de matchcode : l’objet de matchcode definit une vue d’une ou plusieur tables et/ou un pool de tables.
La structure repose sur les relations existantes entre ces tables (clé étrangéres).
L’objet de matchcode indique les tables et leurs zones sur lesquelles pourra etre définit l’identifiant de matchcode.
La zone cicle est la zone dont on veut récupérer la valeur. 1 seule zone cicle par matchcode.
Identifiant de matchcode : Projection sur l’objet de matchcode.
L’identifiant décrit les zones du matchcode selectionnées parmi clles de l’objet de matchcode et qui vont apparaître dans la popup.
Les zones définit dans l’identifiant seront utilisé pour la recherche de la données. 36 maxi par objet

Exportation captures diverses : pgm, écran,..

Capture de Se positionner sur le 1er car. À récupérer


caractères CTRL Y : le point d’insertion devient ‘+’
Balayer avec la souris
CTRL C pour copier
exportation Système / liste / sauvegarder / fichier local  fenêtre ‘Sauveg. Liste ds fichier …’
Choisir le format et valider
Renseigner le chemin et le nom du fichier (penser à l’extension)

Dernier enregistrement le 17/04/09 page 58 / 77


Quelques transactions
La configuration des écrans SAP est modu par 2
SPRO / F5 : explorateur custolable de 2 manières : iconeSAP GUI SETTINGS ou démarrer /paramètres/panneau
de configuration / Sap configuration (si problème de couleurs, on est surement en « use new visual design » :
décocher le et redémarrer SAP)
SM51 : pour tuer un job : cliquer sur ligne , cocher la ligne du job à tuer
Programme décomposant tous les includes d’un pgm : RSINCL00

TSTC Table des transactions


MBEW Valorisation article Mandant / Numéro d'article / Domaine de valorisation / Groupe
de valorisation
T001K Domaine de valorisation Mandant /Domaine de valorisation :: Société, Code de
regroupement des domaines de valorisation
T001 Sociétés Mandant / Société :: Code société ou nom de la société, Localité ,
Clé de pays, Clé de devise, Code langue, Plan comptable, Différence
maximale de change en pourcentage, Version d'exercice, Code
d'affectation, Société S/L, Adresse, Numéro d'identification de la
TVA sur chiffres d'affaires, Périmètre financier
T001W Divisions/Filiales Mandant / Division : Nom, Domaine de valorisation, Nº client de la
division, Numéro du fournisseur de la division, Clé du calendrier
d'entreprise
TKA01 Mandant / Périmètre analytique :: Désignation du périmètre
analytique, Clé de devise, Plan comptable, Version d'exercice
T025T Désignations des classes de
valorisation

Transaction pour la programmation


C'est sommaire des transactions de l'environnement de la programmation et d'administration du système usagé
dans la version 3.x du système SÈVE R/3:

Code de Transacción Descripción


BMV0 administration de la grosse bûche d'entrée directe.
OY19 comparaison du contenu d'un tableau entre deux les systèmes EN SAPENT R/3
SE01 système d'administration de transports
SE07 situation de vous leur ordonnes de transport
SE09 ordres d'Établi du transport
SE10 ordres de transport Customizong
SE11 entretien du dictionnaire de données
SE12 visualisation du dictionnaire de données
SE13 entretien de palmarès
SE14 dictionnaire de données, utilité pour les bases de données,
SE15 système du repositorio
SE16 inventeur de données (Navigateur Datos)
SE17 inventeur de palmarès
SE30 analyse de temps d'exécution
SE32 entretien d'éléments du texte.
SE35 entretien de modules du dialogue
SE36 entretien de bases de données logiques
SE37 entretien de modules de la fonction
SE38 entretien de programmes (éditeur ABAP/4)
SE39 écran de la rupture de l'édition
SE41 Manteniemiento de menus (Peintre minuscule)
SE43 entretien de menus de la région.
SE51 entretien du dynpros (peintre de l'écran)
SE54 entretien de vues
SE61 administration de la documentation
SE62 utilité champ industriel
Dernier enregistrement le 17/04/09 page 59 / 77
SE63 traducteur
SE65 documentation statistique de textes brefs
SE66 documentation statistique de textes explicatifs
SE68 administration du département de traduction
SE71 disposition SAPscript septembre
SE72 styles SAPscript
SE73 polices de caractères SAPscript
SE74 SAPscript formatent la conversion
SE75 cadres SAPscript
SE76 traduisant SAPscript Disposition Ensembles
SE77 SAPscript qui traduisent des styles
SE80 inventeur d'objets (navigateurs de l'objet)
SE81 hiérarchie de la candidature (SÈVE)
SE82 hiérarchie de la candidature (client)
SE84 système d'information du repositorio.
SE85 système d'information du repositorio.
SE86 système d'information du repositorio.
SE87 administration du modèle de données (il date le modeler)
SE88 système d'information
SE91 administration de messages
SE92 administration de messages de la grosse bûche du système
SE93 administration de codes de la transaction
SEU Administration d'objets (navigateur de l'objet)
SO32 administration d'utilisateurs SAPOffice
SHDO Entretien de variantes
SQ00 ABAP/4 question: les questions
SQ01 ABAP/4 question: l'entretien des questions
SQ02 ABAP/4 question: entretien de régions utilitaires
SQ03 ABAP/4 question: entretien des groupes d'utilisateurs
SQ07 ABAP/4 question: comparaison de la langue
SM35 administration de jeux de données (Fournée-entrée)
SE37 entretien de TRAVAUX
SM21 Il est utilisé pour voir plus d'information quand une DÉCHARGE se passe.
SHD0 entretien de transactions différentes.
SO00 envoient un message à travers SÈVE. Le destinataire conserve être d'Internet, X400, etc..
SMOD Gestión d'Utilisateur-sorties.

TRANSACTIONS DE CONTRÔLE D'ACCÈS

C'est sommaire des transactions du module d'accès du contrôle (CA) de la version 3.x du système SÈVE R/3:

Code de Transacción Descripción


SU01 administration d'utilisateurs
SU02 administration de profils
SU03 administration d'autorisations
PFCG Générateur automatique de profils
Système SUIM d'information

TRANSACTIONS DE LOGISTIQUE

C'est sommaire des transactions du module de la logistique largement (MM) de la version 3.x du système SÈVE
R/3:

Code de Transacción Descripción


ME00 Matières de l'administration. Les achats
MB00 Matières de l'administration. Administration de Réserves
MR00 Matières de l'administration. Vérifier des Factures
Gestión Materiales. L'évaluation
Gestión Materiales. Je prédis de Matière
MD00 Matières de l'administration. Les organisant Nécessités
MI00 Matières de l'administration. L'inventaire

Dernier enregistrement le 17/04/09 page 60 / 77


MM00 Matières de l'administration. Professeur Materiales
CL00 Matières de l'administration. La classification
VA00 administration commerciale. Les ventes
VL00 Matières de l'administration. L'expédition
MCE9 système Info. Les achats.
MCC2 système Info. Les Réserves de l'administration
MCT2 système Info. L'annonce publicitaire
MC01 système Info. Chercher la via septembre Info.
MC02 système Info. Chercher le Texte de la via
MCB1 système Info. Controlling Stocks
ME90 imprimer Ordre de Distribution
MBSF Conformidad. Libérer la Réception
MK03 environnement. Il consulte de Fournisseurs
ME3N environnement. Il consulte des Contrats
MM03 environnement. Professeur de consultation des matières
MR03 environnement. Il consulte des Factures
MMBE Entorno. Résumé de Réserves
MB51 environnement. Mov consulte. La matière
MB01 Mvtos. L'entrepôt. Entré par ordre
MB1A Mvtos. L'entrepôt. La sortie matérielle
MBST Mvtos. L'entrepôt. Annuler le document
MBRL Mvtos. L'entrepôt. Remboursez à Fournisseur
MB03 Mvtos. L'entrepôt. Visualiser le document
ME56 candidature d'Ordre. Assigner le contrat.
ME5A soleil. L'ordre. Les listes. Les généralités
ME5K soleil. L'ordre. Les listes. Pour l'imputation
ME5W soleil. L'ordre. Les listes. La nouvelle présentation
ME56 soleil. L'ordre. Travail suivre. Assigner
ME57 soleil. L'ordre. Travail suivre. Assigner et essayer
ME52 soleil. L'ordre. SolP produit. MRP. Modifier
ME53 soleil. L'ordre. SolP MRP produit. Visualiser
ME4L animal familier. Ofertas/Oferta. Listes. Pour fournisseur
ME4M animal familier. Ofertas/Oferta. Listes. Pour matière
ME4S animal familier. Ofertas/Oferta. Listes. Pour offre
ME4C animal familier. Ofertas/Oferta. Listes. Pour les articles du groupe
ME4N animal familier. Ofertas/Oferta. Listes. Pour pétition il offre
ME2L animal familier. Ofertas/Oferta. Listes. Pour fournisseur.
ME41 animal familier. Ofertas/Oferta. Créer
ME42 animal familier. Ofertas/Oferta. Modifier
ME43 animal familier. Ofertas/Oferta. Visualiser
ME47 animal familier. Ofertas/Oferta. Moderniser
ME48 animal familier. Ofertas/Oferta. Visualiser
ME49 animal familier. Ofertas/Oferta. prix de la Comparaison
ME21 Pedido/Contrato. Créer
ME58 Pedido/Contrato. au moyen de soleil. l'ordre
ME22 Pedido/Contrato. Modifier
ME23 Pedido/Contrato. Visualiser
ME28 Pedido/Contrato. Libérer
ME2L Pedido/Contrato. Listes. Pour fournisseur
ME2M Pedido/Contrato. Listes. Pour matière
ME2K Pedido/Contrato. Listes. Pour l'imputation
ME2C Pedido/Contrato. Listes. Pour groupe d'articles
ME2N Pedido/Contrato. Listes. Pour nombre de l'ordre
ME31 Pedido/Contrato. Ordre Ouvert. Créer
ME32 Pedido/Contrato. Ordre Ouvert. Modifier
ME33 Pedido/Contrato. Ordre Ouvert. Visualiser
ME58 Pedido/Contrato. Ordre d'Échelle. Au moyen de soleil. L'ordre
lMB01 conformité. Créer
MB02 conformité. Modifier
MB03 conformité. Visualiser
ME11 conformité. L'inscription Info. Créer
ME12 conformité. L'inscription Info. Modifier
ME13 conformité. L'inscription Info. Visualiser
ME14 conformité. L'inscription Info. Les modifications
Dernier enregistrement le 17/04/09 page 61 / 77
ME15 conformité. L'inscription Info. Pétition d'ayant effacé
ME01 conformité. Livre d'Ordres. Moderniser
ME03 conformité. Livre d'Ordres. Visualiser
ME04 conformité. Livre d'Ordres. Les modifications
MEQ1 conformité. Règlement pour quota. Moderniser
MEQ3 conformité. Règlement pour quota. Visualiser
MEQ4 conformité. Règlement pour quota. Les modifications
MEQM Conformidad. Règlement pour quota. Inscrit par matière
ME61 conformité. Le fournisseur de l'évaluation. Moderniser
ME62 conformité. Le fournisseur de l'évaluation. Visualiser
ME63 conformité. Le fournisseur de l'évaluation. Autom de la réévaluation.
ME64 conformité. Le fournisseur de l'évaluation. Evaluac de la comparaison.
ME6A conformité. Le fournisseur de l'évaluation. Les modifications
ME6H conformité. Le fournisseur de l'évaluation. L'analyse standarde
ME1l conformité. Les listes. Pour fournisseur
ME1M conformité. Les listes. Pour matière
ME1W conformité. Les listes. Pour les articles du groupe
ME1P conformité. Les listes. Histor. le prix-ordre
ME1E conformité. Les listes. Histor. la prix-offre.
ME0M conformité. Visualiser inscrire. Pour matière.
SU53 visualisent les objets de l'autorisation d'un utilisateur.

TRANSACTIONS DE ressources humaines

C'est sommaire des transactions du module de ressources humaines (HR) de la version 3.x du système SÈVE
R/3:

Code de Transacción Descripción


le PA03 changement l'inscription de contrôle de livres de paie
PA20 visualisent le PAPA de l'infotipo
PA30 Crearo modifie le PAPA de l'infotipos.
PP02 entrée rapide pour type désapprouve PD
PU00 effacent l'infotipo le PAPA d'un employé.

TRANSACTIONS DE VENTES ET DISTRIBUTION

C'est sommaire des transactions du module de ventes et distribution (SD) de la version 3.x du système SÈVE
R/3:

Code de Transacción Descripción


OLSD onfiguración de SD
VB21 volume de ventes et achats
VK15 multiples conditions de ventes.
le VA01 soleil. L'Entrepôt matériel. Créer
le VA02 soleil. L'Entrepôt matériel. Modifier
le VA03 soleil. L'Entrepôt matériel. Visualiser
le VA05 soleil. L'Entrepôt matériel. Il inscrit
VA11 créer la candidature de la vente
VA12 modifier la candidature de la vente
VA13 visualiser la candidature de la vente
la VA15 candidature de la vente intelligente
la VL02 distribution

TRANSACTIONS D'ADMINISTRATION FINANCIÈRE

C'est sommaire des transactions administration financière (FI) de la version 3.x du système SÈVE R/3:

Code de Transacción Descripción


FGRP Pantalla de l'écrivain du rapport
FM12 visualisent documents bloqués par l'utilisateur.
Dernier enregistrement le 17/04/09 page 62 / 77
le FST2 encart un nom spécifique pour un billet du type G/L.
FST3 visualisent le nom d'un billet G/L.
KEA0 entretien d'opérations d'intérêt.
KEKE Actividad CO-PAPA.
Tâche assignée KEKK d'opérations d'intérêt.
KL04 effacer un type de l'activité.
KS04 effacent un centre du coût.
KSH2 changement ou moi effaçons un groupe de centre du coût.
OBR2 effacent le programme de clients, vendeurs et facture G/L.
OKC5 effacent un groupe de l'elementos/costes.
OKE1 effacent données d'une transaction.
OKE2 effacent un centre d'avantage.
OKI1 déterminent le je compte d'activité des types de l'activité.
OMZ1 définissent le papier des partenaires.

Transactions par ordres alphabetiques

TRANSACTIONS

/n : Retour racine.
/o : Gestion des modes.
/h : Débuggeur.

AL11 : SAP Directory : répertoire du serveur


SE11 : Dictionnaire.
SE36 : BD Logique.
SE37 : Module fonction.
SE38 : Editeur ABAP/4
SE71 : Edition de formulaire.
SHDB : Création d’un programme batch input.
SM12 : Liste des blocages.
SM35 : Batch Input.
SM36 : Définition des JOBS.
SM37 : Pour voir les jobs
SE80 : Génération de classe de developpement.
SE16 : Data browser.

Transactions SE :
EI = Ecran Initial
SE01 : Transport Organizer ( Vue Etendue )
SE03 : Outils de Transport Organizer
SE06 : Suivi après Installation Transport-Organizer
SE07 : Affichage Statuts du Change and Transport System
SE09 / SE10 : TRANSPORT ORGANIZER (Ordres de Transport)

SE11 / SE12 / SE13 : Dictionnaire ABAP


SE14 : Abap IV Dictionnaire : Utilitaire de BD (Objets du Dictionnaire)
SE15 : Système d’Information du R/3 Repository
SE16 / SE17 : Data Browser  Tables

SE18 : Générateur d’Add-In : Gestion de Définition


SE19 : Générateur d’Add-In : Gestion d’Implémentation
SE24 / SE25 : Class Builder (Navigateur de Classe)
SE26 : ? (application)
SE29 : Paquet d’Applications
SE30 : Analyse de la Durée de l’Exécution
SE32 : Gestion des Eléments de Texte (Programme/Classe)
SE33 : Contexte (Gestion)
SE35 : Gestion Modules de Dialogue
SE36 : BDL = Logical Database Builder
SE37 : Module de Fonction / Fonction Builder
SE38 : Editeur ABAP
SE39 : Editeur Ecran Partagé ABAP
SE40 : Menu Painter / Gestion des Normes
SE41 : Menu Painter (EI)
SE43 : Gestion des Menus de Domaine
SE44 : ? (bloquée)
SE48 : Hiérarchie Appels
SE49 : Analyse de Programme (Manipulation de Tables)
SE51 / SE52 : Screen Painter (EI)
SE54 / SE55 / SE56 / SE57 : Génération Dialogue de Gestion des tables
Dernier enregistrement le 17/04/09 page 63 / 77
Accès Table/Vue
SE61 : Gestion Document (EI)
SE62 : Utilitaire Solutions Sectorielles
SE63 : Traduction (EI)
SE64 / SE65 / SE66 : ?

SE71 : Form Painter (SAPScript)


SE72 : Feuille de Style : Sélection
SE73 : Gestion des Polices SAPScript
SE74 : Conversion de Format SAPScript
SE75 : Options SAPScript
SE76 : Traduction de Formulaires SAPScript

Transactions SE (suite):
EI = Ecran Initial
SE77 : Traduction de Feuilles de Styles SAPScript
SE78 : SAPScript Gestion des Graphiques
SE80 : Lancement Application Object Navigator
SE81 : Hiérarchie des Applications
SE82 : Création Hiérarchie des Applications
SE83 : Afficher Reuse Library
SE84 / SE85 / SE86 / SE87 / SE88 / SE90 : Système d’Information du R/3 Repository
(Dictionnaire ABAP)
SE89 : SI du Repository : Gestion de la Structure Arborescente
SE91 : Gestion des Messages (EI)
SE92 : Gestion des Messages SysLog (EI)
SE93 : Gestion des Transactions
SE94 : Simulation : Extension Client à SE38
SE95 : Modification Browser : Sélection d’Objets
SE97 : Contrôler Autorisation de lancement Transaction lors d’Appels Transaction

Transactions SM :
EI = Ecran Initial
SM01 : Table TSTC : Bloquer / Débloquer Codes de transaction
SM02 : Messages Système
SM04 : Liste des Utilisateurs
SM12 : Sélectionner Entrées de Blocage
SM13 : Enregistrement de Mise à jour : Sélection
SM14 : Administration Tâches de Mise à Jour
SM18 : Audit de sécurité : Supprimer les Anciens Fichiers d’Audit
SM19 : Audit de sécurité : Administrer profil d’Audit
SM20 : Journal d’Audit : Analyse Locale de « victoria »
SM21 / SM22 : SysLog : Analyse Locale sur « victoria »
SM28 : Contrôle de Cohérence Initial de SAP
SM29 : Tables - Reprise de Modèle
SM30 / SM31 : Gestion des Vues de Tables (EI)
SM32 / SM33 : Tables : Accès
SM34 : Gestion des Clusters de Vues
SM35 : Batch – input : Synthèse des Dossiers
SM36 : Définir Job
SM37 : Sélection de Jobs Simples
SM38 : File d’Attente (EI)
SM39 : cf SM37
SM49 : Commandes de Système Exploitation Externes
SM50 : Synthèse des Processus
SM51 : Serveur SAP

Transactions SM (suite):
EI = Ecran Initial
SM54 : Gestion de la Table TXCOM
SM55 : Gestion de la Table THOST
SM56 : Mémoire Tampon Tranches de Numéro
SM58 : RFC Transactionnel
SM59 : Affichage et Gestion des Destinations RFC
SM61 : Afficher Liste des Objets de Commandes
SM62 : Afficher / Gérer : Désignation d’ Evénements
SM63 : Afficher / Gérer : Set des Modes d’Exploitation
SM64 : Eclater Evénement du Traitement en Arrière – Plan
SM65 : Outil d’Analyse Traitement en Arrière – Plan (tests simples)
SM66 : ?
SM69 : Commandes de Système Exploitation Externes

Transactions AL :
EI = Ecran Initial
AL01 : CCMS : Regroupement de Moniteurs Fonction de Gestion Désactivées
Dernier enregistrement le 17/04/09 page 64 / 77
AL02 / AL04 / AL05 : SAP Performance Monitor
AL03 : Graphiques de Monitorage du Système d’Exploitation
AL06 : Performance Report : Upload / Download
Report for Customer System
AL07 : Performance Report : Early Watch Data Collection
AL08 : Current Active Users
AL09 : Télédéchargement MONI
AL10 : Download des Données, Performance vers Early Watch
AL11 : Répertoire SAP (chemin fichier)
AL12 / AL13 : ? (application)
AL15 : Destination SAPOSCOL
AL16 / AL18 : Local (Victoria) / SAP Operating System Monitor
AL17 / AL19 : cf AL15 (bloqué)
AL21 : Analyse de Programmes ABAP/4
AL22 : Affichage des Objets Dépendants

Transactions inexistantes de AL23 à AL50 comprise.


Transactions > à la Transaction AL50 non testées.

Transactions Diverses :
EI = Ecran Initial
SHDB : Enregistrement de Transaction : Synthèse des Enregistrements
SPAD : Administration Spool

/BEND : Arrêter un Programme Batch-Input


/00 : Administration Spooler / Liste des unités de Sortie

/C : Débogueur ABAP
/H : Activation débogueur
/I : Fin de Session ?
/N : Lancer « SAP Easy Access »
/O : Liste des Modes

Transactions SAPSCRIPT Olivier Ulrich :


EI = Ecran Initial
MB02 : Modifier Document Article (EI)
MBRL : Saisir Retour Livraison
ME00 : Menu standard des achats.
ME22 : Modifier Commande (EI)
ME32 : Modifier Contrat Cadre (EI)
ME32K : Modifier Contrat (EI)
ME39 : Afficher Echéancier Programme de Livraison
ME42 : Modifier Appel d’Offre
ME47 : Gérer Offre
ME92F : Suivi Confirmation des Ordres
QM02 : Modifier Avis : Ecrlnit
SA38 : Exécution de Programmes ABAP
F110 : Opérations de Paiements Automatiques : Status
F-41 : Saisir Avoir Fournisseurs : Données d’En-Tête
F150 : Relancer
FF68 : Traiter Liste de Remise de Chèques
LT01 : Créer Ordre de Transport (EI)
VF02 : Modifier Facture
VL04 : Réserve Travail Commandes Client / Commandes : Sélection
VL32 : Modifier Livraison Entrante
VT02 : Modifier Transport
IW52 : Modifier Avis de Service : Ecrlnit
IW58 : Liste : Avis

Transactions VA :
EI = Ecran Initial
VA01 : Créer une Commande Client (EI)
VA02 : Modifier une Commande Client
VA03 : Afficher une Commande Client
VA05 : Liste Commandes Client
VA07 : Comparaison Achats-Ventes (Sélection via N° de Commande Client)
VA08 : Comparaison Achats-Ventes (Sélection via Données Organisation)
VA11 : Créer une Demande d’Offre (EI)
VA12 : Modifier une Demande d’Offre
VA13 : Afficher une Demande d’Offre
VA15 : Liste des Appels d’Offre
VA21 : Créer une Offre (EI)
VA22 : Modifier une Offre
VA23 : Afficher une Offre
Dernier enregistrement le 17/04/09 page 65 / 77
VA25 / VA26 : Liste des Offres
VA31 : Créer un Programme de Livraison (EI)
VA32 : Modifier un Programme de Livraison
VA33 : Afficher un Programme de Livraison
VA35 : Liste des Programmes de Livraison
VA41 : Créer un Contrat (EI)
VA42 : Modifier un Contrat
VA43 : Afficher un Contrat
VA44 : Définir Périmètre Analytique
VA45 / VA46 : Liste des Contrats
VA51 : Créer une Proposition de Poste (EI)
VA52 : Modifier une Proposition de Poste
VA53 : Afficher une Proposition de Poste
VA55 : Liste des Propositions de Poste

Transactions inexistantes de VA56 à VA71 comprise.


De Même : VB01 : Créer Liste / Exclusion
VC01 : Créer un Contact
VD01 : Créer Client (EI)
VE01 : INTRASTAT : Sélection de Données Pays de l’UE
VF01 : Créer une Facture
VG01 : Créer Groupe
VI01 : Créer Frais de Transport
VK01 : Elément Condition
VL01 : Créer Livraison Sortante

Dernier enregistrement le 17/04/09 page 66 / 77


TABLES
Modèle conceptuel MM

TRDIR : table ou il y a tous les programmes


TFTIT : table ou il y a tous les fonctions
NAST : Table ou il y a tous les status de message.
KSCAL : Table des correspondances
Icon : Table des ICON
CDHDR : table entete des modifications effectué sur les objets
CDPOS : Poste de modification des objets
DD02L : tous les champs de toutes les tables

A017

FICHE INFO-ARTICLES (specifique a la division)


KAPPL Application APPL CHAR 2 T681A

KSCHL Type de condition SCHA CHAR 4 T685


LIFNR Numéro de compte fournisseur LIFN CHAR 10 LFA1
MATNR Numéro d'article ATNR CHAR 18 MARA
EKORG Organisation d'achats KORG CHAR 4 T024E
WERKS Division ERKS_D CHAR 4 T001W
ESOKZ Type de la fiche infos-achats SOKZ CHAR 1
DATBI Fin de la période de validité ODATBI DATS 8
RELATION AVEC KONP ET EINE

A018
FICHE INFO ARTICLE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
KAPPL KAPPL CHAR 2 T681A Application
KSCHL KSCHA CHAR 4 T685 Type de condition
LIFNR ELIFN CHAR 10 LFA1 Numéro de compte fournisseur
MATNR MATNR CHAR 18 MARA Numéro d'article
EKORG EKORG CHAR 4 T024E Organisation d'achats
ESOKZ ESOKZ CHAR 1 Type de la fiche infos-achats
DATBI KODATBI DATS 8 Fin de la période de validité d
RELATION KONP ET EINE

KONP
CONDITION DE POSTES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
KNUMH NUMH CHAR 10 Numéro de l'enregistrement cond
KOPOS OPOS NUMC 2 Numéro d'ordre de la condition
RELATION A019 , A017 , A016 , A018

Dernier enregistrement le 17/04/09 page 67 / 77


A019
ENTETE DE CONTRAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
KAPPL KAPPL CHAR 2 T681A Application
KSCHL KSCHA CHAR 4 T685 Type de condition
EVRTN E BELN CHAR 10 EKKO Numéro du document d'achat
DATBI KODATBI DATS 8 Fin de la période de validité d
RELATION EKKO ET A016 , KONP ,

A016
POSTE DE CONTRAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
KAPPL KAPPL CHAR 2 T681A Application
KSCHL KSCHA CHAR 4 T685 Type de condition
EVRTN E BELN CHAR 10 EKKO Numéro du document d'achat
EVRTP EBELP NUMC 5 EKPO Numéro du poste du document d'a
DATBI KODATBI DATS 8 Fin de la période de validité d
RELATION A019, KONP , EKKO, EKPO

EINA
FICHE INFO ACHAT DONNEE GENERALES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
INFNR INFNR CHAR 10 T681A Numéro de la fiche infos-achats
RELATION EBAN, EINE, A017, EINA, EKPO , A018, EIPA

EBKN
IMPUTATION DEMANDE D’ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
BANFN BANFN CHAR 10 Numéro de la demande d'achat
BNFPO BNFPO NUMC 5 Numéro du poste de la D.A.
ZEBKN ZEBKN NUMC 2 EKKO Numéros des segments d'imputati
RELATION EBAN

EBAN
DEMANDE D’ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
BANFN BANFN CHAR 10 Numéro de la demande d'achat
BNFPO BNFPO NUMC 5 Numéro du poste de la D.A.
RELATION EBKN, EKPO, MARA, LFA1

EKKO
EN TETE DOCUMENT D’ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
RELATION EKKO, A016, EINA, EINE, EIPA, EKAB, EKET, KONV, LFA1, EKES, EKBE, EKPA

EKPO
POSTE DOCUMENT D’ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKKO Numéro du poste du document d'a
RELATION EBAN

EKET
ECHEANCE DU PROGRAMME DE LIVRAISON
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKKO Numéro du poste du document d'a
ETENR EETEN NUMC 4 Compteur des échéances
RELATION EKPO

EINE
FICHE INFO ACHAT DONNEES DE L’ORGANISATION D’ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
INFNR INFNR CHAR 10 EINA Numéro de la fiche infos-achats
EKORG EKORG CHAR 4 T024E Organisation d'achats
ESOKZ ESOKZ CHAR 1 Type de la fiche infos-achats

Dernier enregistrement le 17/04/09 page 68 / 77


WERKS EWERK CHAR 4 T001W Division
RELATION EKKO ,EKPO, EINA, A017 ,A018,

EIPA
DETERMINATION PRIX DE COMMANDE ENREGISTREMENT INFO
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
INFNR INFNR CHAR 10 EINA Numéro de la fiche infos-achats
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKKO Numéro du poste du document d'a
RELATION EKPO, EINA

EKAB
DOCUMENT D’APPEL SUR CONTRAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
KONNR KONNR CHAR 10 EKKO N° du contrat-cadre supérieur
KTPNR KTPNR CHAR 5 EKPO Numéro du poste du contrat-cadr
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKPO Numéro du poste du document d'a
RELATION EKPO

KONV
CONDITION (DONNEES ALTERNATIVES)
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
KNUMV KNUMV CHAR 10 Numéro de la condition du docum
KPOSN KPOSN NUMC 6 Numéro du poste pour lequel des
STUNR STUNR NUMC 3 Numéro de niveau
ZAEHK ZAEHK NUMC 2 Compteur de conditions
KAPPL KAPPL CHAR 2 T681A Application
RELATION EKKO, EKPO

EKPA
FONCTION PARTENAIRE DANS LES ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKKO Numéro du poste du document d'a
EKORG EKORG CHAR 4 T024E Organisation d'achats
LTSNR LTSNR CHAR 6 WYT1 Sous-gamme fournisseur
WERKS WERKS_D CHAR 4 T001W Division
PARVW PARVW CHAR 2 TPAR Fonction de partenaire (ex. WE
PARZA PARZA NUMC 3 Compteur de partenaires
RELATION LFA1, EKPO

EKPA
FONCTION PARTENAIRE DANS LES ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKKO Numéro du poste du document d'a
ZEKKN ZEKKN NUMC 2 Numéro de l'imputation
VGABE VGABE CHAR 1 Type d'opération historique de
GJAHR MJAHR NUMC 4 Exercice du document article
BELNR MBLNR CHAR 10 Numéro de document article
BUZEI MBLPO NUMC 4 Poste du document article
RELATION MARA, EKPO ,MKPF, MSEG

MKPF
ENTETE DE DOCUMENT D’ARTICLE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MBLNR MBLNR CHAR 10 Numéro de document article
MJAHR MJAHR NUMC 4 Exercice du document article
RELATION EKBE, MSEG

MSEG
SEGMENT DE DOCUMENT POUR ARTICLE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MBLNR MBLNR CHAR 10 Numéro de document article
MJAHR MJAHR NUMC 4 Exercice du document article
ZEILE MBLPO NUMC 4 Poste du document article
RELATION LFA1,MARA , EKBE,,MKPF

Dernier enregistrement le 17/04/09 page 69 / 77


LFM1
ENREGISTREMENT MAITRE FOURNISSEUR DONNEES ORGANISSATION DES ACHATS
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
LIFNR ELIFN CHAR 10 LFA1 Numéro de document article
EKORG EKORG CHAR 4 T024E Organisation d'achats
RELATION LFA1

LFB1
FICHE FOURNISSEUR SOCIETE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
LIFNR ELIFN CHAR 10 LFA1 Numéro de document article
BUKRS BUKRS CHAR 4 T001 Société
RELATION LFA1

LFB1
FICHE FOURNISSEUR SOCIETE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
LIFNR ELIFN CHAR 10 LFA1 Numéro de document article
RELATION LFB1, LFM1, MSEG, EKPA, EKPO, EKKO, EBAN , AMPL, EORD

EKES
CONFIRMATION DES COMMANDES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
EBELN EBELN CHAR 10 EKKO Numéro du document d'achat
EBELP EBELP NUMC 5 EKKO Numéro du poste du document d'a
ETENS ETENS NUMC 4 Numéro de la confirmation de co
RELATION MARA ,EKPO

EQUP
FICHIER QUATAS POSTE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
QUNUM QUNUM CHAR 10 Nº de la répartition des quotas
QUPOS QUPOS NUMC 3 Poste quotas
RELATION EQUK

EQUK
CONFIRMATION DES COMMANDES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MATNR MATNR CHAR 18 MARA Numéro d'article
WERKS WERKS_D CHAR 4 T001W Division
BDATU QUOBI DATS 8 Fin de validité de la période d
RELATION MARA

MARA
FICHE ARTICLE DONNEES GENERALES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MATNR MATNR CHAR 18 MARA Numéro d'article
RELATION EQUK, EBAN EKPO, EKES, AMPL,MARC, MAKT, EORD, EKBE

MARC
FICHE ARTICLE SEGMENT C (DIVISION)
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MATNR MATNR CHAR 18 MARA Numéro d'article
WERKS WERKS_D NUMC 4 T001W Division
RELATION MARA, MBEW

AMPL
TABLE DES PIECES FABRICANT AUTORIS2ES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
BMATN MPMAT CHAR 18 MARA Numéro de l'article propre à l'
AMPNR AMPNR NUMC 5 Numéro de l'enregistrement des
RELATION MARA, MARA, LFA1

MAKT
DESIGNATION DES ARTICLES
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MATNR MATNR CHAR 18 MARA Numéro d'article
SPRAS SPRAS LANG 1 T002 Code langue
RELATION MARA

Dernier enregistrement le 17/04/09 page 70 / 77


MBEW
VALORISATION ARTICLE
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MATNR MATNR CHAR 18 MARA Numéro d'article
BWKEY BWKEY CHAR 4 T001K Domaine de valorisation
BWTAR BWTAR_D CHAR 10 T149D Groupe de valorisation
RELATION MARC

EORD
REP. SOURCE APPROVISIONNEMENT ACHAT
CHAMPS ELEMENT DE DONNEE TYPE LONG. TAB .CTRL LIBELLE DU CHAMPS
MATNR MATNR CHAR 18 MARA Numéro d'article
WERKS WERKS_D NUMC 4 T001W Division
ZEORD ZEORD NUMC 5 T149D Numéro fiche rép.sources appro.
RELATION MARA, LFA1

Définition MM

Définition d’une DA

Une DA (Demande d’Achat : EBAN-BANFN) est un document interne qui décrit un besoin d’achat permettant de répondre à un impératif de production ou de non-production.
Ce besoin est le résultat du Calcul des besoins (CBN) ou la conséquence d’une demande ponctuelle.
Ce besoin concerne une Division (EBAN-WERKS), pour un ou plusieurs Articles (EBAN-MATNR), dans certaines quantités (EBAN-MENGE), pour une ou plusieurs dates
de besoins. ? ? ?Test effectué : La division est obligatoire à la création d’une DA.
La fiche article doit exister pour la division traitée.
Au niveau de la DA, le besoin exprimé n’est pas forcément lié à un fourniseur.
La DA est structurée en postes (1 ou N) (EBAN-BNFPO). Il n’y a pas de notion d’entête et pas de notion d’échéance pour une DA.

Types de DA

Il est possible de créer 3 types de DA (EBAN-BSART) :


CTR : Demande Contrats cadre
Ces demandes d’achat seront transformées en Contrat uniquement.
HPR : DA hors production
Ces demandes d’achat sont créées manuellement.
NB : DA créées automatiquement
Les demandes d’achat créées automatiquement sont toutes de type ‘NB’.
Il est également possible de créer des demandes d’achat de type ‘NB’ manuellement.

Définition d’un contrat

Un contrat (EKKO-EBELN) est un document d’achat contractuel vis à vis d’un fournisseur (EKKO-LIFNR) pour une période de validité déterminée.
Le fournisseur d’un contrat correspond au partenaire de type FR.
La période de validité correspond à [Début de la période de validité (EKKO-KBDAT) ; Fin de période de validité (EKKO-KDATE)].
Lorsque la date de fin de validité est dépassée, aucune commande ne peut être passée au titre de ce contrat.
Le contrat est composé d’une entête et de 1 à N postes.

Types de contrat

Les contrats sont regroupés sous la Catégorie de document (EKKO-BSTYP) = K

Il est possible de créer 2 types de contrats (EKKO-BSART) :


MK : Contrat en quantité.
Un contrat en quantité porte sur des quantités (EKPO-KTMNG) d’article (EKPO-MATNR)
WK : Contrat en valeur.
Un contrat en valeur porte sur un montant (EKKO-KTWRT) à transformer en commande auprès du fournisseur.

Définition d’une commande

Une commande d’achat est identifiée par un numéro de commande (EKKO-EBELN) et une catégorie du type de document d’achat (EKKO-BSTYP = F).
Une commande est composée de 1 à N postes identifiés par le numéro de la commande (EKPO-EBELN) et un numéro de poste (EKPO-EBELP). A chaque poste de
commande est associé à 1 ou N échéances.
Les échéances sont identifiées par le numéro de la commande (EKET-EBELN), le numéro du poste (EKET-EBELP) et un numéro d’échéance (EKET-ETENR).

Types de Commande

Il est possible de créer 4 types de commande (EKKO-BSART)


HPR : Commande hors production.
Une commande de type HPR peut être valorisée à 0 afin d’effectuer des transferts. Ces commandes de « transfert » HPR portent sur des groupes de compte fournisseur = ‘DIVI’.
Dans le cas des commandes de transfert HPR, la notion de quantité commandée sera remplacée par la notion de quantité transférée ou quantité de transfert.
NB : Commande standard
APL : Appel contrat valeur
Ce type de commande correspond à des commandes manuelles sur contrat en valeur.
UB : Commande de transfert (inter division)
Les commandes de type UB ne doivent pas être prises en compte dans le calcul des engagements.
ZDIV : Commandes SD qui ne doivent pas être prise en comptees articles achetés

Dernier enregistrement le 17/04/09 page 71 / 77


La Fiche article
Définitions
Dans SAP, un article est référencé dans la table MARA (Fiche article : données générales) par la zone MARA.MATNR (numéro d’article). Toutes
ces données sont valables au niveau mandant (MARA.MANDT), c’est-à-dire au niveau général (toutes sociétés, toutes organisations d’achat).

Pour être utilisé tout au long du flux Achats, la Fiche article doit également être définie au niveau division SAP pour les vues MRP (Material Ressource Planning), Achats
(table MARC), Comptabilité et magasin pour les vues Stocks (hors périmètre du projet Achats).

Tout ce qui concerne la valorisation de l’article (prix, types de prix, stocks, valorisations) est renseigné dans la table MBEW.
Le domaine de valorisation est le niveau de valorisation auquel doivent être effectuées les valorisations de l’article. Il correspond soit à une division, soit à l’ensemble des
divisions d’une société (c’est-à-dire la société elle-même). A la SAGEM, le domaine de valorisation est la division SAP.
La zone groupe de valorisation permet de faire plusieurs valorisations pour un couple article / domaine de valorisation. Il n’est pas utilisé actuellement à la SAGEM. On a
donc :
zone MBEW.BWTAR = ‘ ‘ (1 blanc)
Dans la table MBEW, on aura par article un PMP ou un prix standard (en fonction du code prix) par division SAP.
Une éventuelle agrégation de ces prix à des niveaux supérieurs au couple article / division SAP n’est pas pertinente fonctionnellement pour les Achats. On entre alors dans le
périmètre de la comptabilité fournisseur (hors périmètre du projet).

Un article peut avoir une vue générale (c’est-à-dire un enregistrement dans MARA) sans avoir de vue Achat, MRP, Stock, Comptabilité…
Il n’est donc pas obligatoire d’avoir pour chaque article un enregistrement dans les table MARC et MBEW.
Cependant, si l’article a une vue Achats pour une ou plusieurs divisions, on aura un enregistrement par couple article / division dans la table MARC.

La Fiche fournisseur

Définitions

Rappel : A la SAGEM, on travaille avec une seule société et une seule organisation d’achats.
La société est un niveau des données organisationnelles dans SAP (on a une comptabilité par société), juste au-dessous du mandant.
L’introduction des données concernant la Tchéquie dans SAP entraînera la création d’une nouvelle soc iété, dont les règles de gestion ne sont
pas actuellement définies.
L’organisation d’achats n’est pas un niveau des données organisationnelles dans SAP. Il s’agit d’une unité d’organisation achats qui détermine les modalités générales des achats
pour
une ou plusieurs divisions (dans le cas SAGEM, il s’agit de l’ensemble des divisions).

Les groupes de compte


Zone : LFA1.KTOKK.
Le groupe de compte est une caractéristique permettant d’effectuer des classifications au sein des fiches fournisseurs.
Le groupe de compte détermine dans la fiche fournisseur les zones qui vont s’afficher.
Les groupes de compte utilisés par les Achats sont les suivants :

Définition Du schéma partenaire


Le schéma partenaire est défini par organisation d’achats (dans notre cas, il n’y en a qu’une).
Il est possible de définir un schéma partenaire aux niveaux sous-gamme fournisseur (découpage de l’assortiment complet des produits du fournisseur, basée sur différents
critères : zone LTSNR) et division (zone WERKS), mais ce n’est pas utilisé : il n’existe donc aucune règle de gestion à ce sujet.
Dans les tables des fonctions partenaires, il faut donc filtrer sur les 2 zones correspondantes :
WERKS = ‘ ‘ (1 blanc)
LTSNR = ‘ ‘ (1 blanc)
A chaque fournisseur et à chaque en-tête de document d’achat, on associe un obligatoirement un schéma partenaire constitué de une ou plusieurs fonctions partenaires,
chacune étant elle-même associée à un fournisseur.
Une fonction partenaire est une fonctionnalité d’un fournisseur qui va agir au niveau de la fiche fournisseur, ou des documents d’achat.
Les fonctions partenaires déterminent les zones qui vont s’imprimer dans les différents documents d’achat.
Les fonctions partenaires possibles sont :

Définitions La Fiche-Info Achat ou FIA

Il s’agit d’un document interne qui fait le lien entre un article et un fournisseur. Ce document n’est jamais envoyé au fournisseur.
Ses données sont renseignées suite aux négociations avec le fournisseur sur l’article, mais ce ne sont pas des informations contractuelles.
Son objectif est de regrouper des informations sur un couple article / fournisseur, valables au niveau :
 organisation d’achats :
l’organisation d’achat étant unique à la SAGEM, la FIA est alors valable pour l’ensemble des divisions SAP.
 organisation d’achat / division :
La création d'une FIA au niveau Division est normalement "interdite" à la Sagem.
Aucun blocage n’ayant été mis en place dans SAP, les utilisateurs peuvent donc créer des FIA en précisant la division.
Certaines données de la FIA seront redescendues dans les documents d’achats (contrat, commande) créés en référence, mais toutes ces informations seront modifiables au
niveau du document d’achats.
Remarque : si on crée une commande sur un article acheté auprès d’un fournisseur, et qu’il n’existe pas de FI A correspondante (c’est-à-dire pour l’article géré en stock
associé à l’article acheté et le fournisseur traité), le système en crée une automatiquement. Le système renseignera alors la FIA en récupérant les données de la commande.

Définitions Le Répertoire des Sources d’Approvisionnement Autorisées (RSA)


Le RSA matérialise la liaison entre un article géré en stock, un numéro de pièce fabricant et un fournisseur.

Pour un article géré en stock et une division, le RSA propose l’ensemble des sources d’approvisionnement externes ou internes possibles.
3 sources d’approvisionnement possibles :
 Cas 1 : les contrats existants pour l’article géré en stock et la division traités.
 Cas 2 : les FIA existantes pour l’article géré en stock et la division traités.
 Cas 3 : les divisons d’approvisionnement de l’article géré en stock traité.
 Cas 4 : les programmes de livraisons (bientôt dans SAP).
 Non traité dans le projet Achats pour l’ instant.

Une source d’approvisionnement est définie pour une période donnée.


En conséquence, un même poste de contrat pourra constituer plusieurs sources d’approvisionnements différentes , si celles-ci sont définies sur des périodes de validité
RSA différentes.
Même remarque pour une FIA ou une division d’approvisionnement.

Le RSA n’est ni généré, ni mis à jour automatiquement à la création ou à la modification d’une nouvelle source d’approvisionnement.
 Il faut une intervention manuelle ou programmée dans le système pour définir les RSA.

Dernier enregistrement le 17/04/09 page 72 / 77


Les RSA interviennent dans l’attribution automatique d’une source d’approvisionnement à un document d’achat (DA, commande), mais il possible de créer des documents
d’achats sans faire intervenir les RSA.

Définitions Les quotas

Les quotas interviennent dans l’attribution automatique par le Material Ressource Planning (MRP) d’une source d’approvisionnement à un document d’achat (DA, commande),
mais il possible de créer des documents d’achats sans faire intervenir les quotas.
Les quotas sont définis pour un article géré en stock, une division et une période de validité.

Exemples de tables transparentes utilisables pour optimiser les sélections


Domaine SD
Voir note OSS n° 0185530

Quoi ? Critère de sélection ? Table Elément de la clé


Commandes Code client VAKPA KUNDE
PARVW
Code article VAPMA MATNR
Livraisons Code client VLKPA KUNDE
PARVW
Code article VLPMA MATNR
N° de commande VBFA VBELV
Factures Code client VRKPA KUNDE
PARVW
Code article VRPMA MATNR
N° de commande VBFA VBELV
N° de livraison VBFA VBELV

Domaines MM et WM
Voir note OSS n° 0191492
Domaines PP et PM
Voir note OSS n° 0

Transactions Diverses
recherche Icône jumelle (préaffichage zone courante) et jumelle + (suivant)
EWK1 recherche Recherche de chaines de car. Dans pgm
SE11 Dico Dictionnaire : zones, tables, structures - Maj table : passer par ‘insérer’
Accès au contenu d’une table : ‘Utilitaire’/’contenu de la table’
SE16 Tables Affichage du contenu d’une table
Choix : zones de sélection et zones de la liste
Affichage vertical complet d’un enr. : double-click sur un champ quelconque d’une ligne
SE37 Fonction Editeur et exécution d’une Fonction
SE38 Pgm Editeur programme ABAP
SE51 Dynpro Gestion des écrans : dynpro
SE71 Formulaire Formulaires
SE80 navigateur Navigateur sur tous les objets ABAP
SE84 transactions Liste des transactions : Prog/env. dév./transation
SE93 transactions Création code transaction
SF10 Transport Libératon d’une tache/ ordre
SPRO Customizing F5 : paramétrage SAP
SM30 Tables Maj des tables
SM51 Job Pour interrompre processus : pour tuer un job : cliquer sur ligne , cocher la ligne du job à tuer
SQ01 Queries Queries
Dernier enregistrement le 17/04/09 page 73 / 77
STMS transport Importation d’un ordre

Dernier enregistrement le 17/04/09 page 74 / 77


Modules sap
Code objet
module
AM Immobilisation
CO Contrôle de Gestion
FI Comptabilité Financière
HR Gestion du Personnel
IS Solutions Métiers
MM Material management Gestion des articles stocks achats
PM Maintenance
PP Gestion de production
PS Gestion de Projet
QM Assurance Qualité
SD Sale distribution Administration des Ventes
WF WorkFlow
WM Pilotage magasin

Les subdivisions :
Logistique mandant société division-domaine de valorisation /secteur / domaine
d’activité
Comptabilité financière périmètre financier /société
Comptabilité financière périmètre financier / périmètre analytique
Comptabilité financière Domaine de contrôle des crédits / société
Comptabilité financière Domaine d’Activité de consolidation / domaine d’activité
Gestion des articles Société / organisation d’achat
Gestion des articles division / organisation d’achat

Valeurs FOURNIER tables


Comptabilité financière 01 Société 9002 LABORATOIRES URGO SA T001
Comptabilité financière 03 Domaine d’activité
Comptabilité financière 04 Espace fonction
Comptabilité financière 05 Domaine d’activité de
consolidation
Comptabilité financière 02 Domaine de contrôle
des crédits
Contrôle de gestion 01 Périmètre analytique Valeur : PAF TKA01
Contrôle de gestion 02 Périmètre de résultat Valeur : PRRF
Logistique - données 01 Niveau de valorisation Do va = div société T001K
9021 9002
générales
9024 9002
9029 9002
9902 9002
Logistique - données 02 Division Soc 9002 LABORATOIRES URGO SA
div 9021 Chenôve 42 - Urgo SA
générales div 9024 Dijon,, - Urgo SA
div 9029 PARIS rue de Lyon URGO SA
div 9902 Fontaine-URGO
Logistique - données BWKEY BUKRS BWMOD T001K
générales T001K domaine de 9021 9002 9002
9024 9002 9002
00valorisation 9029 9002 9002
9902 9002 9002
Logistique - données 03 Localisation
générale0s
Logistique - données 04 Secteur d’activité
générales
Administration des Organisation
ventes (ADV) commerciale
Canal de distribution
Agence commerciale
Groupe de vendeurs
Gestion des articles Magasin
Organisation d’achats
Dernier enregistrement le 17/04/09 page 75 / 77
Dernier enregistrement le 17/04/09 page 76 / 77

Vous aimerez peut-être aussi