Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Apprendre à programmer avec ABAP
  3. Création d'un programme ABAP
Extrait - Apprendre à programmer avec ABAP Les fondamentaux du développement sur SAP (avec exercices et corrigés)
Extraits du livre
Apprendre à programmer avec ABAP Les fondamentaux du développement sur SAP (avec exercices et corrigés) Revenir à la page d'achat du livre

Création d'un programme ABAP

Écran de sélection

Dans ce chapitre, un exemple plus complexe sera développé avec l’affichage de données dans un rapport ALV.

Pour commencer, il serait intéressant de connaître l’écran de sélection. Il s’agit de l’écran d’accueil permettant à l’utilisateur d’insérer des données utilisées pour filtrer les sélections qui se feront plus tard dans le programme.

Exemple d’écran de sélection sans mise en forme du programme DEMO_SELECTION_SCREEN_EVENTS.

images/10RI01.png

Il existe des exemples de programmes mis à disposition par SAP et ils commencent en général par DEMO_. Sur SAP, pour afficher une liste à partir de mots-clés, il suffit d’appuyer sur la touche [F4] une fois ce mot-clé renseigné.

Exemple

Connaître la liste de tous les programmes commençant par DEMO_ :

 Exécutez la transaction SE38 (dans le cas d’une recherche d’un nom de programme).

 Dans la zone Programme, renseignez DEMO_* signifiant qu’on recherche tous les noms de programmes commençant par DEMO_ suivi d’une chaîne de caractères (symbolisée par ’*’) ;

images/10RI02.png

 Appuyez ensuite sur [F4] ou le bouton d’aide à la recherche du champ images/10RI03.png.

 La liste des programmes va alors s’afficher, il suffira de double cliquer dessus pour pouvoir y accéder.

images/10RI04.png

Pour revenir à l’écran de sélection, il est bien sûr possible de le rendre plus lisible et mieux organisé.

Exemple

Écran de sélection du programme de modification des documents de livraison (transaction VL22).

images/10RI05.png

Il sera vu dans cette section les principales options utilisées pour la création d’un écran de sélection simple.

1. Les champs

a. Sélection multiple

SELECT-OPTIONS


SELECT-OPTIONS selcrit FOR dobj  
       [OBLIGATORY]  
       [DEFAULT val]  
       [MATCHCODE OBJECT search_help].
 

Le SELECT-OPTIONS permet de définir une plage de sélection pouvant aller d’une valeur unique à un intervalle de valeurs (inclusion comme exclusion).

L’instruction SELECT-OPTIONS est suivie du nom de la variable (sur au maximum huit (8) positions), puis le FOR fait référence...

Rapport ALV

Dans cette partie, un exemple plus concret sera réalisé pas à pas et pour cela, les étapes spécifiées au chapitre Qu’est-ce que la programmation ? seront suivies, comme si un besoin avait été relevé par un client et une demande spécifiée par un fonctionnel.

1. La demande

La demande suivante est parvenue via un document fonctionnel : créer un rapport de type ALV listant tous les voyages de la table ZTRAVEL. Il devra comporter les champs suivants :

Zones Rapport ALV

Désignation

Table

Champ

Date du voyage

ZTRAVEL

DATE_TRAVEL

Ville de départ

ZTRAVEL

CITY_FROM

Pays de départ

ZTRAVEL

COUNTRY_FROM

Ville d’arrivée

ZTRAVEL

CITY_TO

Pays d’arrivée

ZTRAVEL

COUNTRY_TO

Nom et prénom du conducteur

ZDRIVER_CAR

SURNAME NAME

Marque du véhicule

ZDRIVER_CAR

CAR_BRAND

Modèle du véhicule

ZDRIVER_CAR

CAR_MODEL

Nom et prénom du 1er passager

ZPASSENGER

SURNAME NAME

Nom et prénom du 2e passager

ZPASSENGER

SURNAME NAME

Nom et prénom du 3e passager

ZPASSENGER

SURNAME NAME

Distance parcourue

ZTRAVEL

KMS

Unité distance

ZTRAVEL

KMS_UNIT

Péage

ZTRAVEL

TOLL

Essence

ZTRAVEL

GASOL

Unité coûts

ZTRAVEL

UNIT

L’écran de sélection devra permettre de filtrer la sélection selon :

1.

La date du voyage (ZTRAVEL-DATE_TRAVEL) - Intervalle de valeurs.

2.

La ville de départ (ZTRAVEL-CITY_FROM) - Intervalle de valeurs.

3.

La ville d’arrivée (ZTRAVEL-CITY_TO) - Intervalle de valeurs.

Aucune zone n’est obligatoire.

2. L’analyse

Toutes les informations nécessaires sont renseignées, à savoir le point de départ (détail des zones de l’écran de sélection), le but du développement ainsi que les champs avec leur référence, à afficher dans le rapport ALV.

Parfois, apparaissent aussi les liens entre les tables comme :

  • Lien des clés de table pour la recherche des nom et prénom du conducteur :

    ZTRAVEL-ID_DRIVER = ZDRIVER_CAR- ID_DRIVER

  • Lien des clés de table pour la recherche des nom et prénom du passager :

    ZTRAVEL-ID_PASSENGER1 = ZPASSENGER-ID_PASSENGER

    ZTRAVEL-ID_PASSENGER2 = ZPASSENGER-ID_PASSENGER

    ZTRAVEL-ID_PASSENGER3 = ZPASSENGER-ID_PASSENGER

Avec cette demande reçue, il faudra créer les objets...

Organisation finale du programme

Dans cette section, le programme développé précédemment va être réécrit afin de l’organiser dans des includes et des routines.

Par exemple, il serait possible de créer deux includes :

  • Le premier (nommé ZALV_TRAVEL_TOP) contiendrait toutes les déclarations de variables ainsi que l’écran de sélection.

  • Le deuxième (ZALV_TRAVEL_F01) comprendrait toutes les routines du programme. Ces routines pourraient être au nombre de deux.

  • Une pour la sélection des données (nommée F_SELECT_DATA).

  • Une autre pour la création et l’affichage du rapport ALV (F_ALV_DISPLAY).

En tout début de programme, les deux includes seront créés grâce à l’instruction INCLUDE


*&--------------------------------------------------------------* 
*& Rapport  ZALV_TRAVEL 
*& 
*&--------------------------------------------------------------* 
*& 
*& 
*&--------------------------------------------------------------* 
RAPPORT zalv_travel. 
 
*Déclaration des variables et écran de sélection 
INCLUDE zalv_travel_top. 
 
*Routines 
INCLUDE zalv_travel_f01. 
 

À cette étape, les includes sont déclarés, mais pas créés. Pour cela, il suffit de double cliquer dessus. À la question de savoir si l’objet doit être créé, il faudra cliquer sur Oui, modifier la description si besoin, puis sauvegarder.

images/10RI68.png
images/10RI69.png
images/10RI70.png

Une fois l’include ZALV_TRAVEL_TOP créé, toutes les déclarations de variables y seront déplacées, ainsi que l’écran de sélection. Au final, il sera composé du code suivant :


*&--------------------------------------------------------------* 
*&  Include           ZALV_TRAVEL_TOP 
*&--------------------------------------------------------------* 
 
TABLES: ztravel. 
 
 
*VARIABLES D'OBJET 
DATA:  
  o_alv           TYPE REF TO cl_salv_table,     "Rapport ALV ...

Exercice

Pour cet exercice, la demande suivante est parvenue via un document fonctionnel : créez un rapport de type ALV listant tous les ouvrages de la table ZBOOKS et qui devra comporter les champs suivants :

Zones Rapport ALV

Désignation

Table

Champ

Titre de l’ouvrage

ZBOOKS

TITLE

Description de la catégorie

DD07V

DDTEXT

Auteur

ZBOOKS

AUTHOR

Année de parution

ZBOOKS

YEAR_BOOK

Vous pouvez vous aider du programme 11_CODE_CHAP08_DATA.txt pour remplir au préalable la table ZBOOKS.

L’écran de sélection devra permettre de filtrer la sélection selon :

1.

La catégorie de l’ouvrage (ZBOOKS-CATEGORY) - Paramètre.

2.

L’auteur (ZBOOKS-AUTHOR) - Intervalle de valeurs.

3.

L’année de parution (ZBOOKS-YEAR) - Intervalle de valeurs.

La catégorie de l’ouvrage est obligatoire.

La fonction FM_DOMAINVALUE_CHECK pourrait être utilisée pour connaître la liste des valeurs individuelles d’un domaine.