Beruflich Dokumente
Kultur Dokumente
END OF s_table.
TYPES: BEGIN OF exit_members,
name
TYPE modname,
text
TYPE mod0-memtext,
functions
TYPE s_function OCCURS
fcodes
TYPE s_cua
OCCURS
screens
TYPE s_screen OCCURS
tables
TYPE s_table
OCCURS
status
TYPE modattr-status,
END OF exit_members.
0,
0,
0,
0,
TYPES: rcode(5).
*&---------------------------------------------------------------------*
*& DATA
*&---------------------------------------------------------------------*
DATA: gv_impl_status_text TYPE string,
gv_impl_name
TYPE exit_imp,
gv_programid
TYPE program_id,
gs_tadir
gt_tadir
gv_devclass
TYPE tadir,
TYPE TABLE OF tadir,
TYPE devclass.
DATA: gs_enlfdir
gs_trdir
gs_tfdir
gs_tstct
TYPE
TYPE
TYPE
TYPE
DATA: gs_output
gt_output
TYPE ty_output,
TYPE TABLE OF ty_output.
DATA: gs_exit
gs_exit_name
gv_rcode(5)
TYPE exit_members,
TYPE modname,
TYPE c.
DATA: gs_sxc_exit
gt_sxc_exit
TYPE sxc_exit,
TYPE TABLE OF sxc_exit.
DATA: lv_enh_cnt
lv_badi_cnt
lv_es_cnt
TYPE i,
TYPE i,
TYPE i.
DATA: cursorfield
TYPE string.
FIELD-SYMBOLS: <fs_output>
<fs_functions>
<fs_tadir>
<fs_sxc_exit>
enlfdir,
trdir,
tfdir,
tstct.
TYPE
TYPE
TYPE
TYPE
ty_output,
s_function,
tadir,
sxc_exit.
*&---------------------------------------------------------------------*
*& Selection screen
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK block1.
PARAMETERS : p_tcode TYPE tcode, " Transaction code
p_pgmna TYPE pgmna. " Program ID
SELECTION-SCREEN END OF BLOCK block1.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" Retrieve program id from transaction code
IF p_tcode IS NOT INITIAL.
SELECT SINGLE pgmna FROM tstc
INTO gv_programid
WHERE tcode EQ p_tcode.
ELSEIF p_pgmna IS NOT INITIAL.
gv_programid = p_pgmna.
ENDIF.
" Retrieve development class
SELECT SINGLE * FROM tadir
INTO gs_tadir
WHERE pgmid
= 'R3TR'
AND object = 'PROG'
" Program
AND obj_name = gv_programid.
IF sy-subrc NE 0.
SELECT SINGLE * FROM tadir
INTO gs_tadir
WHERE pgmid
= 'R3TR'
AND object = 'TRAN'
" Transaction
AND obj_name = p_tcode.
ENDIF.
gv_devclass = gs_tadir-devclass.
" Retrieve all enhancements for program
SELECT * FROM tadir
INTO TABLE gt_tadir
WHERE pgmid = 'R3TR'
AND object IN ('SMOD', " User Exit
'SXSD', " BADI
'ENHO', " Enhancement Implementation
'ENHS') " Enhancement Spot
AND devclass = gv_devclass.
" Retrieve transaction description
SELECT SINGLE * FROM tstct
INTO gs_tstct
WHERE sprsl EQ sy-langu
AND tcode EQ p_tcode.
PERFORM write_header.
*&---------------------------------------------------------------------*
*& User Exits
*&---------------------------------------------------------------------*
CLEAR lv_enh_cnt.
LOOP AT gt_tadir ASSIGNING <fs_tadir> WHERE object EQ 'SMOD'.
MOVE-CORRESPONDING <fs_tadir> TO gs_output.
" Get information
gs_exit_name = gs_output-obj_name.
" Retrieve CMOD implementation project
SELECT SINGLE name FROM modact
INTO gs_output-impl_name
WHERE member = gs_output-obj_name.
WRITE:/1 sy-vline,
2 gs_output-fname HOTSPOT ON,
42 gs_output-fdesc,
110 gs_output-impl_output AS ICON,
115 gs_output-active_output AS ICON,
120 gs_output-impl_name HOTSPOT ON,
140 sy-vline.
APPEND gs_output TO gt_output.
ENDLOOP.
lv_enh_cnt = lv_enh_cnt + 1.
ENDLOOP.
WRITE:/(140) sy-uline.
IF lv_enh_cnt > 0.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
ENDIF.
WRITE:/(140) sy-uline.
WRITE:/1 sy-vline,
2 'No of Enhancements:' ,
20 lv_enh_cnt,
140 sy-vline.
WRITE:/(140) sy-uline.
*&---------------------------------------------------------------------*
*& BADIs
*&---------------------------------------------------------------------*
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/(140) sy-uline.
WRITE:/1 sy-vline,
2 'BADI',
41 sy-vline ,
42 'Description',
140 sy-vline.
WRITE:/(140) sy-uline.
CLEAR lv_badi_cnt.
LOOP AT gt_tadir ASSIGNING <fs_tadir> WHERE object EQ 'SXSD'.
CLEAR gs_output.
MOVE-CORRESPONDING <fs_tadir> TO gs_output.
" Implementation program
SELECT * FROM sxc_exit INTO TABLE gt_sxc_exit
WHERE exit_name = gs_output-obj_name.
SELECT SINGLE text INTO gs_output-obj_desc
FROM sxs_attrt
WHERE sprsl = sy-langu
AND exit_name = gs_output-obj_name.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 gs_output-obj_name HOTSPOT ON,
42 gs_output-obj_desc,
140 sy-vline.
LOOP AT gt_sxc_exit ASSIGNING <fs_sxc_exit>.
" Implementation text
CLEAR gs_output-impl_comment.
l_obj_name
TYPE exit_imp.
l_obj_name = p_obj_name.
SELECT SINGLE mig_enhname active FROM sxc_attr INTO (l_mig_enhname,l_active) W
HERE imp_name = l_obj_name.
DATA g_runtime_behavior TYPE string.
IF l_mig_enhname IS INITIAL.
IF l_active EQ 'X'.
PERFORM set_impl_status_active USING p_obj_name
p_exit_name
CHANGING p_impl_comment.
ELSE.
p_impl_comment = 'Implementation is not called'.
ENDIF.
ELSE.
PERFORM set_impl_status_by_enh USING l_mig_enhname l_active
CHANGING p_impl_comment.
ENDIF.
ENDFORM.
" SET_IMPL_STATUS_TEXT
*&---------------------------------------------------------------------*
*&
Form set_impl_status_by_enh
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->IM_MIG_ENHNAME text
*
-->IM_ACTIVE
text
*
-->P_IMPL_COMMENT text
*----------------------------------------------------------------------*
FORM set_impl_status_by_enh USING im_mig_enhname TYPE enhname
im_active
TYPE activity
CHANGING p_impl_comment TYPE string.
DATA: l_devclass
l_impl_name
l_switch_state
l_switch_id
l_switched_off
l_activated_in_img
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
devclass,
badi_impl_name,
sfw_switchpos,
sfw_switch_id,
boolean,
boolean.
* Order of switching: "Switch off" overrides "IMG off" overrides "Active off"
* is the implementation switched off?
SELECT SINGLE devclass FROM tadir INTO l_devclass
WHERE pgmid
= 'R3TR'
AND object = 'ENHO'
AND obj_name = im_mig_enhname.
"vjb
ENDIF.
IF l_switched_off EQ 'X'.
p_impl_comment = 'Implementation is not called (switch &)'.
REPLACE '&' IN p_impl_comment WITH l_switch_id.
ELSE.
* read customizing
TRY.
l_impl_name = im_mig_enhname.
CALL METHOD cl_enh_enbc_object=>read
EXPORTING
enhname
= im_mig_enhname
badi_impl = l_impl_name
IMPORTING
active_img = l_activated_in_img.
CATCH cx_enh_not_found.
ENDTRY.
IF l_activated_in_img EQ abap_true.
p_impl_comment = 'Implementation is called (activation through IMG)'.
ELSEIF im_active EQ abap_true.
p_impl_comment = 'Implementation is called'.
ELSE.
p_impl_comment = 'Implementation is not called'.
ENDIF.
ENDIF.
ENDFORM.
" SET_IMPL_STATUS_BY_ENH
*&---------------------------------------------------------------------*
*&
Form WRITE_HEADER
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM write_header.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(95) gs_tstct-ttext.
SKIP.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/(140) sy-uline.
WRITE:/1 sy-vline,
2 'Enhancement and its User Exits',
41 sy-vline ,
42 'Description',
110 'Impl',
115 'Act',
120 'Impl name',
140 sy-vline.
WRITE:/(140) sy-uline.
ENDFORM.
" WRITE_HEADER
*&---------------------------------------------------------------------*
*&
Form GET_FUNCTION_DESC
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_GS_OUTPUT_FNAME text
*
-->P_GS_OUTPUT_FTYPE text
*
<--P_GS_OUTPUT_FDESC text
*----------------------------------------------------------------------*
FORM get_function_desc USING
p_gs_output_fname
p_gs_output_ftype
CHANGING p_gs_output_fdesc.
DATA: lv_fname TYPE string,
lv_ftype TYPE modtyp.
lv_fname = p_gs_output_fname.
lv_ftype = p_gs_output_ftype.
CALL FUNCTION 'MOD_SAP_MEMBER_TEXT'
EXPORTING
memname
= lv_fname
memtyp
= lv_ftype
IMPORTING
text
= p_gs_output_fdesc
EXCEPTIONS
not_found = 1
wrong_name = 2
OTHERS
= 3.
ENDFORM.
" GET_FUNCTION_DESC
*&---------------------------------------------------------------------*
*&
Form TOOL_ACCES
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM tool_acces .
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation
= 'SHOW'
object_name
= sy-lisel+1(30)
object_type
= 'FUNC'
position
= 'PARM'
monitor_activation = 'X'
EXCEPTIONS
not_executed
= 1
invalid_object_type = 2
OTHERS
= 3.
ENDFORM.
" TOOL_ACCES
*&---------------------------------------------------------------------*
*&
Form set_impl_status_active
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_IMPL_NAME
text
*
-->P_EXIT_NAME
text
*
-->P_IMPL_COMMENT text
*----------------------------------------------------------------------*
FORM set_impl_status_active USING p_impl_name TYPE exit_imp
p_exit_name TYPE sobj_name
CHANGING p_impl_comment TYPE string.
ENDFORM.
" SET_IMPL_STATUS_ACTIVE