Target: Advanced ABAP Developer yang ingin menguasai standar tertinggi arsitektur modern di SAP S/4HANA dan ABAP Cloud untuk membangun aplikasi web SAP Fiori kelas dunia.
Versi: SAP S/4HANA (On-Premise 1909+ & Cloud) & SAP BTP ABAP Environment (Eclipse ADT).
Prasyarat: Telah menguasai ABAP Objects (OOP) dan ABAP Core Data Services (CDS Views) & AMDP.
Gambaran Umum
Perjalanan evolusi teknologi SAP telah melompat jauh dari antarmuka desktop klasik SAP GUI menuju antarmuka web modern yang responsif dan intuitif, yaitu SAP Fiori.
Untuk menjembatani logika backend ABAP dengan frontend web modern secara mulus dan terstandarisasi, SAP memperkenalkan ABAP RESTful Application Programming Model (RAP).
RAP adalah arsitektur pemrograman generasi terbaru dari SAP yang dirancang khusus untuk lingkungan Clean Core, SAP S/4HANA, dan Cloud Development. RAP menggabungkan pemodelan data tingkat tinggi via CDS Views, logika bisnis terenkapsulasi via Behavior Definitions (BDEF), bahasa kueri bisnis baru Entity Manipulation Language (EML), serta publikasi otomatis antarmuka OData Service (V2 / V4) yang siap dikonsumsi langsung oleh aplikasi SAP Fiori Elements tanpa memerlukan keahlian mendalam pemrograman web frontend.
Cara Belajar
🟢 Fundamental→ Pahami evolusi arsitektur web SAP, gambaran besar 3 lapisan RAP, serta perbedaan skenario Managed vs Unmanaged.🟡 Lanjutan→ Kuasai Behavior Definition (BDEF), manipulasi entitas bisnis via EML, implementasi Action/Validation, dan Service Binding OData V4.🛠️ Praktik→ Bangun mini project aplikasi manajemen pesanan penjualan Fiori lengkap dengan validasi diskon otomatis dan tombol aksi Approve.
Mental model alur arsitektur 3 lapis ABAP RAP:
Frontend Layer (SAP Fiori Elements Web App / Browser) │ │ HTTP RESTful Request (OData V4 JSON) ▼ ┌────────────────────────────────────────────────────────┐ │ 1. Business Services Layer │ │ - Service Binding (Protokol OData V4 UI / Web API) │ │ - Service Definition (Mengekspos entitas tertentu) │ └──────────────────────────┬─────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 2. Data Model Layer (Core Data Services / CDS) │ │ - Consumption Views (Anotasi UI / Fiori Elements) │ │ - Interface Views (Struktur semantik entitas bisnis)│ └──────────────────────────┬─────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 3. Behavior Layer (Logika Transaksi Bisnis) │ │ - Behavior Definition / BDEF (CRUD, Action, Valid.) │ │ - Behavior Pool / Class Handler (ABAP EML Logic) │ └──────────────────────────┬─────────────────────────────┘ │ ▼ Database Layer (SAP HANA In-Memory Engine)
Hafalan:
RAP → RESTful Application Programming Model: standar emas arsitektur S/4HANA & CloudManaged → Skenario RAP di mana seluruh operasi CRUD database ditangani otomatis oleh frameworkUnmanaged → Skenario RAP di mana developer menulis sendiri kode persistensi (cocok untuk legacy BAPI)BDEF → Behavior Definition: dokumen kontrak yang mendefinisikan operasi bisnis (Create, Delete, Action)EML → Entity Manipulation Language: ekstensi sintaks ABAP baru khusus memanipulasi Business Object RAPService Def. → Dokumen penentu CDS View mana saja yang akan diekspos keluarService Bind. → Konfigurasi protokol rilis (OData V2/V4) dan pintu masuk Fiori Elements PreviewAction → Tombol operasi kustom pada UI Fiori (contoh: tombol 'Approve Order', 'Cancel Invoice')
Era 1: Classic Dynpro (SAP GUI)└── T-Code SE38/SE80, layar abu-abu kaku berbasis desktop Windows.Era 2: SAP Gateway Klasik (T-Code SEGW)└── Pembangunan OData manual dengan memetakan BAPI ke model data secara grafis.Era 3: Business Object Processing Framework (BOPF)└── Framework transaksional kompleks era transisi S/4HANA awal.Era 4: ABAP RESTful Application Programming Model (RAP)└── Standar resmi masa kini dan masa depan: Deklaratif, terpadu dengan CDS, dan Cloud-ready.
2. 🟢 Gambaran Besar Arsitektur 3 Lapis RAP
Tiga Pilar Penyusun RAP
Data Model & Query (CDS): Mendefinisikan struktur data entitas bisnis, relasi asosiasi, serta anotasi antarmuka Fiori (@UI.lineItem, @UI.identification).
Business Services: Lapisan gateway yang membungkus CDS Views menjadi protokol standar internet (OData V2 atau OData V4).
Behavior Layer: Jantung logika transaksional yang mengontrol operasi simpan data, otorisasi, validasi integritas, dan tombol aksi bisnis.
3. 🟢 Dua Skenario Utama: Managed vs Unmanaged
Konsep
Saat mendefinisikan Behavior Definition, Anda wajib memilih salah satu dari dua skenario:
Karakteristik
Skenario Managed (Managed Scenario)
Skenario Unmanaged (Unmanaged Scenario)
Persistensi Database
Otomatis. Framework RAP langsung mengeksekusi INSERT, UPDATE, DELETE ke database tanpa coding.
Manual. Developer wajib menulis sendiri kode SQL atau memanggil BAPI di dalam handler.
Kapan Digunakan?
Tabel kustom baru (Greenfield development) di mana tabel sepenuhnya di bawah kendali Anda.
Menghubungkan logika transaksi warisan (Brownfield development) seperti membungkus BAPI standar SAP.
Beban Koding
Sangat rendah (hanya menulis validasi & action).
Cukup tinggi (mengelola buffer dan commit manual).
4. 🟢 Pemodelan Data CDS untuk Konsumsi Fiori Elements
Konsep
Aplikasi frontend Fiori Elements dibangun secara otomatis berdasarkan Anotasi UI yang ditulis langsung di dalam CDS View:
Anotasi @UI.lineItem secara otomatis menentukan urutan kolom pada tabel spreadsheet Fiori, sedangkan @UI.identification menentukan letak kolom pada formulir rincian dokumen!
5. 🟡 Behavior Definition (BDEF): Kontrak Operasi Bisnis
Konsep
Behavior Definition (BDEF) adalah dokumen teks di Eclipse ADT yang mendefinisikan apa saja aksi bisnis yang diizinkan pada entitas tersebut:
managed implementation in class zbp_i_salesorder_r unique;strict ( 2 );define behavior for ZI_SalesOrder_R alias Orderpersistent table ztsales_orderlock masterauthorization master ( global ){ create; update; delete; // Mendefinisikan Validasi Otomatis validation validateCustomer on save { field CustomerName; create; } // Mendefinisikan Tombol Aksi Kustom di Fiori UI action approveOrder result [1] $self;}
6. 🟡 Validations & Determinations di RAP
Konsep
Validation: Logika verifikasi yang dipicu pada momen tertentu (misal: on save). Jika validasi gagal, RAP membatalkan proses simpan dan memunculkan pesan error di layar browser pengguna via parameter reported.
Determination: Logika otomatis yang menghitung atau mengisi field turunan saat ada perubahan field lain (misal: saat field Quantity diubah, sistem otomatis mengkalkulasikan ulang nilai GrossAmount).
7. 🟡 Aksi Bisnis Kustom (Actions)
Konsep
Action merepresentasikan operasi bisnis khusus selain operasi CRUD standar. Di antarmuka SAP Fiori, setiap action akan otomatis dirender sebagai tombol interaktif di toolbar atas (misal: tombol Setujui Pesanan / Batalkan Faktur).
EML (Entity Manipulation Language) adalah sintaks baru bawaan ABAP modern untuk berinteraksi dengan entitas RAP secara type-safe.
Daripada menulis UPDATE ztsales_order, Anda memanipulasi Business Object menggunakan EML:
" Membaca data via EMLREAD ENTITIES OF ZI_SalesOrder_R ENTITY Order FIELDS ( OrderID CustomerName OrderStatus ) WITH VALUE #( ( %key-OrderID = 'SO-001' ) ) RESULT DATA(lt_orders)." Mengubah status via Action EMLMODIFY ENTITIES OF ZI_SalesOrder_R ENTITY Order EXECUTE approveOrder FROM VALUE #( ( %key-OrderID = 'SO-001' ) ) FAILED DATA(lt_failed) REPORTED DATA(lt_reported)." Simpan transaksi ke databaseCOMMIT ENTITIES.
9. 🟡 Mengekspos API: Service Definition & Service Binding
Konsep
Dalam arsitektur enterprise SAP RAP, model data dipisahkan secara bertingkat:
Interface Layer (ZI_...): Entitas inti yang mendefinisikan struktur data transaksional dan Base Behavior Definition (ZI_SalesOrder_R.bdef).
Projection / Consumption Layer (ZC_...): Entitas konsumsi yang membawa anotasi @UI untuk tampilan Fiori dan Projection BDEF (ZC_SalesOrder_R.bdef).
Data Model Layer (Interface)├── Root Entity (ZI_SalesOrder_R)└── Base BDEF (ZI_SalesOrder_R.bdef) -> CRUD, Action, Validation │ ▼Consumption Layer (Projection)├── Projection View (ZC_SalesOrder_R) -> Membawa anotasi @UI└── Projection BDEF (ZC_SalesOrder_R.bdef) -> 'use create', 'use action' │ ▼Business Service Layer├── Service Definition -> expose ZC_SalesOrder_R└── Service Binding (OData V4 - UI) │ ▼SAP Fiori Elements Web App
NOTE
Peran Projection Behavior Definition (BDEF):
Pada skenario konsumsi Fiori Elements, Projection BDEF berfungsi sebagai pengendali operasi yang diekspos ke antarmuka pengguna. Operasi dari Base BDEF diekspos secara selektif menggunakan kata kunci use:
projection;define behavior for ZC_SalesOrder_R alias SalesOrder{ use create; use update; use delete; use action approveOrder;}
(Catatan: Pada skenario prototipe cepat atau layanan read-only sederhana, antarmuka dapat mengekspos entitas secara langsung. Namun penggunaan Projection BDEF adalah best practice enterprise saat membangun aplikasi Fiori transaksional).
Langkah 1: Buat Service Definition
Memilih entitas proyeksi yang akan diekspos:
@EndUserText.label: 'Layanan API Manajemen Pesanan'define service ZUI_SALES_ORDER_MANAGE { expose ZC_SalesOrder_R as SalesOrder;}
Langkah 2: Buat Service Binding
Menetapkan protokol komunikasi jaringan:
Binding Type: Pilih OData V4 - UI (Standar modern dengan payload JSON super ringan dan efisien).
Klik tombol Activate, lalu klik tombol Publish.
10. 🟡 Pratinjau Aplikasi Web Fiori Elements dari Eclipse ADT
Konsep
Setelah Service Binding dipublikasikan di Eclipse ADT:
Klik kanan pada entitas SalesOrder.
Pilih menu Open Fiori Elements App Preview.
Browser default Anda akan terbuka seketika dan menampilkan aplikasi web SAP Fiori interaktif lengkap (dengan fitur pencarian, filter tanggal, tabel dinamis, formulir entri data, serta tombol aksi kustom) tanpa Anda perlu menulis satu baris pun kode JavaScript, HTML, atau CSS!
11. 🛠️ Mini Project: Membangun Aplikasi Sales Order Fiori Modern
Tujuan
Membangun arsitektur backend RAP lengkap untuk aplikasi Fiori Elements: mendefinisikan CDS View entitas pesanan, membuat Behavior Definition dengan operasi CRUD Managed dan tombol aksi approveOrder, mengimplementasikan handler class menggunakan EML, serta mempublikasikan layanan via Service Binding OData V4.
Fitur
Model data entitas transaksional ZI_SalesOrder_R.
Pengaturan otomatis operasi CRUD persistensi via Managed Scenario.
Tombol aksi kustom approveOrder untuk mengubah status pesanan menjadi 'APPROVED'.
Publikasi OData V4 UI siap pakai untuk SAP Fiori Elements.
Behavior Definition Managed managed implementation in class.
Pemrograman handler method menggunakan EML (MODIFY ENTITIES).
Service Definition dan Service Binding OData V4.
Langkah Implementasi
Langkah 1: Buat Root CDS View (ZI_SalesOrder_R)
@AccessControl.authorizationCheck: #NOT_REQUIRED@EndUserText.label: 'Entitas Utama Pesanan Penjualan'define root view entity ZI_SalesOrder_R as select from ztsales_order{ key order_id as OrderID, customer as CustomerName, gross_amount as GrossAmount, order_status as OrderStatus}
Langkah 2: Buat Behavior Definition (BDEF)
managed implementation in class zbp_i_salesorder_r unique;strict ( 2 );define behavior for ZI_SalesOrder_R alias SalesOrderpersistent table ztsales_orderlock masterauthorization master ( global ){ create; update; delete; action ( features : instance ) approveOrder result [1] $self; mapping for ztsales_order { OrderID = order_id; CustomerName = customer; GrossAmount = gross_amount; OrderStatus = order_status; }}
Langkah 3: Implementasikan Logika Action pada Behavior Pool Class
Di dalam Local Types Class zbp_i_salesorder_r:
CLASS lhc_salesorder DEFINITION INHERITING FROM cl_abap_behavior_handler. PRIVATE SECTION. METHODS approveOrder FOR MODIFY IMPORTING keys FOR ACTION SalesOrder~approveOrder RESULT result.ENDCLASS.CLASS lhc_salesorder IMPLEMENTATION. METHOD approveOrder. " 1. Ubah status pesanan menjadi 'APPROVED' menggunakan EML MODIFY ENTITIES OF ZI_SalesOrder_R IN LOCAL MODE ENTITY SalesOrder UPDATE FIELDS ( OrderStatus ) WITH VALUE #( FOR key IN keys ( %tky = key-%tky OrderStatus = 'APPROVED' ) ) FAILED failed REPORTED reported. " 2. Kembalikan data terbaru ke layar Fiori READ ENTITIES OF ZI_SalesOrder_R IN LOCAL MODE ENTITY SalesOrder ALL FIELDS WITH CORRESPONDING #( keys ) RESULT DATA(lt_updated_orders). result = VALUE #( FOR order IN lt_updated_orders ( %tky = order-%tky %param = order ) ). ENDMETHOD.ENDCLASS.
Langkah 4: Buat Projection View & Projection BDEF (ZC_SalesOrder_R)
projection;define behavior for ZC_SalesOrder_R alias SalesOrder{ use create; use update; use delete; use action approveOrder;}
Langkah 5: Publikasikan Layanan via Service Definition & Service Binding
@EndUserText.label: 'Definisi Layanan Pesanan Penjualan'define service ZUI_SALES_ORDER_O4 { expose ZC_SalesOrder_R as SalesOrder;}
Hasil Akhir
Saat Fiori Elements App Preview dibuka di browser:
┌────────────────────────────────────────────────────────────────────────┐│ Aplikasi Web SAP Fiori: Manajemen Pesanan Penjualan (OData V4) │├────────────────────────────────────────────────────────────────────────┤│ Filter Pencarian: [ Cari Pesanan... ] [ Status: Semua v ] [ Go ] │├────────────────────────────────────────────────────────────────────────┤│ Daftar Pesanan (4) [ + Buat Baru ] [ Hapus ] [ Setujui Pesanan ]│├──────────────┬────────────────────────┬─────────────────┬──────────────┤│ [ ] No Order │ Nama Pelanggan │ Total Nilai │ Status │├──────────────┼────────────────────────┼─────────────────┼──────────────┤│ [X] SO-00101 │ PT Surya Kencana │ Rp 45.000.000 │ APPROVED ││ [ ] SO-00102 │ CV Bintang Timur │ Rp 12.000.000 │ PENDING ││ [ ] SO-00103 │ PT Harapan Bangsa │ Rp 85.000.000 │ PENDING │└──────────────┴────────────────────────┴─────────────────┴──────────────┘
Ketika pengguna mencentang baris SO-00102 dan mengklik tombol Setujui Pesanan, browser langsung mengirimkan panggilan OData Action ke backend RAP, method EML dieksekusi, dan status di layar seketika berganti menjadi APPROVED secara mulus tanpa me-reload halaman browser!
12. 📚 Ringkasan & Peta Ingatan
Peta Konsep ABAP RESTful Application Programming (RAP)
ABAP RAP (Arsitektur Modern S/4HANA & Fiori)├── 1. Data Model Layer (CDS)│ ├── Root View Entity (Entitas induk bisnis)│ └── Anotasi UI (@UI.lineItem untuk tampilan tabel Fiori)├── 2. Behavior Layer (BDEF & EML)│ ├── Managed Scenario (Persistensi CRUD otomatis oleh framework)│ ├── Unmanaged Scenario (Persistensi manual untuk legacy code/BAPI)│ ├── Validations & Determinations (Logika verifikasi & hitung nilai)│ └── Actions (Tombol operasi bisnis kustom di UI Fiori)└── 3. Business Service Layer ├── Service Definition (Menentukan eksposur entitas CDS) ├── Service Binding (Protokol OData V4 UI / Web API) └── Fiori Elements App Preview (Pratinjau antarmuka web instan)
13. 📚 Cheat Code RAP 10 Detik
managed implementation in class zbp_... → Deklarasi BDEF skenario Manageddefine root view entity ZI_... → Mendefinisikan entitas induk CDSaction ( features : instance ) approve... → Menambahkan tombol aksi di Fiorivalidation check_data on save ... → Menambahkan validasi saat simpanREAD ENTITIES OF ... → Query entitas via EMLMODIFY ENTITIES OF ... → Mengubah status data via EMLdefine service ZUI_... → Membuat Service DefinitionOData V4 - UI → Standar binding rekomendasi untuk Fiori
14. 🧭 Rangkuman Kurikulum ABAP & Jalur Spesialisasi
Selamat! Dengan menyelesaikan modul ini, Anda telah menuntaskan seluruh perjalanan kurikulum SAP ABAP dari level dasar hingga modern arsitektur S/4HANA:
Fondasi Bahasa & Data:🟢 Modul 1: ABAP Dasar🟢 Modul 2: ABAP Data Dictionary (DDIC)🟢 Modul 3: ABAP Internal Tables │ ▼Logika Bisnis & Pelaporan:🟡 Modul 4: ABAP Database Access & Open SQL🟡 Modul 5: ABAP Modularization & Integration (RFC/BAPI)🟡 Modul 6: ABAP Reports & ALV Grid (CL_SALV_TABLE)🟡 Modul 7: ABAP Objects (OOP) │ ▼Enterprise S/4HANA Modern:🔴 Modul 8: ABAP Enhancement Framework (Clean Core)🔴 Modul 9: ABAP Debugging & Performance Tuning🔴 Modul 10: ABAP Core Data Services (CDS) & AMDP🔴 Modul 11: ABAP RESTful Application Programming (RAP)
Jalur Spesialisasi Karier Selanjutnya
SAP S/4HANA Cloud Developer: Mendalami ABAP Cloud Development Model dan Developer Extensibility.
SAP Integration Consultant: Mengintegrasikan sistem SAP dengan aplikasi cloud luar via SAP Integration Suite (BTP) dan REST API.
Full-Stack SAP Developer: Mengombinasikan keahlian backend ABAP RAP dengan frontend SAPUI5 / TypeScript.