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.
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 ’*’) ;
Appuyez ensuite sur [F4] ou le bouton d’aide à la recherche du champ .
La liste des programmes va alors s’afficher, il suffira de double cliquer dessus pour pouvoir y accéder.
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).
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.
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.