SAP Tabel Internal ABAP: Buat, Baca, Isi, Salin & Hapus
โก Ringkasan Cerdas
SAP Objek Tabel Internal ABAP menyimpan data dari struktur tetap untuk penggunaan dinamis di dalam program. Halaman ini menjelaskan area kerja, baris header, empat metode pembuatan, dan pernyataan yang mengisi, menyalin, membaca, dan menghapus baris tabel.

Apa itu Tabel Internal?
TABEL INTERNAL digunakan untuk memperoleh data dari struktur tetap untuk penggunaan dinamis di ABAP. Setiap baris dalam tabel internal memiliki struktur bidang yang sama. Kegunaan utama tabel internal adalah untuk menyimpan dan memformat data dari tabel database dalam suatu program.
Meja dalam ruangan selalu bekerja bersama dengan area kerja, jadi konsep itu akan dibahas selanjutnya.
Apa itu Area Kerja?
Area kerja adalah baris data tunggal. Area kerja harus memiliki format yang sama dengan tabel internal lainnya. Area kerja digunakan untuk memproses data dalam tabel internal satu baris demi satu baris.
Apa Perbedaan Antara Meja Dalam Ruangan dan Area Kerja?
Sebuah gambar mengungkapkan ribuan kata
Diagram tersebut menunjukkan tabel yang memuat banyak baris, sedangkan area kerja hanya memuat baris yang sedang diproses. Apakah area kerja tersebut dibuat oleh sistem atau oleh pengembang bergantung pada tipe tabel yang dijelaskan di bawah ini.
Jenis Tabel Internal
Ada dua jenis tabel internal.
- Tabel internal dengan baris HEADER
- Tabel internal tanpa baris HEADER.
Tabel Internal dengan Garis Header
- Di sini sistem secara otomatis membuat area kerja.
- Area kerja memiliki tipe data yang sama dengan tabel internal.
- Area kerja ini disebut garis HEADER.
- Di sinilah semua perubahan atau tindakan apa pun pada isi tabel dilakukan. Hasilnya, record dapat langsung dimasukkan ke dalam tabel atau diakses langsung dari tabel internal.
Tabel Internal tanpa Garis Header :
- Di sini tidak ada area kerja yang berhubungan dengan tabel.
- Area kerja harus ditentukan secara eksplisit ketika kita perlu mengakses tabel tersebut.
- Oleh karena itu tabel ini tidak dapat diakses secara langsung.
๐ก Kiat: Tabel dengan baris header memiliki nama yang sama untuk tabel dan area kerjanya, yang membuat kode menjadi ambigu. Program baru sebaiknya mendeklarasikan tabel tanpa baris header dan memberikan area kerja secara eksplisit.
Tabel Internal Standar, Terurut, dan Terhash
Selain perbedaan baris header, setiap tabel internal juga memiliki jenis tabel yang menentukan bagaimana sebuah baris ditemukan. Jenis tersebut dipilih dengan tambahan TYPE STANDARD TABLE, TYPE SORTED TABLE, atau TYPE HASHED TABLE, dan hal ini berpengaruh langsung pada waktu eksekusi.
| Jenis tabel | Metode akses | kunci | Paling baik digunakan untuk |
|---|---|---|---|
| Standar | Indeks dan kunci, dengan pencarian linier pada kunci. | Tidak unik | Pemrosesan berurutan, dan tabel kecil dibaca dengan indeks. |
| Diurutkan | Indeks dan kunci, dengan pencarian biner pada kunci. | Unik atau tidak unik, tetap diurutkan secara otomatis. | Tabel yang lebih besar dibaca berulang kali melalui kolom kunci utama. |
| di-hash | Hanya kunci, dengan algoritma hash | Khas Papua | Tabel yang sangat besar yang selalu dibaca berdasarkan kunci lengkap, seperti buffer catatan basis data. |
Tabel standar adalah default dan cocok untuk pemrosesan sekuensial. Tabel hash menjaga waktu akses tetap konstan tidak peduli berapa banyak baris yang disimpan, itulah sebabnya aturan kinerja Buka SQL merekomendasikannya untuk menyimpan rekaman sementara.
Membuat Tabel Internal
Ada banyak cara untuk membuat Tabel Internal. Mari kita lihat satu per satu-
1.Dengan Menggunakan Pernyataan Tipe
Sekarang mari kita buat tabel internal itab menggunakan pernyataan TYPE.
Sintaksnya adalah โ
Types : begin of line, column1 type I, column2 type I, end of line.
Contoh:
TYPES : begin of line, empno type I, empname(20) type c , end of line.
Pernyataan TYPES membuat garis struktur seperti yang didefinisikan.
Untuk benar-benar membuat Tabel Internal itab gunakan perintah berikut-
Data itab type line occurs 10.
Itab tabel internal dibuat dengan struktur garis. Selain mendeklarasikan struktur tabel internal, klausa OCCURS juga menentukan berapa banyak entri tabel yang disimpan di penyimpanan utama (dalam hal ini 10). Catatan tambahan ditulis ke area paging dan dapat mempengaruhi kinerja
2.Dengan mengacu pada Tabel lain
Anda dapat membuat tabel internal dengan merujuk ke tabel yang sudah ada. Tabel yang sudah ada tersebut bisa berupa tabel standar. SAP tabel, tabel Z atau tabel internal lainnya.
Sintaksis-
Data <f> <type> [with header line].
Contoh-
DATA itab TYPE line OCCURS 10 with header line.
Di sini tabel internal itab dibuat dari tipe baris dengan baris header. Harap dicatat "dengan baris header" adalah opsional.
3.Dengan mengacu pada Struktur yang ada
Sintaksis-
Data <f> LIKE <struct> occurs n [with header line].
Contoh-
DATA itab LIKE sline OCCURS 10.
Di sini dibuat tabel itab yang memiliki struktur yang sama dengan sline.
4.Dengan membuat Struktur baru
Sekarang mari kita membuat tabel internal dengan struktur kita sendiri. Di sini tabel dibuat dengan garis Header, secara default.
Sintaks โ
Data : Begin of <f> occurs <n>, <component declaration>, ................................, End of <f>.
Contoh -
Data : Begin of itab occurs 10, column1 type I, column2(4) type C, column3 like mara-ernam, End of itab.
Tabel internal itab dibuat
Tabel kosong tidak banyak gunanya, jadi bagian selanjutnya akan mengisinya dengan baris-baris data.
Mengisi Tabel Internal
Sekarang kita telah berhasil membuat beberapa tabel internal, mari kita lihat bagaimana kita mengisinya dengan beberapa catatan. Ada berbagai metode yang tersedia untuk mengisi tabel
1.Tambahkan Data baris demi baris
Metode pertama yang tersedia adalah penggunaan pernyataan APPEND.
Dengan menggunakan pernyataan APPEND kita bisa menambahkan satu baris dari area kerja lain ke tabel internal atau kita bisa menambahkan satu baris awal ke tabel internal.
Sintaks โ
APPEND [<wa> TO / INITIAL LINE TO] <itable>.
Di sini area kerja atau Baris Awal ditambahkan ke tabel internal .
Variabel sistem SY-TABIX berisi indeks dari baris yang ditambahkan.
Contoh:
Data: Begin of itab occurs 10, col1 type C, col2 type I, end of itab. Append initial line to itab.
Hasil : ' ' '0'
Perintah `Initial lines` menambahkan baris yang diinisialisasi dengan nilai yang tepat sesuai tipenya ke dalam tabel. Di sini, `col1` adalah karakter dan `col2` adalah bilangan bulat. Kemudian, perintah `APPEND initial line` menambahkan baris yang diinisialisasi sesuai dengan tipe data kolom, yaitu spasi untuk `col1` dan 0 untuk `col2`.
2.Menggunakan pernyataan COLLECT
COLLECT adalah bentuk pernyataan lain yang digunakan untuk mengisi tabel internal. Umumnya COLLECT digunakan saat memasukkan baris ke dalam tabel internal dengan kunci standar unik.
Sintaksis-
COLLECT [<wa> INTO] <itable>.
Jika tabel memiliki garis Header, opsi INTO dihilangkan. Misalkan sudah ada entri yang memiliki kunci yang sama dengan yang Anda coba tambahkan, maka baris baru tidak ditambahkan ke tabel, tetapi bidang numerik dari kedua entri tersebut ditambahkan dan hanya ada satu entri yang sesuai dengan kunci tersebut. . Nilai SY-TABIX diubah ke baris entri asli. Lain COLLECT bertindak mirip dengan APPEND dan SY-TABIX berisi indeks dari baris yang diproses.
3. Menggunakan pernyataan INSERT
Pernyataan INSERT menambahkan garis/area kerja ke tabel internal. Anda dapat menentukan posisi di mana baris baru akan ditambahkan dengan menggunakan klausa INDEX dengan pernyataan INSERT.
Sintaksis
INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].
Di sini, area kerja atau INISIAL LINE dimasukkan ke dalam tabel internal pada indeks .
Menyalin Tabel Internal
Isi dari satu tabel internal dapat disalin ke tabel internal lainnya dengan menggunakan perintah APPEND. LINES atau SISIPKAN LINEPernyataan S. Cara yang lebih sederhana adalah dengan menggunakan salah satu sintaks berikut.
MOVE <itab1> To <itab2>. OR <itab1> = <itab2>.
Ini menyalin isi ITAB1 ke ITAB2. Dalam kasus tabel internal dengan baris header kita harus menggunakan [] untuk membedakannya dari area kerja. Jadi, untuk menyalin isi tabel internal dengan baris header, sintaksnya menjadi,
itab1[] = itab2[].
Baca Tabel Internal
Kita sekarang sudah memahami cara membuat tabel internal dan mengisinya dengan data. Selanjutnya, kita akan melihat bagaimana cara menggunakan data atau mengambil data dari tabel internal tersebut.
1. Menggunakan Loop -Endloop
Salah satu cara mengakses atau membaca tabel internal adalah dengan menggunakan LOOP-ENDLOOP.
Sintaksis
LOOP AT <itable> [INTO <wa>] ................................... ENDLOOP.
Di sini ketika Anda mengatakan LOOP AT ITABLE, maka tabel internal ITABLE dibaca baris demi baris. Anda dapat mengakses nilai kolom untuk baris tersebut di bagian mana pun dari struktur LOOP-ENDLOOP. Nilai SY-SUBRC diatur ke 0, meskipun hanya satu catatan yang dibaca.
2. Menggunakan BACA
Metode lain untuk membaca tabel internal adalah dengan menggunakan pernyataan READ.
Sintaksis-
READ TABLE <itable> [INTO <wa>] INDEX <idx>.
Pernyataan ini membaca baris saat ini atau baris yang ditentukan oleh indeks. Nilai SY-TABIX adalah indeks baris yang dibaca. Jika entri dengan indeks yang ditentukan ditemukan, maka SY-SUBRC diatur ke 0. Jika indeks yang ditentukan kurang dari 0, maka terjadi kesalahan saat runtime. Jika indeks yang ditentukan melebihi ukuran tabel, maka SY-SUBRC diatur ke 4.
โ ๏ธ Peringatan: Perintah READ TABLE โฆ INDEX 0 akan menimbulkan kesalahan saat runtime, jadi indeks yang dihitung saat runtime harus diperiksa sebelum pernyataan dijalankan.
Menghapus Tabel Internal
Ada banyak cara untuk menghapus baris dari tabel internal.
1.Menghapus garis dalam satu lingkaran.
Ini adalah cara paling sederhana untuk menghapus garis.
Sintaksis
DELETE <ITABLE>.
Pernyataan ini hanya berfungsi dalam satu lingkaran. Ini menghapus baris saat ini. Anda dapat menghapus garis-garis dalam satu lingkaran secara kondisional dengan menambahkan klausa WHERE.
2.Menghapus baris menggunakan indeks.
Ini digunakan untuk menghapus baris dari tabel internal di indeks mana pun.
Sintaksis
DELETE <ITABLE> INDEX <IDX>.
Garis dengan indeks dihapus. Indeks baris berikutnya dikurangi 1.
3. Menghapus baris duplikat.
Baris duplikat akan dihapus setelah tabel diurutkan berdasarkan kolom kunci.
SORT itab BY col1. DELETE ADJACENT DUPLICATES FROM itab COMPARING col1.
Hanya baris yang bersebelahan yang dibandingkan, itulah sebabnya pernyataan SORT harus dijalankan terlebih dahulu. Untuk mengosongkan tabel sepenuhnya, gunakan CLEAR itab[] atau REFRESH itab.

