SAP ABAP - Wyjścia użytkownika

Wyjścia użytkownika są używane podczas wyodrębniania, jeśli standardowe ekstraktory SAP nie zapewniają oczekiwanych danych lub wymaganej funkcjonalności, na przykład w uprawnieniach lub kontroli czasu. Wyjścia użytkowników są powszechnie używane w modułach Sales and Distribution (SD). SAP zapewnia wiele wyjść w obszarach sprzedaży, transportu, wysyłki i fakturowania. Wyjście użytkownika ma na celu wprowadzenie pewnych zmian, gdy standardowy SAP nie jest w stanie spełnić wszystkich wymagań.

Aby uzyskać dostęp do wyjść dostępnych w każdym obszarze sprzedaży, przejdź do IMG, korzystając z tej ścieżki: IMG → Sprzedaż i dystrybucja → Modyfikacje systemu → Wyjścia użytkowników. Dokumentacja każdego wyjścia w obszarach SD jest dokładnie wyjaśniona.

Na przykład, jeśli chcesz znaleźć wyjścia użytkowników w przetwarzaniu dokumentów sprzedaży (umowa, oferta lub zamówienie sprzedaży), postępuj zgodnie ze ścieżką wymienioną powyżej i kontynuuj rozwijanie węzła Wyjścia użytkowników w Sprzedaż → Wyjścia użytkowników. Kliknij dokumentację ikony, aby zobaczyć wszystkie wyjścia użytkowników dostępne w przetwarzaniu dokumentów sprzedaży.

S.No. Wyjście użytkownika i opis
1

USEREXIT_FIELD_MODIFICATION

Służy do modyfikowania atrybutów ekranu.

2

USEREXIT_SAVE_DOCUMENT

Pomaga w wykonywaniu operacji, gdy użytkownik kliknie przycisk Zapisz.

3

USEREXIT_SAVE_DOCUMENT_PREPARE

Bardzo przydatne do sprawdzania pól wejściowych, umieszczania dowolnej wartości w polu lub wyświetlania wyskakującego okienka użytkownikom i potwierdzania dokumentu.

4

USEREXIT_MOVE_FIELD_TO_VBAK

Używane, gdy zmiany nagłówka użytkownika są przenoszone do obszaru roboczego nagłówka.

5

USEREXIT_MOVE_FIELD_TO_VBAP

Używane, gdy zmiany pozycji użytkownika są przenoszone do obszaru roboczego pozycji SAP.

Wyjście użytkownika służy temu samemu celowi co wyjście klienta, ale jest dostępne tylko dla modułu SD. Wyjście jest realizowane jako wywołanie modułu funkcyjnego. Wyjścia użytkownika to modyfikacje standardowych programów SAP.

Przykład

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.

Podczas przetwarzania wprowadź kod transakcji „ME01” i naciśnij przycisk F8 (Wykonaj). Powyższy kod daje następujące dane wyjściowe -