Code: Alles auswählen.
PARAMETERS: Suche(10) TYPE c.
DATA: BEGIN OF Tabelle OCCURS 0,
Text(300) TYPE c,
END OF Tabelle.
DATA: CountSU TYPE i.
DATA: Tabelle2 LIKE TABLE OF Tabelle,
wa_Tabelle LIKE LINE OF Tabelle,
wa_Tabelle2 LIKE LINE OF Tabelle.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\Documents and Settings\xxxxxxxxxx\Desktop\text.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ''
* HEADER_LENGTH = 0
* READ_BY_LINE = 'c'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
DATA_TAB = Tabelle.
Frank R.ne geht nicht. wenn ich it100 etc. durch meine bezeichnungen ersetze kommen laufend fehlermeldungen, dass blabla nicht im abap dictionnary deklariert sei oder so...
Code: Alles auswählen.
*looki = SUCHE.
*ULINE.
*LOOP AT Tabelle2 INTO wa_Tabelle.
*SEARCH wa_Tabelle FOR SUCHE.
**FIND SUCHE IN wa_Tabelle IGNORING CASE.
**SPLIT wa_Tabelle AT SPACE INTO TABLE Tabelle2.
*IF SY-FDPOS = 1.
**IF sy-subrc EQ 0.
*ADD 1 TO CountSU.
*ENDIF.
*ENDLOOP.
*Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.
*ULINE.
*LOOP AT Tabelle2 INTO wa_Tabelle2.
**SPLIT wa_Tabelle2 AT SPACE INTO TABLE Tabelle2.
*FIND SUCHE IN wa_Tabelle2 IGNORING CASE.
*IF sy-subrc EQ 0.
*ADD 1 TO CountSU.
*ENDIF.
*ENDLOOP.
*Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.
*DESCRIBE FIELD Suche LENGTH LAENGE IN CHARACTER MODE.
*POSITION = 0.
*WHILE POSITION < LAENGE.
* IF Suche+POSITION(1) CO SONDZE.
* ADD 1 TO CountSU..
* Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.
* ENDIF.
* POSITION = POSITION + 1.
*ENDWHILE.
*SONDZE = Suche.
*LOOP.
*SEARCH wa_Tabelle2 FOR Suche.
*SPLIT wa_Tabelle2 AT SPACE INTO TABLE Tabelle2.
*IF SY-SUBRC = 0.
*OFFSET = SY-FDPOS - 1.
*SONDZE = Suche+OFFSET(1).
*ADD 1 TO CountSU.
*Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.
*ELSE.
*WRITE:/ 'nicht gefunden'.
* ENDIF.
*IF sy-subrc EQ 0.
*ADD 1 TO CountSU.
*ENDIF.
*ENDLOOP.
*Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.
*******************
start-of-selection.
*******************
select * from Tabelle into table wa_Tabelle2 up to 1000 rows.
string = Suche.
loop at wa_Tabelle2.
sy-subrc = 0.
while sy-subrc = 0.
replace string with '' into wa_Tabelle2.
if sy-subrc eq 0. add 1 to countsu. endif.
endwhile.
endloop.
write: /01 string, 'wurde', countsu, 'mal im Text gefunden'.
Code: Alles auswählen.
form search_itab using p_pattern type c
pit_source type any table "hier dein TABELLENTYP
changing
p_count type i.
data: l_subrc like sy-subrc,
l_length type i,
l_startpos like sy-tabix,
l_startline like sy-tabix,
lwa_source like pit_source. "FUNKTIONIERT NICHT, WENN KEIN
* expliziten Tabellentyp mitgegeben wird.
* Ermittle die Länge des Suchstrings
l_length = strlen( p_pattern).
clear p_count
while l_subrc is initial.
search pit_source for p_pattern starting at l_startline.
l_subrc = sy-subrc.
if l_subrc is initial. "es wurde was gefunden
p_count = p_count + 1.
l_startline = sy-tabix. "Zeile in der was gefunden wurde
l_startpos = sy-fdpos.
* es kann sein, dass mit dem search auch die Pos. mitgeben
* kann -das geht nicht eindeutig aus der Hlfe hervor, deshalb lese ich
* die Zeile und suche dort nach WEITEREN trefferen
read table pit_source into lwa_source index l_startline.
l_startpos = l_startpos + l_length. "wir wollen ja nicht nochmal
* den gleichen finden
while sy-subrc is initial.
search lwa_source for p_pattern starting at l_startpos.
if sy-subrc is initial.
p_count = p_count + 1.
l_startpos = l_startpos + l_length. "neuer aufsetzpunkt
endif.
endwhile.
clear l_startpos.
l_startline = l_startline + 1.
endwhile.
endform.