ABAP’ta rapor, arayüz, dosya işlemleri veya veri temizleme (data cleansing) yaparken en çok ihtiyaç duyulan şeylerden biri string işlemleridir. Bu yazıda başlangıç seviyesinde en sık kullanılan komutları kısa ve uygulanabilir örneklerle göreceğiz:
CONCATENATEve string template (|...|)SPLITCONDENSESHIFTREPLACETRANSLATESTRLENFINDmantığı
Örnek setup: String değişkenlerimizi hazırlayalım
REPORT z_demo_string_01.
DATA: lv_text TYPE string,
lv_text2 TYPE string.
lv_text = ' ABAP string islemleri '.
lv_text2 = 'Mustafa.Hamit@example.com'.
Not: string tipi dinamik uzunluktadır. Başlangıç için çoğu metin işinde en rahat tiptir.
1) Birleştirme (Concatenate): CONCATENATE ve String Template
CONCATENATE
DATA lv_full TYPE string.
CONCATENATE 'Merhaba' 'Dünya' INTO lv_full SEPARATED BY space.
WRITE: / lv_full. "Merhaba Dünya
String Template (modern ve çok pratik)
DATA(lv_name) = 'Mustafa'.
DATA(lv_city) = 'Istanbul'.
DATA(lv_msg) = |Merhaba { lv_name }, sehir: { lv_city }.|.
WRITE: / lv_msg.
Neden template? Okunması daha kolaydır ve araya değişken eklemek çok rahattır.
2) Parçalama (Split): SPLIT
En sık kullanım: e-mail, dosya yolu, CSV satırı gibi verileri parçalamak.
DATA: lv_email TYPE string VALUE 'mustafa.hamit@example.com',
lv_user TYPE string,
lv_domain TYPE string.
SPLIT lv_email AT '@' INTO lv_user lv_domain.
WRITE: / 'User :', lv_user.
WRITE: / 'Domain:', lv_domain.
Birden fazla parçayı internal table’a almak:
DATA: lv_csv TYPE string VALUE 'A;B;C;D',
lt_parts TYPE STANDARD TABLE OF string.
SPLIT lv_csv AT ';' INTO TABLE lt_parts.
LOOP AT lt_parts INTO DATA(lv_part).
WRITE: / lv_part.
ENDLOOP.
3) Boşluk temizleme: CONDENSE
CONDENSE metindeki gereksiz boşlukları temizlemek için kullanılır.
DATA lv_dirty TYPE string VALUE ' ABAP string islemleri '.
CONDENSE lv_dirty.
WRITE: / lv_dirty. "ABAP string islemleri
Tüm boşlukları tamamen kaldırmak istersen:
DATA lv_no_space TYPE string VALUE 'A B C'.
CONDENSE lv_no_space NO-GAPS.
WRITE: / lv_no_space. "ABC
4) Sola/sağa kaydırma ve kırpma: SHIFT
Başta/sonda istenmeyen karakterler olduğunda işe yarar.
DATA lv_code TYPE string VALUE '0000123456'.
SHIFT lv_code LEFT DELETING LEADING '0'.
WRITE: / lv_code. "123456
Sağ taraftaki boşlukları atmak gibi:
DATA lv_text3 TYPE string VALUE 'ABAP '.
SHIFT lv_text3 RIGHT DELETING TRAILING space.
WRITE: / lv_text3. "ABAP
5) Değiştirme: REPLACE
İlk bulduğunu değiştirme
DATA lv_url TYPE string VALUE 'http://site.com'.
REPLACE FIRST OCCURRENCE OF 'http://' IN lv_url WITH 'https://'.
WRITE: / lv_url. "https://site.com
Hepsini değiştirme
DATA lv_text4 TYPE string VALUE 'a-b-c-d'.
REPLACE ALL OCCURRENCES OF '-' IN lv_text4 WITH '/'.
WRITE: / lv_text4. "a/b/c/d
İpucu: Büyük/küçük harf duyarlılığı senaryoya göre değişir. Gerekirse önce TRANSLATE ile normalize edebilirsin.
6) Büyük/küçük harf dönüşümü: TRANSLATE
DATA lv_case TYPE string VALUE 'AbAp'.
TRANSLATE lv_case TO UPPER CASE.
WRITE: / lv_case. "ABAP
TRANSLATE lv_case TO LOWER CASE.
WRITE: / lv_case. "abap
7) Uzunluk alma: STRLEN
DATA lv_len TYPE i.
DATA lv_val TYPE string VALUE 'ABAP'.
lv_len = strlen( lv_val ).
WRITE: / 'Length:', lv_len. "4
8) İçeriyor mu? FIND / substring kontrolü
Bir string içinde belirli bir kelime geçiyor mu kontrolü çok yaygındır.
DATA lv_text5 TYPE string VALUE 'ABAP string islemleri'.
FIND 'string' IN lv_text5.
IF sy-subrc = 0.
WRITE: / 'Bulundu'.
ELSE.
WRITE: / 'Bulunamadi'.
ENDIF.
Bulunan pozisyonu almak istersen:
DATA lv_offset TYPE i.
FIND 'string' IN lv_text5 MATCH OFFSET lv_offset.
WRITE: / 'Offset:', lv_offset.
9) Pratik mini örnek: Dosya adını temizleme ve standartlaştırma
Diyelim kullanıcı dosya adını şöyle veriyor:
- Baş/son boşluk var
- Aralarda çok boşluk var
- İçinde “-” var, sen “_” istiyorsun
- Büyük harf istiyorsun
REPORT z_demo_string_cleanup.
DATA lv_filename TYPE string VALUE ' rapor - mustafa 2026-04-29 .txt '.
"1) Baş/son ve fazla boşlukları toparla
CONDENSE lv_filename.
"2) Tüm boşlukları underscore yapmak isteyelim
REPLACE ALL OCCURRENCES OF space IN lv_filename WITH '_'.
"3) Tireleri de underscore yapalım
REPLACE ALL OCCURRENCES OF '-' IN lv_filename WITH '_'.
"4) Büyük harfe çevir
TRANSLATE lv_filename TO UPPER CASE.
WRITE: / lv_filename.
Bu tarz “veri temizleme” senaryoları gerçek projelerde çok sık çıkar.
Sık yapılan hatalar (Yeni başlayanlar için)
- CHAR vs STRING karışıklığı:
c LENGTH ntipleri sabit uzunlukludur; sonuna boşluk basabilir. Metin işleri için çoğu zamanstringdaha rahattır. - CONDENSE NO-GAPS yanlış kullanımı: Her boşluğu siler; isim/soyisim gibi alanlarda istenmeyen sonuç doğurabilir.
- FIND sonrası sy-subrc kontrolü unutmak: Bulamadığında farklı akış gerekir.
Sonuç
Bu yazıda ABAP’ta en sık kullanılan string işlemlerini temel seviyede gördük: birleştirme, parçalama, boşluk temizleme, kaydırma/kırpma, replace, case dönüşümü, uzunluk alma ve içerik arama.
Abap’ta READ TABLE kullanımı için bu yazıyı inceleyebilirsiniz.
Link : https://www.mustafahamit.com/abapta-read-table-kullanimi-detayli-anlatim-ve-ornekler/
![]()