SAP---ABAP

Sunday, July 8, 2007

Display Active Exits in a ABAP System

ZMS_ACTIVE_EXITS - This report shows displays the active exits in a ABAP system along with the corresponding SAP Enhancement (SMOD) and Customer Project (CMOD)

*&---------------------------------------------------------------------*
*& Report ZMS_ACTIVE_EXITS
*&---------------------------------------------------------------------*
*& This report displays all the active customer enhancements in the
*& system and also displays whether they are active or implemented
*&---------------------------------------------------------------------*
REPORT ZMS_ACTIVE_EXITS.
* Data decleration
types: begin of s_function,
fname like MOD0-FUNCNAME,
ftext like tftit-stext,
impl,
active,
example,
end of s_function.
TYPEs : BEGIN OF display_str,
project type modact-name,
enhancement type modact-member,
fm type modsap-member,
status type char20,
END OF display_str.
data : lt_member type table of modact-member,
ls_member like LINE OF lt_member,
lt_fm type table of modsap-member,
ls_fm like LINE OF lt_fm,
lt_modname type table of modact-name,
ls_modname like line of lt_modname,
lt_display type TABLE OF display_str,
ls_display like LINE OF lt_display,
ls_function type s_function,
field1(30).
START-OF-SELECTION.
* Select active customer enhancement.
select name from modattr into ls_modname
where status = 'A'.
append ls_modname to lt_modname.
CLEAR ls_modname.
ENDSELECT.
if lt_modname is INITIAL.
WRITE / 'no active enhancements'.
endif.
* Determine the details about the customer enhancement.
LOOP AT lt_modname INTO ls_modname.
CLEAR : ls_display.
SELECT member from modact into ls_member where name = ls_modname.
select member from modsap into ls_fm where name = ls_member and typ =
'E'.
ls_display-project = ls_modname.
ls_display-enhancement = ls_member.
ls_display-fm = ls_fm.
clear : ls_function.
ls_function-fname = ls_fm.
perform get_impl_status USING ls_function.
if ls_function-impl = 'X'.
ls_display-status = 'Implemented'.
ELSE.
ls_display-status = 'Active'.
endif.
APPEND ls_display to lt_display.
endselect.
ENDSELECT.
ENDLOOP.
* Displaying results
format color = 1.
write : 'Please double-click on the object for follow-on action'.
new-LINE. uline.
write : 'Customer Project', at 30 'SAP Enhancement', at 60 'Exit
Function Modul
e', at 100 'Active/Implemented'.
ULINE.
format color = 0.
loop at lt_display into ls_display.
new-LINE.
write : ls_display-project, at 30 ls_display-enhancement, at 60
ls_displayfm,
at 100 ls_display-status.
ENDLOOP.
* For calling transaction CMOD / SMOD / SE37.
at line-selection.
get cursor field field1.
CASE field1.
WHEN 'LS_DISPLAY-PROJECT'.
set parameter id 'MON_KUN' field sy-lisel(10).
call transaction 'CMOD' and skip first screen.
WHEN 'LS_DISPLAY-ENHANCEMENT'.
set parameter id 'MON' field sy-lisel+29(10).
call transaction 'SMOD' and skip first screen.
WHEN 'LS_DISPLAY-FM'.
set parameter id 'LIB' field sy-lisel+59(30).
call transaction 'SE37' and skip first screen.
WHEN OTHERS.
message 'Click on the right place.' TYPE 'I'.
ENDCASE.
*&---------------------------------------------------------------------*
*& Form get_impl_status
*&---------------------------------------------------------------------*
* This FORM checks whether an EXIT FM is implemented or not
*----------------------------------------------------------------------*
form get_impl_status using p_function type s_function.
data : l_mand LIKE tfdir-mand,
l_incl_names TYPE smod_names OCCURS 1 WITH HEADER LINE.
l_incl_names-itype = 'C'.
APPEND l_incl_names.
CLEAR l_mand.
SELECT SINGLE mand FROM tfdir INTO l_mand WHERE funcname =
p_function-fname.
IF sy-subrc = 0 AND l_mand(1) = 'C'.
p_function-active = 'X'.
* l_status-active = c_true.
ELSE.
p_function-active = ' '.
* l_status-inactive = c_true.
ENDIF.
CALL FUNCTION 'MOD_FUNCTION_INCLUDE'
EXPORTING
funcname = p_function-fname
TABLES
incl_names = l_incl_names
EXCEPTIONS
OTHERS = 4.
IF sy-subrc = 0.
LOOP AT l_incl_names.
SELECT SINGLE name FROM trdir INTO l_incl_names-iname
WHERE name = l_incl_names-iname.
IF sy-subrc = 0.
p_function-impl = 'X'.
ELSE.
p_function-impl = ' '.
ENDIF.
ENDLOOP.
ENDIF.
endform. "get_impl_status

No comments: