Sie sind auf Seite 1von 15

*&--------------------------------------------------------------------&* *& Report ZUTIL_BUSCAR_EXITBADISBTE &* *& &* *&--------------------------------------------------------------------&* *& Text Elements: &* *& P_DEVC Show

user-exits from development class &* *& P_LIMIT Limit submit program selection &* *& P_FUNC Show function modules &* *& P_SUBM Show submit programs &* *& S01 Selection data (TCode takes precedence over program name) &* *&--------------------------------------------------------------------&* REPORT Y_USER_EXIT NO STANDARD PAGE HEADING LINE-SIZE 158. TABLES: enlfdir. DATA: tabix w_linnum w_off w_index w_include w_prog w_incl w_area w_level, w_str(50) w_funcname LIKE TYPE TYPE LIKE LIKE LIKE LIKE LIKE "Additional Attributes for Function Modules sy-tabix, i, i, sy-tabix, trdir-name, trdir-name, trdir-name, rs38l-area,

TYPE c, LIKE tfdir-funcname. TYPE TYPE TYPE TYPE TYPE TYPE TYPE c c c c c c c VALUE VALUE VALUE VALUE VALUE VALUE VALUE 'Function modules selected: ', 'Submit programs selected: ', 'Enhanmt Type', 'Enhancement', 'Program/Include', 'Enhancement Name', 'Enhancement Description'.

CONSTANTS: c_fmod(40) c_subm(40) c_col1(12) c_col2(40) c_col3(30) c_col4(20) c_col5(40)

* Work Areas: ABAP Workbench DATA: BEGIN OF wa_d010inc. DATA: master TYPE d010inc-master. DATA: END OF wa_d010inc. DATA: BEGIN OF wa_tfdir. DATA: funcname TYPE tfdir-funcname, pname TYPE tfdir-pname, include TYPE tfdir-include. DATA: END OF wa_tfdir. DATA: BEGIN OF wa_tadir. DATA: devclass TYPE tadir-devclass. DATA: END OF wa_tadir. DATA: BEGIN OF wa_tstc. DATA: pgmna TYPE tstc-pgmna. DATA: END OF wa_tstc. DATA: BEGIN OF wa_tstcp. DATA: param TYPE tstcp-param. DATA: END OF wa_tstcp. DATA: BEGIN OF wa_enlfdir.

DATA: area TYPE enlfdir-area. DATA: END OF wa_enlfdir. * Work Areas: BADIs DATA: BEGIN OF wa_sxs_attr. DATA: exit_name TYPE sxs_attr-exit_name. DATA: END OF wa_sxs_attr. DATA: BEGIN OF wa_sxs_attrt. DATA: text TYPE sxs_attrt-text. DATA: END OF wa_sxs_attrt. * Work Areas: Enhancements DATA: BEGIN OF wa_modsap. DATA: member TYPE modsap-member. DATA: END OF wa_modsap. DATA: BEGIN OF wa_modsapa. DATA: name TYPE modsapa-name. DATA: END OF wa_modsapa. DATA: BEGIN OF wa_modsapt. DATA: modtext TYPE modsapt-modtext. DATA: END OF wa_modsapt. * Work Areas: Business Transaction Events DATA: BEGIN OF wa_tbe01t. DATA: text1 TYPE tbe01t-text1. DATA: END OF wa_tbe01t. DATA: BEGIN OF wa_tps01t. DATA: text1 TYPE tps01t-text1. DATA: END OF wa_tps01t. * user-exits TYPES: BEGIN OF t_userexit, type(12) TYPE c, pname LIKE trdir-name, txt(300), level TYPE c, modname(30) TYPE c, modtext(40) TYPE c, END OF t_userexit. DATA: i_userexit TYPE STANDARD TABLE OF t_userexit WITH HEADER LINE. * Function module developmnet classes TYPES: BEGIN OF t_devclass, clas LIKE trdir-clas, END OF t_devclass. DATA: i_devclass TYPE STANDARD TABLE OF t_devclass WITH HEADER LINE. * Submit programs TYPES: BEGIN OF t_submit, pname LIKE trdir-name, level, done, END OF t_submit. DATA: i_submit TYPE STANDARD TABLE OF t_submit WITH HEADER LINE.

* Source code TYPES: BEGIN OF t_sourcetab, line(200), END OF t_sourcetab. DATA: sourcetab TYPE STANDARD TABLE OF t_sourcetab DATA c_overflow(30000) TYPE c.

"#EC * (SLIN lgt!) "#EC * (SLIN lgt!) "#EC * (SLIN lgt!) WITH HEADER LINE.

* Description of an ABAP/4 source analysis token DATA: i_stoken TYPE STANDARD TABLE OF stoken WITH HEADER LINE. DATA wa_stoken LIKE i_stoken. * Description of an ABAP/4 source analysis statement DATA: i_sstmnt TYPE STANDARD TABLE OF sstmnt WITH HEADER LINE." * keywords for searching ABAP code TYPES: BEGIN OF t_keywords, word(30), END OF t_keywords. DATA: keywords TYPE STANDARD TABLE OF t_keywords WITH HEADER LINE. * function modules within program TYPES: BEGIN OF t_fmodule, name LIKE rs38l-name, pname LIKE trdir-name, pname2 LIKE trdir-name, level, bapi, done, END OF t_fmodule. DATA: i_fmodule TYPE STANDARD TABLE OF t_fmodule WITH HEADER LINE. *&--------------------------------------------------------------------&* *& Selection Options &* *&--------------------------------------------------------------------&* SELECTION-SCREEN BEGIN OF BLOCK selscr1 WITH FRAME TITLE text-s01. PARAMETER: p_pname LIKE trdir-name MEMORY ID rid, p_tcode LIKE syst-tcode, p_limit(4) TYPE n DEFAULT 100, p_devc LIKE rihea-dy_ofn DEFAULT ' ', p_func LIKE rihea-dy_ofn DEFAULT ' ', p_subm LIKE rihea-dy_ofn DEFAULT ' '. SELECTION-SCREEN END OF BLOCK selscr1. *&--------------------------------------------------------------------&* *& START-OF-SELECTION &* *&--------------------------------------------------------------------&* START-OF-SELECTION. IF p_pname IS INITIAL AND p_tcode IS INITIAL. MESSAGE e008(hrfpm). "Make entry on the selection screen STOP. ENDIF. * ensure P_LIMIT is not zero. IF p_limit = 0. p_limit = 1. ENDIF. PERFORM data_select. PERFORM get_submit_data.

PERFORM get_fm_data. PERFORM get_additional_data. PERFORM data_display. *&--------------------------------------------------------------------&* *& Form DATA_SELECT &* *&--------------------------------------------------------------------&* *& &* *&--------------------------------------------------------------------&* FORM data_select. * data selection message to sap gui CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' DESTINATION 'SAPGUI' KEEPING LOGICAL UNIT OF WORK EXPORTING text = 'Get programs/includes' EXCEPTIONS system_failure communication_failure . * determine search words keywords-word = 'CALL'. APPEND keywords. keywords-word = 'FORM'. APPEND keywords. keywords-word = 'PERFORM'. APPEND keywords. keywords-word = 'SUBMIT'. APPEND keywords. keywords-word = 'INCLUDE'. APPEND keywords. IF NOT p_tcode IS INITIAL. * get program name from TCode SELECT SINGLE pgmna FROM tstc INTO wa_tstc-pgmna WHERE tcode EQ p_tcode. IF NOT wa_tstc-pgmna IS INITIAL. p_pname = wa_tstc-pgmna. * TCode does not include program name, but does have refereve TCode ELSE. SELECT SINGLE param FROM tstcp INTO wa_tstcp-param WHERE tcode EQ p_tcode. IF sy-subrc = 0. CHECK wa_tstcp-param(1) = '/'. CHECK wa_tstcp-param+1(1) = '*'. IF wa_tstcp-param CA ' '. ENDIF. w_off = sy-fdpos + 1. SUBTRACT 2 FROM sy-fdpos. IF sy-fdpos GT 0. p_tcode = wa_tstcp-param+2(sy-fdpos). ENDIF. SELECT SINGLE pgmna FROM tstc INTO wa_tstc-pgmna WHERE tcode EQ p_tcode. p_pname = wa_tstc-pgmna. IF sy-subrc <> 0. MESSAGE e110(/saptrx/asc) WITH 'No program found for: ' p_tcode."#EC NOTEXT

"#EC NOTEXT

"#EC *

STOP. ENDIF. ELSE. MESSAGE e110(/saptrx/asc) WITH 'No program found for: ' p_tcode."#EC NOTEXT STOP. ENDIF. ENDIF. ENDIF. * Call customer-function aus Program coding READ REPORT p_pname INTO sourcetab. IF sy-subrc > 0. MESSAGE e017(enhancement) WITH p_pname RAISING no_program. ENDIF. SCAN ABAP-SOURCE sourcetab TOKENS INTO i_stoken STATEMENTS INTO i_sstmnt KEYWORDS FROM keywords OVERFLOW INTO c_overflow WITH INCLUDES. IF sy-subrc > 0. MESSAGE e130(enhancement) RAISING syntax_error. ENDIF. * check I_STOKEN for entries CLEAR w_linnum. DESCRIBE TABLE i_stoken LINES w_linnum. IF w_linnum GT 0. w_level = '0'. w_prog = ''. w_incl = ''. PERFORM data_search TABLES i_stoken USING w_level w_prog w_incl. ENDIF. ENDFORM. "DATA_SELECT

*&--------------------------------------------------------------------&* *& Form GET_FM_DATA &* *&--------------------------------------------------------------------&* *& &* *&--------------------------------------------------------------------&* FORM get_fm_data. * data selection message to sap gui CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' DESTINATION 'SAPGUI' KEEPING LOGICAL UNIT OF WORK EXPORTING text = 'Get function module data' EXCEPTIONS system_failure communication_failure . * Function module data SORT i_fmodule BY name. DELETE ADJACENT DUPLICATES FROM i_fmodule COMPARING name.

"#EC NOTEXT

"#EC *

LOOP AT i_fmodule WHERE done NE 'X'. CLEAR: i_stoken, i_sstmnt, sourcetab, wa_tfdir, w_include . REFRESH: i_stoken, i_sstmnt, sourcetab. CLEAR wa_tfdir. SELECT SINGLE funcname pname include FROM tfdir INTO wa_tfdir WHERE funcname = i_fmodule-name. CHECK sy-subrc = 0. CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT' EXPORTING program = wa_tfdir-pname IMPORTING group = w_area. CONCATENATE 'L' w_area 'U' wa_tfdir-include INTO w_include. i_fmodule-pname = w_include. i_fmodule-pname2 = wa_tfdir-pname. MODIFY i_fmodule. READ REPORT i_fmodule-pname INTO sourcetab. IF sy-subrc = 0. SCAN ABAP-SOURCE sourcetab TOKENS INTO i_stoken STATEMENTS INTO i_sstmnt KEYWORDS FROM keywords WITH INCLUDES. IF sy-subrc > 0. MESSAGE e130(enhancement) RAISING syntax_error. ENDIF. * check i_stoken for entries CLEAR w_linnum. DESCRIBE TABLE i_stoken LINES w_linnum. IF w_linnum GT 0. w_level = '1'. w_prog = i_fmodule-pname2. w_incl = i_fmodule-pname. PERFORM data_search TABLES i_stoken USING w_level w_prog w_incl. ENDIF. ENDIF. ENDLOOP. IF p_devc = 'X'. LOOP AT i_fmodule. CLEAR: wa_tadir, wa_enlfdir. SELECT SINGLE area FROM enlfdir INTO wa_enlfdir-area WHERE funcname = i_fmodule-name. CHECK NOT wa_enlfdir-area IS INITIAL. SELECT SINGLE devclass INTO wa_tadir-devclass FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND obj_name = wa_enlfdir-area. CHECK NOT wa_tadir-devclass IS INITIAL. MOVE wa_tadir-devclass TO i_devclass-clas. APPEND i_devclass.

i_fmodule-done = 'X'. MODIFY i_fmodule. ENDLOOP. SORT i_devclass. DELETE ADJACENT DUPLICATES FROM i_devclass. ENDIF. ENDFORM. "GET_FM_DATA

*&--------------------------------------------------------------------&* *& Form GET_SUBMIT_DATA &* *&--------------------------------------------------------------------&* *& &* *&--------------------------------------------------------------------&* FORM get_submit_data. * data selection message to sap gui CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' DESTINATION 'SAPGUI' KEEPING LOGICAL UNIT OF WORK EXPORTING text = 'Get submit data' EXCEPTIONS system_failure communication_failure . SORT i_submit. DELETE ADJACENT DUPLICATES FROM i_submit COMPARING pname. w_level = '0'. LOOP AT i_submit WHERE done NE 'X'. CLEAR: i_stoken, i_sstmnt, sourcetab. REFRESH: i_stoken, i_sstmnt, sourcetab. READ REPORT i_submit-pname INTO sourcetab. IF sy-subrc = 0. SCAN ABAP-SOURCE sourcetab TOKENS INTO i_stoken STATEMENTS INTO i_sstmnt KEYWORDS FROM keywords WITH INCLUDES. IF sy-subrc > 0. message e130(enhancement) raising syntax_error. CONTINUE. ENDIF.

"#EC NOTEXT

"#EC *

* check i_stoken for entries CLEAR w_linnum. DESCRIBE TABLE i_stoken LINES w_linnum. IF w_linnum GT 0. w_prog = i_submit-pname. w_incl = ''. PERFORM data_search TABLES i_stoken USING w_level w_prog w_incl. ENDIF. ENDIF. * restrict number of submit program selected for processing DESCRIBE TABLE i_submit LINES w_linnum.

IF w_linnum GE p_limit. w_level = '1'. ENDIF. i_submit-done = 'X'. MODIFY i_submit. ENDLOOP. ENDFORM. "GET_SUBMIT_DATA

*&--------------------------------------------------------------------&* *& Form DATA_SEARCH &* *&--------------------------------------------------------------------&* *& &* *&--------------------------------------------------------------------&* FORM data_search TABLES p_stoken STRUCTURE stoken USING p_level p_prog p_incl. LOOP AT p_stoken. CLEAR i_userexit. tabix = sy-tabix + 1. i_userexit-level = p_level. IF i_userexit-level = '0'. IF p_incl IS INITIAL. i_userexit-pname = p_pname. ELSE. CONCATENATE p_pname '/' p_incl INTO i_userexit-pname. ENDIF. ELSE. IF p_incl IS INITIAL. i_userexit-pname = p_prog. ELSE. CONCATENATE p_prog '/' p_incl INTO i_userexit-pname. ENDIF. ENDIF. * Include IF p_stoken-str EQ 'INCLUDE'. CHECK p_level EQ '0'. w_index = sy-tabix + 1. READ TABLE p_stoken INDEX w_index INTO wa_stoken. CHECK NOT wa_stoken-str CS 'STRUCTURE'. CHECK NOT wa_stoken-str CS 'SYMBOL'. READ TABLE i_submit WITH KEY pname = wa_stoken-str. IF sy-subrc <> 0. i_submit-pname = wa_stoken-str. i_submit-level = p_level. APPEND i_submit. ENDIF. ENDIF. * Enhancements IF p_stoken-str EQ 'CUSTOMER-FUNCTION'. CLEAR w_funcname. READ TABLE p_stoken INDEX tabix. TRANSLATE p_stoken-str USING ''' '. CONDENSE p_stoken-str. IF p_prog IS INITIAL. CONCATENATE 'EXIT' p_pname p_stoken-str INTO w_funcname

SEPARATED BY '_'. ELSE. CONCATENATE 'EXIT' p_prog p_stoken-str INTO w_funcname SEPARATED BY '_'. ENDIF. SELECT SINGLE member FROM modsap INTO wa_modsap-member WHERE member = w_funcname. IF sy-subrc = 0. " check for valid enhancement i_userexit-type = 'Enhancement'. i_userexit-txt = w_funcname. APPEND i_userexit. ELSE. CLEAR wa_d010inc. SELECT SINGLE master INTO wa_d010inc-master FROM d010inc WHERE include = p_prog. CONCATENATE 'EXIT' wa_d010inc-master p_stoken-str INTO w_funcname SEPARATED BY '_'. i_userexit-type = 'Enhancement'. i_userexit-txt = w_funcname. ENDIF. ENDIF. * BADIs IF p_stoken-str CS 'cl_exithandler='. w_index = sy-tabix + 4. READ TABLE p_stoken INDEX w_index INTO wa_stoken. i_userexit-txt = wa_stoken-str. REPLACE ALL OCCURRENCES OF '''' IN i_userexit-txt WITH space. i_userexit-type = 'BADI'. APPEND i_userexit. ENDIF. * Business transaction events IF p_stoken-str CS 'OPEN_FI_PERFORM'. i_userexit-type = 'BusTrEvent'. i_userexit-txt = p_stoken-str. REPLACE ALL OCCURRENCES OF '''' IN i_userexit-txt WITH space. i_userexit-modname = i_userexit-txt+16(8). CASE i_userexit-txt+25(1). WHEN 'E'. CLEAR wa_tbe01t. SELECT SINGLE text1 INTO wa_tbe01t-text1 FROM tbe01t WHERE event = i_userexit-txt+16(8) AND spras = sy-langu. IF wa_tbe01t-text1 IS INITIAL. i_userexit-modtext = '<Not active>'. "#EC NOTEXT ELSE. i_userexit-modtext = wa_tbe01t-text1. ENDIF. i_userexit-modname+8 = '/P&S'. "#EC NOTEXT WHEN 'P'. CLEAR wa_tps01t. SELECT SINGLE text1 INTO wa_tps01t-text1 FROM tps01t WHERE procs = i_userexit-txt+16(8) AND spras = sy-langu. i_userexit-modtext = wa_tps01t-text1. i_userexit-modname+8 = '/Process'. ENDCASE.

APPEND i_userexit. ENDIF. * Program exits IF p_stoken-str CS 'USEREXIT_'. i_userexit-type = 'Program Exit'. i_userexit-txt = p_stoken-str. REPLACE ALL OCCURRENCES OF '''' IN i_userexit-txt WITH space. APPEND i_userexit. ENDIF. * Submit programs IF p_stoken-str CS 'SUBMIT'. CHECK p_level EQ '0'. CHECK NOT p_stoken-str CS '_'. " ensure not SUBMIT_XXX w_index = sy-tabix + 1. READ TABLE p_stoken INDEX w_index INTO wa_stoken. CHECK NOT wa_stoken-str CS '_'. " ensure not SUBMIT_XXX REPLACE ALL OCCURRENCES OF '''' IN wa_stoken-str WITH space. READ TABLE i_submit WITH KEY pname = wa_stoken-str. IF sy-subrc <> 0. i_submit-pname = wa_stoken-str. i_submit-level = p_level. APPEND i_submit. ENDIF. ENDIF. * Perform routines (which reference external programs) IF p_stoken-str CS 'PERFORM'. CHECK p_level EQ '0'. w_index = sy-tabix + 1. READ TABLE p_stoken INDEX w_index INTO wa_stoken. IF NOT wa_stoken-ovfl IS INITIAL. w_off = wa_stoken-off1 + 10. w_str = c_overflow+w_off(30). FIND ')' IN w_str MATCH OFFSET w_off. w_off = w_off + 1. wa_stoken-str = w_str(w_off). ENDIF. CHECK wa_stoken-str CS '('. w_off = 0. WHILE sy-subrc = 0. IF wa_stoken-str+w_off(1) EQ '('. REPLACE SECTION OFFSET w_off LENGTH 1 OF wa_stoken-str WITH ''. REPLACE ALL OCCURRENCES OF ')' IN wa_stoken-str WITH space. READ TABLE i_submit WITH KEY pname = wa_stoken-str. IF sy-subrc <> 0. i_submit-pname = wa_stoken-str. APPEND i_submit. ENDIF. EXIT. ELSE. REPLACE SECTION OFFSET w_off LENGTH 1 OF wa_stoken-str WITH ''. SHIFT wa_stoken-str LEFT DELETING LEADING space. ENDIF. ENDWHILE.

ENDIF. * Function modules IF p_stoken-str CS 'FUNCTION'. CLEAR i_fmodule. CHECK p_level EQ '0'. w_index = sy-tabix + 1. READ TABLE p_stoken INDEX w_index INTO wa_stoken. ** * * * if wa_stoken-str cs 'WF_'. if wa_stoken-str cs 'IF_'. break-point. endif. IF wa_stoken-str CS 'BAPI'. i_fmodule-bapi = 'X'. ENDIF. REPLACE FIRST OCCURRENCE OF '''' IN wa_stoken-str WITH space. REPLACE FIRST OCCURRENCE OF '''' IN wa_stoken-str WITH space. IF sy-subrc = 4. " didn't find 2nd quote (ie name truncated) CLEAR wa_tfdir. CONCATENATE wa_stoken-str '%' INTO wa_stoken-str. SELECT SINGLE funcname INTO wa_tfdir-funcname FROM tfdir WHERE funcname LIKE wa_stoken-str. IF sy-subrc = 0. i_fmodule-name = wa_tfdir-funcname. ELSE. CONTINUE. ENDIF. ELSE. i_fmodule-name = wa_stoken-str. ENDIF. i_fmodule-level = p_level. APPEND i_fmodule. ENDIF. ENDLOOP. ENDFORM. "DATA_SEARCH

*&--------------------------------------------------------------------&* *& Form GET_ADDITIONAL_DATA &* *&--------------------------------------------------------------------&* *& &* *&--------------------------------------------------------------------&* FORM get_additional_data. * data selection message to sap gui CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' DESTINATION 'SAPGUI' KEEPING LOGICAL UNIT OF WORK EXPORTING text = 'Get additional data' EXCEPTIONS system_failure communication_failure . LOOP AT i_userexit.

"#EC NOTEXT

"#EC *

* Enhancement data IF i_userexit-type CS 'Enh'. CLEAR: wa_modsapa. SELECT SINGLE name INTO wa_modsapa-name FROM modsap WHERE member = i_userexit-txt. CHECK sy-subrc = 0. i_userexit-modname = wa_modsapa-name. CLEAR wa_modsapt. SELECT SINGLE modtext INTO wa_modsapt-modtext FROM modsapt WHERE name = wa_modsapa-name AND sprsl = sy-langu. i_userexit-modtext = wa_modsapt-modtext. ENDIF. * BADI data IF i_userexit-type EQ 'BADI'. CLEAR wa_sxs_attr. SELECT SINGLE exit_name INTO wa_sxs_attr-exit_name FROM sxs_attr WHERE exit_name = i_userexit-txt. IF sy-subrc = 0. i_userexit-modname = i_userexit-txt. ELSE. i_userexit-modname = 'Dynamic call'. "#EC NOTEXT ENDIF. CLEAR wa_sxs_attrt. SELECT SINGLE text INTO wa_sxs_attrt-text FROM sxs_attrt WHERE exit_name = wa_sxs_attr-exit_name AND sprsl = sy-langu. i_userexit-modtext = wa_sxs_attrt-text. ENDIF. MODIFY i_userexit. ENDLOOP. * get enhancements via program package CLEAR wa_tadir. SELECT SINGLE devclass INTO wa_tadir-devclass FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND obj_name = p_pname. IF sy-subrc = 0. CLEAR: wa_modsapa, wa_modsapt. SELECT name FROM modsapa INTO wa_modsapa-name WHERE devclass = wa_tadir-devclass. SELECT SINGLE modtext FROM modsapt INTO wa_modsapt-modtext WHERE name = wa_modsapa-name AND sprsl = sy-langu. READ TABLE i_userexit WITH KEY modname = wa_modsapa-name. IF sy-subrc <> 0. i_userexit-modtext = wa_modsapt-modtext. i_userexit-type = 'Enhancement'. "#EC NOTEXT i_userexit-modname = wa_modsapa-name. i_userexit-txt = 'Determined from program DevClass'."#EC NOTEXT i_userexit-pname = 'Unknown'. "#EC NOTEXT APPEND i_userexit. ENDIF. ENDSELECT. ENDIF.

ENDFORM.

"GET_ADDITIONAL_DATA

*&--------------------------------------------------------------------&* *& Form DATA_DISPLAY &* *&--------------------------------------------------------------------&* *& &* *&--------------------------------------------------------------------&* FORM data_display. * data selection message to sap gui CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' DESTINATION 'SAPGUI' KEEPING LOGICAL UNIT OF WORK EXPORTING text = 'Prepare screen for display' "#EC NOTEXT EXCEPTIONS system_failure communication_failure . "#EC * SORT i_userexit BY type txt modname. DELETE ADJACENT DUPLICATES FROM i_userexit COMPARING txt modname. * format WRITE: WRITE: ULINE. FORMAT WRITE: headings 'Enhancements from main program'. /. "#EC NOTEXT

COLOR COL_HEADING. / sy-vline, (12) c_col1, sy-vline, (40) c_col2, sy-vline, (30) c_col3, sy-vline, (20) c_col4, sy-vline, (40) c_col5, sy-vline. FORMAT RESET. ULINE.

"Enhanmt Type "Enhancement "Program/Include "Enhancement name "Enhancement description

* format lines LOOP AT i_userexit. * set line colour CASE i_userexit-type. WHEN 'Enhancement'. FORMAT COLOR 3 INTENSIFIED WHEN 'BADI'. FORMAT COLOR 4 INTENSIFIED WHEN 'BusTrEvent'. FORMAT COLOR 5 INTENSIFIED WHEN 'Program Exit'. FORMAT COLOR 6 INTENSIFIED WHEN OTHERS. FORMAT RESET. ENDCASE. WRITE: / sy-vline, i_userexit-type,

OFF. OFF. OFF. OFF.

sy-vline, i_userexit-txt(40), sy-vline, i_userexit-pname(30), sy-vline, i_userexit-modname(20), sy-vline, i_userexit-modtext(40), sy-vline. ENDLOOP. FORMAT RESET. ULINE. * user-exits from development class of function modules IF p_devc = 'X'. WRITE: /. WRITE: / 'User-exits from function module development class'. WRITE: 157' '. ULINE (90). WRITE: 157' '. LOOP AT i_devclass. CLEAR wa_modsapa. SELECT name FROM modsapa INTO wa_modsapa WHERE devclass = i_devclass-clas. SELECT SINGLE name modtext INTO CORRESPONDING FIELDS OF wa_modsapt FROM modsapt WHERE name = wa_modsapa-name AND sprsl = sy-langu. FORMAT COLOR 3 INTENSIFIED OFF. WRITE: / sy-vline, (12) 'Enhancement', sy-vline, wa_modsapa-name, sy-vline, wa_modsapt-modtext, sy-vline. ENDSELECT. ENDLOOP. ULINE (90). FORMAT RESET. ENDIF. DESCRIBE TABLE i_fmodule LINES w_linnum. WRITE: / c_fmod , AT 35 w_linnum. WRITE: 157''. IF p_func = 'X'. * display fuction modules used in program ULINE (38). WRITE: 157''. LOOP AT i_fmodule. WRITE: sy-vline, i_fmodule-name, sy-vline, i_fmodule-bapi, sy-vline. WRITE: 157''. ENDLOOP. "#EC NOTEXT

ULINE (38). ENDIF. DESCRIBE TABLE i_submit LINES w_linnum. WRITE: / c_subm , AT 35 w_linnum. WRITE: 157''. IF p_subm = 'X'. * display submit programs used in program ULINE (44). WRITE: 157''. LOOP AT i_submit. WRITE: sy-vline, i_submit-pname, sy-vline. WRITE: 157''. ENDLOOP. ULINE (44). ENDIF. * issue message with number of user-exits displayed DESCRIBE TABLE i_userexit LINES w_linnum. MESSAGE s697(56) WITH w_linnum. ENDFORM. "DATA_DISPLAY "#EC NOTEXT

*Messages *---------------------------------------------------------* * Message class: /SAPTRX/ASC *110 &1&2 * * Message class: 56 *697 No existe ninguna entrada en tabla &. * * Message class: ENHANCEMENT *017 El dynpro & no existe *130 Error de sintaxis en dynpro (sin lgica de proceso?) * * Message class: HRFPM *008 Rellene la pantalla de seleccin

Das könnte Ihnen auch gefallen