27 Ağustos 2013 Salı

SAP ABAP Ders 1

Internal Table'dan veri okumak için gerekli bütün kodlar :

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 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 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  LIKE LINE OF itab.

       READ TABLE itab WITH TABLE KEY col1 = ASSIGNING .

-col2 = 100.

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 = * sy-index.
  WRITE : / LINE-COL1, LINE-COL2.
  APPEND line TO itab11.
ENDDO.


READ TABLE itab11 ASSIGNING  INDEX 7.

SKIP.

WRITE: /
  sy-subrc, sy-tabix.
SKIP.

WRITE: / -col1, -col2.

Hiç yorum yok:

Yorum Gönder