
NOT : Süreler sistem kaynaklarından dolayı değişkenlik gösterebilir.
<head> https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4171345677801276 </head>
Internal Table Nedir?
INTERNAL TABLE KAYITLARIN DİNAMİK OLARAK TUTULDUĞU AYNI YAPI VE KEY’E SAHİP HAFIZADA TUTULAN BİR VERİ KÜMESİDİR. INTERNAL TABLE İÇERİSİNDEKİ KAYITLAR READ TABLE DEYİMİ KULLANILARAK INDEX ÜZERİNDEN VEYA KEY ALANI ÜZERİNDEN OKUNABİLİR. INTERNAL TABLE’ IN HANGİ TÜR VE HANGİ KEY ALANLARINA SAHİP OLACAĞINI BELİRLEMEK KAYITLARIN OKUNMA SÜRESİNDE ETKİLİ OLMAKTADIR. 3 ADET INTERNAL TABLE TÜRÜ OLMAKLA BİRLİKTE BUNLARIN KULLANIMI VE TABLO ÜZERİNDEN OKUMA İŞLEMLERİ ŞU ŞEKİLDEDİR;
STANDART TABLOLAR
- Sıralı bir indexleme yapısına sahiptir.
- Kayıtlara index üzerinden veya key üzerinden erişilebilir.
- Tablonun key alanı non-unique yapıda olup tekrarlanabilir.
- Key üzerinden kayıt okumada full table scan yöntemini kullanır.
- Key üzerinden ilgili kayda erişim süresi tablodaki kayıt sayısı ile orantılıdır.
TABLES : MARA, MAKT.
DATA : BEGIN OF GT_ITAB OCCURS 0,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF GT_ITAB.
TYPES : BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
DATA : LT_MARA TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE.
START-OF-SELECTION.
SELECT MATNR
INTO CORRESPONDING FIELDS OF TABLE @GT_ITAB
FROM MARA
UP TO 50000 ROWS.
IF GT_ITAB[] IS NOT INITIAL.
SELECT MATNR, SPRAS, MAKTX
INTO CORRESPONDING FIELDS OF TABLE @LT_MAKT
FROM MAKT
FOR ALL ENTRIES IN @GT_ITAB
WHERE MATNR EQ @GT_ITAB-MATNR AND
SPRAS EQ @SY-LANGU.
ENDIF.
LOOP AT GT_ITAB ASSIGNING FIELD-SYMBOL(<GS_ITAB>).
READ TABLE LT_MAKT ASSIGNING FIELD-SYMBOL(<LS_MAKT>)
WITH KEY MATNR = <GS_ITAB>-MATNR.
IF SY-SUBRC EQ 0.
<GS_ITAB>-MAKTX = <LS_MAKT>-MAKTX.
ENDIF.
MODIFY GT_ITAB FROM <GS_ITAB>.
ENDLOOP.
SIRALI TABLOLAR
- Kayıtlar tanımlanan keylere göre sıralı şekilde tutulur.
- Kayıtlara index üzerinden veya key üzerinden erişilebilir.
- Kayıtlara key üzerinden erişim yaparken BINARY SEARCH yöntemini kullanır.
- Standart tablolara göre oldukça hızlıdır.
TABLES : MARA, MAKT.
DATA : BEGIN OF GT_ITAB OCCURS 0,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF GT_ITAB.
TYPES : BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
DATA : LT_MAKT TYPE SORTED TABLE OF TY_MAKT WITH UNIQUE KEY MATNR
WITH HEADER LINE.
START-OF-SELECTION.
SELECT MATNR
INTO CORRESPONDING FIELDS OF TABLE @GT_ITAB
FROM MARA
UP TO 50000 ROWS.
IF GT_ITAB[] IS NOT INITIAL.
SELECT MATNR, SPRAS, MAKTX
INTO CORRESPONDING FIELDS OF TABLE @LT_MAKT
FROM MAKT
FOR ALL ENTRIES IN @GT_ITAB
WHERE MATNR EQ @GT_ITAB-MATNR AND
SPRAS EQ @SY-LANGU.
ENDIF.
LOOP AT GT_ITAB ASSIGNING FIELD-SYMBOL(<GS_ITAB>).
READ TABLE LT_MAKT ASSIGNING FIELD-SYMBOL(<LS_MAKT>)
WITH KEY MATNR = <GS_ITAB>-MATNR.
IF SY-SUBRC EQ 0.
<GS_ITAB>-MAKTX = <LS_MAKT>-MAKTX.
ENDIF.
MODIFY GT_ITAB FROM <GS_ITAB>.
ENDLOOP.
HASHED TABLOLAR
- Tabloya index üzerinden erişim yoktur.
- Tabloya erişim sadece key üzerinden yapılır.
- Kayıtlara key ile erişimde hash algoritmasını kullanır.
- Tablonun belirtilen key alanı UNIQUE olmalıdır.
TABLES : MARA, MAKT.
DATA : BEGIN OF GT_ITAB OCCURS 0,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF GT_ITAB.
TYPES : BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
DATA : LT_MAKT TYPE HASHED TABLE OF TY_MAKT WITH UNIQUE KEY MATNR
WITH HEADER LINE.
START-OF-SELECTION.
SELECT MATNR
INTO CORRESPONDING FIELDS OF TABLE @GT_ITAB
FROM MARA
UP TO 50000 ROWS.
IF GT_ITAB[] IS NOT INITIAL.
SELECT MATNR, SPRAS, MAKTX
INTO CORRESPONDING FIELDS OF TABLE @LT_MAKT
FROM MAKT
FOR ALL ENTRIES IN @GT_ITAB
WHERE MATNR EQ @GT_ITAB-MATNR AND
SPRAS EQ @SY-LANGU.
ENDIF.
LOOP AT GT_ITAB ASSIGNING FIELD-SYMBOL(<GS_ITAB>).
READ TABLE LT_MAKT ASSIGNING FIELD-SYMBOL(<LS_MAKT>)
WITH KEY MATNR = <GS_ITAB>-MATNR.
IF SY-SUBRC EQ 0.
<GS_ITAB>-MAKTX = <LS_MAKT>-MAKTX.
ENDIF.
MODIFY GT_ITAB FROM <GS_ITAB>.
ENDLOOP.