User Exit (Tx)

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Alfredo Garcia Tello
    Senior Member
    • dic
    • 561

    #1

    User Exit (Tx)

    Una duda,

    Sabrá alguno de ustedes como identificar si una Tx STD tiene un user exit en algunos de sus campos..

    Necesito revisar si estoy operando dentro de los STD

    Saludos...
    Alfredo G. Tello
    Consultor SAP/MM & SD
    Tel. Of. +52(045) 722 2608 75 76
  • El Fari
    Member
    • may
    • 86

    #2
    Hola Alfredo.

    Existe un programa que lo he visto por allí rodando el cual recibe como entrada una TX (por supuesto SDT) y te devuelve los diversos User Exit que pueden gestionarse con la misma.

    En referencia a user exit sobre campos creo que la definición de los exit que actuan sobre campos se llaman Field Exit y es otra cosa, los User son amplicaciones sobre transacciones y los field amplicaciones sobre campos.

    Espermos la ayuda de un compañero para que nos preste el código, luego crear un programa con dicho código y listo a usarlo.

    Saludos,

    Fari.

    Comentario

    • Aldo G
      Junior Member
      • sep
      • 17

      #3
      Este código lo tome prestado de donde esta funcionando y puede servir:

      TABLES : tstc, tstct, tadir,
      modsapt, modact,
      trdir, tfdir,
      enlfdir.

      DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE,
      field1(30),
      v_devclass LIKE tadir-devclass.

      SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-b00.
      PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
      SELECTION-SCREEN END OF BLOCK b00.


      START-OF-SELECTION.
      AUTHORITY-CHECK OBJECT 'ZBC_PROGRA'
      ID 'PROGRAM' FIELD sy-repid.
      IF NOT sy-subrc IS INITIAL.
      MESSAGE e706.
      ENDIF.
      PERFORM main_program.

      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.

      *---------------------------------------------------------------------*
      * FORM main_program *
      *---------------------------------------------------------------------*
      FORM main_program.
      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) 'No User Exit exists'.
      ENDIF.
      ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(95) 'Transaction Code Does Not Exist'.
      ENDIF.

      ENDFORM.

      Comentario

      • Alfredo Garcia Tello
        Senior Member
        • dic
        • 561

        #4
        Que tal, de ante mano gracias, saben pegué este código para hacer la prueba en DES y me sale este error...

        cómo ven?

        Leo que tiene esta parte de código ya parece local,

        AUTHORITY-CHECK OBJECT 'ZBC_PROGRA'
        ID 'PROGRAM' FIELD sy-repid.
        IF NOT sy-subrc IS INITIAL.
        MESSAGE e706.
        ENDIF.

        Al compilar mana este error...

        A message ID has not been entered You can specify this entry for the
        whole program using the "MESSAGE-ID msgid" addition in the introductory
        program statement or in parentheses after the error number. -
        Alfredo G. Tello
        Consultor SAP/MM & SD
        Tel. Of. +52(045) 722 2608 75 76

        Comentario

        • MJFERNA
          Senior Member
          • jul
          • 113

          #5
          Te adjunto otro código de un programa que nosotros tenemos para buscar exits y badis.

          *&---------------------------------------------------------------------*
          *& Report ZSEARCH_BADI_USER_EXIT
          *&
          *&---------------------------------------------------------------------*
          *&
          *& Wyszukiwanie User exit i Badi na podstawie numeru transakcji
          *&
          *&---------------------------------------------------------------------*

          REPORT zsearch_badi_user_exit.

          TABLES : tstc,
          tadir,
          modsapt,
          modact,
          trdir,
          tfdir,
          enlfdir,
          sxs_attrt ,
          tstct.

          DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
          DATA : field1(30).
          DATA : v_devclass LIKE tadir-devclass.

          PARAMETERS : p_tcode LIKE tstc-tcode,
          p_pgmna LIKE tstc-pgmna .




          DATA wa_tadir TYPE tadir.

          START-OF-SELECTION.

          IF NOT p_tcode IS INITIAL.
          SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.

          ELSEIF NOT p_pgmna IS INITIAL.
          tstc-pgmna = p_pgmna.
          ENDIF.

          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 IN ('SMOD', 'SXSD')
          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:/(105) sy-uline.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.

          * Sorting the internal Table
          SORT jtab BY object.
          DATA : wf_txt(60) TYPE c,
          wf_smod TYPE i ,
          wf_badi TYPE i ,
          wf_object2(30) TYPE c.
          CLEAR : wf_smod, wf_badi , wf_object2.
          * Get the total SMOD.




          LOOP AT jtab INTO wa_tadir.
          AT FIRST.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.

          WRITE:/1 sy-vline,
          2 'Enhancement/ Business Add-in',
          41 sy-vline ,
          42 'Description',
          105 sy-vline.
          WRITE:/(105) sy-uline.
          ENDAT.
          CLEAR wf_txt.
          AT NEW object.
          IF wa_tadir-object = 'SMOD'.
          wf_object2 = 'Enhancement' .
          ELSEIF wa_tadir-object = 'SXSD'.
          wf_object2 = ' Business Add-in'.

          ENDIF.
          FORMAT COLOR COL_GROUP INTENSIFIED ON.

          WRITE:/1 sy-vline,

          2 wf_object2,
          105 sy-vline.
          ENDAT.

          CASE wa_tadir-object.
          WHEN 'SMOD'.
          wf_smod = wf_smod + 1.
          SELECT SINGLE modtext INTO wf_txt
          FROM modsapt
          WHERE sprsl = sy-langu
          AND name = wa_tadir-obj_name.
          FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

          WHEN 'SXSD'.
          * For BADis
          wf_badi = wf_badi + 1 .
          SELECT SINGLE text INTO wf_txt
          FROM sxs_attrt
          WHERE sprsl = sy-langu
          AND exit_name = wa_tadir-obj_name.
          FORMAT COLOR COL_NORMAL INTENSIFIED ON.

          ENDCASE.



          WRITE:/1 sy-vline,
          2 wa_tadir-obj_name HOTSPOT ON,
          41 sy-vline ,
          42 wf_txt,
          105 sy-vline.
          AT END OF object.
          WRITE : /(105) sy-uline.
          ENDAT.


          ENDLOOP.

          WRITE:/(105) sy-uline.



          SKIP.
          FORMAT COLOR COL_TOTAL INTENSIFIED ON.
          WRITE:/ 'No.of Exits:' , wf_smod.
          WRITE:/ 'No.of BADis:' , wf_badi.

          ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(105) 'No userexits or BADis exist'.
          ENDIF.
          ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(105) 'Transaction does not exist'.
          ENDIF.

          AT LINE-SELECTION.

          DATA : wf_object TYPE tadir-object.
          CLEAR wf_object.


          GET CURSOR FIELD field1.
          CHECK field1(8) EQ 'WA_TADIR'.
          READ TABLE jtab WITH KEY obj_name = sy-lisel+1(20).
          MOVE jtab-object TO wf_object.

          CASE wf_object.
          WHEN 'SMOD'.
          SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).

          CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
          WHEN 'SXSD'.
          SET PARAMETER ID 'EXN' FIELD sy-lisel+1(20).
          CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
          ENDCASE.=

          Comentario

          • Alfredo Garcia Tello
            Senior Member
            • dic
            • 561

            #6
            Gracias amigo...

            me fueron de mucha utilidad

            Saludos
            Alfredo G. Tello
            Consultor SAP/MM & SD
            Tel. Of. +52(045) 722 2608 75 76

            Comentario

            • Alfredo Garcia Tello
              Senior Member
              • dic
              • 561

              #7
              Gracias amigo...

              me fueron de mucha utilidad

              Saludos
              Alfredo G. Tello
              Consultor SAP/MM & SD
              Tel. Of. +52(045) 722 2608 75 76

              Comentario

              Trabajando...