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 »
