Volevo segnalare questo programma molto utile trovato in rete.
In particolare il report prende in input tra i vari parametri una o più stringe e mostra l'elenco dei sorgenti che rispondono ai criteri di ricerca.
Davvero molto utile per ricercare un messaggio custom o un particolare tipo di errore.
REPORT zcercastringa LINE-COUNT 65
LINE-SIZE 220
NO STANDARD PAGE HEADING.
************************************************************************
* Utilità per la ricerca di una stringa di caratteri definita a *
* parametro nel sorgente di programmi ABAP/4 *
* I programmi possono essere fltrati per: *
* NOME PROGRAMMA e CLASSE DI SVILUPPO *
************************************************************************
TABLES: tadir, trdir.
*
SELECTION-SCREEN: SKIP 1,
BEGIN OF BLOCK blocco_a WITH FRAME TITLE text-100.
SELECT-OPTIONS : program FOR trdir-name,
unam FOR trdir-unam,
cnam FOR trdir-cnam.
PARAMETERS : p_string(50) TYPE c OBLIGATORY,
p_strin2(50) TYPE c,
p_strin3(50) TYPE c.
* P_CLASS(4) TYPE C.
SELECT-OPTIONS : s_class FOR tadir-devclass.
SKIP 1.
PARAMETERS : p_incl AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK blocco_a.
*
DATA: x TYPE i.
DATA: vn_stampa TYPE i.
DATA: title(40) TYPE c.
DATA: y TYPE i.
DATA:ca-10(10) TYPE c.
DATA: BEGIN OF itab OCCURS 10.
INCLUDE STRUCTURE trdir.
INCLUDE STRUCTURE tadir.
DATA: title(40) TYPE c.
DATA: END OF itab.
DATA: va_prog(40).
DATA: va_riga(4) TYPE c.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: wa_trdir LIKE trdir.
DATA: wa_tadir LIKE tadir.
DATA: BEGIN OF tb-prog OCCURS 100000,
line(250) TYPE c,
END OF tb-prog.
DATA: BEGIN OF btab OCCURS 50, "Hilfstabelle fuer Textpoolein-
code(72), "traege
END OF btab.
DATA: BEGIN OF no_textnumber OCCURS 50,
prog(8),
linenb(6) TYPE n,
numb(3),
line(72).
DATA: END OF no_textnumber.
DATA: BEGIN OF no_text_in_pool OCCURS 50,
prog(8),
linenb(6) TYPE n,
numb(3),
line(72).
DATA: END OF no_text_in_pool.
DATA: BEGIN OF wrong_text OCCURS 50,
prog(8),
linenb(6) TYPE n,
numb(3),
line(72).
DATA: END OF wrong_text.
DATA: BEGIN OF tb_tadir OCCURS 100.
INCLUDE STRUCTURE tadir.
DATA: END OF tb_tadir.
DATA: vn_progr(6) TYPE n,
fl_primo(1) TYPE c.
DATA: BEGIN OF stampa,
progr(6) TYPE c ,
filler1 TYPE c ,
name LIKE trdir-name , " release < 4.xx
** name(8) TYPE c , " release => 4.xx
filler2 TYPE c ,
devclass LIKE tadir-devclass,
filler3 TYPE c ,
author LIKE tadir-author ,
filler4 TYPE c ,
korrnum LIKE tadir-korrnum ,
filler5 TYPE c ,
unam LIKE trdir-unam ,
filler6 TYPE c ,
udat(10) TYPE c ,
riga(10) TYPE c,
filler7 TYPE c ,
prog-line LIKE tb-prog-line .
DATA: END OF stampa.
DATA flag.
*
DATA: BEGIN OF ttab OCCURS 50.
INCLUDE STRUCTURE textpool.
DATA: END OF ttab.
TOP-OF-PAGE.
FORMAT COLOR COL_HEADING .
* /001 (500) ,
WRITE: /8 'Nome '(501) ,
49 'Clas.'(502) ,
* 52 (503) ,
* 65 'Numero'(504) ,
104 'Autore'(505) ,
117 'Data'(506) ,
190 'Pagina',
/001 'Progr.'(510) ,
8 'programma'(511) ,
49 'svil. '(512) ,
80 'Creato da'(513) ,
* 85 'correzione'(514) ,
104 'modifica'(515),
117 'modifica'(516) ,
133 'riga',
140 'Contenuto riga'(517) ,
190 sy-pagno NO-ZERO .
*
SKIP 1.
START-OF-SELECTION.
CLEAR: fl_primo,
vn_progr.
*
SELECT * FROM tadir INTO TABLE tb_tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name IN program
* and UNAM in UNAM
* and cNAM in cNAM
AND ( devclass IN s_class )
ORDER BY obj_name.
FORMAT COLOR COL_NORMAL.
LOOP AT tb_tadir.
MOVE-CORRESPONDING tb_tadir TO wa_tadir.
CLEAR trdir.
SELECT SINGLE * FROM trdir INTO wa_trdir
WHERE name = wa_tadir-obj_name.
CLEAR fl_primo.
READ REPORT wa_trdir-name INTO tb-prog.
LOOP AT tb-prog.
IF tb-prog-line CS p_string OR
tb-prog-line CS p_strin2 OR
tb-prog-line CS p_strin3.
CHECK sy-fdpos NE 0.
IF NOT p_incl IS INITIAL.
CHECK tb-prog-line+0(1) <> '*'.
ENDIF.
CLEAR stampa.
IF fl_primo IS INITIAL.
vn_stampa = 1.
MOVE 'X' TO fl_primo.
ADD 1 TO vn_progr.
WRITE vn_progr TO stampa-progr.
ENDIF.
IF flag = 'X'.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
CLEAR flag.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
flag = 'X'.
ENDIF.
MOVE: wa_trdir-name TO stampa-name ,
wa_tadir-devclass TO stampa-devclass ,
wa_tadir-author TO stampa-author ,
wa_tadir-korrnum TO stampa-korrnum ,
sy-tabix TO stampa-riga,
wa_trdir-unam TO stampa-unam .
WRITE wa_trdir-udat TO stampa-udat DD/MM/YYYY.
MOVE tb-prog-line TO stampa-prog-line.
WRITE: /001 stampa.
IF vn_stampa = 1.
READ TEXTPOOL wa_trdir-name INTO ttab LANGUAGE wa_trdir-rload.
READ TABLE ttab WITH KEY id = 'R'.
** WRITE: 147 ttab-entry(70).
CLEAR vn_stampa.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
AT LINE-SELECTION.
MOVE sy-lisel+7(40) TO va_prog.
MOVE sy-lisel+132(4) TO va_riga.
PERFORM view_dettaglio USING va_prog
va_riga.
*&-----------------------
*& Form view_dettaglio
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM view_dettaglio USING prog LIKE va_prog
riga LIKE va_riga.
PERFORM bdc_dynpro USING 'SAPLWBABAP' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'SHOP'.
PERFORM bdc_field USING 'RS38M-PROGRAMM'
prog.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'DCAN'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
riga.
CALL TRANSACTION 'SE38' USING bdcdata
MODE 'E' AND SKIP FIRST SCREEN.
REFRESH bdcdata.
clear bdcdata.
ENDFORM. " view_dettaglio
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
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