ABAP Data Dictionary (DDIC)

Target: Pemula yang ingin menguasai pemodelan database, metadata, dan integritas data pada sistem SAP ERP (ECC & S/4HANA). Versi: SAP NetWeaver AS ABAP 7.40+ / 7.50+ & SAP S/4HANA (T-Code SE11, SE16N, SM30, SM12). Prasyarat: Telah memahami konsep dasar arsitektur SAP dan tipe data bawaan pada modul ABAP Dasar.


Gambaran Umum

ABAP Data Dictionary (DDIC) adalah repositori metadata terpusat di dalam SAP NetWeaver Application Server yang dikelola melalui Transaction Code SE11. Berbeda dengan basis data relasional konvensional di mana tabel dibuat langsung melalui perintah DDL (CREATE TABLE), sistem SAP mengisolasi seluruh pendefinisian database melalui lapisan abstraksi DDIC.

Ketika seorang developer mendefinisikan tabel di DDIC, SAP secara otomatis:

  1. Menghasilkan struktur fisik tabel pada database underlying (SAP HANA, Oracle, DB2, atau SQL Server) secara independen.
  2. Menyediakan teks antarmuka (UI field labels) multibahasa tanpa perlu hardcoding di program aplikasi.
  3. Menegakkan integritas referensial data (foreign key) dan validasi domain secara konsisten di seluruh modul SAP.
  4. Mengelola penguncian data (concurrency locking) dan mekanisme caching di memori server (database buffering).

Cara Belajar

🟒 Fundamental
β†’ Pahami 3 lapisan pemodelan data (Domain β†’ Data Element β†’ Table Field), Transparent Table, dan Primary Key MANDT.
 
🟑 Lanjutan
β†’ Kuasai Technical Settings (Data Class & Size Category), Foreign Key Relationships, Search Help (F4), dan Lock Objects (SM12).
 
πŸ› οΈ Praktik
β†’ Bangun tabel database kustom Z-Table lengkap dengan Table Maintenance Generator (TMG) yang dapat diakses via T-Code SM30.

Mental model hirarki pemodelan data di ABAP Dictionary:

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ 1. Domain (Karakteristik Teknis Murni)                 β”‚
       β”‚    - Tipe data teknis (CHAR, NUMC, DATS, CURR, DEC)    β”‚
       β”‚    - Panjang karakter (Length) & Desimal               β”‚
       β”‚    - Nilai valid tetap (Fixed Values / Dropdown)       β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                   β”‚ Menjadi basis teknis untuk
                                   β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ 2. Data Element (Semantik Bisnis & Antarmuka GUI)      β”‚
       β”‚    - Label teks UI (Short 10, Med 20, Long 40, Header) β”‚
       β”‚    - Parameter ID (SPA/GPA Memory)                     β”‚
       β”‚    - Dokumentasi F1 Help pengguna                      β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                   β”‚ Digunakan sebagai kolom pada
                                   β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ 3. Table Field (Struktur Tabel Database / SE11)        β”‚
       β”‚    - Menampung nama kolom (Field Name)                 β”‚
       β”‚    - Menandai Primary Key                              β”‚
       β”‚    - Menghubungkan Foreign Key & Search Help           β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                   β”‚ Diterjemahkan oleh Database Interface
                                   β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ 4. Physical Database Layer (SAP HANA / AnyDB)          β”‚
       β”‚    - Tabel fisik di database underlying                β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Hafalan:

SE11           β†’ T-Code utama ABAP Dictionary untuk mengelola Domain, Data Element, dan Tabel
Domain         β†’ Definisi teknis murni (tipe dasar, panjang memori, nilai valid/fixed values)
Data Element   β†’ Definisi makna bisnis (label teks UI untuk layar SAP GUI, bantuan F1)
MANDT          β†’ Kolom Primary Key pertama wajib pada tabel Client-Dependent
Technical Set. β†’ Pengaturan memori database (Data Class & Size Category via SE13)
Foreign Key    β†’ Penegakan integritas data input terhadap Check Table
TMG            β†’ Table Maintenance Generator: layar entri data otomatis via T-Code SM30

Daftar Isi

🟒 Fundamental

  1. Pengenalan ABAP Dictionary & T-Code SE11
  2. Tiga Lapisan Pemodelan Data (Domain, Data Element, Field)
  3. Mendefinisikan Domain (Tipe Teknis & Fixed Values)
  4. Mendefinisikan Data Element (Makna Bisnis & Field Labels)
  5. Tabel Database Transparan (Transparent Tables)
  6. Field MANDT & Konsep Client-Dependent
  7. Technical Settings (Data Class & Size Category)

🟑 Lanjutan

  1. Database Buffering & Logging Perubahan Data
  2. Foreign Key & Integritas Relasional (Check Table)
  3. Struktur (Structures) & Table Types
  4. Search Help (F4 Input Help)
  5. Lock Objects (Mekanisme Penguncian Data & SM12)
  6. Table Maintenance Generator (TMG & SM30)
  7. Database Views di DDIC

πŸ› οΈ Praktik

  1. Mini Project: Membangun Master Data Pelanggan

πŸ“š Ringkasan & Referensi

  1. Peta Ingatan & Ringkasan
  2. Cheat Code DDIC 10 Detik
  3. Urutan Belajar Selanjutnya
  4. Referensi Resmi

1. 🟒 Pengenalan ABAP Dictionary & T-Code SE11

Konsep

Di database tradisional seperti PostgreSQL atau MySQL, skema tabel dibuat langsung menggunakan script SQL. Namun dalam ekosistem SAP, seluruh objek database dikelola melalui ABAP Dictionary via Transaction Code SE11.

ABAP Dictionary bertindak sebagai single source of truth untuk seluruh struktur data di sistem SAP.

               Pengembang ABAP (T-Code SE11)
                             β”‚
                             β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚  ABAP Data Dictionary     β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                             β–Ό
   Program Aplikasi ABAP          Database Interface
   - Type Checking Kompilasi      - Menghasilkan DDL native
   - Label Input Otomatis         - Mengelola Sinkronisasi
   - Validasi Input F4 / F1       - Mengatur Caching Memori
                                            β”‚
                                            β–Ό
                                  SAP HANA / Database Fisik

Mengapa ABAP Dictionary Sangat Penting?

  1. Database Independence: Program ABAP yang Anda tulis tidak terikat pada satu vendor database tertentu (dapat berjalan di SAP HANA, Oracle, DB2, maupun SQL Server tanpa mengubah kode).
  2. Kamus Multibahasa Terpusat: Label kolom (misal: β€œNomor Pelanggan” dalam Bahasa Indonesia, β€œCustomer Number” dalam Bahasa Inggris) disimpan di DDIC. Layar SAP GUI otomatis menampilkan bahasa yang sesuai dengan preferensi login user.
  3. Pemeriksaan Konsistensi Terpadu: Jika struktur tabel diubah, kompiler ABAP langsung mendeteksi seluruh program yang terpengaruh dan menandainya untuk kompilasi ulang.

2. 🟒 Tiga Lapisan Pemodelan Data (Domain, Data Element, Field)

Konsep

Salah satu konsep paling elegan namun kerap membingungkan pemula di SAP adalah pemisahan antara Domain, Data Element, dan Table Field.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ DOMAIN: ZDM_STATUS                                     β”‚
β”‚ β†’ Karakteristik teknis: Tipe CHAR, Panjang 1           β”‚
β”‚ β†’ Fixed Values: 'A' = Aktif, 'I' = Inaktif             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ Digunakan oleh
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ DATA ELEMENT: ZDE_CUST_STATUS                          β”‚
β”‚ β†’ Makna bisnis: Status Akun Pelanggan                 β”‚
β”‚ β†’ UI Label: "Status Pelanggan"                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ Digunakan pada tabel
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ TABLE FIELD: ZTCUST-STATUS                             β”‚
β”‚ β†’ Kolom konkret pada tabel fisik ZTCUST                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Perbedaan Peran Ketiganya

LapisanFokus UtamaContoh ObjekYang Didefinisikan
DomainKarakteristik TeknisZDM_JUMLAH_BARANGTipe data teknis (INT4), panjang digit, format desimal, fixed values (daftar pilihan nilai valid).
Data ElementMakna Bisnis (Semantics)ZDE_QTY_PESANANLabel teks UI untuk layar GUI (Short, Medium, Long, Header), dokumentasi tombol F1 (Help text), Parameter ID.
Table FieldImplementasi Fisik TabelKolom QTY pada tabel ZTSALESPosisi kolom dalam tabel database, apakah merupakan Primary Key, aturan Foreign Key, dan nilai default.

TIP

Prinsip Reusabilitas: Satu Domain dapat digunakan oleh banyak Data Element yang berbeda maknanya namun memiliki spesifikasi teknis yang sama. Misalnya, satu domain bertipe CHAR 10 dapat digunakan oleh Data Element ZDE_NO_FAKTUR, ZDE_NO_SURAT_JALAN, dan ZDE_NO_PESANAN.


3. 🟒 Mendefinisikan Domain (Tipe Teknis & Fixed Values)

Konsep

Domain mendefinisikan batas-batas nilai teknis dari suatu data di level memori terendah.

Properti utama Domain:

  1. Data Type: Pilihan tipe DDIC bawaan SAP (misal: CHAR, NUMC, DATS, TIMS, DEC, CURR).
  2. Length: Jumlah maksimal karakter atau digit.
  3. Decimals: Jumlah angka di belakang koma (khusus tipe numerik desimal seperti DEC atau CURR).
  4. Value Range (Fixed Values): Daftar nilai valid diskret yang diizinkan masuk ke sistem. Nilai ini secara otomatis akan menjadi dropdown list saat pengguna menginput data di layar SAP GUI!

Tipe Data DDIC Populer

Tipe DDICArtiKeterangan
CHARCharacter StringTeks alfanumerik panjang tetap.
NUMCNumeric CharacterKarakter teks khusus angka; mempertahankan angka nol di depan (leading zeros).
DATSDateTanggal standar kalender (format YYYYMMDD, panjang 8).
TIMSTimeWaktu sistem (format HHMMSS, panjang 6).
DECCounter or AmountAngka desimal dengan penentuan presisi koma tetap.
CURRCurrency FieldNilai mata uang finansial; wajib dipasangkan dengan field referensi mata uang (CUKY).

Contoh Pembuatan Domain di SE11

Nama Domain : ZDM_GENDER
Data Type   : CHAR
Length      : 1
 
Value Range (Fixed Values):
----------------------------------
Fixed Value | Description
----------------------------------
L           | Laki-laki
P           | Perempuan

Ketika kolom tabel menggunakan domain ZDM_GENDER, pengguna tidak akan bisa mengisi sembarang karakter selain 'L' atau 'P' karena divalidasi langsung oleh sistem.


4. 🟒 Mendefinisikan Data Element (Makna Bisnis & Field Labels)

Konsep

Data Element memberikan konteks bisnis kepada Domain teknis. Tanpa Data Element, sistem SAP tidak tahu teks apa yang harus dicetak di atas kolom tabel atau di samping kotak isian form.

Properti Field Labels pada Data Element

SAP GUI dan SAP Fiori memerlukan teks label dalam berbagai ukuran agar tampilan UI responsif dan tidak terpotong saat ruang layar menyempit:

Tipe LabelMaks. PanjangContoh Isi Label
Short10 karakterStatus Pel
Medium20 karakterStatus Pelanggan
Long40 karakterStatus Akun Pelanggan
Heading55 karakterStatus Pelanggan

Parameter ID (Memory ID)

Pada Data Element, Anda dapat menentukan Parameter ID (misal: KUN untuk Customer, MAT untuk Material). Fitur ini membuat SAP GUI mengingat nomor dokumen atau ID terakhir yang Anda buka di satu transaksi, lalu otomatis mengisikannya ke transaksi berikutnya tanpa perlu mengetik ulang (Set/Get Parameter Memory).


5. 🟒 Tabel Database Transparan (Transparent Tables)

Konsep

Transparent Table adalah jenis tabel database paling umum di SAP. Dinamakan β€œtransparan” karena terdapat relasi 1:1 antara definisi tabel di ABAP Dictionary dengan tabel fisik di basis data underlying (memiliki nama tabel dan kolom yang persis sama di SAP HANA / Oracle).

Langkah Pembuatan Tabel Transparan di SE11

  1. Buka T-Code SE11, pilih radio button Database table, masukkan nama tabel kustom (contoh: ZTCUST_MASTER), lalu klik Create.
  2. Masukkan deskripsi singkat (Short Text).
  3. Pada tab Delivery and Maintenance:
    • Delivery Class: Pilih A (Application table: data master dan transaksi bisnis).
    • Data Browser/Table View Maint.: Pilih Display/Maintenance Allowed agar data tabel dapat dilihat di SE16N dan dapat dibuatkan layar TMG di SM30.
  4. Pada tab Fields: Definisikan kolom-kolom tabel, tentukan field mana yang menjadi Primary Key, dan pasangkan dengan Data Element yang sesuai.
  5. Klik menu Technical Settings (Ctrl+Shift+F9) untuk menentukan alokasi memori database.
  6. Klik ikon Activate (Ctrl+F3). SAP akan langsung membuat tabel fisik tersebut di database server.

6. 🟒 Field MANDT & Konsep Client-Dependent

Konsep

Sistem SAP memisahkan data bisnis antar entitas perusahaan di dalam satu server menggunakan nomor Client (misal: Client 100 untuk operasional PT A, Client 200 untuk PT B).

Agar data transaksi tidak bocor atau tercampur antar Client:

Aturan Wajib: Field pertama pada setiap tabel transparan data bisnis WAJIB bernama MANDT, bertipe Data Element bawaan MANDT, dan dicentang sebagai Primary Key!

Struktur Field Tabel Transparan:
-------------------------------------------------------------------------
Field       | Key | Initial | Data Element | Tipe | Pjg | Keterangan
-------------------------------------------------------------------------
MANDT       |  X  |    X    | MANDT        | CLNT |  3  | Nomor Client
CUST_ID     |  X  |    X    | ZDE_CUST_ID  | CHAR | 10  | ID Pelanggan
CUST_NAME   |     |         | ZDE_CUST_NAME| CHAR | 40  | Nama Pelanggan
-------------------------------------------------------------------------

Cara Kerja Isolasi Otomatis

Ketika program ABAP menjalankan query Open SQL:

SELECT * FROM ztcust_master INTO TABLE @DATA(lt_cust).

Database Interface SAP akan secara otomatis menambahkan klausa filter client aktif di belakang layar:

-- Diterjemahkan otomatis ke Database fisik:
SELECT * FROM ZTCUST_MASTER WHERE MANDT = '100';

Dengan mekanisme ini, developer tidak perlu khawatir datanya tertukar dengan unit bisnis lain.


7. 🟒 Technical Settings (Data Class & Size Category)

Konsep

Sebelum tabel diaktifkan di SE11, Anda diwajibkan mengisi Technical Settings (dapat juga diakses langsung via T-Code SE13). Pengaturan ini menentukan bagaimana database mengalokasikan ruang memori (tablespace) untuk tabel tersebut.

1. Data Class (Klasifikasi Jenis Data)

Data ClassTipe Data yang DitampungKarakteristik Perubahan Data
APPL0Master DataData induk yang jarang berubah tetapi sering dibaca (contoh: Master Pelanggan, Master Material, Vendor).
APPL1Transaction DataData transaksi yang sering bertambah dan berubah dengan cepat (contoh: Sales Order, Faktur Tagihan, Purchase Order).
APPL2Organizational / CustomizingKonfigurasi sistem dan parameter aplikasi perusahaan; diubah hanya saat proses setup sistem.

2. Size Category (Estimasi Jumlah Baris Data)

Size Category menentukan ukuran extent awal memori yang dialokasikan oleh database engine:

Size CategoryPerkiraan Jumlah Baris Record Data
00 s/d 9.300 record data
19.300 s/d 37.000 record data
237.000 s/d 150.000 record data
3150.000 s/d 600.000 record data
4600.000 s/d 2.400.000 record data

Best Practice

  • Selalu pilih APPL0 untuk tabel master dan APPL1 untuk tabel transaksi.
  • Jangan asal memilih Size Category terbesar (4) jika tabel hanya akan menampung ratusan data konfigurasi lokal, karena akan memboroskan alokasi blok memori database (tablespace fragmentation).

8. 🟑 Database Buffering & Logging Perubahan Data

Konsep

Database buffering adalah mekanisme di mana Application Server menyimpan salinan isi tabel ke dalam memori RAM lokal server (Shared Memory Buffer) guna menghindari frekuensi pemanggilan query I/O ke database fisik.

Jenis-Jenis Buffering di DDIC

Pilihan Buffering di Technical Settings:
β”œβ”€β”€ 1. Buffering not allowed (Default untuk tabel transaksi bervolume tinggi)
└── 2. Buffering allowed
       β”œβ”€β”€ Single-record buffering (Hanya me-cache record yang pernah dibaca via WHERE key)
       β”œβ”€β”€ Generic buffering (Me-cache sekumpulan record berdasarkan subset key)
       └── Full buffering (Membaca dan menyimpan SELURUH isi tabel ke RAM)

Kapan Menggunakan Full Buffering?

Gunakan Full Buffering hanya untuk tabel kecil (kurang dari 1.000 baris) yang datanya bersifat statis dan sangat sering dibaca oleh ribuan user (contoh: Tabel Kode Pos, Tabel Kode Mata Uang, Tabel Status Transaksi).

Kesalahan Umum

❌ Mengaktifkan Buffering pada tabel transaksi penjualan (APPL1).

Karena tabel transaksi sangat sering diperbarui (INSERT, UPDATE). Setiap kali ada update, Application Server harus membuang dan me-reload cache memori (buffer invalidation), yang justru memperlambat performa sistem secara drastis.

βœ… Tetapkan opsi Buffering not allowed untuk seluruh tabel transaksi aktif.

Alasannya, integritas data transaksi real-time langsung dijamin oleh database server tanpa risiko membaca data stale di memori lokal.


9. 🟑 Foreign Key & Integritas Relasional (Check Table)

Konsep

Dalam SAP, Foreign Key digunakan untuk menghubungkan satu field pada tabel input dengan field kunci pada tabel master lain yang disebut Check Table.

Jika sebuah field dipasangkan Foreign Key:

  • Sistem SAP GUI secara otomatis memblokir nilai input yang tidak terdaftar di Check Table.
  • Sistem secara otomatis menyediakan tombol dropdown pencarian (F4 Input Help) yang bersumber dari tabel induk tersebut.
Tabel Transaksi: ZTSALES_ORDER               Tabel Check: T005 (Master Negara)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Field        | Nilai          β”‚            β”‚ COUNTRY_CODE | NAMA_NEGARA    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€            β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ SO_NUMBER    | 50000001       β”‚            β”‚ ID           | Indonesia      β”‚
β”‚ CUSTOMER     | CUST-100       β”‚            β”‚ JP           | Jepang         β”‚
β”‚ COUNTRY      | ID ────────────┼───────────>β”‚ US           | Amerika Serikatβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Jika pengguna mencoba memasukkan nilai 'XX', layar SAP GUI akan langsung menampilkan pesan error: β€œEntry XX does not exist in T005”.

Kardinalitas Relasi (Cardinality)

Kardinalitas mendefinisikan hubungan kuantitas data:

  • 1 : 1 : Satu record di tabel transaksi berkorespondensi tepat ke satu record di check table.
  • 1 : CN : Satu record di check table dapat diasosiasikan ke 0 atau banyak record di tabel transaksi (paling umum).

10. 🟑 Struktur (Structures) & Table Types

Konsep

Selain tabel database fisik, ABAP Dictionary juga digunakan untuk mendefinisikan tipe data internal yang hanya hidup di memori runtime program:

1. Structure (SE11 Data type Structure)

Struktur adalah cetak biru susunan field tanpa alokasi tabel fisik di database. Digunakan sebagai tipe data untuk Work Area di dalam program ABAP:

" Menggunakan struktur DDIC ZSTR_ALAMAT sebagai tipe data variabel lokal
DATA ls_alamat TYPE zstr_alamat.
 
ls_alamat-jalan = 'Jl. MH Thamrin No. 1'.
ls_alamat-kota  = 'Jakarta Pusat'.

2. Table Type (SE11 Data type Table type)

Table Type mendefinisikan tipe data untuk Internal Table (kumpulan baris dinamis di memori) yang merujuk pada struktur tertentu.

3. Append Structure (Ekstensi Standar SAP yang Aman)

Jika perusahaan Anda membutuhkan kolom tambahan pada tabel standar bawaan SAP (misal: menambahkan kolom NO_KTP pada tabel master vendor standar LFA1):

IMPORTANT

Dilarang memodifikasi langsung tabel standar SAP! Gunakan fitur Append Structure di SE11. Append Structure memungkinkan Anda menyisipkan kolom kustom (Z...) di bagian akhir tabel standar secara aman tanpa merusak struktur bawaan saat SAP melakukan update versi (Clean Core principle).


11. 🟑 Search Help (F4 Input Help)

Konsep

Ketika pengguna berada di layar input dan menekan tombol keyboard F4, sebuah jendela pop-up dialog pencarian data akan muncul. Jendela pencarian ini dikonfigurasi melalui objek Search Help di SE11.

Jenis Search Help di DDIC:
β”œβ”€β”€ 1. Elementary Search Help (Pencarian berbasis satu tabel query tunggal)
└── 2. Collective Search Help (Menggabungkan beberapa Elementary Search Help menjadi tab pilihan)

Parameter Search Help

  • IMP (Import): Mengirim data dari layar form ke Search Help untuk menyaring hasil pencarian awal.
  • EXP (Export): Mengirim data record yang dipilih pengguna dari hasil pencarian kembali ke kolom form layar.

12. 🟑 Lock Objects (Mekanisme Penguncian Data & SM12)

Konsep

Dalam sistem ERP berskala ribuan user yang bekerja bersamaan, risiko dua pengguna mengedit dokumen penjualan yang sama pada detik yang sama (concurrency conflict) harus dicegah.

SAP menangani konkurensi ini menggunakan Lock Objects via T-Code SE11.

Penamaan & Mekanisme Otomatis

  • Nama Lock Object WAJIB diawali dengan huruf EZ_ atau EY_ (misal: EZ_TCUST).
  • Ketika Lock Object diaktifkan, sistem SAP secara otomatis men-generate dua Function Module penangan kunci:
    1. ENQUEUE_<Lock_Object_Name>: Untuk memasang kunci sebelum membaca/mengedit data.
    2. DEQUEUE_<Lock_Object_Name>: Untuk melepaskan kunci setelah transaksi selesai (COMMIT).
User A membuka data pelanggan CUST-01
         β”‚
         β–Ό
Panggil Function: ENQUEUE_EZ_TCUST( iv_cust_id = 'CUST-01' )
         β”‚
         β–Ό
SAP Enqueue Server mencatat kunci di tabel kunci memori
         β”‚
         β”œβ”€β”€β”€ Jika User B mencoba mengedit CUST-01 pada saat yang sama:
         β”‚    ENQUEUE_EZ_TCUST menghasilkan sy-subrc <> 0 (Ditolak / Terkunci!)
         β”‚
User A selesai mengedit dan menekan Save
         β”‚
         β–Ό
Panggil Function: DEQUEUE_EZ_TCUST( iv_cust_id = 'CUST-01' )
         β”‚
         β–Ό
Kunci dilepas, data kembali dapat diakses user lain

TIP

Administrator sistem dapat melihat dan mengelola daftar transaksi yang sedang terkunci di seluruh server menggunakan T-Code SM12 (Lock Entries Overview).


13. 🟑 Table Maintenance Generator (TMG & SM30)

Konsep

Salah satu fitur paling produktif di SAP adalah Table Maintenance Generator (TMG). Dengan TMG, Anda dapat membuat aplikasi CRUD (Create, Read, Update, Delete) lengkap dengan antarmuka grafis dalam hitungan detik tanpa menulis satu baris kode ABAP pun!

Langkah Membuat TMG di SE11

  1. Buka tabel kustom Anda di SE11 (pastikan di tab Delivery and Maintenance opsi Data Browser/Table View Maint. diset ke Display/Maintenance Allowed).
  2. Klik menu navigasi atas: Utilities Table Maintenance Generator.
  3. Tentukan parameter:
    • Authorization Group: &NC& (tanpa proteksi otorisasi khusus untuk pengujian lokal).
    • Function Group: Masukkan nama Function Group penampung (contoh: ZFG_CUST).
    • Maintenance Type:
      • One Step: Seluruh data ditampilkan dalam satu layar tabel tabular (Overview Screen).
      • Two Step: Memiliki layar ringkasan (Overview) dan layar rincian per record (Detail Screen).
    • Maintenance Screen No.: Klik tombol Find Screen Number(s) pada toolbar untuk penomoran otomatis.
  4. Klik tombol Create (ikon kertas putih/pensil).
  5. SAP akan men-generate layar Dynpro otomatis.

Mengakses Data via T-Code SM30

Setelah TMG dibuat, buka T-Code SM30, masukkan nama tabel Anda, lalu klik Maintain. Pengguna dapat langsung menambah record baru (New Entries), mengubah, maupun menghapus data tabel secara visual.


14. 🟑 Database Views di DDIC

Konsep

View adalah tabel virtual yang datanya tidak disimpan secara fisik, melainkan diambil secara dinamis dari satu atau beberapa tabel database induk.

Jenis ViewKegunaan UtamaKarakteristik
Database ViewMenggabungkan data dari beberapa tabel relasional (INNER JOIN).Hanya untuk membaca data (Read-Only).
Maintenance ViewMembuat antarmuka pemeliharaan data multi-tabel via TMG (SM30).Mendukung penulisan dan pengeditan data secara terintegrasi.
Projection ViewMenyembunyikan kolom-kolom tertentu dari satu tabel fisik.Mengurangi beban bandwidth memori.
Help ViewSumber data seleksi untuk Search Help.Digunakan khusus untuk mendukung navigasi input F4.

15. πŸ› οΈ Mini Project: Membangun Master Data Pelanggan

Tujuan

Membangun solusi master data pelanggan enterprise lengkap di ABAP Dictionary: membuat Domain dengan fixed values status, Data Element dengan label terstandarisasi, Transparent Table ZTCLIENT_MASTER berindeks Primary Key MANDT, memasang Technical Settings optimal, mengaktifkan Foreign Key ke tabel negara standar SAP T005, dan men-generate antarmuka data visual via Table Maintenance Generator (SM30).

Fitur

  1. Pemisahan domain teknis gender dan status akun dengan dropdown pilihan otomatis.
  2. Label UI multilingual yang seragam untuk antarmuka SAP GUI.
  3. Isolasi data transaksi multi-tenant menggunakan kolom MANDT.
  4. Validasi kode negara mengacu pada tabel standar SAP T005.
  5. Antarmuka CRUD visual lengkap tanpa coding menggunakan Table Maintenance Generator.

Konsep yang Digunakan

  • Pembuatan Domain (SE11) dengan rentang nilai tetap (Fixed Values).
  • Pembuatan Data Element (SE11) dengan Field Labels lengkap.
  • Konfigurasi Tabel Transparan dengan Delivery Class A.
  • Technical Settings: Data Class APPL0 dan Size Category 0.
  • Penerapan relasi Foreign Key ke tabel Check Table standar.
  • Pembangkitan layar antarmuka data menggunakan TMG (SM30).

Langkah Implementasi

Langkah 1: Buat Domain Status Pelanggan (ZDM_CUST_STATUS)

  • T-Code: SE11 Domain ZDM_CUST_STATUS Create.
  • Data Type: CHAR, Length: 1.
  • Tab Value Range:
    • 'A' = Aktif
    • 'I' = Inaktif
    • 'B' = Diblokir (Blacklist)
  • Simpan dan Aktifkan (Ctrl+F3).

Langkah 2: Buat Data Element (ZDE_CUST_STATUS)

  • T-Code: SE11 Data type ZDE_CUST_STATUS Create Data element.
  • Elementary data type: Masukkan Domain ZDM_CUST_STATUS.
  • Tab Field Label:
    • Short (10) : Status
    • Medium (20): Status Pelanggan
    • Long (40) : Status Akun Pelanggan
    • Heading (55): Status Pelanggan
  • Simpan dan Aktifkan.

Langkah 3: Buat Data Element ID Pelanggan (ZDE_CLIENT_ID)

  • T-Code: SE11 Data type ZDE_CLIENT_ID Create.
  • Tipe Teknis bawaan: Predefined Type CHAR panjang 10.
  • Field Label: ID Pelanggan.
  • Simpan dan Aktifkan.

Langkah 4: Buat Tabel Transparan ZTCLIENT_MASTER

  • T-Code: SE11 Database table ZTCLIENT_MASTER Create.
  • Short Description: Tabel Master Data Pelanggan.
  • Tab Delivery and Maintenance:
    • Delivery Class: A
    • Data Browser/Table View Maint.: Display/Maintenance Allowed
  • Tab Fields: Susun kolom tabel sebagai berikut:
-------------------------------------------------------------------------
Field Name    | Key | Init | Data Element  | Tipe | Pjg | Keterangan
-------------------------------------------------------------------------
MANDT         |  X  |  X   | MANDT         | CLNT |  3  | Nomor Mandant
CLIENT_ID     |  X  |  X   | ZDE_CLIENT_ID | CHAR | 10  | ID Pelanggan
CLIENT_NAME   |     |      | TEXT40        | CHAR | 40  | Nama Perusahaan
STATUS        |     |      | ZDE_CUST_STATUS|CHAR |  1  | Status Akun
COUNTRY       |     |      | LAND1         | CHAR |  3  | Kode Negara
CREATED_ON    |     |      | ERDAT         | DATS |  8  | Tanggal Dibuat
-------------------------------------------------------------------------

Langkah 5: Pasang Foreign Key untuk Kolom Negara (COUNTRY)

  1. Pilih baris field COUNTRY.
  2. Klik tombol Foreign Keys (ikon kunci gembok pada toolbar tabel).
  3. Masukkan Check Table: T005 (Tabel negara standar SAP).
  4. Klik tombol Generate Proposal. Sistem akan secara otomatis memetakan relasi MANDT = T005-MANDT dan COUNTRY = T005-LAND1.
  5. Klik Copy.

Langkah 6: Konfigurasi Technical Settings (SE13)

  1. Klik tombol Technical Settings pada toolbar tabel.
  2. Data Class: Masukkan APPL0 (Master data).
  3. Size Category: Masukkan 0 (0 s/d 9.300 baris record).
  4. Buffering: Buffering not allowed.
  5. Simpan dan kembali ke layar tabel.
  6. Aktifkan tabel ZTCLIENT_MASTER (Ctrl+F3).

Langkah 7: Generate Layar Pemeliharaan Data (TMG)

  1. Pada menu navigasi SE11, klik Utilities Table Maintenance Generator.
  2. Masukkan Authorization Group: &NC&.
  3. Masukkan Function Group baru: ZFG_CLIENT_MGT.
  4. Maintenance Type: One Step.
  5. Klik tombol Find Screen Number(s) pada toolbar pilih nomor usulan sistem (misal: Screen 1000).
  6. Klik tombol Create (ikon pensil/kertas putih).

Hasil Akhir

  1. Buka T-Code SM30.
  2. Masukkan Table Name: ZTCLIENT_MASTER Klik Maintain.
  3. Layar antarmuka entri visual SAP GUI akan terbuka:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Pemeliharaan Tabel ZTCLIENT_MASTER: Overview Screen                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ID Pelangg.β”‚ Nama Perusahaan      β”‚ Status β”‚ Negara β”‚ Tanggal Dibuat   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ CUST-0001  β”‚ PT Astra Jaya Mandiriβ”‚ A [v]  β”‚ ID     β”‚ 30.09.2026       β”‚
β”‚ CUST-0002  β”‚ Tokyo Electron Ltd   β”‚ A [v]  β”‚ JP     β”‚ 30.09.2026       β”‚
β”‚ CUST-0003  β”‚ Global Tech Corp     β”‚ I [v]  β”‚ US     β”‚ 30.09.2026       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Validasi Otomatis Berjalan: Kolom Status memiliki pilihan dropdown tetap (A, I, B). Jika kolom Negara diisi 'ZZ', sistem langsung memblokir dengan pesan error Foreign Key T005.

16. πŸ“š Ringkasan & Peta Ingatan

Peta Konsep ABAP Dictionary

ABAP Dictionary (DDIC / SE11)
β”œβ”€β”€ 1. Hirarki Objek Data
β”‚   β”œβ”€β”€ Domain (Tipe data teknis dasar, panjang, desimal, fixed values)
β”‚   β”œβ”€β”€ Data Element (Makna bisnis, UI labels pendek/panjang, F1 help)
β”‚   └── Table Fields (Kolom konkret, Primary Key, Foreign Key)
β”œβ”€β”€ 2. Tabel Transparan
β”‚   β”œβ”€β”€ Client-Dependent (Wajib kolom MANDT sebagai primary key pertama)
β”‚   β”œβ”€β”€ Technical Settings (Data Class APPL0/APPL1 & Size Category 0-4)
β”‚   └── Database Buffering (Single-record, Generic, Full buffering)
β”œβ”€β”€ 3. Relasi & Bantuan Input
β”‚   β”œβ”€β”€ Foreign Key (Integritas referensial mengacu ke Check Table)
β”‚   └── Search Help (Jendela navigasi input F4 pengguna)
└── 4. Utilitas & Integrasi
    β”œβ”€β”€ Table Maintenance Generator / TMG (CRUD visual instan di SM30)
    β”œβ”€β”€ Lock Objects (Pencegahan race condition via SM12 / ENQUEUE & DEQUEUE)
    └── Views (Database View, Maintenance View, Projection View)

17. πŸ“š Cheat Code DDIC 10 Detik

SE11               β†’ Pusat kendali seluruh objek ABAP Data Dictionary
SE16N              β†’ Melihat dan menelusuri data mentah di tabel database
SM30               β†’ Menjalankan layar pemeliharaan data visual TMG
SM12               β†’ Melihat dan membuka paksa kunci data yang menggantung
MANDT              β†’ Kolom kunci isolasi client wajib pada tabel transparan
APPL0              β†’ Data Class untuk Master Data (jarang berubah)
APPL1              β†’ Data Class untuk Transaksi Bisnis (sering berubah)
Append Structure   β†’ Menyisipkan kolom kustom ke tabel standar SAP secara aman
EZ_nama            β†’ Format nama resmi Lock Object untuk generate ENQUEUE/DEQUEUE
Fixed Values       β†’ Menghasilkan dropdown list pilihan valid otomatis di layar GUI

18. 🧭 Urutan Belajar Selanjutnya

Setelah memahami cara memodelkan data di ABAP Data Dictionary, langkah berikutnya adalah mempelajari bagaimana data tersebut ditampung dan diolah secara dinamis di dalam memori program ABAP:

1. 🟒 ABAP Dasar (Fondasi sintaks & kontrol alur)
      β”‚
      β–Ό
2. 🟒 ABAP Data Dictionary (DDIC) (Selesai pada modul ini)
      β”‚
      β–Ό
3. 🟒 ABAP Internal Tables
   β†’ Pelajari struktur data array in-memory (Standard, Sorted, Hashed Table), Work Area, Field Symbols, dan sintaks manipulasi modern 7.40+ (VALUE, FOR, FILTER).
      β”‚
      β–Ό
4. 🟑 ABAP Database & Open SQL
   β†’ Pelajari cara membaca dan menyimpan data antara memori program dan tabel DDIC menggunakan SELECT query.

Lanjutkan ke modul berikutnya: ABAP Internal Tables (Modul 3).


19. πŸ”— Referensi Resmi