SAP ABAP - Exits utilisateur

Les exits utilisateur sont utilisés dans une extraction si les extracteurs SAP standard ne fournissent pas les données attendues ou les fonctionnalités requises, par exemple dans les autorisations ou les contrôles horaires. Les exits utilisateur sont couramment utilisés dans les modules Ventes et distribution (SD). Il existe de nombreuses sorties proposées par SAP dans les domaines de la vente, du transport, de l'expédition et de la facturation. Un exit utilisateur est conçu pour apporter des modifications lorsque SAP standard n'est pas capable de répondre à toutes les exigences.

Pour pouvoir accéder aux sorties disponibles dans chaque domaine de vente, accédez à IMG en utilisant ce chemin: IMG → Ventes et distribution → Modifications du système → Exits utilisateur. La documentation de chaque sortie dans les zones SD est expliquée en détail.

Par exemple, si vous souhaitez trouver des exits utilisateur dans le traitement des documents de vente (contrat, devis ou commande client), suivez le chemin mentionné ci-dessus et continuez à développer le nœud Exits utilisateur dans Ventes → Exits utilisateur. Cliquez sur l'icône de la documentation pour voir tous les exits utilisateur disponibles dans le traitement des documents de vente.

S.No. Sortie utilisateur et description
1

USEREXIT_FIELD_MODIFICATION

Utilisé pour modifier les attributs de l'écran.

2

USEREXIT_SAVE_DOCUMENT

Aide à effectuer des opérations lorsque l'utilisateur appuie sur Enregistrer.

3

USEREXIT_SAVE_DOCUMENT_PREPARE

Très utile pour vérifier les champs de saisie, mettre n'importe quelle valeur dans le champ ou afficher une fenêtre contextuelle aux utilisateurs et pour confirmer le document.

4

USEREXIT_MOVE_FIELD_TO_VBAK

Utilisé lorsque les modifications d'en-tête utilisateur sont déplacées vers la zone de travail d'en-tête.

5

USEREXIT_MOVE_FIELD_TO_VBAP

Utilisé lorsque les modifications d'élément utilisateur sont déplacées vers la zone de travail d'élément SAP.

Une sortie utilisateur a le même objectif que les sorties client, mais elles ne sont disponibles que pour le module SD. L'exit est implémenté comme un appel à un module de fonction. Les exits utilisateur sont des modifications des programmes standard SAP.

Exemple

REPORT ZUSEREXIT1. 
TABLES:   
   TSTC, TSTCT,
   TADIR, TRDIR, TFDIR, ENLFDIR,
   MODSAPT, MODACT. 
	
DATA:   
   JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE,
   field1(30),
   v_devclass LIKE TADIR-devclass. 
	
PARAMETERS:
   P_TCODE LIKE TSTC-tcode OBLIGATORY. 
	
SELECT SINGLE *
   FROM TSTC
   WHERE tcode EQ P_TCODE. 
	
IF SY-SUBRC EQ 0.
   SELECT SINGLE *
   FROM TADIR
	
   WHERE pgmid = 'R3TR' AND 
         object = 'PROG' AND
         obj_name = TSTC-pgmna.
		
   MOVE TADIR-devclass TO v_devclass.
	
   IF SY-SUBRC NE 0.
   SELECT SINGLE * 
      FROM TRDIR
      WHERE name = TSTC-pgmna.
		
   IF TRDIR-subc EQ 'F'.
      SELECT SINGLE *
         FROM TFDIR
         WHERE pname = TSTC-pgmna.
			
      SELECT SINGLE *
         FROM ENLFDIR 
         WHERE funcname = TFDIR-funcname.
			
      SELECT SINGLE * 
         FROM TADIR
         WHERE pgmid = 'R3TR' AND
               object = 'FUGR' AND 
               obj_name EQ ENLFDIR-area.
         MOVE TADIR-devclass TO v_devclass.
      ENDIF.
   ENDIF.
	
   SELECT *
      FROM TADIR
      INTO TABLE JTAB
		
      WHERE pgmid = 'R3TR' AND
            object = 'SMOD' AND
            devclass = v_devclass.
			
   SELECT SINGLE *
      FROM TSTCT
      WHERE sprsl EQ SY-LANGU AND
            tcode EQ P_TCODE.
			
   FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
   WRITE:/(19) 'Transaction Code - ', 
      20(20) P_TCODE,
      45(50) TSTCT-ttext.
   SKIP.
	
   IF NOT JTAB[] IS INITIAL.
      WRITE:/(95) SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
		
      WRITE:/1 SY-VLINE, 
            2 'Exit Name',
            21 SY-VLINE , 
            22 'Description',
            95 SY-VLINE.
			
      WRITE:/(95) SY-ULINE.
      LOOP AT JTAB.
         SELECT SINGLE * FROM MODSAPT
         WHERE sprsl = SY-LANGU AND
               name = JTAB-obj_name.
				
         FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
         WRITE:/1 SY-VLINE,
               2 JTAB-obj_name HOTSPOT ON,
               21 SY-VLINE ,
               22 MODSAPT-modtext,
               95 SY-VLINE.
      ENDLOOP.
		
      WRITE:/(95) SY-ULINE.
      DESCRIBE TABLE JTAB.
      SKIP.
      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE:/ 'No of Exits:' , SY-TFILL.
		
   ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(95) 'User Exit doesn’t exist'.
   ENDIF. 
ELSE.

   FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
   WRITE:/(95) 'Transaction Code Does Not Exist'. 
ENDIF.
 
AT LINE-SELECTION.
   GET CURSOR FIELD field1.
   CHECK field1(4) EQ 'JTAB'.
   SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
   CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

Pendant le traitement, entrez le code de transaction «ME01» et appuyez sur le bouton F8 (Exécuter). Le code ci-dessus produit la sortie suivante -