book abap_site integration

Upload: may06

Post on 20-Jul-2015

137 views

Category:

Documents


0 download

TRANSCRIPT

B-INTEGRATION.NET

B-BOOK: LA REFERENCE DE B-INTEGRATION.NET SAP ET .NET POUR LES DEVELOPPEURSAUTO-FORMATION A ABAP.

Mention lgale : Les marques SAP, ABAP, WEBDYNPRO sont la proprit de la socit SAP.

VERSION : 0.0.2 : AJOUT SELECTION-SCREEN AVANC ET MATHAuteur(s) : Jrme Fortias (tout sauf) ( Celdron ) ->Selection-screen avanc.en cours dintgration. Correcteurs : Adil ZERROUKI. (correction en cours dintgration)

CONTENUPARTIE N1 : SAP ..................................................................................................................................................... 9 Introduction ............................................................................................................................................................ 9 HELLO WORLD EN ABAP .......................................................................................................................................... 9 Les variables .......................................................................................................................................................... 14 Premier programme : VARIABLE INTEGER ........................................................................................................ 15 Une modification amusante : AUTOBOXING..................................................................................................... 15 Dclaration de plusieurs variables en une seule ligne ...................................................................................... 16 Liste des diffrents types techniques en ABAP ................................................................................................. 16 Types textes .................................................................................................................................................. 16 Types numriques. ........................................................................................................................................ 17 Les structures. ............................................................................................................................................... 17 Types mtiers SAP : ........................................................................................................................................... 19 Types mtiers : .............................................................................................................................................. 19 Types drivs des tableaux ........................................................................................................................... 20 Bonne Pratique ............................................................................................................................................. 21 Les bases du langage ABAP ................................................................................................................................... 22 ABAP IF / ELSE / ELSEIF / ENDIF ......................................................................................................................... 22 IF et les oprateurs ........................................................................................................................................... 23 Les boucles en ABAP : DO. ................................................................................................................................ 24 Les boucles en ABAP : WHILE. ........................................................................................................................... 24 Le switch en ABAP : CASE / WHEN / ENDCASE.................................................................................................. 25 Le Foreach en ABAP : Le LOOP ... AT ................................................................................................................. 25 COMMENTAIRES EN ABAP. ............................................................................................................................... 25 ABAP Fonctions et sous-routines .......................................................................................................................... 26 ABAP - FORM / PERFORM : ............................................................................................................................... 26 ABAP - Les fonctions :........................................................................................................................................ 28 Cration d'un groupe de fonction ABAP ....................................................................................................... 28

Etape n2 : Cration d'une fonction en ABAP ............................................................................................... 30 Appeler sa fonction depuis un programme ABAP (ou une autre fonction). ................................................. 35 A propos des BAPI SAP : .................................................................................................................................... 36 Conclusion ......................................................................................................................................................... 37 ABAP : Tables et SQL ............................................................................................................................................. 38 Cration de Ztable avec SE11 ............................................................................................................................ 38 Le scnario (notre table Z) : .............................................................................................................................. 38 Dmarrage de la transaction SE11 : .................................................................................................................. 38 Cration de la table ........................................................................................................................................... 39 Cration des champs de la table Z SAP ............................................................................................................. 40 Paramtrages techniques de la table sur SAP ................................................................................................... 42 Utilisation de la table avec SE16 ....................................................................................................................... 44 Utilisation de la table avec SE16N ..................................................................................................................... 45 INITIATION A ABAP SQL ......................................................................................................................................... 47 SQL - Exercice N1 : Lecture de donnes........................................................................................................... 47 SQL Exercice N2 : Lecture avec chargement dans un "dataset". ..................................................................... 47 SQL Exercice N3 : Utilisation de la condition WHERE. ..................................................................................... 48 Combinaison de conditions ............................................................................................................................... 49 SQL Exercice N4 : Tri de la slection avec ORDER ............................................................................................ 49 SQL Exercice N5 : SY-DBCNT ............................................................................................................................ 50 SQL Exercice N6 : SY-SUBRC ............................................................................................................................. 50 SQL Exercice n7 : Insertion de donnes. .......................................................................................................... 51 SQL Exercice N8 : Ajout de plusieurs lignes ..................................................................................................... 52 SQL Exercice N9 : Mise jour de donnes (UPDATE). ..................................................................................... 53 Exercice N10 : Suppression de donnes .......................................................................................................... 54 Optimisation avec SE30 ..................................................................................................................................... 55 ABAP SQL AVANCE ................................................................................................................................................ 56 AJOUT LIGNE PAR LIGNE ................................................................................................................................... 56 Ajout de plusieurs lignes via une table intermdiaire ....................................................................................... 56

Utilisation de MODIFY ........................................................................................................................................... 58 UTILISATION DE CURSOR ...................................................................................................................................... 58 OPTIMISATION (SUITE) .......................................................................................................................................... 60 NATIVE SQL vs OPEN SQL : .................................................................................................................................... 60 SQL et ANALYSE DES DIFFERENTES STRATEGIES ................................................................................................... 61 Stratgie n1 : Couples table interne + work area imbriqus. .......................................................................... 61 Stratgie n2 : On slectionne toutes les colones avec l'utilisation de SELECT-ENDSELECT. ........................... 61 Stratgie n3 : On ne slectionne que les champs qu'on dsire dans une structure entire ........................... 62 Stratgie n4 : Utilisation d'une table interne et d'un FOR ALL ENTRIES IN...................................................... 63 Stratgie n 5 : Utilisation d'une fonction SUM ................................................................................................ 63 Stratgie n6 : Utilisation d'un INNER-JOIN et d'une fonction SUM. ................................................................ 64 Stratgie n7 : ALternative propose par sebastien ........................................................................................... 64 Conclusion : Tout dpend des serveurs. ........................................................................................................... 64 Selection-Screen.................................................................................................................................................... 66 Exercice 1 : Un premier selection-screen. ......................................................................................................... 66 Exercice 2 : Des valeurs par dfaut ................................................................................................................... 68 Renommez le nom des champs ........................................................................................................................ 69 Ajoutez des boutons RADIO .............................................................................................................................. 70 Selection-screen avanc........................................................................................................................................ 71 Rendre des zones non-saisissables. .................................................................................................................. 72 Rendre des zones invisibles ............................................................................................................................... 73 Rendre des zones obligatoires ou non-obligatoires .......................................................................................... 74 A SUIVRE. ........................................................................................................................................................ 79 Cration dcran .................................................................................................................................................... 79 Amlioration de linterface des crans ............................................................................................................. 88 Introduction aux mathmatiques sur SAP en ABAP : ............................................................................................ 92 Un type de donne idal ................................................................................................................................... 93 Des fonctions pour manipuler des nombres en ABAP (dcimal) ...................................................................... 93 Fonctions pour les nombres flottants en ABAP sur SAP ................................................................................... 93

ABAP contre C# ................................................................................................................................................. 94 Quelle stratgie choisir ?................................................................................................................................... 95 Annexe : Sites web ................................................................................................................................................ 95 ANNEXE : Trucs et actuces .................................................................................................................................... 96 Les champs SY- .................................................................................................................................................. 96 Une popup pour une saisie dheure .................................................................................................................. 96 Afficher un XML ................................................................................................................................................. 97 ABAP IF IN RANGE ............................................................................................................................... 97 ABAP Grer un dlais ..................................................................................................................................... 97 ABAP POPUP ABAP ............................................................................................................................................ 98 ABAP ALVGRID Simple .................................................................................................................................... 99 Partie 2 : C# et bonne pratique ................................................................................. Error! Bookmark not defined. Introduction .............................................................................................................. Error! Bookmark not defined. Manipulation de caractres et de chaines de caractres : ................................... Error! Bookmark not defined. Obtenir un caractre par son numro UNICODE .............................................. Error! Bookmark not defined. Caractres spciaux .......................................................................................... Error! Bookmark not defined. Insertion de variable dans une chaine de caractres ........................................ Error! Bookmark not defined. Manipulation de NOMBRES .................................................................................. Error! Bookmark not defined. Types de donnes ............................................................................................. Error! Bookmark not defined. Suffixe pour les nombres .................................................................................. Error! Bookmark not defined. Constante .......................................................................................................... Error! Bookmark not defined. Contler une valeur .......................................................................................... Error! Bookmark not defined. Oprateurs mathmatique ............................................................................... Error! Bookmark not defined. Conversion de types de donnes ...................................................................... Error! Bookmark not defined. Instructions de contrle ........................................................................................ Error! Bookmark not defined. IF (SI).................................................................................................................. Error! Bookmark not defined. Switch (slection) .............................................................................................. Error! Bookmark not defined. Itration avec un While ..................................................................................... Error! Bookmark not defined. Itration avec un do + while .............................................................................. Error! Bookmark not defined.

InStruction FOR ................................................................................................. Error! Bookmark not defined. Utilisation dtiquettes et de goto .................................................................... Error! Bookmark not defined. Les patterns essentiels .............................................................................................. Error! Bookmark not defined. Le singleton ........................................................................................................... Error! Bookmark not defined. Introduction au singleton en c# : ...................................................................... Error! Bookmark not defined. Le concept de base du singleton ....................................................................... Error! Bookmark not defined. Quand utilisez un singleton ? ............................................................................ Error! Bookmark not defined. Le snippet de base d'un singleton multitreadable ............................................ Error! Bookmark not defined. Code exemple d'un singleton c# multitreadable .............................................. Error! Bookmark not defined. Conclusion ......................................................................................................... Error! Bookmark not defined. Le pattern MVP ......................................................................................................... Error! Bookmark not defined. Introduction au pattern MVP en C# .................................................................. Error! Bookmark not defined. Etape n1 : crons notre page web en webform .............................................. Error! Bookmark not defined. Etape n2 : Crons notre modle ...................................................................... Error! Bookmark not defined. Etape n3 : Crons notre prsentateur et son interface. .................................. Error! Bookmark not defined. Etape n4 : Intgration de notre prsentateur dans notre interface utilisateur............. Error! Bookmark not defined. Conclusion ......................................................................................................... Error! Bookmark not defined. NHIBERNATE laccs aux bases de donnes .............................................................. Error! Bookmark not defined. Introduction NHibernate : .................................................................................. Error! Bookmark not defined. Prrequis : ............................................................................................................. Error! Bookmark not defined. Premier exercice .................................................................................................. Error! Bookmark not defined. Etape n1 : Crons un projet nhibernate FirstApplication (application console) et ajoutons nos dlls......... Error! Bookmark not defined. Etape n2 : Crons notre modle de donne ........................................................ Error! Bookmark not defined. Etape n3 : Crons un mapping. ............................................................................ Error! Bookmark not defined. Etape n4 : Crons notre base de donnes. .......................................................... Error! Bookmark not defined. Etape n5 : Crons notre configuration la base de donnes. ............................. Error! Bookmark not defined. Etape n6 : Crons et lisons un record .................................................................. Error! Bookmark not defined. Second exercice ........................................................................................................ Error! Bookmark not defined.

Etape n1 : Modifions le config.cs ......................................................................... Error! Bookmark not defined. Etape n2 : Lisons le contenu de la table avec NHibernate ................................... Error! Bookmark not defined. Etape n3 : Ecrivons la mthode Create. ............................................................... Error! Bookmark not defined. Etape n4 : Ecrivons la mthode Update............................................................... Error! Bookmark not defined. Etape n5 : Ecrivons la mthode Read. ................................................................. Error! Bookmark not defined. Etape n6 : Ecrivons la mthode Delete. ............................................................... Error! Bookmark not defined. Etape n7 : Ecrivons la mthode DiplayAllPersons. ............................................... Error! Bookmark not defined. Etape n8 : Jouons maintenant. ............................................................................ Error! Bookmark not defined. conclusion ............................................................................................................ Error! Bookmark not defined. Castle windsor ........................................................................................................... Error! Bookmark not defined. Introduction Castle Windsor en C# .................................................................... Error! Bookmark not defined. Objectif du tutorial ................................................................................................ Error! Bookmark not defined. Etape n1 : Crons un webform avec .net 3.5 standard ....................................... Error! Bookmark not defined. Etape n2 : Crons nos interfaces et implmentations. ........................................ Error! Bookmark not defined. Etape n3 : Crons notre classe main ................................................................... Error! Bookmark not defined. Etape n4 : Appelons la classe main depuis le bouton de notre webform ........... Error! Bookmark not defined. Etape n5 : Crons un jeu de test .......................................................................... Error! Bookmark not defined. Conclusion ............................................................................................................. Error! Bookmark not defined. Tlchargement du tuto ....................................................................................... Error! Bookmark not defined. Liens relatifs Windsor Castle C# : .......................................................................... Error! Bookmark not defined. ERP Connect les bases du connecteur SAP.net ......................................................... Error! Bookmark not defined. Le dveloppeur et sa socit ...................................................................... Error! Bookmark not defined. Le produit .......................................................................................................... Error! Bookmark not defined. Prambule ......................................................................................................... Error! Bookmark not defined. Exemple n1 : BAPI_EMPLOYEE_GETDATA ........................................................... Error! Bookmark not defined. Exemple n2 : L'envoi d'iDoc. ................................................................................ Error! Bookmark not defined. Exemple n3 : RFC Server ...................................................................................... Error! Bookmark not defined. Impact sur les licenses utilisateurs SAP ................................................................. Error! Bookmark not defined. Conclusion ............................................................................................................. Error! Bookmark not defined.

C# et programmation rseau .................................................................................... Error! Bookmark not defined. Introduction la programmation rseau en C# .................................................... Error! Bookmark not defined. Lire un fichier XML .................................................................................................... Error! Bookmark not defined. Initiation c# XmlDocument ........................................................................ Error! Bookmark not defined. Chercher un noeud spcifique .............................................................................. Error! Bookmark not defined.

PARTIE N1 : SAP INTRODUCTIONCela fait plusieurs annes que je travaille dans le monde ABAP et que jessaie daider mes contemporains avec plus ou moins de succs dcouvrir le monde SAP via le site web http://www.sap-integration.net devenue http://www.b-integration.net. Peut-tre par orgueil, ou par dfi, je dbute avec ce projet un nouveau projet. Celui dcrire avec plusieurs dveloppeurs un livre complet couvrant le plus de sujets possibles dans le domaine du dveloppement SAP. Une sorte de rfrence qui serait continuellement en construction et en volution avec laide de la communaut que jai cr. Bien sur il sagit dabord de commencer par le dbut. LABAP OLD SCHOOL.

HELLO WORLD EN ABAPJe vous propose ici en prambule de ma srie de tuto consacrs ABAP, un premier tuto qui a pour objectif de dcouvrir l'interface de dveloppement SAP et de lever le voile sur un environnement spcifique avec sa logique propre. On se connecte SAP

L'cran SAP EASY ACCESS apparait... Dans la case en haut droite sous Menu tapez SE38 pour lancer l'environnement de programmation ABAP

L'cran SE38 apparait. Il permet d'accder aux sources des programmes. Tapez dans la case Program ZTUTO01 puis appuyez sur le bouton CREATE.

Un premire popup s'affiche... Slectionnez Excutable program ne remplissez pas les autres champs... Puis cliquez sur le bouton SAVE.

Une seconde popup apparait permettant d'informer le package ...et d'autres lments lis aux mcanismes de dploiement sur SAP. Dans notre cas notre application ne sera pas transport mais uniquement en local....Cliquez donc sur le bouton Local Object...

La fentre d'dition apparait

Le programme est vide... Remarquez le point (.) sur la mme ligne que REPORT ZTUTO01... Votre code devra tre insr la ligne suivante. Faites attention ne pas effacer ce point. Par contre vous pouvez supprimer l'espace entre ZTUTO01 et le point. Nous allons maintenant taper le code suivant

La fonction WRITE permet d'crire un texte ou un ensemble de textes et de variables la faon un printf en C, ou d'un println en Java...

Sur SAP, comme sur d'autres environnements on peut compiler et sauvegarder un programme. Dans le monde SAP on ne parle pas de compilation, mais d'activation. Une activation est une procdure un peu plus complte qu'une compilation, car elle intgre aussi bien la compilation que le dploiement et la gestion des autorisations. On peut ainsi dvelopper des programmes transportables (dployable sur d'autres systmes SAP comme un systme de test ou un systme de prod) ou dvelopper des programmes uniquement en local. Pour activer le programme sur la barre d'outil cliquez sur le bouton

Vous devez obtenir l'cran suivant.

Notez qu'en bas le texte Object activated est visible !!! Puis on teste son programme. Sur la barre d'outils cliquez sur L'cran suivant apparait...Votre Hello world fonctionne (OK c'est le programme le plus basic de la terre mais bon, c'est une tradition pour moi)...

LES VARIABLESComme tous les langages ABAP supportent diffrents types de variables. Mais le plus du langage ABAP comme SAP est d'tre orient surtout mtier. C'est dire que par exemple, un integer utiliser par exemple pour indiquer le nb d'article aura son propre type, et c'est le cas de l'ensemble des variables de SAP. Le but de cette premire leon est de faire le tour des diffrents types techniques, mais aussi de dcouvrir l'approche mtier de la dclaration de variables en ABAP.

PREMIER PROGRAMME : VARIABLE INTEGERDans ce premier programme, nous ralisons une addition. Simple et facile.

Notez que l'affectation se fait via un '=' et que la dclaration se fait via Data.

UNE MODIFICATION AMUSANTE : AUTOBOXINGNous allons maintenant dcouvrir une capacit amusante dABAP, avec ce second exemple.

Comme vous le voyez la variable unsecondentierquiestunstring (long comme nom hein ?) n'est pas un entier mais une chaine de caractre. ABAP autorise l'addition entre un entier et une chaine de caractre de manire implicite condition que cette chaine de caractre soit convertissable en entier. Vous noterez que l'affectation d'une chaine de caractre se fait avec un signe = et avec une valeur mise entre quote ' et non pas entre guillemet comme en Java ou C#.

DCLARATION DE PLUSIEURS VARIABLES EN UNE SEULE LIGNEEn ABAP il est possible de dclarer plusieurs variables en une seule ligne. Si on reprend l'exemple prcdent voil ce que cela donne.

Dans ce cas nous utilisons le mot Data avec un double point Data: et chaque variable est spare par une virgule.

LISTE DES DIFFRENTS TYPES TECHNIQUES EN ABAP TYPES TEXTESChaine de caractre dfinie en taille (type C). Dclaration : Data chaineTexte(x). Note : x tant le nombre de caractre. 65535 caractres max. Chaine de caractre non dfini en taille (type string). Dclaration : Data chaineTexte type string. Note : Le pointeur est un integer 32 bits. Date (type D). Dclaration : Data madate type D. Note : Le format de la date est de type AAAAMMJJ. pour initialiser une variable la date du jour il suffit d'appeler la valeur DATUM dans le tableau SY. madate = sy-datum. Texte numrique (type N). Dclaration : Data monnombre type N.

Note : Ce type est utilis pour stocker des nombres sous forme de chaine de caractres comme, par exemple, des numeros de clients, ou de commandes. Heure (type T). Dclaration : Data horaire type T. Note : Ce type est construit avec le partern HHMMSS (heures+minutes+secondes). TYPES NUMRIQUES. Entier (type I). Dclaration : Date compteur type i. Note : nombre entier sur 32 bits. Flottant (type F). Dclaration : Date valeurmathematique type F. Note : nombre flottant cod sur 8 octets. Packed Number (type P). Dclaration : Date monnombre type P. Note : Valeur sur 8 octets. Le type Packed est un numrique avec virgule mais la virgule est position fixe, c..d que le nombre de digits aprs la virgule est fixe et non variable. LES STRUCTURES. Comme d'autres langages ABAP permet de crer des structures. C'est simple est trs utile (on y reviendrat sur le cour consacr aux tableaux.

Quand vous lancez le programme ... vous avez ceci ...

Voir aussi http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb2fcc358411d1829f0000e829fbfe/content.htm ou http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb2fd9358411d1829f0000e829fbfe/content.htm

TYPES MTIERS SAP : TYPES MTIERS :Comme j'aime le rpter SAP est avant orient business. C'est pour cela qu'il est important de comprendre la notion de dictionnaire (accessible via la transaction SE11) qui fait le lien entre un le domaine associ le concept au sens smantique et le type technique. Ainsi quand on manipule une variable correspondant au numro de matriel dans MM, on n'utilise pas un digital de 18 caractres, mais un MATNR. On dclarera notre variable comme cela : Data monnumerodematos type MATNR. Il est possible d'accder au type et de crer ses propres type via la transaction SE11. Exemple : ici nous consultons le type MATNR. Etape 1 : On lance la transaction SE11.

Etape 2 : On saisit MATNR dans la transaction

Puis on clique sur Display ... ou F7

De l vous pouvez allez sur les onglets Attributes Further characteristics ou Field Label...

TYPES DRIVS DES TABLEAUXL'une des autres plaisantes possibilits d'ABAP est que lorsqu'on manipule un tableau on peut rcuprer un type d'un champs du tableau trs simplement. Par exemple, si on souhaite crer une variable du mme type que le champs TRDAT (dernier logon) de la table USR02 il suffit de faire la dclaration suivante : Data dernierlogon like USR02-TRDAT. Dictionnaire montrant la structure du tableau USR02.

Reste que cette pratique ncessitant de dclarer aussi le tableau est de plus en plus remplac par une dclaration utilisant un type inscrit directement dans le dictionnaire.

BONNE PRATIQUEQuand on dveloppe des applications, il est fortement conseill de crer de nouveaux types de data lment dans le dictionnaire. Non seulement cela donne un sens smantique aux variables qu'on utilise, mais en plus le travail de prparation amliore et l'analyse et la comprhension du travail qu'on a faire. En rsum sauf exception comme les indicateurs de boucle ou les compteurs il est fortement dconseill d'utiliser des types techniques.

LES BASES DU LANGAGE ABAPTous les langages sont construits sur des instructions de boucles et de conditions. Ce sont ces instructions que nous allons dcouvrir. On retrouve en gnral dans tous les langages les mmes types de test (if, case, for, ...) Ce sont ces fonctions que nous allons explorer.

ABAP IF / ELSE / ELSEIF / ENDIFIf permet de conditionner l'excution du bloc de code en fonction d'un test

Dans ce cas on teste si le champ valeur est gal au caractre X. Le code entre le IF et ELSE est excut uniquement si le test valeur = 'X' est vrai. Le code entre ELSE et ENDIF est excut uniquement si le test valeur = 'X' est faux. Parfois on a besoin de faire plusieurs tests avant d'avoir une action par dfaut (ELSE), pour cela on utilise le ELSEIF. Voici un exemple avec un ELSEIF. Note :Les if sont utiliss pour conditionner l'excution d'un code. Mais il est souvent trs intressant d'imbriquer des if les uns dans les autres. L'utilisation du ELSEIF permet de tester d'autres conditions, mais si les conditions s'appliquent la mme variable ( if monchar = 'a'. else if monchar = 'b'. (etc)... endif.) il est prfrable d'utiliser un CASE...

IF ET LES OPRATEURSIl est possible de combiner des tests avec AND (les deux conditions doivent tre vraies) ou OR (au moins une condition doit tre vraie). de plus les oprateurs de tests sont : = gale < infrieure > suprieure ne diffrent on peut bien sur combiner => et