Tuesday, 23 September 2025

Belajar ABAP: Data Dictionary (DDIC) untuk Pemula

Belajar ABAP: Data Dictionary (DDIC) untuk Pemula

Belajar ABAP: Data Dictionary (DDIC) untuk Pemula

Sebelum melanjutkan ke level advance, penting bagi pemula memahami Data Dictionary (DDIC) di SAP ABAP. Data Dictionary adalah tempat di mana semua definisi struktur data disimpan dan dikelola, sehingga developer tidak perlu mendefinisikan ulang data secara manual di program.

Apa itu Data Dictionary?

Data Dictionary di ABAP berfungsi untuk mendefinisikan, mengelola, dan memelihara objek data di SAP. Semua tabel database, field, data element, domain, view, dan search help dikelola di sini.

Fungsi Utama Data Dictionary

  • Definisi tabel database (transparent, cluster, pooled).
  • Mendefinisikan domain (tipe data dan nilai valid).
  • Mendefinisikan data element (field dengan semantic meaning).
  • Membuat view untuk kombinasi tabel.
  • Membuat search help (F4 Help).
  • Memastikan konsistensi data di seluruh sistem.

Jenis Objek di Data Dictionary

  1. Domain → menentukan tipe data teknis (char, num, length, value range).
  2. Data Element → field dengan definisi semantik (misalnya Material Number, Customer ID).
  3. Table → menyimpan data di database (transparent, pooled, cluster).
  4. View → representasi virtual dari satu atau lebih tabel.
  5. Search Help → menyediakan fasilitas pencarian (F4 help).

Hubungan Domain, Data Element, dan Table

Supaya lebih jelas, berikut ilustrasi alur Data Dictionary di ABAP:

+---------+        +--------------+        +------------+
| Domain  | -----> | Data Element | -----> |   Table    |
+---------+        +--------------+        +------------+

Contoh:
Domain: ZSTU_ID (NUMC 5)
   ↓
Data Element: ZSTU_ID (Student ID)
   ↓
Table: ZSTUDENT (Field: ID menggunakan Data Element ZSTU_ID)

Atau bisa juga digambarkan dalam bentuk tabel hierarki:

Domain Data Element Table Field
ZSTU_ID
(NUMC 5)
ZSTU_ID
(Student ID)
ID (Primary Key)
ZSTU_NAME
(CHAR 50)
ZSTU_NAME
(Student Name)
NAME
ZSTU_AGE
(NUMC 2)
ZSTU_AGE
(Age)
AGE
ZSTU_CLASS
(CHAR 10)
ZSTU_CLASS
(Class Code)
CLASS

Contoh Membuat Tabel di Data Dictionary

Misalnya kita ingin membuat tabel ZSTUDENT untuk menyimpan data mahasiswa:


Tabel: ZSTUDENT
-----------------------------------------
Field        Data Element   Domain   Key
-----------------------------------------
ID           ZSTU_ID        NUMC(5)  X
NAME         ZSTU_NAME      CHAR(50)
AGE          ZSTU_AGE       NUMC(2)
CLASS        ZSTU_CLASS     CHAR(10)

Contoh Query ABAP dengan Tabel ZSTUDENT


REPORT zddic_example.

DATA: lt_student TYPE TABLE OF zstudent,
      ls_student TYPE zstudent.

" Ambil semua data mahasiswa
SELECT * FROM zstudent INTO TABLE lt_student.

" Tampilkan hasil
LOOP AT lt_student INTO ls_student.
  WRITE: / ls_student-id, ls_student-name, ls_student-age, ls_student-class.
ENDLOOP.

Perbandingan Tipe Table di Data Dictionary

Di SAP ABAP, ada tiga jenis tabel utama di Data Dictionary. Berikut perbandingannya:

Jenis Tabel Deskripsi Contoh Kapan Digunakan
Transparent Table 1:1 dengan tabel database fisik. Nama tabel di SAP sama dengan tabel di database. Digunakan untuk menyimpan data aplikasi. ZSTUDENT, MARA, BKPF - Data master (Material, Vendor, Customer).
- Data transaksi (Document Header, Item).
Pooled Table Banyak tabel logis di SAP digabung ke dalam satu tabel fisik di database. Cocok untuk tabel kecil dengan data administratif. ATAB, TSTC - Data konfigurasi atau kontrol.
- Tabel internal SAP yang tidak besar.
Cluster Table Beberapa tabel logis disimpan dalam satu tabel fisik berbasis cluster. Data disimpan dalam bentuk compressed. BSEG (Accounting Document Segment) - Data dengan volume besar.
- Data dengan hubungan kompleks (misalnya FI/CO).

Note: Di SAP versi terbaru (S/4HANA), Pooled dan Cluster table sudah tidak direkomendasikan lagi. Mayoritas objek disimpan sebagai Transparent Table agar lebih efisien dan kompatibel dengan HANA Database.

Keuntungan Menggunakan Data Dictionary

  • Semua developer pakai definisi data yang sama → konsistensi.
  • Mengurangi redudansi kode.
  • Integrasi otomatis dengan Open SQL.
  • Dapat digunakan di semua program ABAP.

Kesimpulan

Data Dictionary adalah pondasi utama di SAP ABAP. Tanpa pemahaman DDIC, developer akan kesulitan membuat tabel, field, maupun struktur data yang reusable di berbagai program.

👉 Lanjut ke: Belajar ABAP Part 8: Enhancement & BADI

Monday, 22 September 2025

Belajar ABAP Part 7: ALV Report (ABAP List Viewer)

Belajar ABAP Part 7: ALV Report (ABAP List Viewer)

Belajar ABAP Part 7: ALV Report (ABAP List Viewer)

Setelah mempelajari Part 6: Open SQL, sekarang kita masuk ke tahap yang lebih keren: menampilkan data dengan ALV Report. ALV (ABAP List Viewer) adalah fitur standar SAP untuk menampilkan tabel data dengan tampilan grid yang interaktif, lengkap dengan sorting, filter, dan export Excel.

Mengapa ALV?

  • Standar tampilan SAP → konsisten di semua modul.
  • Sudah built-in fitur filter, sort, dan export.
  • Menghemat waktu developer → tidak perlu coding manual untuk UI list.

Cara Membuat ALV Report

Ada 2 cara populer untuk membuat ALV:

  1. Menggunakan function module REUSE_ALV_GRID_DISPLAY (cara klasik).
  2. Menggunakan class CL_SALV_TABLE (cara modern, OOP style).

Contoh ALV dengan REUSE_ALV_GRID_DISPLAY


REPORT zalv_classic.

TABLES: mara.

DATA: lt_mara TYPE TABLE OF mara,
      ls_mara TYPE mara.

" Ambil data material
SELECT * FROM mara UP TO 20 ROWS INTO TABLE lt_mara.

" Tampilkan pakai ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_structure_name = 'MARA'
  TABLES
    t_outtab         = lt_mara
  EXCEPTIONS
    program_error    = 1
    OTHERS           = 2.

IF sy-subrc <> 0.
  WRITE: / 'Error ALV'.
ENDIF.

Hasilnya: tabel MARA ditampilkan dalam grid interaktif ALV.

Contoh ALV dengan CL_SALV_TABLE (Modern OOP)


REPORT zalv_salv.

DATA: lt_mara TYPE TABLE OF mara.

" Ambil data material
SELECT * FROM mara UP TO 20 ROWS INTO TABLE lt_mara.

" Buat ALV pakai class SALV
DATA(lo_alv) = cl_salv_table=>factory( lt_mara ).
lo_alv->display( ).

Keunggulan CL_SALV_TABLE:

  • Lebih singkat, lebih bersih (OOP style).
  • Mudah dikembangkan (misalnya custom fungsi, filter, dll).

Fitur Tambahan ALV

  • Export ke Excel/CSV.
  • Sort dan filter otomatis.
  • Subtotals dan totals.
  • Toolbar interaktif.

Kesimpulan

ALV adalah standar SAP untuk menampilkan data tabel. Untuk kode lama biasanya dipakai REUSE_ALV_GRID_DISPLAY, tapi untuk kode baru disarankan pakai CL_SALV_TABLE yang lebih modern.

👉 Lanjut ke: Belajar ABAP Part 8: Enhancement & BADI

Belajar ABAP Part 6: Open SQL (SELECT, INSERT, UPDATE, DELETE)

Belajar ABAP Part 6: Open SQL (SELECT, INSERT, UPDATE, DELETE)

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

Belajar ABAP Part 5: Internal Tables Lengkap (Standard, Sorted, Hashed)

Belajar ABAP Part 5: Internal Tables Lengkap (Standard, Sorted, Hashed)

Belajar ABAP Part 5: Internal Tables Lengkap (Standard, Sorted, Hashed)

Di Part 4: Modularisasi Program kita sudah bahas modularisasi. Sekarang kita akan mendalami Internal Table, struktur data paling penting di ABAP. Ada 3 jenis utama: Standard Table, Sorted Table, dan Hashed Table. Kita bedah satu-satu dengan contoh coding.

1. Standard Table

Standard Table adalah jenis default internal table. Data disimpan berurutan sesuai urutan APPEND. Cocok digunakan jika data tidak terlalu banyak dan pencarian dilakukan dengan index.


REPORT zstandard_table.

TYPES: BEGIN OF ty_emp,
         id   TYPE i,
         name TYPE string,
       END OF ty_emp.

DATA: lt_emp TYPE STANDARD TABLE OF ty_emp WITH DEFAULT KEY,
      ls_emp TYPE ty_emp.

" Isi data
ls_emp-id = 1. ls_emp-name = 'Andi'. APPEND ls_emp TO lt_emp.
ls_emp-id = 2. ls_emp-name = 'Budi'. APPEND ls_emp TO lt_emp.
ls_emp-id = 3. ls_emp-name = 'Citra'. APPEND ls_emp TO lt_emp.

" Loop data
WRITE: / '--- Standard Table ---'.
LOOP AT lt_emp INTO ls_emp.
  WRITE: / ls_emp-id, ls_emp-name.
ENDLOOP.

" Akses dengan index
READ TABLE lt_emp INTO ls_emp INDEX 2.
WRITE: / 'Index 2 adalah:', ls_emp-name.

Output: --- Standard Table --- 1 Andi 2 Budi 3 Citra Index 2 adalah: Budi

2. Sorted Table

Sorted Table otomatis menyimpan data dalam keadaan terurut berdasarkan key. Cocok untuk data besar karena pencarian lebih cepat daripada Standard Table.


REPORT zsorted_table.

TYPES: BEGIN OF ty_city,
         code TYPE i,
         name TYPE string,
       END OF ty_city.

DATA: lt_city TYPE SORTED TABLE OF ty_city
                WITH UNIQUE KEY code,
      ls_city TYPE ty_city.

" Isi data (acak urutannya)
ls_city-code = 30. ls_city-name = 'Surabaya'. APPEND ls_city TO lt_city.
ls_city-code = 10. ls_city-name = 'Jakarta'.  APPEND ls_city TO lt_city.
ls_city-code = 20. ls_city-name = 'Bandung'.  APPEND ls_city TO lt_city.

" Loop data akan otomatis urut berdasarkan KEY
WRITE: / '--- Sorted Table ---'.
LOOP AT lt_city INTO ls_city.
  WRITE: / ls_city-code, ls_city-name.
ENDLOOP.

" Akses dengan key
READ TABLE lt_city INTO ls_city WITH KEY code = 20.
WRITE: / 'Kota dengan code 20 adalah:', ls_city-name.

Output: --- Sorted Table --- 10 Jakarta 20 Bandung 30 Surabaya Kota dengan code 20 adalah: Bandung

3. Hashed Table

Hashed Table menyimpan data dengan struktur hash, mirip dictionary/map. Sangat cepat untuk pencarian berdasarkan key, tapi tidak bisa diakses dengan index.


REPORT zhashed_table.

TYPES: BEGIN OF ty_mat,
         matnr TYPE i,
         desc  TYPE string,
       END OF ty_mat.

DATA: lt_mat TYPE HASHED TABLE OF ty_mat
                WITH UNIQUE KEY matnr,
      ls_mat TYPE ty_mat.

" Isi data
ls_mat-matnr = 500. ls_mat-desc = 'Material A'. APPEND ls_mat TO lt_mat.
ls_mat-matnr = 200. ls_mat-desc = 'Material B'. APPEND ls_mat TO lt_mat.
ls_mat-matnr = 300. ls_mat-desc = 'Material C'. APPEND ls_mat TO lt_mat.

" Loop data (tidak berurutan karena sifat hash)
WRITE: / '--- Hashed Table ---'.
LOOP AT lt_mat INTO ls_mat.
  WRITE: / ls_mat-matnr, ls_mat-desc.
ENDLOOP.

" Akses dengan key
READ TABLE lt_mat INTO ls_mat WITH KEY matnr = 300.
WRITE: / 'Material 300 adalah:', ls_mat-desc.

Output (urutan bisa berbeda): --- Hashed Table --- 200 Material B 300 Material C 500 Material A Material 300 adalah: Material C

Perbandingan 3 Jenis Internal Table

Jenis Kelebihan Kekurangan Cocok untuk
Standard Table Mudah digunakan, akses via index Pencarian lambat untuk data besar Data kecil, sederhana
Sorted Table Data otomatis terurut, pencarian cepat Butuh key untuk akses efisien Data besar yang sering dicari berdasarkan key
Hashed Table Pencarian super cepat via key Tidak bisa pakai index, urutan tidak terjamin Data sangat besar, lookup by key

Kesimpulan

Internal Table adalah pondasi utama ABAP. Pilih jenis sesuai kebutuhan:

  • Pakai Standard Table untuk data kecil/sederhana.
  • Pakai Sorted Table untuk data besar yang perlu urut + pencarian cepat.
  • Pakai Hashed Table untuk pencarian super cepat berdasarkan key.

👉 Lanjut ke: Belajar ABAP Part 6: Open SQL di ABAP

Belajar ABAP Part 5: Internal Tables & Work Area

Belajar ABAP Part 5: Internal Tables & Work Area

Belajar ABAP Part 5: Internal Tables & Work Area

Setelah membahas Part 4: Modularisasi Program, sekarang kita masuk ke salah satu konsep terpenting di ABAP yaitu Internal Table & Work Area. Internal table digunakan untuk menyimpan banyak data di memory, sementara Work Area dipakai sebagai wadah untuk membaca/menulis data baris demi baris.

Apa itu Internal Table?

Internal Table adalah tabel sementara yang hanya ada di memory saat program berjalan. Biasanya dipakai untuk:

  • Menyimpan hasil query dari database.
  • Melakukan perhitungan atau transformasi data.
  • Mengolah data sebelum ditampilkan ke user.

Jenis Internal Table

  1. Standard Table: urutan sesuai data dimasukkan.
  2. Sorted Table: otomatis terurut berdasarkan key.
  3. Hashed Table: akses cepat menggunakan key.

Contoh Membuat Internal Table & Work Area


REPORT zitab_example.

TYPES: BEGIN OF ty_student,
         id   TYPE i,
         name TYPE string,
       END OF ty_student.

DATA: lt_students TYPE TABLE OF ty_student, "Internal Table
      ls_student TYPE ty_student.           "Work Area

" Tambah data ke internal table
ls_student-id = 1.
ls_student-name = 'Andi'.
APPEND ls_student TO lt_students.

ls_student-id = 2.
ls_student-name = 'Budi'.
APPEND ls_student TO lt_students.

ls_student-id = 3.
ls_student-name = 'Citra'.
APPEND ls_student TO lt_students.

" Baca data dengan LOOP
LOOP AT lt_students INTO ls_student.
  WRITE: / 'ID:', ls_student-id, 'Nama:', ls_student-name.
ENDLOOP.

Output: ID: 1 Nama: Andi ID: 2 Nama: Budi ID: 3 Nama: Citra

Perintah Dasar Internal Table

  • APPEND → menambah data ke internal table.
  • LOOP AT → membaca data baris demi baris.
  • READ TABLE → membaca data berdasarkan index atau key.
  • MODIFY → mengubah data di internal table.
  • DELETE → menghapus data.
  • CLEAR → membersihkan isi variabel/work area.

Contoh READ, MODIFY, DELETE


REPORT zitab_ops.

TYPES: BEGIN OF ty_num,
         num TYPE i,
       END OF ty_num.

DATA: lt_nums TYPE TABLE OF ty_num,
      ls_num TYPE ty_num.

DO 5 TIMES.
  ls_num-num = sy-index.
  APPEND ls_num TO lt_nums.
ENDDO.

" READ data ke-3
READ TABLE lt_nums INTO ls_num INDEX 3.
WRITE: / 'Data index 3:', ls_num-num.

" MODIFY data ke-2
ls_num-num = 99.
MODIFY lt_nums FROM ls_num INDEX 2.

" DELETE data ke-4
DELETE lt_nums INDEX 4.

" LOOP hasil akhir
WRITE: / '--- Data setelah update ---'.
LOOP AT lt_nums INTO ls_num.
  WRITE: / ls_num-num.
ENDLOOP.

Output: Data index 3: 3 --- Data setelah update --- 1 99 3 5

Kesimpulan

Internal Table & Work Area adalah fondasi penting dalam ABAP. Hampir semua program yang berhubungan dengan database atau report akan memanfaatkan internal table untuk menyimpan dan mengolah data.

👉 Lanjut ke: Belajar ABAP Part 6: Open SQL di ABAP

👉 Baca Juga: Internal Table Lanjutan

👉 Baca Juga: Belajar Data Dictionary

Belajar ABAP Part 4: Modularisasi Program (FORM, Function Module, Include)

Belajar ABAP Part 4: Modularisasi Program (FORM, Function Module, Include)

Belajar ABAP Part 4: Modularisasi Program (FORM, Function Module, Include)

Setelah mempelajari Part 3: Control Statements, sekarang kita akan masuk ke konsep penting berikutnya yaitu Modularisasi Program. Modularisasi digunakan agar program lebih terstruktur, mudah dibaca, serta kode bisa dipakai ulang (reusable).

Kenapa Modularisasi Penting?

  • Memecah program besar menjadi bagian kecil.
  • Meningkatkan keterbacaan kode.
  • Memudahkan maintenance.
  • Memungkinkan penggunaan ulang fungsi yang sama di berbagai program.

1. FORM dan PERFORM

FORM digunakan untuk membuat subroutine, dan dipanggil dengan PERFORM.


REPORT zform_example.

DATA gv_name TYPE string.

gv_name = 'Andi'.

PERFORM display_name.

FORM display_name.
  WRITE: / 'Hello,', gv_name.
ENDFORM.

Output: Hello, Andi

2. Function Module

Function Module (FM) adalah blok modular yang disimpan di Function Group dan bisa dipanggil dari program lain.

Contoh pembuatan Function Module: Z_HELLO_WORLD


FUNCTION z_hello_world.
*"----------------------------------------------------------------------
*"*"Lokasi: Function Group ZFG_HELLO
*"----------------------------------------------------------------------
  WRITE: / 'Hello from Function Module!'.
ENDFUNCTION.

Pemanggilan Function Module di program:


REPORT zcall_fm.

CALL FUNCTION 'Z_HELLO_WORLD'.

Output: Hello from Function Module!

3. Include Program

Include digunakan untuk memecah kode menjadi file terpisah. Biasanya dipakai untuk menyimpan deklarasi data, form, atau implementasi logika tertentu.


" File utama: ZINCLUDE_MAIN
REPORT zinclude_main.

INCLUDE zinclude_sub.

START-OF-SELECTION.
  PERFORM say_hello.

" File include: ZINCLUDE_SUB
FORM say_hello.
  WRITE: / 'Hello from Include!'.
ENDFORM.

Output: Hello from Include!

Kesimpulan

Dengan modularisasi, program ABAP menjadi lebih rapi dan terstruktur. FORM cocok untuk subroutine sederhana, Function Module untuk logika reusable lintas program, dan Include untuk memisahkan kode ke file terpisah.

👉 Lanjut ke: Belajar ABAP Part 5: Internal Tables & Work Area

Belajar ABAP Part 3: Control Statements (IF, CASE, LOOP, WHILE)

Belajar ABAP Part 3: Control Statements (IF, CASE, LOOP, WHILE)

Belajar ABAP Part 3: Control Statements (IF, CASE, LOOP, WHILE)

Pada Part 2: Dasar-Dasar Pemrograman ABAP kita sudah membahas variabel, tipe data, dan perintah WRITE. Sekarang kita masuk ke Control Statements, yaitu perintah yang mengatur alur program di ABAP.

1. IF - ELSE - ENDIF

Digunakan untuk percabangan logika.


REPORT zif_example.

DATA gv_score TYPE i VALUE 80.

IF gv_score >= 75.
  WRITE: 'Lulus'.
ELSE.
  WRITE: 'Tidak Lulus'.
ENDIF.

Output: Lulus

2. CASE - WHEN - ENDCASE

Alternatif dari IF ketika ada banyak kondisi.


REPORT zcase_example.

DATA gv_grade TYPE c VALUE 'B'.

CASE gv_grade.
  WHEN 'A'.
    WRITE: 'Sangat Baik'.
  WHEN 'B'.
    WRITE: 'Baik'.
  WHEN 'C'.
    WRITE: 'Cukup'.
  WHEN OTHERS.
    WRITE: 'Tidak Diketahui'.
ENDCASE.

Output: Baik

3. LOOP - ENDLOOP

Digunakan untuk membaca isi internal table.


REPORT zloop_example.

DATA: lt_numbers TYPE TABLE OF i,
      lv_num     TYPE i.

DO 5 TIMES.
  APPEND sy-index TO lt_numbers.
ENDDO.

LOOP AT lt_numbers INTO lv_num.
  WRITE: / 'Angka:', lv_num.
ENDLOOP.

Output: Angka: 1 Angka: 2 Angka: 3 Angka: 4 Angka: 5

4. WHILE - ENDWHILE

Perulangan berdasarkan kondisi.


REPORT zwhile_example.

DATA gv_counter TYPE i VALUE 1.

WHILE gv_counter <= 3.
  WRITE: / 'Counter:', gv_counter.
  gv_counter = gv_counter + 1.
ENDWHILE.

Output: Counter: 1 Counter: 2 Counter: 3

5. EXIT, CONTINUE, CHECK

Statement tambahan untuk mengontrol alur loop.


REPORT zloop_control.

DATA: lt_data TYPE TABLE OF i,
      lv_val  TYPE i.

DO 5 TIMES.
  APPEND sy-index TO lt_data.
ENDDO.

LOOP AT lt_data INTO lv_val.
  IF lv_val = 2.
    CONTINUE. "skip nilai 2
  ENDIF.

  IF lv_val = 4.
    EXIT. "berhenti di angka 4
  ENDIF.

  WRITE: / 'Value:', lv_val.
ENDLOOP.

Output: Value: 1 Value: 3

Kesimpulan

Control statements adalah fondasi penting dalam pemrograman ABAP. Dengan memahami IF, CASE, LOOP, dan WHILE, kamu bisa mengatur alur program sesuai logika bisnis yang dibutuhkan.

👉 Lanjut ke: Belajar ABAP Part 4: Modularisasi Program (FORM, Function Module, Include)

SAP ABAP - Upload Count PID dengan BAPI

Upload Count PID dengan BAPI di ABAP — Contoh Program YMMC100 Upload Count PID dengan BAPI di ABAP — Progr...