Site icon Kod Kaynağı

ABAP INTERNAL TABLE

Internal table denen şey uygulama çalışırken RAM in application serverında (GUI de değil) oluşan ve orada fill edilen temporary (geçici) tablolardır. Databasede herhangi bir tablo üstündeki herhangi bir değişimi çok daha hızlı ve katmanlar arası gidip gelmeyi en aza indirerek yapmayı sağlayan yapıdır.
3 çeşit internal table vardır;
  1. Standart Internal Table: Sıralanmasında hiçbir kriter yazılmazsa databasedeki sıraya göre oluşur. Satırlarına index değerleri ya da key valueları ile erişilebilir.
  2. Sorted Internal Table: Standart tabledan tek farkı satırlar key value ya göre sıralanmıştır. Tabi bu ister unique key olur ister non-unique key olur, onu yazan belirler.
  3. Hashed internal table: Hash algoritmasına göre sıralanır tablo. Satırlarına sadece key valuelar kullanarak erişilebilir çünkü index değeri tutmaz.
Not: Tablo üstünde arama yapıldığında performans olarak en iyiden en kötüye doğru sıralama şöyledir: hashed-sorted-standart.
Internal tablelarin nasil tanımlandığını göstereyim şimdi;
TYPES ITAB_ADI TYPE STANDARD TABLE OF STRUCTURE_ADI
WITH NON-UNIQUE KEY KOLON_ADI. “Unique key yazamayız
TYPES ITAB_ADI TYPE SORTED TABLE OF STRUCTURE_ADI
WITH NON-UNIQUE/UNIQUE KEY KOLON_ADI.
TYPES ITAB_ADI TYPE SORTED TABLE OF STRUCTURE_ADI
WITH UNIQUE KEY KOLON_ADI. “Non-unique yazamıyoruz
Not: WITH DEFAULT KEY anahtar sözcüğü yazıldığında tablodaki değerler açıkça görülmez. Debug modda sadece tablodaki satir ve sütun sayısını görülebilir. Bu ifade tanıma eklendiğinde tablodaki bütün karakter tipindeki alanlar satir anahtarının bir parçası olur.
Şimdi oluşturduğumuz bir internal table ı önce WRİTE komutuyla sonra da ALV de nasıl yazdırırız ona bakalım. Altta ilk olarak WRİTE komutuyla nasıl yazdırızı kendi oluşturduğum ZOGRENCI tablosu üstünden göstereceğim;

İşte çalışan kod:
REPORT Z_ITAB_DENEME.
*Structure tipi olustur
TYPES: BEGIN OF OGRENCI,
OGRENCIID LIKE ZOGRENCI-OGRENCIID,
ADI LIKE ZOGRENCI-ADI,
SOYADI LIKE ZOGRENCI-SOYADI,
TCKIMLIKNO LIKE ZOGRENCI-TCKIMLIKNO,
OGRENCINO LIKE ZOGRENCI-OGRENCINO,
END OF OGRENCI.
*Itab tipi olustur
TYPES ITAB TYPE STANDARD TABLE OF OGRENCI.DATA: GS_OGRENCI TYPE OGRENCI,
GT_ITAB TYPE ITAB.
*Tablomdaki degerleri itabın icine at
SELECT * FROM ZOGRENCI
INTO CORRESPONDING FIELDS OF TABLE GT_ITAB. END-OF-SELECTION.
*Itabi yazdir
WRITE 20 ‘TABLO DEGERLERIMIZ’.
ULINE.LOOP AT GT_ITAB INTO GS_OGRENCI.
WRITE:/10 GS_OGRENCI-OGRENCIID,
GS_OGRENCI-ADI,
GS_OGRENCI-SOYADI,
GS_OGRENCI-TCKIMLIKNO.
ENDLOOP.
Ve program çalıştığında çıkan görüntü:
Şimdi de ALV de yazdıralım:
Not: ALV, SAP nin rapor çıktılarını veya diğer verileri ekranda görüntülemek için sunduğu bir hizmettir.
İşte çalışan kod:
REPORT Z_ITAB_DENEME.
DATA: BEGIN OF GS_OGRENCI,
OGRENCIID LIKE ZOGRENCI-OGRENCIID,
OGRENCINO LIKE ZOGRENCI-OGRENCINO,
ADI LIKE ZOGRENCI-ADI,
SOYADI LIKE ZOGRENCI-SOYADI,
TCKIMLIKNO LIKE ZOGRENCI-TCKIMLIKNO,
END OF GS_OGRENCI.DATA GT_ITAB LIKE TABLE OF GS_OGRENCI.
“$ Region Alv icin tanimlanan degiskenler
DATA: GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV .“FIELDCATALOG STRUCTURE
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, “FIELDCATALOG TABLE
GS_LAYOUT TYPE SLIS_LAYOUT_ALV .DATA: GTY_HEADING TYPE SLIS_LISTHEADER.DATA: GT_HEADINGLIKE STANDARD TABLE OF GTY_HEADING WITH HEADER LINE.DATA: GT_EVENTS TYPE SLIS_T_EVENT,
G_EVENT_STR TYPE SLIS_ALV_EVENT.CONSTANTS:
C_ALV_HEAD_HEADER TYPE C VALUE ‘H’,
C_ALV_HEAD_SELECTION TYPE C VALUE ‘S’,
C_ALV_HEAD_ACTION TYPE C VALUE ‘A’,
GC_DEFAULT TYPE C VALUE ‘X’,
GC_SAVE TYPE C VALUE ‘A’.DATA: G_VARIANT TYPE DISVARIANT.“$ Endregion Alv icin tanimlanandegiskenler
*Tablomdaki degerleri itabın icine at
SELECT * FROM ZOGRENCI
INTO CORRESPONDING FIELDS OF TABLE GT_ITAB. END-OF-SELECTION.
*ALV de yazdirma
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = ‘GS_OGRENCI’
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = GT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
I_DEFAULT = GC_DEFAULT
I_SAVE = GC_SAVE
IS_VARIANT = G_VARIANT
I_GRID_TITLE = ‘Ogrenci Tablosu
IT_EVENTS = GT_EVENTS[]
TABLES
T_OUTTAB = GT_ITAB
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.
Ve program çalıştığında çıkan görüntü:
Exit mobile version