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.