SAP ABAP - Người dùng thoát

Các lần thoát của người dùng được sử dụng trong quá trình trích xuất nếu trình trích xuất SAP tiêu chuẩn không cung cấp dữ liệu mong đợi hoặc chức năng cần thiết, ví dụ như trong ủy quyền hoặc kiểm tra thời gian. Người dùng thoát thường được sử dụng trong mô-đun Bán hàng và Phân phối (SD). Có nhiều lối thoát do SAP cung cấp trong các lĩnh vực bán hàng, vận chuyển, vận chuyển và thanh toán. Lối ra của người dùng được thiết kế để thực hiện một số thay đổi khi SAP tiêu chuẩn không có khả năng đáp ứng tất cả các yêu cầu.

Để có thể truy cập những lối thoát nào có sẵn trong từng khu vực bán hàng, hãy truy cập IMG bằng đường dẫn sau: IMG → Bán hàng và phân phối → Sửa đổi hệ thống → Người dùng thoát. Tài liệu cho mỗi lối ra trong các lĩnh vực SD được giải thích cặn kẽ.

Ví dụ: nếu bạn muốn tìm các lần thoát của người dùng trong Xử lý tài liệu bán hàng (hợp đồng, báo giá hoặc đơn đặt hàng), hãy làm theo đường dẫn được đề cập ở trên và tiếp tục mở rộng nút Người dùng thoát trong Bán hàng → Người dùng thoát. Nhấp vào tài liệu biểu tượng để xem tất cả các lần thoát của người dùng có sẵn trong Xử lý tài liệu bán hàng.

Không. Người dùng thoát & mô tả
1

USEREXIT_FIELD_MODIFICATION

Được sử dụng để sửa đổi các thuộc tính màn hình.

2

USEREXIT_SAVE_DOCUMENT

Giúp thực hiện các thao tác khi người dùng nhấn Lưu.

3

USEREXIT_SAVE_DOCUMENT_PREPARE

Rất hữu ích để kiểm tra các trường đầu vào, đặt bất kỳ giá trị nào vào trường hoặc hiển thị cửa sổ bật lên cho người dùng và xác nhận tài liệu.

4

USEREXIT_MOVE_FIELD_TO_VBAK

Được sử dụng khi các thay đổi tiêu đề của người dùng được chuyển đến vùng làm việc của tiêu đề.

5

USEREXIT_MOVE_FIELD_TO_VBAP

Được sử dụng khi các thay đổi mục của người dùng được chuyển đến khu vực làm việc của mục SAP.

Lối ra của người dùng phục vụ cùng mục đích với lần thoát của khách hàng nhưng chúng chỉ khả dụng cho mô-đun SD. Lối ra được thực hiện dưới dạng lời gọi đến Mô-đun chức năng. User Exit là những sửa đổi đối với các chương trình tiêu chuẩn SAP.

Thí dụ

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.

Trong khi xử lý, nhập mã giao dịch 'ME01' và nhấn nút F8 (Thực hiện). Đoạn mã trên tạo ra kết quả sau: