الثلاثاء، 20 أكتوبر 2020

SAP ABAP - User Exits خروج المستخدم من ساب

 SAP ABAP - User Exits خروج المستخدم من ساب

SAP ABAP - User Exits خروج المستخدم من ساب

SAP ABAP - User Exits خروج المستخدم من ساب

يتم استخدام مخارج المستخدم في الاستخراج إذا لم توفر مستخلصات SAP القياسية البيانات المتوقعة أو الوظائف المطلوبة ، على سبيل المثال في التراخيص أو فحوصات الوقت. تُستخدم مخارج المستخدم بشكل شائع في وحدات المبيعات والتوزيع (SD). هناك العديد من المخارج التي توفرها SAP في مجالات المبيعات والنقل والشحن والفواتير. تم تصميم خروج المستخدم لإجراء بعض التغييرات عندما لا يكون SAP القياسي قادرًا على تلبية جميع المتطلبات.

لتتمكن من الوصول إلى المخارج المتوفرة في كل مجال من مجالات المبيعات ، انتقل إلى IMG باستخدام هذا المسار: IMG ← المبيعات والتوزيع ← تعديلات النظام ← خروج المستخدم. يتم شرح الوثائق الخاصة بكل مخرج في مناطق SD بدقة.

على سبيل المثال ، إذا كنت ترغب في العثور على خروج المستخدم في معالجة مستندات المبيعات (عقد أو عرض أسعار أو أمر مبيعات) ، فاتبع المسار المذكور أعلاه واستمر في توسيع نقطة خروج المستخدم في المبيعات ← خروج المستخدم. انقر فوق وثائق الرمز لرؤية جميع عمليات خروج المستخدم المتوفرة في معالجة مستندات المبيعات.

التسلسلخروج المستخدم والوصف
1

USEREXIT_FIELD_MODIFICATION

تستخدم لتعديل سمات الشاشة.

2

USEREXIT_SAVE_DOCUMENT

يساعد في إجراء العمليات عندما يقوم المستخدم بالضغط على Save.

3

USEREXIT_SAVE_DOCUMENT_PREPARE

مفيد جدًا للتحقق من حقول الإدخال ، ووضع أي قيمة في الحقل أو إظهار نافذة منبثقة للمستخدمين وتأكيد المستند.

4

USEREXIT_MOVE_FIELD_TO_VBAK

تُستخدم عندما يتم نقل تغييرات رأس المستخدم إلى منطقة عمل الرأس.

5

USEREXIT_MOVE_FIELD_TO_VBAP

تُستخدم عند نقل تغييرات عنصر المستخدم إلى منطقة عمل عنصر SAP.

يخدم خروج المستخدم نفس الغرض مثل خروج العميل ولكنها متاحة فقط لوحدة SD. يتم تنفيذ الخروج على أنه استدعاء لوحدة الوظيفة. عمليات خروج المستخدم هي تعديلات على برامج SAP القياسية.

مثال

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. 

أثناء المعالجة ، أدخل رمز المعاملة "ME01" واضغط على الزر F8 (تنفيذ). ينتج الكود أعلاه الناتج التالي -

رمز المعاملة 'ME01




التسميات: