SAP ABAP - Panduan Cepat

ABAP adalah singkatan dari Advanced Business Application Programming, sebuah bahasa 4GL (generasi ke-4). Saat ini diposisikan, bersama dengan Java, sebagai bahasa utama untuk pemrograman server aplikasi SAP.

Mari kita mulai dengan arsitektur sistem SAP tingkat tinggi. Arsitektur Klien / Server 3-tingkat dari sistem SAP tipikal digambarkan sebagai berikut.

Itu Presentation layerterdiri dari perangkat input apa pun yang dapat digunakan untuk mengontrol sistem SAP. Ini bisa berupa browser web, perangkat seluler, dan sebagainya. Semua pemrosesan pusat berlangsung diApplication server. Server Aplikasi bukan hanya satu sistem itu sendiri, tetapi dapat berupa beberapa contoh sistem pemrosesan. Server berkomunikasi denganDatabase layeryang biasanya disimpan di server terpisah, terutama untuk alasan kinerja dan juga untuk keamanan. Komunikasi terjadi antara setiap lapisan sistem, dari lapisan Presentasi ke Database dan kemudian rantai cadangan.

Note- Program ABAP dijalankan pada level server aplikasi. Distribusi teknis perangkat lunak tidak bergantung pada lokasi fisiknya. Ini berarti pada dasarnya ketiga level dapat diinstal di atas satu sama lain di satu komputer atau setiap level dapat diinstal di komputer atau server yang berbeda.

Program ABAP berada di dalam database SAP. Mereka dijalankan di bawah kendali sistem runtime yang merupakan bagian dari kernel SAP. Sistem run-time memproses semua pernyataan ABAP, mengontrol logika aliran dan merespons kejadian pengguna.

Jadi, tidak seperti C ++ dan Java, program ABAP tidak disimpan dalam file eksternal terpisah. Di dalam database, kode ABAP ada dalam dua bentuk -

  • Source kode yang dapat dilihat dan diedit dengan alat meja kerja ABAP.

  • Generated code, yang merupakan representasi biner. Jika Anda terbiasa dengan Java, kode yang dihasilkan ini agak sebanding dengan kode byte Java.

Sistem run-time dapat dianggap sebagai mesin virtual, sama seperti mesin virtual Java. Komponen kunci dari sistem run-time ABAP adalah antarmuka database yang mengubah pernyataan independen database (Open SQL) menjadi pernyataan yang dipahami oleh database yang mendasarinya (Native SQL). SAP dapat bekerja dengan berbagai macam database dan program ABAP yang sama dapat berjalan di semua itu.

Laporan adalah titik awal yang baik untuk membiasakan diri Anda dengan prinsip dan alat umum ABAP. Laporan ABAP digunakan di banyak bidang. Pada bab ini, kita akan melihat betapa mudahnya menulis Laporan ABAP sederhana.

Halo ABAP

Mari kita mulai dengan contoh umum "Hello World".

Setiap pernyataan ABAP dimulai dengan kata kunci ABAP dan diakhiri dengan titik. Kata kunci harus dipisahkan setidaknya dengan satu spasi. Tidak masalah apakah Anda menggunakan satu atau beberapa baris untuk pernyataan ABAP atau tidak.

Anda harus memasukkan kode Anda menggunakan ABAP Editor yang merupakan bagian dari ABAP Tools yang dikirimkan dengan SAP NetWeaver Application Server ABAP (juga dikenal sebagai 'AS ABAP').

'AS ABAP' adalah server aplikasi dengan database-nya sendiri, lingkungan run-time ABAP, dan alat pengembangan ABAP seperti Editor ABAP. AS ABAP menawarkan platform pengembangan yang tidak bergantung pada perangkat keras, sistem operasi, dan database.

Menggunakan Editor ABAP

Step 1- Mulai transaksi SE38 untuk menavigasi ke Editor ABAP (dibahas di bab selanjutnya). Mari mulai membuat laporan yang merupakan salah satu dari banyak objek ABAP.

Step 2- Pada layar awal editor, tentukan nama laporan Anda di kolom input PROGRAM. Anda dapat menentukan nama sebagai ZHELLO1. Z sebelumnya penting untuk nama. Z memastikan bahwa laporan Anda berada di ruang nama pelanggan.

Namespace pelanggan mencakup semua objek dengan awalan Y atau Z. Itu selalu digunakan ketika pelanggan atau mitra membuat objek (seperti laporan) untuk membedakan objek ini dari objek SAP dan untuk mencegah konflik nama dengan objek.

Step 3- Anda dapat mengetik nama laporan dengan huruf kecil, tetapi editor akan mengubahnya menjadi huruf besar. Jadi nama objek ABAP adalah 'Not' case sensitive.

Step 4- Setelah menentukan nama laporan, klik tombol BUAT. Jendela popup ABAP: ATRIBUT PROGRAM akan muncul dan Anda akan memberikan informasi lebih lanjut tentang laporan Anda.

Step 5- Pilih "Program yang Dapat Dieksekusi" sebagai jenis laporan, masukkan judul "Laporan ABAP Pertama Saya" lalu pilih SIMPAN untuk melanjutkan. Jendela CREATE OBJECT DIRECTORY ENTRY akan muncul berikutnya. Pilih tombol OBJEK LOKAL dan popup akan menutup.

Anda dapat menyelesaikan laporan pertama Anda dengan memasukkan pernyataan TULIS di bawah pernyataan LAPORAN, sehingga laporan lengkap hanya berisi dua baris sebagai berikut -

REPORT ZHELLO1. 
WRITE 'Hello World'.

Memulai Laporan

Kita dapat menggunakan keyboard (Ctrl + S) atau ikon simpan (sisi kanan di samping kolom perintah) untuk menyimpan laporan. Pengembangan ABAP berlangsung di AS ABAP.

Memulai laporan semudah menyimpannya. Klik tombol AKTIVASI (sisi kiri di sebelah ikon mulai) dan mulai laporan dengan menggunakan ikon PENGOLAHAN LANGSUNG atau tombol fungsi F8. Judul "Laporan ABAP Pertama Saya" bersama dengan output "Hello World" juga ditampilkan. Inilah hasilnya -

My First ABAP Report 
Hello World

Selama Anda tidak mengaktifkan laporan baru atau mengaktifkan perubahan pada laporan yang ada, itu tidak relevan bagi pengguna mereka. Ini penting dalam lingkungan pengembangan pusat tempat Anda dapat mengerjakan objek yang digunakan pengembang lain dalam proyek mereka.

Melihat Kode yang Ada

Jika Anda melihat bidang Program dan mengklik dua kali pada nilai ZHELLO1, editor ABAP akan menampilkan kode untuk laporan Anda. Ini disebut Navigasi Maju. Mengklik dua kali pada nama objek membuka objek itu di alat yang sesuai.

Untuk memahami SAP ABAP, Anda harus memiliki pengetahuan dasar tentang layar seperti Login, ABAP Editor, Logout, dan sebagainya. Bab ini berfokus pada navigasi layar dan fungsionalitas toolbar standar.

Layar login

Setelah Anda masuk ke server SAP, layar masuk SAP akan meminta ID Pengguna dan Kata Sandi. Anda perlu memberikan ID pengguna dan Kata Sandi yang valid dan tekan Enter (ID pengguna dan kata sandi disediakan oleh administrator sistem). Berikut adalah layar login.

Ikon Toolbar

Berikut ini adalah toolbar layar SAP.

Menu Bar - Bilah menu adalah baris atas jendela dialog.

Standard Toolbar - Sebagian besar fungsi standar seperti Top of Page, End of Page, Page Up, Page Down dan Save tersedia di toolbar ini.

Title Bar - Title Bar menampilkan nama aplikasi / proses bisnis Anda saat ini.

Application Toolbar - Opsi menu khusus aplikasi tersedia di sini.

Command Field- Kami dapat memulai aplikasi tanpa menavigasi melalui menu transaksi dan beberapa kode logis ditugaskan ke proses bisnis. Kode transaksi dimasukkan di bidang perintah untuk langsung memulai aplikasi.

Editor ABAP

Anda dapat memulai transaksi SE38 (masukkan SE38 di Command Field) untuk menavigasi ke Editor ABAP.

Tombol dan Ikon Standar

Exit keysdigunakan untuk keluar dari program / modul atau untuk log off. Mereka juga digunakan untuk kembali ke layar yang terakhir diakses.

Berikut adalah tombol keluar standar yang digunakan dalam SAP seperti yang ditunjukkan pada gambar.

Berikut adalah opsi untuk memeriksa, mengaktifkan dan memproses laporan.

Keluar

Keluar dari Editor ABAP atau / dan logoff dari sistem SAP setelah menyelesaikan pekerjaan Anda selalu merupakan praktik yang baik.

Pernyataan

Program sumber ABAP terdiri dari komentar dan pernyataan ABAP. Setiap pernyataan di ABAP dimulai dengan kata kunci dan diakhiri dengan titik, dan ABAP adalah 'Not' case sensitive.

Baris non-komentar pertama dalam sebuah program dimulai dengan kata REPORT. Laporan akan selalu menjadi baris pertama dari program yang dapat dijalankan yang dibuat. Pernyataan tersebut diikuti dengan nama program yang telah dibuat sebelumnya. Jalur tersebut kemudian diakhiri dengan berhenti penuh.

Sintaksnya adalah -

REPORT [Program_Name]. 
 
[Statements…].

Ini memungkinkan pernyataan untuk mengambil baris di editor sebanyak yang dibutuhkan. Misalnya, LAPORAN mungkin terlihat seperti ini -

REPORT Z_Test123_01.

Pernyataan terdiri dari perintah dan variabel serta opsi apa pun, diakhiri dengan titik. Selama periode tersebut muncul di akhir pernyataan, tidak ada masalah yang akan muncul. Periode inilah yang menandai berakhirnya pernyataan tersebut.

Ayo tulis kodenya.

Pada baris di bawah pernyataan REPORT, ketikkan saja pernyataan ini: Tulis 'Tutorial ABAP'.

REPORT Z_Test123_01.

Write 'This is ABAP Tutorial'.

Four things to consider while writing statements -

  • Pernyataan tulis menulis apa pun yang ada dalam tanda kutip ke jendela keluaran.

  • Editor ABAP mengonversi semua teks menjadi huruf besar kecuali string teks, yang diapit oleh tanda kutip tunggal.

  • Tidak seperti beberapa bahasa pemrograman lama, ABAP tidak peduli di mana sebuah pernyataan dimulai pada sebuah baris. Anda dapat memanfaatkan ini dan meningkatkan keterbacaan program Anda dengan menggunakan indentasi untuk menunjukkan blok kode.

  • ABAP tidak memiliki batasan pada tata letak pernyataan. Artinya, beberapa pernyataan dapat ditempatkan dalam satu baris, atau satu pernyataan dapat membentang di beberapa baris.

Notasi Colon

Pernyataan berurutan dapat dirangkai bersama jika awal setiap pernyataan identik. Ini dilakukan dengan tanda titik dua (:) operator dan koma, yang digunakan untuk mengakhiri pernyataan individu, seperti periode mengakhiri pernyataan normal.

Berikut adalah contoh program yang dapat menghemat penekanan tombol -

WRITE 'Hello'. 
WRITE 'ABAP'. 
WRITE 'World'.

Menggunakan notasi titik dua, itu bisa ditulis ulang dengan cara ini -

WRITE: 'Hello', 
       'ABAP', 
       'World'.

Seperti pernyataan ABAP lainnya, tata letak tidak menjadi masalah. Ini adalah pernyataan yang sama benarnya -

WRITE: 'Hello', 'ABAP', 'World'.

Komentar

Komentar sebaris dapat dideklarasikan di mana saja dalam program dengan salah satu dari dua metode -

  • Komentar baris lengkap ditunjukkan dengan menempatkan tanda bintang (*) di posisi pertama baris, dalam hal ini seluruh baris dianggap oleh sistem sebagai komentar. Komentar tidak perlu diakhiri dengan titik karena tidak boleh melebihi lebih dari satu baris -

* This is the comment line
  • Komentar baris parsial ditunjukkan dengan memasukkan tanda petik ganda (") setelah pernyataan. Semua teks setelah tanda petik ganda dianggap oleh sistem sebagai komentar. Anda tidak perlu menghentikan komentar baris sebagian dengan titik karena tidak dapat diperpanjang di lebih dari satu baris -

WRITE 'Hello'. "Here is the partial comment

Note - Kode dengan komentar tidak dikapitalisasi oleh editor ABAP.

Menekan Kosong

Perintah NO-ZERO mengikuti pernyataan DATA. Ini menekan semua nol di depan dari bidang angka yang berisi kosong. Outputnya biasanya lebih mudah dibaca oleh pengguna.

Contoh

REPORT Z_Test123_01. 

DATA: W_NUR(10) TYPE N.
      MOVE 50 TO W_NUR.
      WRITE W_NUR NO-ZERO.

Kode di atas menghasilkan keluaran sebagai berikut -

50

Note - Tanpa perintah NO-ZERO, outputnya adalah: 0000000050

Garis Kosong

Perintah SKIP membantu memasukkan baris kosong pada halaman.

Contoh

Perintah pesannya adalah sebagai berikut -

WRITE 'This is the 1st line'. 
SKIP. 
WRITE 'This is the 2nd line'.

Perintah pesan di atas menghasilkan output berikut -

This is the 1st line 
This is the 2nd line

Kami dapat menggunakan perintah SKIP untuk memasukkan beberapa baris kosong.

SKIP number_of_lines.

Outputnya adalah beberapa baris kosong yang ditentukan oleh jumlah baris. Perintah SKIP juga dapat memposisikan kursor pada baris yang diinginkan di halaman.

SKIP TO LINE line_number.

Perintah ini digunakan untuk menggerakkan kursor ke atas dan ke bawah halaman secara dinamis. Biasanya, pernyataan WRITE terjadi setelah perintah ini untuk meletakkan keluaran pada baris yang diinginkan.

Memasukkan Garis

Perintah ULINE secara otomatis memasukkan garis horizontal di output. Juga dimungkinkan untuk mengontrol posisi dan panjang garis. Sintaksnya cukup sederhana -

ULINE.

Contoh

Perintah pesannya adalah sebagai berikut -

WRITE 'This is Underlined'.
ULINE.

Kode di atas menghasilkan keluaran sebagai berikut -

This is Underlined (and a horizontal line below this).

Pesan

Perintah MESSAGE menampilkan pesan yang ditentukan oleh ID pesan yang ditentukan dalam pernyataan REPORT di awal program. ID pesan adalah kode 2 karakter yang menentukan kumpulan 1.000 pesan yang akan diakses program ketika perintah MESSAGE digunakan.

Pesan diberi nomor dari 000 hingga 999. Terkait dengan setiap nomor adalah teks pesan hingga maksimum 80 karakter. Ketika nomor pesan dipanggil, teks terkait ditampilkan.

Berikut adalah karakter yang digunakan dengan perintah Message -

Pesan Tipe Konsekuensi
E Kesalahan Pesan muncul dan aplikasi berhenti pada titik saat ini. Jika program berjalan dalam mode latar belakang, pekerjaan dibatalkan dan pesan dicatat dalam log pekerjaan.
W Peringatan Pesan tersebut muncul dan pengguna harus menekan Enter agar aplikasi dapat melanjutkan. Dalam mode latar belakang, pesan tersebut direkam di log pekerjaan.
saya Informasi Jendela pop-up terbuka dengan teks pesan dan pengguna harus menekan Enter untuk melanjutkan. Dalam mode latar belakang, pesan tersebut direkam di log pekerjaan.
SEBUAH Abend Kelas pesan ini membatalkan transaksi yang sedang digunakan pengguna.
S Keberhasilan Ini memberikan pesan informasi di bagian bawah layar. Informasi yang ditampilkan bersifat positif dan hanya dimaksudkan untuk umpan balik pengguna. Pesan tersebut tidak menghalangi program dengan cara apapun.
X Menggugurkan Pesan ini membatalkan program dan menghasilkan short dump ABAP.

Pesan kesalahan biasanya digunakan untuk menghentikan pengguna melakukan hal-hal yang tidak seharusnya mereka lakukan. Pesan peringatan biasanya digunakan untuk mengingatkan pengguna tentang konsekuensi tindakan mereka. Pesan informasi memberi pengguna informasi yang berguna.

Contoh

Saat kita membuat pesan untuk pesan ID AB, perintah MESSAGE - MESSAGE E011 memberikan output berikut -

EAB011 This report does not support sub-number summarization.

Saat memprogram di ABAP, kita perlu menggunakan berbagai variabel untuk menyimpan berbagai informasi. Variabel hanyalah lokasi memori yang dicadangkan untuk menyimpan nilai. Ini berarti bahwa ketika Anda membuat variabel, Anda menyediakan beberapa ruang di memori. Anda mungkin ingin menyimpan informasi dari berbagai tipe data seperti karakter, integer, floating point, dll. Berdasarkan tipe data variabel, sistem operasi mengalokasikan memori dan memutuskan apa yang dapat disimpan dalam memori yang dipesan.

Jenis Data Dasar

ABAP menawarkan programmer beragam jenis data dengan panjang tetap serta jenis data panjang variabel. Tabel berikut mencantumkan tipe data dasar ABAP -

Tipe Kata kunci
Bidang byte X
Bidang teks C
Bilangan bulat saya
Titik apung F
Nomor yang dikemas P.
String teks TALI

Beberapa bidang dan angka dapat dimodifikasi menggunakan satu atau lebih nama sebagai berikut -

  • byte
  • numeric
  • character-like

Tabel berikut menunjukkan tipe data, berapa banyak memori yang diperlukan untuk menyimpan nilai dalam memori, dan nilai minimum dan maksimum yang dapat disimpan dalam tipe variabel tersebut.

Tipe Panjang Khas Rentang Khas
X 1 byte Nilai byte apa pun (00 hingga FF)
C 1 karakter 1 hingga 65535
N (kolom teks numerik) 1 karakter 1 hingga 65535
D (tanggal seperti karakter) 8 karakter 8 karakter
T (waktu seperti karakter) 6 karakter 6 karakter
saya 4 byte -2147483648 hingga 2147483647
F 8 byte 2.2250738585072014E-308 hingga 1.7976931348623157E + 308 positif atau negatif
P. 8 byte [-10 ^ (2len -1) +1] hingga [+ 10 ^ (2len -1) 1] (di mana len = panjang tetap)
TALI Variabel Karakter alfanumerik apa pun
XSTRING (string byte) Variabel Nilai byte apa pun (00 hingga FF)

Contoh

REPORT YR_SEP_12. 
DATA text_line TYPE C LENGTH 40. 
text_line = 'A Chapter on Data Types'. 
Write text_line. 

DATA text_string TYPE STRING. 
text_string = 'A Program in ABAP'. 
Write / text_string. 

DATA d_date TYPE D. 
d_date = SY-DATUM. 
Write / d_date.

Dalam contoh ini, kita memiliki string karakter tipe C dengan panjang standar 40. STRING adalah tipe data yang dapat digunakan untuk string karakter apa pun dengan panjang variabel (string teks). Tipe objek data STRING umumnya harus digunakan untuk konten seperti karakter di mana panjang tetap tidak penting.

Kode di atas menghasilkan keluaran sebagai berikut -

A Chapter on Data Types 
A Program in ABAP 
12092015

Jenis DATE digunakan untuk penyimpanan informasi tanggal dan dapat menyimpan delapan digit seperti yang ditunjukkan di atas.

Jenis Kompleks dan Referensi

Jenis kompleks diklasifikasikan menjadi Structure types dan Table types. Dalam tipe struktur, tipe dasar dan struktur (yaitu struktur yang tertanam dalam sebuah struktur) dikelompokkan bersama. Anda hanya dapat mempertimbangkan pengelompokan tipe dasar. Tetapi Anda harus menyadari ketersediaan struktur bersarang.

Ketika tipe elementer dikelompokkan bersama, item data dapat diakses sebagai item data yang dikelompokkan atau item data tipe elementer individu (bidang struktur) dapat diakses. Jenis tabel lebih dikenal sebagai array dalam bahasa pemrograman lain.Arraysbisa berupa susunan sederhana atau struktur. Dalam ABAP, array disebut tabel internal dan dapat dideklarasikan serta dioperasikan dengan banyak cara jika dibandingkan dengan bahasa pemrograman lain. Tabel berikut menunjukkan parameter yang sesuai dengan karakteristik tabel internal.

S.No. Parameter & Deskripsi
1

Line or row type

Baris tabel internal dapat berupa dasar, kompleks, atau tipe referensi.

2

Key

Menentukan bidang atau sekelompok bidang sebagai kunci dari tabel internal yang mengidentifikasi baris tabel. Kunci berisi bidang tipe dasar.

3

Access method

Menjelaskan bagaimana program ABAP mengakses entri tabel individu.

Jenis referensi digunakan untuk merujuk ke instance kelas, antarmuka, dan item data waktu proses. Layanan tipe run-time ABAP OOP (RTTS) memungkinkan deklarasi item data pada run-time.

Variabel dinamai objek data yang digunakan untuk menyimpan nilai dalam area memori yang dialokasikan dari suatu program. Seperti namanya, pengguna dapat mengubah konten variabel dengan bantuan pernyataan ABAP. Setiap variabel di ABAP memiliki tipe tertentu, yang menentukan ukuran dan tata letak memori variabel; kisaran nilai yang dapat disimpan dalam memori itu; dan set operasi yang dapat diterapkan ke variabel.

Anda harus mendeklarasikan semua variabel sebelum dapat digunakan. Bentuk dasar dari deklarasi variabel adalah -

DATA <f> TYPE <type> VALUE <val>.

Di sini <f> menentukan nama variabel. Panjang nama variabel dapat mencapai 30 karakter. <type> menentukan tipe variabel. Tipe data apa pun dengan atribut teknis yang ditentukan sepenuhnya dikenal sebagai <type>. <val> menentukan nilai awal dari variabel <f>. Jika Anda menentukan variabel panjang tetap dasar, pernyataan DATA secara otomatis mengisi nilai variabel dengan nilai awal khusus jenis. Nilai lain yang memungkinkan untuk <val> bisa berupa klausa literal, konstanta, atau eksplisit, seperti Is INITIAL.

Berikut adalah contoh valid dari deklarasi variabel.

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10.

Pada potongan kode di atas, d1 adalah variabel tipe C, d2 adalah variabel tipe d1, dan nilai_minimum adalah variabel integer ABAP tipe I.

Bab ini akan menjelaskan berbagai tipe variabel yang tersedia di ABAP. Ada tiga jenis variabel di ABAP -

  • Variabel Statis
  • Variabel Referensi
  • Variabel Sistem

Variabel Statis

  • Variabel statis dideklarasikan dalam subrutin, modul fungsi, dan metode statis.

  • Seumur hidup terkait dengan konteks deklarasi.

  • Dengan pernyataan 'CLASS-DATA', Anda dapat mendeklarasikan variabel di dalam kelas.

  • Pernyataan 'PARAMETERS' dapat digunakan untuk mendeklarasikan objek data dasar yang ditautkan ke bidang masukan pada layar pemilihan.

  • Anda juga dapat mendeklarasikan tabel internal yang ditautkan ke kolom input pada layar pemilihan dengan menggunakan pernyataan 'SELECT-OPTIONS'.

Berikut adalah konvensi yang digunakan saat menamai variabel -

  • Anda tidak dapat menggunakan karakter khusus seperti "t" dan "," untuk menamai variabel.

  • Nama objek data yang sudah ditentukan sebelumnya tidak dapat diubah.

  • Nama variabel tidak boleh sama dengan kata kunci atau klausa ABAP mana pun.

  • Nama variabel harus menyampaikan arti dari variabel tersebut tanpa perlu komentar lebih lanjut.

  • Tanda hubung dicadangkan untuk mewakili komponen struktur. Oleh karena itu, Anda harus menghindari tanda hubung dalam nama variabel.

  • Karakter garis bawah dapat digunakan untuk memisahkan kata majemuk.

Program ini menunjukkan bagaimana mendeklarasikan variabel menggunakan pernyataan PARAMETERS -

REPORT ZTest123_01. 
PARAMETERS: NAME(10) TYPE C, 
CLASS TYPE I, 
SCORE TYPE P DECIMALS 2, 
CONNECT TYPE MARA-MATNR.

Di sini, NAME mewakili parameter 10 karakter, CLASS menentukan parameter tipe integer dengan ukuran default dalam byte, SCORE mewakili parameter tipe yang dikemas dengan nilai hingga dua tempat desimal, dan CONNECT mengacu pada tipe MARA-MATNF dari Kamus ABAP .

Kode di atas menghasilkan keluaran sebagai berikut -

Variabel Referensi

Sintaks untuk mendeklarasikan variabel referensi adalah -

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
  • Tambahan REF TO mendeklarasikan variabel referensi ref.

  • Spesifikasi setelah REF TO menentukan tipe statis dari variabel referensi.

  • Tipe statis membatasi kumpulan objek yang bisa dirujuk <ref>.

  • Jenis dinamis dari variabel referensi adalah jenis atau kelas data yang dirujuknya saat ini.

  • Tipe statis selalu lebih umum atau sama dengan tipe dinamis.

  • Penambahan TYPE digunakan untuk membuat jenis referensi terikat dan sebagai nilai awal, dan hanya IS INITIAL yang dapat ditentukan setelah penambahan VALUE.

Contoh

CLASS C1 DEFINITION. 
PUBLIC SECTION. 
DATA Bl TYPE I VALUE 1. 
ENDCLASS. DATA: Oref TYPE REF TO C1 , 
Dref1 LIKE REF TO Oref, 
Dref2 TYPE REF TO I . 
CREATE OBJECT Oref. 
GET REFERENCE OF Oref INTO Dref1. 
CREATE DATA Dref2. 
Dref2→* = Dref1→*→Bl.
  • Dalam potongan kode di atas, referensi objek Oref dan dua variabel referensi data Dref1 dan Dref2 dideklarasikan.

  • Kedua variabel referensi data sepenuhnya diketik dan dapat didereferensi menggunakan operator dereferensi → * pada posisi operan.

Variabel Sistem

  • Variabel sistem ABAP dapat diakses dari semua program ABAP.

  • Bidang ini sebenarnya diisi oleh lingkungan waktu proses.

  • Nilai-nilai di bidang ini menunjukkan status sistem pada titik waktu tertentu.

  • Anda dapat menemukan daftar lengkap variabel sistem di tabel SYST di SAP.

  • Bidang individu dari struktur SYST dapat diakses dengan menggunakan "SYST-" atau "SY-".

Contoh

REPORT Z_Test123_01. 

WRITE:/'SY-ABCDE', SY-ABCDE,       
      /'SY-DATUM', SY-DATUM, 
      /'SY-DBSYS', SY-DBSYS, 
      /'SY-HOST ', SY-HOST, 
      /'SY-LANGU', SY-LANGU,
      /'SY-MANDT', SY-MANDT,
      /'SY-OPSYS', SY-OPSYS,
      /'SY-SAPRL', SY-SAPRL,
      /'SY-SYSID', SY-SYSID,
      /'SY-TCODE', SY-TCODE,
      /'SY-UNAME', SY-UNAME,
      /'SY-UZEIT', SY-UZEIT.

Kode di atas menghasilkan keluaran sebagai berikut -

SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ  
SY-DATUM 12.09.2015 
SY-DBSYS ORACLE                   
SY-HOST sapserver 
SY-LANGU EN 
SY-MANDT 800 
SY-OPSYS Windows NT 
SY-SAPRL 700 
SY-SYSID DMO 
SY-TCODE SE38 
SY-UNAME SAPUSER 
SY-UZEIT 14:25:48

Literal adalah objek data tanpa nama yang Anda buat dalam kode sumber program. Mereka sepenuhnya ditentukan oleh nilainya. Anda tidak dapat mengubah nilai literal. Konstanta diberi nama objek data yang dibuat secara statis dengan menggunakan pernyataan deklaratif. Sebuah konstanta dideklarasikan dengan memberikan nilai yang disimpan di area memori program. Nilai yang ditetapkan ke sebuah konstanta tidak dapat diubah selama eksekusi program. Nilai tetap ini juga dapat dianggap sebagai literal. Ada dua jenis literal - numerik dan karakter.

Literal Numerik

Literal angka adalah urutan angka yang dapat memiliki tanda awalan. Dalam literal bilangan, tidak ada pemisah desimal dan tidak ada notasi dengan mantissa dan eksponen.

Berikut adalah beberapa contoh literal numerik -

183. 
-97. 
+326.

Karakter Literal

Literal karakter adalah urutan karakter alfanumerik dalam kode sumber program ABAP yang diapit oleh tanda kutip tunggal. Literal karakter yang diapit tanda kutip memiliki tipe ABAP yang ditentukan sebelumnya dan dijelaskan sebagai literal bidang teks. Literal yang diapit "tanda kutip belakang" memiliki tipe ABAP STRING dan dijelaskan sebagai literal string. Panjang bidang ditentukan oleh jumlah karakter.

Note - Dalam literal bidang teks, tanda kosong akan diabaikan, tetapi dalam literal string hal itu diperhitungkan.

Berikut adalah beberapa contoh literal karakter.

Literal bidang teks

REPORT YR_SEP_12. 
Write 'Tutorials Point'. 
Write / 'ABAP Tutorial'.

Literal bidang string

REPORT YR_SEP_12. 
Write `Tutorials Point `. 
Write / `ABAP Tutorial `.

Outputnya sama dalam kedua kasus di atas -

Tutorials Point  
ABAP Tutorial

Note- Saat kami mencoba mengubah nilai konstanta, sintaks atau kesalahan waktu berjalan dapat terjadi. Konstanta yang Anda deklarasikan di bagian deklarasi kelas atau antarmuka milik atribut statis kelas atau antarmuka tersebut.

Pernyataan KONSTAN

Kita bisa mendeklarasikan objek data bernama dengan bantuan pernyataan CONSTANTS.

Berikut adalah sintaksnya -

CONSTANTS <f> TYPE <type> VALUE <val>.

Pernyataan CONSTANTS mirip dengan pernyataan DATA.

<f> menentukan nama untuk konstanta. TYPE <type> mewakili konstanta bernama <f>, yang mewarisi atribut teknis yang sama dengan tipe data <type> yang ada. VALUE <val> memberikan nilai awal ke nama konstanta yang dideklarasikan <f>.

Note- Kita harus menggunakan klausa NILAI dalam pernyataan KONSTAN. Klausa 'VALUE' digunakan untuk menetapkan nilai awal ke konstanta selama deklarasinya.

Kami memiliki 3 jenis konstanta seperti konstanta dasar, kompleks dan referensi. Pernyataan berikut menunjukkan bagaimana mendefinisikan konstanta dengan menggunakan pernyataan CONSTANTS -

REPORT YR_SEP_12. 
CONSTANTS PQR TYPE P DECIMALS 4 VALUE '1.2356'. 
Write: / 'The value of PQR is:', PQR.

Outputnya adalah -

The value of PQR is: 1.2356

Ini mengacu pada tipe data elementer dan dikenal sebagai konstanta elementer.

Berikut adalah contoh konstanta kompleks -

BEGIN OF EMPLOYEE,  
Name(25) TYPE C VALUE 'Management Team',  
Organization(40) TYPE C VALUE 'Tutorials Point Ltd',  
Place(10) TYPE C VALUE 'India',  
END OF EMPLOYEE.

Dalam potongan kode di atas, EMPLOYEE adalah konstanta kompleks yang terdiri dari bidang Nama, Organisasi, dan Tempat.

Pernyataan berikut mendeklarasikan referensi konstan -

CONSTANTS null_pointer TYPE REF TO object VALUE IS INITIAL.

Kami dapat menggunakan referensi konstan dalam perbandingan atau kami dapat meneruskannya ke prosedur.

ABAP menyediakan sekumpulan operator yang kaya untuk memanipulasi variabel. Semua operator ABAP diklasifikasikan ke dalam empat kategori -

  • Operator Aritmatika
  • Operator Perbandingan
  • Operator Bitwise
  • Operator String Karakter

Operator Aritmatika

Operator aritmatika digunakan dalam ekspresi matematika dengan cara yang sama seperti yang digunakan dalam aljabar. Daftar berikut menjelaskan operator aritmatika. Asumsikan variabel integer A memiliki 20 dan variabel B memiliki 40.

S.No. Operator Aritmatika & Deskripsi
1

+ (Addition)

Menambahkan nilai di kedua sisi operator. Contoh: A + B akan menghasilkan 60.

2

− (Subtraction)

Mengurangi operan tangan kanan dari operan tangan kiri. Contoh: A - B akan memberikan -20.

3

* (Multiplication)

Mengalikan nilai di kedua sisi operator. Contoh: A * B akan menghasilkan 800.

4

/ (Division)

Membagi operan tangan kiri dengan operan tangan kanan. Contoh: B / A akan menghasilkan 2.

5

MOD (Modulus)

Membagi operan tangan kiri dengan operan tangan kanan dan mengembalikan sisanya. Contoh: B MOD A akan menghasilkan 0.

Contoh

REPORT YS_SEP_08. 
DATA: A TYPE I VALUE 150, 
B TYPE I VALUE 50, 
Result TYPE I. 
Result =  A / B. 
WRITE / Result.

Kode di atas menghasilkan keluaran sebagai berikut -

3

Operator Perbandingan

Mari kita bahas berbagai jenis operator perbandingan untuk berbagai operan.

S.No. Operator Perbandingan & Deskripsi
1

= (equality test). Alternate form is EQ.

Memeriksa apakah nilai dari dua operan sama atau tidak, jika ya maka kondisinya menjadi benar. Contoh (A = B) tidak benar.

2

<> (Inequality test). Alternate form is NE.

Memeriksa apakah nilai dari dua operan sama atau tidak. Jika nilainya tidak sama maka kondisinya menjadi benar. Contoh (A <> B) benar.

3

> (Greater than test). Alternate form is GT.

Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan. Jika ya maka kondisinya menjadi benar. Contoh (A> B) tidak benar.

4

< (Less than test). Alternate form is LT.

Memeriksa apakah nilai operan kiri kurang dari nilai operan kanan. Jika ya, maka kondisinya menjadi benar. Contoh (A <B) benar.

5

>= (Greater than or equals) Alternate form is GE.

Memeriksa apakah nilai operan kiri lebih besar dari atau sama dengan nilai Operand kanan. Jika ya, maka kondisinya menjadi benar. Contoh (A> = B) tidak benar.

6

<= (Less than or equals test). Alternate form is LE.

Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan. Jika ya, maka kondisinya menjadi benar. Contoh (A <= B) benar.

7

a1 BETWEEN a2 AND a3 (Interval test)

Memeriksa apakah a1 terletak di antara a2 dan a3 (inklusif). Jika ya, maka kondisinya menjadi benar. Contoh (A ANTARA B DAN C) adalah benar.

8

IS INITIAL

Kondisi menjadi benar jika konten variabel tidak berubah dan nilai awalnya telah ditetapkan secara otomatis. Contoh (A IS AWAL) tidak benar

9

IS NOT INITIAL

Kondisi menjadi benar jika isi variabel telah berubah. Contoh (A BUKAN AWAL) adalah benar.

Note- Jika jenis data atau panjang variabel tidak cocok, maka konversi otomatis dilakukan. Penyesuaian tipe otomatis dilakukan untuk salah satu atau kedua nilai sambil membandingkan dua nilai dari tipe data yang berbeda. Jenis konversi ditentukan oleh jenis data dan urutan preferensi jenis data.

Berikut adalah urutan preferensi -

  • Jika satu bidang berjenis I, bidang lainnya diubah menjadi tipe I.

  • Jika satu bidang berjenis P, maka bidang lainnya diubah menjadi jenis P.

  • Jika satu field bertipe D, maka field yang lain diubah menjadi tipe D. Tetapi tipe C dan N tidak dikonversi dan akan dibandingkan secara langsung. Serupa halnya dengan tipe T.

  • Jika satu bidang berjenis N dan bidang lainnya berjenis C atau X, kedua bidang akan dikonversi ke tipe P.

  • Jika satu bidang berjenis C dan bidang lainnya berjenis X, jenis X akan diubah ke jenis C.

Contoh 1

REPORT YS_SEP_08. 

DATA: A TYPE I VALUE 115,
      B TYPE I VALUE 119.
      IF A LT B.
      WRITE: / 'A is less than B'.
      ENDIF

Kode di atas menghasilkan keluaran sebagai berikut -

A is less than B

Contoh 2

REPORT YS_SEP_08. 

DATA: A TYPE I.
      IF A IS INITIAL.
      WRITE: / 'A is assigned'.
      ENDIF.

Kode di atas menghasilkan keluaran sebagai berikut -

A is assigned.

Operator Bitwise

ABAP juga menyediakan serangkaian operator logika bitwise yang dapat digunakan untuk membuat ekspresi aljabar Boolean. Operator bitwise dapat digabungkan dalam ekspresi kompleks menggunakan tanda kurung dan seterusnya.

S.No. Operator & Deskripsi Bitwise
1

BIT-NOT

Operator unary yang membalik semua bit dalam bilangan heksadesimal ke nilai yang berlawanan. Misalnya, menerapkan operator ini ke bilangan heksadesimal yang memiliki nilai level bit 10101010 (misalnya 'AA') akan menghasilkan 01010101.

2

BIT-AND

Operator biner ini membandingkan setiap bidang sedikit demi sedikit menggunakan operator Boolean AND.

3

BIT-XOR

Operator biner yang membandingkan setiap bidang sedikit demi sedikit menggunakan operator Boolean XOR (OR eksklusif).

4

BIT-OR

Operator biner yang membandingkan setiap bidang sedikit demi sedikit menggunakan operator Boolean OR.

Misalnya, berikut adalah tabel kebenaran yang memperlihatkan nilai yang dihasilkan saat menerapkan operator Boolean AND, OR, atau XOR terhadap dua nilai bit yang terdapat di bidang A dan bidang B.

Bidang A Bidang B DAN ATAU XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Operator String Karakter

Berikut adalah daftar operator string karakter -

S.No. Deskripsi & Operator String Karakter
1

CO (Contains Only)

Memeriksa apakah A hanya terdiri dari karakter dalam B.

2

CN (Not Contains ONLY)

Memeriksa apakah A berisi karakter yang tidak ada di B.

3

CA (Contains ANY)

Memeriksa apakah A mengandung setidaknya satu karakter B.

4

NA (NOT Contains Any)

Memeriksa apakah A tidak mengandung karakter B.

5

CS (Contains a String)

Memeriksa apakah A berisi karakter string B.

6

NS (NOT Contains a String)

Memeriksa apakah A tidak mengandung karakter string B.

7

CP (Contains a Pattern)

Ia memeriksa apakah A berisi pola di B.

8

NP (NOT Contains a Pattern)

Ia memeriksa apakah A tidak mengandung pola di B.

Contoh

REPORT YS_SEP_08. 
DATA: P(10) TYPE C VALUE 'APPLE',
      Q(10) TYPE C VALUE 'CHAIR'.
      IF P CA Q.
	
      WRITE: / 'P contains at least one character of Q'.
      ENDIF.

Kode di atas menghasilkan keluaran sebagai berikut -

P contains at least one character of Q.

Mungkin ada situasi ketika Anda perlu mengeksekusi blok kode beberapa kali. Secara umum, pernyataan dieksekusi secara berurutan: Pernyataan pertama dalam suatu fungsi dijalankan pertama, diikuti oleh yang kedua, dan seterusnya.

Bahasa pemrograman menyediakan berbagai struktur kontrol yang memungkinkan jalur eksekusi yang lebih rumit. SEBUAHloop statement memungkinkan kita untuk mengeksekusi pernyataan atau kelompok pernyataan beberapa kali dan berikut ini adalah bentuk umum dari pernyataan loop di sebagian besar bahasa pemrograman.

Bahasa pemrograman ABAP menyediakan jenis loop berikut untuk menangani persyaratan perulangan.

S.No. Jenis & Deskripsi Loop
1 WHILE loop

Mengulangi pernyataan atau sekelompok pernyataan saat kondisi tertentu benar. Ini menguji kondisi sebelum menjalankan badan perulangan.

2 Lakukan loop

Pernyataan DO berguna untuk mengulangi tugas tertentu beberapa kali.

3 Loop bersarang

Anda dapat menggunakan satu atau lebih loop di dalam loop WHILE atau DO lainnya.

Pernyataan Kontrol Loop

Pernyataan kontrol loop mengubah eksekusi dari urutan normalnya. ABAP menyertakan pernyataan kontrol yang memungkinkan perulangan diakhiri sebelum waktunya. Ini mendukung pernyataan kontrol berikut.

S.No. Pernyataan & Deskripsi Kontrol
1 TERUS

Menyebabkan loop melewati sisa tubuhnya dan memulai loop berikutnya.

2 MEMERIKSA

Jika kondisinya salah, maka pernyataan yang tersisa setelah PERIKSA diabaikan dan sistem memulai pengulangan berikutnya.

3 KELUAR

Menghentikan perulangan sepenuhnya dan mentransfer eksekusi ke pernyataan segera setelah perulangan.

Struktur pengambilan keputusan memiliki satu atau lebih kondisi untuk dievaluasi atau diuji oleh program, bersama dengan pernyataan atau pernyataan yang akan dieksekusi, jika kondisi ditentukan benar, dan secara opsional, pernyataan lain untuk dieksekusi, jika kondisinya ditentukan sebagai salah.

Berikut ini adalah bentuk umum dari struktur pengambilan keputusan khas yang ditemukan di sebagian besar bahasa pemrograman -

Bahasa pemrograman ABAP menyediakan jenis pernyataan pengambilan keputusan berikut.

S.No. Pernyataan & Deskripsi
1 Pernyataan IF

Pernyataan IF terdiri dari ekspresi logis yang diikuti oleh satu atau lebih pernyataan.

2 JIKA .. Pernyataan Lain

Pernyataan IF dapat diikuti dengan pernyataan ELSE opsional yang dijalankan saat ekspresi salah.

3 Pernyataan IF bersarang

Anda dapat menggunakan satu pernyataan IF atau ELSEIF di dalam pernyataan IF atau ELSEIF lainnya.

4 Pernyataan Kontrol CASE

Pernyataan CASE digunakan saat kita perlu membandingkan dua atau lebih bidang atau variabel.

Strings, yang banyak digunakan dalam pemrograman ABAP, adalah urutan karakter.

Kami menggunakan variabel tipe C data untuk menampung karakter alfanumerik, dengan minimal 1 karakter dan maksimal 65.535 karakter. Secara default, ini diratakan ke kiri.

Membuat String

Deklarasi dan inisialisasi berikut membuat string yang terdiri dari kata 'Hello'. Ukuran string sama persis dengan jumlah karakter pada kata 'Halo'.

Data my_Char(5) VALUE 'Hello'.

Program berikut adalah contoh pembuatan string.

REPORT YT_SEP_15. 
DATA my_Char(5) VALUE 'Hello'. 
Write my_Char.

Kode di atas menghasilkan keluaran sebagai berikut -

Hello

Panjang String

Untuk menemukan panjang string karakter, kita bisa menggunakan STRLEN statement. Fungsi STRLEN () mengembalikan jumlah karakter yang terkandung dalam string.

Contoh

REPORT YT_SEP_15. 
DATA: title_1(10) VALUE 'Tutorials',
      length_1 TYPE I. 
	
length_1 = STRLEN( title_1 ). 
Write: / 'The Length of the Title is:', length_1.

Kode di atas menghasilkan keluaran sebagai berikut -

The Length of the Title is: 9

ABAP mendukung berbagai pernyataan yang memanipulasi string.

S.No. Pernyataan & Tujuan
1

CONCATENATE

Dua string digabungkan untuk membentuk string ketiga.

2

CONDENSE

Pernyataan ini menghapus karakter spasi.

3

STRLEN

Digunakan untuk mencari panjang bidang.

4

REPLACE

Digunakan untuk mengganti karakter.

5

SEARCH

Untuk menjalankan pencarian dalam string karakter.

6

SHIFT

Digunakan untuk memindahkan isi string ke kiri atau ke kanan.

7

SPLIT

Digunakan untuk membagi konten bidang menjadi dua atau lebih bidang.

Contoh berikut menggunakan beberapa pernyataan yang disebutkan di atas -

Contoh

REPORT YT_SEP_15. 
DATA: title_1(10) VALUE 'Tutorials', 
      title_2(10) VALUE 'Point',
      spaced_title(30) VALUE 'Tutorials  Point  Limited',
      sep,
      dest1(30),
      dest2(30).
	
CONCATENATE title_1 title_2 INTO dest1. 
Write: / 'Concatenation:', dest1. 

CONCATENATE title_1 title_2 INTO dest2 SEPARATED BY sep. 
Write: / 'Concatenation with Space:', dest2. 

CONDENSE spaced_title.
Write: / 'Condense with Gaps:', spaced_title. 

CONDENSE spaced_title NO-GAPS. 
Write: / 'Condense with No Gaps:', spaced_title.

Kode di atas menghasilkan keluaran sebagai berikut -

Concatenation: TutorialsPoint 
Concatenation with Space: Tutorials Point 
Condense with Gaps: Tutorials Point Limited 
Condense with No Gaps: TutorialsPointLimited

Note -

  • Dalam kasus Penggabungan, 'sep' menyisipkan spasi di antara bidang.

  • Pernyataan CONDENSE menghapus spasi kosong di antara kolom, tetapi hanya menyisakan spasi 1 karakter.

  • 'NO-GAPS' adalah tambahan opsional untuk pernyataan CONDENSE yang menghapus semua spasi.

ABAP secara implisit mereferensikan kalender Gregorian, berlaku di sebagian besar dunia. Kami dapat mengonversi keluaran ke kalender khusus negara. Tanggal adalah waktu yang ditentukan untuk hari, minggu, atau bulan yang tepat sehubungan dengan kalender. Waktu ditentukan ke detik atau menit yang tepat sehubungan dengan satu hari. ABAP selalu menghemat waktu dalam format 24 jam. Keluaran dapat memiliki format khusus negara. Tanggal dan waktu biasanya diartikan sebagai tanggal lokal yang berlaku di zona waktu saat ini.

ABAP menyediakan dua tipe built-in untuk bekerja dengan tanggal dan waktu -

  • Tipe D data
  • Tipe data T.

Berikut ini adalah format dasarnya -

DATA: date TYPE D, 
      time TYPE T.  
	
DATA: year TYPE I, 
month TYPE I,  
day TYPE I, 
hour TYPE I,  
minute TYPE I, 
second TYPE I.

Kedua tipe ini adalah tipe karakter dengan panjang tetap yang masing-masing memiliki bentuk YYYYMMDD dan HHMMSS.

Stempel waktu

Selain tipe built-in ini, dua tipe lainnya TIMESTAMP dan TIMESTAMPLdigunakan di banyak tabel aplikasi standar untuk menyimpan stempel waktu dalam format UTC. Tabel berikut menunjukkan jenis tanggal dan waktu dasar yang tersedia di ABAP.

S.No. Tipe & Deskripsi Data
1

D

Jenis tanggal panjang tetap bawaan dengan format YYYYMMDD. Misalnya, nilai 20100913 mewakili tanggal 13 September 2010.

2

T

Jenis waktu panjang tetap bawaan dari bentuk HHMMSS. Misalnya, nilai 102305 menunjukkan waktu 10:23:05.

3

TIMESTAMP (Tipe P - Panjang 8 Tanpa desimal)

Jenis ini digunakan untuk mewakili stempel waktu singkat dalam bentuk YYYYMMDDhhmmss. Misalnya, nilai 20100913102305 mewakili tanggal 13 September 2010 pukul 10:23:05.

4

TIMESTAMPL (Tipe P - Panjang 11 Desimal 7)

TIMESTAMPL mewakili stempel waktu yang panjang dalam format YYYYMMDDhhmmss, mmmuuun. Di sini, digit tambahan 'mmmuuun' mewakili pecahan dari satu detik.

Tanggal dan Waktu Saat Ini

Cuplikan kode berikut mengambil tanggal dan waktu sistem saat ini.

REPORT YR_SEP_15. 
DATA: date_1 TYPE D. 

date_1 = SY-DATUM. 
Write: / 'Present Date is:', date_1 DD/MM/YYYY. 

date_1 = date_1 + 06. 
Write: / 'Date after 6 Days is:', date_1 DD/MM/YYYY.

Kode di atas menghasilkan keluaran sebagai berikut -

Present Date is: 21.09.2015 
Date after 6 Days is: 27.09.2015

Variabel date_1 diberi nilai tanggal sistem saat ini SY-DATUM. Selanjutnya, kami menambah nilai tanggal dengan 6. Dalam hal perhitungan tanggal di ABAP, ini berarti bahwa kami meningkatkan komponen hari dari objek tanggal sebanyak 6 hari. Lingkungan waktu proses ABAP cukup pintar untuk menggulir nilai tanggal setiap kali mencapai akhir bulan.

Cara kerja penghitungan waktu mirip dengan penghitungan tanggal. Kode berikut menambah waktu sistem saat ini sebesar 75 detik menggunakan aritmatika waktu dasar.

REPORT YR_SEP_15. 
DATA: time_1 TYPE T. 
      time_1 = SY-UZEIT. 

Write /(60) time_1 USING EDIT MASK 
'Now the Time is: __:__:__'. 
time_1 = time_1 + 75. 

Write /(60) time_1 USING EDIT MASK 
'A Minute and a Quarter from Now, it is: __:__:__'.

Kode di atas menghasilkan keluaran sebagai berikut -

Now the Time is 11:45:05 
A Minute and a Quarter from Now, it is: 11:46:20

Bekerja dengan Stempel Waktu

Anda dapat mengambil waktu sistem saat ini dan menyimpannya dalam variabel stempel waktu menggunakan GET TIME STAMPseperti yang ditunjukkan pada kode berikut. Pernyataan GET TIME STAMP menyimpan cap waktu dalam format long-hand atau short-hand sesuai dengan jenis objek data timestamp yang digunakan. Nilai stempel waktu dienkode menggunakan standar UTC.

REPORT YR_SEP_12. 
DATA: stamp_1 TYPE TIMESTAMP,
 
stamp_2 TYPE TIMESTAMPL. 
GET TIME STAMP FIELD stamp_1. 
Write: / 'The short time stamp is:', stamp_1 

TIME ZONE SY-ZONLO. 
GET TIME STAMP FIELD stamp_2. 
Write: / 'The long time stamp is:', stamp_2 
TIME ZONE SY-ZONLO.

Kode di atas menghasilkan keluaran sebagai berikut -

The short time stamp is: 18.09.2015 11:19:40 
The long time stamp is: 18.09.2015 11:19:40,9370000

Dalam contoh di atas, kami menampilkan stempel waktu menggunakan penambahan ZONA WAKTU dari pernyataan WRITE. Penambahan ini memformat keluaran stempel waktu sesuai dengan aturan untuk zona waktu yang ditentukan. Bidang sistem SY-ZONLO digunakan untuk menampilkan zona waktu lokal yang dikonfigurasi dalam preferensi pengguna.

ABAP menawarkan berbagai jenis opsi format untuk memformat keluaran program. Misalnya, Anda dapat membuat daftar yang menyertakan berbagai item dalam berbagai warna atau gaya pemformatan.

Pernyataan WRITE adalah pernyataan format yang digunakan untuk menampilkan data di layar. Ada beberapa opsi pemformatan berbeda untuk pernyataan WRITE. Sintaks dari pernyataan WRITE adalah -

WRITE <format> <f> <options>.

Dalam sintaks ini, <format> mewakili spesifikasi format keluaran, yang dapat berupa garis miring (/) yang menunjukkan tampilan keluaran dimulai dari baris baru. Selain garis miring, spesifikasi format menyertakan nomor kolom dan panjang kolom. Misalnya, pernyataan WRITE / 04 (6) menunjukkan bahwa baris baru dimulai dengan kolom 4 dan panjang kolom adalah 6, sedangkan pernyataan WRITE 20 menunjukkan baris saat ini dengan kolom 20. Parameter <f> mewakili variabel data atau teks bernomor.

Tabel berikut menjelaskan berbagai klausa yang digunakan untuk pemformatan -

S.No. Klausul & Deskripsi
1

LEFT-JUSTIFIED

Menentukan bahwa keluaran rata kiri.

2

CENTERED

Menunjukkan bahwa output berada di tengah.

3

RIGHT-JUSTIFIED

Menentukan bahwa keluaran rata kanan.

4

UNDER <g>

Outputnya dimulai tepat di bawah bidang <g>.

5

NO-GAP

Menentukan bahwa bidang kosong setelah <f> ditolak.

6

USING EDIT MASK <m>

Menunjukkan spesifikasi template format <m>. Menggunakan Tanpa Masker EDIT: Ini menentukan bahwa template format yang ditentukan dalam Kamus ABAP dinonaktifkan.

7

NO-ZERO

Jika bidang hanya berisi nol, maka akan diganti dengan yang kosong.

Berikut adalah opsi pemformatan untuk bidang Jenis Numerik -

S.No. Klausul & Deskripsi
1

NO-SIGN

Menentukan bahwa tidak ada tanda depan yang ditampilkan di layar.

2

EXPONENT <e>

Menentukan bahwa dalam tipe F (bidang floating point), eksponen didefinisikan dalam <e>.

3

ROUND <r>

Bidang tipe P (tipe data numerik yang dikemas) pertama kali dikalikan dengan 10 ** (- r) dan kemudian dibulatkan menjadi nilai integer.

4

CURRENCY <c>

Menunjukkan bahwa pemformatan dilakukan sesuai dengan nilai mata uang <c> yang disimpan dalam tabel database TCURX.

5

UNIT <u>

Menentukan bahwa jumlah tempat desimal ditetapkan sesuai dengan unit <u> seperti yang ditentukan dalam tabel database T006 untuk tipe P.

6

DECIMALS <d>

Menentukan bahwa jumlah digit <d> harus ditampilkan setelah koma desimal.

Misalnya, tabel berikut menunjukkan opsi pemformatan yang berbeda untuk bidang tanggal -

Opsi Pemformatan Contoh
DD / MM / YY 13/01/15
MM / DD / YY 01/13/15
DD / MM / YYYY 13/01/2015
MM / DD / YYYY 13/01/2015
DDMMYY 130115
MMDDYY 011315
YYMMDD 150113

Di sini, DD adalah tanggal dalam dua angka, MM berarti bulan dalam dua angka, YY adalah tahun dalam dua angka, dan YYYY adalah tahun dalam empat angka.

Mari kita lihat contoh kode ABAP yang mengimplementasikan beberapa opsi pemformatan di atas -

REPORT ZTest123_01.
 
DATA: n(9) TYPE C VALUE 'Tutorials', 
m(5) TYPE C VALUE 'Point'. 

WRITE: n, m. 
WRITE: / n, 
/ m UNDER n. 

WRITE: / n NO-GAP, m. 
DATA time TYPE T VALUE '112538'. 

WRITE: / time, 
/(8) time Using EDIT MASK '__:__:__'.

Kode di atas menghasilkan keluaran sebagai berikut -

Tutorials Point 
Tutorials  
Point 
TutorialsPoint 
112538 
11:25:38

Sebuah exceptionadalah masalah yang muncul selama menjalankan program. Ketika pengecualian terjadi, aliran normal program terganggu dan aplikasi program berhenti secara tidak normal, yang tidak disarankan, oleh karena itu pengecualian ini harus ditangani.

Pengecualian memberikan cara untuk mentransfer kontrol dari satu bagian program ke program lainnya. Penanganan pengecualian ABAP dibangun di atas tiga kata kunci - RAISE, TRY, CATCH and CLEANUP. Dengan asumsi pemblokiran akan memunculkan pengecualian, metode menangkap pengecualian menggunakan kombinasi kata kunci COBA dan CATCH. Blok TRY - CATCH ditempatkan di sekitar kode yang mungkin menghasilkan pengecualian. Berikut ini sintaks untuk menggunakan TRY - CATCH -

TRY.      
Try Block <Code that raises an exception> 
  
CATCH  
Catch Block <exception handler M>  
. . . 
. . . 
. . . 
CATCH  
Catch Block <exception handler R>
   
CLEANUP. 
   Cleanup block <to restore consistent state>
 
ENDTRY.

RAISE- Pengecualian dimunculkan untuk menunjukkan bahwa beberapa situasi luar biasa telah terjadi. Biasanya, penangan pengecualian mencoba memperbaiki kesalahan atau mencari solusi alternatif.

TRY- Blok TRY berisi pengkodean aplikasi yang pengecualiannya akan ditangani. Blok pernyataan ini diproses secara berurutan. Ini dapat berisi struktur kontrol lebih lanjut dan panggilan prosedur atau program ABAP lainnya. Ini diikuti oleh satu atau lebih blok tangkapan.

CATCH- Program menangkap pengecualian dengan penangan pengecualian di tempat dalam program di mana Anda ingin menangani masalah. Kata kunci CATCH menunjukkan penangkapan pengecualian.

CLEANUP- Pernyataan dari blok CLEANUP dijalankan setiap kali pengecualian terjadi di blok TRY yang tidak ditangkap oleh penangan dari konstruksi TRY - ENDTRY yang sama. Dalam klausa CLEANUP, sistem dapat memulihkan objek ke keadaan yang konsisten atau melepaskan sumber daya eksternal. Artinya, pekerjaan pembersihan dapat dijalankan untuk konteks blok TRY.

Meningkatkan Pengecualian

Pengecualian dapat dimunculkan di titik mana pun dalam metode, modul fungsi, subrutin, dan seterusnya. Ada dua cara untuk memunculkan pengecualian -

  • Pengecualian yang dimunculkan oleh sistem runtime ABAP.

    Misalnya Y = 1 / 0. Ini akan menghasilkan kesalahan waktu berjalan tipe CX_SY_ZERODIVIDE.

  • Pengecualian yang diajukan oleh programmer.

    Naikkan dan buat objek pengecualian secara bersamaan. Naikkan pengecualian dengan objek pengecualian yang sudah ada di skenario pertama. Sintaksnya adalah: RAISE EXCEPTION exep.

Pengecualian Penangkapan

Penangan digunakan untuk menangkap pengecualian.

Mari kita lihat cuplikan kode -

DATA: result TYPE P LENGTH 8 DECIMALS 2, 
exref TYPE REF TO CX_ROOT, 
msgtxt TYPE STRING. 
PARAMETERS: Num1 TYPE I, Num2 TYPE I. 
TRY. 
result = Num1 / Num2. 
CATCH CX_SY_ZERODIVIDE INTO exref. 
msgtxt = exref→GET_TEXT( ). 

CATCH CX_SY_CONVERSION_NO_NUMBER INTO exref. 
msgtxt = exref→GET_TEXT( ).

Dalam potongan kode di atas, kami mencoba membagi Num1 dengan Num2 untuk mendapatkan hasil dalam variabel tipe float.

Dua jenis pengecualian dapat dibuat.

  • Kesalahan konversi angka.

  • Bagi dengan nol pengecualian. Penangan menangkap pengecualian CX_SY_CONVERSION_NO_NUMBER dan juga pengecualian CX_SY_ZERODIVIDE. Di sini metode GET_TEXT () dari kelas pengecualian digunakan untuk mendapatkan deskripsi pengecualian.

Atribut Pengecualian

Berikut adalah lima atribut dan metode pengecualian -

S.No. Atribut & Deskripsi
1

Textid

Digunakan untuk menentukan teks berbeda untuk pengecualian dan juga memengaruhi hasil metode get_text.

2

Previous

Atribut ini dapat menyimpan pengecualian asli yang memungkinkan Anda membuat rangkaian pengecualian.

3

get_text

Ini mengembalikan representasi tekstual sebagai string sesuai dengan bahasa sistem pengecualian.

4

get_longtext

Ini mengembalikan varian panjang dari representasi tekstual dari pengecualian sebagai string.

5

get_source_position

Memberikan nama program dan nomor baris tercapai di mana pengecualian dimunculkan.

Contoh

REPORT ZExceptionsDemo. 
PARAMETERS Num_1 TYPE I. 

DATA res_1 TYPE P DECIMALS 2. 
DATA orf_1 TYPE REF TO CX_ROOT. 
DATA txt_1 TYPE STRING. 

start-of-selection. 
Write: / 'Square Root and Division with:', Num_1. 
write: /. 

TRY. 
IF ABS( Num_1 ) > 150. 
RAISE EXCEPTION TYPE CX_DEMO_ABS_TOO_LARGE. 
ENDIF.
  
TRY. 
res_1 = SQRT( Num_1 ). 
Write: / 'Result of square root:', res_1. 
res_1 = 1 / Num_1. 

Write: / 'Result of division:', res_1. 
CATCH CX_SY_ZERODIVIDE INTO orf_1. 
txt_1 = orf_1→GET_TEXT( ). 
CLEANUP. 
CLEAR res_1. 
ENDTRY. 

CATCH CX_SY_ARITHMETIC_ERROR INTO orf_1. 
txt_1 = orf_1→GET_TEXT( ).

CATCH CX_ROOT INTO orf_1. 
txt_1 = orf_1→GET_TEXT( ). 
ENDTRY. 
IF NOT txt_1 IS INITIAL. 
Write / txt_1. 
ENDIF. 
Write: / 'Final Result is:', res_1.

Dalam contoh ini, jika angkanya lebih besar dari 150, pengecualian CX_DEMO_ABS_TOO_LARGE akan dimunculkan. Kode di atas menghasilkan keluaran sebagai berikut untuk nomor 160.

Square Root and Division with: 160 
The absolute value of number is too high 
Final Result is:  0.00

Seperti yang Anda ketahui, SQL dapat dibagi menjadi dua bagian -

  • DML (Bahasa Manipulasi Data)
  • DDL (Bahasa Definisi Data)

Bagian DML terdiri dari perintah query dan update seperti SELECT, INSERT, UPDATE, DELETE, dll. Dan program ABAP menangani bagian DML dari SQL. Bagian DDL terdiri dari perintah seperti CREATE TABLE, CREATE INDEX, DROP TABLE, ALTER TABLE, dll. Dan ABAP Dictionary menangani bagian DDL dari SQL.

Kamus ABAP dapat dilihat sebagai metadata (yaitu data tentang data) yang berada di database SAP bersama dengan metadata yang dikelola oleh database. Kamus digunakan untuk membuat dan mengelola definisi data dan untuk membuat Tabel, Elemen Data, Domain, Tampilan, dan Jenis.

Jenis Dasar dalam Kamus ABAP

Jenis dasar dalam Kamus ABAP adalah sebagai berikut -

  • Data elements menjelaskan tipe dasar dengan mendefinisikan tipe data, panjang dan kemungkinan tempat desimal.

  • Structures dengan komponen yang bisa memiliki tipe apa saja.

  • Table types menggambarkan struktur tabel internal.

Berbagai objek dalam lingkungan Kamus dapat dirujuk dalam program ABAP. Kamus ini dikenal sebagai area global. Objek dalam Dictionary bersifat global untuk semua program ABAP dan data dalam program ABAP dapat dideklarasikan dengan mengacu pada objek global Dictionary ini.

Kamus mendukung definisi tipe yang ditentukan pengguna dan tipe ini digunakan dalam program ABAP. Mereka juga menentukan struktur objek database seperti tabel, tampilan, dan indeks. Objek-objek ini dibuat secara otomatis dalam database yang mendasari dalam definisi kamus mereka ketika objek diaktifkan. Kamus juga menyediakan alat pengeditan seperti Bantuan Pencarian dan alat pengunci seperti Objek Kunci.

Tugas Kamus

Kamus ABAP mencapai yang berikut -

  • Menerapkan integritas data.
  • Mengelola definisi data tanpa redundansi.
  • Terintegrasi erat dengan meja kerja pengembangan ABAP lainnya.

Contoh

Tipe kompleks apa pun yang ditentukan pengguna dapat dibangun dari 3 tipe dasar dalam Kamus. Data pelanggan disimpan dalam struktur 'Pelanggan' dengan komponen Nama, Alamat dan Telepon seperti yang digambarkan pada gambar berikut. Nama juga merupakan struktur dengan komponen, Nama depan dan Nama belakang. Kedua komponen ini bersifat elementer karena tipenya ditentukan oleh elemen data.

Jenis komponen Alamat ditentukan oleh struktur yang komponennya juga merupakan struktur, dan komponen Telepon ditentukan oleh jenis tabel karena pelanggan dapat memiliki lebih dari satu nomor telepon. Jenis digunakan dalam program ABAP dan juga untuk menentukan jenis parameter antarmuka modul fungsi.

Tiga objek dasar untuk mendefinisikan data dalam Kamus ABAP adalah Domain, elemen Data, dan Tabel. Domain digunakan untuk definisi teknis dari sebuah field tabel seperti jenis dan panjang field, dan elemen data digunakan untuk definisi semantik (deskripsi singkat). Elemen data mendeskripsikan arti domain dalam konteks bisnis tertentu. Ini terutama berisi bantuan bidang dan label bidang di layar.

Domain ditetapkan ke elemen data, yang pada gilirannya ditetapkan ke bidang tabel atau bidang struktur. Misalnya, domain MATNR (nomor materi CHAR) ditetapkan ke elemen data seperti MATNR_N, MATNN dan MATNR_D, dan ini ditetapkan ke banyak bidang tabel dan bidang struktur.

Membuat Domain

Sebelum Anda membuat domain baru, periksa apakah ada domain yang memiliki spesifikasi teknis yang sama yang diperlukan di bidang tabel Anda. Jika demikian, kami seharusnya menggunakan domain yang sudah ada itu. Mari kita bahas prosedur pembuatan domain.

Step 1 - Buka Transaksi SE11.

Step 2- Pilih tombol radio untuk Domain di layar awal Kamus ABAP, dan masukkan nama domain seperti yang ditunjukkan pada gambar layar berikut. Klik tombol BUAT. Anda dapat membuat domain di bawah ruang nama pelanggan, dan nama objek selalu dimulai dengan 'Z' atau 'Y'.

Step 3- Masukkan deskripsi di kolom teks singkat dari layar pemeliharaan domain. Dalam hal ini, ini adalah "Domain Pelanggan".Note - Anda tidak dapat memasukkan atribut lain sebelum Anda memasukkan atribut ini.

Step 4- Masukkan Tipe Data, Jumlah Karakter, dan Tempat Desimal di blok Format pada tab Definisi. Tekan tombol pada Output Length dan itu mengusulkan dan menampilkan panjang output. Jika Anda menimpa panjang keluaran yang diusulkan, Anda mungkin melihat peringatan saat mengaktifkan domain. Anda bisa mengisi Convers. Bidang Rutin, Tanda Tangan, dan Huruf Kecil jika diperlukan. Tetapi ini selalu merupakan atribut opsional.

Step 5- Pilih tab Rentang Nilai. Jika domain dibatasi untuk hanya memiliki nilai tetap, masukkan nilai atau interval tetap. Tentukan tabel nilai jika sistem harus mengusulkan tabel ini sebagai tabel periksa saat menentukan kunci asing untuk bidang yang merujuk ke domain ini. Tetapi semua ini adalah atribut opsional.

Step 6- Simpan perubahan Anda. Munculan Buat Entri Direktori Objek muncul dan meminta paket. Anda dapat memasukkan nama paket tempat Anda bekerja. Jika Anda tidak memiliki paket apa pun, Anda dapat membuatnya di Object Navigator atau Anda dapat menyimpan domain Anda menggunakan tombol Objek Lokal.

Step 7- Aktifkan domain Anda. Klik pada ikon Activate (ikon korek api) atau tekan CTRL + F3 untuk mengaktifkan domain. Sebuah jendela pop-up muncul, mencantumkan 2 objek yang saat ini tidak aktif seperti yang ditunjukkan pada snapshot berikut -

Step 8- Pada titik ini, entri teratas berlabel 'DOMA' dengan nama ZSEP_18 harus diaktifkan. Saat ini disorot, klik tombol centang hijau. Jendela ini menghilang dan bilah status akan menampilkan pesan 'Objek diaktifkan'.

Jika pesan kesalahan atau peringatan terjadi saat Anda mengaktifkan domain, log aktivasi ditampilkan secara otomatis. Log aktivasi menampilkan informasi tentang aliran aktivasi. Anda juga dapat memanggil log aktivasi dengan Utilities (M) → Activation log.

Elemen data mendeskripsikan bidang individu dalam Kamus Data ABAP. Mereka adalah unit terkecil yang tidak dapat dibagi dari jenis kompleks, dan digunakan untuk menentukan jenis bidang tabel, komponen struktur, atau jenis baris tabel. Informasi tentang arti bidang tabel dan juga informasi tentang mengedit bidang layar yang sesuai dapat ditetapkan ke elemen data. Informasi ini secara otomatis tersedia untuk semua bidang layar yang merujuk ke elemen data. Elemen data menjelaskan tipe dasar atau tipe referensi.

Membuat Elemen Data

Sebelum membuat elemen data baru, Anda perlu memeriksa apakah ada elemen data yang memiliki spesifikasi semantik yang sama yang diperlukan di bidang tabel Anda. Jika demikian, Anda dapat menggunakan elemen data yang sudah ada tersebut. Anda dapat menetapkan elemen data dengan tipe, domain, atau tipe referensi yang telah ditentukan sebelumnya.

Berikut adalah prosedur untuk membuat elemen data -

Step 1 - Buka Transaksi SE11.

Step 2 - Pilih tombol radio untuk Tipe data di layar awal Kamus ABAP, dan masukkan nama elemen data seperti yang ditunjukkan di bawah ini.

Step 3- Klik tombol BUAT. Anda dapat membuat elemen data di bawah ruang nama pelanggan, dan nama objek selalu dimulai dengan 'Z' atau 'Y'.

Step 4 - Periksa radio button elemen Data pada pop-up CREATE TYPE yang muncul dengan tiga radio button.

Step 5- Klik ikon tanda centang hijau. Anda diarahkan ke layar pemeliharaan elemen data.

Step 6- Masukkan deskripsi di bidang teks pendek layar pemeliharaan elemen data. Dalam hal ini, itu adalah "Elemen Data Pelanggan".Note - Anda tidak dapat memasukkan atribut lain sebelum Anda memasukkan atribut ini.

Step 7- Tetapkan elemen data dengan tipe. Anda dapat membuat elemen data dasar dengan memeriksa tipe dasar atau elemen data referensi dengan memeriksa tipe Referensi. Anda dapat menetapkan elemen data ke Domain atau Jenis Standar dalam Jenis Dasar dan dengan Nama Jenis Referensi atau Referensi ke Jenis Standar dalam Jenis Referensi.

Step 8- Masukkan bidang untuk teks pendek, teks sedang, teks panjang, dan judul di tab Label Bidang. Anda dapat menekan Enter dan panjang label ini dibuat secara otomatis.

Step 9- Simpan perubahan Anda. Munculan Buat Entri Direktori Objek muncul dan meminta paket. Anda dapat memasukkan nama paket tempat Anda bekerja. Jika Anda tidak memiliki paket apa pun, Anda dapat membuatnya di Object Navigator atau Anda dapat menyimpan elemen data Anda menggunakan tombol Objek Lokal.

Step 10- Aktifkan elemen data Anda. Klik ikon Activate (ikon korek api) atau tekan CTRL + F3 untuk mengaktifkan elemen data. Jendela pop-up muncul, mencantumkan 2 objek yang saat ini tidak aktif seperti yang ditunjukkan pada gambar berikut.

Step 11- Pada titik ini, entri teratas berlabel 'DTEL' dengan nama Z_CUST akan diaktifkan. Saat ini disorot, klik tombol centang hijau. Jendela ini menghilang dan bilah status akan menampilkan pesan 'Objek diaktifkan'.

Jika pesan kesalahan atau peringatan terjadi saat Anda mengaktifkan elemen data, log aktivasi ditampilkan secara otomatis. Log aktivasi menampilkan informasi tentang aliran aktivasi. Anda juga dapat memanggil log aktivasi dengan Utilities (M) → Activation log.

Tabel dapat didefinisikan secara independen dari database dalam Kamus ABAP. Saat tabel diaktifkan di Kamus ABAP, salinan serupa dari bidangnya juga dibuat dalam database. Tabel yang ditentukan dalam Kamus ABAP diterjemahkan secara otomatis ke dalam format yang kompatibel dengan database karena definisi tabel bergantung pada database yang digunakan oleh sistem SAP.

Tabel bisa berisi satu atau beberapa bidang, masing-masing ditentukan dengan tipe dan panjang datanya. Sejumlah besar data yang disimpan dalam tabel didistribusikan di antara beberapa bidang yang ditentukan dalam tabel.

Jenis Bidang Tabel

Tabel terdiri dari banyak bidang, dan setiap bidang berisi banyak elemen. Tabel berikut mencantumkan berbagai elemen bidang tabel -

S.No. Elemen & Deskripsi
1

Field name

Ini adalah nama yang diberikan ke bidang yang dapat berisi maksimal 16 karakter. Nama bidang dapat terdiri dari angka, huruf, dan garis bawah. Itu harus dimulai dengan sebuah surat.

2

Key flag

Menentukan apakah suatu bidang termasuk dalam bidang kunci atau tidak.

3

Field type

Menetapkan tipe data ke bidang.

4

Field length

Jumlah karakter yang bisa dimasukkan ke dalam bidang.

5

Decimal places

Menentukan jumlah digit yang diizinkan setelah koma desimal. Elemen ini digunakan hanya untuk tipe data numerik.

6

Short text

Menjelaskan arti dari bidang yang sesuai.

Membuat Tabel di Kamus ABAP

Step 1- Buka transaksi SE11, pilih tombol radio 'Tabel database', dan masukkan nama untuk tabel yang akan dibuat. Dalam kasus kami, kami telah memasukkan nama ZCUSTOMERS1. Klik tombol Buat. Layar Dictionary: Maintain Table muncul. Di sini tab 'Pengiriman dan Pemeliharaan' dipilih secara default.

Step 2 - Masukkan teks pendek penjelasan di bidang Deskripsi Singkat.

Step 3- Klik ikon Bantuan Pencarian di samping bidang Kelas Pengiriman. Pilih opsi 'A [Tabel aplikasi (master dan data transaksi)]'.

Step 4- Pilih opsi 'Display / Maintenance Allowed' dari menu drop-down 'Data Browser / Table view Maintenance'. Layar Dictionary: Maintenance Table muncul.

Step 5- Pilih tab Fields. Layar yang berisi opsi yang terkait dengan tab Bidang muncul.

Step 6- Masukkan nama kolom tabel di kolom Field. Nama bidang dapat berisi huruf, angka, dan garis bawah, tetapi harus selalu dimulai dengan huruf dan tidak boleh lebih dari 16 karakter.

Bidang yang akan dibuat juga harus memiliki elemen data karena mengambil atribut, seperti tipe data, panjang, tempat desimal, dan teks pendek, dari elemen data yang ditentukan.

Step 7- Pilih kolom Key jika Anda ingin field menjadi bagian dari kunci tabel. Mari buat bidang seperti KLIEN, PELANGGAN, NAMA, JUDUL dan DOB.

Step 8- Bidang pertama adalah yang penting dan mengidentifikasi klien yang terkait dengan catatan. Masukkan 'Klien' sebagai Bidang dan 'MANDT' sebagai Elemen Data. Sistem secara otomatis mengisi Tipe Data, Panjang, Desimal dan Deskripsi Singkat. Bidang 'Klien' dijadikan bidang kunci dengan mencentang kotak 'Kunci'.

Step 9- Bidang berikutnya adalah 'Pelanggan'. Centang kotak untuk menjadikannya bidang kunci dan masukkan Elemen Data baru 'ZCUSTNUM'. Klik tombol Simpan.

Step 10- Karena Elemen Data 'ZCUSTNUM' belum ada, itu harus dibuat. Klik dua kali Elemen Data baru dan jendela 'Buat Elemen Data' muncul. Jawab 'Ya' untuk ini dan jendela 'Pertahankan Elemen Data' muncul.

Step 11- Masukkan 'Nomor Pelanggan' di area Deskripsi Singkat. Tipe data dasar yang disebut 'Domain' harus ditentukan untuk elemen Data baru. Jadi masukkan 'ZCUSTD1', klik dua kali dan setuju untuk menyimpan perubahan yang dibuat. Pilih 'Ya' untuk membuat domain dan ketikkan ke dalam kotak 'Deskripsi Singkat' deskripsi domain.

Tab 'Definisi' terbuka secara otomatis. Bidang pertama adalah 'Jenis Data'.

Step 12- Klik di dalam kotak dan pilih jenis 'NUMC' dari menu tarik-turun. Masukkan angka 8 di 'No. dari kolom karakter (maksimal 8 karakter) dan masukkan 0 di area 'Tempat desimal'. Panjang Output 8 harus dipilih dan kemudian tekan Enter. Deskripsi bidang 'NUMC' harus muncul kembali, mengkonfirmasikan bahwa ini adalah entri yang valid.

Step 13 - Klik tombol Simpan dan Aktifkan objek.

Step 14- Tekan F3 untuk kembali ke layar 'Pertahankan / Ubah Elemen Data'. Buat empat label Field seperti yang diperlihatkan di snapshot berikut. Setelah ini, Simpan dan Aktifkan elemen tersebut.

Step 15- Tekan tombol kembali untuk kembali ke layar pemeliharaan tabel. Kolom Pelanggan memiliki Tipe Data, Panjang, Desimal, dan Deskripsi Singkat yang benar. Ini menunjukkan keberhasilan pembuatan elemen Data dan juga Domain yang digunakan.

Demikian pula, kita perlu membuat tiga bidang tambahan seperti NAMA, JUDUL dan DOB.

Step 16- Pilih 'Pengaturan teknis' dari bilah alat. Pilih APPL0 untuk 'Kelas Data' dan kategori ukuran pertama 0 untuk bidang 'Ukuran' kategori '. Dalam kasus opsi buffering, 'Buffering not allow' harus dipilih.

Step 17- Klik Simpan. Kembali ke tabel dan Aktifkan. Layar berikut muncul.

Tabel 'ZCUSTOMERS1' diaktifkan.

Structure adalah objek data yang terdiri dari komponen jenis data apa pun yang disimpan satu demi satu dalam memori.

Struktur berguna untuk mengecat bidang layar, dan untuk memanipulasi data yang memiliki format konsisten yang ditentukan oleh sejumlah bidang terpisah.

Sebuah struktur mungkin hanya memiliki satu catatan pada waktu proses, tetapi tabel dapat memiliki banyak catatan.

Membuat Struktur

Step 1 - Masuk ke transaksi SE11.

Step 2- Klik opsi 'Tipe data' di layar. Masukkan nama 'ZSTR_CUSTOMER1' dan klik tombol Buat.

Step 3- Pilih opsi 'Struktur' di layar berikutnya dan tekan Enter. Anda dapat melihat wizard 'Pertahankan / Ubah Struktur'.

Step 4 - Masukkan Deskripsi Singkat seperti yang ditunjukkan pada gambar berikut.

Step 5 - Masukkan Komponen (Nama Bidang) dan Jenis Komponen (Elemen Data).

Note: Di sini nama komponen dimulai dengan Z sesuai rekomendasi SAP. Mari gunakan elemen data yang telah kita buat di tabel database.

Step 6 - Anda perlu Menyimpan, Memeriksa dan Mengaktifkan setelah menyediakan semua komponen dan tipe komponen.

Layar berikut muncul -

Step 7- Saat 'ZSTR_CUSTOMER1' ini disorot, klik tombol centang hijau. Jendela ini menghilang dan bilah status akan menampilkan pesan 'Aktif'.

Struktur sekarang diaktifkan seperti yang ditunjukkan pada snapshot berikut -

Tampilan berfungsi seperti tabel database saja. Tapi itu tidak akan menempati ruang penyimpanan. Tampilan bertindak mirip dengan tabel virtual - tabel yang tidak memiliki keberadaan fisik apa pun. Tampilan dibuat dengan menggabungkan data dari satu atau lebih tabel yang berisi informasi tentang objek aplikasi. Dengan menggunakan tampilan, Anda dapat merepresentasikan subset data yang terdapat dalam tabel atau Anda dapat menggabungkan beberapa tabel ke dalam satu tabel virtual.

Data yang terkait dengan objek aplikasi didistribusikan di antara beberapa tabel dengan menggunakan tampilan database. Mereka menggunakan kondisi gabungan dalam untuk menggabungkan data dari tabel yang berbeda. Tampilan pemeliharaan digunakan untuk menampilkan dan memodifikasi data yang disimpan dalam objek aplikasi. Setiap tampilan pemeliharaan memiliki status pemeliharaan yang terkait dengannya.

Kami menggunakan tampilan proyeksi untuk menutupi bidang yang tidak diinginkan dan hanya menampilkan bidang yang relevan dalam tabel. Tampilan proyeksi harus ditentukan di atas satu tabel transparan. Tampilan proyeksi berisi tepat satu tabel. Kami tidak dapat menentukan kondisi pemilihan untuk tampilan proyeksi.

Membuat Tampilan

Step 1- Pilih tombol radio Lihat di layar awal Kamus ABAP. Masukkan nama view yang akan dibuat kemudian klik tombol Create. Kami memasukkan nama tampilan sebagai ZVIEW_TEST.

Step 2- Pilih tombol radio tampilan proyeksi saat memilih jenis tampilan dan klik tombol Salin. Layar 'Kamus: Ubah Tampilan' muncul.

Step 3 - Masukkan deskripsi singkat di kolom Deskripsi Singkat dan nama tabel yang akan digunakan di kolom Tabel Dasar seperti yang ditunjukkan pada gambar berikut.

Step 4 - Klik tombol 'Bidang tabel' untuk menyertakan bidang tabel ZCUSTOMERS1 dalam tampilan proyeksi.

Step 5- Layar Pemilihan Bidang dari Tabel ZCUSTOMERS1 muncul. Pilih bidang yang ingin Anda sertakan dalam tampilan proyeksi seperti yang ditunjukkan pada foto berikut.

Step 6 - Setelah mengklik tombol Salin, semua bidang yang dipilih untuk tampilan proyeksi ditampilkan pada layar 'Kamus: Ubah Tampilan'.

Step 7- Pilih tab Status Pemeliharaan untuk menentukan metode akses. Pilih radio button read-only dan opsi 'Display / Maintenance Allowed with Restrictions' dari menu dropdown 'Data Browser / Table View Maintenance'.

Step 8- Simpan dan Aktifkan. Pada layar 'Dictionary: Change View' pilih Utilities (M)> Contents untuk menampilkan layar pemilihan ZVIEW_TEST.

Step 9- Klik ikon Jalankan. Output dari tampilan proyeksi muncul seperti yang ditunjukkan pada gambar layar berikut.

Tabel ZCUSTOMERS1 terdiri dari 5 bidang. Di sini bidang yang ditampilkan adalah 3 (Klien, Nomor dan Nama Pelanggan) dengan 4 entri. Nomor pelanggan mulai dari 100001 hingga 100004 dengan nama yang sesuai.

Search Help, objek repositori lain dari ABAP Dictionary, digunakan untuk menampilkan semua nilai yang mungkin untuk bidang dalam bentuk daftar. Daftar ini juga dikenal sebagaihit list. Anda dapat memilih nilai yang akan dimasukkan ke dalam field dari hit list ini daripada memasukkan nilai secara manual, yang membosankan dan rawan kesalahan.

Membuat Bantuan Pencarian

Step 1- Masuk ke transaksi SE11. Pilih tombol radio untuk bantuan Pencarian. Masukkan nama bantuan pencarian yang akan dibuat. Mari masukkan nama ZSRCH1. Klik pada tombol Buat.

Step 2- Sistem akan meminta jenis bantuan pencarian yang akan dibuat. Pilih bantuan pencarian dasar, yang merupakan default. Layar untuk membuat bantuan pencarian dasar seperti yang ditunjukkan pada gambar layar berikut muncul.

Step 3- Dalam metode pemilihan, kita perlu menunjukkan apakah sumber data kita adalah tabel atau tampilan. Dalam kasus kami, ini adalah tabel. Tabel tersebut adalah ZCUSTOMERS1. Itu dipilih dari daftar pilihan.

Step 4- Setelah metode pemilihan dimasukkan, bidang berikutnya adalah jenis Dialog. Ini mengontrol tampilan kotak dialog restriktif. Ada daftar drop-down dengan tiga opsi. Mari pilih opsi 'Tampilkan nilai dengan segera'.

Step 5- Berikutnya adalah area parameter. Untuk setiap parameter bantuan Penelusuran atau bidang, bidang kolom ini harus dimasukkan sesuai persyaratan.

  • Search help parameter- Ini adalah bidang dari sumber data. Bidang dari tabel dicantumkan di daftar pilihan. Bidang yang berpartisipasi dalam bantuan pencarian akan dimasukkan, satu bidang di setiap baris. Mari kita sertakan dua bidang PELANGGAN dan NAMA. Bagaimana kedua bidang ini berpartisipasi ditunjukkan di kolom lainnya.

  • Import- Bidang ini adalah kotak centang untuk menunjukkan apakah parameter bantuan Penelusuran adalah parameter impor. Ekspor atau impor mengacu pada bantuan pencarian.

  • Export- Bidang ini adalah kotak centang untuk menunjukkan apakah parameter bantuan Penelusuran adalah parameter ekspor. Ekspor akan mentransfer nilai bidang dari daftar pilihan ke bidang layar.

  • LPos- Nilainya mengontrol posisi fisik parameter atau bidang bantuan Pencarian dalam daftar pilihan. Jika Anda memasukkan nilai 1, bidang tersebut akan muncul di posisi pertama dalam daftar pilihan dan seterusnya.

  • SPos- Ini mengontrol posisi fisik parameter atau bidang Bantuan Pencarian di kotak dialog terbatas. Jika Anda memasukkan nilai 1, bidang akan muncul di posisi pertama dalam kotak dialog terbatas dan seterusnya.

  • Data element- Setiap parameter atau bidang Bantuan Pencarian secara default diberi elemen data yang ditugaskan padanya di sumber data (Tabel atau Tampilan). Nama elemen data ini muncul dalam mode tampilan.

Step 6- Lakukan pemeriksaan konsistensi dan aktifkan bantuan pencarian. Tekan F8 untuk mengeksekusi. Layar 'Test Search Help ZSRCH1' muncul seperti yang ditunjukkan pada gambar layar berikut.

Step 7- Masukkan nomor 100004 di bidang layar 'Siap untuk inp' PELANGGAN. Tekan enter.

Nomor pelanggan, 100004, dan nama 'STEPHEN' ditampilkan.

Lock Object adalah fitur yang ditawarkan oleh ABAP Dictionary yang digunakan untuk menyinkronkan akses ke data yang sama oleh lebih dari satu program. Catatan data diakses dengan bantuan program tertentu. Objek kunci digunakan di SAP untuk menghindari ketidakkonsistenan saat data dimasukkan ke atau diubah dalam database. Tabel yang rekaman datanya akan dikunci harus ditentukan dalam Objek Kunci, bersama dengan bidang kuncinya.

Mekanisme Kunci

Berikut adalah dua fungsi utama yang dicapai dengan mekanisme kunci -

  • Suatu program dapat berkomunikasi dengan program lain tentang catatan data yang hanya dibaca atau diubah.

  • Sebuah program dapat mencegah dirinya dari membaca data yang baru saja diubah oleh program lain.

SEBUAH lock requestpertama kali dihasilkan oleh program. Kemudian permintaan ini masuk ke server Enqueue dan kunci dibuat di tabel kunci. Server Enqueue menyetel kunci dan program akhirnya siap untuk mengakses data.

Membuat Objek Kunci

Step 1- Masuk ke transaksi SE11. Layar berikut terbuka.

Step 2- Klik tombol radio 'Kunci Objek'. Masukkan nama objek kunci yang dimulai dengan E dan klik tombol Buat. Di sini kami menggunakan EZLOCK12.

Step 3 - Masuk ke kolom deskripsi singkat dan klik tab Tabel.

Step 4 - Masukkan nama tabel di kolom Name dan pilih mode kunci sebagai Write Lock.

Step 5 - Klik pada tab Parameter kunci, layar berikut akan muncul.

Step 6- Simpan dan aktifkan. Secara otomatis 2 modul fungsi akan dihasilkan. Untuk memeriksa modul fungsi, kita dapat menggunakan Go to → Lock Modules.

Step 7 - Klik Lock Modules dan layar berikut akan terbuka.

Objek kunci berhasil dibuat.

Bidang kunci dari tabel yang termasuk dalam Objek Kunci disebut argumen kunci dan digunakan sebagai parameter input dalam modul fungsi. Argumen ini digunakan untuk menyetel dan menghapus kunci yang dihasilkan oleh definisi Objek Kunci.

Merupakan praktik yang baik untuk menjaga agar program Anda serba lengkap dan mudah dibaca. Coba saja bagi tugas besar dan rumit menjadi tugas yang lebih kecil dan sederhana dengan menempatkan setiap tugas dalam modul individualnya, tempat pengembang dapat berkonsentrasi tanpa gangguan lain.

Dalam lingkungan SAP ABAP, modularisasi melibatkan pengorganisasian program menjadi unit modular, juga dikenal sebagai logical blocks. Ini mengurangi redundansi dan meningkatkan keterbacaan program bahkan saat Anda membuatnya dan selanjutnya selama siklus pemeliharaan. Modularisasi juga memungkinkan penggunaan kembali kode yang sama. ABAP telah mengharuskan pengembang untuk memodularisasi, yaitu mengatur program secara relatif lebih banyak, daripada dalam bahasa berbasis OOPS yang memiliki fitur modular yang relatif lebih built-in. Setelah bagian kode kecil yang termodulasi selesai, di-debug, dan seterusnya, kode tersebut tidak harus dikembalikan lagi, dan pengembang kemudian dapat melanjutkan dan fokus pada masalah lain.

Program ABAP terdiri dari blok pemrosesan yang dikenal sebagai blok pemrosesan modularisasi. Mereka adalah -

  • Blok pemrosesan yang dipanggil dari luar program dan dari lingkungan run-time ABAP (yaitu, blok peristiwa dan modul dialog).

  • Memproses blok yang dipanggil dari program ABAP.

Terlepas dari modularisasi dengan blok pemrosesan, modul kode sumber digunakan untuk memodularisasi kode sumber Anda melalui makro dan menyertakan program.

Modularisasi pada tingkat kode sumber -

  • Makro Lokal
  • Program Sertakan Global

Modularisasi melalui blok pemrosesan yang dipanggil dari program ABAP -

  • Subroutines
  • Modul fungsi

Modularisasi kode sumber berarti menempatkan urutan pernyataan ABAP dalam modul. Kode sumber termodulasi dapat dipanggil dalam program sesuai kebutuhan pengguna. Modul kode sumber meningkatkan keterbacaan dan pemahaman program ABAP. Membuat modul kode sumber individu juga mencegah seseorang dari keharusan untuk berulang kali menulis pernyataan yang sama berulang kali yang pada gilirannya membuat kode lebih mudah dipahami bagi siapa pun yang melewatinya untuk pertama kali.

Sebuah subrutin adalah bagian kode yang dapat digunakan kembali. Ini adalah unit modularisasi dalam program di mana suatu fungsi dienkapsulasi dalam bentuk kode sumber. Anda halaman keluar bagian dari program ke subrutin untuk mendapatkan gambaran yang lebih baik dari program utama, dan untuk menggunakan urutan pernyataan yang sesuai berkali-kali seperti yang digambarkan dalam diagram berikut.

Kami memiliki program X dengan 3 berbeda source code blocks. Setiap blok memiliki pernyataan ABAP yang sama. Pada dasarnya, mereka adalah blok kode yang sama. Untuk membuat kode ini lebih mudah dipelihara, kita dapat merangkum kode tersebut ke dalam subrutin. Kita dapat memanggil subrutin ini dalam program kita sebanyak yang kita inginkan. Sebuah subrutin dapat didefinisikan menggunakan pernyataan Formulir dan EndForm.

Berikut ini adalah sintaks umum dari definisi subrutin.

FORM <subroutine_name>.
  
<statements> 
  
ENDFORM.

Kita dapat memanggil subrutin dengan menggunakan pernyataan PERFORM. Kontrol melompat ke pernyataan eksekusi pertama di subrutin <subroutine_name>. Ketika ENDFORM ditemukan, kontrol melompat kembali ke pernyataan setelah pernyataan PERFORM.

Contoh

Step 1- Buka transaksi SE80. Buka program yang sudah ada lalu klik kanan pada program. Dalam hal ini, ini adalah 'ZSUBTEST'.

Step 2- Pilih Buat dan kemudian pilih Subrutin. Tuliskan nama subrutin di lapangan lalu klik tombol lanjutkan. Nama subrutin adalah 'Sub_Display' seperti yang ditunjukkan pada tangkapan layar berikut.

Step 3- Tulis kode di blok pernyataan FORM dan ENDFORM. Subrutin telah berhasil dibuat.

Kita perlu menyertakan pernyataan PERFORM untuk memanggil subrutin. Mari kita lihat kodenya -

REPORT ZSUBTEST. 
PERFORM Sub_Display.

* Form Sub_Display 
* -->  p1 text 
* <--  p2 text 
 
FORM Sub_Display. 
Write: 'This is Subroutine'. 
Write: / 'Subroutine created successfully'. 
ENDFORM.                    " Sub_Display

Step 4- Simpan, aktifkan dan jalankan program. Kode di atas menghasilkan keluaran sebagai berikut -

Subroutine Test:
   
This is Subroutine
  
Subroutine created successfully

Karenanya, menggunakan subrutin membuat program Anda lebih berorientasi pada fungsi. Ini membagi tugas program menjadi sub-fungsi, sehingga setiap subrutin bertanggung jawab atas satu subfungsi. Program Anda menjadi lebih mudah dipelihara karena perubahan fungsi seringkali hanya perlu diterapkan di subrutin.

Jika kita ingin menggunakan kembali set pernyataan yang sama lebih dari sekali dalam sebuah program, kita perlu memasukkannya ke dalam makro. Misalnya, makro dapat berguna untuk kalkulasi panjang atau untuk menulis pernyataan TULIS yang rumit. Kami hanya dapat menggunakan makro dalam program yang telah ditentukan. Definisi makro harus muncul sebelum makro digunakan dalam program.

Makro dirancang berdasarkan placeholder. Placeholder berfungsi seperti pointer dalam bahasa C. Anda dapat menentukan makro dalam pernyataan DEFINE ... END-OF-DEFINITION.

Berikut ini adalah sintaks dasar dari definisi makro -

DEFINE <macro_name>. <statements> 
END-OF-DEFINITION. 
   ...... 
  
   <macro_name> [<param1> <param2>....].

Makro harus ditentukan terlebih dahulu sebelum menjalankannya. <param1>…. menggantikan placeholder & 1 ... dalam pernyataan ABAP yang terdapat dalam definisi makro.

Jumlah maksimum tempat penampung dalam definisi makro adalah sembilan. Artinya, ketika program dijalankan, sistem SAP menggantikan makro dengan pernyataan yang sesuai dan placeholder & 1, & 2,…. & 9 diganti dengan parameter param1, param2, .... param9. Kami mungkin menjalankan makro dalam makro lain, tetapi tidak makro yang sama.

Contoh

Masuk ke transaksi SE38. Buat program baru ZMACRO_TEST bersama dengan deskripsi di kolom teks pendek, dan juga dengan atribut yang sesuai seperti Jenis dan Status seperti yang ditunjukkan pada tangkapan layar berikut -

Berikut kodenya -

REPORT ZMACRO_TEST. 
DEFINE mac_test. 
WRITE: 'This is Macro &1'. 
END-OF-DEFINITION. 

PARAMETERS: s1 type C as checkbox. 
PARAMETERS: s2 type C as checkbox. 
PARAMETERS: s3 type C as checkbox default 'X'. 

START-OF-SELECTION. 
IF s1 = 'X'. 
   mac_test 1. ENDIF. 
IF s2 = 'X'. 
   mac_test 2. 
ENDIF.
 
IF s3 = 'X'. 
   mac_test 3. 
ENDIF.

Kami memiliki 3 kotak centang. Saat menjalankan program, pilih kotak centang S2.

Kode di atas menghasilkan keluaran sebagai berikut -

A Macro Program 
 
This is Macro 2

Jika semua kotak centang dipilih, kode menghasilkan keluaran berikut -

A Macro Program 
 
This is Macro 1 This is Macro 2 This is Macro 3

Modul fungsi merupakan bagian utama dari sistem SAP, karena selama bertahun-tahun SAP telah memodulasi kode menggunakan modul fungsi, memungkinkan kode digunakan kembali, oleh mereka sendiri, pengembangnya dan juga oleh pelanggan mereka.

Modul fungsi adalah sub-program yang berisi sekumpulan pernyataan yang dapat digunakan kembali dengan parameter impor dan ekspor. Tidak seperti program Include, modul fungsi dapat dijalankan secara independen. Sistem SAP berisi beberapa modul fungsi yang telah ditentukan yang dapat dipanggil dari program ABAP apa pun. Grup fungsi bertindak sebagai semacam wadah untuk sejumlah modul fungsi yang secara logis akan dimiliki bersama. Misalnya, modul fungsi untuk sistem penggajian SDM akan disatukan menjadi grup fungsi.

Untuk melihat cara membuat modul fungsi, pembuat fungsi harus dieksplorasi. Anda dapat menemukan pembuat fungsi dengan kode transaksi SE37. Cukup ketikkan bagian dari nama modul fungsi dengan karakter wild card untuk mendemonstrasikan cara mencari modul fungsi. Ketik * jumlah * lalu tekan tombol F4.

Hasil pencarian akan ditampilkan di jendela baru. Modul fungsi ditampilkan dalam garis dengan latar belakang biru dan grup fungsinya dalam garis merah muda. Anda dapat melihat lebih jauh pada grup fungsi ISOC dengan menggunakan layar Object Navigator (Transaction SE80). Anda dapat melihat daftar modul fungsi dan juga objek lain yang ada di grup fungsi. Mari kita pertimbangkan modul fungsi SPELL_AMOUNT. Modul fungsi ini mengubah angka menjadi kata-kata.

Membuat Program Baru

Step 1 - Buka transaksi SE38 dan buat program baru bernama Z_SPELLAMOUNT.

Step 2- Masukkan beberapa kode sehingga parameter dapat diatur di mana nilai dapat dimasukkan dan diteruskan ke modul fungsi. Elemen teks text-001 di sini berbunyi 'Masukkan Nilai'.

Step 3- Untuk menulis kode ini, gunakan CTRL + F6. Setelah ini, jendela akan muncul di mana 'CALL FUNCTION' adalah opsi pertama dalam daftar. Masukkan 'spell_amount' di kotak teks dan klik tombol lanjutkan.

Step 4- Beberapa kode dibuat secara otomatis. Tapi kita perlu meningkatkan pernyataan IF untuk memasukkan kode untuk MENULIS pesan ke layar untuk mengatakan "Modul fungsi mengembalikan nilai: sy-subrc” dan menambahkan pernyataan ELSE untuk menulis hasil yang benar saat fungsi modul berhasil. Di sini, variabel baru harus disiapkan untuk menampung nilai yang dikembalikan dari modul fungsi. Sebut ini sebagai 'result'.

Berikut kodenya -

REPORT Z_SPELLAMOUNT. 
data result like SPELL. 

selection-screen begin of line. 
selection-screen comment 1(15) text-001. 

parameter num_1 Type I. 
selection-screen end of line. 
CALL FUNCTION 'SPELL_AMOUNT' 
EXPORTING 
AMOUNT = num_1 
IMPORTING 
IN_WORDS = result. 

IF SY-SUBRC <> 0. 
   Write: 'Value returned is:', SY-SUBRC. 
else. 
   Write: 'Amount in words is:', result-word. 
ENDIF.

Step 5- Variabel yang dikembalikan oleh modul fungsi disebut IN_WORDS. Siapkan variabel terkait dalam program yang disebut 'hasil'. Definisikan IN_WORDS dengan menggunakan pernyataan LIKE untuk merujuk ke struktur yang disebut SPELL.

Step 6- Simpan, aktifkan dan jalankan program. Masukkan nilai seperti yang ditunjukkan pada tangkapan layar berikut dan tekan F8.

Kode di atas menghasilkan keluaran sebagai berikut -

Spelling the Amount 
Amount in words is: 
FIVE THOUSAND SIX HUNDRED EIGHTY

Include program adalah objek repositori global yang digunakan untuk memodularisasi kode sumber. Mereka memungkinkan Anda untuk menggunakan kode sumber yang sama di program yang berbeda. Include program juga memungkinkan Anda untuk mengelola program yang kompleks dengan cara yang teratur. Untuk menggunakan program include di program lain, kami menggunakan sintaks berikut -

INCLUDE <program_name>.

Pernyataan INCLUDE memiliki efek yang sama seperti menyalin kode sumber dari program termasuk <program_name> ke program lain. Karena program include tidak dapat berjalan secara independen, itu harus dibangun ke dalam program lain. Anda juga dapat memasukkan program bersarang.

Berikut adalah beberapa batasan saat menulis kode untuk program Sertakan -

  • Sertakan program tidak dapat memanggil dirinya sendiri.
  • Sertakan program harus berisi pernyataan lengkap.

Berikut adalah langkah-langkah untuk membuat dan menggunakan program Include -

Step 1- Buat program (TERMASUK Z_TOBE) untuk dimasukkan dalam Editor ABAP. Kode yang akan dimasukkan dalam ABAP Editor adalah -

PROGRAM Z_TOBEINCLUDED.  
Write: / 'This program is started by:', SY-UNAME,
       / 'The Date is:', SY-DATUM,
       / 'Time is', SY-UZEIT.

Step 2 - Atur Jenis program ke INCLUDE program, seperti yang ditunjukkan pada gambar berikut.

Step 3 - Klik tombol 'Simpan' dan simpan program dalam paket bernama ZINCL_PCKG.

Step 4- Buat program lain di mana program Z_TOBEINCLUDED harus digunakan. Di sini kami telah membuat program lain bernama Z_INCLUDINGTEST dan menetapkan tipe untuk program tersebut sebagai Program yang dapat dijalankan.

Step 5 - Pengkodean untuk program Z_INCLUDINGTEST menyertakan program Z_TOBEINCLUDED dengan bantuan pernyataan INCLUDE seperti yang ditunjukkan pada kode berikut.

REPORT Z_INCLUDINGTEST.  
INCLUDE Z_TOBEINCLUDED.

Step 6 - Simpan, aktifkan dan jalankan program.

Kode di atas menghasilkan keluaran sebagai berikut -

This program is started by: SAPUSER 
The Date is: 06.10.2015 
Time is 13:25:11

Open SQL menunjukkan subset pernyataan ABAP yang memungkinkan akses langsung ke data dalam database pusat AS ABAP saat ini. Pernyataan SQL terbuka memetakan fungsionalitas Bahasa Manipulasi Data SQL di ABAP yang didukung oleh semua sistem database.

Pernyataan Open SQL diubah ke database SQL tertentu di antarmuka Open SQL dari antarmuka database. Mereka kemudian ditransfer ke sistem database dan dieksekusi. Pernyataan SQL terbuka dapat digunakan untuk mengakses tabel database yang dideklarasikan di Kamus ABAP. Database sentral AS ABAP diakses secara default dan juga akses ke database lain dimungkinkan melalui koneksi database sekunder.

Setiap kali salah satu pernyataan ini digunakan dalam program ABAP, penting untuk memeriksa apakah tindakan yang dijalankan telah berhasil. Jika seseorang mencoba memasukkan record ke dalam tabel database dan tidak disisipkan dengan benar, sangat penting untuk diketahui sehingga tindakan yang sesuai dapat diambil dalam program. Hal ini dapat dilakukan dengan menggunakan field sistem yang sudah pernah digunakan yaitu SY-SUBRC. Ketika sebuah pernyataan berhasil dieksekusi, bidang SY-SUBRC akan berisi nilai 0, jadi ini dapat diperiksa dan seseorang dapat melanjutkan program jika muncul.

Pernyataan DATA digunakan untuk mendeklarasikan area kerja. Beri nama ini 'wa_customers1'. Daripada mendeklarasikan satu tipe data untuk ini, beberapa field yang menyusun tabel bisa dideklarasikan. Cara termudah untuk melakukannya adalah dengan menggunakan pernyataan LIKE.

Pernyataan INSERT

Area kerja wa_customers1 dideklarasikan di sini SEPERTI tabel ZCUSTOMERS1, mengambil struktur yang sama tanpa menjadi tabel itu sendiri. Area kerja ini hanya dapat menyimpan satu record. Setelah dideklarasikan, pernyataan INSERT dapat digunakan untuk memasukkan area kerja dan catatan yang disimpannya ke dalam tabel. Kode di sini akan terbaca sebagai 'INSERT ZCUSTOMERS1 FROM wa_customers1'.

Area kerja harus diisi dengan beberapa data. Gunakan nama bidang dari tabel ZCUSTOMERS1. Ini dapat dilakukan dengan navigasi ke depan, mengklik dua kali nama tabel di kode atau dengan membuka sesi baru dan menggunakan transaksi SE11. Kolom tabel kemudian dapat disalin dan ditempelkan ke editor ABAP.

Berikut adalah potongan kodenya -

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'DAVE'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
INSERT ZCUSTOMERS1 FROM wa_customers1.

Pernyataan PERIKSA kemudian dapat digunakan sebagai berikut. Artinya jika record dimasukkan dengan benar, sistem akan menyatakan ini. Jika tidak, maka kode SY-SUBRC yang tidak sama dengan nol akan ditampilkan. Berikut adalah potongan kodenya -

IF SY-SUBRC = 0. 
   WRITE 'Record Inserted Successfully'.  
ELSE. 
   WRITE: 'The return code is ', SY-SUBRC. 
ENDIF.

Periksa program, simpan, aktifkan kodenya, lalu uji. Jendela keluaran akan ditampilkan sebagai 'Record Inserted Successfully'.

Pernyataan CLEAR

Pernyataan CLEAR memungkinkan bidang atau variabel dikosongkan untuk penyisipan data baru di tempatnya, memungkinkannya digunakan kembali. Pernyataan CLEAR umumnya digunakan dalam program dan memungkinkan bidang yang ada digunakan berkali-kali.

Pada potongan kode sebelumnya, struktur area kerja telah terisi data untuk membuat record baru untuk dimasukkan ke dalam tabel ZCUSTOMERS1 kemudian dilakukan pengecekan validasi. Jika kita ingin memasukkan record baru, statement CLEAR harus digunakan agar dapat diisi kembali dengan data baru.

Pernyataan UPDATE

Jika Anda ingin memperbarui satu atau lebih catatan yang ada dalam tabel pada saat yang sama, gunakan pernyataan UPDATE. Mirip dengan pernyataan INSERT, sebuah area kerja dideklarasikan, diisi dengan data baru yang kemudian dimasukkan ke dalam record saat program dijalankan. Catatan yang sebelumnya dibuat dengan pernyataan INSERT akan diperbarui di sini. Cukup edit teks yang disimpan di bidang NAMA dan JUDUL. Kemudian pada baris baru, struktur yang sama seperti untuk pernyataan INSERT digunakan, dan kali ini dengan menggunakan pernyataan UPDATE seperti yang ditunjukkan dalam cuplikan kode berikut -

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'RICHARD'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
UPDATE ZCUSTOMERS1 FROM wa_customers1.

Saat pernyataan UPDATE dijalankan, Anda dapat melihat Data Browser di Kamus ABAP untuk melihat bahwa record telah berhasil diperbarui.

Pernyataan MODIFY

Pernyataan MODIFY dapat dianggap sebagai kombinasi dari pernyataan INSERT dan UPDATE. Ini dapat digunakan untuk menyisipkan catatan baru atau mengubah catatan yang sudah ada. Ini mengikuti sintaks yang mirip dengan dua pernyataan sebelumnya dalam memodifikasi catatan dari data yang dimasukkan ke area kerja.

Ketika pernyataan ini dijalankan, field kunci yang terlibat akan diperiksa terhadap yang ada di tabel. Jika catatan dengan nilai bidang kunci ini sudah ada, itu akan diperbarui. Jika tidak, maka rekor baru akan dibuat.

Berikut adalah potongan kode untuk membuat record baru -

CLEAR wa_customers1.
 
DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100007'. 
wa_customers1-name = 'RALPH'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19910921'. 
MODIFY ZCUSTOMERS1 FROM wa_customers1.

Dalam contoh ini, pernyataan CLEAR digunakan sehingga entri baru dapat dimasukkan ke dalam area kerja, dan kemudian pelanggan (nomor) 100007 ditambahkan. Karena ini adalah nilai field kunci baru yang unik, record baru akan disisipkan, dan pemeriksaan validasi lain dijalankan.

Ketika ini dijalankan dan data dilihat di Data Browser, rekor baru akan dibuat untuk nomor pelanggan 100007 (RALPH).

Kode di atas menghasilkan output berikut (isi tabel) -

Istilah 'SQL Asli' mengacu pada semua pernyataan yang dapat ditransfer secara statis ke antarmuka SQL Asli dari antarmuka database. Pernyataan SQL asli tidak termasuk dalam cakupan bahasa ABAP dan tidak mengikuti sintaks ABAP. ABAP hanya berisi pernyataan untuk mengisolasi bagian program di mana pernyataan SQL Asli dapat dicantumkan.

Dalam SQL native, sebagian besar pernyataan SQL khusus database dapat digunakan. Ini ditransfer tidak berubah dari antarmuka SQL asli ke sistem database dan dijalankan. Cakupan bahasa SQL lengkap dari database yang relevan dapat digunakan dan tabel database yang dialamatkan tidak harus dideklarasikan di Kamus ABAP. Ada juga sekumpulan kecil pernyataan SQL Native spesifik SAP yang ditangani dengan cara tertentu oleh antarmuka SQL asli.

Untuk menggunakan pernyataan SQL Native, Anda harus mengawalinya dengan pernyataan EXEC SQL dan diakhiri dengan pernyataan ENDEXEC.

Berikut adalah sintaksnya -

EXEC SQL PERFORMING <form>.  
   <Native SQL statement> 
ENDEXEC.

Pernyataan ini menentukan area dalam program ABAP di mana satu atau lebih pernyataan SQL Asli dapat dicantumkan. Pernyataan yang dimasukkan diteruskan ke antarmuka SQL Asli dan kemudian diproses sebagai berikut -

  • Semua pernyataan SQL yang valid untuk antarmuka program dari sistem database yang dialamatkan dapat dicantumkan di antara EXEC dan ENDEXEC, khususnya pernyataan DDL (bahasa definisi data).

  • Pernyataan SQL ini diteruskan dari antarmuka SQL Asli ke sistem database sebagian besar tidak berubah. Aturan sintaks ditentukan oleh sistem database, terutama aturan sensitivitas huruf untuk objek database.

  • Jika sintaks memungkinkan pemisah antara pernyataan individual, Anda dapat menyertakan banyak pernyataan SQL Native antara EXEC dan ENDEXEC.

  • Elemen bahasa SQL Native spesifik SAP dapat ditentukan antara EXEC dan ENDEXEC. Pernyataan ini tidak diteruskan langsung dari antarmuka SQL Asli ke database, tetapi diubah dengan tepat.

Contoh

SPFLI adalah Tabel SAP standar yang digunakan untuk menyimpan informasi jadwal Penerbangan. Ini tersedia dalam sistem R / 3 SAP tergantung pada versi dan tingkat rilis. Anda dapat melihat informasi ini saat Anda memasukkan nama Tabel SPFLI ke dalam transaksi SAP yang relevan seperti SE11 atau SE80. Anda juga dapat melihat data yang terdapat dalam tabel database ini dengan menggunakan dua transaksi ini.

REPORT ZDEMONATIVE_SQL. 
DATA: BEGIN OF wa,  
      connid  TYPE SPFLI-connid,
      cityfrom TYPE SPFLI-cityfrom,
      cityto  TYPE SPFLI-cityto,  
      END OF wa. 
	
DATA c1 TYPE SPFLI-carrid VALUE 'LH'. 
EXEC SQL PERFORMING loop_output.
   SELECT connid, cityfrom, cityto  
   INTO :wa  
   FROM SPFLI  
   WHERE carrid = :c1 
ENDEXEC. 

FORM loop_output.  
   WRITE: / wa-connid, wa-cityfrom, wa-cityto. 
ENDFORM.

Kode di atas menghasilkan keluaran sebagai berikut -

0400  FRANKFURT  NEW YORK 
2402  FRANKFURT  BERLIN 
0402  FRANKFURT  NEW YORK

Tabel internal sebenarnya adalah tabel sementara, yang berisi rekaman program ABAP yang sedang dijalankan. Tabel internal hanya ada selama run-time program SAP. Mereka digunakan untuk memproses data dalam jumlah besar dengan menggunakan bahasa ABAP. Kita perlu mendeklarasikan tabel internal dalam program ABAP saat Anda perlu mengambil data dari tabel database.

Data dalam tabel internal disimpan dalam baris dan kolom. Setiap baris disebut aline dan setiap kolom disebut a field. Dalam tabel internal, semua record memiliki struktur dan kunci yang sama. Catatan individual dari tabel internal diakses dengan indeks atau kunci. Karena tabel internal ada hingga program terkait sedang dijalankan, catatan tabel internal akan dibuang saat eksekusi program dihentikan. Jadi tabel internal dapat digunakan sebagai area penyimpanan sementara atau buffer sementara dimana data dapat dimodifikasi sesuai kebutuhan. Tabel-tabel ini menempati memori hanya pada saat run-time dan bukan pada saat deklarasi mereka.

Tabel internal hanya ada saat program berjalan, jadi ketika kode ditulis, tabel internal harus disusun sedemikian rupa sehingga program dapat memanfaatkannya. Anda akan menemukan bahwa tabel internal beroperasi dengan cara yang sama seperti struktur. Perbedaan utamanya adalah bahwa struktur hanya memiliki satu baris, sedangkan tabel internal dapat memiliki baris sebanyak yang diperlukan.

Tabel internal dapat terdiri dari sejumlah field, sesuai dengan kolom-kolom dari sebuah tabel, seperti dalam kamus ABAP sebuah tabel dibuat menggunakan sejumlah field. Bidang kunci juga dapat digunakan dengan tabel internal, dan saat membuat tabel internal ini, mereka menawarkan sedikit lebih banyak fleksibilitas. Dengan tabel internal, seseorang dapat menentukan kunci non-unik, memungkinkan sejumlah catatan non-unik untuk disimpan, dan memungkinkan rekaman duplikat untuk disimpan jika diperlukan.

Ukuran tabel internal atau jumlah baris di dalamnya tidak tetap. Ukuran tabel internal berubah sesuai dengan kebutuhan program yang terkait dengan tabel internal. Tetapi disarankan untuk menjaga tabel internal sekecil mungkin. Ini untuk menghindari sistem berjalan lambat karena kesulitan memproses data dalam jumlah besar.

Tabel internal digunakan untuk banyak tujuan -

  • Mereka dapat digunakan untuk menyimpan hasil kalkulasi yang nantinya dapat digunakan dalam program.

  • Tabel internal juga dapat menyimpan catatan dan data sehingga dapat diakses dengan cepat daripada harus mengakses data ini dari tabel database.

  • Mereka sangat serbaguna. Mereka dapat didefinisikan menggunakan sejumlah struktur lain yang ditentukan.

Contoh

Asumsikan bahwa pengguna ingin membuat daftar nomor kontak berbagai pelanggan dari satu atau beberapa tabel besar. Pengguna pertama-tama membuat tabel internal, memilih data yang relevan dari tabel pelanggan dan kemudian menempatkan data di tabel internal. Pengguna lain dapat mengakses dan menggunakan tabel internal ini secara langsung untuk mengambil informasi yang diinginkan, daripada menulis query database untuk melakukan setiap operasi selama program berjalan.

Pernyataan DATA digunakan untuk mendeklarasikan tabel internal. Program harus diberi tahu di mana tabel dimulai dan diakhiri. Jadi gunakan pernyataan BEGIN OF dan kemudian nyatakan nama tabelnya. Setelah ini, penambahan OCCURS digunakan, diikuti dengan angka, di sini 0. OCCURS memberi tahu SAP bahwa tabel internal sedang dibuat, dan 0 menyatakan bahwa itu tidak akan berisi catatan apa pun pada awalnya. Ini kemudian akan berkembang karena diisi dengan data.

Berikut adalah sintaksnya -

DATA: BEGIN OF <internal_tab> Occurs 0,

Mari buat bidang di baris baru. Misalnya, buat 'nama' yang dideklarasikan sebagai LIKE ZCUSTOMERS1-name. Buat bidang lain bernama 'dob', SEPERTI ZCUSTOMERS1-dob. Pada awalnya berguna untuk memberi nama bidang di tabel internal nama yang sama seperti bidang lain yang telah dibuat di tempat lain. Terakhir, nyatakan akhir dari tabel internal dengan “END OF <internal_tab>.” seperti yang ditunjukkan pada kode berikut -

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

Di sini 'itab01' adalah singkatan yang umum digunakan saat membuat tabel sementara di SAP. Klausa OCCURS digunakan untuk menentukan isi tabel internal dengan mendeklarasikan bidang untuk tabel. Saat klausa OCCURS digunakan, Anda dapat menentukan konstanta numerik 'n' untuk menentukan memori default tambahan jika diperlukan. Ukuran default memori yang digunakan oleh klausa OCCUR 0 adalah 8 KB. Struktur tabel internal sekarang dibuat, dan kodenya dapat ditulis untuk mengisinya dengan catatan.

Tabel internal dapat dibuat dengan atau tanpa menggunakan baris header. Untuk membuat tabel internal dengan baris header, gunakan klausa BEGIN OF sebelum klausa OCCURS atau klausa WITH HEADER LINE setelah klausa OCCURS dalam definisi tabel internal. Untuk membuat tabel internal tanpa baris header, gunakan klausa OCCURS tanpa klausa BEGIN OF.

Anda juga dapat membuat tabel internal sebagai tipe data lokal (tipe data yang digunakan hanya dalam konteks program saat ini) dengan menggunakan pernyataan TYPES. Pernyataan ini menggunakan klausa TYPE atau LIKE untuk merujuk ke tabel yang sudah ada.

Sintaks untuk membuat tabel internal sebagai tipe data lokal adalah -

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

Di sini <internal_tab_type> menentukan tipe tabel untuk tabel internal <internal_tab> dan <line_type_itab> menentukan tipe untuk baris dari tabel internal. Dalam pernyataan TYPES, Anda dapat menggunakan klausa TYPE untuk menentukan tipe garis dari tabel internal sebagai tipe data dan klausa LIKE untuk menentukan tipe garis sebagai objek data. Menentukan kunci untuk tabel internal adalah opsional dan jika pengguna tidak menentukan kunci, sistem SAP akan menentukan tipe tabel dengan kunci arbitrer.

UKURAN AWAL <size_number> membuat objek tabel internal dengan mengalokasikan jumlah awal memori untuk itu. Dalam sintaks sebelumnya, klausa INITIAL SIZE mencadangkan ruang memori untuk baris tabel size_number. Setiap kali objek tabel internal dideklarasikan, ukuran tabel bukan milik tipe data tabel.

Note - Jauh lebih sedikit memori yang dikonsumsi saat tabel internal diisi untuk pertama kalinya.

Contoh

Step 1- Buka Editor ABAP dengan menjalankan kode transaksi SE38. Layar awal Editor ABAP muncul.

Step 2 - Di layar awal, masukkan nama program, pilih radio button Source code dan klik tombol Create untuk membuat program baru.

Step 3- Di kotak dialog 'ABAP: Program Attributes', masukkan deskripsi singkat untuk program di bidang Judul, pilih opsi 'Program yang dapat dijalankan' dari menu tarik-turun Jenis di kotak grup Atribut. Klik tombol Simpan.

Step 4 - Tulis kode berikut di editor ABAP.

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'.

Step 5 - Simpan, aktifkan dan jalankan program seperti biasa.

Dalam contoh ini, mytable adalah tabel internal dan kunci unik ditentukan di bidang Cust_ID.

Kode di atas menghasilkan keluaran sebagai berikut -

The mytable is an Internal Table.

Dalam tabel internal, mengisi termasuk fitur-fitur seperti pemilihan, penyisipan dan penambahan. Bab ini berfokus pada pernyataan INSERT dan APPEND.

Pernyataan INSERT

Pernyataan INSERT digunakan untuk memasukkan satu baris atau sekelompok baris ke dalam tabel internal.

Berikut ini adalah sintaks untuk menambahkan satu baris ke tabel internal -

INSERT <work_area_itab> INTO <internal_tab> INDEX <index_num>.

Dalam sintaks ini, pernyataan INSERT menyisipkan baris baru di tabel internal internal_tab. Sebuah baris baru dapat disisipkan dengan menggunakan ekspresi INTO work_area_itab sebelum parameter internal_tab. Ketika ekspresi work_area_itab INTO digunakan, baris baru diambil dari area kerja work_area_itab dan dimasukkan ke dalam tabel internal_tab. Namun, ketika ekspresi work_area_itab INTO tidak digunakan untuk menyisipkan baris, baris tersebut diambil dari baris header tabel internal_tab.

Ketika baris baru disisipkan ke dalam tabel internal dengan menggunakan klausa INDEX, nomor indeks baris setelah baris yang disisipkan bertambah 1. Jika tabel internal berisi <index_num> - 1 baris, baris baru ditambahkan di ujung meja. Ketika sistem SAP berhasil menambahkan baris ke tabel internal, variabel SY-SUBRC diatur ke 0.

Contoh

Berikut adalah contoh program yang menggunakan pernyataan insert.

REPORT  ZCUSLIST1. 
DATA: BEGIN OF itable1 OCCURS 4,
      F1 LIKE SY-INDEX,
      END OF itable1.
	
   DO 4 TIMES.
      itable1-F1 = sy-index.
      APPEND itable1.
   ENDDO.
	
itable1-F1 = -96.  
INSERT itable1 INDEX 2.  

LOOP AT itable1.
   Write / itable1-F1.  
ENDLOOP.  

LOOP AT itable1 Where F1 ≥ 3.
   itable1-F1 = -78.
   INSERT itable1.
ENDLOOP.

Skip.
LOOP AT itable1.
   Write / itable1-F1.
ENDLOOP.

Kode di atas menghasilkan outp berikut -

1 
96- 
		2 
		3 
 4  
		1 
96- 
		2 
78- 
 3 
78- 
 4

Dalam contoh di atas, loop DO menambahkan 4 baris yang berisi angka 1 sampai 4 ke dalamnya. Komponen baris header itable1-F1 telah diberi nilai -96. Pernyataan Insert menyisipkan baris header sebagai baris baru ke dalam body sebelum baris 3. Baris 3 yang ada menjadi baris 4 setelah penyisipan. Pernyataan LOOP AT mengambil baris-baris tersebut dari tabel internal yang memiliki nilai F1 lebih besar dari atau sama dengan 3. Sebelum setiap baris, pernyataan Sisipkan menyisipkan baris baru dari baris tajuknya. Sebelum penyisipan, komponen F1 telah diubah menjadi berisi -78.

Setelah setiap pernyataan penyisipan dijalankan, sistem akan mengindeks ulang semua baris di bawah yang disisipkan. Ini memperkenalkan overhead saat Anda menyisipkan baris di dekat bagian atas tabel internal yang besar. Jika Anda perlu memasukkan satu blok baris ke dalam tabel internal yang besar, siapkan tabel lain dengan baris yang akan disisipkan dan gunakan sisipkan baris sebagai gantinya.

Saat menyisipkan baris baru di dalam itable1 di dalam loop di itable1, itu tidak mempengaruhi tabel internal secara instan. Ini benar-benar menjadi efektif pada loop pass berikutnya. Saat menyisipkan baris setelah baris saat ini, tabel diindeks ulang di ENDLOOP. Sy-tabix bertambah dan loop berikutnya memproses baris yang ditunjukkan oleh sy-tabix. Misalnya, jika Anda berada di loop kedua dan Anda memasukkan record sebelum baris 3. Ketika endloop dijalankan, baris baru menjadi baris 3 dan baris lama 3 menjadi baris 4 dan seterusnya. Sy-tabix bertambah 1, dan loop pass berikutnya memproses record yang baru disisipkan.

Pernyataan APPEND

Pernyataan APPEND digunakan untuk menambahkan satu baris atau baris ke tabel internal yang ada. Pernyataan ini menyalin satu baris dari area kerja dan menyisipkannya setelah baris terakhir yang ada di tabel internal. Area kerja dapat berupa garis header atau string bidang lainnya dengan struktur yang sama seperti garis tabel internal. Berikut ini adalah sintaks dari pernyataan APPEND yang digunakan untuk menambahkan satu baris dalam tabel internal -

APPEND <record_for_itab> TO <internal_tab>.

Dalam sintaks ini, ekspresi <record_for_itab> dapat direpresentasikan oleh area kerja <work_area_itab>, yang dapat diubah menjadi tipe garis atau oleh klausa INITIAL LINE. Jika pengguna menggunakan area kerja <work_area_itab>, sistem SAP menambahkan baris baru ke tabel internal <internal_tab> dan mengisinya dengan konten area kerja. Klausa INITIAL LINE menambahkan baris kosong yang berisi nilai awal untuk setiap bidang struktur tabel. Setelah setiap pernyataan APPEND, variabel SY-TABIX berisi nomor indeks dari baris yang ditambahkan.

Menambahkan baris ke tabel standar dan diurutkan dengan kunci non-unik berfungsi terlepas dari apakah baris dengan kunci yang sama sudah ada di tabel. Dengan kata lain, entri duplikat dapat terjadi. Namun, kesalahan waktu proses terjadi jika pengguna mencoba menambahkan entri duplikat ke tabel yang diurutkan dengan kunci unik atau jika pengguna melanggar urutan tabel yang diurutkan dengan menambahkan baris ke dalamnya.

Contoh

REPORT  ZCUSLIST1. 
DATA: BEGIN OF linv Occurs 0,
      Name(20) TYPE C,
      ID_Number TYPE I,
END OF linv. 

DATA table1 LIKE TABLE OF linv. 
linv-Name = 'Melissa'. 
linv-ID_Number = 105467. 
APPEND linv TO table1. 
LOOP AT table1 INTO linv. 

Write: / linv-name, linv-ID_Number. 
ENDLOOP.

Kode di atas menghasilkan keluaran sebagai berikut -

Melissa		105467

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 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.

Kita dapat membaca baris tabel dengan menggunakan sintaks berikut dari pernyataan READ TABLE -

READ TABLE <internal_table> FROM <work_area_itab>.

Dalam sintaks ini, ekspresi <work_area_itab> mewakili area kerja yang kompatibel dengan tipe garis dari tabel <internal_table>. Kita dapat menentukan kunci pencarian, tetapi bukan kunci tabel, dalam pernyataan READ dengan menggunakan klausa WITH KEY, seperti yang ditunjukkan pada sintaks berikut -

READ TABLE <internal_table> WITH KEY = <internal_tab_field>.

Di sini seluruh baris tabel internal digunakan sebagai a search key. Isi dari seluruh baris tabel dibandingkan dengan isi bidang <internal_tab_field>. Jika nilai bidang <internal_tab_field> tidak kompatibel dengan tipe garis tabel, nilai-nilai ini akan diubah sesuai dengan tipe garis tabel. Kunci pencarian memungkinkan Anda untuk menemukan entri dalam tabel internal yang tidak memiliki jenis garis terstruktur, yaitu, baris adalah satu bidang atau jenis tabel internal.

Sintaks berikut dari pernyataan READ digunakan untuk menentukan area kerja atau simbol bidang dengan menggunakan klausa COMPARING -

READ TABLE <internal_table> <key> INTO <work_area_itab>
   [COMPARING <F1> <F2>...<Fn>].

Ketika klausa PERBANDINGAN digunakan, bidang tabel yang ditentukan <F1>, <F2> .... <Fn> dari tipe garis terstruktur dibandingkan dengan bidang terkait dari area kerja sebelum dipindahkan. Jika klausul ALL FIELDS ditentukan, sistem SAP akan membandingkan semua komponen. Ketika sistem SAP menemukan entri berdasarkan kunci, nilai variabel SY-SUBRC diatur ke 0. Selain itu, nilai variabel SY-SUBRC diatur ke 2 atau 4 jika konten yang dibandingkan bidang tidak sama atau jika sistem SAP tidak dapat menemukan entri. Namun, sistem SAP menyalin entri ke area kerja target setiap kali menemukan entri, terlepas dari hasil perbandingannya.

Contoh

REPORT  ZREAD_DEMO. 
*/Creating an internal table 
DATA: BEGIN OF Record1, 
ColP TYPE I, 
ColQ TYPE I, 
END OF Record1. 

DATA mytable LIKE HASHED TABLE OF Record1 WITH UNIQUE KEY ColP. 
DO 6 Times.
Record1-ColP = SY-INDEX. 
Record1-ColQ = SY-INDEX + 5. 
INSERT Record1 INTO TABLE mytable. 
ENDDO. 

Record1-ColP = 4. 
Record1-ColQ = 12. 
READ TABLE mytable FROM Record1 INTO Record1 COMPARING ColQ. 

WRITE: 'SY-SUBRC =', SY-SUBRC. 
SKIP. 
WRITE: / Record1-ColP, Record1-ColQ.

Kode di atas menghasilkan keluaran sebagai berikut -

SY-SUBRC =    2 

4         9

Dalam contoh di atas, mytable adalah tabel internal dari tipe tabel berciri, dengan Record1 sebagai area kerja dan ColP sebagai kunci unik. Awalnya, mytable diisi dengan enam baris, di mana kolom ColP berisi nilai variabel SY-INDEX dan kolom ColQ berisi nilai (SY-INDEX + 5).

Area kerja Record1 diisi dengan 4 dan 12 sebagai nilai untuk kolom ColP dan ColQ masing-masing. Pernyataan BACA membaca baris tabel setelah membandingkan nilai bidang kunci ColP dengan nilai di area kerja Record1 menggunakan klausa PERBANDINGAN, lalu menyalin konten baris baca di area kerja. Nilai variabel SY-SUBRC ditampilkan sebagai 2 karena ketika nilai di kolom ColP adalah 4, nilai di ColQ bukan 12, tetapi 9.

Pernyataan DELETE digunakan untuk menghapus satu atau lebih rekaman dari tabel internal. Catatan dari tabel internal dihapus baik dengan menentukan kunci atau kondisi tabel atau dengan menemukan entri duplikat. Jika tabel internal memiliki kunci non-unik dan berisi entri duplikat, entri pertama dari tabel akan dihapus.

Berikut ini adalah sintaks untuk menggunakan pernyataan DELETE untuk menghapus rekaman atau baris dari tabel internal -

DELETE TABLE <internal_table> FROM <work_area_itab>.

Dalam sintaks di atas, ekspresi <work_area_itab> adalah area kerja dan harus kompatibel dengan tipe tabel internal <internal_table>. Operasi penghapusan dilakukan atas dasar kunci default yang dapat diambil dari komponen area kerja.

Anda juga dapat menentukan kunci tabel secara eksplisit dalam pernyataan DELETE TABLE dengan menggunakan sintaks berikut -

DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.

Dalam sintaks ini, <F1>, <F2> .... <Fn> adalah bidang dari tabel internal dan <K1>, <K2> .... <Kn> adalah bidang kunci dari tabel. Pernyataan DELETE digunakan untuk menghapus rekaman atau baris dari tabel <internal_table> berdasarkan ekspresi <K1> = <F1>, <K2> = <F2> ... <Kn> = <Fn>.

Note - Jika tipe data bidang <F1>, <F2> .... <Fn> tidak kompatibel dengan bidang kunci <K1>, <K2> ... <Kn>, maka sistem SAP secara otomatis mengubahnya menjadi format yang kompatibel.

Contoh

REPORT  ZDELETE_DEMO. 
DATA: BEGIN OF Line1, 
ColP TYPE I, 
ColQ TYPE I, 
END OF Line1. 
DATA mytable LIKE HASHED TABLE OF Line1  
WITH UNIQUE KEY ColP. 
DO 8 TIMES. 

Line1-ColP = SY-INDEX. 
Line1-ColQ = SY-INDEX + 4. 
INSERT Line1 INTO TABLE mytable. 
ENDDO. 

Line1-ColP = 1. 
DELETE TABLE mytable: FROM Line1, 
WITH TABLE KEY ColP = 3.
LOOP AT mytable INTO Line1. 

WRITE: / Line1-ColP, Line1-ColQ. 
ENDLOOP.

Kode di atas menghasilkan keluaran sebagai berikut -

2         6 
4         8 
5         9 
6         10 
7         11 
8         12

Dalam contoh ini, tabel saya memiliki dua bidang, ColP dan ColQ. Awalnya, mytable diisi dengan delapan baris, di mana ColP berisi nilai 1, 2, 3, 4, 5, 6, 7 dan 8. ColQ berisi nilai 5, 6, 7, 8, 9, 10, 11 dan 12 karena nilai ColP bertambah 4 setiap kali.

Pernyataan DELETE digunakan untuk menghapus baris dari mytable di mana nilai kolom kunci ColP adalah 1 atau 3. Setelah penghapusan, kolom ColP mytable berisi nilai 2, 4, 5, 6, 7 dan 8, seperti yang ditunjukkan di keluaran. Bidang ColQ berisi nilai 6, 8, 9, 10, 11 dan 12.

Orientasi objek menyederhanakan desain perangkat lunak agar lebih mudah dipahami, dipelihara, dan digunakan kembali. Object Oriented Programming(OOP) merepresentasikan cara berpikir yang berbeda dalam menulis perangkat lunak. Keindahan OOP terletak pada kesederhanaannya. Ekspresi OOP mempermudah pengiriman komponen perangkat lunak berkualitas tepat waktu.

Karena solusi dirancang dalam bentuk objek dunia nyata, pemrogram dan analis bisnis menjadi lebih mudah untuk bertukar ide dan informasi tentang desain yang menggunakan bahasa domain umum. Perbaikan dalam komunikasi ini membantu mengungkap persyaratan tersembunyi, mengidentifikasi risiko, dan meningkatkan kualitas perangkat lunak yang dikembangkan. Pendekatan berorientasi objek berfokus pada objek yang mewakili hal-hal abstrak atau konkret dari dunia nyata. Objek-objek ini ditentukan oleh karakter dan propertinya yang diwakili oleh struktur internal dan atributnya (data). Perilaku objek ini dijelaskan dengan metode (yaitu fungsionalitas).

Mari kita bandingkan pemrograman prosedural dan berorientasi objek -

fitur Pendekatan Berorientasi Prosedur Pendekatan Berorientasi Objek
Tekanan Penekanan pada tugas. Penekanan pada hal-hal yang melakukan tugas tersebut.
Modularisasi Program dapat dibagi menjadi program yang lebih kecil yang disebut fungsi. Program diatur ke dalam kelas dan objek dan fungsionalitasnya dimasukkan ke dalam metode kelas.
Keamanan data Sebagian besar fungsi berbagi data global. Data dapat disembunyikan dan tidak dapat diakses oleh sumber eksternal.
Kemungkinan diperpanjang Ini lebih memakan waktu untuk mengubah dan memperluas fungsionalitas yang ada. Data dan fungsi baru dapat ditambahkan dengan mudah jika diperlukan.

ABAP awalnya dikembangkan sebagai bahasa prosedural (mirip dengan bahasa pemrograman prosedural sebelumnya seperti COBOL). Tapi ABAP sekarang telah mengadaptasi prinsip paradigma berorientasi objek dengan pengenalan Objek ABAP. Konsep berorientasi objek dalam ABAP seperti class, object, inheritance, dan polymorphism, pada dasarnya sama dengan bahasa berorientasi objek modern lainnya seperti Java atau C ++.

Saat orientasi objek mulai terbentuk, setiap kelas mengasumsikan penetapan peran tertentu. Pembagian kerja ini membantu menyederhanakan model pemrograman secara keseluruhan, memungkinkan setiap kelas berspesialisasi dalam memecahkan bagian tertentu dari masalah yang dihadapi. Kelas semacam itu memiliki kohesi tinggi dan operasi setiap kelas terkait erat dalam beberapa cara intuitif.

Fitur utama dari orientasi objek adalah -

  • Struktur pemrograman yang efektif.
  • Entitas dunia nyata dapat dimodelkan dengan sangat baik.
  • Tekanan pada keamanan dan akses data.
  • Meminimalkan redundansi kode.
  • Abstraksi dan enkapsulasi data.

Objek adalah jenis variabel khusus yang memiliki karakteristik dan perilaku berbeda. Ciri-ciri atau atribut suatu objek digunakan untuk menggambarkan keadaan suatu objek, dan perilaku atau metode merepresentasikan tindakan yang dilakukan oleh suatu objek.

Objek adalah pola atau turunan dari suatu kelas. Ini mewakili entitas dunia nyata seperti orang atau entitas pemrograman seperti variabel dan konstanta. Misalnya, akun dan siswa adalah contoh entitas dunia nyata. Tetapi komponen perangkat keras dan perangkat lunak komputer adalah contoh entitas pemrograman.

Sebuah benda memiliki tiga karakteristik utama berikut -

  • Memiliki negara bagian.
  • Memiliki identitas yang unik.
  • Mungkin atau mungkin tidak menampilkan perilaku tersebut.

Status suatu objek dapat digambarkan sebagai sekumpulan atribut dan nilainya. Misalnya, rekening bank memiliki sekumpulan atribut seperti Nomor Rekening, Nama, Jenis Rekening, Saldo, dan nilai dari semua atribut ini. Perilaku suatu objek mengacu pada perubahan yang terjadi pada atributnya selama periode waktu tertentu.

Setiap benda memiliki identitas unik yang dapat digunakan untuk membedakannya dengan benda lain. Dua objek mungkin menunjukkan perilaku yang sama dan mereka mungkin atau mungkin tidak memiliki status yang sama, tetapi keduanya tidak pernah memiliki identitas yang sama. Dua orang mungkin memiliki nama, usia, dan jenis kelamin yang sama tetapi mereka tidak identik. Demikian pula, identitas suatu objek tidak akan pernah berubah sepanjang hidupnya.

Objek dapat berinteraksi satu sama lain dengan mengirimkan pesan. Objek berisi data dan kode untuk memanipulasi data. Objek juga dapat digunakan sebagai tipe data yang ditentukan pengguna dengan bantuan kelas. Objek juga disebut variabel dari kelas tipe. Setelah menentukan kelas, Anda dapat membuat sejumlah objek yang termasuk dalam kelas itu. Setiap objek dikaitkan dengan data dari tipe kelas yang telah dibuatnya.

Membuat Objek

Pembuatan objek biasanya mencakup langkah-langkah berikut -

  • Membuat variabel referensi dengan mengacu pada kelas. Sintaksnya adalah -

DATA: <object_name> TYPE REF TO <class_name>.
  • Membuat objek dari variabel referensi. Sintaksnya adalah -

CREATE Object: <object_name>.

Contoh

REPORT ZDEMO_OBJECT. 
CLASS Class1 Definition. 
Public Section. 
DATA: text1(45) VALUE 'ABAP Objects.'. 
METHODS: Display1. 
ENDCLASS. 

CLASS Class1 Implementation. 
METHOD Display1. 
Write:/ 'This is the Display method.'. 
ENDMETHOD. 
ENDCLASS. 

START-OF-SELECTION. 
DATA: Class1 TYPE REF TO Class1. 
CREATE Object: Class1. 
Write:/ Class1->text1. 
CALL METHOD: Class1->Display1.

Kode di atas menghasilkan keluaran sebagai berikut -

ABAP Objects. 
This is the Display method.

Kelas digunakan untuk menentukan bentuk objek dan menggabungkan representasi data dan metode untuk memanipulasi data ke dalam satu paket yang rapi. Data dan fungsi di dalam kelas dipanggilmembers of the class.

Definisi dan Implementasi Kelas

Saat Anda menentukan kelas, Anda menentukan cetak biru untuk tipe data. Ini tidak benar-benar mendefinisikan data apa pun, tetapi itu mendefinisikan apa arti nama kelas, terdiri dari apa objek kelas itu, dan operasi apa yang dapat dilakukan pada objek semacam itu. Artinya, ia mendefinisikan karakteristik abstrak dari suatu objek, seperti atribut, bidang, dan properti.

Sintaks berikut menunjukkan cara mendefinisikan kelas -

CLASS <class_name> DEFINITION. 
.......... 
.......... 
ENDCLASS.

Definisi kelas dimulai dengan kata kunci CLASS diikuti dengan nama kelas, DEFINISI dan badan kelas. Definisi kelas dapat berisi berbagai komponen kelas seperti atribut, metode, dan peristiwa. Saat kita mendeklarasikan metode dalam deklarasi kelas, implementasi metode harus disertakan dalam implementasi kelas. Sintaks berikut menunjukkan cara mengimplementasikan kelas -

CLASS <class_name> IMPLEMENTATION. 
........... 
.......... 
ENDCLASS.

Note- Implementasi kelas berisi implementasi semua metodenya. Dalam Objek ABAP, struktur kelas berisi komponen seperti atribut, metode, peristiwa, jenis, dan konstanta.

Atribut

Atribut adalah bidang data kelas yang dapat memiliki tipe data apa pun seperti C, I, F, dan N. Atribut dideklarasikan dalam deklarasi kelas. Atribut ini dapat dibagi menjadi 2 kategori: atribut instance dan statis. Sebuahinstance attributemendefinisikan keadaan spesifik instance suatu objek. Status berbeda untuk objek yang berbeda. Atribut instance dideklarasikan dengan menggunakan pernyataan DATA.

Static attributesmenentukan status umum kelas yang dimiliki bersama oleh semua instance kelas. Artinya, jika Anda mengubah atribut statis dalam satu objek kelas, perubahan tersebut juga dapat dilihat oleh semua objek kelas lainnya. Atribut statis dideklarasikan dengan menggunakan pernyataan CLASS-DATA.

Metode

Metode adalah fungsi atau prosedur yang merepresentasikan perilaku suatu objek di kelas. Metode kelas dapat mengakses atribut kelas apa pun. Definisi metode juga bisa berisi parameter, sehingga Anda bisa memberikan nilai ke parameter ini saat metode dipanggil. Definisi metode dideklarasikan di deklarasi kelas dan diimplementasikan di bagian implementasi kelas. Pernyataan METHOD dan ENDMETHOD digunakan untuk mendefinisikan bagian implementasi dari sebuah metode. Sintaks berikut menunjukkan cara mengimplementasikan metode -

METHOD <m_name>. 
.......... 
.......... 
ENDMETHOD.

Dalam sintaks ini, <m_name> mewakili nama sebuah metode. Note - Anda dapat memanggil metode dengan menggunakan pernyataan METODE PANGGILAN.

Mengakses Atribut dan Metode

Komponen kelas dapat ditentukan di bagian visibilitas publik, pribadi, atau dilindungi yang mengontrol bagaimana komponen ini dapat diakses. Bagian visibilitas pribadi digunakan untuk menolak akses ke komponen dari luar kelas. Komponen tersebut hanya dapat diakses dari dalam kelas seperti metode.

Komponen yang ditentukan di bagian visibilitas publik dapat diakses dari konteks apa pun. Secara default semua anggota kelas akan menjadi pribadi. Praktisnya, kita mendefinisikan data di private section dan metode terkait di public section sehingga bisa dipanggil dari luar kelas seperti yang ditunjukkan pada program berikut.

  • Atribut dan metode yang dideklarasikan di bagian Publik dalam sebuah kelas dapat diakses oleh kelas itu dan kelas lain, sub-kelas program.

  • Ketika atribut dan metode dideklarasikan di bagian Protected di sebuah kelas, itu hanya dapat diakses oleh kelas dan sub kelas itu (kelas turunan).

  • Ketika atribut dan metode dideklarasikan di bagian Privat dalam sebuah kelas, itu hanya dapat diakses oleh kelas itu dan bukan oleh kelas lain.

Contoh

Report ZAccess1. 
CLASS class1 Definition.
   PUBLIC Section.
      Data: text1 Type char25 Value 'Public Data'.
      Methods meth1.
		
   PROTECTED Section.
      Data: text2 Type char25 Value 'Protected Data'.
		
   PRIVATE Section.     
      Data: text3 Type char25 Value 'Private Data'. 
ENDCLASS.
 
CLASS class1 Implementation.   
   Method meth1.     
      Write: / 'Public Method:',   
             / text1,
             / text2,
             / text3.
      Skip.
   EndMethod.
ENDCLASS. 

Start-Of-Selection.   
   Data: Objectx Type Ref To class1.
   Create Object: Objectx.
   CALL Method: Objectx→meth1.
   Write: / Objectx→text1.

Kode di atas menghasilkan keluaran sebagai berikut -

Public Method: 
Public Data 
Protected Data 
Private Data
  
Public Data

Atribut Statis

Atribut Statis dideklarasikan dengan pernyataan CLASS-DATA. Semua objek atau instance dapat menggunakan atribut statis kelas. Atribut statis diakses langsung dengan bantuan nama kelas seperti class_name⇒name_1 = 'Some Text'.

Contoh

Berikut adalah program dimana kita ingin mencetak teks dengan nomor baris 4 sampai 8 kali. Kami mendefinisikan kelas class1 dan di bagian publik kami mendeklarasikan CLASS-DATA (atribut statis) dan metode. Setelah menerapkan kelas dan metode, kami langsung mengakses atribut statis di acara Start-Of-Selection. Kemudian kita hanya membuat instance kelas dan memanggil metode tersebut.

Report ZStatic1. 
CLASS class1 Definition.   
   PUBLIC Section.
      CLASS-DATA: name1 Type char45,
                  data1 Type I.
   Methods: meth1. 
ENDCLASS. 

CLASS class1 Implementation.   
   Method meth1.
      Do 4 Times.
         data1 = 1 + data1.
         Write: / data1, name1.
      EndDo.
      Skip.
   EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
   class1⇒name1 = 'ABAP Object Oriented Programming'.
   class1⇒data1 = 0.
   Data: Object1 Type Ref To class1,
         Object2 Type Ref To class1.
			
   Create Object: Object1, Object2.
   CALL Method: Object1→meth1, 
                Object2→meth1.

Kode di atas menghasilkan keluaran sebagai berikut -

Konstruktor

Konstruktor adalah metode khusus yang dipanggil secara otomatis, baik saat membuat objek atau mengakses komponen kelas. Konstruktor dipicu setiap kali objek dibuat, tetapi kita perlu memanggil metode untuk memicu metode umum. Dalam contoh berikut, kami telah mendeklarasikan dua metode publik method1 dan konstruktor. Kedua metode ini memiliki operasi yang berbeda. Saat membuat objek kelas, metode konstruktor memicu operasinya.

Contoh

Report ZConstructor1. 
CLASS class1 Definition.
   PUBLIC Section.
      Methods: method1, constructor.
ENDCLASS. 

CLASS class1 Implementation.
   Method method1.
      Write: / 'This is Method1'.
   EndMethod.
	
   Method constructor.
      Write: / 'Constructor Triggered'.
   EndMethod. 
ENDCLASS. 

Start-Of-Selection.
   Data Object1 Type Ref To class1.
   Create Object Object1.

Kode di atas menghasilkan keluaran sebagai berikut -

Constructor Triggered

Operator ME dalam Metode

Saat Anda mendeklarasikan variabel jenis apa pun di bagian publik kelas, Anda dapat menggunakannya dalam implementasi lainnya. Variabel dapat dideklarasikan dengan nilai awal di bagian publik. Kita dapat mendeklarasikan variabel lagi di dalam metode dengan nilai berbeda. Saat kita menulis variabel di dalam metode, sistem akan mencetak nilai yang diubah. Untuk mencerminkan nilai variabel sebelumnya, kita harus menggunakan operator 'ME'.

Dalam program ini, kami telah mendeklarasikan teks variabel publik1 dan dimulai dengan nilai. Kami telah mendeklarasikan variabel yang sama lagi, tetapi dibuat dengan nilai yang berbeda. Di dalam metode, kami menulis variabel itu dengan operator 'ME' untuk mendapatkan nilai yang dimulai sebelumnya. Kami mendapatkan nilai yang diubah dengan mendeklarasikan secara langsung.

Contoh

Report ZMEOperator1. 
CLASS class1 Definition.
   PUBLIC Section. 
	
Data text1 Type char25 Value 'This is CLASS Attribute'.
   Methods method1. 
ENDCLASS. 

CLASS class1 Implementation.
   Method method1. 
	
Data text1 Type char25 Value 'This is METHOD Attribute'.
   Write: / ME→text1,
          / text1.
   ENDMethod.
ENDCLASS. 

Start-Of-Selection.
   Data objectx Type Ref To class1.
   Create Object objectx.
   CALL Method objectx→method1.

Kode di atas menghasilkan keluaran sebagai berikut -

This is CLASS Attribute 
This is METHOD Attribute

Salah satu konsep terpenting dalam pemrograman berorientasi objek adalah konsep inheritance. Inheritance memungkinkan kita untuk mendefinisikan kelas dalam istilah kelas lain, yang membuatnya lebih mudah untuk membuat dan memelihara aplikasi. Ini juga memberikan kesempatan untuk menggunakan kembali fungsionalitas kode dan waktu implementasi yang cepat.

Saat membuat kelas, daripada menulis metode dan anggota data yang benar-benar baru, pemrogram dapat menetapkan bahwa kelas baru harus mewarisi anggota kelas yang sudah ada. Kelas yang ada ini disebutbase class atau super class, dan kelas baru disebut sebagai derived class atau sub class.

  • Objek dari satu kelas dapat memperoleh properti kelas lain.

  • Kelas turunan mewarisi data dan metode kelas super. Namun, mereka dapat menimpa metode dan juga menambahkan metode baru.

  • Keuntungan utama dari warisan adalah dapat digunakan kembali.

Hubungan pewarisan ditentukan menggunakan tambahan 'INHERITING FROM' ke pernyataan definisi kelas.

Berikut adalah sintaksnya -

CLASS <subclass> DEFINITION INHERITING FROM <superclass>.

Contoh

Report ZINHERITAN_1. 
CLASS Parent Definition. 
PUBLIC Section. 
Data: w_public(25) Value 'This is public data'. 
Methods: ParentM. 
ENDCLASS. 

CLASS Child Definition Inheriting From Parent. 
PUBLIC Section. 
Methods: ChildM. 
ENDCLASS. 

CLASS Parent Implementation. 
Method ParentM. 
Write /: w_public. 
EndMethod. ENDCLASS. 

CLASS Child Implementation. 
Method ChildM. 
Skip. 
Write /: 'Method in child class', w_public.
EndMethod. 
ENDCLASS. 

Start-of-selection. 
Data: Parent Type Ref To Parent, 
Child Type Ref To Child. 
Create Object: Parent, Child. 
Call Method: Parent→ParentM, 
child→ChildM.

Kode di atas menghasilkan keluaran sebagai berikut -

This is public data 
Method in child class 
This is public data

Kontrol Akses dan Warisan

Kelas turunan dapat mengakses semua anggota non-privat dari kelas dasarnya. Jadi anggota kelas super yang seharusnya tidak dapat diakses oleh fungsi anggota sub kelas harus dinyatakan pribadi di kelas super. Kami dapat meringkas berbagai jenis akses menurut siapa yang dapat mengaksesnya dengan cara berikut -

Mengakses Publik Terlindung Pribadi
Teman yang sama Iya Iya Iya
Kelas turunan Iya Iya Tidak
Di luar kelas Iya Tidak Tidak

Saat mendapatkan kelas dari kelas super, itu dapat diwariskan melalui warisan publik, dilindungi atau pribadi. Jenis warisan ditentukan oleh penentu akses seperti dijelaskan di atas. Kami jarang menggunakan warisan yang dilindungi atau pribadi, tetapi warisan publik biasanya digunakan. Aturan berikut diterapkan saat menggunakan berbagai jenis warisan.

  • Public Inheritance- Saat memperoleh kelas dari kelas super publik, anggota publik kelas super menjadi anggota publik dari sub kelas dan anggota kelas super yang dilindungi menjadi anggota sub kelas yang dilindungi. Anggota privat kelas super tidak pernah dapat diakses secara langsung dari sub kelas, tetapi dapat diakses melalui panggilan ke publik dan anggota kelas super yang dilindungi.

  • Protected Inheritance - Saat berasal dari kelas super yang dilindungi, publik dan anggota kelas super yang dilindungi menjadi anggota subkelas yang dilindungi.

  • Private Inheritance - Saat berasal dari kelas super privat, publik dan anggota kelas super yang dilindungi menjadi anggota pribadi dari sub kelas.

Mendefinisikan Ulang Metode di Sub Kelas

Metode kelas super dapat diimplementasikan kembali di sub kelas. Beberapa aturan mendefinisikan ulang metode -

  • Pernyataan redefinisi untuk metode yang diwariskan harus berada di bagian yang sama dengan definisi metode asli.

  • Jika Anda mendefinisikan ulang suatu metode, Anda tidak perlu memasukkan antarmukanya lagi di subkelas, tetapi hanya nama metode tersebut.

  • Dalam metode yang didefinisikan ulang, Anda dapat mengakses komponen kelas super langsung menggunakan referensi super.

  • Referensi super pseudo hanya dapat digunakan dalam metode yang didefinisikan ulang.

Contoh

Report Zinheri_Redefine. 
CLASS super_class Definition. 
Public Section. 
Methods: Addition1 importing g_a TYPE I
                             g_b TYPE I
		   exporting g_c TYPE I.
ENDCLASS. 

CLASS super_class Implementation. 
Method Addition1. 
g_c = g_a + g_b. 
EndMethod. 
ENDCLASS. 

CLASS sub_class Definition Inheriting From super_class. 
Public Section. 
METHODS: Addition1 Redefinition. 
ENDCLASS. 

CLASS sub_class Implementation. 
Method Addition1. 
g_c = g_a + g_b + 10. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Parameters: P_a Type I, P_b TYPE I. 
Data: H_Addition1 TYPE I. 
Data: H_Sub TYPE I. 
Data: Ref1 TYPE Ref TO sub_class. 
Create Object Ref1. 
Call Method Ref1→Addition1 exporting g_a = P_a 
                                     g_b = P_b
		           Importing g_c = H_Addition1. 
Write:/ H_Addition1.

Setelah menjalankan F8, jika kita memasukkan nilai 9 dan 10, kode di atas menghasilkan keluaran sebagai berikut -

Redefinition Demo 
29

Istilah polimorfisme secara harfiah berarti 'banyak bentuk'. Dari perspektif berorientasi objek, polimorfisme bekerja bersama dengan pewarisan untuk memungkinkan berbagai jenis dalam pohon pewarisan digunakan secara bergantian. Artinya, polimorfisme terjadi ketika ada hierarki kelas dan mereka terkait dengan pewarisan. Polimorfisme ABAP berarti bahwa panggilan ke suatu metode akan menyebabkan metode lain dijalankan bergantung pada jenis objek yang memanggil metode tersebut.

Program berikut berisi kelas abstrak 'class_prgm', 2 sub kelas (class_procedural dan class_OO), dan kelas driver uji 'class_type_approach'. Dalam implementasi ini, metode kelas 'start' memungkinkan kita untuk menampilkan jenis pemrograman dan pendekatannya. Jika Anda melihat lebih dekat pada tanda tangan metode 'start', Anda akan mengamati bahwa metode ini menerima parameter pengimporan tipe class_prgm. Namun, dalam acara Start-Of-Selection, metode ini telah dipanggil pada saat run-time dengan objek berjenis class_procedural dan class_OO.

Contoh

Report ZPolymorphism1. 
CLASS class_prgm Definition Abstract. 
PUBLIC Section. 
Methods: prgm_type Abstract, 
approach1 Abstract. 
ENDCLASS. 

CLASS class_procedural Definition 
Inheriting From class_prgm. 
PUBLIC Section. 
Methods: prgm_type Redefinition, 
approach1 Redefinition. 
ENDCLASS. 

CLASS class_procedural Implementation. 
Method prgm_type. 
Write: 'Procedural programming'. 

EndMethod. Method approach1. 
Write: 'top-down approach'. 

EndMethod. ENDCLASS. 
CLASS class_OO Definition 
Inheriting From class_prgm. 
PUBLIC Section. 
Methods: prgm_type Redefinition, 
approach1 Redefinition. 
ENDCLASS. 

CLASS class_OO Implementation. 
Method prgm_type. 
Write: 'Object oriented programming'. 
EndMethod. 

Method approach1. 
Write: 'bottom-up approach'.
EndMethod. 
ENDCLASS. 

CLASS class_type_approach Definition. 
PUBLIC Section. 
CLASS-METHODS: 
start Importing class1_prgm 
Type Ref To class_prgm. 
ENDCLASS. 

CLASS class_type_approach IMPLEMENTATION. 
Method start. 
CALL Method class1_prgm→prgm_type. 
Write: 'follows'. 

CALL Method class1_prgm→approach1. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Data: class_1 Type Ref To class_procedural, 
class_2 Type Ref To class_OO. 

Create Object class_1. 
Create Object class_2. 
CALL Method class_type_approach⇒start 
Exporting 

class1_prgm = class_1. 
New-Line. 
CALL Method class_type_approach⇒start 
Exporting 
class1_prgm = class_2.

Kode di atas menghasilkan keluaran sebagai berikut -

Procedural programming follows top-down approach  
Object oriented programming follows bottom-up approach

Lingkungan waktu proses ABAP melakukan transmisi penyempitan implisit selama penetapan parameter pengimporan class1_prgm. Fitur ini membantu metode 'mulai' diimplementasikan secara umum. Informasi tipe dinamis yang terkait dengan variabel referensi objek memungkinkan lingkungan waktu proses ABAP untuk secara dinamis mengikat panggilan metode dengan implementasi yang ditentukan dalam objek yang ditunjukkan oleh variabel referensi objek. Misalnya, parameter pengimporan 'class1_prgm' untuk metode 'mulai' di kelas 'class_type_approach' merujuk ke tipe abstrak yang tidak pernah bisa dibuat instance-nya sendiri.

Setiap kali metode dipanggil dengan implementasi sub kelas yang konkret seperti class_procedural atau class_OO, tipe dinamis dari parameter referensi class1_prgm terikat ke salah satu tipe konkret ini. Oleh karena itu, panggilan ke metode 'prgm_type' dan 'approach1' merujuk pada implementasi yang disediakan di sub kelas class_procedural atau class_OO daripada implementasi abstrak yang tidak ditentukan yang disediakan di kelas 'class_prgm'.

Enkapsulasi adalah konsep Pemrograman Berorientasi Objek (OOP) yang menyatukan data dan fungsi yang memanipulasi data, dan menjaga keamanan dari gangguan dan penyalahgunaan luar. Enkapsulasi data mengarah pada konsep OOP penting dalam menyembunyikan data. Enkapsulasi adalah mekanisme pemaketan data dan fungsi yang menggunakannya, dan abstraksi data adalah mekanisme yang hanya mengekspos antarmuka dan menyembunyikan detail implementasi dari pengguna.

ABAP mendukung properti enkapsulasi dan penyembunyian data melalui pembuatan tipe yang ditentukan pengguna yang disebut kelas. Seperti yang telah dibahas sebelumnya, kelas dapat berisi anggota privat, dilindungi, dan publik. Secara default, semua item yang ditentukan dalam kelas bersifat pribadi.

Enkapsulasi dengan Antarmuka

Enkapsulasi sebenarnya berarti satu atribut dan metode dapat dimodifikasi di kelas yang berbeda. Oleh karena itu, data dan metode dapat memiliki bentuk dan logika berbeda yang dapat disembunyikan ke kelas yang terpisah.

Mari pertimbangkan enkapsulasi dengan antarmuka. Antarmuka digunakan ketika kita perlu membuat satu metode dengan fungsionalitas berbeda di kelas yang berbeda. Di sini nama metode tidak perlu diubah. Metode yang sama harus diimplementasikan dalam implementasi kelas yang berbeda.

Contoh

Program berikut berisi Antarmuka inter_1. Kami telah mendeklarasikan atribut dan metode metode1. Kami juga telah mendefinisikan dua kelas seperti Kelas1 dan Kelas2. Jadi kita harus mengimplementasikan metode 'method1' di kedua implementasi kelas. Kami telah menerapkan metode 'method1' secara berbeda di kelas yang berbeda. Dalam start-ofselection, kami membuat dua objek Object1 dan Object2 untuk dua kelas. Kemudian, kami memanggil metode dengan objek berbeda untuk mendapatkan fungsi yang dideklarasikan di kelas terpisah.

Report ZEncap1. 
Interface inter_1.
   Data text1 Type char35.
   Methods method1.
EndInterface.

CLASS Class1 Definition.
   PUBLIC Section.
      Interfaces inter_1.
ENDCLASS. 

CLASS Class2 Definition.
   PUBLIC Section.
      Interfaces inter_1. 
ENDCLASS.

CLASS Class1 Implementation.
   Method inter_1~method1.
      inter_1~text1 = 'Class 1 Interface method'.
      Write / inter_1~text1.
   EndMethod. 
ENDCLASS.
 
CLASS Class2 Implementation.
   Method inter_1~method1.
      inter_1~text1 = 'Class 2 Interface method'.
      Write / inter_1~text1.
   EndMethod. 
ENDCLASS.
 
Start-Of-Selection.
   Data: Object1 Type Ref To Class1,
      Object2 Type Ref To Class2.
		
   Create Object: Object1, Object2.
   CALL Method: Object1→inter_1~method1,
                Object2→inter_1~method1.

Kode di atas menghasilkan keluaran sebagai berikut -

Class 1 Interface method 
Class 2 Interface method

Kelas yang dienkapsulasi tidak memiliki banyak ketergantungan di dunia luar. Selain itu, interaksi yang mereka lakukan dengan klien eksternal dikontrol melalui antarmuka publik yang distabilkan. Yaitu, kelas yang dienkapsulasi dan kliennya digabungkan secara longgar. Untuk sebagian besar, kelas dengan antarmuka yang terdefinisi dengan baik dapat dihubungkan ke konteks lain. Jika dirancang dengan benar, kelas yang dienkapsulasi menjadi aset perangkat lunak yang dapat digunakan kembali.

Strategi Merancang

Sebagian besar dari kita telah belajar melalui pengalaman pahit untuk menjadikan anggota kelas pribadi secara default kecuali kita benar-benar perlu mengekspos mereka. Itu hanya enkapsulasi yang bagus. Kebijakan ini paling sering diterapkan ke anggota data dan juga berlaku sama untuk semua anggota.

Mirip dengan kelas di ABAP, antarmuka bertindak sebagai tipe data untuk objek. Komponen antarmuka sama dengan komponen kelas. Tidak seperti deklarasi kelas, deklarasi antarmuka tidak menyertakan bagian visibilitas. Ini karena komponen yang ditentukan dalam deklarasi antarmuka selalu terintegrasi di bagian visibilitas publik kelas.

Antarmuka digunakan ketika dua kelas serupa memiliki metode dengan nama yang sama, tetapi fungsinya berbeda satu sama lain. Antarmuka mungkin tampak mirip dengan kelas, tetapi fungsi yang ditentukan dalam antarmuka diimplementasikan dalam kelas untuk memperluas cakupan kelas tersebut. Antarmuka bersama dengan fitur pewarisan memberikan dasar untuk polimorfisme. Ini karena metode yang ditentukan dalam antarmuka dapat berperilaku berbeda di kelas yang berbeda.

Berikut adalah format umum untuk membuat antarmuka -

INTERFACE <intf_name>. 
DATA..... 
CLASS-DATA..... 
METHODS..... 
CLASS-METHODS..... 
ENDINTERFACE.

Dalam sintaks ini, <intf_name> mewakili nama antarmuka. Pernyataan DATA dan CLASSDATA dapat digunakan untuk masing-masing mendefinisikan instance dan atribut statis antarmuka. Pernyataan METHODS dan CLASS-METHODS dapat digunakan untuk menentukan metode instance dan metode statis dari antarmuka masing-masing. Karena definisi antarmuka tidak menyertakan kelas implementasi, maka tidak perlu menambahkan klausa DEFINITION dalam deklarasi antarmuka.

Note- Semua metode antarmuka abstrak. Mereka sepenuhnya dideklarasikan termasuk antarmuka parameternya, tetapi tidak diimplementasikan di antarmuka. Semua kelas yang ingin menggunakan antarmuka harus menerapkan semua metode antarmuka. Jika tidak, kelas tersebut menjadi kelas abstrak.

Kami menggunakan sintaks berikut di bagian implementasi kelas -

INTERFACE <intf_name>.

Dalam sintaks ini, <intf_name> mewakili nama antarmuka. Perhatikan bahwa sintaks ini harus digunakan di bagian publik kelas.

Sintaks berikut digunakan untuk mengimplementasikan metode antarmuka di dalam implementasi kelas -

METHOD <intf_name~method_m>. 
<statements>. 
ENDMETHOD.

Dalam sintaks ini, <intf_name ~ method_m> mewakili nama metode yang dideklarasikan secara lengkap dari antarmuka <intf_name>.

Contoh

Report ZINTERFACE1. 
INTERFACE my_interface1. 
Methods msg. 
ENDINTERFACE. 

CLASS num_counter Definition. 
PUBLIC Section. 
INTERFACES my_interface1. 
Methods add_number. 
PRIVATE Section. 
Data num Type I. 
ENDCLASS. 

CLASS num_counter Implementation. 
Method my_interface1~msg. 
Write: / 'The number is', num. 
EndMethod. 

Method add_number. 
ADD 7 TO num. 
EndMethod. 
ENDCLASS. 

CLASS drive1 Definition. 
PUBLIC Section. 
INTERFACES my_interface1. 
Methods speed1.
PRIVATE Section.
Data wheel1 Type I. 
ENDCLASS. 

CLASS drive1 Implementation.
Method my_interface1~msg.
Write: / 'Total number of wheels is', wheel1. 
EndMethod. 

Method speed1. 
Add 4 To wheel1. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Data object1 Type Ref To num_counter. 
Create Object object1. 

CALL Method object1→add_number.
CALL Method object1→my_interface1~msg.

Data object2 Type Ref To drive1. 
Create Object object2.
 
CALL Method object2→speed1. 
CALL Method object2→my_interface1~msg.

Kode di atas menghasilkan keluaran sebagai berikut -

The number is 7 
Total number of wheels is 4

Dalam contoh di atas, my_interface1 adalah nama antarmuka yang berisi metode 'msg'. Selanjutnya, dua kelas, num_counter dan drive1 ditentukan dan diimplementasikan. Kedua kelas ini mengimplementasikan metode 'msg' dan juga metode spesifik yang menentukan perilaku instance masing-masing, seperti metode add_number dan speed1.

Note - Metode add_number dan speed1 dikhususkan untuk kelas masing-masing.

Sebuah eventadalah sekumpulan hasil yang ditentukan di kelas untuk memicu pengendali kejadian di kelas lain. Saat sebuah peristiwa dipicu, kita bisa memanggil sejumlah metode penanganan peristiwa. Hubungan antara pemicu dan metode penangannya sebenarnya ditentukan secara dinamis pada waktu proses.

Dalam pemanggilan metode normal, program pemanggil menentukan metode mana dari sebuah objek atau kelas yang perlu dipanggil. Karena metode penangan tetap tidak terdaftar untuk setiap peristiwa, dalam kasus penanganan peristiwa, metode penangan menentukan peristiwa yang perlu dipicu.

Peristiwa kelas bisa memicu metode penanganan peristiwa dari kelas yang sama dengan menggunakan pernyataan RAISE EVENT. Untuk sebuah acara, metode penanganan kejadian dapat didefinisikan di kelas yang sama atau berbeda dengan menggunakan klausa FOR EVENT, seperti yang ditunjukkan dalam sintaks berikut -

FOR EVENT <event_name> OF <class_name>.

Mirip dengan metode kelas, peristiwa dapat memiliki antarmuka parameter tetapi hanya memiliki parameter keluaran. Parameter keluaran diteruskan ke metode penanganan kejadian oleh pernyataan RAISE EVENT yang menerimanya sebagai parameter masukan. Sebuah acara ditautkan ke metode penangannya secara dinamis dalam program dengan menggunakan pernyataan SET HANDLER.

Ketika sebuah kejadian dipicu, metode penanganan kejadian yang sesuai seharusnya dijalankan di semua kelas penanganan.

Contoh

REPORT ZEVENT1. 
CLASS CL_main DEFINITION. 
PUBLIC SECTION. 
DATA: num1 TYPE I. 
METHODS: PRO IMPORTING num2 TYPE I. 
EVENTS: CUTOFF. 
ENDCLASS. 

CLASS CL_eventhandler DEFINITION. 
PUBLIC SECTION. 
METHODS: handling_CUTOFF FOR EVENT CUTOFF OF CL_main. 
ENDCLASS. 

START-OF-SELECTION. 
DATA: main1 TYPE REF TO CL_main. 
DATA: eventhandler1 TYPE REF TO CL_eventhandler. 

CREATE OBJECT main1. 
CREATE OBJECT eventhandler1. 

SET HANDLER eventhandler1→handling_CUTOFF FOR main1. 
main1→PRO( 4 ).
CLASS CL_main IMPLEMENTATION.
METHOD PRO.
num1 = num2.
IF num2 ≥ 2. 
RAISE EVENT CUTOFF.
ENDIF. 
ENDMETHOD.
ENDCLASS.

CLASS CL_eventhandler IMPLEMENTATION.
METHOD handling_CUTOFF.
WRITE: 'Handling the CutOff'. 
WRITE: / 'Event has been processed'. 
ENDMETHOD. ENDCLASS.

Kode di atas menghasilkan keluaran sebagai berikut -

Handling the CutOff 
Event has been processed

SEBUAH reportadalah penyajian data dalam struktur yang terorganisir. Banyak sistem manajemen basis data menyertakan penulis laporan yang memungkinkan Anda merancang dan menghasilkan laporan. Aplikasi SAP mendukung pembuatan laporan.

Laporan klasik dibuat dengan menggunakan data keluaran dalam pernyataan WRITE di dalam sebuah loop. Mereka tidak berisi sub-laporan apa pun. SAP juga menyediakan beberapa laporan standar seperti RSCLTCOP yang digunakan untuk menyalin tabel di seluruh klien dan RSPARAM yang digunakan untuk menampilkan parameter instans.

Laporan ini hanya terdiri dari satu layar sebagai keluaran. Kita dapat menggunakan berbagai peristiwa seperti INITIALIZATON & TOP-OF-PAGE untuk membuat laporan klasik, dan setiap peristiwa memiliki kepentingannya sendiri selama pembuatan laporan klasik. Setiap peristiwa ini dikaitkan dengan tindakan pengguna tertentu dan dipicu hanya saat pengguna melakukan tindakan itu.

Berikut adalah tabel yang menjelaskan acara dan deskripsi -

S.No. Deskripsi acara
1

INITIALIZATON

Dipicu sebelum menampilkan layar pemilihan.

2

AT SELECTION-SCREEN

Dipicu setelah memproses masukan pengguna di layar pemilihan. Acara ini memverifikasi input pengguna sebelum eksekusi program. Setelah memproses input pengguna, layar pemilihan tetap dalam mode aktif.

3

START-OF-SELECTION

Dipicu hanya setelah pemrosesan layar pemilihan selesai; yaitu, saat pengguna mengklik ikon Jalankan di layar pemilihan.

4

END-OF-SELECTION

Dipicu setelah pernyataan terakhir di acara START-OF-SELECTON dijalankan.

5

TOP-OF-PAGE

Dipicu oleh pernyataan WRITE pertama untuk menampilkan data pada halaman baru.

6

END-OF-PAGE

Dipicu untuk menampilkan teks di akhir halaman dalam laporan. Perhatikan, bahwa acara ini adalah acara terakhir saat membuat laporan, dan harus digabungkan dengan klausa LINE-COUNT dari pernyataan REPORT.

Contoh

Mari buat laporan klasik. Kami akan menampilkan informasi yang disimpan dalam database standar MARA (berisi data material umum) dengan menggunakan urutan pernyataan di editor ABAP.

REPORT ZREPORT2 
LINE-SIZE 75 
LINE-COUNT 30(3) 
NO STANDARD PAGE HEADING. 
Tables: MARA. 
TYPES: Begin of itab, 

MATNR TYPE MARA-MATNR, 
MBRSH TYPE MARA-MBRSH, 
MEINS TYPE MARA-MEINS, 
MTART TYPE MARA-MTART, 

End of itab. 

DATA: wa_ma TYPE itab,
      it_ma TYPE STANDARD TABLE OF itab.
		
SELECT-OPTIONS: MATS FOR MARA-MATNR OBLIGATORY. 
INITIALIZATION. 
MATS-LOW = '1'. 
MATS-HIGH = '500'. 

APPEND MATS. 
AT SELECTION-SCREEN. .
IF MATS-LOW = ' '. 
MESSAGE I000(ZKMESSAGE). 
ELSEIF MATS-HIGH = ' '. 
MESSAGE I001(ZKMESSAGE). 
ENDIF. 

TOP-OF-PAGE. 
WRITE:/ 'CLASSICAL REPORT CONTAINING GENERAL MATERIAL DATA  
FROM THE TABLE MARA' COLOR 7. 
ULINE. 
WRITE:/ 'MATERIAL' COLOR 1, 

24 'INDUSTRY' COLOR 2, 
38 'UNITS' COLOR 3, 
53 'MATERIAL TYPE' COLOR 4. 
ULINE. 
END-OF-PAGE. 

START-OF-SELECTION. 
SELECT MATNR MBRSH MEINS MTART FROM MARA  
INTO TABLE it_ma WHERE MATNR IN MATS. 
LOOP AT it_ma into wa_ma. 
WRITE:/  wa_ma-MATNR, 

25 wa_ma-MBRSH, 
40 wa_ma-MEINS, 
55 wa_ma-MTART. 
ENDLOOP. 
END-OF-SELECTION. 

ULINE. 
WRITE:/ 'CLASSICAL REPORT HAS BEEN CREATED' COLOR 7.
ULINE. 
SKIP.

Kode di atas menghasilkan output berikut yang berisi data material umum dari tabel standar MARA -

Pemrograman dialog berkaitan dengan pengembangan beberapa objek. Semua objek ini dihubungkan secara hierarkis ke program utama dan dijalankan secara berurutan. Pengembangan program dialog memanfaatkan alat-alat di meja kerja ABAP. Ini adalah alat yang sama yang digunakan dalam pengembangan aplikasi SAP standar.

Berikut adalah komponen utama dari program dialog -

  • Screens
  • Kumpulan modul
  • Subroutines
  • Menus
  • Transactions

Toolset

Program dialog harus dikembangkan oleh browser objek (transaksi: SE80) sehingga semua objek menjadi terhubung ke program utama tanpa harus menunjuk setiap objek secara eksplisit. Teknik navigasi tingkat lanjut meningkatkan proses perpindahan dari satu objek ke objek lainnya.

Layar terdiri dari atribut layar, tata letak layar, bidang, dan logika aliran. Kumpulan modul terdiri dari sintaks termodulasi yang ditempatkan di dalam program include dari dialog program. Modul-modul ini dapat dipanggil oleh logika aliran, yang diproses oleh pemroses dialog.

Membuat Program Dialog Baru

Step 1 - Dalam transaksi SE80, pilih 'Program' dari tarik-turun dan masukkan nama Z untuk program SAP kustom Anda sebagai 'ZSCREENEX'.

Step 2 - Tekan Enter, pilih 'With TOP INCL' dan klik tombol 'Yes'.

Step 3 - Masukkan nama untuk top Anda termasuk sebagai 'ZSCRTOP' dan klik tanda centang hijau.

Step 4 - Di dalam layar atribut, cukup masukkan judul dan klik tombol simpan.

Menambahkan Layar ke Program Dialog

Step 1 - Untuk menambahkan layar ke program, klik kanan pada nama program dan pilih opsi Buat → Layar.

Step 2 - Masukkan nomor layar sebagai '0211' dan klik tanda centang hijau.

Step 3 - Di layar berikutnya, masukkan judul pendek, setel ke tipe layar normal dan klik tombol simpan di bilah alat aplikasi atas.

Tata Letak Layar dan Menambahkan Teks 'Hello World'

Step 1 - Klik tombol tata letak dalam bilah alat aplikasi dan jendela Screen Painter muncul.

Step 2 - Tambahkan Bidang Teks dan masukkan beberapa teks seperti "Halo Dunia".

Step 3 - Simpan dan aktifkan layar.

Membuat Transaksi

Step 1 - Untuk membuat kode transaksi untuk program Anda, cukup klik kanan pada nama program dan pilih opsi Buat → Transaksi dan masukkan kode transaksi sebagai 'ZTRANEX'.

Step 2 - Masukkan teks transaksi, program dan layar yang baru saja Anda buat (ZSCREENEX & 0211), dan centang kotak 'SAPGUI untuk Windows' di bagian 'Dukungan GUI'.

Menjalankan Program

Simpan dan aktifkan semuanya. Anda dapat menjalankan program. Saat program dijalankan, teks yang Anda masukkan ditampilkan di layar seperti yang ditunjukkan pada tangkapan layar berikut.

Alat SAP Smart Forms dapat digunakan untuk mencetak dan mengirim dokumen. Alat ini berguna dalam mengembangkan formulir, file PDF, email, dan dokumen untuk Internet. Alat tersebut menyediakan antarmuka untuk membangun dan memelihara tata letak dan logika formulir. SAP juga memberikan pilihan formulir untuk proses bisnis seperti yang digunakan dalam Customer Relationship Management (CRM), Sales and Distribution (SD), Financial Accounting (FI) dan Human Resources (HR).

Alat ini memungkinkan Anda untuk mengubah formulir dengan menggunakan alat grafis sederhana daripada menggunakan alat pemrograman apa pun. Ini berarti bahwa pengguna yang tidak memiliki pengetahuan pemrograman dapat mengonfigurasi formulir ini dengan data untuk proses bisnis dengan mudah.

Dalam Formulir Cerdas, data diambil dari tabel statis dan dinamis. Judul tabel dan subtotal ditentukan oleh peristiwa yang dipicu dan datanya kemudian diurutkan sebelum keluaran akhir. Formulir Cerdas memungkinkan Anda menggabungkan grafik yang dapat ditampilkan sebagai bagian dari formulir atau sebagai latar belakang. Anda juga dapat menyembunyikan grafik latar belakang jika diperlukan saat mengambil cetakan formulir.

Beberapa contoh Formulir Cerdas standar yang tersedia di sistem SAP adalah sebagai berikut -

  • SF_EXAMPLE_01 mewakili faktur dengan keluaran tabel untuk pemesanan penerbangan bagi pelanggan.

  • SF_EXAMPLE_02 mewakili faktur yang mirip dengan SF_EXAMPLE_01, tetapi dengan subtotal.

  • SF_EXAMPLE_03 menetapkan faktur yang mirip dengan SF_EXAMPLE_02, tetapi faktur di mana beberapa pelanggan dapat dipilih dalam program aplikasi.

Membuat Formulir

Mari buat formulir dengan menggunakan alat SAP Smart Forms. Anda juga akan belajar cara menambahkan node di Smart Form dan menguji formulir dalam tutorial ini. Di sini kita mulai dengan membuat salinan formulir SF_EXAMPLE_01. Formulir SF_EXAMPLE_01 adalah Formulir Cerdas standar yang tersedia di sistem SAP.

Step 1- Smart Form Builder adalah antarmuka utama yang digunakan untuk membuat Smart Form. Ini tersedia di layar awal SAP Smart Forms. Kita perlu mengetikkan kode transaksi 'SMARTFORMS' di bidang Command untuk membuka layar awal SAP Smart Forms. Di layar ini, masukkan nama formulir, SF_EXAMPLE_01, di bidang Formulir.

Step 2 - Pilih Smart Forms → Copy atau klik ikon Copy untuk membuka kotak dialog Copy Form atau Text.

Step 3- Di bidang Objek Target, masukkan nama untuk formulir baru. Nama harus dimulai dengan huruf Y atau Z. Dalam hal ini, nama formulirnya adalah 'ZSMM1'.

Step 4 - Klik ikon Lanjutkan atau tekan tombol ENTER di kotak dialog Salin Formulir atau Teks sehingga formulir ZSMM1 dibuat sebagai salinan formulir yang telah ditentukan SF_EXAMPLE_01.

Step 5- Klik ikon Simpan. Nama formulir ditampilkan di bidang Formulir di layar awal Formulir Cerdas SAP.

Step 6- Klik tombol Buat di layar awal SAP Smart Forms. Formulir ZSMM1 muncul di Form Builder.

Step 7- Halaman draf pertama dibuat dengan jendela MAIN. Semua komponen formulir baru didasarkan pada formulir standar SF_EXAMPLE_01. Anda cukup mengklik node di menu Navigasi untuk melihat isinya.

Membuat Node Teks di Formulir

Step 1 - Buka formulir dalam mode perubahan layar SAP Form Builder dan klik kanan opsi Jendela Utama di simpul Halaman Pertama dan pilih Buat → Teks dari menu konteks.

Step 2- Ubah teks di bidang Teks menjadi 'My_Text' dan teks di bidang Arti menjadi 'Text_Demo'. Masukkan teks 'Hello TutorialsPoint .....' di kotak pengeditan teks di bingkai tengah Form Builder seperti yang ditunjukkan pada snapshot berikut -

Step 3 - Klik tombol Simpan untuk menyimpan node ..

Step 4- Aktifkan dan uji node dengan mengklik masing-masing ikon Activate dan Test. Layar awal dari Function Builder muncul.

Step 5- Aktifkan dan uji modul fungsi dengan mengklik ikon Activate and Execute. Parameter modul fungsi ditampilkan di layar awal Pembangun Fungsi.

Step 6- Jalankan modul fungsi dengan mengklik ikon Execute. Kotak dialog Print muncul.

Step 7 - Tentukan perangkat keluaran sebagai 'LP01' dan klik tombol Pratinjau cetak.

Langkah-langkah di atas akan menghasilkan keluaran sebagai berikut -

Alat SAPscript dari sistem SAP dapat digunakan untuk membangun dan mengelola formulir bisnis seperti faktur dan pesanan pembelian. Alat SAPscript menyediakan banyak templat yang menyederhanakan desain formulir bisnis.

Sistem SAP dilengkapi dengan formulir SAPscript standar yang dikirimkan dengan klien standar SAP (umumnya sebagai klien 000). Berikut adalah beberapa contoh formulir SAPscript standar yang dikirimkan dengan klien 000 -

S.No. Nama & Deskripsi Formulir
1

RVORDER01

Formulir Konfirmasi Pesanan Penjualan

2

RVDELNOTE

Daftar Kemasan

3

RVINVOICE01

Faktur

4

MEDRUCK

Pesanan Pembelian

5

F110_PRENUM_CHCK

Cek yang telah diberi nomor sebelumnya

Struktur formulir SAPscript terdiri dari 2 komponen utama -

Content - Ini bisa berupa teks (data bisnis) atau grafik (logo perusahaan).

Layout - Ini ditentukan oleh sekumpulan jendela tempat konten formulir muncul.

SAPscript - Alat Pelukis Formulir

Alat Pelukis Formulir menyediakan tata letak grafis dari formulir SAPscript dan berbagai fungsi untuk memanipulasi formulir. Dalam contoh berikut, kita akan membuat formulir faktur setelah menyalin struktur tata letaknya dari formulir SAPscript standar RVINVOICE01, dan menampilkan tata letaknya dengan mengakses alat Pelukis Formulir.

Step 1- Buka Form Painter. Anda dapat meminta layar baik dengan menavigasi menu SAP atau dengan menggunakan kode transaksi SE71.

Step 2- Di Pelukis Formulir, layar permintaan, masukkan nama dan bahasa untuk formulir SAPscript di kolom Formulir dan Bahasa. Mari masukkan 'RVINVOICE01' dan 'EN' di bidang ini.

Step 3 - Pilih tombol radio Tata Letak Halaman di kotak kelompok Sub objek.

Step 4- Pilih Utilities → Copy from Client untuk membuat salinan formulir RVINVOICE01. Layar 'Salin Formulir Antar Klien' akan muncul.

Step 5- Di layar 'Salin Formulir Antar Klien', masukkan nama asli formulir, 'RVINVOICE01', di bidang Nama Formulir, nomor klien sumber '000' di bidang Klien Sumber, dan nama target formulir sebagai 'ZINV_01' di bidang Formulir Target. Pastikan pengaturan lain tetap tidak berubah.

Step 6- Selanjutnya, klik ikon Jalankan di layar 'Salin Formulir Antara Klien'. Kotak dialog 'Buat Entri Direktori Objek' muncul. Klik ikon Simpan.

Formulir ZINV_01 disalin dari formulir RVINVOICE01 dan ditampilkan di layar 'Salin Formulir Antar Klien' seperti yang digambarkan dalam snapshot berikut -

Step 7 - Klik ikon kembali dua kali dan arahkan kembali ke layar Form Painter: Request, yang berisi nama formulir yang disalin ZINV_01.

Step 8 - Setelah mengklik tombol Tampilan, jendela 'Formulir ZINV_01: Tata Letak Halaman PERTAMA' dan layar 'Formulir: Ubah Tata Letak Halaman: ZINV_01' muncul seperti yang ditunjukkan pada tangkapan layar berikut.

Step 9- Jendela 'Formulir ZINV_01: Tata Letak Halaman PERTAMA' menunjukkan tata letak awal formulir. Tata letak formulir berisi lima jendela: HEADER, ADDRESS, INFO, INFO1, dan MAIN. Deskripsi jendela ini dapat diakses di PC Editor.

Misalnya, dengan hanya memilih jendela MAIN dan mengklik ikon Teks di layar 'Formulir: Ubah Tata Letak Halaman: ZINV_01', Anda dapat melihat semua nilai margin seperti yang ditunjukkan pada tangkapan layar berikut -

Keluarnya pelanggan dapat dianggap sebagai pengait ke program standar SAP. Kami tidak memerlukan kunci akses untuk menulis kode dan tidak perlu mengubah program standar SAP. Pintu keluar ini tidak memiliki fungsi apa pun dan kosong. Logika bisnis dapat ditambahkan untuk memenuhi berbagai kebutuhan klien. Namun, Pintu Keluar Pelanggan tidak tersedia untuk semua program.

Keluarnya Pelanggan untuk Transaksi Standar

Berikut adalah langkah-langkah untuk menemukan pintu keluar pelanggan sejauh menyangkut transaksi standar. Mari kita identifikasi pintu keluar pelanggan yang tersedia di MM01 (Pembuatan Master Material).

Step 1 - Masuk ke transaksi MM01 dan identifikasi nama program MM01 dengan masuk ke Menu bar → Sistem → Status seperti yang ditunjukkan pada gambar di atas.

Step 2- Dapatkan nama program dari layar popup. Nama programnya adalah 'SAPLMGMM'.

Step 3 - Masuk ke transaksi SE38, masukkan nama program dan klik Display.

Step 4 - Arahkan ke Go to → Properties dan cari tahu paket dari nama program ini.

Nama paketnya adalah 'MGA'.

Step 5- Buka kode transaksi SMOD yang biasanya digunakan untuk mengidentifikasi pintu keluar pelanggan. Arahkan ke Utilities → Temukan (atau) Anda dapat langsung menekan Ctrl + F pada kode transaksi SMOD.

Step 6 - Setelah masuk ke layar 'Find Exits', masukkan nama paket yang kita dapatkan sebelumnya dan tekan tombol F8 (Execute).

Langkah-langkah di atas menghasilkan keluaran berikut dengan daftar pintu keluar yang tersedia di Penciptaan Master Material.

Keluar pengguna digunakan dalam ekstraksi jika ekstraktor SAP standar tidak menyediakan data yang diharapkan atau fungsionalitas yang diperlukan, misalnya dalam otorisasi atau pemeriksaan waktu. Keluar pengguna biasanya digunakan dalam modul Penjualan dan Distribusi (SD). Ada banyak jalan keluar yang disediakan oleh SAP di bidang penjualan, transportasi, pengiriman, dan penagihan. Keluarnya pengguna dirancang untuk membuat beberapa perubahan saat SAP standar tidak mampu memenuhi semua persyaratan.

Untuk dapat mengakses pintu keluar yang tersedia di setiap area penjualan, buka IMG menggunakan jalur ini: IMG → Penjualan dan Distribusi → Modifikasi Sistem → Keluar Pengguna. Dokumentasi untuk setiap pintu keluar di area SD dijelaskan secara menyeluruh.

Misalnya, jika Anda ingin menemukan pengguna keluar dalam Pemrosesan Dokumen Penjualan (kontrak, kutipan, atau pesanan penjualan), ikuti jalur yang disebutkan di atas dan lanjutkan untuk memperluas node Keluar Pengguna dalam Penjualan → Keluar Pengguna. Klik pada ikon dokumentasi untuk melihat semua pengguna keluar yang tersedia di Pemrosesan Dokumen Penjualan.

S.No. Keluar & Deskripsi Pengguna
1

USEREXIT_FIELD_MODIFICATION

Digunakan untuk mengubah atribut layar.

2

USEREXIT_SAVE_DOCUMENT

Membantu dalam melakukan operasi ketika pengguna menekan Save.

3

USEREXIT_SAVE_DOCUMENT_PREPARE

Sangat berguna untuk memeriksa bidang masukan, memasukkan nilai apa pun di bidang atau menampilkan sembulan kepada pengguna dan untuk mengonfirmasi dokumen.

4

USEREXIT_MOVE_FIELD_TO_VBAK

Digunakan saat perubahan header pengguna dipindahkan ke area kerja header.

5

USEREXIT_MOVE_FIELD_TO_VBAP

Digunakan saat perubahan item pengguna dipindahkan ke area kerja item SAP.

Keluar Pengguna memiliki tujuan yang sama dengan Keluarnya Pelanggan tetapi hanya tersedia untuk modul SD. Keluar diimplementasikan sebagai panggilan ke Modul Fungsi. Keluar dari Pengguna adalah modifikasi pada program standar SAP.

Contoh

REPORT ZUSEREXIT1. 
TABLES:   
   TSTC, TSTCT,
   TADIR, TRDIR, TFDIR, ENLFDIR,
   MODSAPT, MODACT. 
	
DATA:   
   JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE,
   field1(30),
   v_devclass LIKE TADIR-devclass. 
	
PARAMETERS:
   P_TCODE LIKE TSTC-tcode OBLIGATORY. 
	
SELECT SINGLE *
   FROM TSTC
   WHERE tcode EQ P_TCODE. 
	
IF SY-SUBRC EQ 0.
   SELECT SINGLE *
   FROM TADIR
	
   WHERE pgmid = 'R3TR' AND 
         object = 'PROG' AND
         obj_name = TSTC-pgmna.
		
   MOVE TADIR-devclass TO v_devclass.
	
   IF SY-SUBRC NE 0.
   SELECT SINGLE * 
      FROM TRDIR
      WHERE name = TSTC-pgmna.
		
   IF TRDIR-subc EQ 'F'.
      SELECT SINGLE *
         FROM TFDIR
         WHERE pname = TSTC-pgmna.
			
      SELECT SINGLE *
         FROM ENLFDIR 
         WHERE funcname = TFDIR-funcname.
			
      SELECT SINGLE * 
         FROM TADIR
         WHERE pgmid = 'R3TR' AND
               object = 'FUGR' AND 
               obj_name EQ ENLFDIR-area.
         MOVE TADIR-devclass TO v_devclass.
      ENDIF.
   ENDIF.
	
   SELECT *
      FROM TADIR
      INTO TABLE JTAB
		
      WHERE pgmid = 'R3TR' AND
            object = 'SMOD' AND
            devclass = v_devclass.
			
   SELECT SINGLE *
      FROM TSTCT
      WHERE sprsl EQ SY-LANGU AND
            tcode EQ P_TCODE.
			
   FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
   WRITE:/(19) 'Transaction Code - ', 
      20(20) P_TCODE,
      45(50) TSTCT-ttext.
   SKIP.
	
   IF NOT JTAB[] IS INITIAL.
      WRITE:/(95) SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
		
      WRITE:/1 SY-VLINE, 
            2 'Exit Name',
            21 SY-VLINE , 
            22 'Description',
            95 SY-VLINE.
			
      WRITE:/(95) SY-ULINE.
      LOOP AT JTAB.
         SELECT SINGLE * FROM MODSAPT
         WHERE sprsl = SY-LANGU AND
               name = JTAB-obj_name.
				
         FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
         WRITE:/1 SY-VLINE,
               2 JTAB-obj_name HOTSPOT ON,
               21 SY-VLINE ,
               22 MODSAPT-modtext,
               95 SY-VLINE.
      ENDLOOP.
		
      WRITE:/(95) SY-ULINE.
      DESCRIBE TABLE JTAB.
      SKIP.
      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE:/ 'No of Exits:' , SY-TFILL.
		
   ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(95) 'User Exit doesn’t exist'.
   ENDIF. 
ELSE.

   FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
   WRITE:/(95) 'Transaction Code Does Not Exist'. 
ENDIF.
 
AT LINE-SELECTION.
   GET CURSOR FIELD field1.
   CHECK field1(4) EQ 'JTAB'.
   SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
   CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

Saat memproses, masukkan kode transaksi 'ME01' dan tekan tombol F8 (Execute). Kode di atas menghasilkan keluaran sebagai berikut -

Dalam beberapa kasus, fungsi khusus perlu ditentukan sebelumnya dalam aplikasi perangkat lunak untuk meningkatkan fungsionalitas berbagai aplikasi. Ada banyak add-in Microsoft Excel untuk meningkatkan fungsionalitas MS Excel. Demikian pula, SAP memfasilitasi beberapa fungsi yang telah ditentukan dengan menyediakanBusiness Add-Ins dikenal sebagai BADI.

BADI adalah teknik peningkatan yang memfasilitasi programmer SAP, pengguna, atau industri tertentu untuk menambahkan beberapa kode tambahan ke program yang ada dalam sistem SAP. Kami dapat menggunakan logika standar atau disesuaikan untuk meningkatkan sistem SAP. BADI harus didefinisikan terlebih dahulu dan kemudian diimplementasikan untuk meningkatkan aplikasi SAP. Saat mendefinisikan BADI, sebuah antarmuka dibuat. BADI diimplementasikan oleh antarmuka ini, yang kemudian diimplementasikan oleh satu atau lebih kelas adaptor.

Teknik BADI berbeda dari teknik peningkatan lainnya dalam dua cara -

  • Teknik penyempurnaan hanya dapat diterapkan sekali.
  • Teknik peningkatan ini dapat digunakan oleh banyak pelanggan secara bersamaan.

Anda juga dapat membuat BADI filter, yang berarti BADI ditentukan berdasarkan data yang difilter yang tidak mungkin dilakukan dengan teknik peningkatan. Konsep BADI telah didefinisikan ulang di SAP Release 7.0 dengan tujuan sebagai berikut -

  • Meningkatkan aplikasi standar dalam sistem SAP dengan menambahkan dua elemen baru dalam bahasa ABAP, yaitu 'GET BADI' dan 'CALL BADI'.

  • Menawarkan lebih banyak fitur fleksibilitas seperti konteks dan filter untuk peningkatan aplikasi standar dalam sistem SAP.

Ketika BADI dibuat, itu berisi antarmuka dan komponen tambahan lainnya, seperti kode fungsi untuk peningkatan menu dan peningkatan layar. Kreasi BADI memungkinkan pelanggan untuk memasukkan perangkat tambahan mereka sendiri dalam aplikasi SAP standar. Peningkatan, antarmuka, dan kelas yang dihasilkan terletak di namespace pengembangan aplikasi yang sesuai.

Oleh karena itu, BADI dapat dianggap sebagai teknik peningkatan yang menggunakan objek ABAP untuk membuat 'poin yang telah ditentukan' dalam komponen SAP. Poin yang telah ditentukan ini kemudian diimplementasikan oleh solusi industri individu, varian negara, mitra, dan pelanggan untuk menyesuaikan dengan kebutuhan spesifik mereka. SAP sebenarnya memperkenalkan teknik peningkatan BADI dengan Rilis 4.6A, dan teknik tersebut telah diimplementasikan kembali di Rilis 7.0.

Web Dynpro (WD) untuk ABAP adalah teknologi antarmuka pengguna standar SAP yang dikembangkan oleh SAP AG. Ini dapat digunakan dalam pengembangan aplikasi berbasis web di lingkungan SAP ABAP yang menggunakan alat dan konsep pengembangan SAP. Ini menyediakan antarmuka pengguna web front-end untuk terhubung langsung ke sistem SAP R / 3 backend untuk mengakses data dan fungsi untuk pelaporan.

Web Dynpro untuk ABAP terdiri dari lingkungan run-time dan lingkungan pengembangan grafis dengan alat pengembangan khusus yang terintegrasi dalam ABAP Workbench (transaksi: SE80).

Arsitektur Web Dynpro

Ilustrasi berikut menunjukkan keseluruhan arsitektur Web Dynpro -

Berikut adalah beberapa hal yang perlu diingat tentang Web Dynpro -

  • Web Dynpro adalah model pemrograman SAP NetWeaver untuk antarmuka pengguna.

  • Semua aplikasi Web Dynpro disusun sesuai model pemrograman Model View Controller (MVC).

  • Model ini mendefinisikan antarmuka ke sistem utama dan aplikasi Web Dynpro dapat memiliki akses ke data sistem.

  • Tampilan bertanggung jawab untuk menampilkan data di browser web.

  • Pengontrol berada di antara tampilan dan model. Pengontrol memformat data model untuk ditampilkan dalam tampilan. Ini memproses entri pengguna yang dibuat oleh pengguna dan mengembalikannya ke model.

Keuntungan

Web Dynpro menawarkan keuntungan berikut untuk pengembang aplikasi -

  • Penggunaan alat grafis secara signifikan mengurangi upaya implementasi.

  • Penggunaan kembali dan perawatan yang lebih baik dengan menggunakan komponen.

  • Tata letak dan navigasi mudah diubah menggunakan alat Web Dynpro.

  • Aksesibilitas antarmuka pengguna didukung.

  • Integrasi penuh dalam lingkungan pengembangan ABAP.

Komponen dan Jendela Web Dynpro

Komponen tersebut adalah unit global dari proyek aplikasi Web Dynpro. Membuat komponen Web Dynpro adalah langkah awal dalam mengembangkan aplikasi Web Dynpro baru. Setelah komponen dibuat, ia bertindak sebagai node dalam daftar objek Web Dynpro. Anda dapat membuat sejumlah tampilan komponen dalam sebuah komponen dan mengumpulkannya di sejumlah jendela Web Dynpro yang sesuai.

Setidaknya satu jendela Web Dynpro terdapat di setiap komponen Web Dynpro. Jendela Web Dynpro menyematkan semua tampilan yang ditampilkan dalam aplikasi web front-end. Jendela diproses di editor jendela dari Meja Kerja ABAP.

Note

  • Tampilan komponen menampilkan semua rincian administratif untuk aplikasi termasuk deskripsi, nama orang yang membuatnya, tanggal pembuatan, dan paket pengembangan yang ditetapkan.

  • Aplikasi Web Dynpro adalah objek independen dalam daftar objek dari ABAP Workbench. Interaksi antara jendela dan aplikasi dibuat oleh tampilan antarmuka dari jendela tertentu.