Ce post permet de détailler l’implémentation des Screen Exit pour customiser l’onglet « Données supplémentaire B » de la transaction VA01 (Création Commande). Les nouvelles zones seront enregistrées dans la table VBAK.
1 – Etendre VBAK avec des champs spécifiques :
VBAK pour les données d’entête et VBAP pour les données de postes.
Créer une nouvelle structure
Créer « structure append »
Exemple d’une nouvelle structure ZHSS030 avec 8 nouveaux champs :
Activer la nouvelle structure ZHSS030 et la table VBAK.
SE51 & ScreenPainter
PROGRAM NAME: SAPMV45A
SCREEN NUMBER : 8309
Citation :
SAPMV45A 8309 : Header data – Additional data B
SAPMV45A 8459 : Item data – Additional data B
Cliquer sur le bouton
Et
Cliquer sur Fenêtre/zones du Dictionnaire ABAP
Recherche la table VBAK pour accéder aux nouveaux champs.
Sélectionner les champs à insérer sur la zone de travail.
Cliquer sur
Dans l’onglet « Log. Exéc. » insérer le code suivant dans le PBO (PROCESS BEFORE OUTPUT) :
MODULE Z_SET_SCREEN.
Et double cliquer sur le nom du module pour créer le module dans le programme SAPMV45A.
Par exemple pour rendre les champs non éditables en mode affichage :
LOOP AT SCREEN.
IF SY-TCODE = 'VA03'.
SCREEN-INPUT = 0.
SCREEN-OUTPUT = 1.
MODIFY SCREEN.
ELSE.
IF VBAK-ZZFIELD1 IS INITIAL.
SCREEN-REQUEST = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
Dans l’onglet « Log. Exéc. » insérer le code suivant dans le PAI (PROCESS AFTERINPUT) :
MODULE Z_CHECK_FIELDS ON INPUT.
Et double cliquer sur le nom du module pour créer le module dans le programme MV45AIZZ.
IF NOT VBAK-ZZTEST1 IS INITIAL.
RAISE ERROR…
ENDIF.
Renommer l’onglet « Données supplémentaire B » dans VA01
Transaction VFBS :
Modifier Données Supplémentaires B par « Infos monétiques »