Belajar ABAP Part 6: Open SQL (SELECT, INSERT, UPDATE, DELETE)
Setelah mempelajari Part 5: Internal Table, sekarang kita masuk ke salah satu inti dari ABAP: Open SQL. Dengan Open SQL kita bisa berinteraksi dengan database SAP, misalnya membaca data master (MARA, MARC, VBAK, dsb.) atau melakukan update.
Apa itu Open SQL?
Open SQL adalah subset SQL yang dipakai di SAP ABAP agar query bisa berjalan di semua jenis database yang digunakan SAP (Oracle, HANA, MSSQL, dll).
Perintah Dasar Open SQL
- SELECT → membaca data dari database.
- INSERT → menambahkan data baru.
- UPDATE → memperbarui data.
- DELETE → menghapus data.
Contoh SELECT
REPORT zsql_select.
DATA: lt_mara TYPE TABLE OF mara,
ls_mara TYPE mara.
" Ambil data material terbatas 5 row
SELECT * FROM mara UP TO 5 ROWS INTO TABLE lt_mara.
" Loop hasil
LOOP AT lt_mara INTO ls_mara.
WRITE: / ls_mara-matnr, ls_mara-mtart, ls_mara-mbrsh.
ENDLOOP.
Contoh SELECT dengan WHERE
REPORT zsql_select_where.
DATA: lt_mara TYPE TABLE OF mara,
ls_mara TYPE mara.
SELECT * FROM mara
INTO TABLE lt_mara
WHERE mtart = 'FERT'.
LOOP AT lt_mara INTO ls_mara.
WRITE: / ls_mara-matnr, ls_mara-mtart.
ENDLOOP.
Contoh INSERT
Biasanya untuk INSERT
kita pakai custom table (Z-table).
Contoh berikut insert ke tabel zstudent
.
REPORT zsql_insert.
DATA: ls_stu TYPE zstudent.
ls_stu-id = '001'.
ls_stu-name = 'Andi'.
INSERT zstudent FROM ls_stu.
IF sy-subrc = 0.
WRITE: / 'Insert berhasil'.
ELSE.
WRITE: / 'Insert gagal'.
ENDIF.
Contoh UPDATE
REPORT zsql_update.
DATA: ls_stu TYPE zstudent.
ls_stu-id = '001'.
ls_stu-name = 'Budi'.
UPDATE zstudent SET name = ls_stu-name
WHERE id = ls_stu-id.
IF sy-subrc = 0.
WRITE: / 'Update berhasil'.
ELSE.
WRITE: / 'Update gagal'.
ENDIF.
Contoh DELETE
REPORT zsql_delete.
DELETE FROM zstudent WHERE id = '001'.
IF sy-subrc = 0.
WRITE: / 'Delete berhasil'.
ELSE.
WRITE: / 'Delete gagal'.
ENDIF.
Contoh JOIN
Kita bisa menggabungkan 2 tabel database, misalnya MARA
dan MARC
.
REPORT zsql_join.
DATA: lt_data TYPE TABLE OF mara,
ls_data TYPE mara.
SELECT a~matnr a~mtart b~werks
FROM mara AS a
INNER JOIN marc AS b
ON a~matnr = b~matnr
INTO TABLE @DATA(lt_result)
UP TO 10 ROWS.
LOOP AT lt_result INTO DATA(ls_result).
WRITE: / ls_result-matnr, ls_result-mtart, ls_result-werks.
ENDLOOP.
Kesimpulan
Dengan Open SQL, kita bisa berinteraksi langsung dengan database SAP
tanpa peduli apa DBMS yang digunakan.
Di level lanjut, Open SQL juga mendukung fitur-fitur modern seperti
INLINE DATA
, FILTER
, dan GROUP BY
.
👉 Lanjut ke: Belajar ABAP Part 7: ALV Report
Comments
Post a Comment