« : Декабрь 13, 2012, 02:16:59 pm »
Знаю что таких программ много и есть стандартные, но мало ли вдруг кому-то пригодиться
REPORT ZXXX NO STANDARD PAGE HEADING LINE-SIZE 246.
TABLES: TRDIRT.
DATA: BEGIN OF TPROG OCCURS 0,
PROG LIKE D010SINF-PROG,
CNAM LIKE D010SINF-CNAM,
CDAT LIKE D010SINF-CDAT,
UNAM LIKE D010SINF-UNAM,
UDAT LIKE D010SINF-UDAT,
END OF TPROG.
DATA: BEGIN OF T OCCURS 0,
LINE(255) TYPE c,
END OF T.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF end_wa OCCURS 0,
TABIX type syst-tabix,
line like T-line,
TRDIRT_TEXT type TRDIRT-TEXT.
include STRUCTURE TPROG.
DATA: END OF end_wa.
DATA: wa_QQQ(150) TYPE c,
wa_zzz(50) TYPE c,
z_index TYPE I.
DATA: gc_layout TYPE REF TO cl_salv_layout, "для варианта
gc_alv_table TYPE REF TO cl_salv_table,
gc_columns TYPE REF TO cl_salv_columns_table,
gc_colwork TYPE REF TO cl_salv_column_table,
gc_display TYPE REF TO cl_salv_display_settings,
gc_events TYPE REF TO cl_salv_events_table,
gc_functions TYPE REF TO cl_salv_functions,
gc_sorts type ref to cl_salv_sorts.
.
DATA opt TYPE ctu_params.
FIELD-SYMBOLS: <t> LIKE LINE OF t,
<TPROG> LIKE LINE OF TPROG,
<end_wa> LIKE LINE OF end_wa.
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
* CLASS-DATA:
* lo_popup TYPE REF TO cl_salv_table.
METHODS:
on_double_click FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*---------------------------------------------------------------------*
* §5.2 implement the events for handling the events of cl_salv_table
*---------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_double_click. "Для двойного щелчка
read TABLE end_wa ASSIGNING <end_wa> INDEX row.
DATA tabix(4) TYPE c.
tabix = <end_wa>-TABIX.
FREE bdcdata.
PERFORM bdc_dynpro USING 'SAPLWBABAP' '0100'.
PERFORM bdc_field USING 'RS38M-PROGRAMM' <end_wa>-PROG.
PERFORM bdc_field USING 'BDC_OKCODE' '=SHOP'.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
tabix.
PERFORM bdc_field USING 'BDC_OKCODE'
'=/00'.
opt-dismode = 'E'.
CALL TRANSACTION 'SE38' USING bdcdata OPTIONS FROM opt .
gc_alv_table->display( ).
ENDMETHOD. "on_double_click
ENDCLASS. "lcl_handle_events IMPLEMENTATION
DATA: gr_events TYPE REF TO lcl_handle_events.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS QQQ FOR wa_QQQ NO-EXTENSION NO INTERVALS.
SELECT-OPTIONS zzz FOR wa_zzz NO INTERVALS.
SELECTION-SCREEN END OF BLOCK bl1.
FIELD-SYMBOLS <zzz> LIKE LINE OF zzz.
START-OF-SELECTION.
LOOP AT zzz ASSIGNING <zzz>.
REPLACE all OCCURRENCEs OF '*' IN <zzz>-low WITH '%'.
CONDENSE <zzz>-low NO-GAPS.
ENDLOOP.
LOOP AT zzz ASSIGNING <zzz>.
SELECT * FROM D010SINF APPENDING CORRESPONDING FIELDS OF TABLE TPROG
WHERE PROG like <zzz>-low.
ENDLOOP.
sort TPROG by PROG.
delete ADJACENT DUPLICATES FROM TPROG comparing PROG.
*
*WRITE:/ ' Список программ, где присутствует строка', QQQ.
*WRITE:/ SY-ULINE.
*WRITE:/ '|' NO-GAP,
*(40) 'Имя программы' NO-GAP, '|' NO-GAP,
*(11) 'N стр. кода' NO-GAP, '|' NO-GAP,
*(12) 'Создал' NO-GAP,
*(10) '' NO-GAP, '|' NO-GAP,
*(12) 'Изменил' NO-GAP,
*(10) '' NO-GAP, '|' NO-GAP,
*(70) 'Заголовок программы', '|' NO-GAP,
*(73) 'Строка кода' NO-GAP, '|' NO-GAP.
*WRITE:/ SY-ULINE.
DATA posl_xtab TYPE I.
READ TABLE TPROG INDEX 1 TRANSPORTING NO FIELDS.
posl_xtab = sy-tfill.
LOOP AT TPROG ASSIGNING <TPROG>.
z_index = sy-tabix.
PERFORM show_progress_5p USING z_index posl_xtab. "Вызов счетчика
READ REPORT <TPROG>-PROG INTO T.
LOOP AT T ASSIGNING <t>.
IF <t>-LINE CS QQQ-low.
end_wa-TABIX = SY-TABIX.
end_wa-line = <t>-LINE.
MOVE-CORRESPONDING <TPROG> to end_wa.
SELECT SINGLE TEXT FROM TRDIRT INTO end_wa-TRDIRT_TEXT
WHERE SPRSL = 'R' AND NAME = <TPROG>-PROG.
append end_wa.
ENDIF.
ENDLOOP.
ENDLOOP.
cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table CHANGING t_table = end_wa[] ).
gc_columns = gc_alv_table->get_columns( ).
gc_columns->set_optimize( 'X' ).
gc_colwork ?= gc_columns->get_column( 'TRDIRT_TEXT' ).
gc_events = gc_alv_table->get_event( ).
CREATE OBJECT gr_events.
SET HANDLER gr_events->on_double_click FOR gc_events.
gc_sorts = gc_alv_table->get_sorts( ).
gc_sorts->add_sort( columnname = 'PROG' sequence = '2' ).
gc_functions = gc_alv_table->get_functions( ).
gc_functions->set_all( 'X' ).
gc_display = gc_alv_table->get_display_settings( ).
gc_display->set_list_header( 'Где встечается данный текст' ).
gc_alv_table->display( ).
*BREAK-POINT.
*&---------------------------------------------------------------------*
*& Form SHOW_PROGRESS_5P
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->SY_INDEX text
* -->MAXIMUM text
*----------------------------------------------------------------------*
FORM SHOW_PROGRESS_5P USING SY_INDEX
maximum.
DATA:
lv_percent TYPE p
,lv_parts TYPE I
,lv_parts_size TYPE I
.
lv_parts_size = maximum * '0.05'.
IF lv_parts_size NE 0.
lv_percent = SY_INDEX / maximum * 100.
lv_parts = SY_INDEX MOD lv_parts_size.
IF lv_parts = 0.
DATA: lv_txt1(100) TYPE C, lv_txt2(100) TYPE C, lv_txt3(100) TYPE C.
MOVE SY_INDEX TO lv_txt1.
CONDENSE lv_txt1.
MOVE maximum TO lv_txt2.
CONDENSE lv_txt2.
CONCATENATE 'Выполняется обработка данных:'
lv_txt1
'из'
lv_txt2
INTO lv_txt3 SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = lv_percent
TEXT = lv_txt3.
ENDIF.
ENDIF.
ENDFORM. " SHOW_PROGRESS_5P
FORM bdc_dynpro USING PROGRAM DYNPRO.
CLEAR bdcdata.
bdcdata-PROGRAM = PROGRAM.
bdcdata-DYNPRO = DYNPRO.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
« Последнее редактирование: Декабрь 13, 2012, 02:19:48 pm от insaf121 »