Vous êtes sur la page 1sur 178

Projet SIGIF

SAP NetWeaver Programming – ABAP Objects


FORMATION DES K-USERS, MINISTERE DES FINANCES, DAKAR, 10 avril 2017
AGENDA
Introduction
 Présentation du formateur
 Présentation du thème du jour

Présentation des objectifs de la formation


 Présentation des objectifs
 Liste des points à traiter durant la session

Déroulement de la formation
 Session du matin: cours et concepts + une pause café
 La pause déjeuner
 Session de l’après-midi: pratique dans le système

Conclusion
 Questions et réponses
 Évaluation de la formation
INTRODUCTION
PRESENTATION DU FORMATEUR

 AMZIL Mohamed EL Mehdi


 Domaine de compétences
• Consultant Technique SAP
• Consultant Senior SAP PI

 Formateur SAP pour les domaines suivants


• ABAP, ABAP OO, SAP PI

 Expérience projet
• Plus de 8 ans d’expérience sur divers projets
• 2 projets d’implémentation SAP from scratch
• Plus de 5 projets d’évolutions
• Une multitude de projets en TMA
Planning de la formation
Planning de la formation
• Jour 1
 Matinée : Rappel d’éléments ABAP
 Après midi : Exercices pratiques
• Jour 2
• Jour 3
• Jour 4
Planning de la formation
Planning de la formation
• Jour 1
• Jour 2
• Matinée :
• Vue générale
• Concepts
• Eléments de Syntaxe
• Composants
• Après midi
• Exercices pratiques
• Jour 3
• Jour 4
Planning de la formation
Planning de la formation
• Jour 1
• Jour 2
• Jour 3
• Matinée :
• Gestion des exceptions
• Concepts avancés
• ABAP Workbench
• Control framework (ALV Object…)
 Après midi
• Exercices pratiques
• Jour 4
Planning de la formation
Planning de la formation
• Jour 1
• Jour 2
• Jour 3
• Jour 4
• Matinée :
• BADIS
• Web Programming (BSP, Webdynpro..)
 Après midi :
• Exercices pratiques
PRESENTATION DU PROJET
LE PROJET

 SIGIF : Système Intégré de Gestion de l’Information Financière

• Système budgétaire et comptable pour les prévisions et exécutions du budget des


administrations publiques
• Gestion de la trésorerie
• Interfaçage avec les autres systèmes de gestion financière
ABAP
• Rappels
Rappels ABAP
Eléments de rappel :
• BAPI et modules de fonction RFC
• Tables internes
• Sorted tables
• Hashed tables
 Vues de table, création, modification et affichage
 Gestion des textes et traductions
 Gestions des autorisations
 Ecrans (Dynpros)
 Enhancements (Ajustement du strandard)
 Bonne pratiques de programmation
• Outis d’analyse de code
• Code inspector
Rappels ABAP
BAPI et modules de fonction RFC :
• Business Application Programming Interface

• Un BAPI est une interface définie contenant les traitements et les données d'un
système applicatif, implémenté comme les méthodes d'un objet du Business
Object Repository (BOR).
Rappels ABAP
BAPI et modules de fonction RFC :
• Un BAPI est une interface qui peut s'utiliser dans de nombreuses applications
Rappels ABAP
BAPI explorer:
• Permet d'afficher des informations complémentaires sur les objets de gestion et
les BAPI qui leur appartiennent
• Peut être lancé via la transaction « BAPI »
Rappels ABAP
Appel d’une BAPI depuis un programme ABAP:
 Directement appeler le module de fonction qui le comporte
 les informations relatives aux erreurs sont transférées au programme en utilisant
le paramètre d'interface RETURN
 Les modules de fonction BAPI ne contiennent pas d'exceptions ni de dialogues
utilisateur
 Leur fonction unique est d'encapsuler la logique applicative
Rappels ABAP
Tables internes:
Rappels ABAP
Tables internes:
• Les tables standard gèrent de manière interne un index linéaire. Ce type de table
peut être accédé en utilisant soit l'index de table soit des clés.
• Les tables triées sont triées selon la clé et sauvegardées. Un index linéaire est ici
aussi géré de manière interne. Ce type de table peut être accédé en utilisant soit
l'index de table soit des clés.
• Les tables d'adresses de calculs ne gèrent pas d'index linéaire de manière
interne. Vous pouvez seulement y accéder en utilisant des clés.
Rappels ABAP
Tables triées:
• Toujours sauvegardée correctement triée
• L’accès utilise une clé binaire
• Si cette clé n’est pas unique le système retient l’enregistrement avec l’index le
plus faible
• Le temps pour insérer un enregistrement est plus long que pour une table
standard puisque le système vérifie que le tri est correct après chaque insertion
Rappels ABAP
Les tables d'adresses de calculs :
 La table est gérée par une procédure interne de hashage
 Une table hashée est une collection d’enregistrements qui peuvent être adressés
grâce à une clé unique
 On ne peut pas utiliser d’index pour accéder à ce type de table
 Toutes les entrées ont une clé unique
 Le temps d’accès est constant quelque soit le nombre d’enregistrements.
 On ne peut y accéder qu’en utilisant les opérations génériques du type SORT, LOOP.
Les opérations avec accès implicites ou explicites aux index ne sont pas autorisées
(comme LOOP ... FROM ou INSERT itab avec un LOOP).
Rappels ABAP
Vues de table :
• Les vues s'appliquent à différentes tables du Dictionnaire ABAP
• Contiennent des zones issues d'une très grande table ou de plusieurs tables
Rappels ABAP
Contrôle des autorisations:
Rappels ABAP
Objets d’autorisations et autorisations:
Rappels ABAP
Insertion d'AUTHORITY-CHECK dans des programmes :
Rappels ABAP
Dynpro - Avantages:
Rappels ABAP
Dynpro - Utilisation:
Rappels ABAP
Dynpro – Composantes:
Rappels ABAP
Ajustement du standard:
Rappels ABAP
Extensions fonctionnelles:
Rappels ABAP
Types d’extensions:
• Exits de programme
• Les développeurs SAP ont inclus des exits en certains points des programmes
applicatifs pour vous permettre d'appeler des sections de vos propres programmes
• Extensions du Dictionnaire
• Append de table : vous permet d'ajouter des zones supplémentaires à des tables
standard
• Informations sémantiques des éléments de données : utilisation d'une extension
pour modifier la description ou la documentation d'une zone (F1, aide).
Rappels ABAP
Variantes
Rappels ABAP
Variantes
 Vous pouvez définir et stocker des variantes pour tout écran de sélection. Lancez le
programme et
 sélectionnez Variantes -> Sauvegarder comme variante.
 Les variantes facilitent l'utilisation des écrans de sélection grâce aux fonctions
suivantes :
• Pré-affectation de valeurs aux zones de saisie ;
• Masquage de zones de saisie ;
• Sauvegarde de ces paramètres en vue d'une réutilisation
 Une variante peut renvoyer à plusieurs écrans de sélection.
 Les variantes sont dépendantes du mandant.
 En cliquant sur l'icone Informations d'un écran de sélection, vous obtenez des
renseignements complémentaires sur les variantes.
Rappels ABAP
Textes de sélection
Rappels ABAP
Textes de sélection:
• Sur l'écran de sélection, le nom des variables figure à côté des zones de saisie.
• Vous pouvez les remplacer par des textes de sélection, que vous pouvez ensuite
traduire dans toutes les langues souhaitées.
• Les textes de sélection sont affichés dans la langue de travail de l'utilisateur
Rappels ABAP
Outils d’analyse du code:
• Code inspector
• Outil de vérification d’objets du repository
• Permet la vérification d’objets individuels ou de groupe d’objets
• Permet de lancer des inspections qui, grâce à des variantes d’inspection, examinent
un groupe d’objets
Rappels ABAP
Outils d’analyse du code:
• Code inspector
• Outil de vérification d’objets du repository
• Permet la vérification d’objets individuels ou de groupe d’objets
• Permet de lancer des inspections qui, grâce à des variantes d’inspection, examinent
un groupe d’objets
Rappels ABAP
Outils d’analyse du code:
• Code inspector
• Outil de vérification d’objets du repository
• Permet la vérification d’objets individuels ou de groupe d’objets
• Permet de lancer des inspections qui, grâce à des variantes d’inspection, examinent
un groupe d’objets
ABAP
• Exercices pratiques
Introduction à l’ABAP OBJECT
• La programmation orientée objet
La programmation orientée objet
Objectifs

 A l’issue de ce chapitre, vous devez être en mesure de :


• Expliquer la différence entre la programmation procédurale et la programmation
orientée objet
• Lister les avantages de la programmation orientée objet
La programmation orientée objet
ABAP

 Advanced Business Application Programming


 Langage de programmation propriétaire, ayant évolué à travers le temps
 Spécialisé dans les applications business

ABAP Objects

 Une extension orientée objet du langage ABAP


HISTOIRE
HISTOIRE
• La programmation orientée objet a été développée en même temps que la
programmation procédurale et logique
• Dans le passé, les langages comme COBOL, Pascal ou C étaient dominants dans
le développement d’applications business
• Avant la création d’ABAP, SAP utilisait un langage macro assembleur.
• Même aujourd’hui, les développeurs SAP ont plus l’habitude de travailler avec la
version procédurale d’ABAP plus que la version OO
La programmation orientée objet
Caractéristiques de la programmation procédurale
• Séparation entre les données et les fonctions
• Accès non encapsulé aux données
• Possibilité d’encapsuler les fonctions en utilisant la modularisation
La programmation orientée objet
Caractéristiques de la programmation procédurale
• Le programme principal contient les données tandis que les routines contiennent
les fonctions
• Les variables globales d’un programme sont accessibles par tous ses sous
programmes
• La programmation procédurale n’offre donc pas de possibilité de contrôle d’accès
aux données globales
• Encapsulation possible en utilisant les groupes de fonctions
• Encapsulation en utilisant les groupes de fonctions
• Supposons que nous souhaitons modéliser l’objet suivant en utilisant les groupes
de fonctions

• L’objet à un attribut speed et 4 fonctions permettant de le manipuler (Augmenter


vitesse, réduire vitesse, afficher vitesse
• Encapsulation en utilisant les groupes de fonctions
• La solution serait alors la suivante
• Encapsulation en utilisant les groupes de fonctions

• Le programme principal ne peut pas accéder à la variable speed, il ne peut la


modifier qu’en utilisant les modules de fonction offert
• Par contre il est impossible de gérer plusieurs instances de l’objet voiture
MODÈLE DE PROGRAMMATION ABAP
ABAP supporte un modèle de programmation Hybride

 Modèle de programmation objet basé sur les classes et les interfaces d’ABAP
Objects

 Un modèle procédural basé sur les appels de procédures et la gestion des


événements système

 Il existe une inter-portabilité entre les deux modèles, il est possible d’appeler les
procédures classiques à partir des méthodes
ABAP Objects
• Concept
PROGRAMMATION ORIENTÉ OBJET
• Caractéristiques
• Les objets sont des abstractions du monde réél
• Les objets sont constitués de données et de fonctions appartenant à ces données
• Les objets peuvent être implémentés réalistement
• Avantages de la programmation orientée objet
• Structure et consistance du processus de développement améliorés
• Temps de maintenance réduit avec réduction du risque d’erreurs
• Meilleurs implication de l’utilisateur dans l’analyse, le design et la maintenance
• Les options d’évolution sont simples et plus sécurisées
PROGRAMMATION ORIENTÉ OBJET
Abstraction
 Possibilité de refléter les processus tels qu’ils existent réellement
 Fonctionnement réel modélisé en classes et objets

Encapsulation
 Les détails de l’implémentation sont caches derrières des interfaces
 Permet de s’assurer que la représentation abstraite d’un objet est utilisée
uniquement en accord avec sa définition

Héritage
 Abstraction dérivées de spécifications existantes

Instanciation
 Permet de créer plusieurs instances d’une même classe
POURQUOI ABAP OBJECT ?
ABAP

 Permet d’avoir un style de programmation propre et sécurisé

 Procure les API essentielles (tel le Framework de contrôle) dans des classes
orientées objet

 La plupart des nouveaux produit SAP sont rédigés en ABAP orienté objet
BASES DE LA PROGRAMMATION OO

Qu’est-ce qu’une classe ?


 C’est le modèle ou le template

Qu’est-ce que des objets ?


 Ce sont des instances de classes

Différence entre classe locale et globale?


 La classe locale est créée dans tout le programme ABAP et est uniquement visible
dans ce dernier
 La classe globale est créée dans le «Class Builder» et peut être visible et utilisée
depuis tout programme ABAP
Introduction à l’ABAP OBJECTS
• Analyse et design en utilisant UML
Analyse et design en utilisant UML
Objectifs

 A l’issue de ce chapitre, vous devez être en mesure de :


• Connaître les plus importants types de diagrammes UML
• Créer des diagrammes de classes simples
• Créer des diagrammes d’objets simples
• Décrire les diagrammes de séquence
Analyse et design en utilisant UML
UML

 Langage de modélisation standardisé.


 Utilisé pour la spécification, la construction, la visualisation et la
documentation de modèles pour les systèmes d’information
 UML utilise un ensemble de types de diagrammes pour représenter
différentes vue du système, les plus significatifs sont
• Diagrammes de classe
• Diagrammes de comportement
• Diagrammes de composants
Analyse et design en utilisant UML
Diagramme de classe
• Une classe est représentée par un rectangle en UML
• Le nom de la classe est spécifié en haut puis viennent
les attributs et finalement les méthodes
 Les attributs décrivent les données stockées dans les objets
de la classe
 Les méthodes décrivent le comportement de la classe
Analyse et design en utilisant UML
Diagramme de classe
• Le diagramme de classe représente de manière statique les relations entre les
classes, les relations sont divisées en deux parties
• Les associations
• Les Généralisations / Spécialisations
• Les agrégations / Compositions
Analyse et design en utilisant UML
Diagramme d’objets
 Le diagramme d’objets est une photo prise lors de l’exécution d’un programme
 Décrit les instances des classes et les relations entre elles
Analyse et design en utilisant UML
Diagramme de séquence
 Utilisé pour décrire certains processus ou situations
 Décrit les moments de création et de suppression d’objets ainsi que les échanges
de messages entre les objets
ABAP OBJECTS
• Mots clés et syntaxe
DÉCLARER UNE CLASSE

CLASS class_name DEFINITION



Endclass.
CLASS class_name IMPLEMENTATION

ENDCLASS
DÉCLARER UNE CLASSE
VISIBILITÉ DES ATTRIBUTS D’UNE CLASSE

Public
 Tous les composants de cette section sont publics et peuvent être adressés par
toutes les sous classes, la classe elle-même ainsi que les autres classes externes

Protégé
 Les composants de cette section peuvent être adressés et utilisés uniquement
dans la même classe elle-même ou ses sous classes

Privé
 Peut uniquement être utilisé par les méthodes de la classe
DÉFINIR UNE SECTION DE VISIBILITÉ

CLASS class_name DEFINITION.


PUBLIC SECTION.
....
PROTECTED SECTION.
....
PRIVATE SECTION.
....
ENDCLASS.
CONTRÔLER L’INSTANTIATION

INSTANCIATION PUBLIQUE
 Permet à tout utilisateur de créer l’objet (par défaut)

INSTANCIATION PROTÉGÉE
 Permet la création des objets dans les méthodes des sous classes

INSTANCIATION PRIVÉE
 Seule la classe elle-même peut créer les objets
DÉFINITION DE L’INSTANTIATION

CLASS class_name
DEFINITION CREATE
PUBLIC | PROTECTED | PRIVATE.

ENDCLASS.
COMPOSANTS
LES COMPOSANTS D’UNE CLASSE

1. Attributs

2. Méthodes

3. Évènements
COMPOSANTS - ATTRIBUTS
Les attributs des composants

 Constituent les objets de données à l’intérieur d’une classe

 Tous les types de données de la hiérarchie ABAP peuvent être utilisés

 L’expression ‘DATA’ sont utilisés pour les attributs d’instance

 « CLASS-DATA » pour les attributs statiques


DÉCLARATION DES ATTRIBUTS

CLASS attributes DEFINITION.


PRIVATE SECTION.
DATA objectValue TYPE i.
CLASS-DATA objectCount TYPE i.
ENDCLASS.
COMPOSANTS – MÉTHODES
Les méthodes: instance vs statique

 Un bloc de traitement avec une interface de paramètres

 Toutes les données déclarées à l’intérieur de la méthode ont une portée locale

 Une méthode d’instance peut accéder à tous les attributs et les événements

 Une méthode statique peut uniquement accéder aux attributs et événements


statiques
DÉCLARATION D’UNE METHODE D’INSTANCE

CLASS class_name DEFINITION.


PUBIC SECTION.
METHODS meth
IMPORTING .. Ii TYPE type
EXPORTING .. Ei TYPE type ..
CHANGING .. Ci TYPE type ..
EXCETPIONS .. Ei
ENDCLASS.
DÉCLARATION DE MÉTHODES STATIQUES

CLASS class_name DEFINITION.


PUBIC SECTION.
CLASS-METHODS class_meth
IMPORTING .. Ii TYPE type
EXPORTING .. Ei TYPE type ..
CHANGING .. Ci TYPE type ..
EXCETPIONS .. Ei
ENDCLASS.
IMPLÉMENTATION DES MÉTHODES

CLASS class_name DEFINITION.


METHOD meth.

ENDMETHOD.
ENDECLASS.
COMPOSANTS – MÉTHODES
Deux méthodes remarquables

 Constructeur: appelé implicitement lors de chaque instanciation d’un nouvel


objet et exécuté par le « runtime environment »

 Class_constructor: premiers accès à une classe


DESTRUCTEURS
Aucun destructeur

 ABAP Objets n’offre aucun destructeur développement d’application


DÉCLARER DES VARIABLES EN RÉFÉRENCE
Pour créer et accéder à un objet, il est nécessaire de
déclarer une variable de type référence à la classe

 Syntaxe :

DATA ref TYPE REF TO class

Pour instanciation

 Syntaxe

CREATE OBJECT ref.


DIFFÉRENTS SÉLECTEURS
Pour accéder à un champs d’une structure

 Sélecteur de composant de structure « - »

Pour accéder à des composants d’objets

 Sélecteur de composant d’objet « -> »


 Sélecteur de composant de classe « => »
 Sélecteur de composant d’interface «~ »
UTILISATION DES MÉTHODES
Appeler une méthode d’instance:

 Syntaxe:

CALL METHOD oref->get_data.

Appeler une méthode de classe:

 Syntaxe:

CALL METHOD class=>get_data.


MÉTHODE FONCTIONNELLE
Méthode fonctionnelle

 Méthode avec un nombre quelconque de paramètres d’entrée mais ayant une


valeur de retour unique

 Peut être utilisée comme opérateur pour des fonctions et expressions


UTILISATION D’UNE MÉTHODE FONCTIONNELLE
La méthode fonctionnelle utilisée dans une expression:

 Syntaxe

IF obj->functional_method( ) = abap_true.
…… do some thing
ENDIF.
APPEL DE MÉTHODE

CALL METHOD oref->get_data.


CALL METHOD class=>get_data.

CALL METHOD oref->get_data


IMPORTING P1 = P1
RECEIVING P2 = P2.
APPEL DE MÉTHODE, FORME ABRÉGÉE

oref->get_data( ).
class=>get_data( ).

P2 = oref->get_data( P1 ).
Quizz
Questions
• Le développement orienté objet a été créé bien après les langages de
programmation classiques vrai ou faux ?
• Que veut dire l’instanciation multiple ?
• Que veut dire l’encapsulation ?
• Dans ABAP Objet que veut dire une classe ?
• Quelle est la différence entre un composant statique et un composant d’instance ?
• Dans ABAP Object que veut dire un constructeur ?
• Quand on définit une classe, est ce qu’on doit toujours définir un constructeur ?
Variables de référence spéciales

Self-référence

 Me

Référence à la super classe (utilisée dans l’appel de


méthode)

 Super
DÉCLARATION REPORTÉE DE CLASSE

CLASS - DEFERRED, LOAD

 Syntaxe

CLASS class DEFINITION


DEFERRED | LOAD.
DÉCLARATION REPORTÉE DE CLASSE
CLASS c1 DEFINITION DEFERRED.

CLASS c2 DEFINITION.
PUBLIC SECTION.
DATA c1ref TYPE REF TO c1.
ENDCLASS.

CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA c2ref TYPE REF TO c2.
ENDCLASS.

CLASS cl_gui_cfw DEFINITION LOAD.

DATA state LIKE cl_gui_cfw=>system_state.


COMPOSANTS - ÉVÈNEMENTS
Permet aux objets d’une classe de publier son statut,
d’autres objets peuvent répondre au changement de ce
dernier

1. Le déclencheur d’événement ne connait pas le gestionnaire


d’événements

2. Les déclencheur d’événement ne connait donc pas si cet événement


aura un effet

Mécanisme de publication et enregistrement (ex.


Broadcasting)
DÉCLENCHEUR ET GESTIONNAIRE

Déclencheur
Déclencheur 11
Génère
Génère un
un événement
événement
Gestionnaire1
Gestionnaire1

Déclencheur
Déclencheur 22
Génère
Génère un
un événement
événement
Gestionnaire
Gestionnaire 22
TERMES
Évènements

 Chaque méthode peut déclencher les évènements de sa classe

Méthodes gestionnaires

 Les méthodes peuvent être déclarées en tant que gestionnaires d’évènements

Enregistrement des gestionnaires

 Les objets pour un évènement peuvent être enregistrés, lors de l’exécution, en


tant que gestionnaires de classes qui peuvent générer l’évènement
DÉCLARATION DES ÉVÈNEMENTS

CLASS raising_class DEFINITION.


PUBLIC SECTION.
EVENTS: raised_event.
ENDCLASS.
PROPAGATION ÉVÈNEMENTS

CLASS raising_class IMPLEMENTATION.


METHOD raising_method.
RAISE EVENT raised_event.
ENDMETHOD.
ENDCLASS.
PROPAGATION ÉVÈNEMENTS
DÉCLARATION DE MÉTHODES GESTIONNAIRES

CLASS handler_class DEFINITION.


PUBLIC SECTION.
METHODS: handler_method FOR EVENT
raised_event OF raising_class.
ENDCLASS.
HANDLER METHODS

CLASS handler_class IMPLEMENTATION.


METHOD handler_method.
… some logics here
ENDMETHOD.
ENDCLASS.
ENREGISTRER GESTIONNAIRES

SET HANDLER
handler_instance->handler_method
FOR ALL INSTANCES.

SET HANDLER
handler_instance->handler_method
FOR handled_instance.
ENREGISTRER GESTIONNAIRES
ABAP OBJECTS
• Gestion des exceptions
Gestion des exceptions
Les exceptions sont

 Des évènements propagés lors de l’exécution d’un programme ABAP quand celui-
ci est interrompu parce qu’il est impossible de continuer son traitement d’une
manière convenable

 Traitables ou non traitables

3 types d’exceptions dans la pratique:

 Erreur d’exécution (Dumps)


 Exceptions avant la Release 6.10
 Class-Based Exceptions
ERREURS D’EXÉCUTION
Représente une exception qui n’a pas été gérée
data RESULT type I.
RESULT = 1 / 0.
Prise d’écran d’un dump
Exceptions avant la Release 6.10
Gestion des exceptions comme des erreurs d’exécutions
« captables »

data RESULT type I.


catch system-exceptions ARITHMETIC_ERRORS = 4.
RESULT = 1 / 0.
endcatch.
if SY-SUBRC = 4.
...
endif.
CLASS-BASED EXCEPTIONS
Gestion des exceptions en utilisant des classes d’exceptions

data MYREF type ref to CX_SY_ARITHMETIC_ERROR.


data ERR_TEXT type STRING.
data RESULT type I.
try.
RESULT = 1 / 0.
catch cx_sy_arithmetic_error into MYREF.
ERR_TEXT = MYREF->GET_TEXT( ).
endtry.
DÉLARATION DES EXCEPTIONS
Toutes les classes d’exceptions doivent hériter de la
superclasse CX_ROOT et une des ses sous classes:

 CX_STATIC_CHECK

 CX_DYNAMIC_CHECK

 CX_NO_CHECK
PROPAGATION DES EXCEPTIONS
Il suffit de rajouter l’expression RAISING à la déclaration
d’une méthode (routine):

 MÉTHODS meth… RAISING cx_...cx_...

 FORM form… RAISING cx_...cx_...


UTILISATION D’ABAP OBJECTS
• Concepts avancés
CONCEPTS AVANCÉS DE LA PROGRAMMATION

HÉRITAGE

INTERFACE

AMI
HÉRITAGE

Animal Superclasse
Généralisation

Sous-class
Spécialisation
Dog Cat
HÉRITAGE
HERITAGE
• Avantages
• Les relations de généralisation / spécialisation permettent, si utilisées
intelligemment, de réduire la redondance de code
• Les éléments communs aux classes ne sont stockés qu’une seule fois dans une
localisation centralisée
• Contraintes
• Il faut connaitre parfaitement la structure de la super classe pour décider si les
composants hérités sont suffisants pour la sous classe
• Il faut souvent adapter la super classe lors du rajout d’une sous classe.
HERITAGE
• Syntaxe de l’héritage
HERITAGE
• Propriétés de l’héritage dans ABAP object
• Pas de gestion de l’héritage multiple, une sous classe ne peut hériter que d’une
unique super classe
• Seuls les rajouts et modification d’attributs sont permis dans la sous classe, on ne
peut pas supprimer un élément de la superclasse dans une sous classe
• L’héritage est une relation à sens unique, la sous classe reconnait sa super classe
mais cette dernière ne connais pas toutes ses sous classes.
VISIBILITÉ DANS L’HÉRITAGE
Public

 Contient tous les composants publics de toutes les superclasses et ses propres
composants publics ajoutés

Protégé

 Contient tous les composants protégés de toutes les superclasses ainsi que ses
propres composants

Privé

 Contient ses propres composants privés. Adressé par ses propres méthodes.
REDÉFINITION DE MÉTHODE
Ré-implémenter la méthode de la superclasse. Dans la partie
déclaration de la classe:

 Syntaxe

METHODS meth REDEFINITION.


REDÉFINITION DE MÉTHODE
UP CAST
Up Cast
 Affectation entre deux variables de référence, quand le type statique de la variable
cible est similaire ou identique à celui de la variable source, comme l’affectation
d’un objet de type sous classe à un objet de sa super classe
Casting operator
= ou bien MOVE…TO…
Up Cast - Exmple
Up Cast - Exmple
Polymorphisme
 Dans notre code on ne fait que
boucler sur la table de véhicules et
appeler la même méthode
 Or selon le type de l’instance qu’on
utilise, la méthode correspondante
est appelée
 Le polymorphisme est l’un des
éléments qui montre la puissance
de l’héritage dans le
développement OO
DOWN CAST
DOWN CAST
 Une affectation entre deux variables de référence dans lequel le type statique de
la cible est plus spécifique que le type statique de la source
Casting operator
? = or MOVE…?TO…
DOWN CAST
Lors d’un down cast, toujours attraper l’exception suivante:
CX_SY_MOVE_CAST_ERROR
Classe abstraite et méhodes
La classe abstraite

 Est utilisée comme un modèle pour les sous classes sans besoin de l’utilisation (et
donc l’instanciation) d’objets de cette classe

 Syntaxe

CLASS class DEFINITION ABSTRACT.



ENDCLASS
MÉTHODE ABSTRAITE

CLASS class DEFINITION ABSTRACT.


PUBLIC SECTION.
METHODS: method ABSTRACT.

ENDCLASS.
CLASSES FINALES ET MÉTHODES
Concept utilisé quand on souhaite protéger une classe ou une
méthode d’une spécialisation non contrôlée

 Syntaxe de la classe finale:

CLASS class DEFINITION FINAL.



ENDCLASS

 Syntaxe de la méthode finale


CLASS class DEFINITION FINAL.
PUBLIC SECTION.
METHODS: method FINAL.
ENDCLASS
CONSTRUTEURS ET HÉRITAGE
Doit toujours tenir compte de la déclaration de la superclasse

METHOD constructor.
CALL METHOD super->constructor.
ENDMETHOD.
INTERFACE
Décrit la visibilité publique d’une section d’une classe donnée
dans une possibilité d’implémentation
Peut être définie localement ou globalement dans la
bibliothèque de classe
INTERFACES
Modélisation des interfaces dans les diagrammes UML
INTERFACE
Décrit la visibilité publique d’une section d’une classe donnée dans une
possibilité d’implémentation

Peut être définie localement ou globalement dans la bibliothèque de classe

Déclaration d’une interface


INTERFACE intf.
DATA …
CLASS-DATA ..
METHODS …
CLASS-METHODS …
EVENTS …
CLASS-EVENTS…
ENDINTERFACE.
IMPLÉMENTATION DES INTERFACES
Les interfaces sont intégrées uniquement dans la section de
visibilité publique d’une classe

CLASS class DEFINITION.


PUBLIC SECTION.

INTERFACES: intf1, intf2 …

ENDCLASS.
IMPLÉMENTATION DES INTERFACES
La classe doit implémenter toutes les méthodes de toutes les
interfaces incorporées dans sa partie d’implémentation

CLASS class IMPLEMENTATION.



METHOD intf1~ method…

ENDMETHOD.
ENDCLASS.
COMPOSITION DES INTERFACES

INTERFACE intf1.
METHODS meth.
ENDINTERFACE.
INTERFACE intf2.
INTERFACES intf1.
METHODS meth.
ENDINTERFACE.
COMPOSITION DES INTERFACES

CLASS class DEFINITION


PUBLIC SECTION
INTERFACES INTF2.

ENDCLASS.
CLASS class IMPLEMENTATION.
METHOD intf1~meth. … ENDMETHOD.
METHOD intf2~meth….. ENDMETHOD.
ENDCLASS.
ALIAS POUR LES COMPOSANTS

 Syntaxe

CLASS class DEFINITION.


PUBLIC SECTION.
INTERFACES intf.
ALIASES name FOR intf~comp.

ENDCLASS.
INTRFACES

 Syntaxe
ALIAS POUR LES COMPOSANTS
Exemple

 CALL METHOD oref~intf->method.

 CALL METHOD oref->alias.


AMI
Ajout de l’expression FRIENDS à l’expression CLASS

 Définit d’autres classes ou interfaces comme ami de cette dernière

 Garantit l’accès à leurs composants privés et protégés


AMI
EXEMPLE

INTERFACE i1.

ENDINTERFACE.

CLASS c1 DEFINITION CREATE PRIVATE FRIENDS i1.


PRIVATE SECTION.
DATA a1 TYPE c LENGTH 10 VALUE 'Class 1'.
ENDCLASS.

CLASS c2 DEFINITION.
PUBLIC SECTION.
INTERFACES i1.
METHODS m2.
ENDCLASS.
AMI
EXEMPLE

CLASS c2 IMPLEMENTATION.
METHOD m2.
DATA oref TYPE REF TO c1.
CREATE OBJECT oref.
WRITE oref->a1.
ENDMETHOD.
ENDCLASS.
AMI
ABAP OBJECTS
• ABAP Workbench
CLASS BUILDER
Les classes globales

 Elles sont crées dans l’outil Class Builder et visibles depuis tout le programme
ABAP

Les class builder

 Ce sont des outils de maintenance spécial de l’ABAP Workbench


CLASS BUILDER
T-code SE24 / SE80
UTILISATION D’ABAP OBJECT
• Transaction OO
TRANSACTION OO
Dans la gestion de transactions SE93, on peut définir une
transaction comme étant une transaction OO
TRANSACTION OO
ABAP OBJECTS - JAVA
• Pour développeurs JAVA
SIMILARITÉS ENTRE ABAP OO et JAVA
Comme JAVA,

 ABAP est un langage de programmation

 ABAP est OO

 ABAP tourne sur une machine virtuelle

 ABAP est la base de toute une technologie


SIMILARITÉS – OUTIL DE DEVELOPPEMENT
SIMILARITÉS – OUTIL DE DEVELOPPEMENT
SIMILARITÉS - CLASSES

 Mise a part les différences syntaxiques, ABAP supporte les classes aussi bien que
JAVA
 En ABAP, la déclaration et l’implémentation d’une classe sont séparés en deux
parts distinctes
SIMILARITÉS - CLASSES

 Mise a part les différences syntaxiques, ABAP supporte les classes aussi bien que
JAVA
 En ABAP, la déclaration et l’implémentation d’une classe sont séparés en deux
parts distinctes
SIMILARITÉS – IMPLÉMENTATIONS

Pour les opérations basiques, la syntaxe peut être presque être traduite en
« un à un »
 ”->” (ou ”-”) remplace ”.”, ”.” remplace ”;”, ”me” remplace ”this”
 En ABAP, les bloques sont délimités par des mots clés au lieu de {}
 La propagation des Exceptions est gérée de la même manière
SIMILARITÉS – EXCEPTIONS ET HÉRITAGE

 Les classes d’Exception doivent être dérivées de superclasses prédéfinies


 La déclaration de la super classe détermine la manière avec laquelle l’exception
est gérée
SIMILARITÉS – GESTION D’OBJETS EN JAVA
SIMILARITÉS – GESTION D’OBJETS EN JAVA
SIMILARITÉS – MOTS CLÉS 1
SIMILARITÉS – MOTS CLÉS 2
ABAP OBJECT
• Control Framework
Control Framework (CFW)

Dans SAP, il est possible d’utiliser ABAP pour contrôler les


application bureau (Custom controls).

La logique applicative tourne sur le serveur d’application SAP


qui conduit le contrôle personnalisé sur le frontend

Le Control Framework supporte les contrôles (ActiveX et


JavaBeans) qui sont implémentés dans SAP GUI
CFW – HTML Control
CFW – PICTURE CONTROL
CFW – ALV GRID CONTROL
ARCHITECTURE CONTROL FRAMEWORK
La classe GLOBAL est la bibliothèque de chaque contrôle GUI

 Lorsque l’on travaille avec les contrôles GUI, pour chaque objet sur le frontend, il
existe un objet proxy pour la classe correspondante dans les programmes ABAP.

La programmation ABAP fonctionne uniquement avec des


objets proxy
 Le CFW transfère ses appels de méthodes aux objets du contrôle GUI et informe
les objets ABAP en générant les évènements suite aux actions de l’utilisateur sur
le contrôle GUI
ARCHITECTURE CONTROL FRAMEWORK
ARCHITECTURE CONTROL FRAMEWORK
EXEMPLE – CONTROL FRAMEWORK
CONTRÔLES DE CONTAINERS

CL_GUI_CUSTOMER_CONTAINER

CL_GUI_DOCKING_CONTAINER

CL_GUI_SPLITTER_CONTAINER

CL_GUI_DIALOGBOX_CONTAINER
CONTRÔLES D’APPLICATION

CL_GUI_TOOLBAR

CL_GUI_PICTURE

CL_GUI_HTML_VIEWER

CL_GUI_TEXTEDIT

CL_GUI_SIMPLE_TREE

CL_GUI_ALV_GRID
ENJOY DEMO CENTER
T-code DWDM
ABAP OJECTS
• BAdIs
ENHANCEMENT EN UTILISANT BUSINESS ADD-
Les BAdIs (Business Add-Ins) sont les plus importantes
technologies utilisées pour adapter SAP aux besoins
spécifiques

Business Add-Ins: Architecture


IMPLÉMENTATION DES BUSINESS ADD-INS
ABAP OBJECTS
• ALV GRID Control
ALV GRID Control
ALV GRID Control
Utilité
• Affichage de listes non hiérarchiques
• Contient un ensemble d’objets interactifs standards
ALV GRID Control
ETAPES
• Créer un objet de type : CL_GUI_CUSTOM_CONTAINER
• Créer un objet de type : CL_GUI_ALV_GRID
• Ajouter les données à votre table (APPEND)
• Appeler l’écran qui contient la grille : CALL SCREEN <N° ECRAN>
• CREATE OBJECT <NOMCONTAINER> EXPORTING
• CONTAINER_NAME =
• CREATE OBJECT <NOMGRILLE> EXPORTING
• I_PARENT = <NOMCONTAINER>
• CALL METHOD <NOMGRILLE>->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING
• IT_OUTTAB = <NOM_TABLE_INTERNE>
ABAP OBJECTS
• Web Programming
WEB PROGRAMMING

BSP

Web Dynpro for ABAP

Custom HTTP Handler Class


QUESTIONS ET RÉPONSES

Q&R
Merci de votre attention