Internal tables
in ABAP
ABAP dili için
internal table oldukça önemlidir. ABAP herhangi bir dizi tanımlamasına izin
vermediğinden, birden fazla satırlı veri nesnesi kullanmak isterseniz internal
table kullanmak zorundasınız.
Internal tablosu tanımlanmış
yapıdaki değişken datasetleri ABAP’ın çalışma alanına taşır, ve veriyi dinamik
olarak kullanmanızı sağlar. Veriler aynı yapıdan oluşan satırlarda ayrı ayrı depolanır.
3 tip Internal Tablosu vardır. Ne
tür işlemler yaptığımıza bağlı olarak birini seçerek yaratırız.
Standard Table :Index erişimi en
hızlı olandır. Ancak erişim hızı, tablodaki değerlerin sayısına ve ilişkilerin
fazlalığına bağlı olarak değişir. Eğer bir anahtar veri erişimine ihtiyacınız
varsa, bu tablo genelde yeterlidir,
Sorted Table: Bu tablo çeşidi,
eğer sıralamalı olarak doldurduğunuz bir tabloya ihtiyacınız varsa
kullanacağınız tablodur. INSERT komutunu kullanrak tabloyu sıralayıp
doldurabilirsiniz. Girişler bir tablo anahtarı tarafından tanımlanan şekilde
sıralanark doldurulur. Bir anahtar için program hızı, sistem daima binary
search kullandığı için, tablodaki satırların sayısı kadar logaritmik olarak
azalır. Eğer spesifik olarak tablodaki anahtarı WHERE koşulu ile LOOP içinde
kullanıyorsanız, bu tablo çok kullanışlıdır.
Hashed Table: Asıl işlem anahtar
erişimi üzerine ise, bu tip tablo en uygun olandır. Hashed tabloda, onun
indexini kullanrak erişim sağlayamazsınız. Tablodaki değer sayısı ne olursa
olsun anahtar değere erişim sabittir. Database tablosu gibi, hashed tablo da
daima bir unique anahtar vardır. Eğer büyük boyutta veri içeren tablolarınız
varsa hashed tablo en iyisidir.
Eğer internal tablosundan
spesific bir satır okumak isterseniz READ komutunu kullanmanız gerekir.
READ… TRANSPORTING NO
FIELDS.
READ HASHED Table
READ into FIELD-SYMBOL
bu komutlar ile anahtar değişkeni ile (READ WITH TABLE KEY) internal tablosundan okurken kullanılacak komutlar yukardakilerdir.
READ komutunun nasıl kullanılacağına dair birkaç örnek:
READ HASHED Table
READ into FIELD-SYMBOL
bu komutlar ile anahtar değişkeni ile (READ WITH TABLE KEY) internal tablosundan okurken kullanılacak komutlar yukardakilerdir.
READ komutunun nasıl kullanılacağına dair birkaç örnek:
READ TABLE IT_TABLE INTO WA_TABLE WITH TABLE KEY ID = PERSON_ID
*&---------------------------------------------------------------------*
*& READ INTERNAL TABLE CODE
**********************************
REPORT ZREAD_TABLE.
DATA: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
DATA itab LIKE HASHED TABLE OF line WITH UNIQUE KEY col1.
DO 4 TIMES.
line-col1 = sy-index.
line-col2 = sy-index ** 2.
INSERT line INTO TABLE itab.
ENDDO.
line-col1 = 2.
line-col2 = 3.
READ TABLE itab FROM line INTO line COMPARING col2.
WRITE: 'sy-subrc =', sy-subrc.
SKIP.
WRITE: / line-col1, line-col2.
READ TABLE itab WITH TABLE KEY col1 = 3
INTO line TRANSPORTING col2.
WRITE: /'yeni kısımi transporting::::::: ', 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix.
SKIP.
WRITE: / line-col1, line-col2.
***************transporting no fields
READ TABLE itab WITH KEY col2 = 16 TRANSPORTING NO FIELDS.
WRITE: /'transporting no fields.....: ', 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix.
* ******************
* assign
FIELD-SYMBOLS
READ TABLE itab WITH TABLE KEY col1 = 2 ASSIGNING
LOOP AT itab INTO line.
WRITE: / line-col1, line-col2.
ENDLOOP.
WRITE: /'*reading lines using the ASSİGN:'.
DATA itab11 LIKE SORTED TABLE OF line WITH UNIQUE KEY col1.
DO 10 TIMES.
line-col1 = sy-index.
line-col2 = 2 * sy-index.
WRITE : / LINE-COL1, LINE-COL2.
APPEND line TO itab11.
ENDDO.
READ TABLE itab11 ASSIGNING
SKIP.
WRITE: /
sy-subrc, sy-tabix.
SKIP.
WRITE: /
Hiç yorum yok:
Yorum Gönder