Belajar ABAP Part 5: Internal Tables Lengkap (Standard, Sorted, Hashed)
Di Part 4: Modularisasi Program kita sudah bahas modularisasi. Sekarang kita akan mendalami Internal Table, struktur data paling penting di ABAP. Ada 3 jenis utama: Standard Table, Sorted Table, dan Hashed Table. Kita bedah satu-satu dengan contoh coding.
1. Standard Table
Standard Table adalah jenis default internal table. Data disimpan berurutan sesuai urutan APPEND
.
Cocok digunakan jika data tidak terlalu banyak dan pencarian dilakukan dengan index.
REPORT zstandard_table.
TYPES: BEGIN OF ty_emp,
id TYPE i,
name TYPE string,
END OF ty_emp.
DATA: lt_emp TYPE STANDARD TABLE OF ty_emp WITH DEFAULT KEY,
ls_emp TYPE ty_emp.
" Isi data
ls_emp-id = 1. ls_emp-name = 'Andi'. APPEND ls_emp TO lt_emp.
ls_emp-id = 2. ls_emp-name = 'Budi'. APPEND ls_emp TO lt_emp.
ls_emp-id = 3. ls_emp-name = 'Citra'. APPEND ls_emp TO lt_emp.
" Loop data
WRITE: / '--- Standard Table ---'.
LOOP AT lt_emp INTO ls_emp.
WRITE: / ls_emp-id, ls_emp-name.
ENDLOOP.
" Akses dengan index
READ TABLE lt_emp INTO ls_emp INDEX 2.
WRITE: / 'Index 2 adalah:', ls_emp-name.
Output: --- Standard Table --- 1 Andi 2 Budi 3 Citra Index 2 adalah: Budi
2. Sorted Table
Sorted Table otomatis menyimpan data dalam keadaan terurut berdasarkan key. Cocok untuk data besar karena pencarian lebih cepat daripada Standard Table.
REPORT zsorted_table.
TYPES: BEGIN OF ty_city,
code TYPE i,
name TYPE string,
END OF ty_city.
DATA: lt_city TYPE SORTED TABLE OF ty_city
WITH UNIQUE KEY code,
ls_city TYPE ty_city.
" Isi data (acak urutannya)
ls_city-code = 30. ls_city-name = 'Surabaya'. APPEND ls_city TO lt_city.
ls_city-code = 10. ls_city-name = 'Jakarta'. APPEND ls_city TO lt_city.
ls_city-code = 20. ls_city-name = 'Bandung'. APPEND ls_city TO lt_city.
" Loop data akan otomatis urut berdasarkan KEY
WRITE: / '--- Sorted Table ---'.
LOOP AT lt_city INTO ls_city.
WRITE: / ls_city-code, ls_city-name.
ENDLOOP.
" Akses dengan key
READ TABLE lt_city INTO ls_city WITH KEY code = 20.
WRITE: / 'Kota dengan code 20 adalah:', ls_city-name.
Output: --- Sorted Table --- 10 Jakarta 20 Bandung 30 Surabaya Kota dengan code 20 adalah: Bandung
3. Hashed Table
Hashed Table menyimpan data dengan struktur hash, mirip dictionary/map. Sangat cepat untuk pencarian berdasarkan key, tapi tidak bisa diakses dengan index.
REPORT zhashed_table.
TYPES: BEGIN OF ty_mat,
matnr TYPE i,
desc TYPE string,
END OF ty_mat.
DATA: lt_mat TYPE HASHED TABLE OF ty_mat
WITH UNIQUE KEY matnr,
ls_mat TYPE ty_mat.
" Isi data
ls_mat-matnr = 500. ls_mat-desc = 'Material A'. APPEND ls_mat TO lt_mat.
ls_mat-matnr = 200. ls_mat-desc = 'Material B'. APPEND ls_mat TO lt_mat.
ls_mat-matnr = 300. ls_mat-desc = 'Material C'. APPEND ls_mat TO lt_mat.
" Loop data (tidak berurutan karena sifat hash)
WRITE: / '--- Hashed Table ---'.
LOOP AT lt_mat INTO ls_mat.
WRITE: / ls_mat-matnr, ls_mat-desc.
ENDLOOP.
" Akses dengan key
READ TABLE lt_mat INTO ls_mat WITH KEY matnr = 300.
WRITE: / 'Material 300 adalah:', ls_mat-desc.
Output (urutan bisa berbeda): --- Hashed Table --- 200 Material B 300 Material C 500 Material A Material 300 adalah: Material C
Perbandingan 3 Jenis Internal Table
Jenis | Kelebihan | Kekurangan | Cocok untuk |
---|---|---|---|
Standard Table | Mudah digunakan, akses via index | Pencarian lambat untuk data besar | Data kecil, sederhana |
Sorted Table | Data otomatis terurut, pencarian cepat | Butuh key untuk akses efisien | Data besar yang sering dicari berdasarkan key |
Hashed Table | Pencarian super cepat via key | Tidak bisa pakai index, urutan tidak terjamin | Data sangat besar, lookup by key |
Kesimpulan
Internal Table adalah pondasi utama ABAP. Pilih jenis sesuai kebutuhan:
- Pakai Standard Table untuk data kecil/sederhana.
- Pakai Sorted Table untuk data besar yang perlu urut + pencarian cepat.
- Pakai Hashed Table untuk pencarian super cepat berdasarkan key.
👉 Lanjut ke: Belajar ABAP Part 6: Open SQL di ABAP
Comments
Post a Comment