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.

  • ๐Ÿ“‹ Definisi Inti: Tabel internal menyimpan baris-baris dengan struktur identik di memori utama, paling sering untuk memformat data yang dibaca dari tabel basis data.
  • ๐Ÿงพ Peran di Area Kerja: Area kerja adalah satu baris dengan format yang sama seperti tabel, dan memproses tabel satu baris demi satu baris.
  • ๏ธ Judul: Tabel dengan baris header menerima area kerja implisit, sehingga baris dapat disisipkan atau dibaca langsung tanpa perlu menyebutkan namanya.
  • ๏ธ Empat Metode Penciptaan: Pernyataan TYPES, referensi ke tabel yang sudah ada, referensi ke struktur yang sudah ada, atau struktur baru yang dideklarasikan dengan OCCURS.
  • โž• Mendiami: APPEND menambahkan satu baris, COLLECT menggabungkan kolom numerik untuk kunci duplikat, dan INSERT menempatkan baris pada indeks yang dipilih.
  • ๐Ÿ” Baca dan Salin: Perintah LOOP AT membaca setiap baris, READ TABLE membaca satu baris berdasarkan indeks, dan MOVE atau tanda sama dengan menyalin seluruh tabel.
  • ๏ธ Menghapus: Perintah DELETE di dalam LOOP menghapus baris saat ini, dan DELETE โ€ฆ INDEX menghapus baris pada posisi yang diketahui.

SAP Tabel Internal ABAP

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

Perbedaan Antara Tabel Internal dan Area Kerja

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.

  1. Tabel internal dengan baris HEADER
  2. 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.

Pertanyaan Umum Demo Slot

CLEAR itab hanya mengosongkan baris header, dan CLEAR itab[] mengosongkan isi. REFRESH selalu mengosongkan isi tetapi tetap menyimpan memori yang tersedia. FREE mengosongkan isi dan juga melepaskan memori.

SY-TABIX menyimpan nomor baris dari tabel internal yang sedang diproses. SY-INDEX menyimpan nomor tahapan dari loop DO atau WHILE. Tabel hash akan membiarkan SY-TABIX bernilai nol karena tidak memiliki indeks.

Perintah LOOP AT itab ASSIGNING yang menetapkan simbol field menghindari penyalinan setiap baris ke area kerja, sehingga berjalan lebih cepat pada tabel besar dan memungkinkan baris diubah di tempatnya tanpa pernyataan MODIFY.

Ya. Asisten AI dalam alat pengembangan ABAP menulis ulang deklarasi OCCURS dan baris header menjadi TYPE STANDARD TABLE OF dengan area kerja eksplisit, dan mereka menandai pernyataan yang menyebabkan kesalahan setelah baris header hilang.

Penasihat kinerja AI memeriksa bagaimana sebuah tabel diisi dan dibaca, kemudian merekomendasikan tabel yang diurutkan atau di-hash ketika pencarian linier mendominasi waktu eksekusi. Rekomendasi tersebut dikonfirmasi dengan sebuah trace dalam transaksi SAT.

Ringkaslah postingan ini dengan: