ABAP’ ta Modülarizasyon

Program kodlarını farklı birimlere ayırarak düzenli ve anlaşır hale getirmek için farklı nesneler kullanılır. Modülarizasyon aşağıdaki nesneler kullanılarak sağlanabilir.

    Include ProgramlarFonksiyon ModüllerAltyordamlarYöntemlerMakrolar

Include

Tek başlarına çalıştırılabilir olmayan kod bloklarıdır. Programa dâhil etmek için INCLUDE anahtar kelimesi kullanılır. Tek başına çalıştırılabilir program değillerdir. Oluştururken program tipi “I” olarak seçilir.

INCLUDE include_ismi

Fonksiyon Modüller (Function Modules)

Fonksiyon gruplarına bağlı yeniden kullanılabilir prosedürlerdir. Function Builder kullanılarak oluşturulurlar. Function Builder’ da fonksiyona içerisine ve dışına aktarılan aktarılan parametreler tanımlanır. Kaynak kodu (Source code) kısmına FUNCTION ve ENDFUNCTION ifadeleri arasına kod bloğu yazılır. Gerekirse fonksiyon grubuna bağlı inlude’ larda oluşturulabilir.

Function Builder’ a SE37 işlem kodu ile erişilebilir.

Fonksiyon Modul Arayüzü

Fonksiyonda kullanılan parametrelerin tanımlandığı arayüzdür.

IMPORTING: Fonksiyon içerisine aktarılan parametrelerdir.

EXPORTING: Fonksiyondan dışarı aktarılan parametrelerdir.

CHANGING: Fonksiyon içerisine gönderilen ve gönderilen parametre üzerinde değişiklik yapılıp tekrar fonksiyon dışarısına aktarılabilen parametrelerdir.

TABLES: İnternal tablo aktarmak için kullanılır. Artık kullanılmayan parametrelerdir. Sadece geriye dönük uyum için kullanımı vardır.

ABAP kodundan fonksiyon çağrılırken IMPORTING, CHANGING ve TABLES parametreleri isteğe bağlı olarak function builder’ dan seçilebilir. EXPORTING parametreleri daima isteğe bağlıdır.

… [IMPORTING parameters]

[EXPORTING parameters]

[CHANGING parameters]

[TABLES table_parameters]

[{RAISING exc1|RESUMABLE(exc1) exc2|RESUMABLE(exc2) …}

|{EXCEPTIONS exc1 exc2 …}]

Subroutines

Bir program içerisinde modülarizasyonu sağlamak için kullanılırlar. PERFORM kullanılarak çağrılırlar. Subroutine’ ler artık kullanılmamalıdır. Bunların yerine yerel sınıflardaki metodlar kullanılmalıdır. Başka programlar tarafından da çağrılabilirler. FORM ve ENDFORM bildirimleri arasına yazılırlar. USING ve CHANGING kullanılarak parametre aktarımı yapılabilir.

DATA: num1 TYPE i,
      num2 TYPE i,
mean TYPE p DECIMALS 2.

START-OF-SELECTION.
  num1 = 4.
  num2 = 5.

PERFORM mean_value USING num1 num2
                   CHANGING mean.

FORM mean_value USING p1 TYPE i p2 TYPE i
                CHANGING result TYPE numeric.
  result = ( p1 + p2 ) / 2.
ENDFORM.

Yöntemler (Methods)

METHOD ve ENDMETHOD ifadeleri arasına yazılan kod bloklarıdır. CALL METHOD ile çağrılırlar.

MAKROLAR (Macros)

ABAP programlarında kaynak farklı birimlere ayırmak için kullanılır. DEFINE ve END-OF-DEFINATION ifadeleri arasına yazılırlar.

SEÇİM EKRANI

SEÇİM EKRANI

Kullanıcının başlangıç ekranında ve/veya seçim ölçütü girmesi için kullanılır. Standart veya bağımsız seçim ekranı oluşturulabilir. Standart seçim ekranı oluşturmak için SELECTION-SCREEN, SELECT-OPTIONS veya PARAMETERS anahtar kelimelerinden birisinin kullanılması yeterlidir. Standart seçim ekranın numarası 1000′ dir. Bağımsız seçim ekranı için ekran numarası belirtilir ve bu numara 1000 dışında olmalıdır. Program aktif edildiği zaman seçim ekranı otomatik oluşur. Seçim ekranı oluşturmak için aşağıdaki ifadeler kullanılır.

    SELECTION-SCREENSELECT-OPTIONSPARAMETERS

Seçim ekranının üretilmesi, görüntülenmesi ve alanların seçim yapılması sırasında bir dizi olay tetiklenir. Bu olaylar sırasıyla şöyledir,

    LOAD-OF-PROGRAMINITIALIZATIONAT SELECTION-SCREEN OUTPUTAT SELECTION-SCREEN …START-OF-SELECTION

LOAD-OF-PROGRAM

Programın yüklenmesi esnasında tetiklenir. Tüm program tiplerinde çalışır.

INITIALIZATION

Yürütülebilir program’ da LOAD-OF-PROGRAM olayından sonra tetiklenir.

AT SELECTION-SCREEN OUTPUT

Seçim ekranın PBO (Process Before Output) işlenmesi sırasında tetiklenir.

AT SELECTION-SCREEN …

Seçim ekranın PAI (Process After Input) işlenmesi sırasında tetiklenir. Aşağıdaki ekleri alır.

    ON parametre | secim_kriteri: Parametre veya seçim_kriteri seçilmesinden sonra tetiklenir.ON END OF secim_kriteri: Seçim kriteri tablosu programa aktarıldığında tetiklenir.ON BLOCK blok: Bloktaki tüm giriş alanları programa aktarıldığında tetiklenir.ON RADIOBUTTON GROUP grup: RADIOGROUP bileşenine ait değer programa geçtikten sonra çalışır.ON HELP-REQUEST FOR parametre | secim_kriteri-low | secim_kriteri-high: Alan için yardım seçildiğinde tetiklenir.ON VALUE-REQUEST FOR parametre | secim_kriteri-low | secim_kriteri-high: Alan için arama yardımı seçildiğinde tetiklenir.ON EXIT-COMMAND: Back, Exit, Cancel butonlarından birisi tıklandığında tetiklenir.

START-OF-SELECTION

Seçim ekranı işlemleri bitimi sonrası tetiklenir.

SEÇİM EKRANI OLUŞTURMAK İÇİN KULLANILAN İFADELER

Standart seçim ekranı oluşturmak için SELECTION-SCREEN, SELECT-OPTIONS veya PARAMETERS anahtar kelimelerinden birisinin kullanılması yeterlidir.

PARAMETERS: p_carrid TYPE spfli-carrid,
p_connid TYPE spfli-connid.

Not: Seçim ekranına eklenen parametrelerin metinlerin bakımını yapmak için Git->Metin öğeleri->Seçim metinleri menüsünü kullanabilirsiniz.

ABAP Dictionary’ de tanımlı veri tipleri için Dictionary sütunu seçilebilir gelir. Bu şekilde metin ABAP Dictionary’ de tanımlı Data element üzerinden alınır. ABAP Dictionary’ deki tanım kullanılmayacaksa checkbox seçilmeden istenilen metin yazılabilir. Metinler değiştirildikten sonra aktif edilmelidir.

 

SELECTION-SCREEN
BAĞIMSIZ SEÇİM EKRANI OLUŞTURMA

Bağımsız ekran tanımlamak için SELECTION-SCREEN BEGIN… ve SELECTION-SCREEN END… arasına ekran ifadeleri yazılır. Bağımsız ekranlarda ekran numarası belirtmek gerekir. Kullanımı aşağıdaki şekildedir.

SELECTION-SCREEN BEGIN OF SCREEN ekran_no [TITLE baslik][AS WINDOW].

ekran_ifadeleri

SELECTION-SCREEN END OF SCREEN ekran_no.

Örnek: 1001 numaralı seçim ekranı tanımlayan ve bunu popup şeklinde gösteren seçim ekranı örneği. Ekrana parametre olarak SPFLI tablosundan CARRID ve CONNID alanları yerleştirilmiştir.

SELECTION-SCREEN BEGIN OF SCREEN 1001 TITLE text-001 AS WINDOW.
PARAMETERS: p_carrid TYPE spfli-carrid,
p_connid TYPE spfli-connid.
SELECTION-SCREEN END OF SCREEN 1001.
START-OF-SELECTION.
CALL SELECTION-SCREEN ‘1001’ STARTING AT 5 5.

 

Alt ekran tanımlamak için AS SUBSCREEN eki kullanılır. Kullanımı aşağıdaki şekildedir.

SELECTION-SCREEN BEGIN OF SCREEN ekran_no AS SUBSCREEN [NO INTERVALS][NESTING LEVEL n].
ekran_ifadeleri
SELECTION-SCREEN END OF SCREEN ekran_no.

SEÇİM EKRANI İÇİN EKRAN DİZAY İFADELERİ

Aşağıdaki ifadeler SELECTION-SCREEN ifadesi ile kullanılarak seçim ekranını biçimlendirilebilir.

SKIP

Satır atlamak için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN SKIP [n].

Ekler: n atlanacak satır sayısını belirtir.

Örnek: Seçim ekranına P_CARRID alanını yerleştiren daha sonra 3 satır atlayarak P_CONNIND alanını yerleştiren örnek.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN SKIP 3.
PARAMETERS p_connid TYPE spfli-connid.
SELECTION-SCREEN END OF BLOCK bl1.

 

ULINE

Yatay çizgi için oluşturmak için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN ULINE [[/][pozisyon](uzunluk)][MODIF ID duzenlm_id].

Ekler: / yeni bir satır için kullanılır. pozisyon(uzunluk) ile belirtilen pozisyondan sonra, belirtilen uzunluk kadar çizgi çizer. MODIF ID duzenlm_id ile bileşene bir düzenleme tanıtıcısı tanımlanır.

Örnek: Seçim ekranına PA_CHCBX isimli parametre oluşturan ve altına birinci sütundan dokuzuncu sütuna kadar çizgi çizen örnek. Pozisyon ve uzunluk 1(9) ile belirtilmiştir.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN SKIP 3.
PARAMETERS pa_chkbx TYPE c AS CHECKBOX.
SELECTION-SCREEN ULINE /1(9).
SELECTION-SCREEN END OF BLOCK bl1.

 

COMMENT

Yorum satırı eklemek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN COMMENT [/][pozisyon|POS_LOW|POS_HIGH](uzunluk)

{text|{[text] FOR FIELD alan}}

[VISIBLE LENGTH g_uzunluk]

[MODIF duzenlm_id].

Ekler: / yeni bir satır için kullanılır. pozisyon(uzunluk) ile yorum için pozisyon ve uzunluk belirtilir. Text ile yorum satırında görüntülenecek metin belirtilir. VISIBLE LENGTH yorum satırının görüntülenebilir uzunluğunu belirtir. MODIF ID duzenlm_id ile bileşene bir düzenleme tanıtıcısı tanımlanır.

Örnek: Seçim ekranında yorum satırı olarak text-002 seçim metnini gösteren örnek. Metin öğesini oluşturmak için Git->Metin öğeleri->Seçim metinleri menüsünü kullanabilirsiniz veya kod satırında text-002 yazısına çift tıklayarak Seçim metinleri menüsüne gidebilirsiniz.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN SKIP 3.
PARAMETERS pa_chkbx TYPE c AS CHECKBOX.
SELECTION-SCREEN COMMENT /25(15) text-002 FOR FIELD pa_chkbx.
SELECTION-SCREEN ULINE /25(10).
SELECTION-SCREEN END OF BLOCK bl1.

 

PUSHBUTTON

Seçim ekranında buton oluşturmak için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN PUSHBUTTON [/][pozisyon](uzunluk) buton_metni
USER-COMMAND k_komutu
[VISIBLE LENGTH g_uzunluk]
[MODIF ID duzenlm_id.

Ekler: / yeni bir satır için kullanılır. pozisyon(uzunluk) ile pozisyon ve uzunluk belirtilir. buton_metni ile buton üzerinde görünecek metin belirtilir. VISIBLE LENGTH görüntülenebilir uzunluğu belirtir. MODIF ID duzenlm_id ile bileşene bir düzenleme tanıtıcısı tanımlanır.

Örnek: Seçim ekranına buton ekleyen ve tıklanıdığında mesaj penceresi görüntüleyen örnek.

TABLES sscrfields.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN SKIP 3.
PARAMETERS pa_chkbx TYPE c AS CHECKBOX.
SELECTION-SCREEN COMMENT /25(15) text-002 FOR FIELD pa_chkbx.
SELECTION-SCREEN ULINE /25(10).
SELECTION-SCREEN PUSHBUTTON /1(35) text-003 USER-COMMAND cmd.
SELECTION-SCREEN END OF BLOCK bl1.
AT SELECTION-SCREEN.
CASE sscrfields.
WHEN ‘CMD’.
MESSAGE ‘Buton 1 tıklandı.’ TYPE ‘I’.
ENDCASE.

 

BEGIN OF

BEGIN OF eki ile satır, blok ve sekme bileşenleri kullanılabilir. BEGIN OF ile kullanılabilen ekler şunlardır.

  • LINE
  • BLOCK
  • TABBED

LINE

POSITION

Aynı satıra birden fazla eleman yerleştirmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN BEGIN OF LINE.
ekran_ifadeleri
[SELECTION-SCREEN POSITION pozisyon.
erkan_ifadeleri
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN PUSHBUTTON 1(35) text-004 USER-COMMAND cmd.
SELECTION-SCREEN POSITION 36.
SELECTION-SCREEN PUSHBUTTON 36(35) text-005 USER-COMMAND cmd.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK bl1.

 

BLOCK

Alanları belli bir bloğa dahil etmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN BEGIN OF BLOCK blok [WITH FRAME [TITLE baslik]]
[NO INTERVALS].
ekran_ifadeleri
SELECTION-SCREEN END OF BLOCK block.

Ekler: WITH FRAME ile blok seçim ekranında çerçeve içerisine alınır. TITLE ile çerçeve başlığı belirtilir. NO INTERVALS ile blok içerisindeki seçim kriterlerinin üst limit alanları gizlenir.

TABBED

Sekme oluşturmak için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN BEGIN OF TABBED BLOCK tblock FOR n LINES.
ekran_ifadeleri
SELECTION-SCREEN TAB (uzunluk) tab USER-COMMAND ucom
[DEFAULT [PROGRAM prog] SCREEN ekran_no].
ekran_ifadeleri
SELECTION-SCREEN END OF BLOCK tblock.

Örnek: Seçim ekranında iki adet sekme oluşturan örnek. İki tane alt ekran tanımlanır ve TABBED ifadesi ile sekmelere dahil edilir.

SELECTION-SCREEN BEGIN OF SCREEN 1001 AS SUBSCREEN.
PARAMETERS: p_carrid TYPE spfli-carrid,
p_connid TYPE spfli-connid.
SELECTION-SCREEN END OF SCREEN 1001.
SELECTION-SCREEN BEGIN OF SCREEN 1002 AS SUBSCREEN.
PARAMETERS pa_chkbx TYPE c AS CHECKBOX.
SELECTION-SCREEN END OF SCREEN 1002.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF TABBED BLOCK tblock FOR 3 LINES.
SELECTION-SCREEN TAB (5) tab1 USER-COMMAND cmd1 DEFAULT SCREEN 1001.
SELECTION-SCREEN TAB (5) tab2 USER-COMMAND cmd2 DEFAULT SCREEN 1002.
SELECTION-SCREEN END OF BLOCK tblock.
SELECTION-SCREEN END OF BLOCK bl1.
INITIALIZATION.
tab1 = ‘Tab 1’.
tab2 = ‘Tab 2’.
tblock-prog = sy-repid.
tblock-dynnr = 1002.
tblock-activetab = ‘CMD2’.
AT SELECTION-SCREEN.
CASE sy-dynnr.
WHEN 1000.
CASE sy-ucomm.
WHEN ‘PUSH1’.
tblock-dynnr = 1001.
WHEN ‘PUSH2’.
tblock-dynnr = 1002.
WHEN OTHERS.
ENDCASE.
ENDCASE.

 

FUNCTION KEY

Uygulama çubuğuna buton eklemek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN FUNCTION KEY n [mvt_secenekleri].

Örnek: Seçim ekranında Yürüt butonu yanına yardım butonu ekleyen örnek.

TYPE-POOLS icon.
TABLES sscrfields.
DATA functxt TYPE smp_dyntxt.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
functxt-icon_id   = icon_system_help.
functxt-quickinfo = ‘Yardım’.
functxt-icon_text = ‘Yardım’.
sscrfields-functxt_01 = functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN ‘FC01’.
MESSAGE ‘Yardım butonuna tıklandı.’ TYPE ‘I’.
WHEN OTHERS.
ENDCASE.

 

INCLUDE İfadesi

INCLUDE ifadesi ile tanımlanan parametre, seçim kriteri, yorum, buton ve blok bileşenleri başka ekranlara dahil edilebilir.

INCLUDE PARAMETERS

Parametre alanı dahil etmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN INCLUDE PARAMETERS para
[OBLIGATORY [OFF]]
[MODIF ID modid]
[ID id].

Örnek: Daha önce tanımlanmış parametreyi 1001 numaralı ekrana dahil eden örnek.

PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN BEGIN OF SCREEN 1001.
SELECTION-SCREEN INCLUDE PARAMETERS p_carrid.
SELECTION-SCREEN END OF SCREEN 1001.
START-OF-SELECTION.
CALL SELECTION-SCREEN ‘1001’.

 

INCLUDE SELECT-OPTIONS

Seçim kriteri dâhil etmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN INCLUDE SELECT-OPTIONS selcrit
[OBLIGATORY [OFF]]
[NO INTERVALS [OFF]]
[MODIF ID modid]
[ID id].

Örnek: Daha önce tanımlanmış seçim kriterini 1001 numaralı ekrana dahil eden örnek.

TABLES spfli.
SELECT-OPTIONS p_carrid FOR spfli-carrid.
SELECTION-SCREEN BEGIN OF SCREEN 1001.
SELECTION-SCREEN INCLUDE SELECT-OPTIONS p_carrid.
SELECTION-SCREEN END OF SCREEN 1001.
START-OF-SELECTION.
CALL SELECTION-SCREEN ‘1001’.

 

INCLUDE COMMENT

Yorum alanını dâhil etmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN INCLUDE COMMENT [/][pozisyon](uzunluk) metin
[FOR FIELD alan]
[MODIF ID modif_id]
[ID id].

INCLUDE PUSHBUTTON

Buton dâhil etmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN INCLUDE PUSHBUTTON [/][pozisyon](uzunluk) boton_metni
[USER-COMMAND ucom]
[MODIF ID modid]
[ID id].

INCLUDE BLOCKS

Blok dahil etmek için kullanılır. Kullanımı aşağıdaki gibidir.

SELECTION-SCREEN INCLUDE BLOCKS block [ID id].

PARAMETERS

Seçim ekranında bir değer girişine izin veren alan oluşturur.

PARAMETERS {parametre[(uzunluk)]}|{parametre [LENGTH uzunluk]}

[tip_secenekleri]

[ekran_secenekleri]

[deger_secenekleri].

Ekler: parametre ile parametre ismi belirtilir. En fazla sekiz karakter uzunluğunda olabilir. LENGTH uzunluk ile genel veri tipleri için alan ekran uzunluğu belirtir. Sayısal değerdir. Belirtilmez ise değeri 1 olarak tanımlanır. Genel veri tipleri dışındaki veri tipleri için referans gösterilen veri tipi uzunluğu kullanılır.

tip_secenekleri ile parametrenin veri tipini belirtir. Kullanımı aşağıdaki gibidir.

  • TYPE type [DECIMALS dec]: Ön tanımlı ABAP tipleri c, d, i, n, p, string, t, ve x ve genel olmayan tipler, ABAP Dictionary tipleri, global bir sınıfın veri tipi, programda tanımlanan (f veya xstring dışında) bir veri tipi olabilir. DECIMALS dec ile ABAP p veri tipinin ondalık hane uzunluğu belirtilir.
  • LIKE veri_nesnesi: ABAP Dictionary’ de tanımlı bir veri tipini belirtmek için kullanılır.
  • LIKE (isim): c tipinde ve 132 karakter uzunluğunda alan tanımlar. isim ABAP Dictionary’ de tanımlı bir structure’ ın bileşenidir. Giriş yapıldıktan sonra girilen değer 132 karakter uzunluğundaki parametre alanına aktarılır.

deger_secenekleri:

  • DEFAULT ile parametre için varsayılan değer atması yapar.
  • LOWER CASE küçük harf girilen değerleri, büyük harflere çevirmeden veri nesnesine aktarır.
  • MATCHCODE OBJECT arama yardımı tanımlanır.
  • MEMORY ID parametre_id ile parametre tanımlanır.
  • VALUE CHECK ile alana girilen değerin veri tindeki domain’de bulunup, bulunmadığı kontrol edilir veya kontrol tablosuna bakılır. ABAP Dictionary veri tipi ile referans gösterilen alanlar için kullanılabilir.

PARAMETERS: p_carrid TYPE spfli-carrid OBLIGATORY VALUE CHECK,
p_metin  TYPE c LENGTH 10 LOWER CASE DEFAULT ‘metin1’.

SELECT-OPTIONS

Seçim ekranında kriter girişi için alan oluşturur. Bu kriter mantıksal ifadelerde ve OPEN SQL koşullarında IN anahtar kelimesi ile kullanılır. Kullanımı aşağıdaki gibidir.

SELECT-OPTIONS secim_kriteri FOR {veri_nesnesi|(veri_tipi_ismi)}

[ekran_secenekleri]

[deger_secenekleri]

[NO DATABASE SELECTION].

SELECT-OPTIONS ifadesi bir seçim tablosu tanımlar. İsmi en fazla sekiz karakter uzunluğunda olabilir. Seçim tablosu birden fazla koşul içeren bir stadart internal tablodur. Bu internal tablonun başlık satırı vardır. İnternal tablonun alanları tabloda belirtilmiştir.

Alan Tip Anlamı
sign CHAR(1) I veya E değerlerini alabilir. Seçimin dâhil edileceğini veya hariç tutulacağını belirtir.
option CHAR(2) Koşul için mantıksal seçim seçenekleri içerir. “EQ”, “NE”, “GE”, “GT”, “LE”, “LT”, “CP”, ve “NP” ve high alanı boş olmadığı zaman “BT”, “NB” değerlerini alabilir.
low FOR ile kullanılan veri tipi. Alan uzunluğu maksimum 45 karakter. Aralığın alt limitini belirtir. Üst limit belirtilmezse karşılaştırma için kullanılır.
high FOR ile kullanılan veri tipi. Alan uzunluğu maksimum 45 karakter. Aralığın üst limitini belirtmek için kullanılır.

FOR {veri_nesnesi|(veri_tipi_ismi)}: Seçim tablosunda kullanılacak veri tipini belirtir. ABAP Dictionary’ de tanımlı bir veri tipi veya ABAP kodunda tanımlanmış bir veri tipi olabilir.

FOR veri_nesnesi: Low ve high (alt ve üst limit) alanlarının özelliklerini veri_nesnesi ile belirtilen veri tipinden devralır.

FOR (veri_tipi_ismi): Low ve high (alt ve üst limit) alanları için c tipinde ve 45 karakter uzunluğunda tanımlar. veri_tipi_ismi ile belirtilen ABAP Dictionary tanımlı bir structure’ ın bileşeni belirtilir. Arama yardımı, alan metinleri, alan uzunluğu belirtilen structure üzerinden devralınarak seçim ekranında gösterilir. Giriş yapıldıktan sonra girilen değer 45 karakter uzunluğundaki alanalara aktarılır.

Ekler:

ekran_secenekleri:

  • OBLIGATORY ile alt limit alanına veri girişini zorunlu yapılır.
  • NO-DISPLAY ile alan gizlenir.
  • VISIBLE LENGTH g_uzunluk ile belirtilen uzunlukta giriş alanı oluşturulur.
  • NO-EXTENSION ile çoklu seçim butonu gizlenir.
  • NO INTERVALS ile üst limit alanı gizlenir.

deger_secenekleri: DEFAULT deger1 [TO deger2] [OPTION opt] [SIGN sgn] varsayılan değer atması yapmak için kullanılır. TO deger2 üst limiti berlitir.

  • OPTION secenek ile seçim tablosundaki option sütununa başlangıç değeri tanımlanır. eq, ne, ge, gt, le, lt, cp, np, bt ve nb değerlerini alabilir.
  • SIGN sgn ile sign sütununa başlangıç değeri tanımlanır. I ve E değerlerini alabilir. I (include) dahil etme, E (exclude) hariç etme anlamındadır.
  • LOWER CASE ile kullanıcının alana girdiği küçük harfler büyük harflere çevrilmeden seçim tablosuna aktarılır.
  • MATCHCODE OBJECT arama_yardimi ile arama yardımı tanımlanır.
  • MEMORY ID parametre_id ile parametre tanımlanır.

Örnek: Basit bir SELECT-OPTIONS kullanım örneği. S_CARRID alanı için çoklu seçim butonu kaldırılmıştır. Varsayılan değer olarak AA ve UA arası değerler atanmıştır. S_CONNID alanı zorunludur ve üst limit alanı ekrandan kaldırılmıştır. S_COUNTR alanı ekranda gösterilmez.

TABLES spfli.
SELECT-OPTIONS: s_carrid FOR spfli-carrid NO-EXTENSION DEFAULT ‘AA’ TO ‘UA’,
s_connid FOR spfli-connid OBLIGATORY NO INTERVALS,
s_countr FOR spfli-countryfr NO-DISPLAY.

Örnek: P_COUNTR parametresi için arama yardımı tanımlayan ve arama yardımında SPFLI tablosundaki ilk kaydı gösteren örnek.

TYPES: BEGIN OF ty_countryfr,
carrid    TYPE spfli-carrid,
connid    TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
END OF ty_countryfr.
DATA: gt_countryfr  TYPE STANDARD TABLE OF ty_countryfr,
gt_return     TYPE STANDARD TABLE OF ddshretval,
gs_return     TYPE ddshretval.
PARAMETERS p_countr TYPE spfli-countryfr.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_countr.
REFRESH gt_countryfr.
SELECT carrid connid countryfr
FROM spfli UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_countryfr.
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
retfield        = ‘COUNTRYFR’
value_org       = ‘S’
TABLES
value_tab       = gt_countryfr
return_tab      = gt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS          = 3.
READ TABLE gt_return INTO gs_return INDEX 1.
IF sy-subrc = 0.
p_countr = gs_return-fieldval.
ENDIF.

VERİTABANI ERİŞİMLERİ

SAP üzerindeki bütün uygulama verileri ilişkisel veritabanı tablolarda tutulur. Tablolarına ulaşmak için SQL dili kullanılır. SAP iki tür SQL erişimine izin verir.

· Native SQL

· Open SQL

NATIVE SQL

Native Sql kullanılarak direkt olarak belirli bir veritabanı sistemine erişilebilir. Erişilen veritabanı üzerinde SQL komutları çalıştırılır. Kullanılan SQL komutları erişilen veritabanı sistemine özgüdür. Komutlar veritabanı sistemlerine (Oracle, MS SQL,…) göre farklılık gösterir. ABAP kodunda SQL komutları EXEC SQL ve ENDEXEC ABAP ifadeleri arasına yazılır.

EXEC SQL.

kod_blogu

ENDEXEC.

OPEN SQL

SAP’ nin kurulu olduğu veritabanında işlem yapmak için kullanılır. Kullanılan ifadelerle tablolara kayıt ekleme, değiştirme veya silme işlemleri yapılabilir.

Open SQL veritabanına direkt olarak erişemez. Tablolara ulaşmadan önce veritabanı arayüz katmanına erişir. Arayüz katmanında OPEN SQL komutları erişilen veritabanı sistemine özgü SQL komutlara çevrilir. Veritabanı arayüz katmanı Open SQL’i SAP’ nin kurulduğu veritabanı sistemine komutları gönderir.Bu kullanım şekliyle Open SQL platform bağımsız bir veritabanı erişimi sağlar.

OPEN SQL İFADELERİ

Bazı Open SQL ifadeleri şunlardır.

Open SQL Komutu Tanım
SELECT Veritabanı tablosundan verileri okur
INSERT Veritabanı tablosuna kayıt ekler.
UPDATE Veritabanı tablosundaki kayıtları değiştir.
MODIFY Veritabanı tablosundaki kayıtları değiştirir, kayıtlar mevcut değilse ekler.
DELETE Veritabanı tablosundan kayıt siler.

Open SQL ifadeleri çalıştırıldıktan sonra SY-SUBRC ve SY-DBCNT sistem değişkenleri değişir.

Sistem Değişkeni Anlamı
sy-subrc Yapılan işlem başarılı ise sıfır (0), değil ise sıfır dışında bir değer atanır.
sy-dbcnt İşlem yapılan kayıt sayısı atanır.

SELECT

Bir veya daha fazla tablodan veri okumak için kullanılır. Okunan veriler bir veri nesnesine (çalışma alanı veya internal tabloya) atanır. Kullanımı aşağıdaki gibidir.

SELECT sonuc

FROM kaynak

INTO|APPENDING hedef

[[FOR ALL ENTRIES IN internal_tablo] WHERE sql_kosulu]

[GROUP BY grup] [HAVING grup_kosulu]

[ORDER BY siralama_anahtari].

Kod_blogu

[ENDSELECT].

SELECT ifadesi okunan verileri hedefe aktarırken bir döngü oluşturur. Bu döngü SELECT ifadesi ile başlar ENDSELECT ifadesi ile sonlanır. Her okunan kayıt hedef ile belirtilen veri nesnesine kopyalanır.

Döngü kullanımı olmadan da kayıtlar veri nesnelerine aktarılabilir. Bu kullanım türünde ENDSELECT kullanılmaz. Bu kullanımlar şunlardır.

· INTO … TABLE veya APPENDING … TABLE kullanıldığı ifadeler. PACKAGE SIZE eki kullanılmaz ise okunan kayıtlar direkt olarak internal tabloya aktarılır.

· SINGLE eki kullanılarak tablodan tek kayıt okunacak ise.

· Tablodan çekilecek alanların * kullanıldığı ve GROUP BY ekinin kullanılmadığı ifadeler.

sonuc: Okunacak kayıt sayısı veya alan bilgilerini içerir. Kullanım şekillerine göre kayıt sayısı veya alanlar farklılık gösterir.

· Okunacak verileri tanımlar. Bir veya daha fazla kayıt olabilir. SINGLE eki kullanılır ise tablodan tek kayıt okunur.

· Birden fazla kayıt içeren okuma işlemlerinde DISTINCT eki aynı olan satırlar eler.

· * kullanılarak tüm sütunların seçilmesi sağlanır.

· Seçilecek alanlar birer birer belirtilebilir. Alan isimleri yazılır. AS eki kullanılarak okunan alan isimleri değiştirilebilir. Alanlarla ilgiil yığın fonksiyonlar ve DISTINCT eki kullanılabilir.

· Parantez içerisinde bir değişken ile dinamik olarak alanlar belirtilebilir.

kaynak: ABAP Dictonary’ de tanımlı tablo veya görünüm olabilir. Aşağıdaki ekler kullanılır.

· veritb_tablosu [AS takma_ad] ile tablo ismine bir takma ad tanımlanır.

· Join ifadesi ile birden fazla tablodan veya görünümden veri okunabilir.

· (veritb_secimleri) [AS takma_ad] parantez kullanılarak tablo veya görünümden kayıt seçim ifadeleri veri nesnesi ile belirtilebilir.

· CLIENT SPECIFIED: Otomatik üst birim seçimini devre dışı bırakıp, istenilen üst birimden veri çekmek için kullanılır. Parametre kullanılır ise WHERE koşulunda üst birim belirtilebilir.

· UP TO n ROWS: Sonuç kümesindeki kayıt sayısını sınırlar. n değeri için i tipinde bir tamsayı belirtilmelidir.

· … BYPASSING BUFFER: Kayıtların tamponlama (SAP buffering) kullanılmadan direkt veritabanından okunmasını sağlar.

hedef: Kaydın aktarım bilgisini tanımlar. Bir çalışma alanı, veri nesnesi veya bir internal tablo olabilir. Kullanım şekilleri aşağıdaki gibidir.

· INTO [CORRESPONDING FIELDS OF] calisma_alani: Kayıtlar çalışma alanına aktarılır. INTO kullanılmış ise tablo alanları ve çalışma alanı alanları aynı olmalıdır. CORRESPONDING FIELDS OF kullanılarak tablo ve çalışma alanı alanları farklı olsa bile uygun bileşenler çalışma alanına aktarılır.

· INTO (veri_nesnesi1, veri_nesnesi2, … ): Tablodan seçilen alanlar veri nesnelerine aktarır.

· INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE internal_tablo [PACKAGE SIZE n]: INTO ile internal tablodaki kayıtlar silinir ve yeni kayıtlar eklenir. APPENDING ile mevcut kayıtlar korunur yenileri eklenir. PACKAGE SIZE n eki ile kayıtlar internal tabloya n ile belirtilen paket büyüklükleri ile eklenir. Bu ek ENDSELECT anahtar kelimesi ile kullanılır.

[FOR ALL ENTRIES IN internal_tablo] WHERE sql_kosulu … ..: İnternal tablodaki tüm kayıtlar için sorgulama yapılır. İnternal tablonun alanları WHERE ifadesinde koşul olarak kullanılabilir.

GROUP BY { {alan1 alan2 …} | (sutun_bilgileri) } … .: Belirtilen sütunlarda aynı olan kayıtları bir satır kayıt olacak şekilde gruplar. Alanlar teker teker veya sutun_bilgileri veri nesnesine atanarak dinamik olarak belirtilebilir.

HAVING sql_kosulu… .: Gruplanmış kayıt sayısını sınırlamak için kullanılır.

ORDER BY: Okunan kayıtları belirtilen alanlara göre sıralar. PRIMARY KEY eki ile tek bir tablodan okunan kayıtları anahtar alanlarına göre sıralar. Alan isimleri teker teker belirtilerek de sıralama işlemi yapılabilir. Teker teker belirtildiğinde ASCENDING veya DESCENDING ekleri ile azalan veya artan sıralama yapılabilir. Parantez içerisinde sıralama bilgileri veri nesnesinde belirtilerek de sıralama yapılabilir.

sy-subrc Anlamı
0 Kayıt okuma başarılı ve bütün değerler ABAP veri nesnesine aktarıldı veya SELECT ENDSELECT ifadeleri arasında en az bir kayıt işlendi.
4 Kayıt bulunamadı.
8 WHERE ifadesinde anahtar alanlar tam belirtilmedi ve FOR UPDATE eki kullanıldı.

sy-dbcnt sistem değişkeni aktarılan kayıt sayısını alır.

Örnek: SELECT ve ENDSELECT ifadeleri arasında SPFLI tablosunun ilk 5 kaydını yazdıran örnek.

DATA gs_spfli TYPE spfli.
SELECT * FROM spfli INTO gs_spfli UP TO 5 ROWS.
WRITE:/ gs_spfli-carrid, gs_spfli-connid.
ENDSELECT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: SPFLI tablosundaki ilk 5 kaydı gt_spfli internal tablosuna kopyalayarak ekrana yazan örnek.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gs_spfli TYPE spfli.
SELECT * FROM spfli UP TO 5 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
LOOP AT gt_spfli INTO gs_spfli.
WRITE:/ gs_spfli-carrid, gs_spfli-connid.
ENDLOOP.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: SINGLE ile SPFLI tablosundan CARRID alanı AA ve CONNID alanı 0017 olan tek kaydı seçen ve ekrana yazdıran örnek.

DATA gs_spfli TYPE spfli.
SELECT SINGLE * FROM spfli INTO gs_spfli WHERE carrid = ‘AA’ AND
connid = ‘0017’.
WRITE:/ gs_spfli-carrid, gs_spfli-connid, gs_spfli-cityfrom.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: INTO VE APPENDING kullanımını gösteren örnek. SPFLI tablosundan CARRID alanı AA olan kayıtlar internal tabloya eklenir. Sadece CARRID, CONNID ve CITYFROM alanları internal tabloya eklenir. Ardından APPENDING ile internal tablodaki kayıtlara ek olarak CARRID alanı LH olan kayıtlar ilave edilir ve ekrana yazdırılır. Ekrana yazdırılan alanlar içerisinde DEPTIME alanıda vardır. Bu alan seçimde belirtilmediği için internal tablo eklenmediği için ekrana alanın varsayılan değeri yazdırılır. SKIP satır atlamak için, ULINE yatay çizgi çizmek için kullanılmıştır.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gs_spfli TYPE spfli.
SELECT carrid connid cityfrom
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli
WHERE carrid = ‘AA’.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.
SKIP.
WRITE / ‘İnternal tabloya INTO ile CARRID AA olan kayıtlar eklendi.’.
ULINE /1(58).
LOOP AT gt_spfli INTO gs_spfli.
WRITE:/ gs_spfli-carrid,   gs_spfli-connid,
gs_spfli-cityfrom, gs_spfli-deptime.
ENDLOOP.
SKIP 2.
SELECT carrid connid cityfrom
FROM spfli
APPENDING CORRESPONDING FIELDS OF TABLE gt_spfli
WHERE carrid = ‘LH’.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.
SKIP.
WRITE /  ‘İnternal tabloya APPENDING ile CARRID LH olan kayıtlar eklendi.’.
ULINE /1(63).
LOOP AT gt_spfli INTO gs_spfli.
WRITE:/ gs_spfli-carrid,   gs_spfli-connid,
gs_spfli-cityfrom, gs_spfli-deptime.
ENDLOOP.

Örnek: SPFLI tablosundaki ilk 5 kayıda göre SFLIGHT tablosundan okuma yapan örnek.

DATA: gt_spfli   TYPE STANDARD TABLE OF spfli,
gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
SELECT * FROM spfli UP TO 5 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
IF gt_spfli[] IS NOT INITIAL.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
FOR ALL ENTRIES IN gt_spfli
WHERE carrid = gt_spfli-carrid AND
connid = gt_spfli-connid.
ENDIF.
LOOP AT gt_sflight INTO gs_sflight.
WRITE:/ gs_sflight-carrid, gs_sflight-connid.
ENDLOOP.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: INNER JOIN eki kullanılarak SPFLI tablosundaki CARRID alanı LH değerine sahip kayıtları SFLIGHT tablusundan GT_SFLIGHT internal tablosuna ekleyen ve ekrana yazdıran örnek.

DATA: gt_spfli   TYPE STANDARD TABLE OF spfli,
gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
SELECT * FROM spfli AS a
INNER JOIN sflight AS b ON ( a~carrid = b~carrid AND
a~connid = b~connid )
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
WHERE a~carrid = ‘LH’.
LOOP AT gt_sflight INTO gs_sflight.
WRITE:/ gs_sflight-carrid, gs_sflight-connid.
ENDLOOP.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: DISTINCT kullanım örneği.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gs_spfli TYPE spfli.
SELECT DISTINCT cityto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli
WHERE cityfrom = ‘BERLIN’.
LOOP AT gt_spfli INTO gs_spfli.
WRITE gs_spfli-cityto.
ENDLOOP.

Örnek: SFLIGHT tablosundaki CARRID alanına göre minimum ve maksimum değerlerini yazan örnek.

DATA: BEGIN OF gs_carrid,
carrid TYPE sflight-carrid,
min    TYPE sflight-price,
max    TYPE sflight-price,
END OF gs_carrid.
SELECT carrid MIN( price ) MAX( price )
FROM sflight
INTO (gs_carrid-carrid, gs_carrid-min, gs_carrid-max)
GROUP BY carrid.
WRITE: / gs_carrid-carrid, gs_carrid-min, gs_carrid-max.
ENDSELECT.

Örnek: SFLIGHT tablosundaki ilk 5 kaydı GT_SFLIGHT internal tablosuna koplayan ve PRICE alanına göre azalan şekilde sıralayan örnek.

DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
SELECT * FROM sflight UP TO 5 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
ORDER BY price DESCENDING.
LOOP AT gt_sflight INTO gs_sflight.
WRITE:/ gs_sflight-carrid, gs_sflight-connid, gs_sflight-price.
ENDLOOP.

INSERT

Veritabanı tablosuna kayıt eklemek için kullanılır.

INSERT { {INTO hedef VALUES calisma_alani}

| { hedef FROM calisma_alani|{TABLE internal_tablo} } }.

hedef: Kayıtların ekleneceği tablo veya görünümdür. Tablo ismi direkt olarak belirtilebilir veya parantez içerisinde değişken ile belirtilebilir. CLIENT SPECIFIED otomatik üst birim seçimini devre dışı bırakır. Kayıt ekleme işlemi için yeni belirtilen üst birim kullanılır.

VALUES’ dan sonra veya FROM’ dan sonra çalışma alanı ismi yazarak, çalışma alanındaki kayıt eklenebilir veya TABLE ile belirtilen internal tablodaki kayıtlar eklenebilir. TABLE’ dan sonra ACCEPTING DUPLICATE KEYS eki kullanılarak veritabanı tablosunda kayıt daha önce mevcut ise hata alınmaması sağlanır. Sadece veritabanı tablosunda mevcut olmayan kayıtlar eklenir.

Örnek: GS_SFLIGHT çalışma alanındaki kaydı SFLIGHT tablosuna ekleyen örnek.

DATA gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘LH’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 1100.
gs_sflight-currency = ‘USD’.
INSERT into sflight values gs_sflight.
COMMIT WORK AND WAIT.

WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Eklenen kayıtları SE16N işlem kodu ile görüntüleyebilirsiniz.

Örnek: Internal tablodan kayıt ekleyen örnek.

Örnek: SFLIGHT tablosuna GT_SFLIGHT internal tablosundaki kayıtları ekleyen örnek.

DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AA’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 1000.
gs_sflight-currency = ‘USD’.
APPEND gs_sflight TO gt_sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AF’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 1200.
gs_sflight-currency = ‘USD’.
APPEND gs_sflight TO gt_sflight.
INSERT sflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

UPDATE

Veritabanı tablosundaki kayıtları güncellemek için kullanılır. Kullanımı aşağıdaki gibidir.

UPDATE hedef kaynak.

hedef: Kayıtların güncelleneceği tablo veya görünümdür. Tablo ismi direkt olarak belirtilebilir veya parantez içerisinde değişken ile belirtilebilir. CLIENT SPECIFIED otomatik üst birim seçimini devre dışı bırakır. Kayıt güncelleme işlemi için yeni belirtilen üst birim kullanılır.

kaynak: Değişecek kayıtları belirtir. SET sonrası değişecek alanlar belirtilebilir. SET ile WHERE kullanılarak hangi kayıtların değişeceği belirtilir. Kayıtları güncellemenin bir diğer yolu FROM kullanılarak çalışma alanı veya internal tablo kullanmaktır. Çalışma alanı kullanılarak tablodaki bir kaydın güncellenmesi sağlanabilir. Tablodaki değişecek kaydın anahtar alanları çalışma alanında tanımlanmalıdır. İnternal tablodan güncelleme yapmak için FROM dan sonra TABLE kullanılmalıdır. İnternal tablodaki kayıtlar teker teker güncelleme için kullanılır.

Örnek: SFLIGHT tablosundaki WHERE koşulunda belirtilen koşula göre bulunan kayıtların PRICE alanını güncelleyen örnek.

UPDATE sflight SET price = 6000
WHERE carrid = ‘LH’   AND
connid = ‘0026’ AND
fldate = sy-datum.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: SFLIGHT tablosundaki kaydın PRICE alanını GS_SFLIGHT çalışma alanındaki kayda göre güncelleyen örnek.

DATA gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘LH’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 3000.
gs_sflight-currency = ‘USD’.
UPDATE sflight FROM gs_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: SFLIGHT tablosundaki kayıtlarıın PRICE alanını GT_SFLIGHT internal tablosundaki kayıtlara göre güncelleyen örnek.

DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AA’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 4000.
gs_sflight-currency = ‘USD’.
APPEND gs_sflight TO gt_sflight.

CLEAR gs_sflight.
gs_sflight-carrid   = ‘AF’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 5000.
gs_sflight-currency = ‘USD’.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

MODIFY

Veritabanı tablosundaki kayıtları değiştirir. Kayıtlar mevcut değil ise ekler. Kullanımı aşağıdaki gibidir.

MODIFY hedef FROM kaynak.

hedef: Kayıtların güncelleneceği tablo veya görünümdür. Tablo ismi direkt olarak belirtilebilir veya parantez içerisinde değişken ile belirtilebilir. CLIENT SPECIFIED otomatik üst birim seçimini devre dışı bırakır. Kayıt güncelleme işlemi için yeni belirtilen üst birim kullanılır.

kaynak: Değişecek/eklenecek kayıtları belirtir. Kayıtları güncellemek için çalışma alanı veya internal tablo kullanılabilir. Çalışma alanı kullanılarak tablodaki bir kaydın güncellenmesi sağlanabilir. Tablodaki değişecek kaydın anahtar alanları çalışma alanında tanımlanmalıdır. İnternal tablodan güncelleme yapmak için FROM dan sonra TABLE kullanılmalıdır. İnternal tablodaki kayıtlar teker teker güncelleme için kullanılır.

Örnek: SFLIGHT tablosundaki kaydın PRICE alanını GS_SFLIGHT çalışma alanındaki kayda göre güncelleyen örnek.

DATA gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘LH’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 2000.
gs_sflight-currency = ‘USD’.
MODIFY sflight FROM gs_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: SFLIGHT tablosundaki kayıtlarıın PRICE alanını GT_SFLIGHT internal tablosundaki kayıtlara göre değiştiren örnek.

DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AA’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 800.
gs_sflight-currency = ‘USD’.
APPEND gs_sflight TO gt_sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AF’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
gs_sflight-price    = 1500.
gs_sflight-currency = ‘USD’.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

DELETE

Veritabanı tablosundan kayıtları siler. Kullanımı aşağıdaki gibidir.

DELETE { {FROM hedef [WHERE sql_kosulu]}

| {hedef FROM kaynak} }.

hedef: Kayıtların silineceği tablodur. Tablo ismi direkt olarak belirtilebilir veya parantez içerisinde değişken ile belirtilebilir. CLIENT SPECIFIED otomatik üst birim seçimini devre dışı bırakır. Kayıt güncelleme işlemi için yeni belirtilen üst birim kullanılır. WHERE sql_kosulu ile silinecek kayıtlar belirtilir.

kaynak: Silinecek kayıtları belirtir. Kayıtları silmek için çalışma alanı veya internal tablo kullanılabilir. Çalışma alanı kullanılarak tablodaki bir kaydın silinmesi sağlanabilir. Tablodaki silinecek kaydın anahtar alanları çalışma alanında tanımlanmalıdır. İnternal tablodan silmek için için FROM dan sonra TABLE kullanılmalıdır. İnternal tablodaki kayıtlar teker teker güncelleme için kullanılır.

Örnek: SFLIGHT tablosundaki FLDATE alanı günün tarihi olan kayıtları silen örnek.

DELETE FROM sflight WHERE fldate = sy-datum.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: Çalışma alanına göre SFLIGHT tablosundaki kayıtları silen örnek.

DATA gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘LH’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
DELETE sflight FROM gs_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

Örnek: SFLIGHT tablosundaki kayıtları GT_SFLIGHT internal tablosundaki kayıtlara göre silen örnek.

DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AA’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
APPEND gs_sflight TO gt_sflight.
CLEAR gs_sflight.
gs_sflight-carrid   = ‘AF’.
gs_sflight-connid   = ‘0026’.
gs_sflight-fldate   = sy-datum.
APPEND gs_sflight TO gt_sflight.
DELETE sflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WRITE: / ‘sy-subrc:’, sy-subrc LEFT-JUSTIFIED,
/ ‘sy-dbcnt:’, sy-dbcnt LEFT-JUSTIFIED.

INTERNAL TABLOLAR

İNTERNAL TABLOLAR (INTERNAL TABLES)

İnternal tablolar verileri ABAP programı çalıştığı sürece tablo şeklinde hafızada saklarlar. Veriler satır, satır saklanır. En çok veritabanı tablosundan alınan verileri depolamak ve düzenlemek için kullanılırlar. Kayıtlar internal tabloya eklendikten sonra silme, değiştirme, ekleme, sıralama gibi işlemler yapılabilir.

· Veriler satırlar halinde tutulur.

· Her satır aynı yapıdadır.

· Veriler SAP tablolarından veya başka kaynaklardan alınabilir.

· Hafızada oluşturulan veri nesneleridir. ABAP programı çalıştığı sürece hafızada saklanırlar.

İnternal Tablonun Veri Tipi (Data Type)

İnternal tabloları tanımlamak için veri tipleri kullanılır. Veri tipleri ABAP Dictionary içerisinde tanımlı bir tablo tipi veya TYPES ve DATA anahtar sözcükleri kullanılarak tanımlanabilir.

İnternal tablo veri tipini aşağıdaki bilgiler belirler.

1. Satir tipi (row type),

2. Tablo kategorisi (table category)

3. Tablo anahtarı (table key)

1. Satır Tipi (line type): İnternal tablonun satır tipidir. Genelde bir structure satır tipi olarak belirtilir. Structure’ ın her bir bileşeni (değişkeni) internal tablonun bir sütununa karşılık gelir.

2. Tablo Kategorisi: İnternal tablonun nasıl yönetileceğini ve kayıtlara nasıl erişileceği bilgisidir. 3 internal tablo kategorisi vardır.

a. Standart (standard)

b. Sıralı (sorted)

c. Karışık (Hashed)

3. Tablo Anahtarı (key): Tablodaki satırların anahtar alanlarını belirler. İki çeşit anahtar vardır.

a. Birincil anahtarlar (primary keys)

b. İkincil anahtarlar (secondary keys)

Tüm internal tablolar birincil anahtara sahiptir. Birincil anahtar standart veya kullanıcı tanımlı olabilir. Tablo kategorisine göre anahtar alanlar unique veya non-unique olarak tanımlanabilirler. Unique tanımda aynı değere sahip anahtar alanları olan birden fazla kayıt olamaz.

İnternal Tablo Kategorileri

Üç tip dâhilî tablo kategorisi vardır.

1. Standart (standard)

2. Sıralı (sorted)

3. Karışık (hashed)

Standart (Standard) İnternal Tablo

· Kayıtlara indeks numarası veya anahtar alanlar kullanılarak erişilir.

· Anahtar alanlarla kayıta erişim için geçen süre tablodaki kayıt sayısı ile orantılıdır.

· Standart tablonun anahtarları tekrarlanabilir (non-unique) yapıdadır. Unique anahtar tanımlanamaz.

· Dâhilî tabloya kayıt eklenirken unique anahtar (unique key) kontrolü yapılmadığı için standart tablolar çok hızlı doldurulurlar.

· Erişim için ikincil anahtar tanımlanabilir.

Sıralı (Sorted) Dâhilî Tablo

· Daima birincil anahtar alanlara (primary table key) göre sıralıdırlar. İndekslemede yapılır. Dâhilî tablolardaki kayıtlara indeks numarası veya anahtar alanlar kullanılarak erişilir.

· Anahtar alanlarla kayda erişim için geçen süre tablodaki kayıt sayısına göre logaritmik orantılıdır.

· Sıralı tablonun anahtarları eşsiz (unique) veya tekrarlanabilir (non-unique) yapıdadır. Unique anahtar tanımlanamaz.

Karışık (Hashed) Dâhilî Tablo

· Doğrusal indeks yapısı yoktur.

· Birincil ve ikincil anahtar alanlar ile erişilebilirler.

· Kayda erişim zamanı birincil anahtara göre erişimine göre sabit ve tablodaki kayıt sayısına bağlı değildir.

· Karışık tablonun anahtarları tekrar edilemez (unique) yapıdadır.

Not: Standart ve sıralı dâhilî tablolara indeks numaraları ile erişilebildiği için INDEX tabloları olarak da adlandırılırlar.

İnternal Tablo Tipi

İnternal tablo tipi aşağıdaki şekilde tanımlanabilir.

TYPES veri_tipi { {TYPE tablo_tipi OF [REF TO] tip}

| {LIKE tablo_tipi OF veri_nesnesi} }

[tablo_anahtarlari] [INITIAL SIZE n].

tip: TYPES anahtar sözcüğü ile tanımlanmış veri tipidir.

tablo_tipi: İnternal tablonun kategorisidir. Aşağıdaki kategoriler kullanılabilir.

· [STANDARD] TABLE

· SORTED TABLE

· HASHED TABLE

· ANY TABLE

· INDEX TABLE

veri_nesnesi: ABAP Dictionary’ de tanımlı veri nesnesidir.

Tablo_anahtarlari: Tablo tipinin tablo anahtarlarını tanımlamak için kullanılır. Kullanımı aşağıdaki şekildedir.

· WITH key

· [ WITH ikinci_anahtar1 ] [ WITH ikincil_anahtar2 ] …

· {WITH|WITHOUT} FURTHER SECONDARY KEYS

Ekler:

key: Birincil tablo anahtarı tanımlamak için kullanılır.

ikincil_anahtar1: 15 adete kadar ikincil tablo anahtarı tanımlanabilir.

{WITH|WITHOUT} FURTHER SECONDARY KEYS: WITH ile ikincil anahtarlar dikkate alınarak dahil edilir.

INITIAL SIZE n: Hafıza yönetimi ve sıralama için kullanılır. 0 değeri verilir ise hafıza yönetimi otomatik olarak tayin edilir.

DÂHİLÎ TABLO DOLDURMA İFADELERİ

INSERT

İnternal tabloya kayıt eklemek için kullanılır. Kullanımı aşağıdaki şekildedir.

INSERT eklenecek_satir INTO tablo_pozisyonu [sonuc].

eklenecek_satir ile belirtilen satırı, tablo_pozisyonu ile belirtilen pozisyona ekler.

eklenecek_satir

Eklenecek kayıttır. 3 çeşit kayıt olabilir.

1. calisma_alani

2. INITIAL LINE

3. LINES OF jtab [FROM idx1] [TO idx2] [USING KEY keyname]

1. calisma_alani: Yapısal veri nesnesine atanan tek kayıtlık yapıdır.

2. INITIAL LINE: Tek kayıtlık boş bir satır eklemek için kullanılır.

3. LINES OF diger_internal [FROM idx1] [TO idx2] [USING KEY anahtar_alan]: Başka bir internal tablonun tüm satırlarını veya belirtilen satırlarını eklemek için kullanılır.

itab_pozisyon

Tablonun hangi pozisyonuna satırların ekleneceğini belirtir. Kullanım şekilleri aşağıdakilerden birisi olabilir.

… {TABLE internal_tablo}
| { internal_tablo INDEX indeks}
| { internal_tablo } … .

TABLE internal_tablo: Aşağıdaki tablo kategorilerine göre eklenecek satır pozisyonu belirlenir.

1. Standart tablo: Birincil anahtar dikkate alınmadan her satır tablonun sonuna eklenir.

2. Sıralı tablo: Anahtar alanı değerine göre dâhilî tabloya sıralanmış satır yerleştirilir.

3. Karışık tablo: Birincil anahtar değerleri için hash yönetimi tarafından internal tabloya yeni satır eklenir.

itab INDEX indeks: Standart ve sıralı tablolar için çalışır. Eklenecek satırlar indeks ile belirtilen satırdan önce eklenir.

internal_tablo: Sadece döngü içerisinde aynı tablo kullanılırken ve USING_KEY kullanılmadığında kullanılabilir. Eklenecek her satır döngüdeki geçerli satırdan önce eklenir.

APPEND

İnternal tabloya bir veya birden fazla kayıt ekler. Birincil tablo indeksine bağlı olarak son kayıttan sonra yeni bir kayıt eklenir. Kullanımı aşağıdaki şekildedir.

APPEND eklenecek_satir TO internal_tablo [SORTED BY bilesen] [sonuc].

eklenecek_satir

INSERT komutuyla aynıdır.

Aşağıdaki tablo kategorilerine göre eklenecek satır pozisyonu belirlenir.

1. Standart tablo: İnternal tablo içeriği kontrol edilmeden direkt olarak eklenir.

2. Sıralı tablo: Satırlar sıralama sırasına uyuyorsa ve birincil tablo anahtarına göre çift kayıt oluşturulmazsa eklenir.

3. Karışık tablo: Satır eklenemez.

sy-tabix sistem değişkeni son eklenen satır numarasını alır.

COLLECT

Bir çalışma alanının içeriğini bir satır olarak dâhilî tabloya ekler ve sayısal bileşenlerini aynı birincil tablo anahtarına sahip kayıtlarla toplar. Dâhilî tablo birincil anahtara göre aşağıdaki şekilde taranır. Kullanımı aşağıdaki şekildedir.

COLLECT calisma_alani INTO internal_tablo [sonuc].

Standart tablo için COLLECT kullanıma uygun değildir ve kullanılmamalıdır. Sıralı ve karışık tablolarda kullanılabilir.

Bir İnternal Tablo İçeriğini Diğerine Kopyalama

Bir internal tablonun içeriğini başka bir internal tabloya kopyalamak için aşağıdaki yapı kullanılabilir.

<internal_tablo1>[] = <internal_tablo2>[].

İnternal tablo isimden sonra gelen köşeli parantezler ([]) tablo içeriğini ifade eder. İnternal tabloların tipleri aynı olmalıdır.

İnternal Tablodan Verileri Okumak

Bir internal tablodan veriler üç şekilde okunabilir.

1. READ TABLE

2. LOOP AT, ENDLOOP ifadeleri arasında birden fazla kayıt sırasıyla okunabilir.

3. AT


1. READ TABLE

İnternal tablonun bir satırını okur. Kullanımı aşağıdaki şekildedir.

READ TABLE internal_tablo { table_key

| free_key

| index } result.

tablo_anahtari: Tablo anahtarı kullanılarak arama yapmak için kullanılır. Aramada kullanılacak anahtarlar çalışma alanında belirtilir veya TABLE KEY ile teker teker belirtilebilir. Kullanımı aşağıda şekildedir.

… { FROM calisma_alani [USING KEY anahtar_alan] }

| { WITH TABLE KEY [anahtar_alan COMPONENTS]

{bilesen_ismi1|(isim1)} = veri_nesnesi1

{bilesen_ismi2|(isim2)} = veri_nesnesi2

… } … .

USING KEY anahtar_alan: Aranacak kaydın anahtar alanları çalışma alanı içerisinde belirtilir.

WITH TABLE KEY [keyname COMPONENTS]: Aranacak kaydın anahtar alanların isimleri teker teker yazılarak belirtilir.

Free_key: Anahtar alanı bağımsız arama yapmak için kullanılır. İki şekilde kullanımı vardır.

… WITH KEY { bilesen1 = veri_nesnesi1 bilesen2 = veri_nesnesi2 … [BINARY SEARCH] }

| { keyname COMPONENTS bilesen1 = veri_nesnesi1 bilesen2 = veri_nesnesi2 … } … .

bilesen1 = veri_nesnesi1 bilesen2 = veri_nesnesi2: Aranacak anahtar alanlar tek tek belirtilir.

[BINARY SEARCH]: Binary arama yapak için.

keyname COMPONENTS bilesen1 = veri_nesnesi1 bilesen2 = veri_nesnesi2: anahtar_alan tablo anahtarı tanımlamak için kullanılır.

İndex: Satır numarası verilen kaydı okumak için kullanılır.

… INDEX indeks [USING KEY anahtar_alan] … .

USING KEY anahtar_alan:???

Result: Okunacak satırın aktarım davranışını belirtir.

· … INTO wa [transport_options]

· … ASSIGNING <fs> [CASTING]

· … REFERENCE INTO dref

· … TRANSPORTING NO FIELDS

READ TABLE ifadesi sy-subrc, sy-tabix, sy-tfill, ve sy-tleng sistem değişkenlerini doldurur.

READ TABLE anahtar kelimesi kullanımı sonrası sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 Arama başarılı.
2 Arama başarılı. Result içerisinde COMPARING kullanımına göre değişir.
4 Arama başarısız.
8 Arama başarısız. Eğer giriş binary arama ile bulundu ve tablonun sonuna geldi ise sy-tabix satır numarası + 1 olur.

LOOP AT: İnternal tablodaki her kayıt için bir döngü bloğu çalıştırılır. LOOP ifadesi ile WHERE anahtar kelimesi kullanılarak döngü sayısı sınırlandırılabilir. Koşula uyan her kayıt sayısı kadar döngü oluşur. Kullanımı aşağıdaki şekildedir.

LOOP AT itab result [cond].

Kod_blogu

ENDLOOP.

Result: Okunan satırın bilgi aktarma davranışı için kullanılır.

… { INTO wa }

| { ASSIGNING <fs> [CASTING] }

| { REFERENCE INTO dref }

| { TRANSPORTING NO FIELDS } … .

INTO calisma_alani ile okunan kayıt bir çalışma alanına transfer edilir.

ASSIGNING <fieldsymbols> [CASTING] ile okunan kayıt bir field symbol’ e transfer edilir.

REFERENCE INTO veri_referansi ile okunan kayıt bir referans nesnesine transfer edilir.

TRANSPORTING NO FIELDS ile kayıt herhangi bir veri nesnesine transfer edilmez. WHERE anahtar kelimesi ile birlikte kullanılabilir.

LOOP AT-ENDLOOP ifadesi sonrası sy-subrc sistem değişkeni aşağıdaki şekilde değişir.

sy-subrc Anlamı
0 Döngü en az bir defa çalıştı
4 Döngü çalışmadı

sy-tfill ve sy-tleng alanları da dolar.

AT

Loop döngüsü içerisinde kontrol yapıları için kullanılır. AT ve ENDAT blokları kontrol kesmelerinde işlenen bildirimler tanımlar. Kontrol yapısı değiştiğinde, AT ifadesi hangi ifade bloğunun çalıştığı kontrol kesmesini belirler. Bu ifade blokları içerisinde SUM ifadesi sayısal değerlerin toplanmasında kullanılabilir.

LOOP AT itab result …

[AT FIRST.

ENDAT.]

[AT NEW comp1.

ENDAT.

[AT NEW comp2.

ENDAT.

[…]]]

[ … ]

[[[…]

AT END OF comp2.

ENDAT.]

AT END OF comp1.

ENDAT.]

[AT LAST.

ENDAT.]

ENDLOOP.

FIRST: Kontrol düzeyi dâhilî tablonun ilk satırında tanımlanır. Kontrol kesmesi ilk satır okunduğunda çalışır.

… {NEW}|{END OF} compi: Kontrol düzeyler compi de tanımlanan değeri aynı olan satır grubunun başlangıcında ve sonunda tanımlanır. Kontrol kesmeleri compi bileşeninin içeriği değiştiğinde veya başka bileşen compi’ nin solunda olan başka bir bileşen değiştiğinde çalışır.

LAST: Kontrol düzeyi dâhilî tablonun son satırında tanımlanır. Kontrol kesmesi son satır okunduğunda çalışır.

İnternal Tablo İçeriğini Değiştirme

MODIFY

İnternal tablodaki bir veya daha fazla kaydı değiştirmek için kullanılır. Kayıtlara indeks numarası veya anahtar alanları ile ulaşılır. Kullanımı aşağıdaki şekildedir.

MODIFY { itab_line | itab_lines }.

Anahtar alanların içeriğini değiştirme ile ilgili aşağıda belirtilen sınırlamalar vardır.

Sıralı ve hash tabloların anahtar alanları sadece okunabilir ve değiştirilmemelidir. Değiştirilmeye çalışılması hatalara neden olur.

İkincil tablo anahtarının, anahtar alanları ikincil indeks kullanıldığında okunabilir düzendedir. LOOP döngüleri ve USING KEY ekinden sonra ikincil indekste MODIFY kullanılan örnek içindir. Aksi durumda anahtar alanlar okunabilir düzende değildir.

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

sy-subrc Anlamı
0 En az bir kayıt değişti.
4 Belirtilen koşullara uygun kayıt bulunamadığından hiçbir kayıt değiştirilemedi.

DELETE

İnternal tablodan bir veya daha fazla sayıda kayıt silmek için veya birbiri ardına sıralanmış çift satırları silmek kullanılır. Silinecek satırlar indeks numarası veya tablo anahtarları belirtilerek silinirler.

sy-subrc Anlamı
0 En az bir kayıt silindi.
4 Uygun satır bulunamadığından hiçbir kayıt silinemedi.

1. Kayıt tablo anahtarları ile aramada başarısız olduğundan,

2. belirtilen mantıksal ifade veya belirtilen kayıt indeksi tablo kayıt indeksinden büyük olduğundan

3. çift satırlar sıralı olmadığından bulunamadı.

SORT

İnternal tabloyu sıralamak için kullanılır. Kullanımı aşağıdaki şekildedir.

SORT internal_tablo [STABLE]

{ [ASCENDING|DESCENDING]

[AS TEXT]

[BY {comp1 [ASCENDING|DESCENDING] [AS TEXT]}

{ comp2 [ASCENDING|DESCENDING] [AS TEXT]} … ] }

| { [BY (otab)] }

STABLE: Kararlı sıralama için kullanılır. …

ASCENDING|DESCENDING: Sıralama yönünü belirtir. ASCENDING artan, DESCENDING azalan yönde sıralama yapar. Eğer bu ek kullanılmaz ise dâhilî tablo artan düzende sıralanır. BY ekinden sonra bileşen ismi belirtilerek belirtilen bileşenlere göre münferit olarak sıralama yapılabilir.

AS TEXT: text-like bileşenler için bölgesel code page e göre sıralama yapmak için kullanılır.

BY compi [ASCENDING|DESCENDING] [AS TEXT]: Kendisinden sonra belirtilen bileşenlere göre sıralama yapmak için kullanılır.

BY (otab): Dâhilî tabloyu, otab dâhilî tablosunda belirtilen bileşenlere göre sıralar.

Otab ABAP Dictionary’ de tanımlı ABAP_SORTORDER_TAB tipinde sıralı bir tablodur. Satır tipi ABAP_SORTORDER’ dır. Bileşenler aşağıdaki gibidir.

NAME of type SSTRING:

sıralamada kullanılacak bileşenler.

DESCENDING of the type CHAR of a length 1:

Bileşenin sıralama yönünü belirtmek için kullanılır. Boş ise artan düzende sıralama yapılır. Eğer “X” değeri var ise azalan düzende sıralama yapılır.

ASTEXT of type CHAR with length 1:

Eğer “X” değeri bileşen için tanımlanmış ise, sıralama AS TEXT eki kullanılarak yapılır.

İnternal Tabloda Arama İşlemleri

FIND IN TABLE

İnternal tablo içerisinde bir örneğe göre bayt-karakter dizisi veya metin karakter dizisine göre arama yapar. İnternal tablo ikincil tablo anahtarı olmayan standart tablo olmalıdır.

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

IN TABLE internal_tablo [tablo_araligi]

[IN {CHARACTER|BYTE} MODE]

[find_options].

tablo_araligi: Dâhilî tablodaki arama aralığını daraltmak için kullanılır.

IN {CHARACTER|BYTE} MODE: Satırın karakter-benzeri (character-like) veya byte-benzeri (byte-like) olup olmadığını belirtir.

sy-subrc Anlamı
0 Arama aralığında, aranan örnek en az bir defa bulundu
4 Arama aralığında aranan örnek bulunamadı

REPLACE IN TABLE

Dâhilî tablo örnekte verilen byte-karakter dizisi veya metin karakter dizisine göre satır satır aranır ve bulunan bölge belirtilen veri nesnesi ile değiştirilir.

sy-subrc Anlamı
0 Aranan dizi, belirtilen içerik ile değiştirildi ve tüm sonuç tablo satırında mevcut
2 Aranan dizi, belirtilen içerik ile değiştirildi ve değişikliğin sonucu en az bir tablo satırda kesildi
4 Aranan dizi bulunamadı
8 Örnek veya yeni veri nesnesi çevrilebilir double-byte karakter içermiyor.

İNTERNAL TABLO İŞLEMLERİ

REFRESH

İnternal tablonun içeriğini (tüm kayıtları) siler. Eğer internal tablonun başlık satırı (header line) varsa, başlık satırı temizlenmez.

REFRESH <dâhilî_tablo>.

CLEAR

Dâhilî tablonun başlık satırını (header line) temizler.

CLEAR <dâhilî_tablo>.

Dâhili tablo içerisindeki tüm kayıtları silmek için aşağıdaki şekilde kullanılabilir.

CLEAR <dâhilî_tablo>[].

FREE

Dâhilî tablo içerisindeki tüm kayıtları siler ve internal tablonun hafızada işgal ettiği alanı serbest bırakır.

DESCRIBE TABLE

İnternal tabloya ait bilgileri elde etmek için kullanılır.

DESCRIBE TABLE <dâhilî_tablo> [LINES <degisken>].

İnternal tablonun kaç kayıttan oluştuğu gibi bilgiler elde edilebilir. Kullanımı sonrası bazı sistem değişkenleri aşağıdaki şekilde değişir.

· SY-TFILL: İnternal tablonun kayıt sayısı.

· SY-TLENG: İnternal tablonun kayıt genişliği.

DELETE ADJACENT DUPLICATE ENTRIES FROM

İnternal tablodaki ardışık olarak sıralanmış aynı değere sahip kayıtları siler.

DELETE ADJACENT DUPLICATE ENTRIES FROM <dâhilî_tablo>
                            [COMPARING <alan1> <alan2> ... |ALL FIELDS].

· COMPARING <alan1> <alan2>: Belirtilen alan değerlerine göre karşılaştırma yaparak kayıtlar silinir.

· COMPARING ALL FIELDS: İnternal tablonun tüm alan değerleri karşılaştırılarak kayıtlar silinir.

COMPARING ALL FIELDS varsayılan seçenektir.

 

Object Oriented ALV

OO ALV için

BC (CL_GUI_ALV_GRID) veya SALV (CL_SALV_TABLE) sınıfları kullanılmaktadır.

SE24 işlem kodu ile sınıfları incelenebilir.

BC ALV

Klasik ABAP listesi veya ızgara içerisinde çıktıyı gösterebilir. Liste görünümünde tüm ekranı kaplar ve sadece bir tablo gösterilebilir.

Izgara görünümünde tam ekran veya container nesnesi aracılığıyla bir ekranda birden fazla tablo gösterilebilir. Tam ekran görünümünde tüm ekranı kaplar ve sadece bir tablo gösterilebilir. Container’ lar aracılığıyla ekranda birden fazla tablo gösterilebilir.

Örnek: Programınızda bir ekran oluşturun.

Ekranı SE51 işlem kodundan veya ABAP düzenleyici içerisindeki nesne listesi görüntüleyicisini kullanarak oluşturabilirsiniz.

ABAP Düzenleyiciden Nesne listesi görüntüsü ( ) butonunu tıklayın. Programa ait nesneler listelenecektir. Nesne listesi üzerine sağ tıklayarak açılan menüden Create->Screen seçeneğini seçerek ekran oluşturabilirsiniz.

Ekran numarasını olarak “100” girin.

Yeni ekranda Short Description alanına ekranla ilgili kısa tanım girin.

Element list sekmesinde OK elementine değişken ismi olarak “OK_CODE” girin.

Flow logic sekmesine geçin MODULE ile başlayan satırların başından yıldız işaretlerini kaldırın ve kaydedin.

Ekrana ait olayları kontrol etmek için programa bir GUI status nesnesi eklemek gerekir. GUI status nesnesini SE41 işlem kodundan veya ABAP düzenleyiciden nesne listesini kullanarak oluşturabilirsiniz.

GUI status tanımları ekranı açılacaktır. Status alanına “100” girin, Short Text alanına kısa tanım bilgisi girin.

İşlev tuşları sekmesini açın. Resimde gösterilen şekilde 3 buton için fonksiyon kodunu doldurun.

GUI status nesnesini aktif edin.

Dilerseniz nesne görüntüleyiciyi kullanarak ekran için Title bar nesnesi ekleyebilirsiniz.

Programa aşağıdaki kod bloğunu ekleyin.

TABLES spfli.
DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: ok_code LIKE sy-ucomm,
g_grid_100    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_grid_100 IS INITIAL.
CREATE OBJECT g_grid_100
EXPORTING
i_parent = cl_gui_container=>screen0.
gs_variant-report = sy-repid.
CALL METHOD g_grid_100->set_table_for_first_display
EXPORTING i_structure_name = ‘SFLIGHT’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

ABAP kodunu ve ekran nesnesini aktif edin.

Programı çalıştırdığınızda SPFLI tablosu içeriğini görebilirsiniz.

Örnek 2: docking container kullanarak ekrana yerleştirilen custom control nesnesi üzerinde ALV’ yi gösteren örnek.

Nesne görüntüleyici içerisinden ekran nesnesine çift tıklayın. Araç çubuğundaki Layout butonuna tıklayarak. Screen painter’ ı açın. Sol taraftaki menüden Custom Control butonuna tıklayarak ekran üzerine yeni bir custom Control ekleyin.

Custom Control’ un ismini “CONT100” yapın ve ekranı aktif edin.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: ok_code LIKE sy-ucomm,
g_grid_100    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant,
g_custom_container_100 TYPE REF TO cl_gui_custom_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_custom_container_100 IS INITIAL.
CREATE OBJECT g_custom_container_100
EXPORTING container_name = ‘CONT100’.
CREATE OBJECT g_grid_100
EXPORTING i_parent = g_custom_container_100.
gs_variant-report = sy-repid.
CALL METHOD g_grid_100->set_table_for_first_display
EXPORTING i_structure_name = ‘SFLIGHT’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

Programı çalıştırdığınızda Custom Container içerisinde görüntülenen ALV’ yi görebilirsiniz.

Örnek 3: Ekrana Custom Container yerleştirmeden gösterilen ALV.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: ok_code LIKE sy-ucomm,
g_grid_100    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant,
g_docking_container_100 TYPE REF TO cl_gui_docking_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_docking_container_100 IS INITIAL.
CREATE OBJECT g_docking_container_100
EXPORTING
side       = g_docking_container_100->dock_at_top
extension  = 2000.
CREATE OBJECT g_grid_100
EXPORTING i_parent = g_docking_container_100.
gs_variant-report = sy-repid.
CALL METHOD g_grid_100->set_table_for_first_display
EXPORTING i_structure_name = ‘SFLIGHT’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

SALV ÖRNEKLERİ

Örnek:

TABLES spfli.
DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: g_salv_table TYPE REF TO cl_salv_table.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
TRY.
cl_salv_table=>factory(
EXPORTING
list_display = ‘X’
IMPORTING
r_salv_table = g_salv_table
CHANGING
t_table = gt_spfli ).
CATCH cx_salv_msg.
ENDTRY.
g_salv_table->display( ).

Örnek: Aşağıdaki kod SALV ile oluşturulan ALV yi konteyner içerisinde gösterir.

TABLES spfli.
DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: g_salv_table TYPE REF TO cl_salv_table,
g_custom_container_100 TYPE REF TO cl_gui_custom_container,
ok_code LIKE sy-ucomm,
g_functions type ref to cl_salv_functions_list,
gc_true  type sap_bool value ‘X’.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_custom_container_100 IS INITIAL.
CREATE OBJECT g_custom_container_100
EXPORTING container_name = ‘CONT100’.
TRY.
cl_salv_table=>factory(
EXPORTING
r_container    = g_custom_container_100
IMPORTING
r_salv_table = g_salv_table
CHANGING
t_table = gt_spfli ).
CATCH cx_salv_msg.
ENDTRY.
g_functions = g_salv_table->get_functions( ).
g_functions->set_all( gc_true ).
g_salv_table->display( ).
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 <I>” USER_COMMAND_0100  INPUT</I>

Örnek: SAPLKKBL programından Copy status butonunu kullanarak kendi programınıza GUI status kopyalayabilirsiniz.

Nesne listesinde görebilirsiniz.

Aktif edin.

TYPE-POOLS: slis.
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv,
gs_layout    TYPE slis_layout_alv.
TYPES: BEGIN OF gy_sbook,
box       TYPE c LENGTH 1,
checkbox  TYPE c LENGTH 1,
carrid    TYPE sbook-carrid,
connid    TYPE sbook-connid,
fldate    TYPE sbook-fldate,
metin     TYPE c LENGTH 20,
END OF gy_sbook.
DATA: gt_sbook TYPE STANDARD TABLE OF gy_sbook,
gv_repid TYPE sy-repid.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CLEAR gs_fieldcat.
gs_fieldcat-tabname    = ‘GT_SBOOK’.
gs_fieldcat-fieldname  = ‘CHECKBOX’.
gs_fieldcat-seltext_m  = ‘CHECKBOX’.
gs_fieldcat-outputlen  = 3.
gs_fieldcat-checkbox   = ‘X’.
gs_fieldcat-edit       = ‘X’.
gs_fieldcat-input      = ‘X’.
*gs_fieldcat-no_out     = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘ID’.
gs_fieldcat-outputlen  = 7.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘No’.
gs_fieldcat-outputlen  = 8.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Uçuş tarihi’.
gs_fieldcat-outputlen  = 9.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘METIN’.
gs_fieldcat-seltext_m  = ‘Açıklama’.
gs_fieldcat-outputlen  = 20.
gs_fieldcat-edit       = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
gs_layout-box_fieldname     = ‘BOX’.
gs_layout-no_input          = ‘X’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program        = gv_repid
it_fieldcat               = gt_fieldcat
i_save                    = ‘A’
i_callback_pf_status_set  = ‘F_GUI_STATUS’
i_callback_user_command   = ‘F_USER_COMMAND’
is_layout                 = gs_layout
TABLES
t_outtab                  = gt_sbook
EXCEPTIONS
program_error             = 1
OTHERS                    = 2.
FORM f_gui_status USING p_extab TYPE slis_t_extab.
SET PF-STATUS ‘STANDARD_FULLSCREEN’.
ENDFORM.
FORM f_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA ref_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_sbook TYPE gy_sbook,
lv_tabix TYPE c LENGTH 4,
lv_mesaj TYPE c LENGTH 50.
IF ref_grid IS INITIAL.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.
CASE r_ucomm.
WHEN ‘&DATA_SAVE’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE checkbox = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen checkbox:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE box = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen kutular:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE metin IS NOT INITIAL.
MESSAGE ls_sbook-metin TYPE ‘I’.
ENDLOOP.
ENDCASE.
rs_selfield-refresh = ‘X’.
ENDFORM.

Örnek: Bu sefer GUI status 100.

DATA: gt_fieldcat  TYPE lvc_t_fcat,
gs_fieldcat  TYPE lvc_s_fcat.
TYPES: BEGIN OF gy_sbook,
box       TYPE c LENGTH 1,
checkbox  TYPE c LENGTH 1,
carrid    TYPE sbook-carrid,
connid    TYPE sbook-connid,
fldate    TYPE sbook-fldate,
metin     TYPE c LENGTH 20,
END OF gy_sbook.
DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
g_valid TYPE c,
gt_sbook TYPE STANDARD TABLE OF gy_sbook,
ls_sbook TYPE gy_sbook,
lv_tabix TYPE c LENGTH 4,
lv_mesaj TYPE c LENGTH 50,
is_layout   TYPE lvc_s_layo.
DATA: et_index_rows TYPE lvc_t_row ,
et_row_no     TYPE lvc_t_roid ,
wa_row_no     LIKE LINE OF et_row_no.
DATA gv_stbl TYPE lvc_s_stbl.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed ,
data_changed_finished
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified
et_good_cells .
PRIVATE SECTION.
DATA: error_in_data TYPE c.
ENDCLASS.                    “lcl_event_receiver DEFINITION
DATA: main_event_receiver TYPE REF TO lcl_event_receiver.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD  handle_data_changed.
DATA ls_deleted_rows TYPE lvc_s_moce.
ENDMETHOD.                    <I>”HANDLE_DATA_CHANGED</I>
METHOD data_changed_finished.
DATA : lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.
ENDMETHOD.                    “DATA_CHANGED_FINISHED
ENDCLASS.                    “LCL_EVENT_RECEIVER IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CALL SCREEN 0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
PERFORM create_gui_objects_0100.
ENDMODULE.                ” STATUS_0100  OUTPUT
MODULE user_command_0100 INPUT.
CLEAR g_valid.
CALL METHOD g_alv_grid->check_changed_data
IMPORTING e_valid = g_valid.
CASE ok_code.
WHEN ‘&DATA_SAVE’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE checkbox = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen checkbox:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CALL METHOD g_alv_grid->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no     = et_row_no.
LOOP AT et_row_no INTO wa_row_no  .
ls_sbook-box = ‘X’ .
MODIFY gt_sbook INDEX wa_row_no-row_id FROM ls_sbook TRANSPORTING box  .
ENDLOOP.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE box = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen kutular:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE metin IS NOT INITIAL.
MESSAGE ls_sbook-metin TYPE ‘I’.
ENDLOOP.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT
MODULE exit INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.                 ” EXIT  INPUT
FORM create_gui_objects_0100 .
DATA: lt_fieldcat TYPE lvc_t_fcat,
is_variant  TYPE disvariant,
is_layout   TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions.
DATA : lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.
IF g_docking_container IS INITIAL.
CALL METHOD cl_gui_cfw=>dispatch.
CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.
CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 4
OTHERS            = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
APPEND g_alv_grid->mc_fc_graph              TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_info               TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_append_row TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_copy           TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_copy_row       TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_cut            TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_delete_row TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_insert_row     TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_move_row       TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_paste          TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_paste_new_row  TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_undo           TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_check              TO lt_toolbar_excluding.
CLEAR gs_fieldcat.
gs_fieldcat-tabname    = ‘GT_SBOOK’.
gs_fieldcat-fieldname  = ‘CHECKBOX’.
gs_fieldcat-seltext    = ‘CHECKBOX’.
gs_fieldcat-outputlen  = 3.
gs_fieldcat-checkbox   = ‘X’.
gs_fieldcat-edit       = ‘X’.
*    gs_fieldcat-no_out     = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext    = ‘ID’.
gs_fieldcat-outputlen  = 7.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext    = ‘No’.
gs_fieldcat-outputlen  = 8.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext    = ‘Uçuş tarihi’.
gs_fieldcat-outputlen  = 9.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘METIN’.
gs_fieldcat-seltext    = ‘Açıklama’.
gs_fieldcat-outputlen  = 20.
gs_fieldcat-edit       = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
is_layout-box_fname    = ‘BOX’.
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = is_variant
is_layout                     = is_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_sbook
it_fieldcatalog               = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT main_event_receiver.
SET HANDLER main_event_receiver->handle_data_changed FOR g_alv_grid.
SET HANDLER main_event_receiver->data_changed_finished FOR g_alv_grid.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_alv_grid.
CALL METHOD g_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD g_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD g_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CLEAR: lt_cells[], ls_cells.
ls_cells-row_id-index = 1.
CALL METHOD g_alv_grid->set_selected_cells
EXPORTING
it_cells = lt_cells.
ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDFORM.                    ” CREATE_GUI_OBJECTS_0100

Alan kataloğları kontrol edilecek.

Örnek: İki ALV gösteren örnek.

TABLES spfli.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gt_sbook type standard table of sbook.
DATA: ok_code LIKE sy-ucomm,
g_grid1 TYPE REF TO cl_gui_alv_grid,
g_grid2 TYPE REF TO cl_gui_alv_grid,
gs_variant LIKE disvariant,
g_docking_container1 TYPE REF TO cl_gui_docking_container,
g_docking_container2 TYPE REF TO cl_gui_docking_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
SELECT * FROM sbook
INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_docking_container1 IS INITIAL.
CREATE OBJECT g_docking_container1
EXPORTING
side       = g_docking_container1->dock_at_top
ratio      = 50.
CREATE OBJECT g_grid1
EXPORTING i_parent = g_docking_container1.
gs_variant-report = sy-repid.
CALL METHOD g_grid1->set_table_for_first_display
EXPORTING i_structure_name = ‘SPFLI’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
IF g_docking_container2 IS INITIAL.
CREATE OBJECT g_docking_container2
EXPORTING
side       = g_docking_container2->dock_at_bottom
ratio      = 50.
CREATE OBJECT g_grid2
EXPORTING i_parent = g_docking_container2.
gs_variant-report = sy-repid.
CALL METHOD g_grid2->set_table_for_first_display
EXPORTING i_structure_name = ‘SBOOK’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_sbook.
ENDIF.
ENDMODULE.                 ” STATUS_0100  OUTPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT

Örnek: İki Custom konteyner kullanarak iki farklı alv gösteren örnek.

TABLES spfli.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gt_sbook type standard table of sbook.
DATA: ok_code LIKE sy-ucomm,
g_grid1    TYPE REF TO cl_gui_alv_grid,
g_grid2    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant,
g_custom_container1 TYPE REF TO cl_gui_custom_container,
g_custom_container2 TYPE REF TO cl_gui_custom_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
SELECT * FROM sbook
INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_custom_container1 IS INITIAL.
CREATE OBJECT g_custom_container1
EXPORTING container_name = ‘CONT1’.
CREATE OBJECT g_grid1
EXPORTING i_parent = g_custom_container1.
gs_variant-report = sy-repid.
CALL METHOD g_grid1->set_table_for_first_display
EXPORTING i_structure_name = ‘SPFLI’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
IF g_custom_container2 IS INITIAL.
CREATE OBJECT g_custom_container2
EXPORTING container_name = ‘CONT2’.
CREATE OBJECT g_grid2
EXPORTING i_parent = g_custom_container2.
gs_variant-report = sy-repid.
CALL METHOD g_grid2->set_table_for_first_display
EXPORTING i_structure_name = ‘SBOOK’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_sbook.
ENDIF.
ENDMODULE.                 <I>” STATUS_0100  OUTPUT</I>
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT

Örnek:

DATA: gt_fieldcat  TYPE lvc_t_fcat,
gs_fieldcat  TYPE lvc_s_fcat.
DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
gt_mara TYPE STANDARD TABLE OF mara,
gs_mara TYPE mara,
gs_layout   TYPE lvc_s_layo.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS : handle_hotspot_click FOR EVENT hotspot_click OF
cl_gui_alv_grid
IMPORTING
e_row_id e_column_id es_row_no.
ENDCLASS.                    “lcl_event_receiver DEFINITION
DATA: main_event_receiver TYPE REF TO lcl_event_receiver.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_hotspot_click.
CASE e_column_id.
WHEN ‘MATNR’.
CLEAR gs_mara.
READ TABLE gt_mara INTO gs_mara INDEX e_row_id-index.
IF sy-subrc EQ 0.
SET PARAMETER ID ‘MAT’ FIELD gs_mara-matnr.
CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDMETHOD.
ENDCLASS.                    “LCL_EVENT_RECEIVER IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM mara UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_mara.
CALL SCREEN 0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
PERFORM create_gui_objects_0100.
ENDMODULE.                 ” STATUS_0100  OUTPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT
MODULE exit INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.                 ” EXIT  INPUT
FORM create_gui_objects_0100 .
DATA: lt_fieldcat TYPE lvc_t_fcat,
gs_variant  TYPE disvariant,
gs_layout   TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions.
IF g_docking_container IS INITIAL.
CALL METHOD cl_gui_cfw=>dispatch.
CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.
CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 4
OTHERS            = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name             = ‘MARA’
CHANGING
ct_fieldcat                  = gt_fieldcat
EXCEPTIONS
inconsistent_interface       = 1
program_error                = 2
OTHERS                       = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
gs_fieldcat-hotspot = ‘X’.
MODIFY gt_fieldcat FROM gs_fieldcat
TRANSPORTING hotspot
WHERE fieldname = ‘MATNR’.
gs_variant-report = sy-repid.
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = gs_variant
is_layout                     = gs_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_mara
it_fieldcatalog               = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT main_event_receiver.
SET HANDLER main_event_receiver->handle_hotspot_click FOR g_alv_grid.
ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDFORM.                    ” CREATE_GUI_OBJECTS_0100

Örnek: Veritabanı erişim işlemlerini gösteren örnek.

DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
CLASS lcl_alv DEFINITION.
PUBLIC SECTION.
METHODS:
alv_olustur,
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object
e_interactive
sender,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm sender.
ENDCLASS.
DATA g_alv TYPE REF TO lcl_alv.
CLASS lcl_alv IMPLEMENTATION.
METHOD alv_olustur.
DATA: lt_fieldcat   TYPE lvc_t_fcat,
ls_fieldcat   TYPE lvc_s_fcat,
ls_variant    TYPE disvariant,
ls_layout     TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions,
lv_repid      TYPE sy-repid.
DATA: lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.
IF g_docking_container IS INITIAL.
CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.
CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 4
OTHERS            = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name        = ‘ZSFLIGHT’
CHANGING
ct_fieldcat             = lt_fieldcat
EXCEPTIONS
inconsistent_interface  = 1
program_error           = 2
OTHERS                  = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ls_fieldcat-edit = ‘X’.
MODIFY lt_fieldcat FROM ls_fieldcat
TRANSPORTING edit
WHERE fieldname = ‘PRICE’.
ls_layout-box_fname    = ‘BOX’.
lv_repid = sy-repid.
ls_variant-report      = lv_repid.
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = ls_variant
is_layout                     = ls_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_sflight
it_fieldcatalog               = lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SET HANDLER me->handle_toolbar FOR g_alv_grid.
SET HANDLER me->handle_user_command FOR g_alv_grid.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_alv_grid.
CALL METHOD g_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDMETHOD.
METHOD handle_toolbar.
DATA ls_toolbar TYPE stb_button.
CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘DOLDUR’           TO ls_toolbar-function.
MOVE icon_activity      TO ls_toolbar-icon.
MOVE ‘Tabloyu doldur’   TO ls_toolbar-text.
MOVE ‘select ve insert’ TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘TUMUNUSIL’        TO ls_toolbar-function.
MOVE icon_delete        TO ls_toolbar-icon.
MOVE ‘Tümünü sil’       TO ls_toolbar-text.
MOVE ‘delete’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘SATIRSIL’         TO ls_toolbar-function.
MOVE icon_delete_row    TO ls_toolbar-icon.
MOVE ‘Seçileni sil’     TO ls_toolbar-text.
MOVE ‘delete’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘GUNCELLEM’        TO ls_toolbar-function.
MOVE ‘Güncelle(modify)’ TO ls_toolbar-text.
MOVE ‘modify’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘GUNCELLEU’        TO ls_toolbar-function.
MOVE ‘Güncelle(update)’ TO ls_toolbar-text.
MOVE ‘update’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
ENDMETHOD.
METHOD handle_user_command.
DATA: et_index_rows TYPE lvc_t_row,
et_row_no     TYPE lvc_t_roid,
wa_row_no     LIKE LINE OF et_row_no.
CASE e_ucomm.
WHEN ‘DOLDUR’.
REFRESH gt_sflight.
SELECT * FROM sflight UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
INSERT zsflight FROM TABLE gt_sflight.
CALL METHOD sender->refresh_table_display.
WHEN ‘TUMUNUSIL’.
DELETE FROM zsflight.
COMMIT WORK AND WAIT.
REFRESH gt_sflight.
CALL METHOD sender->refresh_table_display.
WHEN ‘SATIRSIL’.
CALL METHOD g_alv_grid->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no     = et_row_no.
LOOP AT et_row_no INTO wa_row_no.
READ TABLE gt_sflight INTO gs_sflight INDEX wa_row_no-row_id.
DELETE FROM zsflight WHERE carrid = gs_sflight-carrid AND
connid = gs_sflight-connid AND
fldate = gs_sflight-fldate.
COMMIT WORK AND WAIT.
DELETE gt_sflight WHERE carrid = gs_sflight-carrid AND
connid = gs_sflight-connid AND
fldate = gs_sflight-fldate.
CALL METHOD sender->refresh_table_display.
ENDLOOP.
WHEN ‘GUNCELLEM’.
MODIFY zsflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WHEN ‘GUNCELLEU’.
UPDATE zsflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
SELECT * FROM zsflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
CREATE OBJECT g_alv.
CALL SCREEN 0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
CALL METHOD g_alv->alv_olustur.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

ALV (ABAP LIST VIEWER)

ALV (ABAP LIST VIEWER)

SAP’ nin standart liste görüntüleyicisidir (ABAP List Viewer). İnternal tablodaki bilgileri standart liste formatında görüntüler. Standart bir liste formatı ve kullanıcı arayüzü sağlar. Hazır fonksiyonları sayesinde geliştirme zamanını önemli derecede azaltır.

Liste çıktısını oluşturmak için iki temel parametreye ihtiyaç vardır.

1. Veri tablosu: ALV’ de gösterilmek istenen internal tablodur

2. Sütun bilgileri: Sütun başlığı, genişliği gibi bilgilerdir.

ALV birçok hazır fonksiyona sahiptir. Bazı hazır fonksiyonlar,

  • Sıralama
  • Filtreleme
  • Alt toplam ve tra toplam alma
  • Raporu çeşitli formatlarda bilgisayara kaydetme
  • Sütunların sırasını değiştirme, istenmeyen sütunları gizleme ve variant olarak sütun sırasının kaydedilmesi

ALV fonksiyonlarının olduğu araç çubuğu.

ALV çıktısı klasik veya nesne tabanlı (OO) alv foksiyonlar kullanılabilir.

Klasik ALV raporlarında kullanılacak bazı fonksiyonlar aşağıdaki tablodadır.

Fonksiyon Modül Tanım
REUSE_ALV_GRID_DISPLAY Veriyi ızgara (grid) içerisinde gösteren fonksiyon
REUSE_ALV_LIST_DISPLAY Veriyi standart liste çıktısı olarak gösteren fonksiyon
REUSE_ALV_HIERSEQ_LIST_DISPLAY Veriyi hiyerarşik sıralı liste içerisinde gösteren fonksiyon
REUSE_ALV_POPUP_TO_SELECT Popup pencerede bir listeden seçim yapılmasını sağlayan fonksiyon
REUSE_ALV_COMMENTARY_WRITE ALV’ ye başlık alanı ekler
REUSE_ALV_VARIANT_F4 Seçim ekranında variant seçimi yapılmasını sağlar
REUSE_ALV_VARIANT_DEFAULT_GET Varsayılan görüntü varyantını getirir
REUSE_ALV_VARIANT_EXISTENCE Bir variant’ ın üst birimde bulunup bulunmadığını kontrol eder
REUSE_ALV_FIELDCATALOG_MERGE Abap dictionary’ deki nesnelerden veya internal tablodan alan kataloğu oluşturmak için kullanılır
REUSE_ALV_EVENTS_GET ALV için kullanılabilecek olayların (events) listesini verir

REUSE_ALV_GRID_DISLAY

Parametre olarak verilerin internal tabloyu hücresel formatta görüntüler.

Sütun bilgilerini aktarmak için “I_STRUCTURE_NAME” parametresi veya “IT_FIELDCAT” parametresi kullanılır.

I_STRUCTURE_NAME: Abap dictionary’ deki tanımlı bir yapıdır. Structure, tablo, tablo tipi gibi. Bu parametre kullanıldığında yapıdaki tüm sütunlar ALV’ de gösterilmeye çalışılır.

IT_FIELDCAT: Sütun bilgilerini içeren internal tabloyu (field catalog) parametre olarak alır.

Alan kataloğu internal tablosu üç yönetim ile hazırlanabilir.

1. Alan kataloğu internal tablosunu el ile oluşturarak

2. Alan kataloğu internal tablosunu fonksiyon ile Abap Dictionary’ daki structure, tablo veya tablo tiplerinden oluşturarak

3. Önce Abap dictionary’ deki nesnelerden oluşturulur, daha sonra istenilen şekilde düzeltilerek

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_INTERFACE_CHECK SPACE X Arayüz tutarlılık denetimi. Liste görünümünde &SOS komutu ile de çalışır.
I_BYPASSING_BUFFER TYPE CHAR01 SPACE X X Bufferları (tampon) göz ardı et
I_BUFFER_ACTIVE SPACE X X Buffer (tamponlama) aktif
I_CALLBACK_PROGRAM LIKE SY-REPID SPACE X Fonksiyonu çağıran program ismi
I_CALLBACK_PF_STATUS_SET TYPE SLIS_FORMNAME SPACE X GUI status alt yordam ismi
I_CALLBACK_USER_COMMAND TYPE SLIS_FORMNAME SPACE X Kullanıcı komutu yakalamak için alt yordam ismi
I_CALLBACK_TOP_OF_PAGE TYPE SLIS_FORMNAME SPACE X TOP-OF-PAGE için alt yordam ismi
I_CALLBACK_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME SPACE X HTML TOP-OF-PAGE için alt yordam ismi
I_CALLBACK_HTML_END_OF_LIST TYPE SLIS_FORMNAME SPACE X HTML END-OF-LIST için alt yordam ismi
I_STRUCTURE_NAME LIKE DD02L-TABNAME X Abap dictionary içerisindeki structure
I_BACKGROUND_ID TYPE SDYDO_KEY SPACE X Top-of-Page alanındaki çıktı için arkaplan parametresi
I_GRID_TITLE TYPE LVC_TITLE X ALV’nin başlık metni
I_GRID_SETTINGS TYPE LVC_S_GLAY X Top-of-Page ve End-of-List görünümleri için görünüm ayarları
IS_LAYOUT TYPE SLIS_LAYOUT_ALV X Listenin görünüm düzeni
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV X Sütun bilgilerini içeren alan kataloğu (field catalog) internal tablosu
IT_EXCLUDING TYPE SLIS_T_EXTAB X Görünmemesi istenen ALV fonksiyonlarını aktarmak için kullanılan internal tablo
IT_SPECIAL_GROUPS TYPE SLIS_T_SP_GROUP_ALV X Sütun seçimi için alanların gruplama bilgisi
IT_SORT TYPE SLIS_T_SORTINFO_ALV X Çıktı için sıralama bilgisi
IT_FILTER TYPE SLIS_T_FILTER_ALV X Çıktı için filtreleme bilgisi
IS_SEL_HIDE TYPE SLIS_SEL_HIDE_ALV X Artık desteklenmiyor
I_DEFAULT ‘X’ X Başlangıç variant seçimini aktif veya pasif yapar
I_SAVE SPACE X Aldığı parametrelere göre variant’ ın saklanmasına izin verir.
IS_VARIANT LIKE DISVARIANT Variant saklanacak ise kullanılır. Variant bilgilesi aktarılır
IT_EVENTS TYPE SLIS_T_EVENT X Kullanılacak olayların listes
IT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT X Standart ALV fonksiyonları internal tablosu. Burada belirtilen fonksiyonlar USER_COMMAND fonksiyonuna düşmesi
IS_PRINT TYPE SLIS_PRINT_ALV X Çıktı bilgisi
IS_REPREP_ID TYPE SLIS_REPREP_ID X Arayüz başlangıç anahtarı
I_SCREEN_START_COLUMN 0 X Listenin sütun başlangıç pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_SCREEN_START_LINE 0 X Listenin satır başlangıç pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_SCREEN_END_COLUMN 0 X Listenin sütun bitiş pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_SCREEN_END_LINE 0 X Listenin satır bitiş pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_HTML_HEIGHT_TOP TYPE I 0 X HTML_TOP_OF_PAGE yüksekliği
I_HTML_HEIGHT_END TYPE I 0 X HTML_END_OF_PAGE yüksekliği
IT_ALV_GRAPHICS TYPE DTC_T_TC X ALV grafiği için parametre
IT_HYPERLINK TYPE LVC_T_HYPE X Hiperlink
IT_ADD_FIELDCAT TYPE SLIS_T_ADD_FIELDCAT X Ek alan kataloğu bilgileri
IT_EXCEPT_QINFO TYPE SLIS_T_QINFO_ALV X
IR_SALV_FULLSCREEN_ADAPTER TYPE REF TO CL_SALV_FULLSCREEN_ADAPTER X Kullanılamaz
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
E_EXIT_CAUSED_BY_CALLER CALLBACK_USER_COMMAND çıkış parametresi
ES_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER Kullanıcının ALV’ den çıkarken hangi butonu kullandığı bilgisi
TABLES
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
T_OUTTAB ALV’ de gösterilecek veri
EXCEPTIONS
Exception Tanım
PROGRAM_ERROR Program hatası

Örnek 1: “I_STRUCTURE_NAME” parametresi kullanılan örnek. Abap dictionary’ deki yapı ALV’ nin sütunlarını oluşturmak için kullanılır.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF  TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
TABLES
t_outtab            = gt_spfli.


Örnek 2: “IT_FIELDCAT” parametresi kullanılan örnek. Sütun bilgileri, satır satır internal tabloya ekleniyor ve fonksiyona veriliyor.

TYPE-POOLS: slis.

DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
Veri tablosu tipi tanımlanıyor
DATA  gt_sbook TYPE STANDARD TABLE OF sbook.
DATA gv_repid TYPE sy-repid.
Veri tablosu dolduruluyor
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
Alan kataloğu dolduruluyor
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘ID’.
gs_fieldcat-outputlen  = 7.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘No’.
gs_fieldcat-outputlen  = 8.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Uçuş tarihi’.
gs_fieldcat-outputlen  = 9.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Açıklama: Structure’ a atanan aşağıdaki değerler “slis_t_fieldcat_alv” tablo tipindeki internal tabloya eklenir. İnternal tabloya eklenen her bir satır ALV’ de bir sütuna karşılık gelir.

  • (fieldname): Veri tablosunda gösterilecek alan
  • (seltext_m): Alanın sütun başlığı
  • (outputlen) :Alanın sütun genişliği

Örnek 3: Abap dictionary’ deki bir yapıdaki alan bilgilerinden sütun bilgileri oluşturuluyor. Sütun başlığı, genişliği gibi bilgiler yapıdaki alanların özelliklerinden (data element ve domain) oluşturulur.

TYPE-POOLS: slis.
DATA : gt_sbook TYPE STANDARD TABLE OF sbook,
gv_repid TYPE sy-repid.
DATA  gt_fieldcat  TYPE slis_t_fieldcat_alv.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name           = gv_repid
i_structure_name         = ‘SBOOK’
CHANGING
ct_fieldcat             = gt_fieldcat
EXCEPTIONS
inconsistent_interface   = 1
program_error            = 2
OTHERS                   = 3.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Örnek 4: “REUSE_ALV_FIELDCATALOG_MERGE” fonksiyonu kullanılarak sütun bilgilerini Abap dictionary’ deki bir yapıdan alan ve daha sonra sütun bilgilerinde değişiklik yapan örnek.

TYPE-POOLS: slis.
* Alan kataloğu tanımlanıyor
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
* Veri tablosu tipi tanımlanıyor
DATA  gt_sbook     TYPE STANDARD TABLE OF sbook.
DATA gv_repid TYPE sy-repid.
* Veri tablosu dolduruluyor
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
* Alan kataloğu internal tablodan oluşturuluyor
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name           = gv_repid
i_structure_name         = ‘SBOOK’
CHANGING
ct_fieldcat             = gt_fieldcat
EXCEPTIONS
inconsistent_interface   = 1
program_error            = 2
OTHERS                   = 3.
* Otomatik oluşturulan alan kataloğunu üzerinde değişiklik
LOOP AT gt_fieldcat INTO gs_fieldcat WHERE fieldname = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘Yeni ID’.
gs_fieldcat-outputlen  = 12.
MODIFY gt_fieldcat FROM gs_fieldcat.
ENDLOOP.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

REUSE_ALV_LIST_DISPLAY

Parametre olarak verilerin internal tabloyu liste formatında görüntüler. Kullanım olarak “REUSE_ALV_GRID_DISPLAY” fonksiyonuna çok benzer, aldığı parametre sayısı daha azdır.

Sütun bilgilerini aktarmak için “I_STRUCTURE_NAME” parametresi veya “IT_FIELDCAT” parametresi kullanılır.

I_STRUCTURE_NAME: Abap dictionary’ deki tanımlı bir yapıdır. Structure, tablo, tablo tipi gibi. Bu parametre kullanıldığında yapıdaki tüm sütunlar ALV’ de gösterilmeye çalışılır.

IT_FIELDCAT: Sütun bilgilerini içeren internal tabloyu (field catalog) parametre olarak alır.

Alan kataloğu internal tablosu üç yönetim ile hazırlanabilir.

1. Alan kataloğu internal tablosunu el ile oluşturarak

2. Alan kataloğu internal tablosunu fonksiyon ile Abap Dictionary’ daki structure, tablo veya tablo tiplerinden oluşturarak

3. Önce Abap dictionary’ deki nesnelerden oluşturulur, daha sonra istenilen şekilde düzeltilerek

Örnek 1: “I_STRUCTURE_NAME” parametresi kullanılan örnek. Abap dictionary’ deki yapı ALV’ nin sütunlarını oluşturmak için kullanılır.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
TABLES
t_outtab            = gt_spfli.

Örnek 2: “IT_FIELDCAT” parametresi kullanılan örnek. Sütun bilgileri, satır satır internal tabloya ekleniyor ve fonksiyona veriliyor.

TYPE-POOLS: slis.
* Alan kataloğu tanımlanıyor
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
* Veri tablosu tip tanımlanıyor
DATA: gt_sbook     TYPE STANDARD TABLE OF sbook.
DATA gv_repid TYPE sy-repid.
* Veri tablosu dolduruluyor
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
* Alan kataloğu dolduruluyor
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘Hava Alanı’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘Bağlantı No.’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Tarih’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘BOOKID’.
gs_fieldcat-seltext_m  = ‘Rezervasyon ID’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘PASSNAME’.
gs_fieldcat-seltext_m  = ‘Yolcu İsmi’.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Örnek 3: “I_INTERFACE_CHECK” parametresi kullanılarak çalıştırılan ALV örneği. Bu parametre geliştirme ve test amaçlı kullanım için uygundur.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_interface_check   = ‘X’
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
TABLES
t_outtab            = gt_spfli.

Program çalıştığında Alan kataloğu ile ilgili bilgieri görüntüler. Araç çubuğundan istenilen internal tablo görüntülenebilir.

Liste çıktısını görebilmek için geriye gitmek veya araç çubuğundan “Çıktı tablosu” butonuna tıklamak gerekir.

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Hiyerarşik sıralı çıktı çıktı oluşturur. İki tane internal tabloyu formatlı ve sıralı biçimde görüntüler. Aldığı parametrelerin çoğu “REUSE_ALV_GRID_DISPLAY” ve “REUSE_ALV_LIST_DISPLAY” fonksiyonu ile aynıdır. Ek olarak detay olarak gösterilecek internal tablo bilgileri ve iki tablo arasındaki anahtar alanlar parametre olarak gönderilir.

Parametre Açıklama Fonksiyon
I_TABNAME_HEADER Başlık olarak gösterilecek internal tablo ismi IMPORT
I_TABNAME_ITEM Detay olarak gösterilecek internal tablo ismi IMPORT
IS_KEYINFO İki tablo arasındaki anahtar alan bağlantısı IMPORT
T_OUTTAB_HEADER Başlık olarak gösterilecek internal tablo TABLES
T_OUTTAB_ITEM Detay olarak gösterilecek internal tablo TABLES

Örnek: SFLIGHT tablosunu başlık SPFLI tablosunun detay olarak gösterildiği hiyerarşik ALV örneği.

TYPE-POOLS: slis.
DATA: gt_fieldcat_spfli   TYPE slis_t_fieldcat_alv,
gt_fieldcat_sflight TYPE slis_t_fieldcat_alv.
TYPES: BEGIN OF gy_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
expand(1) TYPE c,
END OF gy_sflight.
DATA: gt_sflight TYPE STANDARD TABLE OF gy_sflight,
gt_spfli TYPE STANDARD TABLE OF spfli.
START-OF-SELECTION.
PERFORM tablolari_doldur.
PERFORM alankatalogu_olustur.
PERFORM tablolari_goster.
FORM tablolari_doldur .
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
ENDFORM.              ” TABLOLARI_DOLDUR
FORM alankatalogu_olustur .
DATA : gs_fieldcat  TYPE slis_fieldcat_alv.
gs_fieldcat-col_pos    = 1.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-tabname    = ‘GT_SFLIGHT’.
gs_fieldcat-seltext_m  = ‘Hava Alanı’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-col_pos    = 2.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-tabname    = ‘GT_SFLIGHT’.
gs_fieldcat-seltext_m  = ‘Bağlantı No.’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-col_pos    = 3.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-tabname    = ‘GT_SFLIGHT’.
gs_fieldcat-seltext_m  = ‘Uçuş Tarihi.’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-fieldname  = ‘COUNTRYFR’.
gs_fieldcat-tabname    = ‘GT_SPFLI’.
gs_fieldcat-seltext_m  = ‘Ülke’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-fieldname  = ‘CITYFROM’.
gs_fieldcat-tabname    = ‘GT_SPFLI’.
gs_fieldcat-seltext_m  = ‘Şehir’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-fieldname  = ‘AIRPFROM’.
gs_fieldcat-tabname    = ‘GT_SPFLI’.
gs_fieldcat-seltext_m  = ‘Havaalanı’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
ENDFORM.                    ” ALANKATALOGU_OLUSTUR
FORM tablolari_goster .
DATA: lv_tabname_header  TYPE slis_tabname,
lv_tabname_item    TYPE slis_tabname,
lv_keyinfo         TYPE slis_keyinfo_alv,
lv_repid           TYPE sy-repid,
ls_layout          TYPE slis_layout_alv.
lv_repid = sy-repid.
ls_layout-expand_fieldname  = ‘EXPAND’.
ls_layout-window_titlebar   = ‘Hiyerarşik ALV Örneği’.
ls_layout-colwidth_optimize = ‘X’.
lv_tabname_header    = ‘GT_SFLIGHT’.
lv_tabname_item      = ‘GT_SPFLI’.
lv_keyinfo-header01  = ‘CARRID’.
lv_keyinfo-item01    = ‘CARRID’.
lv_keyinfo-header02  = ‘CONNID’.
lv_keyinfo-item02    = ‘CONNID’.
CALL FUNCTION ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’
EXPORTING
i_callback_program      = lv_repid
is_layout               = ls_layout
it_fieldcat             = gt_fieldcat_sflight
i_save                  = ‘A’
i_tabname_header        = lv_tabname_header
i_tabname_item          = lv_tabname_item
is_keyinfo              = lv_keyinfo
TABLES
t_outtab_header         = gt_sflight
t_outtab_item           = gt_spfli.
ENDFORM.                    <I>” TABLOLARI_GOSTER</I>

REUSE_ALV_BLOCK_LIST_APPEND

Birden fazla Listeyi ard arda görüntüler. Veri tablosu ve alan kataloğu oluşturulan listeler sırasıyla eklenir. Daha sonra “REUSE_ALV_BLOCK_LIST_DISPLAY” fonksiyonu ile eklenen listeler görüntülenir.

Aşağıdaki parametreler zorunludur.

· IS_LAYOUT

· IT_FIELDCAT

· I_TABNAME

· IT_EVENTS

Örnek: Ard arda iki tane ayrı listenin eklendiği örnek.

TYPE-POOLS: slis.
DATA: gt_fieldcat_sflight TYPE slis_t_fieldcat_alv,
gt_fieldcat_spfli TYPE slis_t_fieldcat_alv.
DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gt_spfli TYPE STANDARD TABLE OF spfli.
START-OF-SELECTION.
PERFORM tablolari_doldur.
PERFORM alankatalogu_olustur.
PERFORM tablolari_goster.
FORM tablolari_doldur .
SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
ENDFORM.                    <I>” TABLOLARI_DOLDUR</I>
FORM alankatalogu_olustur .
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name             = ‘SFLIGHT’
CHANGING
ct_fieldcat                 = gt_fieldcat_sflight
EXCEPTIONS
inconsistent_interface       = 1
program_error                = 2
OTHERS                       = 3.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name             = ‘SPFLI’
CHANGING
ct_fieldcat                 = gt_fieldcat_spfli
EXCEPTIONS
inconsistent_interface       = 1
program_error                = 2
OTHERS                       = 3.
ENDFORM.                    ” ALANKATALOGU_OLUSTUR
FORM tablolari_goster .
DATA : lv_repid TYPE sy-repid,
ls_layout TYPE slis_layout_alv,
lt_events TYPE slis_t_event.
lv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_INIT’
EXPORTING
i_callback_program          = lv_repid.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_APPEND’
EXPORTING
is_layout                   = ls_layout
it_fieldcat                 = gt_fieldcat_sflight
i_tabname                   = ‘GT_SFLIGHT’
it_events                   = lt_events
TABLES
t_outtab                   = gt_sflight
EXCEPTIONS
program_error               = 1
maximum_of_appends_reached  = 2
OTHERS                        = 3.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_APPEND’
EXPORTING
is_layout                   = ls_layout
it_fieldcat                 = gt_fieldcat_spfli
i_tabname                   = ‘GT_SPFLI’
it_events                   = lt_events
TABLES
t_outtab                   = gt_spfli
EXCEPTIONS
program_error               = 1
maximum_of_appends_reached  = 2
OTHERS                      = 3.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_DISPLAY’
EXCEPTIONS
program_error                 = 1
OTHERS                        = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.                    ” TABLOLARI_GOSTER

REUSE_ALV_FIELDCATALOG_MERGE

Alan kataloğu (ALV’ deki sütun bilgileri) internal tablosunu otomatik olarak oluşturur. Fonksiyona gönderilen “I_INTERNAL_TABNAME” veya “I_STRUCTURE_NAME” parametresine göre alan kataloğu internal tablosunu doldurur.

“I_INTERNAL_TABNAME”: Program içerisinden aktarılan internal tabloya göre alan kataloğu tablosu doldurulur.

“I_STRUCTURE_NAME”: Abap dictionary içerisinde tanımlı, structure, tablo veya view kullanarak tabloyu doldurur.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_PROGRAM_NAME LIKE SY-REPID X X Fonksiyonu çağıran program
I_INTERNAL_TABNAME TYPE SLIS_TABNAME X X Alan kataloğu oluşturulacak internal tablo
I_STRUCTURE_NAME LIKE DD02L-TABNAME X X Alan kataloğu oluşturulacak Abap dictionary nenesi
I_CLIENT_NEVER_DISPLAY TYPE SLIS_CHAR_1 X X X Üst birim alanlarını gizle
I_INCLNAME LIKE TRDIR-NAME X X Include ismie
I_BYPASSING_BUFFER TYPE CHAR01 X X Tampon belleği kullanma
I_BUFFER_ACTIVE TYPE CHAR01 X X Özel tamponu aktif et
CHANGING
Parametre Tanım tipi İlişkili tip Ops. Dğr atn. Parametre açıklaması
CT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV X Alan kataloğu tablosu
EXCEPTIONS
Exception Tanım
INCONSISTENT_INTERFACE Çalıştırma parametreleri hatası
PROGRAM_ERROR Program hatası

“I_STRUCTURE_NAME” ile ilgili örnekler için “REUSE_ALV_GRID_DISPLAY” fonksiyonunun anlatıldığı 2. Ve 3. Örnekleri inceleyebilirsiniz.

REUSE_ALV_COMMENTARY_WRITE

ALV’ ye açıklama bilgisi ekler. Raporla ilgili bilgileri başlıkta açıklama alanında göstermek için kullanılır. Eklenmek istenen bilgiler satır satır internal tabloya eklenir ve fonksiyona parametre olarak gönderilir. “REUSE_ALV_GRID_DISPLAY” fonksiyonundan “I_CALLBACK_TOP_OF_PAGE” parametresine başlık fonksiyonun kullanıldığı alt yordam ismi yazılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
IT_LIST_COMMENTARY TYPE SLIS_T_LISTHEADER X Açıklama bilgisinin olduğu internal tablo
I_LOGO X Eklenecek logo ismi
I_END_OF_LIST_GRID X
I_ALV_FORM TYPE SAP_BOOL X

Örnek: Açıklama alanına rapor ismi, tarih, kayıt sayısı ve logo ekleyen örnek.

TYPE-POOLS: slis.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid LIKE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
* Program ismi gv_repid değikenine atanıyor
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program      = gv_repid
i_structure_name        = ‘SPFLI’
i_callback_top_of_page  = ‘TOP_OF_PAGE’
i_save                  = ‘A’
TABLES
t_outtab                = gt_spfli.
FORM top_of_page.
DATA: lt_header    TYPE slis_t_listheader,
ls_header    TYPE slis_listheader,
lv_lines     TYPE i,
lv_linesc(4) TYPE c.
* Başlık alanına rapor ismi yazılıyor
ls_header-typ  = ‘H’.
ls_header-key  = ”.
ls_header-info = gv_repid.
APPEND ls_header TO lt_header.
* Günün tarihi ekleniyor
CLEAR ls_header.
ls_header-typ = ‘S’.
ls_header-key = ‘Tarih: ‘.
WRITE sy-datum TO ls_header-info.
APPEND ls_header TO lt_header.
CLEAR: ls_header.
* İnternal tablodaki kayıt sayısı ekleniyor
CLEAR ls_header.
* İnternal tablodaki kayıt sayısı lv_lines değişkenine atanıyor
DESCRIBE TABLE gt_spfli LINES lv_lines.
lv_linesc = lv_lines.
CONCATENATE ‘Toplam kayıt sayısı: ‘ lv_linesc INTO ls_header-info SEPARATED BY space.
ls_header-typ  = ‘A’.
APPEND ls_header TO lt_header.
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
it_list_commentary   = lt_header
i_logo               = ‘ENJOYSAP_LOGO’.
ENDFORM.

REUSE_ALV_VARIANT_F4

ALV variantının seçilmesini seçilmesini sağlayan bir pencere (dialog) açar. Variant listesinin hali hazırda kaydedilmiş variant/variantların olması gerekir. Çalıştırılmadan önce “IS_VARIANT” import paremetresindeki “REPORT” değişkenine raporun ismi atanmalıdır. Pencereden seçim yapıldıktan sonra ALV fonksiyonuna seçilen ALV bilgileri yine “IS_VARIANT” parametresi ile aktarılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
IS_VARIANT LIKE DISVARIANT X Variant bilgileri
I_TABNAME_HEADER TYPE SLIS_TABNAME X X Tablo ismi balığı
I_TABNAME_ITEM TYPE SLIS_TABNAME X X Tablo ismi kalemi
IT_DEFAULT_FIELDCAT TYPE X X Alan kataloğu internal tablosu
I_SAVE SLIS_T_FIELDCAT_ALV SPACE X X Variant saklama seçeneği
I_DISPLAY_VIA_GRID TYPE CHAR01 SPACE X X Izgara biçiminde göster
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
E_EXIT X İptal seçildi
ES_VARIANT LIKE DISVARIANT X Variant bilgisi
EXCEPTIONS
Exception Tanım
NOT_FOUND Variant bulunamadı
PROGRAM_ERROR Program hatası

Örnek 1: Seçim ekranında variant seçim parametresi olan ve bu parametreden seçilen varainta göre ALV’ nin düzeninin değiştiği örnek. Variant listesini seçim ekranında görmek için önce ALV listesinde variant kaydedilmesi gerekir. Kaydedilen variant daha sonra rapor her çalıştığında seçim ekranında seçilebilir.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
PARAMETER : p_varia TYPE disvariant-variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_variant.
START-OF-SELECTION.
PERFORM alv_goster.
FORM alv_goster .
DATA : ls_variant TYPE disvariant,
lv_repid   TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
lv_repid           = sy-repid.
ls_variant-report  = lv_repid.
ls_variant-variant = p_varia.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = lv_repid
i_structure_name   = ‘SPFLI’
i_save             = ‘A’
is_variant         = ls_variant
TABLES
t_outtab           = gt_spfli.
ENDFORM.
FORM f4_variant .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’,
lv_exit(1) TYPE c.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4’
EXPORTING
is_variant    = ls_variant
i_save        = lv_save
IMPORTING
e_exit        = lv_exit
es_variant    = ls_variant
EXCEPTIONS
not_found     = 1
program_error = 2
OTHERS        = 3.
IF sy-subrc = 0 AND lv_exit = space.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.

P_VARIA parametresi üzerinde F4 yardımı kullanıldığında, kaydedilmiş olan varaint listesi görünür. Bu listeden seçim yapılarak rapor çalıştığında düzen seçilen varaint’ a göre gelir.

REUSE_ALV_VARIANT_DEFAULT_GET

ALV raporuna ait varsayılan varaint’ ı elde etmek için kullanılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_SAVE SPACE X X Varaint saklama seçeneği
EXPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
CS_VARIANT LIKE DISVARIANT X Variant bilgileri
EXCEPTIONS
Exception Tanım
WRONG_INPUT Yanlış giriş paremetresi
NOT_FOUND Variant bulunamadı
PROGRAM_ERROR Program hatası

Örnek: ALV’ ye ait varsayılan variant varsa bunu seçim ekranındaki variant parametresine taşıyan örnek.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
PARAMETER : p_varia TYPE disvariant-variant.
INITIALIZATION.
PERFORM varsayilan_varainti_bul.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_variant.
START-OF-SELECTION.
PERFORM alv_goster.

FORM varsayilan_varainti_bul .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_DEFAULT_GET’
EXPORTING
i_save      = lv_save
CHANGING
cs_variant  = ls_variant
EXCEPTIONS
wrong_input         = 1
not_found           = 2
program_error       = 3
OTHERS              = 4.
IF sy-subrc = 0.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.
FORM f4_variant .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’,
lv_exit(1) TYPE c.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4’
EXPORTING
is_variant    = ls_variant
i_save        = lv_save
IMPORTING
e_exit        = lv_exit
es_variant    = ls_variant
EXCEPTIONS
not_found     = 1
program_error = 2
OTHERS        = 3.
IF sy-subrc = 0 AND lv_exit = space.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.
FORM alv_goster .
DATA : ls_variant TYPE disvariant,
lv_repid   TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
lv_repid           = sy-repid.
ls_variant-report  = lv_repid.
ls_variant-variant = p_varia.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = lv_repid
i_structure_name   = ‘SPFLI’
i_save             = ‘A’
is_variant         = ls_variant
TABLES
t_outtab           = gt_spfli.
ENDFORM.

Bu ALV’ ye ait varsayılan varaint “INITIALIZATION” sürecinde bulunarak ekrandaki “P_VARIA” parametresine taşınır.

REUSE_ALV_VARIANT_EXISTENCE

Bir varaint’ ın mevcut olup olmadığı kontrolünü yapar.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_SAVE SPACE X X Varaint saklama seçeneği
CHANGING
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
CS_VARIANT LIKE DISVARIANT X Variant bilgileri
EXCEPTIONS
Exception Tanım
WRONG_INPUT Yanlış giriş paremetresi
NOT_FOUND Variant bulunamadı
PROGRAM_ERROR Program hatası

Örnek: Seçilen variant’ ın sistemde bulunup, bulunmadığını kontrol eden örnek.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
PARAMETER : p_varia TYPE disvariant-variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_variant.
START-OF-SELECTION.
PERFORM variant_kontrolu.
PERFORM alv_goster.
FORM f4_variant .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’,
lv_exit(1) TYPE c.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4’
EXPORTING
is_variant    = ls_variant
i_save        = lv_save
IMPORTING
e_exit        = lv_exit
es_variant    = ls_variant
EXCEPTIONS
not_found     = 1
program_error = 2
OTHERS        = 3.
IF sy-subrc = 0 AND lv_exit = space.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.
FORM variant_kontrolu .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’.
IF p_varia IS NOT INITIAL.
ls_variant-report   = sy-repid.
ls_variant-variant  = p_varia.
CALL FUNCTION ‘REUSE_ALV_VARIANT_EXISTENCE’
EXPORTING
i_save              = lv_save
CHANGING
cs_variant         = ls_variant
EXCEPTIONS
wrong_input         = 1
not_found           = 2
program_error       = 3
OTHERS              = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM.                    ” VARIANT_KONTROLU
FORM alv_goster .
DATA : ls_variant TYPE disvariant,
lv_repid   TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
lv_repid           = sy-repid.
ls_variant-report  = lv_repid.
ls_variant-variant = p_varia.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = lv_repid
i_structure_name   = ‘SPFLI’
i_save             = ‘A’
is_variant         = ls_variant
TABLES
t_outtab           = gt_spfli.
ENDFORM.

Seçim ekranında “P_VARIA” parametresine yazılan varaint sistemde bulunuyor ise ALV bulunan variant düzeninde gösterilir. Bulunamaz ise hata mesajı verilir.

REUSE_ALV_EVENTS_GET

Lliste tipine göre ALV fonksiyonunun alabileceği bütün (CALLBACK) olayların listesini döner. Bu listedeki olaylara atanan alt yordam isimleri ALV fonksiyonuna verilerek alt yordamlar atınmış olur.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_LIST_TYPE TYPE SLIS_LIST_TYPE 0 X X 1-4 arası liste tipi
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
ET_EVENTS TYPE SLIS_T_EVENT X Liste tipine göre olayların listesi
EXCEPTIONS
Exception Tanım
LIST_TYPE_WRONG Liste tipi mevcut değil

I_LIST_TYPE parametresinin alabileceği değerler ve açıklamaları aşağıdaki tablodadır.

Parametre Değeri ALV Liste Tipi ALV Fonksiyonu
0 Basit liste REUSE_ALV_LIST_DISPLAY
1 Hiyerarşik sıralı liste REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 Basit blok liste REUSE_ALV_BLOCK_LIST_APPEND
3 Hiyerarşik sıralı blok liste REUSE_ALV_BLOCK_LIST_HS_APPEND
4 Tam ekran REUSE_ALV_GRID_DISPLAY

Örnek: Aşağıdaki örnekte hücresel ALV gösterimi için ALV fonksiyonunda “I_CALLBACK_TOP_OF_PAGE” parametresi kullanılmadı. Bunun yerine “REUSE_ALV_EVENTS_GET” fonksiyonu kullanılarak “IT_EVENTS” tablosu alınır. Bu tabloda olaya alt yordam ismi atanır, ALV fonksiyonuna bu tablo parametre olarak verilir.

TYPE-POOLS: slis.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid LIKE sy-repid,
gt_events TYPE slis_t_event.
START-OF-SELECTION.
PERFORM alv_callback_olaylari_bul.
PERFORM alv_goster.
FORM alv_callback_olaylari_bul .
DATA ls_events TYPE slis_alv_event.
CALL FUNCTION ‘REUSE_ALV_EVENTS_GET’
EXPORTING
i_list_type           = 4
IMPORTING
et_events             = gt_events
EXCEPTIONS
list_type_wrong       = 1
OTHERS                = 2.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE gt_events INTO ls_events
WITH KEY name = slis_ev_top_of_page.
IF sy-subrc = 0.
ls_events-form = ‘TOP_OF_PAGE’.
MODIFY gt_events FROM ls_events INDEX sy-tabix.
ENDIF.
ENDFORM.
FORM alv_goster .
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
it_events           = gt_events
TABLES
t_outtab            = gt_spfli.
ENDFORM.
FORM top_of_page.
DATA: lt_header    TYPE slis_t_listheader,
ls_header    TYPE slis_listheader.
ls_header-typ  = ‘H’.
ls_header-key  = ”.
ls_header-info = ‘REUSE_ALV_EVENTS_GET Örneği’.
APPEND ls_header TO lt_header.
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
it_list_commentary  = lt_header
i_logo              = ‘ENJOYSAP_LOGO’.
ENDFORM.

Sütun Görüntüsü Biçimlendirme

Alan katalogu özellikleri değiştirilerek sütuna bağlı alanların görüntüsü değiştirilebilir.

Alan Anlamı Veri Tipi Değer Aralığı
HOTSPOT Alan üzerinde geldiğinde imlecin el şeklini (link) almasını sağlar CHAR(1) SPACE, ‘X’
CHECKBOX Alanın checkbox olarak görünmesini sağlar CHAR(1) SPACE, ‘X’
DO_SUM ALV’ de belirtilen alanın alt toplamı alınarak görüntülenir CHAR(1) SPACE, ‘X’
COL_POS Alanın sütun pozisyonu ayarlamak için kullanılır INT4(10) Tamsayı
EMPHASIZE Sütun rengini değiştirmek için kullanılır‘X’ kullanılır ise ön tanımlı tipler kullanılır. Eğer karakter ‘C’(renk kodu) ile başlarsa, alabileceği üç rakamın anlamı şöyledir.1. x: renk kodu2. y: yoğunluk görünüm3. z: ters çevrilmiş renk görünümü CHAR(4) SPACE, ‘X’ or ‘Cxyz’ (x:’1′-‘9’; y,z: ‘0’=off ‘1’=on)
NO_OUT Alan gizlenir. Alan alan listesinde kalmaya devam eder. ALV görüntüledikten sonra düzen içerisinden listeye dâhil edilebilir CHAR(1) SPACE, ‘X’
OUTPUTLEN Alanın görüntülenen sütun genişliğini ayarlamak için kullanılır. ABAP Dictionary’ de tanımlı bir alan ise doldurmaya gerek yoktur. Alan uzunluğu Domain üzerinden devralınır. NUMC(6) Tamsayı

Sütun İçeriğini Biçimlendirme

Alan katalogu özellikleri değiştirilerek sütuna bağlı alanların içerikleri biçimlendirilebilir.

Alan Anlamı Veri Tipi Değer Aralığı
EDIT_MASK Geçerli alan çıktısı için çeviri yordamı atanmış ise kullanılmasını sağlar. CHAR(60) SPACE, çeviri yordamı
ICON Sütun içeriği ikon olarak görüntülenir. Sütun içeriği geçerli ikon karakter dizesi içermelidir. CHAR(1) SPACE, ‘X’
JUST Hizalama için kullanılır. CHAR ve NUMC veri tipine sahip alanlara uygulanabilir.· ‘R’: Sağa dayalı· ‘L’: Sola dayalı· ‘R’: Ortalanmış CHAR(1) SPACE, ‘R’, ‘L’,’C’
LZERO NUMC veri tipi için kullanılabilir. Alanın sıfırdan büyük rakamının solunda sıfır var ise görüntülenir. CHAR(1) SPACE, ‘X’
NO_SIGN Alan değeri işaretsiz olarak görüntülenir. CHAR(1) SPACE, ‘X’
NO_ZERO Sıfır alanlar boş olarak görüntülenir. CHAR(1) SPACE, ‘X’
SYMBOL Sütun içeriği sembol olarak görüntülenir. Alan içeriği geçerli sembol işaretini içermelidir. CHAR(1) SPACE, ‘X’

Sütun Metin Özelliklerini Biçimlendirme

Alan katalogu özellikleri değiştirilerek sütun başlığı, ipucu yardımı, sütun seçim metinlerinin bakımı yapılabilir.

LVC_S_FCAT için metin biçimlendirme özellikleri

Alan Anlamı Veri Tipi Değer Aralığı
TOOLTIP Sütuna bağlı ipucu yardımı metni CHAR(40) Herhangi bir metin
TIPDDICTXT ABAP Data Dictionary’ e referans gösterilen alanlar için metin seçimi. CHAR(1) SPACE, ‘L’, ‘M’, ‘S’ ve ‘R’
SELTEXT Sütun seçiminde kullanılacak metin CHAR(40) Herhangi bir metin
SELDDICTXT ABAP Dictionary’ e referans gösterilen alanlar için sütun seçiminde kullanılacak metin CHAR(1) SPACE, ‘L’, ‘M’, ‘S’ ve ‘R’
SCRTEXT_S ABAP Dictionary’ de tanımlı alanlar için tanımlı kısa metin bu alana kopyalanır. CHAR(10) ABAP Dictionary’ den kopyalanan metin
SCRTEXT_M ABAP Dictionary’ de tanımlı alanlar için tanımlı orta uzunluktaki metin bu alana kopyalanır. CHAR(20) ABAP Dictionary’ den kopyalanan metin
SCRTEXT_L ABAP Dictionary’ de tanımlı alanlar için tanımlı uzun metin bu alana kopyalanır. CHAR(40) ABAP Dictionary’ den kopyalanan metin
REPTEXT ABAP Dictionary’ de tanımlı alanlar için uygun data element’ alan etiketi bu alana kopyalanır. CHAR(55) ABAP Dictionary’ den kopyalanan metin
COLTEXT ABAP Dictionary’ e referans gösterilmeyen alan için sütun başlığı belirler. CHAR(40) Herhangi bir metin
COLDDICTXT ABAP Dictionary’ e referans gösterilen alanlar için sütun başlığı seçiminde kullanılacak metin. CHAR(1) SPACE, ‘L’, ‘M’, ‘S’ ve ‘R’

SLIS_FIELDCAT_ALV için metin biçimlendirme özellikleri

Alan Anlamı Veri Tipi Değer Aralığı
SELTEXT_S ABAP Dictionary’ de tanımlı alanlar için tanımlı kısa metin bu alana kopyalanır. CHAR(10) ABAP Dictionary’ den kopyalanan metin
SELTEXT_M ABAP Dictionary’ de tanımlı alanlar için tanımlı orta uzunluktaki metin bu alana kopyalanır. CHAR(20) ABAP Dictionary’ den kopyalanan metin
SELTEXT_L ABAP Dictionary’ de tanımlı alanlar için tanımlı uzun metin bu alana kopyalanır. CHAR(40) ABAP Dictionary’ den kopyalanan metin
REPTEXT ABAP Dictionary’ de tanımlı alanlar için uygun data element’ alan etiketi bu alana kopyalanır. CHAR(55) ABAP Dictionary’ den kopyalanan metin

Örnek: Sütun biçimlendirme uygulanan örnek.

TYPE-POOLS: slis.
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
TYPES: BEGIN OF gy_sbook,
carrid TYPE sbook-carrid,
connid TYPE sbook-connid,
fldate TYPE sbook-fldate,
bookid TYPE sbook-bookid,
passname TYPE sbook-passname,
icon   TYPE c LENGTH 4,
END OF gy_sbook.
DATA: gt_sbook TYPE STANDARD TABLE OF gy_sbook,
gs_sbook TYPE gy_sbook.
DATA gv_repid TYPE sy-repid.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
LOOP AT gt_sbook INTO gs_sbook.
gs_sbook-icon = ‘@CQ@’.
MODIFY gt_sbook FROM gs_sbook.
ENDLOOP.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘Hava Alanı’.
gs_fieldcat-hotspot    = ‘X’.
gs_fieldcat-just       = ‘R’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘Bağlantı No.’.
gs_fieldcat-emphasize  = ‘C601’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Tarih’.
gs_fieldcat-emphasize  = ‘X’.
gs_fieldcat-COL_POS    = 5.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘BOOKID’.
gs_fieldcat-seltext_m  = ‘Rezervasyon ID’.
gs_fieldcat-outputlen  = 15.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘PASSNAME’.
gs_fieldcat-seltext_m  = ‘Yolcu İsmi’.
gs_fieldcat-no_out     = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘ICON’.
gs_fieldcat-seltext_m  = ‘Icon’.
gs_fieldcat-icon       = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Örnek: Hotspot

TYPE-POOLS: slis.
DATA : gt_mara TYPE STANDARD TABLE OF mara,
gs_mara TYPE mara,
gv_repid TYPE sy-repid.
DATA : gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_fieldcat TYPE slis_fieldcat_alv.
SELECT * FROM mara UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_mara.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name           = gv_repid
i_structure_name         = ‘MARA’
CHANGING
ct_fieldcat             = gt_fieldcat
EXCEPTIONS
inconsistent_interface   = 1
program_error            = 2
OTHERS                   = 3.
gs_fieldcat-hotspot = ‘X’.
MODIFY gt_fieldcat FROM gs_fieldcat
TRANSPORTING hotspot
WHERE fieldname = ‘MATNR’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program      = gv_repid
it_fieldcat             = gt_fieldcat
i_save                  = ‘A’
i_callback_user_command = ‘USER_COMMAND’
TABLES
t_outtab                = gt_mara
EXCEPTIONS
program_error           = 1
OTHERS                  = 2.
FORM user_command  USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN ‘&IC1’.
READ TABLE gt_mara INTO gs_mara INDEX rs_selfield-tabindex.
IF sy-subrc EQ 0.
SET PARAMETER ID ‘MAT’ FIELD gs_mara-matnr.
CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.                    ” USER_COMMAND

Örnek:

Copy… (Ctrl+F5)

Package ve request işlemleri yapılır.

LİSTEME KOMUTLARI

Listeleme komutları kullanılarak metin çıktısı oluşturmak mümkündür.

WRITE

Veri nesnesinin içeriğini biçimlendirmek ve yazdırmak için kullanılır.

WRITE {[AT] [/][pozisyon][(uzunluk|*|**)]} veri_nesnesi

[UNDER diger_veri_nesnesi]

[NO-GAP]

[dahili_bicimlendirme_secenekleri]

[harici_bicimlendirme_secenekleri]

[liste_elemanları]

[QUICKINFO bilgi].

Ekler:

AT: Yazdırma pozisyonunu ve uzunluğunu belirtmek için kullanılır.

/: Bir sonraki satıra geçmek için kullanılır.

pozisyon: Yazdırma pozisyonu belirlemek için kullanılır. Tamsayı değerdir.

uzunluk: Veri nesnesinin çıktı uzunluğunu belirtir. Tamsayı değerdir.

* | **: Farklı veri tipleri için farklı veri tipi uzunluğuna bağlı seçenekler sunar.

Veri_nesnesi: Yazdırılacak veri nesnesidir.

UNDER diger_veri_nesnesi: Direkt olarak diger_veri_nesnesi ile belirtilen veri nesnesinin altına yazdırmak için kullanılır.

NO-GAP: İmleç direkt olarak çıktı bitimine konumlandırılır. Boşluk bırakılmaz.

dahili_bicimlendirme_secenekleri: Çıktıyı biçimlendirmek için ek seçenekler içerir.

… [LEFT-JUSTIFIED|CENTERED|RIGHT-JUSTIFIED]

{ { [EXPONENT exponent]

[NO-GROUPING]

[NO-SIGN]

[NO-ZERO]

[CURRENCY para_birimi]

{ { [DECIMALS ondalik_hane]

[ROUND olcek] }

| [UNIT birim] } }

| { [ENVIRONMENT TIME FORMAT]

[TIME ZONE zaman_dilimi]

[STYLE stil] }

[USING { {NO EDIT MASK}|{EDIT MASK maske} }]

[ DD/MM/YY | MM/DD/YY

| DD/MM/YYYY | MM/DD/YYYY

| DDMMYY | MMDDYY

| YYMMDD ] … .

harici_bicimlendirme_secenekleri: Çıktıyı biçimlendirmek için ek seçenekleri belirtir.

… [COLOR {{{color [ON]}|OFF}|{= renk}}]

[INTENSIFIED [{ON|OFF}|{= flag}]]

[INVERSE [{ON|OFF}|{= flag}]]

[HOTSPOT [{ON|OFF}|{= flag}]]

[INPUT [{ON|OFF}|{= flag}]]

[FRAMES [{ON|OFF}|{= flag}]]

[RESET] … .

list_elements: Özel liste elemanları kullanılmasını sağlar.

… {AS CHECKBOX}
| {AS ICON}
| {AS SYMBOL}
| {AS LINE} … .

QUICKINFO bilgi: Fare imleci veri nesnesi üzerine konumlandırıldığında görüntülenecek bilgi metnidir. 40 karakter uzunluğunda olabilir.

WRITE Komutu Çıktı Biçimleri

Bütün veri tipleri için geçerli olanlar.

Opsiyon Fonksiyonu
LEFT-JUSTIFIED Çıktıyı sola dayalı olacak şekilde biçimlendirir.
CENTERED Çıktıyı ortalanmış olarak biçimlendirir.
RIGHT-JUSTIFIED Çıktıyı sağa dayalı olacak şekilde biçimlendirir.
UNDER diger_veri_nesnesi Çıktı direkt diger_veri_nesnesi alanının altından başlar.
NO-GAP İmleç direkt olarak çıktı bitimine konumlandırılır. Boşluk bırakılmaz.
USING EDIT MASK maske Çıktıya şablon uygulamak için kullanılır.
USING NO EDIT MASK ABAP Dictionary’ de belirlenmiş bir formatın devralınmamasını sağlar.
NO-ZERO Eğer bir alan sadece sıfır içeriyorsa, sıfırlar boşluk (space) ile değiştirilir. C ve N tipi alanlar için baştaki sıfırlar otomatik olarak boşlukla karakteri ile değiştirilir.
 
Sayısal veri tipi için geçerli olanlar.

Opsiyon Fonksiyon
NO-SIGN Nümerik alanın işaretlerini kaldırır.
DECIMALS ondalik_hane Ondalık hane sayısını belirtmek için kullanılır.
EXPONENT exponent F tipi alanlar için, üs değeri exponent ile ayarlanır.
ROUND olcek P tipi alanlar 10**(-olcek) ile çarpılır daha sonra yuvarlanır.
CURRENCY para_birimi TCURX tablosuna göre para alanlarını biçimler
UNIT birim P tipi alanlar için T006 tablosundaki birime göre desimal alanları sabitler.
NO-GROUPING S, i, p, decfloat16, decfloat34 veri tiplerini biçimlendirirken binlik ayracı gizler.

 

Tarih veri tipi için geçerli olanlar biçimlendirmeler.

Opsiyon Fonksiyon
DD/MM/YY Kullanıcının tanımında olan ayraça göre gün, ay, yıl (son iki hane) şeklinde biçimler.
MM/DD/YY Kullanıcının tanımında olan ayraca göre ay, gün, yıl (son iki hane) şeklinde biçimler.
DD/MM/YYYY Kullanıcının tanımında olan ayraça göre gün, ay, yıl şeklinde biçimler.
MM/DD/YYYY Kullanıcının tanımında olan ayraça göre ay, gün, yıl şeklinde biçimler.
DDMMYY Ayraç olmadan, gün, ay, yıl şeklinde biçimler.
MMDDYY Ayraç olmadan, ay, gün, yıl şeklinde biçimler.
YYMMDD Ayraç olmadan, yıl (son iki hane), ay, gün şeklinde biçimler.
 

WRITE İfadesi Biçimlendirme Örnekleri

1. Bir sonraki satıra geçmeyi ve pozisyon kullanımını gösteren örnek.
WRITE ‘İlk satır.’.
WRITE ‘Hala ilk satır.’.
WRITE / ‘İkinci satır.’.
WRITE /13 ‘Üçüncü satır’.

2. AT eki kullanımını gösteren örnek.

DATA: uzunluk  TYPE i VALUE 10,
pozisyon  TYPE i VALUE 8,
metin(10) TYPE c VALUE ‘1234567890’.
WRITE ‘Metin ———— boşlukta belirecek.’.
WRITE AT pozisyon(uzunluk) metin.

3. Farklı veri tiplerine sahip nesnelerin uzunluk eki kullanımını gösteren örnek.

DATA: numerik   TYPE i VALUE  1234567890,
metin(10) TYPE c VALUE ‘abcdefghij’.
WRITE: (5) numerik, /(5) metin.

Nümerik alan sol taraftan kırpılmıştır. Alan uzunluğu yetmediği için ilk karakteri yıldız (*) yapılmıştır. Metin alanında ise kırpma işlemi sağ taraftan yapılmıştır.

4. Sola, sağa dayalı ve ortalanmış çıktı örnekleri.

DATA gv_sayi TYPE p DECIMALS 2 VALUE ‘123.56’.
WRITE ‘Sayısal değer’.
WRITE / gv_sayi.
WRITE / ‘Sola dayalı sayısal değer’.
WRITE / gv_sayi LEFT-JUSTIFIED.
WRITE /(80) ‘Ortalanmış yazı’ CENTERED.
WRITE /(80) ‘Sağa Dayalı yazı’ RIGHT-JUSTIFIED.

5. Under parametresi kullanımı.

DATA: a TYPE c LENGTH 20,
b TYPE c LENGTH 20.
a = ‘birinci değişken’.
b = ‘ikinci değişiken’.
WRITE: a, b.
WRITE: /40 a,
/ b UNDER a.

6. NO-GAP örneği.

DATA : gv_metin1(9) TYPE c VALUE ‘İlk metin’,
gv_metin2(30) TYPE c VALUE ‘İkinci metin’.

WRITE: gv_metin1, gv_metin2.
WRITE:/ gv_metin1 NO-GAP, gv_metin2.

7. USING EDIT MASK örneği.

DATA gv_saat(10) TYPE c.
gv_saat = ‘203020’.
WRITE / gv_saat.
WRITE / gv_saat USING EDIT MASK ‘__:__:__’.

8. Değişkenin başındaki sıfırları kaldıran bir örnek.

DATA: a TYPE c LENGTH 10,
b TYPE c LENGTH 10.
a = ‘0023’.
b = ‘0001’.
WRITE : /10 a NO-ZERO,
/10 b NO-ZERO.

9. No-SIGN ve DECIMALS örnekleri

DATA : gv_number TYPE p DECIMALS 4 VALUE ‘-22.2445’.
WRITE :/ ‘Değişkenin ilk hali’, 25 gv_number RIGHT-JUSTIFIED.
WRITE :/ ‘İşareti kaldırıldı’, 25 gv_number NO-SIGN RIGHT-JUSTIFIED.
WRITE :/ ‘İki ondalık hane’, 25 gv_number DECIMALS 2 RIGHT-JUSTIFIED.

10. Renk COLOR biçimlendirme ekini kullanan örnek.

WRITE / ‘Arka plan’ COLOR COL_BACKGROUND.
WRITE / ‘Başlık’ COLOR COL_HEADING.
WRITE / ‘Normal’ COLOR COL_NORMAL.
WRITE / ‘Toplam’ COLOR COL_TOTAL.
WRITE / ‘Anahtar’ COLOR COL_KEY.
WRITE / ‘Pozitif’ COLOR COL_POSITIVE.
WRITE / ‘Negatif yazı’ COLOR COL_NEGATIVE.
WRITE / ‘Grup’ COLOR COL_GROUP.
SKIP.
WRITE / ‘Metin Renk kodu 1’ COLOR 1.
WRITE / ‘Metin Renk kodu 2’ COLOR 2.
WRITE / ‘Metin Renk kodu 3’ COLOR 3.
WRITE / ‘Metin Renk kodu 4’ COLOR 4.
WRITE / ‘Metin Renk kodu 5’ COLOR 5.
WRITE / ‘Metin Renk kodu 6’ COLOR 6.
WRITE / ‘Metin Renk kodu 7’ COLOR 7.

11. Tarih biçimlendirmelerini gösteren örnek.

DATA A TYPE D VALUE ‘20130313’.
WRITE / A.
WRITE / A DD/MM/YY.
WRITE / A MM/DD/YY.
WRITE / A DD/MM/YYYY.
WRITE / A MM/DD/YYYY.
WRITE / A DDMMYY.
WRITE / A MMDDYY.
WRITE / A YYMMDD.

12. Checkbox kullanımını gösteren örnek.

DATA: cbox1 TYPE c LENGTH 1,
cbox2 TYPE c LENGTH 1,
cbox3 TYPE c LENGTH 1.
cbox1 = ‘X’.
WRITE:/ ‘Checkbox1’, cbox1 AS CHECKBOX,
/ ‘Checkbox2’, cbox2 AS CHECKBOX,
/ ‘Checkbox3’, cbox3 AS CHECKBOX.

13. Çizgi kullanımını gösteren örnek.

ULINE AT /(21).
DO 5 TIMES.
WRITE:/ sy-vline, ‘Satır’, sy-index, sy-vline.
ENDDO.
ULINE AT /(21).

Sembol ve Simge Yazdırma

Sembol ve ikon yazdırmak için <SYMBOL> veya <IKON> include’ unun dahil edilmesi gereklidir veya sadece <LIST> include’ u dahil edilmelidir. Kullanımı aşağıdaki şekildedir.

WRITE <symbol-name> AS SYMBOL.

WRITE <icon-name> AS ICON.

WRITE İfadesi Sembol ve Simge Yazdırma Örneği

1. Telefon sembolü ve alarm simgesi yazdıran örnek.

INCLUDE <symbol>.
INCLUDE <icon>.
WRITE:  ‘Telefon sembolü’, sym_phone AS SYMBOL.
SKIP.
WRITE:/ ‘Alarm simgesi’, icon_alarm AS ICON.

BOŞLUK SATIRLARI ve ÇİZGİLER

ULINE

Alt çizgi ekler. AT anahtar kelimesi ile aldığı parametreler WRITE komutundakiler ile aynıdır.

ULINE {[AT] [/][pozisyon][(uzunluk)]} [NO-GAP].

[AT]: Çizgi belirtilen sütun pozisyonundan başlatmak için kullanılır.

[/]: Yeni bir satıra geçmek için kullanılır.

[pozisyon]: Pozisyonu (sütun numarası) gösteren numaradır.

[(uzunluk)]: Değişkenin çıktı uzunluğunu belirtir.

ULINE Örnekler

1. ULINE kullanımını gösteren örnek.

ULINE.
WRITE AT 12 ‘Başlık metni’.
ULINE AT /10(15) .
WRITE AT :/12  ‘Detay metni 1’,
/12  ‘Detay metni 2’.
ULINE AT /10(15) .
ULINE.

DİKEY ÇİZGİ

WRITE [AT [/][<pos>]] SY-VLINE.

Veya

WRITE [AT [/][<pos>]] ‘|’.

Cümleleri ile dikey çizgi elde yazdırılabilir.

SKIP

Belirtilen satır kadar kursor aşağıya gider.

SKIP [<n>].

[<n>]: Eğer bu parametre verilmezse kursor bir satır aşağıya gider.

SKIP TO LINE

Kursor belirlenen satıra gider.

SKIP TO LINE <n>.

<n>: Satır numarası

Tablo İçeriğinin Görüntülenmesi ve Bakım yapma

Tablo ve görünüm (view) içeriğini görüntülemek veya bakım yapmak için aşağıdaki işlem kodları kullanılabilir.

İşlem Kodu Tanım Açıklama
SE16N Genel tablo görüntüsü Tablo ve görünüm içeriğini görüntülemek için kullanılır.
SE16 Veri görüntüleyici Tablo ve görünüm içeriğini görüntülemek için kullanılır. Eski versiyon.
SM30 Tablo görünüm bakım ekranı Tablo ve görünüm bakım ekranı.
SM34 Görüntü kümesi bakım ekranı Görünüm kümesi bakım ekranı.

Veri görüntülemek için SE16N işlem kodu kullanılır. SE16N dışında eski versiyonu SE16, bakım ekranı olan tablolar için SM30, görünüm kümesi bakımı için SM34 kullanılır.

SE16N

Tablo ve görünüm içeriğini görüntülemek için kullanılır. Tablo alanına, tablo veya görünüm ismi yazılır veya seçilir. Görüntülenmek istenen kayıt sayısı Azami bulunan sayısı alanı ile değiştirilebilir. Tabloya bağlı metin tablosu var ise Metin tb. alanında görüntülenir. Standart olarak en fazla 500 kayıt görüntülenir. Tablo içeriği değiştirmek isteniyor ise Grş.bakımını yap tıkı seçilir. Bu seçenek sadece içerik bakımı yapılabilir tablolar için aktif gelir. Tablo alanları Seçim ölçütleri tablosunda görüntülenir ve görüntülenecek veriyi filtrelemek için kullanılır.

Uygulama çubuğundaki Artalan butonu veri görüntüleme işlemini SAP işine (job) bağlamak için kullanılır. Giriş sayısı butonu tablodaki girilen seçim ölçütlerine göre kayıt sayısını verir. Filtreleme yapılacak sütun seçimlerini silmek, tümünü seçmek için bununlar yer alır. Girilen seçim ölçütlerini münferit veya tümünü temizlemek için girişleri temizle butonları kullanılabilir.

Yürüt butonu çalıştırıldığında tablo içerisindeki veri ALV içerisinde görüntülenir.

Tablodaki kayıtlar ALV içerisinde görüntülenir. ALV araç çubuğundaki butonlar Grş.bakımını yap seçeneğinin seçilmesine göre farklılaşır. Seçim ekranında Giriş bakımı seçilen ALV’ lerde araç çubuğunda kayıtları düzenlemeyle ilgili butonlar yer alır.

SE16N başlangıç ekranında bir tablo ismi girildiğinde bakım ekranı olup, olmadığı kontrol edilir. Var ise durum çubuğunda mesaj olarak görüntülenir.

SE16N başlangıç ekranında bir tablo ismi üzerine çift tıklandığında SE11 ABAP Dictionary tablo görüntüleme ekranına yönlendirilir.

Başlangıç ekranında alan özelliklerinin görüntülenmesi isteniyorsa Ayrıntılar->Teknik bakış: (veya Shift+F11) seçilebilir.

Ayrıntılar->Teknik ayarlar menüsü liste çıktısı (ALV) ve Başlangıç ekranı ayarları yapılabilir.

SE16

Tablo ve görünüm içeriğini görüntülemek için kullanılır. İçeriği görüntülenmek istenen tablo veya görünüm ismi yazılır. Enter tuşuna veya Table Contents (F7) tuşuna tıklanır.

Seçilen tabloya ait alanlar seçim kriteri olarak ekranda oluşturulur.

Seçim kriteri olarak görüntülenmeyen alan varsa Settings->Fields for Selection menüsü ile görüntülenecek alanlar belirlenebilir.

Seçim ekranında görüntülenmesi istenilen alanlar seçilir.

Yürüt butonu ile tablo içeriği görüntülenir.

 

 

 

Bir Tablonun Metin Tablosunu Bulma

Bir metin tablosu, tablodaki bir kaydın tanımını birden fazla dile göre saklamak için kullanılır.

Bir tablonun metin tablosunu bulmak için

SE11 işlem kodu çalıştırılır. Tablo ismi yazılır “Display” butonuna tıklanır. Menü’ den Goto->Text Table seçilerek gidilir.

Eğer tablonun metin tablosu varsa aynı oturumda görüntülenir. Geri dönmek için F3 veya Back butonunu kullanabilirsiniz.

Metin tablosu yoksa durum çubuğunda uygun bir mesaj görüntülenir.

Örnek: MARA tablosunu deneyebilirsiniz.

Bakım Ekranı İçin İşlem Kodu oluşturma

SE93 işlem kodunu çalıştırın.

“Transaction Code” alanına atamak “ZTEST_T2” yazın. Bu bakım tablosunun işlem kodu olacak. “Create” butonuna tıklayın.

Açılan pencerede “Short text” alanına işlem kodunun kısa tanımını yazın. “Transaction with parameters” seçeneğini seçin ve “Continue” butonuna tıklayın.

“Transaction” alanına “SM30” yazın. “Skip initial screen” seçin. “Default Values” alanına tablodaki değerleri girin.

Name of Screen  Field Value
VIEWNAME ZTEST_T2
UPDATE X

İşlem kodu kaydedin. Ana menüden yeni oluşturduğunuz işlem kodunu test edebilirsiniz.