機能名:プログラムステップ数カウント
*&---------------------------------------------------------------------* *& プログラムID :ZAXYT_TOOL_01 *& プログラム名称:プログラムのステップ数カウント *& 処 理 概 要:PGMのSTEP数をカウントしALVに出力する *& 作 成 者 :SAPDMOT *& 作 成 日 :2023/08/08 *&---------------------------------------------------------------------* *& 変 更 番 号: *& 変 更 者 : *& 変 更 日 : *& 変 更 内 容: *&---------------------------------------------------------------------* REPORT Z1OTR0050 NO STANDARD PAGE HEADING MESSAGE-ID YMSG LINE-SIZE 255 LINE-COUNT 65. ************************************************************************ * TABLES ************************************************************************ ************************************************************************ * INCLUDE ************************************************************************ ************************************************************************ * TYPES(内部テーブル構造) ************************************************************************ *--- ALV TYPE-POOLS: SLIS. *--- ソース格納 TYPES: BEGIN OF TYP_PGM, SORCE TYPE C LENGTH 300, END OF TYP_PGM. *--- プログラム名 TYPES: BEGIN OF TYP_NAME, FUNCNAME TYPE TFDIR-FUNCNAME, NAME TYPE PROGNAME, DEVCLASS TYPE TADIR-DEVCLASS, END OF TYP_NAME. *--- レポート表題 TYPES: BEGIN OF TYP_REP1, NAME TYPE PROGNAME, TEXT TYPE C LENGTH 100, END OF TYP_REP1. *--- ALV OUTPUT TYPES: BEGIN OF TYP_ALV, DEVCLASS TYPE TADIR-DEVCLASS, "パッケージ NAME TYPE PROGDIR-NAME, "PGM名/汎用モジュール INCLUDE TYPE D010INC-INCLUDE, "INCLUDE TEXT TYPE TRDIRT-TEXT, "テキスト COUNT TYPE P LENGTH 16, "件数 FLG_ERR TYPE C LENGTH 1, "エラーフラグ ERR_MSG TYPE C LENGTH 100, "エラーメッセージ END OF TYP_ALV. *&---------------------------------------------------------------------* * DATA (内部テーブル定義) *&---------------------------------------------------------------------* DATA: TADIR TYPE TADIR, "リポジトリオブジェクトのディレクトリ PROGDIR TYPE PROGDIR, "REPOSRCのビュー APPL_PROG TYPE APPL_PROG, "D010SINF TADIRによる結合 TRDIRT TYPE TRDIRT, "プログラムの表題テキスト TDEVCT TYPE TDEVCT. "パッケージのテキスト *--- ソース格納 DATA: TAB_PGM TYPE TABLE OF TYP_PGM, REC_PGM TYPE TYP_PGM. *--- プログラム名 DATA: TAB_NAME TYPE TABLE OF TYP_NAME, REC_NAME TYPE TYP_NAME. *--- 「TADIR」取得用 DATA: TAB_TADIR TYPE STANDARD TABLE OF TADIR, REC_TADIR TYPE TADIR. *--- 「D010INC」取得用 DATA: TAB_INCL TYPE STANDARD TABLE OF D010INC, REC_INCL TYPE D010INC, TAB_INCL_SAVE TYPE STANDARD TABLE OF D010INC. *--- レポート表題 DATA: TAB_REP1 TYPE TABLE OF TYP_REP1, REC_REP1 TYPE TYP_REP1. *--- 処理対象INCLUDEレンジテーブル DATA: RG_INCL TYPE RANGE OF D010INC-INCLUDE. *[ALV出力用] *--- ALVデータ DATA: TAB_ALV TYPE STANDARD TABLE OF TYP_ALV, REC_ALV TYPE TYP_ALV, *--- ALVデータ編集用 TAB_EDIT TYPE STANDARD TABLE OF TYP_ALV, REC_EDIT TYPE TYP_ALV. *--- 項目カタログ設定用 DATA: TAB_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, REC_FIELDCAT TYPE SLIS_FIELDCAT_ALV. *--- 初期ソート設定用 DATA: TAB_SORT TYPE SLIS_T_SORTINFO_ALV, REC_SORT TYPE SLIS_SORTINFO_ALV. * レイアウト DATA: REC_LAYOUT TYPE SLIS_LAYOUT_ALV. ************************************************************************ * CONSTANTS ************************************************************************ CONSTANTS: C_FLG_ON TYPE C LENGTH 1 VALUE 'X'. ************************************************************************ * PARAMETERS & SELECTION-SCREEN ************************************************************************ *--- オブジェクト属性 SELECTION-SCREEN: BEGIN OF BLOCK A WITH FRAME TITLE C_TEXT01, *--- 汎用モジュール BEGIN OF LINE, COMMENT 01(12) C_TEXT02 FOR FIELD P_FM, POSITION 15. PARAMETERS: P_FM TYPE C RADIOBUTTON GROUP RAD1. SELECTION-SCREEN: END OF LINE, *--- その他 BEGIN OF LINE, COMMENT 01(06) C_TEXT03 FOR FIELD P_PGM, POSITION 15. PARAMETERS P_PGM TYPE C RADIOBUTTON GROUP RAD1. SELECTION-SCREEN: END OF LINE, END OF BLOCK A, *--- パッケージ BEGIN OF LINE, COMMENT 01(10) C_TEXT04 FOR FIELD S_DEVCL, POSITION 20. SELECT-OPTIONS S_DEVCL FOR TADIR-DEVCLASS. SELECTION-SCREEN: END OF LINE, *--- プログラムID BEGIN OF LINE, COMMENT 01(16) C_TEXT05 FOR FIELD s_PGM, POSITION 23. SELECT-OPTIONS S_PGM FOR TADIR-OBJ_NAME. SELECTION-SCREEN: END OF LINE, SKIP 1, *--- コメント行カウント(X:コメント含む,SPACE:コメントなし) BEGIN OF LINE, COMMENT 01(16) C_TEXT06 FOR FIELD P_COMM, POSITION 23. PARAMETERS P_COMM AS CHECKBOX DEFAULT SPACE. SELECTION-SCREEN: END OF LINE, *--- 詳細レコード出力 BEGIN OF LINE, COMMENT 01(16) C_TEXT07 FOR FIELD P_DETAIL, POSITION 23. PARAMETERS P_DETAIL AS CHECKBOX DEFAULT SPACE. SELECTION-SCREEN END OF LINE. ************************************************************************ INITIALIZATION. ************************************************************************ *--- 選択テキストセット PERFORM F_SELECTION_TEXT_SET. ************************************************************************ AT SELECTION-SCREEN. ************************************************************************ IF S_PGM[] IS INITIAL AND S_DEVCL[] IS INITIAL. SET CURSOR FIELD 'S_DEVCL-LOW'. MESSAGE E000(YMSG) WITH 'プログラム名 または パッケージ' 'を入力してください' . ENDIF. ************************************************************************ START-OF-SELECTION. ************************************************************************ PERFORM F_MAIN. ************************************************************************ TOP-OF-PAGE. ************************************************************************ *&---------------------------------------------------------------------* *& Form F_SELECTION_TEXT_SET *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_SELECTION_TEXT_SET . MOVE: 'オブジェクト' TO C_TEXT01, '汎用モジュール' TO C_TEXT02, 'その他' TO C_TEXT03, 'パッケージ' TO C_TEXT04, 'プログラムID' TO C_TEXT05, 'コメント行カウント' TO C_TEXT06, '詳細レコード出力' TO C_TEXT07. ENDFORM. *&---------------------------------------------------------------------* *& Form F_MAIN *&---------------------------------------------------------------------* *& 処理 *&---------------------------------------------------------------------* FORM F_MAIN . *--- 変数の初期化 PERFORM F_INITIALIZE. *--- 対象データ取得 PERFORM F_GET_DATA. *--- 対象データチェック/出力データ格納 PERFORM F_PGM_CHECK. *--- データ件数サマリ PERFORM F_SUM_COUNT. *--- ALV出力処理 PERFORM F_OUTPUT_ALV. ENDFORM. *&---------------------------------------------------------------------* *& Form F_INITIALIZE *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_INITIALIZE . *--- ローカル変数定義 DATA L_REC_INCL LIKE LINE OF RG_INCL. CLEAR: TAB_TADIR, TAB_NAME, RG_INCL, TAB_EDIT, TAB_ALV, TAB_FIELDCAT, TAB_SORT, REC_LAYOUT. *--- 処理対象INCLUDE設定 MOVE: 'I' TO L_REC_INCL-SIGN, 'CP' TO L_REC_INCL-OPTION. *--- 汎用モジュール用 IF P_FM = C_FLG_ON. MOVE 'L*' TO L_REC_INCL-LOW. ELSE. MOVE: 'M*' TO L_REC_INCL-LOW. ENDIF. APPEND L_REC_INCL TO RG_INCL. ENDFORM. *&---------------------------------------------------------------------* *& Form F_GET_DATA *&---------------------------------------------------------------------* *& 対象データ取得 *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_GET_DATA . *--- 「TADIR」所得 PERFORM F_GET_TADIR. LOOP AT TAB_TADIR INTO REC_TADIR. CLEAR: REC_NAME. *--- 属性:汎用モジュール IF P_FM = C_FLG_ON. PERFORM F_GET_TFDIR. *--- 属性:その他 ELSE. PERFORM F_PROGDIR_SELECT. ENDIF. ENDLOOP. IF TAB_NAME[] IS INITIAL. MESSAGE S000(YMSG) WITH '対象データが存在しません' DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. ENDIF. SORT TAB_NAME ASCENDING BY FUNCNAME NAME. *--- 重複データ削除 DELETE ADJACENT DUPLICATES FROM TAB_NAME COMPARING FUNCNAME NAME. *--- テキスト取得 PERFORM F_GET_TEXT. ENDFORM. *&---------------------------------------------------------------------* *& Form F_GET_TEXT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_GET_TEXT . CLEAR TAB_REP1. IF P_FM = C_FLG_ON. SELECT FUNCNAME STEXT INTO TABLE TAB_REP1 FROM TFTIT WHERE SPRAS = SY-LANGU "言語キー AND FUNCNAME IN S_PGM. "汎用モジュール ELSE. SELECT NAME TEXT FROM TRDIRT INTO TABLE TAB_REP1 WHERE NAME IN S_PGM AND SPRSL = SY-LANGU. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form F_PGM_CHECK *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_PGM_CHECK . LOOP AT TAB_NAME INTO REC_NAME. PERFORM F_GET_D010INC. PERFORM F_GET_PGM_INFO USING REC_NAME-NAME C_FLG_ON. LOOP AT TAB_INCL INTO REC_INCL. PERFORM F_GET_PGM_INFO USING REC_INCL-INCLUDE SPACE. IF P_FM IS INITIAL. CLEAR REC_INCL-MASTER. APPEND REC_INCL TO TAB_INCL_SAVE. ENDIF. ENDLOOP. ENDLOOP. IF TAB_EDIT[] IS INITIAL. MESSAGE S000(YMSG) DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form F_SUM_COUNNT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_SUM_COUNT . DATA: L_FLG_NEW TYPE C LENGTH 1, L_FLG_END TYPE C LENGTH 1, L_TOT_CNT TYPE P LENGTH 16. SORT TAB_EDIT BY DEVCLASS NAME INCLUDE ASCENDING. SORT TAB_INCL_SAVE BY INCLUDE ASCENDING. DELETE ADJACENT DUPLICATES FROM TAB_INCL_SAVE COMPARING INCLUDE. LOOP AT TAB_INCL_SAVE INTO REC_INCL. DELETE TAB_EDIT WHERE NAME = REC_INCL-INCLUDE. ENDLOOP. IF P_DETAIL = C_FLG_ON. APPEND LINES OF TAB_EDIT TO TAB_ALV. ENDIF. LOOP AT TAB_EDIT INTO REC_EDIT. AT NEW NAME. MOVE C_FLG_ON TO L_FLG_NEW. ENDAT. IF L_FLG_NEW = C_FLG_ON. CLEAR: L_TOT_CNT, REC_ALV, L_FLG_NEW. MOVE REC_EDIT TO REC_ALV. ENDIF. L_TOT_CNT = L_TOT_CNT + REC_EDIT-COUNT. IF REC_EDIT-FLG_ERR IS NOT INITIAL. MOVE REC_EDIT-FLG_ERR TO REC_ALV-FLG_ERR. ENDIF. IF REC_EDIT-ERR_MSG IS NOT INITIAL. MOVE REC_EDIT-ERR_MSG TO REC_ALV-ERR_MSG. ENDIF. AT END OF NAME. MOVE C_FLG_ON TO L_FLG_END. ENDAT. IF L_FLG_END = C_FLG_ON. MOVE L_TOT_CNT TO REC_ALV-COUNT. APPEND REC_ALV TO TAB_ALV. CLEAR: L_FLG_END, L_TOT_CNT, REC_ALV. ENDIF. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form F_PROGDIR_SELECT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_PROGDIR_SELECT . SELECT SINGLE NAME FROM PROGDIR INTO REC_NAME-NAME WHERE NAME = REC_TADIR-OBJ_NAME "プログラム名 AND STATE = 'A'. "ステータス有効 IF SY-SUBRC = 0. MOVE REC_TADIR-DEVCLASS TO REC_NAME-DEVCLASS. APPEND REC_NAME TO TAB_NAME. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form F_GET_D010INC *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_GET_D010INC . CLEAR: TAB_INCL. SELECT * INTO TABLE TAB_INCL FROM D010INC WHERE MASTER = REC_NAME-NAME AND INCLUDE IN RG_INCL. ENDFORM. FORM F_EDIT. DATA L_OFFSET TYPE I. DELETE TAB_PGM WHERE SORCE IS INITIAL. DELETE TAB_PGM WHERE SORCE+0(1) = '*'. DELETE TAB_PGM WHERE SORCE+0(1) = '"'. LOOP AT TAB_PGM INTO REC_PGM. FIND '"' IN REC_PGM-SORCE MATCH OFFSET L_OFFSET. IF SY-SUBRC = 0. IF L_OFFSET > 1. L_OFFSET = L_OFFSET - 1. ENDIF. IF REC_PGM-SORCE+0(L_OFFSET) IS INITIAL. DELETE TAB_PGM. ENDIF. ENDIF. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form F_GET_TFDIR *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_GET_TFDIR . DATA L_PNAME TYPE TFDIR-PNAME. IF REC_TADIR-OBJ_NAME IS INITIAL. EXIT. ENDIF. CONCATENATE 'SAPL' REC_TADIR-OBJ_NAME INTO L_PNAME. SELECT FUNCNAME PNAME UP TO 1 ROWS FROM TFDIR INTO (REC_NAME-FUNCNAME, REC_NAME-NAME) WHERE FUNCNAME IN S_PGM AND PNAME LIKE L_PNAME. EXIT. ENDSELECT. IF SY-SUBRC = 0. MOVE REC_TADIR-DEVCLASS TO REC_NAME-DEVCLASS. APPEND REC_NAME TO TAB_NAME. ENDIF. ENDFORM. FORM F_GET_TADIR. DATA: L_PGMID TYPE TADIR-PGMID VALUE 'R3TR', L_OBJECT TYPE TADIR-OBJECT, L_FG TYPE TADIR-OBJECT VALUE 'FUGR', L_PGM TYPE TADIR-OBJECT VALUE 'PROG'. IF P_FM = C_FLG_ON. MOVE L_FG TO L_OBJECT. SELECT * INTO TABLE TAB_TADIR FROM TADIR WHERE PGMID = L_PGMID AND OBJECT = L_OBJECT AND DEVCLASS IN S_DEVCL. ELSE. MOVE L_PGM TO L_OBJECT. SELECT * INTO TABLE TAB_TADIR FROM TADIR WHERE PGMID = L_PGMID AND OBJECT = L_OBJECT AND OBJ_NAME IN S_PGM AND DEVCLASS IN S_DEVCL. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form F_GET_PGM_INFO *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> REC_NAME_NAME *& --> C_FLG_ON *&---------------------------------------------------------------------* FORM F_GET_PGM_INFO USING VALUE(L_P_NAME) VALUE(L_P_FLG). CLEAR REC_EDIT. IF P_FM = C_FLG_ON. MOVE REC_NAME-FUNCNAME TO REC_EDIT-NAME. ELSE. MOVE REC_NAME-NAME TO REC_EDIT-NAME. ENDIF. IF L_P_NAME = C_FLG_ON. CLEAR REC_REP1. READ TABLE TAB_REP1 INTO REC_REP1 WITH KEY NAME = REC_EDIT-NAME. ELSE. MOVE L_P_NAME TO REC_EDIT-INCLUDE. ENDIF. MOVE: REC_REP1-TEXT TO REC_EDIT-TEXT, REC_NAME-DEVCLASS TO REC_EDIT-DEVCLASS. TRY . READ REPORT L_P_NAME INTO TAB_PGM. CATCH CX_SY_READ_SRC_LINE_TOO_LONG. MOVE C_FLG_ON TO REC_EDIT-FLG_ERR. MESSAGE S000(YMSG) WITH 'SOURCE IS OVER 3000BITE..' INTO REC_EDIT-ERR_MSG. APPEND REC_EDIT TO TAB_EDIT. ENDTRY. IF SY-SUBRC = 0. IF P_COMM IS INITIAL. PERFORM F_EDIT. ENDIF. *--- GET SOURCE LINE DESCRIBE TABLE TAB_PGM LINES REC_EDIT-COUNT. ELSE. MOVE C_FLG_ON TO REC_EDIT-FLG_ERR. MESSAGE S000(YMSG) WITH 'PGM' L_P_NAME 'は存在しません' INTO REC_EDIT-ERR_MSG. ENDIF. APPEND REC_EDIT TO TAB_EDIT. ENDFORM. *&---------------------------------------------------------------------* *& Form F_OUTPUT_ALV *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_OUTPUT_ALV . PERFORM F_SET_FIELDCAT. PERFORM F_SET_SORT. PERFORM F_CALL_ALV_GRID_DISPLAY. ENDFORM. *&---------------------------------------------------------------------* *& Form F_SET_FIELDCAT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_SET_FIELDCAT . PERFORM F_SET_FIELDCAT_ITEMS USING '1' 'DEVCLASS' 'パッケージ'. PERFORM F_SET_FIELDCAT_ITEMS USING '2' 'NAME' 'PROGRAM ID'. PERFORM F_SET_FIELDCAT_ITEMS USING '3' 'DEVCLASS' 'PGM NAME'. PERFORM F_SET_FIELDCAT_ITEMS USING '4' 'INCLUDE' 'INCLUDE'. PERFORM F_SET_FIELDCAT_ITEMS USING '5' 'COUNT' 'プログラムステップ数'. PERFORM F_SET_FIELDCAT_ITEMS USING '6' 'FLG_ERR' 'FLG_ERR'. PERFORM F_SET_FIELDCAT_ITEMS USING '7' 'ERR_MSG' 'ERR_MSG'. ENDFORM. *&---------------------------------------------------------------------* *& Form F_SET_FIELDCAT_ITEMS *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> P_ *& --> P_ *& --> P_ *&---------------------------------------------------------------------* FORM F_SET_FIELDCAT_ITEMS USING VALUE(L_P_COL) VALUE(L_P_ITEM) VALUE(L_P_TEXT). CLEAR REC_FIELDCAT. MOVE: L_P_COL TO REC_FIELDCAT-COL_POS, L_P_ITEM TO REC_FIELDCAT-FIELDNAME. MOVE L_P_TEXT TO : REC_FIELDCAT-DDICTXT, REC_FIELDCAT-SELTEXT_L, REC_FIELDCAT-SELTEXT_M, REC_FIELDCAT-SELTEXT_S. IF L_P_COL = '5'. MOVE C_FLG_ON TO REC_FIELDCAT-DO_SUM. ENDIF. APPEND REC_FIELDCAT TO TAB_FIELDCAT. ENDFORM. *&---------------------------------------------------------------------* *& Form F_SET_SORT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_SET_SORT . CLEAR REC_SORT. MOVE: '1' TO REC_SORT-SPOS, 'DEVCLASS' TO REC_SORT-FIELDNAME, C_FLG_ON TO REC_SORT-UP, P_DETAIL TO REC_SORT-SUBTOT. APPEND REC_SORT TO TAB_SORT. MOVE: '2' TO REC_SORT-SPOS, 'NAME' TO REC_SORT-FIELDNAME, C_FLG_ON TO REC_SORT-UP, P_DETAIL TO REC_SORT-SUBTOT. APPEND REC_SORT TO TAB_SORT. ENDFORM. *&---------------------------------------------------------------------* *& Form F_CALL_ALV_GRID_DISPLAY *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM F_CALL_ALV_GRID_DISPLAY . MOVE: C_FLG_ON TO REC_LAYOUT-COLWIDTH_OPTIMIZE, C_FLG_ON TO REC_LAYOUT-ZEBRA. SET PF-STATUS 'STANDARD'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' * I_CALLBACK_PROGRAM = ' ' * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = IS_LAYOUT = REC_LAYOUT IT_FIELDCAT = TAB_FIELDCAT * IT_EXCLUDING = * IT_SPECIAL_GROUPS = IT_SORT = TAB_SORT * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' I_SAVE = 'A' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * O_PREVIOUS_SRAL_HANDLER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES T_OUTTAB = TAB_ALV EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. * Implement suitable error handling here MESSAGE S000(YMSG) WITH 'REUSE_ALV_GRID_DISPLAY'. LEAVE LIST-PROCESSING. ENDIF. ENDFORM.