KARAKTER VE BYTE DİZİSİ İŞLEME İÇİN İFADELER

KARAKTER VE BYTE DİZİSİ İŞLEME İÇİN İFADELER

CONCATENATE

Veri_nesnesi1, veri_nesnesi2, … veri nesnelerinin içeriği veya internal tablodaki kayıtları sıralarına göre belirlenen alanda birleştirilir.

CONCATENATE {veri_nesnesi1 veri_nesnesi2 …}|{LINES OF internal_tablo}

INTO sonuc

[IN {CHARACTER|BYTE} MODE]

[SEPARATED BY ayrac]

[RESPECTING BLANKS].

Ekler:

IN {CHARACTER|BYTE} MODE: Karakter dizisi veya bayt dizisinde işlem yapılacağını belirtmek için kullanılır. Kullanılmaz ise karakter dizisi işlemi yapılır.

SEPARATED BY ayrac: Birleştirilecek veri nesneleri arasına ayrac ile belirtilen veri nesnesi değeri yerleştirilir.

RESPECTING BLANKS: Birleştirilecek veri nesnelerindeki boş karakterlerde birleştirmede kullanılır.

CONCATENATE ifadesi sonrasında sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 Veri nesnelerinin bütün içerikleri hedef alana transfer edildi.
4 Veri nesnelerinin bütün içerikleri tamamıyla transfer edilemedi, hedef alanı küçük.

FIND

Belirtilen veri nesnesi içerisinde arama örneği kullanarak arama yapar. Karakter dizisi veya bayt dizisi aramak için kullanılır.

FIND [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] ornek

IN [bolum] veri_nesnesi

[IN {CHARACTER|BYTE} MODE]

[arama_secenekleri].

Ekler:

FIRST OCCURRENCE: İlk bulunan örnekte arama işlemi sonlanır. Varsayılan arama yöntemidir.

FIRST OCCURRENCE: Tüm sonuçları bulur.

CHARACTER MODE: Karakter dizisi araması yapmak için kullanılır. Varsayılan arama düzenidir.

BYTE MODE: Bayt dizisi araması yapmak için kullanılır.

FIND ifadesi sonrasında sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 En az bir arama örneği bulundu.
4 Arama örneği bulunamadı.
8 Karakter dizisi işleminde geçersiz çift-bayt karakter içeriyor.

REPLACE

Belirtilen veri nesnesindeki karakter veya bayt alanlar ile değiştirir. Örnek bazlı ve pozisyon bazlı olarak iki farklı kullanımı vardır.

Örnek bazlı:

1. REPLACE [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] örnek

IN [bolum] veri_nesnesi WITH yeni_deger

[IN {CHARACTER|BYTE} MODE]

[degistirme_secenekleri].

Pozisyon bazlı:

2. REPLACE SECTION [OFFSET offset] [LENGTH uzunluk] OF veri_nesnesi WITH yeni_deger

[IN {CHARACTER|BYTE} MODE].

REPLACE ifadesi sonrasında sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 Arama örneğine veya belirtilen bölüme yeni içerik taşındı ve sonuç veri nesnesinde mevcut.
2 Arama örneğine veya belirtilen bölüme yeni içerik taşındı ve sonuç sağ taraftan kırpıldı.
4 Arama örneği örnek bazlı aramada veri nesnesinde bulunamadı.
8 Örnek veya yeni içerik yorumlanabilir çift-bayt karakter içermiyor.

SHIFT

Veri nesnesinin değerinin yerini değiştirir. Yer değiştirilecek konum numarası ve yer değiştirmenin yönü belirtilebilir. Yer değiştirerek hangi karakterin silineceği belirtilebilir. Ek kullanılmaz ise içerik sola doğru bir bir konum kaydırılır.

SHIFT veri_nesnesi [ {[bolge] [yone]} | deleting ]

[IN {CHARACTER|BYTE} MODE].

Ekler:

IN CHARACTER MODE: karakter dizisi işlemi yapılır.

IN BYTE MODE: Bayt dizisi işlemi yapılır.

SPLIT

ayrac ile belirtilen ayraca göre veri nesnesini bölümlere ayırır. Karakter-bernzeri veya bayt-benzeri yapı ile sonuç nesnelerine veya karakter-benzeri veya bayt-benzeri satır tipine sahip dahili tabloya yazılır. En az iki değişken belirtilmelidir.

SPLIT veri_nesnesi AT ayrac INTO

{ {sonuc1 sonuc2 …} | {TABLE sonuc_tablosu} }

[IN {CHARACTER|BYTE} MODE].

Ekler:

IN CHARACTER MODE: karakter dizisi işlemi yapılır.

IN BYTE MODE: Bayt dizisi işlemi yapılır.

SPLIT ifadesi sonrasında sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 Bölümler hedef alanlara veya dahili tabloya kırpılmadan aktarıldı.
4 En az bir bölüm hedef alanlara veya dahili tabloya aktarılırken sağ tarafından kırpıldı.

CONDENSE

Veri nesnesi metininde baştaki ve sondaki boşlukları kaldırır ve diğer ardışık boşlukları bir karakter boşluk olacak şekilde değiştirir.

CONDENSE text [NO-GAPS].

Ekler:

NO-GAPS: Metindeki tüm boşlukları kaldırır.

CONVERT TEXT

Metnin içeriği sıralanabilir bayt sırasına dönüştürülür ve sonuç hex değişkenine atanır.

CONVERT TEXT text INTO SORTABLE CODE hex.

OVERLAY

Metin1 içerisindeki değişken metin2 içerisindeki aynı konumdaki karaktere atanır. ONLY eki kullanılmaz ise sadece metin1 içerisindeki boş karakterler değiştirilir.

OVERLAY metin1 WITH metin2 [ONLY maske].

OVERLAY ifadesi sonrasında sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 Text1 içerisindeki en az bir karakter değiştirildi.
4 Text1 içerisinde hiçbir karakter değiştirilmedi.

TRANSLATE

Metni küçük veya büyük harfe çevirir.

TRANSLATE metin {TO {UPPER|LOWER} CASE}

| {USING maske}.

Ekler:

TO UPPER CASE: Metni büyük harfe çevirir.

TO LOWER CASE: Metni küçük harfe çevirir.

USING  maske: maske veri nesnesine göre çevrim işlemi yapılır.

WRITE TO

Kaynak ile belirtilen içeriği veya source_name ile belirtilen alanın içeriğini biçimlendirir.

WRITE {kaynak|(kaynak_ismi)} TO destination

[bicimlendirme_secenekleri].

WRITE TO ifadesi sonrasında sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 source_name ile belirtilen kaynak bulundu ve atama gerçekleşti.
4 source_name ile belirtilen kaynak bulunamadı ve atama gerçekleşemedi.

Not: WRITE TO ile ilgili örnekler Listeleme komutlar kısmında bulabilirsiniz.

METİN İŞLEM ÖRNEKLERİ

Örnek: İki metni birleştirerek başka metin alanına değeri atayan CONCATENATE örneği.

DATA: gv_m1(10) VALUE ‘metin1’,
gv_m2(10) VALUE ‘metin2’,
gv_m3(30).
CONCATENATE gv_m1 ‘ve’ gv_m2 INTO gv_m3 SEPARATED BY space.
WRITE gv_m3.

Örnek: İnternal tablodaki kayıtlar birleştirerek bir metne atayan CONCATENATE örneği.

TYPES: BEGIN OF ty_metin,
m1(10),
m2(10),
END OF ty_metin.
DATA: gt_metin TYPE STANDARD TABLE OF ty_metin,
gs_metin TYPE ty_metin,
gv_metin(100).
CLEAR gs_metin.
gs_metin-m1 = ‘p11’.
gs_metin-m2 = ‘p12’.
APPEND gs_metin TO gt_metin.
CLEAR gs_metin.
gs_metin-m1 = ‘p21’.
gs_metin-m2 = ‘p22’.
APPEND gs_metin TO gt_metin.
CONCATENATE LINES OF gt_metin INTO gv_metin RESPECTING BLANKS.
WRITE gv_metin.

Örnek: Bir metin içerisinde arama yapan ve metnin bulunduğu pozisyon ve uzunluğu yazan örnek.

DATA: gv_pozisyon TYPE i,
gv_uzunluk  TYPE i.
FIND FIRST OCCURRENCE OF ‘cak’
IN ‘Arama yapılacak metin’
MATCH OFFSET gv_pozisyon
MATCH LENGTH gv_uzunluk.
WRITE: ‘pozisyon:’, gv_pozisyon,
/’uzunluk :’, gv_uzunluk.

Örnek: Arama yapılan metnin bir bölümünü yeni metin ile değiştiren örnek.

DATA gv_metin TYPE c LENGTH 30.
gv_metin = ‘Arama yapılacak metin’.
REPLACE FIRST OCCURRENCE OF ‘metin’ IN gv_metin WITH ‘text 2’.
WRITE gv_metin.

Örnek: Metin üzerinde SHIFT ifadesi kullanılarak değişiklikler yapaan örnek.

DATA: gv_m1(15) VALUE ‘ METIN12345’,
gv_m2(5)  VALUE ‘METIN’,
gv_m3(5)  VALUE ’45’.
WRITE:   ‘gv_m1’, 35 gv_m1.
WRITE: / ‘gv_m2’, 35 gv_m2,
/ ‘gv_m3’, 35 gv_m3.
SKIP.
SHIFT gv_m1 left deleting leading space.
WRITE: / ‘LEFT DELETING LEFT SPAPE’, 35 gv_m1.
SHIFT gv_m1 left deleting leading gv_m2.
WRITE: / ‘LEFT DELETING LEFT gv_m2’, 35 gv_m1.
SHIFT gv_m1 right deleting trailing gv_m3.
WRITE: / ‘RIGHT DELETING TRAILING gv_m3’, 35 gv_m1.
SHIFT gv_m1 left deleting leading space.
WRITE: / ‘LEFT DELETING LEFT SPAPE’, 35 gv_m1.

Örnek: Bir metni “-“ ayracına göre ayırıp, iki farklı değişkene atayan örnek.

DATA: gv_metin  TYPE c LENGTH 30,
gv_bolum1 TYPE c LENGTH 15,
gv_bolum2 TYPE c LENGTH 15.
gv_metin = ‘ilk kısım -ikinci kısım’.
SPLIT gv_metin AT ‘-‘ INTO gv_bolum1 gv_bolum2.
WRITE:  gv_bolum1,
/ gv_bolum2.

Örnek: Metindeki boşlukları kaldıran CONDENSE örneği.

DATA: gv_metin  TYPE c LENGTH 30.
gv_metin = ‘    boşluklar  kaldırılacak   ‘.
WRITE: ‘metnin ilk hali   :’, gv_metin.
CONDENSE gv_metin.
WRITE: / ‘CONDENSE kullanımı:’, gv_metin.
CONDENSE gv_metin NO-GAPS.
WRITE: / ‘NO-GAPS eki       :’, gv_metin.

Örnek: Metnin tamamını TRANLATE ifadesi ile küçük veya büyük harfe çeviren örnek.

DATA: gv_metin  TYPE c LENGTH 30.
gv_metin = ‘küçük/büyük harf çevrimi’.
WRITE: ‘metnin ilk hali    :’, gv_metin.
TRANSLATE gv_metin TO UPPER CASE.
WRITE: / ‘UPPER CASE sonrası :’, gv_metin.
TRANSLATE gv_metin TO LOWER CASE.
WRITE: / ‘LOWER CASE sonrası :’, gv_metin.

Leave a Reply

Your email address will not be published. Required fields are marked *