Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to know enhancement name

Former Member
0 Kudos

Hi,

I knew Customer functions of particular transactions. I would like to know in which Enhancement these Functional module exits are present.

Thanks and regards,

Prasad

5 REPLIES 5

Former Member
0 Kudos

hi

Check out teh where-used-list.

Theja

Former Member
0 Kudos

Make use of this report.

REPORT ZV_FIND_EXIT NO STANDARD PAGE HEADING.

TABLES : TSTC, TADIR, MODSAPT, MODACT, TRDIR, TFDIR, ENLFDIR.

TABLES : 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 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) 'No User Exit exists'.

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.

*************************************************************

I helpfull reward the points.

Regards,

Vasanth

Manohar2u
Active Contributor
0 Kudos

Simple, go to SMOD, press F4 with all selections.

Give function exit name on enhancement component by checking function exits check box.

It will list you the enhancement name.

Regds

Manohar

Former Member
0 Kudos

Go to CMOD. In the menu, 'Utilities-->SAP Enhancements'. In the next screen, click on 'All Selections' icon(with a plus sign and an arrow pointing down). In the 'component name' area enter your function module's name and execute. You will get the enhancement name.

LucianoBentiveg
Active Contributor
0 Kudos

Try with this Z program:


REPORT zuserexit NO STANDARD PAGE HEADING.
************************************************************************
*                    Renewed  by Peluka                                *
************************************************************************
TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir, tstct,
         tdevct, doktl, modattr, help_info.
INCLUDE <icon>.

CONSTANTS: true(1) TYPE c VALUE 'X',
           false(1) TYPE c VALUE ' ',
           active LIKE modattr-status VALUE 'A'.
TYPE-POOLS: slis.
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gs_layout  TYPE slis_layout_alv,
      g_repid LIKE sy-repid,
      i_list_comments TYPE slis_t_listheader,
      w_list_comments    LIKE LINE OF i_list_comments,
      pt_events    TYPE slis_t_event.


DATA : BEGIN OF jtab  OCCURS 0.
        INCLUDE STRUCTURE tadir.
DATA :  nombre_proj LIKE modact-name,
        estado_proj LIKE modattr-status,
        document(1) TYPE c,
        modtext LIKE modsapt-modtext,
       END OF jtab.
TYPES: BEGIN OF type_salida,
        obj_name LIKE tadir-obj_name,
        nombre_proj LIKE modact-name,
        estado_proj(4),
        document(4),
        modtext LIKE modsapt-modtext,
       END OF type_salida.

DATA: t_salida TYPE STANDARD TABLE OF type_salida WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass,
       tab_projects LIKE modact OCCURS 0 WITH HEADER LINE.
DATA: g_exists(1) TYPE c.

PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.

INITIALIZATION.
  g_repid = sy-repid.

START-OF-SELECTION.

  SELECT *
  FROM modact INTO TABLE tab_projects.
  SORT tab_projects.

  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.
    LOOP AT jtab.
      CLEAR tab_projects.
      READ TABLE tab_projects WITH KEY member = jtab-obj_name.
      IF NOT tab_projects-name IS INITIAL.
        jtab-nombre_proj = tab_projects-name.
        SELECT SINGLE *
         FROM modattr
          WHERE name = tab_projects-name.
        jtab-estado_proj = modattr-status.
      ENDIF.
      SELECT SINGLE *
       FROM tdevct
        WHERE spras EQ 'EN'
          AND devclass EQ jtab-devclass.
      doktl-object = jtab-obj_name.
      PERFORM check_documentation USING doktl-object
                                  CHANGING g_exists.
      SELECT SINGLE * FROM modsapt
             WHERE sprsl = 'E' AND
                    name = jtab-obj_name.
      jtab-modtext = modsapt-modtext.
      jtab-document = g_exists.
      MODIFY jtab.
    ENDLOOP.
    IF NOT jtab[] IS INITIAL.
      PERFORM mostrar_reporte_alv TABLES jtab.
    ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(95) 'No existe ninguna user exit'.
    ENDIF.
  ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(95) 'El código de transacción no existe'.
  ENDIF.

*---------------------------------------------------------------------*
*       FORM CHECK_DOCUMENTATION                                      *
*---------------------------------------------------------------------*
*  -->  P_DOKTL_OBJECT                                                *
*  -->  P_EXISTS                                                      *
*---------------------------------------------------------------------*
FORM check_documentation USING    p_doktl_object
                         CHANGING p_exists.

  SELECT *
  FROM doktl
  WHERE id     = 'MO'
  AND   object = p_doktl_object
  AND   langu  = 'EN'.
  ENDSELECT.
  IF sy-subrc = 0.
    p_exists = true.
  ELSE.
    p_exists = false.
  ENDIF.

ENDFORM.                               " GET_DOCUMENTATION
*&---------------------------------------------------------------------*
*&      Form  mostrar_reporte_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_JTAB  text
*----------------------------------------------------------------------*
FORM mostrar_reporte_alv TABLES jtab STRUCTURE jtab.

  LOOP AT jtab.
    MOVE-CORRESPONDING jtab TO t_salida.
    IF jtab-estado_proj EQ 'A'.
      t_salida-estado_proj = '@BF@'.
    ELSE.
      t_salida-estado_proj = '@BG@'.
    ENDIF.
    IF jtab-document EQ 'X'.
      t_salida-document = '@96@'.
    ELSE.
      t_salida-document = ''.
    ENDIF.
    APPEND t_salida.
  ENDLOOP.

* Estructura y formato de salida
  PERFORM init_fieldcat.
  PERFORM init_layout.
  PERFORM seteo_eventos TABLES pt_events.
* Mostrar listado
  PERFORM listado.

ENDFORM.                    " mostrar_reporte_alv
*&---------------------------------------------------------------------*
*&      Form  init_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM init_fieldcat.

  gt_fieldcat-seltext_l  = 'Ampliación'.
  gt_fieldcat-fieldname = 'OBJ_NAME'.
  gt_fieldcat-fix_column = 'X'.
  gt_fieldcat-outputlen     = '10'.
  gt_fieldcat-just    = 'C'.
  gt_fieldcat-hotspot       = 'X'.
  gt_fieldcat-tabname = 'T_SALIDA'.
  APPEND gt_fieldcat. CLEAR gt_fieldcat.

  gt_fieldcat-seltext_l  = 'Proyecto'.
  gt_fieldcat-fieldname = 'NOMBRE_PROJ'.
  gt_fieldcat-outputlen     = '10'.
  gt_fieldcat-just    = 'C'.
  gt_fieldcat-hotspot       = 'X'.
  gt_fieldcat-tabname = 'T_SALIDA'.
  APPEND gt_fieldcat. CLEAR gt_fieldcat.

  gt_fieldcat-seltext_l  = 'Estado Proyecto'.
  gt_fieldcat-fieldname = 'ESTADO_PROJ'.
  gt_fieldcat-outputlen     = '15'.
  gt_fieldcat-just    = 'C'.
  gt_fieldcat-tabname = 'T_SALIDA'.
  APPEND gt_fieldcat. CLEAR gt_fieldcat.

  gt_fieldcat-seltext_l  = 'Documentación'.
  gt_fieldcat-fieldname = 'DOCUMENT'.
  gt_fieldcat-outputlen     = '13'.
  gt_fieldcat-just    = 'C'.
  gt_fieldcat-hotspot       = 'X'.
  gt_fieldcat-tabname = 'T_SALIDA'.
  APPEND gt_fieldcat. CLEAR gt_fieldcat.

  gt_fieldcat-seltext_l  = 'Descripción'.
  gt_fieldcat-fieldname = 'MODTEXT'.
  gt_fieldcat-outputlen     = '60'.
  gt_fieldcat-just    = 'L'.
  gt_fieldcat-tabname = 'T_SALIDA'.
  APPEND gt_fieldcat. CLEAR gt_fieldcat.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  init_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM init_layout.

  gs_layout-f2code = 'VER_DOC'.

ENDFORM.                    " init_layout
*&---------------------------------------------------------------------*
*&      Form  seteo_eventos
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_PT_EVENTS  text
*----------------------------------------------------------------------*
FORM seteo_eventos TABLES   pt_events.

* Para que utilice el encabezado.
  DATA: lt_events TYPE slis_alv_event.
*
  CLEAR lt_events.
  lt_events-name = 'TOP_OF_PAGE'.
  lt_events-form = 'TOP_OF_PAGE'.
  APPEND lt_events TO pt_events.

  lt_events-name = 'USER_COMMAND'.
  lt_events-form = 'USER_COMMAND'.
  APPEND lt_events TO pt_events.

ENDFORM.                     " seteo eventos
*&---------------------------------------------------------------------*
*&      Form  listado
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM listado.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program      = g_repid
            i_callback_user_command = 'USER_COMMAND'
            is_layout               = gs_layout
            it_fieldcat             = gt_fieldcat[]
            i_save                  = 'A'
            it_events               = pt_events
       TABLES
            t_outtab                = t_salida
       EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " listado
*----------------------------------------------------------------------*
*       FORM TOP_OF_PAGE                                               *
*----------------------------------------------------------------------*
FORM top_of_page.
  DATA: lc_texto LIKE w_list_comments-info.

  CLEAR: i_list_comments[].

  w_list_comments-typ  = 'H'. "H=Header, S=Selection, A=Action
  w_list_comments-key  = ''.
  w_list_comments-info = p_tcode.
  APPEND w_list_comments TO i_list_comments.

  CONCATENATE 'Transaction Code -' p_tcode tstct-ttext
    INTO lc_texto SEPARATED BY space.
  w_list_comments-typ  = 'S'. " H = Header, S = Selection, A = Action
  w_list_comments-key  = ''.
  w_list_comments-info = lc_texto.
  APPEND w_list_comments TO i_list_comments.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            i_logo             = 'ENJOYSAP_LOGO'
            it_list_commentary = i_list_comments.

ENDFORM.                    " seteo_eventos
*---------------------------------------------------------------------*
*       FORM user_command                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  L_UCOMM                                                       *
*  -->  LS_SELFIELD                                                   *
*---------------------------------------------------------------------*
FORM user_command USING l_ucomm ls_selfield TYPE slis_selfield.

* Nos aseguramos que no haya pinchado sobre una linea sin nada
  CHECK NOT ls_selfield-tabname IS INITIAL.
  CHECK NOT ls_selfield-fieldname IS INITIAL.
  READ TABLE t_salida INDEX ls_selfield-tabindex.
  CASE ls_selfield-fieldname.
    WHEN 'OBJ_NAME'.
      SET PARAMETER ID 'MON' FIELD t_salida-obj_name.
      CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    WHEN 'NOMBRE_PROJ'.
      IF NOT t_salida-nombre_proj IS INITIAL.
        SET PARAMETER ID 'MON_KUN' FIELD t_salida-nombre_proj.
        CALL TRANSACTION 'CMOD' AND SKIP FIRST SCREEN.
      ENDIF.
    WHEN 'DOCUMENT'.
      IF NOT t_salida-document IS INITIAL.
        doktl-object = t_salida-obj_name.
        PERFORM get_documentation USING doktl-object.
      ENDIF.
  ENDCASE.

ENDFORM.
*---------------------------------------------------------------------*
*       FORM GET_DOCUMENTATION                                        *
*---------------------------------------------------------------------*
*  -->  P_DOKTL_OBJECT                                                *
*---------------------------------------------------------------------*
FORM get_documentation USING  p_doktl_object.
  DATA: lt_line LIKE tline OCCURS 0 WITH HEADER LINE.
  DATA: BEGIN OF lt_exclude OCCURS 10,
          func(4),
        END OF lt_exclude.
  DATA: overlay_header  LIKE thead,
        l_lines LIKE sy-tabix.
  REFRESH lt_line.

  CALL FUNCTION 'DOCU_GET_FOR_F1HELP'
       EXPORTING
            id       = 'MO'
            langu    = 'E'
            object   = p_doktl_object
       IMPORTING
            head     = overlay_header
       TABLES
            line     = lt_line
       EXCEPTIONS
            ret_code = 1
            OTHERS   = 2.
  IF sy-subrc EQ 0.
    DESCRIBE TABLE lt_line LINES l_lines.
    IF l_lines = 0.
      EXIT.
    ENDIF.
    help_info-title           = p_doktl_object.
    help_info-docuid          = p_doktl_object.
    help_info-docuobject      = p_doktl_object.
    help_info-spras           = overlay_header-tdspras.
    CALL FUNCTION 'HELP_DOCULINES_SHOW'
         EXPORTING
              help_infos     = help_info
              overlay_header = overlay_header
         TABLES
              excludefun     = lt_exclude
              helplines      = lt_line
         EXCEPTIONS
              OTHERS         = 1.
  ENDIF.

ENDFORM.