Pense bête ABAP
Short Description
Download Pense bête ABAP...
Description
Pense bête par type de traitement
Vers. V.2.0
Date 12/11/2002
Dernier enregistrement le 17/04/09
Author E. Bertot
Visa
Reviewed by
Visa
Validated by
page 1 / 77
Visa
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 Llines:____________________________________________________________________ 11 Set left scroll-boundary ________________________________________________________________ 11 New-line no-scrolling : _________________________________________________________________ 12 Print control : ________________________________________________________________________ 12 Structure d’un programme REPORT______________________________________________________ Les évènements possibles _____________________________________________________________ Mise en forme de l’en tête de l’état ______________________________________________________ Mise en forme de l’en-tête de colonnes sans write (état simple) ________________________________ écriture dune ligne ___________________________________________________________________ commentaires :______________________________________________________________________
13 14 14 14 14 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 _____________________________________________________ Concatenate ________________________________________________________________________ Split ______________________________________________________________________________ shift ______________________________________________________________________________ Replace ___________________________________________________________________________ translate ___________________________________________________________________________ Search ____________________________________________________________________________ Concaténation / division d’une chaine____________________________________________________
37 37 37 37 37 37 37 38
Call transaction ______________________________________________________________________ 38 Code retour ________________________________________________________________________ 39 Zones système ______________________________________________________________________ 39
Création de fichier en Sortie. _________________________________________________ 40 Les fichiers __________________________________________________________________________ Ouverture, transfert, lecture, fermeture ___________________________________________________ WS_DOWNLOAD / WS_UPLOAD_____________________________________________________ Exemple :__________________________________________________________________________
40 40 41 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 _________________________________________________________________________ système ___________________________________________________________________________ Les symboles standards : table TTDGT __________________________________________________ Les symboles de textes : DEFINE &symbole& = ‘valeur’: INCLUDE/symboles/TexteI_____________ Les symboles de programme ___________________________________________________________ Options de formatage_________________________________________________________________ Commandes particulières interessantes de la fenêtre principale MAIN __________________________
53 53 53 53 53 53 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 _________________________________________________________________ Transaction pour la programmation______________________________________________________ TRANSACTIONS DE CONTRÔLE D'ACCÈS____________________________________________ TRANSACTIONS DE LOGISTIQUE ___________________________________________________ TRANSACTIONS DE ressources humaines_______________________________________________ TRANSACTIONS DE VENTES ET DISTRIBUTION ______________________________________ TRANSACTIONS D'ADMINISTRATION FINANCIÈRE ___________________________________
59 59 60 60 62 62 62
Transactions par ordres alphabetiques ___________________________________________________ 63
TRANSACTIONS__________________________________________________________ 63 TABLES _________________________________________________________________ 67 Modèle conceptuel MM ________________________________________________________________ 67 Définition MM _______________________________________________________________________ Définition d’une DA _________________________________________________________________ Types de DA _______________________________________________________________________ Définition d’un contrat _______________________________________________________________
71 71 71 71
Types de contrat ______________________________________________________________________ Définition d’une commande ___________________________________________________________ Types de Commande _________________________________________________________________ La Fiche article _____________________________________________________________________ La Fiche fournisseur _________________________________________________________________ Définitions _________________________________________________________________________ Les groupes de compte _______________________________________________________________ Définition Du schéma partenaire _______________________________________________________ Définitions La Fiche-Info Achat ou FIA __________________________________________________ Définitions Le Répertoire des Sources d’Approvisionnement Autorisées (RSA) __________________
71 71 71 72 72 72 72 72 72 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 TYPE PARAMETERS LIKE (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 nombre condensé
packed
8
1-16
I
entier
integer
x
64ko max
F
virgule flottante
floating
x
N(*)
texte numérique
1
1-max
C(*)
texte
numeric char
1
1-max
P(*)
Dernier enregistrement le 17/04/09
page 7 / 77
D
date (aaaammjj)
date
8
8
T
heure(hhmmss)
time
6
6
1
1-max
X(*)
hexadecimal
(*) : 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 char(x) cuky curr decimals dats int4 lang numc(x) tims
Types de donnees :
Interne c(x) c(5) p(n/2 + 1) m d i c(1) n(x) t
Description Character Currency Key Currency n digits, m dec Date Integer Language Numeric char Time
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 nom_donnée_2 Firsrt-line SUM1 (5)
TYPE I, TYPE D, TYPE I VALUE 1, 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 : (longueur-zone) TYPE : W-Toto(12) TYPE C DATA : LIKE 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 ], (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 ]. INCLUDE STRUCTURE . 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 , . Write At /() . = Edition du f sur la ligne (/) en position sur une longueur Color : 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 = coloration direct de l’edition, Intensified color = les couleurs sont intensifiees, Hotspots = main Write 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 = 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 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 Ending At : pour ajouter une fenetre en coordonnee. With Frame Title : Permezt d’associer un titre a une fenetre.
Selection de Zones : Get cursor field Value = ces instruction permettent de collecter interractivement des informations complémentaire Get cursor line . 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 . = dans la zone d’écran zone 1, Set cursor . Set cursor line
Imprimer : fonction GET_print_paramters : pour imprimer
Using N° edit mask : Utilise ou pas le masque de saisie
Reserve Llines: Evite la separation de Nlignes par une rupture de page.
Set left scroll-boundary (COULUMN) : 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
Structure d’un programme REPORT Séq. Instruction 1 REPORT 2 3 4 5 6 7 8 9 10
INCLUDE DE DONNEES PARAMETERS SELECT-OPTIONS INITIALIZATION AT SELECTION-SCREEN START-OF-SELECTION END-OF-SELECTION TOP-OF-PAGE END-OF-PAGE INCLUDE DE PROGRAMME
:', 50 p_comcli NO-ZERO COLOR 2.
Commentaire suivi du nom de report et éventuellement d’une classe de messages, ainsi que les commentaires d’entête du programme déclaration des tables, structures, variables, constantes, ranges, field-groups...
Evénement avant l’affichage des paramètres Evénement après saisie des paramètres Début des traitements Facultatif. Evénement survenant avant l’écriture de la première ligne d’une page Evénement survenant après avoir écrit la dernière ligne d’une page Contient l’ensemble des routines (FORM)
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 …. ENDFORM …. 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 Pour lancer une transaction à partir des valeurs des champs cachés de la ligne AT USER COMMAND sélectionnée véhiculés par les paramètres ID : CALL TRANSACTION ? Event after processing the user input on the selection screen, while the AT SELECTION selection screen is still active SCREEN 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). Event at which the logical database in use offers a line of the database table GET . GET LATE Event after processing all tables that are hierarchically inferior to the database table in the structure of the logical database in use. Event after processing all lines offered by the logical database in use END-OF-SELECTION Event during list processing when a new page starts. TOP-OF-PAGE
•
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 0 0 0
FRF FRF FRF FRF
BEF BEF DEM DEM
6.14447 6.13500 0.29833 0.29900
1 1 1 1
FR01 Country Template FR JS00 JSFR-Plan comptes ref JS01 JET SUD EST 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, write : at (w_col_piece) text-002 centered, write : at (w_col_socie) text-003 centered, write : at (w_col_creat) text-004 centered, write : at (w_col_date) text-005 centered, write : at (w_col_total) text-006 centered, write : at (w_col_fourn) text-007 centered, format color off. write at /1(w_largeur_etat) sy-uline.
sy-vline. sy-vline. sy-vline. sy-vline. sy-vline. sy-vline. sy-vline.
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 F6 F7 F8
ME23N FB03 KOB1 KSB1
Visualisation de... Visualisation de ... Postes individuel... 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
Positions
8 - 14
ME23N FB03 Comman
KOB1
KSB1
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 -Nouvelle ligne Encore une autre ligne ---3 lignes vides
ligne blanche
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 )
View more...
Comments