SAP ABAP - Menyalin Tabel Internal
Saat kita membaca record dari tabel internal dengan baris header, record tersebut dipindahkan dari tabel itu sendiri ke baris header. Kemudian baris tajuk yang bekerja dengan program kami. Hal yang sama berlaku saat membuat rekor baru. Ini adalah baris header yang Anda gunakan untuk bekerja dan dari mana data baru dikirim ke badan tabel itu sendiri.
Untuk menyalin catatan, kita dapat menggunakan pernyataan SELECT untuk memilih semua catatan dari tabel dan kemudian menggunakan pernyataan MOVE yang akan memindahkan catatan dari tabel asli ke dalam tabel internal baru ke dalam bidang di mana nama-namanya sesuai.
Berikut adalah sintaks untuk pernyataan MOVE -
MOVE <table_field> TO <internal_tab_field>.
Contoh
REPORT ZCUSLIST1.
TABLES: ZCUSTOMERS1.
DATA: BEGIN OF itab01 Occurs 0,
name LIKE ZCUSTOMERS1-name,
dob LIKE ZCUSTOMERS1-dob,
END OF itab01.
Select * FROM ZCUSTOMERS1.
MOVE ZCUSTOMERS1-name TO itab01-name.
MOVE ZCUSTOMERS1-dob TO itab01-dob.
ENDSELECT.
Write: / itab01-name, itab01-dob.
Kode di atas menghasilkan keluaran sebagai berikut -
MARGARET 02.11.1994
Loop seleksi mengisi setiap bidang satu per satu, menggunakan pernyataan MOVE untuk memindahkan data dari satu bidang tabel ke yang lain. Dalam contoh di atas, pernyataan MOVE digunakan untuk memindahkan konten tabel ZCUSTOMERS1 ke bidang yang sesuai di tabel internal. Anda dapat menyelesaikan tindakan ini hanya dengan satu baris kode. Anda dapat menggunakan pernyataan MOVECORRESPONDING.
Berikut sintaks untuk pernyataan MOVE-CORRESPONDING -
MOVE-CORRESPONDING <table_name> TO <internal_tab>.
Ini memberitahu sistem untuk memindahkan data dari bidang ZCUSTOMERS1 ke bidang terkait di itab01.
Contoh
REPORT ZCUSTOMERLIST.
TABLES: ZCUSTOMERS1.
DATA: Begin of itab01 occurs 0,
customer LIKE ZCUSTOMERS1-customer,
name LIKE ZCUSTOMERS1-name,
title LIKE ZCUSTOMERS1-title,
dob LIKE ZCUSTOMERS1-dob,
END OF itab01.
SELECT * from ZCUSTOMERS1.
MOVE-Corresponding ZCUSTOMERS1 TO itab01.
APPEND itab01.
ENDSELECT.
LOOP AT itab01.
Write: / itab01-name, itab01-dob.
ENDLOOP.
Kode di atas menghasilkan keluaran sebagai berikut -
MARK 21.05.1981
JAMES 14.08.1977
AURIELE 19.06.1990
STEPHEN 22.07.1985
MARGARET 02.11.1994
Hal ini dimungkinkan oleh fakta bahwa keduanya memiliki nama bidang yang cocok. Saat menggunakan pernyataan ini, Anda perlu memastikan bahwa kedua bidang memiliki tipe dan panjang data yang cocok. Ini telah dilakukan di sini dengan pernyataan LIKE sebelumnya.