COLLECT etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
COLLECT etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Eylül 2013 Pazartesi

Example for COLLECT statement


DATA: BEGIN OF seats,
        carrid   TYPE sflight-carrid,
        connid   TYPE sflight-connid,
        seatsocc TYPE sflight-seatsocc,
       END OF seats.

DATA seats_tab LIKE HASHED TABLE OF seats
                WITH UNIQUE KEY carrid connid.

SELECT carrid connid seatsocc
       FROM sflight
       INTO seats.
  COLLECT seats INTO seats_tab.
ENDSELECT.

LOOP AT seats_tab INTO SEATS.
  WRITE: / 'CARRID:', SEATS-carrid, 'CONNID: ', SEATS-Connid , 'SEATSOCC: ', SEATS-seatsocc.
ENDLOOP.

19 Eylül 2013 Perşembe

Collect Statement in SAP ABAP

COLLECT komutu internal tablosuna veri ile doldururken kullanılır. Ancak uniq olanların dışındakiler toplanarak yazılır.

COLLECT  working_area_table INTO internal_area_table.
Çalışma ortamından internal tablosuna eğer belirtilen anahtara ait bir kayıt yoksa
veri  tablonun sonuna boş bir alan eklenerek yazılır. Eğer aynı anahtar alanına ait bir kayıt varsa, internal tablosundaki bu kayıttaki veri çalışma alanındaki veri ile toplanarak yazılır.

COLLECT sadece uniq değerli internal tablolar yaratacaksanız kullanılmalıdır. Ancak bu durumda COLLECT ten performans sağlarsınız.

COLLECT komutu standart tablolar için uygun değildir. Sadece sıralanmış ve hashed tablolar ile problemsiz çalışır, çünkü standart tabloların aksine, ancak bu tür tablolarda değişmeyen ayrı bir anahtar ile işlem yapılabilir.  Hashed tablolar için, bütün istenen alanlar otomatik olarak doldurulur.

Eğer ısrarla standart tabloda COLLECT kullanılacaksa, sadece MODIFY komutu ile birlikte kullanılabilir. Ancak COLLECT komutunu TRANSPORTING ile kullanılacaksa, primary key alanının değişmediğinden emin olmanız gerekir. Aksi halde COLLECT komutu doğru sonuç vermez.

Bir standart tablonun COLLECT kullanımı için uygun olup olmadığını gösteren modül ABL_TABLE_HASH_STATE dir.