Upload
risa
View
139
Download
20
Embed Size (px)
DESCRIPTION
ABAP For Beginer
Citation preview
ABAP HANDOUT 2010
1
-Kiki Siswanto-
ABAP HANDOUT 2010
2
-Kiki Siswanto-
Daftar Isi ABAP Handout....................................................................................................................................8
Day1 ..................................................................................................................................................8
SAP Overview .................................................................................................................................8
Fungsi SAP ......................................................................................................................................9
Keuntungan SAP .............................................................................................................................9
Keilmuan SAP .................................................................................................................................9
Modul – Modul SAP ......................................................................................................................10
Sistem SAP ...................................................................................................................................13
Sub Client di SAP ...........................................................................................................................14
Desain arsitektur SAP ....................................................................................................................15
Gambaran Umum Sistem SAP ........................................................................................................15
Client SAP.....................................................................................................................................17
Langkah-langkah impelementasi SAP .............................................................................................17
ABAP Overview .............................................................................................................................18
Comment Field .............................................................................................................................18
Manage User di ABAP ...................................................................................................................19
Membuat Program di ABAP ...........................................................................................................20
Membuat Package ........................................................................................................................22
ABAP Editor ..................................................................................................................................24
Comment pada ABAP ....................................................................................................................25
Tipe Data ABAP.............................................................................................................................25
Blok Coding ..................................................................................................................................27
Menangani Exception....................................................................................................................27
Internal Tabel ...............................................................................................................................28
Debug ..........................................................................................................................................28
Day2 ................................................................................................................................................29
ABAP DICTIONARY ........................................................................................................................29
Domain.....................................................................................................................................29
Elemen Data .............................................................................................................................32
Tabel ........................................................................................................................................35
ABAP HANDOUT 2010
3
-Kiki Siswanto-
Structure ..................................................................................................................................39
View .........................................................................................................................................43
Index............................................................................................................................................46
Parameters...................................................................................................................................48
Select-Options ..............................................................................................................................48
Syntax Sql.....................................................................................................................................49
Select .......................................................................................................................................51
Insert ........................................................................................................................................51
Update .....................................................................................................................................51
Modify ......................................................................................................................................52
Delete.......................................................................................................................................52
Sub-Routine..................................................................................................................................53
Day 3 ...............................................................................................................................................54
Subroutine .......................................................................................................................................54
Jenis – Jenis Subroutine.................................................................................................................54
ALV ..................................................................................................................................................55
Pembuatan ALV_LIST ....................................................................................................................55
FieldCat ALV .................................................................................................................................64
Day 4 ...............................................................................................................................................66
Tabel Sistem di SAP...........................................................................................................................66
Membuat Structure Dengan ABAP Dictionary .....................................................................................66
Select options -> range (Structure) ....................................................................................................71
Function Module ..............................................................................................................................73
Pembuatan Function Module ........................................................................................................73
Contoh – Contoh Program.................................................................................................................78
Program Subroutine......................................................................................................................78
Program memanggil Subroutine dari luar program .........................................................................80
Program Mengganti Define dengan Subroutine ..............................................................................82
Tips Day 3 Dan 4 ...............................................................................................................................85
Cek Tabel .....................................................................................................................................85
LOOPING. .....................................................................................................................................86
ABAP HANDOUT 2010
4
-Kiki Siswanto-
Read Table ...................................................................................................................................87
call transaction .............................................................................................................................88
Lain - Lain .....................................................................................................................................88
DAY 5 ..............................................................................................................................................90
ALV ..................................................................................................................................................90
ALV HIERARCHY ............................................................................................................................90
Report Sap dan Report Html..............................................................................................................91
Report Html..................................................................................................................................92
Dialog programming .........................................................................................................................98
Siklus Hidup Screen Painter ...........................................................................................................99
Event Handler ...............................................................................................................................99
Langkah – Langkah Untuk membuat Dialog Programming Sederhana ............................................ 100
Langkah – Langkah Untuk membuat Dialog Programming Dengan Screen Painter .......................... 105
Langkah – Langkah Untuk membuat Dialog Programming Untuk Menampilkan Tabel Dengan Screen
Painter. ...................................................................................................................................... 107
Langkah – Langkah Untuk menghapus field tabel pada dialog programming. .................................. 111
Langkah – Langkah Untuk menambah field tabel pada dialog programming. .................................. 113
GUI Status ...................................................................................................................................... 117
Menu – Menu pada GUI Status .................................................................................................... 117
Membuat Button Pada Gui Status ................................................................................................ 118
Tambahan ...................................................................................................................................... 121
Deletion Indicator ....................................................................................................................... 121
Tabel Customizing....................................................................................................................... 121
Transaction Code ........................................................................................................................ 121
Fungsi untuk Print ....................................................................................................................... 123
Fungsi Untuk Save....................................................................................................................... 123
Write – to ................................................................................................................................... 123
Day 6 ............................................................................................................................................. 124
Latihan – Latihan ............................................................................................................................ 124
Soal 1 ......................................................................................................................................... 124
Langkah – Langkah Untuk Membuat Program ........................................................................... 124
ABAP HANDOUT 2010
5
-Kiki Siswanto-
Soal 2 ......................................................................................................................................... 131
Langkah – Langkah Untuk Membuat Program ........................................................................... 132
Soal 3 ......................................................................................................................................... 138
Langkah – Langkah Untuk Membuat Program ........................................................................... 140
DAY 7 ............................................................................................................................................. 145
LUW – Logical Unit Of Work. .................................................................................................... 145
Open Sql dan Native SQL ............................................................................................................. 145
DBCO ......................................................................................................................................... 145
Insert ......................................................................................................................................... 145
Single Insert. .......................................................................................................................... 146
Multiple Insert ........................................................................................................................ 146
Gambaran kerangka kerja Insert .................................................................................................. 147
Update ....................................................................................................................................... 147
Delete ........................................................................................................................................ 149
Lock ........................................................................................................................................... 150
Day 8 ............................................................................................................................................. 154
SAP Script ................................................................................................................................... 154
Cara kerja sap script .................................................................................................................... 154
Version....................................................................................................................................... 154
Komponen dari sap script ............................................................................................................ 155
Flow sap script............................................................................................................................ 155
Standard Text (so10) ................................................................................................................... 155
Style........................................................................................................................................... 159
Program untuk memanggil layout ................................................................................................ 160
Contoh tampilan Sap Script ......................................................................................................... 162
Tips ............................................................................................................................................ 162
Day 9 ............................................................................................................................................. 164
Smartforms ................................................................................................................................ 164
Smartforms dan Sap Script ....................................................................................................... 164
Gambaran kerja sap script ....................................................................................................... 166
Download Form....................................................................................................................... 166
ABAP HANDOUT 2010
6
-Kiki Siswanto-
Perbedaan sap script dan smarformst: ..................................................................................... 170
Smartforms ................................................................................................................................ 170
Upload image.......................................................................................................................... 174
Smartstyles................................................................................................................................. 178
Paragraph ............................................................................................................................... 179
Character ................................................................................................................................ 180
Page format ............................................................................................................................ 183
Day 10........................................................................................................................................ 190
- Personalization.................................................................................................................... 190
- Modification : se38 / se80 .................................................................................................... 190
a. Non-registered modification............................................................................................. 190
b. Assisted modification ....................................................................................................... 190
c. User exist ........................................................................................................................ 190
- Enchancement .................................................................................................................... 190
o Abap dictionary ............................................................................................................... 190
o Customer exist................................................................................................................. 192
o Business transaction events.............................................................................................. 193
o Business add-ins .............................................................................................................. 193
Customer exits............................................................................................................................ 193
Kasus :........................................................................................................................................ 195
Solusi : ....................................................................................................................................... 195
Contoh BTE (Business Transaction Events) .................................................................................. 204
BADI Untuk Transaksi MIGO ........................................................................................................ 208
Day 11 ........................................................................................................................................... 213
Logical database. ........................................................................................................................ 213
Select Options SLDB................................................................................................................. 218
Selection Texts ........................................................................................................................ 220
Dynamic Selections.................................................................................................................. 221
RFC -> remote function call.......................................................................................................... 224
BAPI ........................................................................................................................................... 226
Tips ............................................................................................................................................ 226
ABAP HANDOUT 2010
7
-Kiki Siswanto-
Day 12 ........................................................................................................................................... 229
Search Help ................................................................................................................................ 229
Analysis tools.............................................................................................................................. 235
Background tes run. .................................................................................................................... 235
Open log background (dari sm36 / sm37) ..................................................................................... 236
Code Inspector ........................................................................................................................... 236
Extended Check .......................................................................................................................... 238
RUNTIME ANALYSIS .................................................................................................................... 240
Sql trace ..................................................................................................................................... 244
Day 13 ........................................................................................................................................... 247
Field symbols .............................................................................................................................. 247
BDC (Batch Data Control) ............................................................................................................ 250
Latihan BDC ................................................................................................................................ 251
Transport To Production ................................................................................................................. 262
Langkah – Langkah Transport ...................................................................................................... 262
ABAP HANDOUT 2010
8
-Kiki Siswanto-
ABAP Handout
Day1
SAP Overview
SAP singkatan dari System Application and Product in data processing.
SAP (System Application and Product in data processing ) adalah suatu software yang
dikembangkan untuk mendukung suatu organisasi dalam menjalankan kegiatan operasionalnya
secara lebih efisien dan efektif. SAP merupakan software Enterprise Resources Planning (ERP),
yaitu suatu tools IT dan manajemen untuk membantu perusahaan merencanakan dan melakukan
berbagai aktivitas sehari-hari.
SAP terdiri dari sejumlah modul aplikasi yang mempunyai kemampuan mendukung semua
transaksi yang perlu dilakukan suatu perusahaan dan tiap aplikasi bekerja secara berkaitan satu
dengan yang lainnya. Semua modul aplikasi di SAP dapat bekerja secara terintegrasi/terhubung
yang satu dengan lainnya.
SAP yang dikenal pada saat ini adalah sistem R/3-nya yang sudah teruji oleh perusahaan-
perusahaan dunia dalam menjalankan bisnisnya
Sebelum sampai ke generasi R/3, SAP sudah melewati tahap R/1 dan R/2. Selain sistem R/3
yang terkenal banyak juga solusi-solusi bisnis lainnya antara lain SAP BI (Business Intelligence)
yang digunakan untuk Data Warehousing, SEM (Strategic Enterprise Management), SCM
ABAP HANDOUT 2010
9
-Kiki Siswanto-
(Supply Chain Management), CRM dan masih banyak solusi-solusi bisnis lain yang ditawarkan
oleh SAP untuk berbagai jenis bidang usaha di dunia.
Enterprise Resource Planning (ERP) adalah sistem terintegrasi untuk
mengelola seluruh aktifitas perusahaan termasuk keuangan, produksi, HRD,
marketing, supply chain, logistics, dll.
Fungsi SAP
mendukung suatu organisasi dalam menjalankan kegiatan operasionalnya secara lebih efisien dan
efektif.
Keuntungan SAP Keuntungan perusahaan jika menggunakan SAP :
- Integrasi dan Real Time sistem antar modul
o Modul yang satu dengan yang lain saling berhubungan.
- Report yang cepat
o Pembuatan Report akan menjadi lebih cepat karena tidak perlu menunggu pengiriman
data dari modul lain.
- Mempercepat pengambilan keputusan
o Report dapat ditampilkan secara detail sehingga dapat mempermudah pengambil
keputusan
- Mencegah data yang ganda
o Data yang ada pada modul – modul yang bersangkutan sama
- Transparasi data
o Data dapat diatur hak akses nya tergantung dari user yang login (mandt). Tergantung
Otoritas perusahaan
- Kecepatan implementasi
o SAP sudah memiliki template – template sehingga implementasi nya lebih cepat
Keilmuan SAP Keilmuan di SAP dapat dibagi sebagai berikut :
Technical :
1. ABAPer : Programmer
ABAP HANDOUT 2010
10
-Kiki Siswanto-
ABAPer menangani enhancement system terhadap kebutuhan bisnis proses user.
Secara mudah adalah kebutuhan report. Tidak semua report yang dibutuhkan oleh
user bisa dipenuhi SAP, sehingga diperlukan program kecil dengan bahasa ABAP
(standar SAP) untuk membuatnya. Sebelum SAP diimplementasikan, di suatu
perusahaan bisa saja sudah terdapat system aplikasi dan ada kebutuhan untuk
menghubungkan (interface) kedua system ini. Interface ini juga memerlukan
kehandalan seorang ABAPer.
2. BASIS : Administrator
Basis menangani sizing server, instalasi, security, database management,
monitoring dan system performance. Bisa dibayangkan, pengetahuan apa yang
diperlukan dan mendukung. Pengetahuan teknis terhadap server, baik UNIX,
Windows, AS400 atau pun Linux akan sangat membantu.Apalagi ditambah
pendalaman database baik SQL Server, Oracle atau pun DB2. Seberapa besar bisnis
perusahaan yang akan dimasukkan dalam scope SAP Project, seberapa strict system
dan berapa durasi sistem akan on line menentukan Server, jumlah-kecepatan
processor, memory, kapasitas disk dan Operating System yang dipakai. Penentuan
kapasitas ini dinamai dengan SIZING. Bagi pemula, scope UNIX, AS400 server
atau Oracle dan DB2 sangat „mahal‟ dan langka. Namun dengan berbekal
pengetahuan SQL server dan Windows Server akan sangat berguna, karena banyak
juga perusahaan yang menggunakan Windows sebagai Server dan SQL Server
sebagai database. Kebanyakan perusahaan akan memakai Server kelas menengah,
baik secara harga mau pun performance seperti UNIX. AS400 dan DB2 400 sangat
kuat performancenya, namun harganya sangat mahal.
Modul – Modul SAP Modul-modul yang disediakan dalam SAP R/3
Financials
o Financial Accounting (FI) :
Mencakup standard accounting cash management (treasury), general
ledger dan konsolidasi untuk tujuan financial reporting.
ABAP HANDOUT 2010
11
-Kiki Siswanto-
o Controlling (CO)
Mencakup cost accounting, mulai dari cost center accounting, cost
element accounting, dan analisa profitabilitas
o Fixed Assets Management (AM)
Membantu pengelolaan atas keseluruhan fixed assets, meliputi proses
asset accounting tradisional dan technical assets management, sampai ke
investment controlling
o Investment Management (IM)
o Project System (PS)
Mengintegrasikan keseluruhan proses perencanaan project, pengerjaan dan
kontrol
o Enterprise Controlling (EC)
o Real Estate Management
Logistics
o Sales and Distribution (SD)
membantu meningkatkan efisiensi kegiatan operasional berkaitan dengan
proses pengelolaan customer order (proses sales, shipping dan billing)
o Materials Management (MM)
membantu menjalankan proses pembelian (procurement) dan pengelolaan
inventory
o Quality Management (QM)
membantu men-cek kualitas proses-proses di keseluruhan rantai logistik
o Plant Maintenance (PM)
suatu solusi untuk proses administrasi dan perbaikan sistem secara teknis
o Customer Service (CS)
o Production Planning and Control (PP)
membantu proses perencanaan dan kontrol daripada kegiatan produksi
(manufacturing) suatu perusahaan.
o SAP Retail
Human Resources
o Personnel Management (PA)
ABAP HANDOUT 2010
12
-Kiki Siswanto-
o Personnel Time Management (PT)
o Payroll (PY)
o Training and Event Management (PE)
Gambar Modul SAP R/3
ABAP HANDOUT 2010
13
-Kiki Siswanto-
Gambar Bisnis Proses
Sistem SAP
SAP Menggunakan Sistem Client – Server
Hardware-
oriented
view
ABAP HANDOUT 2010
14
-Kiki Siswanto-
Sub Client di SAP
Sub Client di SAP dapat dibagi sebagai berikut:
1. SAP GUI : Hanya Berjalan di OS Windows karena pertama kali dikembangkan di VB
yang menggunakan library OCX.
2. SAP GUI JAVA : GUI dibangun dengan Java (JRE) sehingga dapat berjalan di
Windows , Linux , dll
3. Sub Client Type Web : Sub GUI for HTML , GUI Web (dengan Interpreter yang
dimiliki SAP)
SAP akan dapat diakses 100% kompatibel dengan SAP GUI.
Software-
oriented
view
ABAP HANDOUT 2010
15
-Kiki Siswanto-
Desain arsitektur SAP
Collect data dilakukan di layer Database , Proses data dilakukan di Application dan Display data
dilakukan di layer Presentation. Layer Application dapat digambarkan seperti Web Server
sehingga bisa terdapat banyak Application Server (tidak hanya 1). Jadi SIstem ini bisa
digambarkan seperti Web yang dimana Database bisa dikatakan sebagai Database Web ,
Application bisa dikatakan sebagai Web Server (Apache , IIS , Tomcat , dll), dan Layer
Presentation bisa dikatakan sebagai Web Browser.
Gambaran Umum Sistem SAP System Landscape
ABAP HANDOUT 2010
16
-Kiki Siswanto-
Sistem 2 System landscape : Server Development dan QA tergabung dalam 1 mesin sehingga
apabila Server ini rusak maka terpaksa development harus dilakukan pada server production.
Oleh karena itu, Biasanya perusahaan besar akan menggunakan 3 System Landscape untuk
mencegah hal ini.
Keuntungan 3 system landscape : kalau database development rusak ada backup QA, kalau QA
rusak jg ada Production.
Transport : memindahkan file dari server development ke server QA dan dari server QA ke
server Production.
Transport dapat dilakukan dengan adanya Transport request.
Transport request digunakan untuk Mengatur proses transport (menggunakan nomor transport).
Jika ada File yang salah maka tidak bisa diedit di Server QA (kecuali jika server Development
rusak) melainkan di edit di server development . Lalu untuk mentransport kembali dilakukan
change request (Menggunakan nomor transport kembali).
ABAP HANDOUT 2010
17
-Kiki Siswanto-
Client SAP
Client mandt adalah field pada database untuk membedakan user yang menggukan SAP (dapat
digunakan untuk membatasi hak akses pada user yang login / client-spesifik).
Client – Spesifik : Pemisahan Layer data berdasarkan mandt
Client – Cross : Tidak ada pemisahan layer contoh apabila input data di server A maka akan
terlihat juga di client lain.
Langkah-langkah impelementasi SAP
0. Kick Off
- Tanda Tangan Kontrak
1. Project preparation
- Pemilihan tempat implementasi , Sumber Daya manusia , dll
2. Business blueprint
- Penentuan bisnis proses di suatu perusahaan
3. Realization
- Development yang dimana ABAPer mulai bekerja.
4. Final preparation
- project sudah 80% - 90% selesai.
- Test dan Training
5. Go live & support
- Ada 2 metode (cut off dan paralel)
- Cut off : sistem lama dimatikan diganti yang baru
ABAP HANDOUT 2010
18
-Kiki Siswanto-
- Paralel : sistem lama dan baru dijalankan bersama. Jika kuran lebih 1 atau 2 bulan
daya yang dihasilkan sama, maka sistem lama baru dimatikan.
ABAP Overview
Comment Field Comment Field
Beberapa comment yang sering digunakan pada comment field :
1 . Untuk memanggil sebuah transaction
- /nxxxx : transaction baru di window yang sama
- /*xxxx : transaction baru di window yang sama , halaman awal di skip.
- /oxxxx : transaction baru di session / window yang baru
2. Untuk mengakhiri sebuah session
/n
3. Untuk delete sebuah session
/i
4. Untuk membuat session baru tanpa menutup session yang sedang dibuka
/o
5. Untuk mengakhiri sebuah session dan kembali ke menu awal
ABAP HANDOUT 2010
19
-Kiki Siswanto-
1
s
d
a
d
a
s
1
1
/ns000
6. Untuk Log Off dari sistem
/nend
7. Untuk Log Off dari system tanpa konfirmasi
/nex
Manage User di ABAP
Untuk mengatur user – user yang ada baik dalam hal pembuatan user baru, lock / unlock user
baru, dsb dapat dilakukan dengan menggunakan perintah SU01 yang diketikkan pada comment
field.
Tampilan awal SU01 adalah sebagai berikut :
Create (F8) Display (F7 Delete (Shift + F2) Lock / Unlock (Ctrl + F5)
Change (Shift + F6) Copy (Shift + F5) Change Password (Shift + F8)
Untuk menggunakan tombol – tombol tersebut maka field user harus diisi terlebih dahulu.
ABAP HANDOUT 2010
20
-Kiki Siswanto-
Pada Screen User Maintenance terdapat beberapa tombol yang berfungsi untuk :
1. Tombol Create : Untuk membuat User baru.
2. Tombol Change : Untuk mengedit data User yang sudah dipilih.
3. Tombol Display : Untuk menampilkan data User tanpa bisa diedit.
4. Tombol Delete : Untuk menghapus User yang sudah dipilih.
5. Tombol Copy : Untuk mengcopy User yang sudah ada (biasanya dapat digunakan untuk
membuat user baru -> copy dari user yang sudah ada)
6. Tombol Lock / Unlock : Untuk me- lock / unlock user yang sudah dipilih. Akan tetapi,
fungsi ini masih memiliki kekurangan apabila user yang di lock ini sudah login maka user
masih dapat melakukan akses terhadap aplikasi ini selama user yang dimaksud belum log
off. Untuk mengatasi hal ini maka dapat dilakukan Kill terhadap user yang dimaksud
dengan cara mengetikkan SM04 pada comment field lalu pilih user yang dimaksud dan
lakukan end session.
7. Change Password : Untuk mengganti password dari user yang dimaksud.
Membuat Program di ABAP
Untuk membuat Program baru / Code baru dapat dilakukan pada ABAP Editor dengan cara
mengetikkan SE38 pada comment field.
Tampilan awal pada halaman ABAP Editor :
Tombol – Tombol yang terdapat pada Halaman ini adalah :
ABAP HANDOUT 2010
21
-Kiki Siswanto-
1. Tombol Display : Untuk melihat Code sesuai dengan nama Program yang dimasukkan
tanpa bisa melakukan edit terhadap code tersebut.
2. Tombol Change : Untuk melihat Code sesuai dengan nama Program yang dimaksud dan
dapat melakukan perubahan terhadap code tersebut.
3. Tombol Create : Untuk membuat Program baru.
Tampilan setelah tombol create diklik adalah :
Pada tampilan ini terdapat checkbox editor lock yang bisanya digunakan untuk
membatasi hak akses untuk mengubah code program tersbut.
Setelah tombol save diklik maka akan muncul tampilan sebagai berikut:
ABAP HANDOUT 2010
22
-Kiki Siswanto-
Pada halaman ini dapat dipilih package untuk program yang kita buat. Apabila package
tidak dimasukkan maka otomatis aplikasi akan memasukkan program kita ke package
$Tmp.
Package dapat digunakan untuk trace program, object, dsb. Selain itu, nomor transport
juga berhubungan dengan package. Untuk membuat package dapat dilakukan dengan
mengetikkan SE80 pada comment field.
Untuk save program, maka user hanya perlu menekan tombol yang bergambar disket.
Apabila User memilih Local Object maka program yang dibuat tidak b isa di transport.
Penamaan Program biasanya diawali huruf awal Y atau Z agar tidak bentrok dengan
program buatan programmer SAP.
Membuat Package Untuk membuat package dapat dilakukan dengan mengetikkan SE80 pada comment
field.
Tampilan Awal pada halaman ini adalah sebagai berikut :
Untuk Membuat Package User dapat mengetikkan terlebih dahulu nama package yang
ingin dibuat.
ABAP HANDOUT 2010
23
-Kiki Siswanto-
Kemudian Pilih Yes.
Lalu User harus mengisi Short Description dan Transport Layer (Transport Layer Untuk
Standar Object adalah SAP).
Create New Request
ABAP HANDOUT 2010
24
-Kiki Siswanto-
Kemudian Pilih Create New Request.
Isilah Short Description dengan format 1234:123456xxxxxxx. Lalu tekan Enter.
Lalu Muncul Halaman sebagai berikut :
Kemudian tekan tombol check (Continue) dan package sudah berhasil dibuat.
ABAP Editor ABAP Editor adalah salah satu Menu SAP untuk mendevelop program ABAP.
Menu-menu utama dalam ABAP Editor yang sering digunakan adalah :
1. Check (Ctrl+F2), digunakan untuk memeriksa syntax ABAP. Jika ada syntax yang salah maka akan keluar list errornya.
2. Activate (Ctrl+F3), digunakan untuk menaktifkan program ABAP. Jika program
ABAP belum aktif maka program tidak dapat di jalankan dan tidak dapat ditransport.
3. Direct Processing (F8), digunakan untuk menjalankan program ABAP.
4. Display Object List (Ctrl+Shift+F5), digunakan untuk menampilkan structure dari syntax program ABAP.
ABAP HANDOUT 2010
25
-Kiki Siswanto-
5. Help On (Ctrl+F8), digunakan untuk membuka dan mencari keyword untuk Help Syntax ABAP.
6. Set/Delete Breakpoint (Ctrl+Shift+F12), digunakan untuk mengaktifkan dan mendelete
breakpoint pada syntax di line tertentu.
Comment pada ABAP
Untuk membuat comment pada program ABAP dapat dilakukan dengan menggunakan tanda * atau “. Shortcut untuk membuat comment adalah Ctrl + ,. Untuk menghilangkan comment / mengembalikan seperti semula menggunakan shortcut Ctrl + ..
Jika inging melakukan comment pada banyak baris maka blok terlebih dahulu baris yang
ingin di comment.
Tanda * dan “ memiliki perbedaan yaitu tanda * hanya dapat diletakkan di depan / awal baris. Sedangkan tanda “ dapat diletakkan di tengah-tengah baris.
Tipe Data ABAP
- Built- in Elementary Data Types :
o Tipe data sederhana / primitif
ABAP HANDOUT 2010
26
-Kiki Siswanto-
Contoh :
Data : a TYPE i,
b TYPE i, c TYPE p DECIMALS 2.
- User Define : Turunan dari Elementary
o User-define data types memungkinkan untuk melakukan deklrasi data types
yang specific sesuai dengan kebutuhan.
- Elementary Types merupakan data type sederhana yang mengacu terhadap data type
yang lainya yang sudah dideklarasikan, bukan mengacu ke Built- in Elementary.
Elementary Types terdiri dari dua jenis :
1. Local : data type yang dideklarasikan di dalam program itu sendiri
2. Global : data type yang dideklarasikan di dalam Program Include atau di ABAP Dictionary (Domain , Data Element , dsb)
- Complex Types merupakan tipe data yang terdiri dari beberapa tipe data.
Complex Types terdiri dari 2 jenis :
1. Structure :
Structure dalam ABAP sering disebut juga sebagai Workarea atau Header
Line. Dalam bahasa pemrograman lain structure b isa juga disamakan sebagai Array satu dimensi.
ABAP HANDOUT 2010
27
-Kiki Siswanto-
Contoh :
types : begin of ty_wa,
a type i,
b type i,
hasil type p decimals 2,
end of ty_wa.
Data : l_wa1 type ty_wa.
2. Tables :
Tables dalam ABAP sering disebut juga sebagai internal table ( temporary table ). Dalam bahasa pemrograman lain tables bisa juga disamakan
sebagai Array multi dimensi.
Contoh :
TYPES : BEGIN OF ty_wa, a TYPE i,
b TYPE i, hasil TYPE p DECIMALS 2,
END OF ty_wa. DATA : gi_itab TYPE STANDARD TABLE OF ty_wa WITH HEADER
LINE. - > Deklarasi Internal table
Blok Coding
Umumnya pada ABAP terdapat Blok Coding yang digunakan untuk membatasi antara
input dan output yang diberi nama Start-Of-Selection. Untuk mengakses Blok Coding
dapat digunakan Display Object List (CTRL + SHIF + F5)
Menangani Exception
1. Menggunakan IF
2. Menggunakan Try Catch
ABAP HANDOUT 2010
28
-Kiki Siswanto-
Contoh :
TRY .
lo_wa1-ld_hasil = lo_wa1- ld_a / lo_wa1-ld_b.
WRITE : / 'WA dari variable a:', LO_WAA-LD_A1, LO_WAA-LD_A2, LO_WAA-LD_A3,
/ 'WA dari variable b:', LO_WA1-LD_B,
/ 'WA dari variable hasil:', LO_WA1-LD_HASIL.
WRITE : / 'hahah' , LO_WA1-LD_A-LD_A1 .
CATCH CX_SY_ZERODIVIDE.
write ' Nilai B tidak boleh 0'.
ENDTRY.
Internal Tabel
- Internal table mempunyai index yang dimulai dari 1.
- Biasanya terletak di Application Server.
- Append Untuk menambahkan record pada tabel dan letaknya selalu di row paling
akhir.
- Insert digunakan untuk menambah record pada tabel (insert kolom yang aktif).
- Untuk menampilkan data-data pada tabel dapat dilakukan Looping dengan
menggunakan Loop At ->looping dari index paling awal sampai akhir secara
otomatis.
- Header Line pada tabel digunakan untuk menampung sementara value sebelum di
append ke tabel.
Debug
Untuk melakukan debug maka program harus di activate terlebih dahulu dan kemudian
dijalankan. Setelah itu maka langkah selanjutnya adalah mengetikkan /h pada comment
field.
ABAP HANDOUT 2010
29
-Kiki Siswanto-
Menu-menu utama dalam ABAP Debugger yang sering digunakan adalah :
1. Single Step (F5), digunakan untuk masuk kedalam subroutine atau module.
2. Execute (F8), digunakan untuk mengeksekusi baris koding satu persatu/
3. Return (F7), digunakan untuk keluar dari subroutine.
4. Run (to Cursor) (F8), digunakan untuk mengeksekusi semua baris program dan dapat
berhenti jika ada Icon .
Day2
ABAP DICTIONARY
ABAP Dictionary : Sebuah Tools di SAP untuk memaintenance tabel.
ABAP Dictionary mirip dengan ABAP Data Type tapi sifatnya konsisten dan bisa dipanggil dari
luar (VB , .NET, dll).
Domain
Domain merupakan bagian dari Elementary Types dengan tipe global, yang dapat digunakan
diseluruh Data Element.
Langkah – Langkah Membuat Domain
1. Buka t-code se11 (Ketikkan SE11 pada Comment Field).
2. Aktifkan Radio Button Domain
3. Isilah Nama Domain, harus diawali huruf Z atau Y
ABAP HANDOUT 2010
30
-Kiki Siswanto-
4. Klik Tombol Create.
5. Isi Short Description. Kemudian isi Data Type, No. Characters, Decimal places dan
Output length seperti dibawah ini
ABAP HANDOUT 2010
31
-Kiki Siswanto-
6. Klik tombol bergambar disket untuk melakukan save.
7. Package diisi untuk membuat Domain yang dapat di transport ke client lain, tapi jika
hanya untuk latihan tidak perlu diisi.
ABAP HANDOUT 2010
32
-Kiki Siswanto-
8. Klik tombol bergambar disket jika ingin membuat Domain yang dapat ditransport ke
client lain. Jika tidak, klik tombol Local Object.
9. Activate Domain.
Elemen Data
Elemen Data merupakan bagian dari Elementary Types dengan type global, yang dapat
digunakan diseluruh Field (dalam Table) dan sebagai reference data type dalam program ABAP.
Langkah – Langkah Membuat Elemen Data :
1. Buka t-code se11
2. Aktifkan Radio Button Data Type
3. Isilah nama Data Element, harus diawali huruf Z atau Y
4. Klik tombol Create.
5. Pilih Data Element, kemudian klik tombol bergambar check.
ABAP HANDOUT 2010
33
-Kiki Siswanto-
6. Isi Short Description. Kemudian isi Domain jika ingin menggunaka data type dari
Domain. Tetapi jika ingin membuat data type maka aktifkan Built- int type.
7. Aktifkan Tab Field label dan kemudian isi Field label sesuai dengan kebutuhan, jika
sudah selesai tekan enter.
ABAP HANDOUT 2010
34
-Kiki Siswanto-
8. Klik tombol bergambar disket untuk save.
9. Package diisi untuk membuat Data Element yang dapat di transport ke client lain.
ABAP HANDOUT 2010
35
-Kiki Siswanto-
10. Klik tombol bergambar disket jika ingin membuat Data Element yang dapat
ditransport ke client lain. Jika tidak klik tombol local object.
11. Activate Elemen Data.
Tabel
Table merupakan bagian dari Complex Types dengan type global tables tetapi Table dapat diisi
data dan disimpan di server, yang dapat digunakan sebagai reference data type diseluruh program
ABAP.
Langkah – Langkah Membuat Tabel :
1. Buka t-code se11
2. Aktifkan Radio Button Database Tabel
3. Isikan nama Table, harus diawali huruf Z atau Y
ABAP HANDOUT 2010
36
-Kiki Siswanto-
4. Klik tombol create 5. Isi Short Description. Kemudian isi Delivery Class dan Data Browser/Table View
Maintenance. seperti dibawah ini.
- Untuk Delivery Class pilih yang A untuk tabel master atau transaksi, apabila tabel
customizing pilih yang C.
- Untuk Data Browser / Tabel View Maintenance Berhubungan dengan SE16.
o Display / Maintenance Allowed With Restriction : User dapat melakukan
Manipulasi data dan View data asalkan diberi hak akses oleh Basis pada
SU01.
o Display / Maintenance Allowed : Semua User Diijinkan melihat dari SE16
o Display / Maintenance Not Allowed : Tidak bisa di display dari SE16 harus
dari program yang uda jadi.
ABAP HANDOUT 2010
37
-Kiki Siswanto-
6. Aktifkan tab Fields. Kemudian isi Field dan atribute-nya. Untuk membuat foreign key
pilih tab Entry Help / check lalu pilih reference tabel (asalj primaty key) lalu klik
copy.
7. Klik tombol bergambar disket / save.
8. Package diisi untuk membuat Table yang dapat di transport ke client lain
ABAP HANDOUT 2010
38
-Kiki Siswanto-
9. Klik tombol bergambar disket jika ingin membuat Table yang dapat ditransport ke
client lain. Jika tidak klik tombol local object
10. Klik tombol Technical Settings
11. Isi Data Class dan Size Category seperti di bawah ini
ABAP HANDOUT 2010
39
-Kiki Siswanto-
- Data class : Jenis tabel.
- Size Category : Size tabel di database misalnya jml length tipe data 64 = 64 Byte.
Untuk server Unicode maka size tersebut di kali 2 menjadi 128 Byte.
12. Klik Tombol Save
13. Klik Tombol Back
14. Activate Tabel
Structure
Structure merupakan bagian dari Complex Types dengan type global structures, yang
dapat digunakan sebagai reference data type diseluruh program ABAP.
Langkah – Langkah Membuat Structure :
1. Buka t-code se11
2. Aktifkan Radio Button Data Type.
ABAP HANDOUT 2010
40
-Kiki Siswanto-
3. Isikan nama Structure, harus diawali huruf Z atau Y
4. Klik tombol create.
5. Pilih Structure, kemudian klik tombol check.
6. Isi Short Description.
7. Isikan field-field yang dibutuhkan. Jika suatu field memiliki data type yang sama
dengan yang ada pada Data Element, maka isi Data Element tersebut di kolom Data
ABAP HANDOUT 2010
41
-Kiki Siswanto-
Element. Jika suatu field memiliki data type yang bedrbea dengan yang ada pada Data
Element SAP maka tombol built- in-type harus diklik untuk mengaktikan kolom Data
Type.
Jika sudah selesai maka klik tombol component-type untuk mengaktifkan kolom
Data Element.
ABAP HANDOUT 2010
42
-Kiki Siswanto-
8. Klik Tombol bergambar disket / save.
9. Package diisi untuk membuat Structure yang dapat di transport ke client lain, tapi jika
hanya untuk latihan tidak perlu diisi.
ABAP HANDOUT 2010
43
-Kiki Siswanto-
10. Klik tombol bergambar disket jika ingin membuat Structure yang dapat ditransport ke
client lain. Jika tidak klik tombol local object.
11. Activate Structure
View
View merupakan bagian dari Complex Types dengan tipe global tables yang isi adalah
gabungan dari beberapa table. Selain itu, view dapat digunakan sebagai refe rence data
tipe diseluruh program ABAP.
Langkah – Langkah Membuat View :
1. Buka t-code SE11
2. Aktifkan radio button View
3. Isi nama View yang ingin dibuat
4. Pilih Database view, kemudian klik tombol Copy
ABAP HANDOUT 2010
44
-Kiki Siswanto-
5. Isi Short Description dan field-field yang diperlukan.
6. Aktifkan field View Fields. Kemudian isi kolom-kolomnya seperti gambar berikut
ABAP HANDOUT 2010
45
-Kiki Siswanto-
7. Klik tombol bergambar disket / save.
8. Package diisi untuk membuat View yang dapat di transport ke client lain
\
9. Klik tombol bergambar disket jika ingin membuat View yang dapat ditransport ke client
lain. Jika tidak klik tombol local object.
10. Activate View.
ABAP HANDOUT 2010
46
-Kiki Siswanto-
Index
Ketentuan Umum yang berlaku adalah syntax where yang digunakan harus sesuai dengan index.
Jika field yang dimaksud tidak ada pada index maka tidak boleh dimasukkan dalam syntax
where.
Index tidak boleh sembarang create karena index menduplikasi database. Akan tetapi index
mempercepat pencarian.
Langkah – Langkah membuat index :
1. Buka t-code SE11
2. Aktifkan radio button Database table dan masukkan nama Database table yang
diinginkan.
3. Jika tabel sudah ada pilih change jika belum pilih create.
4. Klik tombol indexes.
5. Pilih Yes.
ABAP HANDOUT 2010
47
-Kiki Siswanto-
6. Masukkan nama index yang ingin dibuat.
7. Klik Continue.
8. Isilah field sesuai dengan yang diinginkan
9. Klik tombol bergambar disket / save.
ABAP HANDOUT 2010
48
-Kiki Siswanto-
Parameters
Parameters : Digunakan untuk memasukan input ke dalam aplikasi.
Contoh : PARAMETERS : pa_kode LIKE zpygmmdt_sp08-kode_sp DEFAULT '001'.
Select-Options
Select-Options : Digunakan untuk memasukkan input ke dalam aplikasi tapi lebih bersifat range ( dari x sampai ke x ).
Contoh : SELECT-OPTIONS : s_kode FOR gi_header-connid.
ABAP HANDOUT 2010
49
-Kiki Siswanto-
Syntax Sql
Seperti yang ditulis di atas, Syntax where disarankan untuk tidak diikuti dengan field yang bukan
merupakan index. Untuk mengatasi masalah tersebut terdapat dua cara :
1. Menggunakan seleksi lagi setelah deselect.
2. Menggunakan syntax delete sesuai dengan kebutuhan. Delete lebih cepat Karena
berjalan di application server.
Syntax SQL yang juga disarankan tidak digunakan adalah penggunaan inner join karena itu akan
memperberat jalannya aplikasi.
Untuk mengganti Syntax left outer join dapat digunakan syntax for all entries in.
Contoh :
ABAP HANDOUT 2010
50
-Kiki Siswanto-
1. SELECT kode_sp tanggal harga mata_uang
INTO CORRESPONDING FIELDS OF TABLE gi_sph
FROM zpygmmdt_sph08
FOR ALL ENTRIES IN gi_header
WHERE
kode_sp = gi_header-kode_sp.
2. Untuk melakukan syntax distinct dapat dilakukan dengan cara :
DELETE ADJACENT DUPLICATES FROM gi_sph
COMPARING kode_sp tanggal.
3. Untuk melakukan Sort dapat dilakukan dengan cara :
SORT gi_sph BY tanggal DESCENDING.
4. Untuk mempercepat performa bisa dilakukan juga dengan menambahkan Syntax Binary
Search. Contoh :
READ TABLE gi_sph WITH KEY kode_sp = gi_header-kode_sp
BINARY SEARCH.
Akan tetapi apabila menggunakan Syntax ini maka tabel yang dimaksud harus di sort dulu
berdasarkan Key yang bersangkutan. Contoh :
SORT gi_sph BY kode_sp DESCENDING.
ABAP HANDOUT 2010
51
-Kiki Siswanto-
Tambahan : untuk mengecek apakah syntax yang dijalankan berhasil dijalankan atau tidak maka
dapat digunakan syntax sy-subrc. Jika syntax sebelum sy-subrc berhasil dijalankan maka sy-
subrc akan mengembalikan nilai 0.
Select
Select digunakan untuk mengumpulkan data dan menampilkannya.
Contoh : select nama id INTO temp_tabel from nama_table.
Insert
Untuk melakukan proses insert ke dalam tabel pada database maka dapat dilakukan dengan
syntax insert.
Contoh :
DATA: wa TYPE scustom.
wa-id = '12400177'.
wa-name = 'Robinson'.
wa-postcode = '69542'.
wa-city = 'Heidelberg'.
wa-custtype = 'P'.
wa-discount = '003'.
wa-telephone = '06201/44889'.
Insert Into dbtable VALUES wa.order atau
Insert dbtable FROM table itab.order.
Update
Update dapat digunakan untuk mengganti isi dari tabel.
Contoh :
ABAP HANDOUT 2010
52
-Kiki Siswanto-
DATA: tabname TYPE STRING, set_clause TYPE STRING.
tabname = 'SCUSTOM'. set_clause = 'DISCOUNT = ''003'' '.
UPDATE (tabname) SET (set_clause).
Modify
Modify dapat digunakan untuk mengganti isi tabel atau menambah isi tabel.
Contoh :
DATA: wa TYPE scustom. wa-id = '12400177'. wa-name = 'Robinson'.
wa-postcode = '69542'. wa-city = 'Heidelberg'.
wa-custtype = 'P'. wa-discount = '003'. wa-telephone = '06201/44889'.
MODIFY scustom FROM wa.
Delete
Delete dapat digunakan untuk menghapus isi dari tabel
Contoh :
DELETE FROM SBOOK WHERE CARRID = 'LH' AND CONNID = '0400' AND
FLDATE = '20010228'.
Atau
DATA wa TYPE sbook. wa-carrid = 'LH'.
wa-connid = '0400'. wa-fldate = '20010228'. wa-bookid = '00000003'.
DELETE sbook FROM wa.
ABAP HANDOUT 2010
53
-Kiki Siswanto-
Sub-Routine
Sub routine bisa dikatakan sebagai fungsi.
Untuk membuat Sub-routine dapat dilakukan dengan syntax :
FORM Nama_Form.
Statement 1
Statement 2
EndForm.
Untuk memanggil Form diatas maka dapat dilakukan dengan syntax :
PERFORM Nama_Form.
Apabila ingin menggunakan parameter maka syntax yang dapat digunakan adalah :
Contoh : Passing by Value (jadi hanya nilai nya saja yang di passing)
Data : a1.
PERFORM Nama_Form Using a1.
FORM Nama_Form USING Value(f1)
ENDFORM.
Contoh : Passing by Reference (yang di passing bukan nilainya melainkan alamatnya)
Data : a1.
PERFORM Nama_Form Using a1.
FORM Nama_Form USING f1.
ENDFORM.
ABAP HANDOUT 2010
54
-Kiki Siswanto-
Day 3
Subroutine
Jenis – Jenis Subroutine
Subroutine ada beberapa tipe seperti :
1. Subroutine biasa tanpa menggunakan using dan changing.
Contoh :
FORM fm_kali.
hasil = a * b.
ENDFORM.
Pada potongan program di atas subroutine tersebut melakukan proses dengan mengambil
variable global pada program tersebut dan mengubahnya.
2. Subroutine dengan menggunakan using.
Contoh :
FORM fm_kali_type1 USING fu_a fu_b.
hasil = fu_a * fu_b.
ENDFORM.
Pada potongan program di atas subroutine tersebut melakukan proses dengan
menampung variable global yang dioper ke dalam variable local dalam fungsi tersebut
menggunakan syntax using. Namun hasil dari proses masih ditampung pada variable
global yang ada pada program tersebut.
3. Subroutine dengan menggunakan using dan changing.
Contoh :
ABAP HANDOUT 2010
55
-Kiki Siswanto-
FORM fm_kali_type2 USING fu_a fu_b CHANGING fc_hasil.
fc_hasil = fu_a * fu_b.
ENDFORM.
Pada potongan program di atas subroutine tersebut melakukan proses dengan
menampung variable global yang dioper ke dalam variable local dalam subroutine
tersebut menggunakan syntax using. kemudian hasil dari proses ditampung pada variable
local yang telah dideklarasikan pada subroutine tersebut menggunakan changing
sehingga variable yang dioper sebagai changing bisa diubah juga nilainya. Jadi dengan
menggunakan changing , variable yang berasal dari luar program bisa dirubah nilainya.
Dengan mengguankan changing dan using maka subroutine tersbut sudah bersifat local
terhadap dirinya sendiri sehingga tidak bergantung pada program. Intinya dengan
menggunakan using dan changing maka subroutine dapat dipanggil dari luar / program
lain.
Untuk memanggil subroutine dari program lain dapat dilakukan dengan cara :
1. PERFORM [Nama_Subroutine] IN Program [Nama_Program_Asal] Using [variable]
Changing [Variable]
2. PERFORM [Nama_Subroutine](Nama_Program_Asal) Using [variable] changing
variable.
ALV ALV_LIST
ALV = ABAP LIST VIEW.
Pembuatan ALV_LIST
Langkah – Langkah untuk membuat ALV_LIST :
1. Klik display Object list (shift+ctrl+f5)
2. Klik kanan pada project pilih create lalu include.
ABAP HANDOUT 2010
56
-Kiki Siswanto-
3. Isilah nama include yang diinginkan.
4. Klik tombol check.
ABAP HANDOUT 2010
57
-Kiki Siswanto-
5. Klik tombol save.
6. Simpan dalam package yang sama dengan program utama.
7. Sisipkan kode dibawah ini ke dalam include.
*&---------------------------------------------------------------------* *& Include YPRACTICE_501_ALV * *&---------------------------------------------------------------------* TYPE-POOLS : slis. DATA : gw_is_layout TYPE slis_layout_alv, gi_it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE, gi_it_excluding TYPE slis_t_extab WITH HEADER LINE, gi_it_special_groups TYPE slis_t_sp_group_alv WITH HEADER LINE, gi_it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE, gi_it_filter TYPE slis_t_filter_alv WITH HEADER LINE, gw_is_sel_hide TYPE slis_sel_hide_alv, gv_i_default, gv_i_save, gw_is_variant LIKE disvariant, gi_it_events TYPE slis_t_event WITH HEADER LINE, gi_it_event_exit TYPE slis_t_event_exit WITH HEADER LINE, gw_is_print TYPE slis_print_alv, gw_is_reprep_id TYPE slis_reprep_id. *&--------------------------------------------------------------------* *& Form fm_alv_show *&--------------------------------------------------------------------* * text
ABAP HANDOUT 2010
58
-Kiki Siswanto-
*---------------------------------------------------------------------* * -->FT_ITAB text *---------------------------------------------------------------------* FORM fm_alv_show TABLES ft_itab. CLEAR gi_it_event_exit. gi_it_event_exit-ucomm = '&OUP'. gi_it_event_exit-after = 'X'. APPEND gi_it_event_exit. CLEAR gi_it_event_exit. gi_it_event_exit-ucomm = '&ODN'. gi_it_event_exit-after = 'X'. APPEND gi_it_event_exit. CLEAR gi_it_event_exit. gi_it_event_exit-ucomm = '&ETA'. gi_it_event_exit-after = 'X'. APPEND gi_it_event_exit. CLEAR gi_it_event_exit. gi_it_event_exit-ucomm = '&IC1'. gi_it_event_exit-after = 'X'. APPEND gi_it_event_exit. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = * I_BUFFER_ACTIVE = ' ' i_callback_program = sy-repid i_callback_pf_status_set = 'FM_ALV_SET_PF_STATUS' i_callback_user_command = 'FM_ALV_USER_COMMAND' * I_STRUCTURE_NAME = is_layout = gw_is_layout it_fieldcat = gi_it_fieldcat[] * IT_EXCLUDING = * IT_SPECIAL_GROUPS = it_sort = gi_it_sort[] it_filter = gi_it_filter[] is_sel_hide = gw_is_sel_hide i_default = gv_i_default i_save = gv_i_save is_variant = gw_is_variant it_events = gi_it_events[] it_event_exit = gi_it_event_exit[] is_print = gw_is_print is_reprep_id = gw_is_reprep_id * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = ft_itab EXCEPTIONS program_error = 1 OTHERS = 2 . IF sy-subrc <> 0.
ABAP HANDOUT 2010
59
-Kiki Siswanto-
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. "fm_alv_show *&--------------------------------------------------------------------* *& Form fm_alv_reset_data *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM fm_alv_reset_data. CLEAR : gw_is_layout, gi_it_fieldcat, gi_it_excluding, gi_it_special_groups, gi_it_sort, gi_it_filter, gw_is_sel_hide, gv_i_default, gv_i_save, gw_is_variant, gi_it_events, gi_it_event_exit, gw_is_print, gw_is_reprep_id. REFRESH : gi_it_fieldcat, gi_it_excluding, gi_it_special_groups, gi_it_sort, gi_it_filter, gi_it_events, gi_it_event_exit. ENDFORM. "fm_alv_reset_data *&--------------------------------------------------------------------* *& Form fm_alv_set_layout *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM fm_alv_set_layout USING fu_title. gw_is_layout-window_titlebar = fu_title. gw_is_layout-zebra = 'X'. gw_is_layout-colwidth_optimize = 'X'. gw_is_layout-no_colhead = space. gw_is_layout-group_change_edit = 'X'. * gw_is_layout-box_fieldname = 'CHBOX'. ENDFORM. "fm_alv_set_layout *&--------------------------------------------------------------------* *& Form fm_alv_set_print *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM fm_alv_set_print. gw_is_print-no_print_listinfos = 'X'. gw_is_print-no_print_selinfos = 'X'. gw_is_print-no_coverpage = 'X'.
ABAP HANDOUT 2010
60
-Kiki Siswanto-
gw_is_print-no_print_hierseq_item = 'X'. ENDFORM. "fm_alv_set_print *&--------------------------------------------------------------------* *& Form fm_alv_add_fieldcat *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->FU_1 text * -->FU_2 text * -->FU_3 text * -->FU_4 text * -->FU_5 text * -->FU_6 text * -->FU_7 text * -->FU_8 text * -->FU_9 text * -->FU_10 text * -->FU_11 text * -->FU_12 text * -->FU_13 text * -->FU_14 text * -->FU_15 text * -->FU_16 text * -->FU_17 text * -->FU_18 text * -->FU_19 text * -->FU_20 text * -->FU_21 text *---------------------------------------------------------------------* FORM fm_alv_add_fieldcat USING fu_1 fu_2 fu_3 fu_4 fu_5 fu_6 fu_7 fu_8 fu_9 fu_10 fu_11 fu_12 fu_13 fu_14 fu_15 fu_16 fu_17 fu_18 fu_19 fu_20 fu_21. CLEAR: gi_it_fieldcat. gi_it_fieldcat-fieldname = fu_1. " Fieldname gi_it_fieldcat-ref_tabname = fu_2. " Reference Tablename gi_it_fieldcat-ref_fieldname = fu_3. " Reference Fieldname gi_it_fieldcat-no_out = fu_4. " (O)blig.(X)no out gi_it_fieldcat-outputlen = fu_5. " Output length gi_it_fieldcat-seltext_l = fu_6. " long key word gi_it_fieldcat-seltext_m = fu_7. " middle key word gi_it_fieldcat-seltext_s = fu_8. " short key word gi_it_fieldcat-reptext_ddic = fu_9. " heading (ddic) gi_it_fieldcat-round = fu_10. " round in write statement gi_it_fieldcat-do_sum = fu_11. " sum up gi_it_fieldcat-hotspot = fu_12. " 'X' = hotspot is active -> Event click gi_it_fieldcat-decimals_out = fu_13. " decimals in write statement gi_it_fieldcat-currency = fu_14. gi_it_fieldcat-quantity = fu_15. gi_it_fieldcat-qfieldname = fu_16. " field with quantity unit gi_it_fieldcat-cfieldname = fu_17. " field with currency unit gi_it_fieldcat-checkbox = fu_18. " 'X' = checkbox or ' ' = not checkbox gi_it_fieldcat-icon = fu_19. " 'X' = icon or ' ' = not icon gi_it_fieldcat-fix_column = fu_20. " 'X' = Fix Column On or ' ' = Fix Column off gi_it_fieldcat-key = &21. " gi_it_fieldcat-key = fu_21. " 'X' = Key or ' ' = not Key APPEND gi_it_fieldcat.
ABAP HANDOUT 2010
61
-Kiki Siswanto-
ENDFORM. "fm_alv_add_fieldcat *&--------------------------------------------------------------------* *& Form FM_ALV_SET_PF_STATUS *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->RT_EXTAB text *---------------------------------------------------------------------* FORM fm_alv_set_pf_status USING rt_extab TYPE slis_t_extab. SET PF-STATUS 'YSTANDARD'. ENDFORM. "fm_alv_set_pf_status *&--------------------------------------------------------------------* *& Form FM_USER_COMMAND *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM fm_alv_user_command USING fu_ucomm LIKE sy-ucomm fu_selfield TYPE slis_selfield. DATA: lt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE, lv_ok_code LIKE sy-ucomm. MOVE fu_ucomm TO lv_ok_code. CASE lv_ok_code. WHEN '&IC1'. * PERFORM fm_alv_event_double_click. WHEN '&ETA'. * PERFORM fm_alv_event_double_click. WHEN '&F03' OR '&F15' OR '&F12'. ENDCASE. MOVE 'X' TO fu_selfield-refresh. ENDFORM. "FM_USER_COMMAND
9. Buka session baru (SE38).
10. Isi nama program dengan SAPLKKBL.
ABAP HANDOUT 2010
62
-Kiki Siswanto-
11. Klik tombol display.
12. Klik display Object list (shift+ctrl+f5)
13. Buka GUI STATUS pada tree menu
14. Salin GUI Status -- "Standard"
ABAP HANDOUT 2010
63
-Kiki Siswanto-
15. Isikan program dengan nama program yang diinginkan dan ubah status dengan
YSTANDARD.
16. Klik tombol copy.
17. Jangan ubah apapun hanya klik copy kembali.
18. Kembali ke program utama dan mulai menulis syntax.
ABAP HANDOUT 2010
64
-Kiki Siswanto-
FieldCat ALV Fieldcat digunakan untuk mengatur field-field yang akan ditampilkan pada report yang diinginkan.
Contoh :
form fm_open_material_master using fu_fieldname fu_value. if fu_fieldname = 'MATNR'.
set parameter id 'MAT' Field fu_value. call transaction 'MM03' and skip first screen. endif.
endform.
and skip first screen : tekan enter otomatis. FORM fm_alv_add_fieldcat USING fu_1 fu_2 fu_3 fu_4 fu_5 fu_6 fu_7 fu_8 fu_9 fu_10
fu_11 fu_12 fu_13 fu_14 fu_15 fu_16 fu_17 fu_18 fu_19 fu_20 fu_21 fu_22.
CLEAR: gi_it_fieldcat. gi_it_fieldcat- fieldname = fu_1. " Fieldname
gi_it_fieldcat-ref_tabname = fu_2. " Reference Tablename
gi_it_fieldcat-ref_fieldname = fu_3. " Reference Fieldname
gi_it_fieldcat-no_out = fu_4. " (O)blig.(X)no out gi_it_fieldcat-outputlen = fu_5. " Output length
gi_it_fieldcat-seltext_l = fu_6. " long key word
gi_it_fieldcat-seltext_m = fu_7. " middle key word
gi_it_fieldcat-seltext_s = fu_8. " short key word
gi_it_fieldcat-reptext_ddic = fu_9. " heading (ddic) gi_it_fieldcat-round = fu_10. " round in write statement
gi_it_fieldcat-do_sum = fu_11. " sum up
gi_it_fieldcat-hotspot = fu_12. " 'X' = hotspot is active -> Event click
gi_it_fieldcat-decimals_out = fu_13. " decimals in write statement
ABAP HANDOUT 2010
65
-Kiki Siswanto-
gi_it_fieldcat-currency = fu_14.
gi_it_fieldcat-quantity = fu_15.
gi_it_fieldcat-qfieldname = fu_16. " field with quantity unit gi_it_fieldcat-cfieldname = fu_17. " field with currency unit
gi_it_fieldcat-checkbox = fu_18. " 'X' = checkbox or ' ' = not checkbox
gi_it_fieldcat- icon = fu_19. " 'X' = icon or ' ' = not icon
gi_it_fieldcat- fix_column = fu_20. " 'X' = Fix Column On or ' ' = Fix Column off gi_it_fieldcat-key = &21. "
gi_it_fieldcat-key = fu_21. " 'X' = Key or ' ' = not Key
gi_it_fieldcat-edit = fu_22. " 'X' = Edit kolom
APPEND gi_it_fieldcat. ENDFORM
ABAP HANDOUT 2010
66
-Kiki Siswanto-
Day 4
Tabel Sistem di SAP Aktivitas-aktivitas yang dilakukan biasanya di catat dalam tabel.
Contoh : Setiap bikin DE , Data element itu dicatat dalam 1 tabel Cth ; DD*
Kalau buat langsung di DB tidak tercatat di tabel . sedangkan jika membuatnya di ABAP
dictionary maka tercatat di tabel, secara fisik juga ada.
Tabel Keterangan
USR* Tabel User SAP
DD* Kamus SAP-ABAP (Tabel, Struktur, Field, Data Elemen dst)
TFDIR Function Module
TRDIR Program/Sistem SAP
PROGDIR Program/Sistem sAP
D010SINF informasi Mengenai kode sintak program SAP-ABAP
TRDIR - > informasi mengenai ABAP Program.
SE37 – Function Builder digunakan untuk membuat function.
SUBST_GET_FILE_LIST -> Meng call lib yang dibuat menggunakan bahasa c
Bisa juga mengeksekusi java script , memanggil ole, memanggil activeX yang ada di local
computer ke dalam SAP GUI contohnya digunakan untuk mengkoneksi ABAP ke hardware.
Contoh ABAP - modem gsm tapi tidak bisa real time (enter dan klik) tapi bisa diakalin dengan
java script.
Membuat Structure Dengan ABAP Dictionary
Agar internal tabel dapat digunakan pada function module maka tabel tersebut harus diubah
menjadi tipe data yang dapat digunakan oleh program lain. Cara yang dapat dilakukan yaitu
membuat tipe data Structure yang sesuai dengan internal tabel yang diinginkan. Untuk membuat
ABAP HANDOUT 2010
67
-Kiki Siswanto-
Structure ini maka harus dibuat dengan menggunaka ABAP Dictionary sehingga dapat
digunakan utnuk semua program.
TYPES : BEGIN OF ty_header ,
"header
Kode_SP LIKE ZPYGMMDT_SP02-KODE_SP ,
NAMA LIKE ZPYGMMDT_SP02-NAMA ,
STOCK LIKE ZPYGMMDT_SP02-STOCK ,
"detail
TANGGAL LIKE ZPYGMMDT_SPH02-TANGGAL ,
HARGA LIKE ZPYGMMDT_SPH02-HARGA ,
MATA_UANG LIKE ZPYGMMDT_SPH02-MATA_UANG ,
END OF ty_header .
ABAP HANDOUT 2010
68
-Kiki Siswanto-
Langkah - Langkah untuk mengubah internal tabel menjadi Structure :
1. Buka t-code SE11
2. Isilah nama Data Type yang diinginkan.
3. Pilih radio button Structure.
ABAP HANDOUT 2010
69
-Kiki Siswanto-
4. Isilah field-field yang sesuai dengan internal tabel yang dimaksud.
5. Isilah currency / quantity field jika diperlukan.
6. Activate Structure.
NB :
LOOP AT ft_header.
WRITE : / '|' NO-GAP, (10) ft_header-kode_sp CENTERED,
'|' NO-GAP, (10) ft_header-stock,
ABAP HANDOUT 2010
70
-Kiki Siswanto-
'|' NO-GAP, (20) ft_header-nama,
'|' no-gap, (15) ft_header-tanggal,
'|' NO-GAP, (13) ft_header-harga currency gi_header-mata_uang,
'|' NO-GAP, (10) ft_header-mata_uang.
ENDLOOP.
endform.
Structure standard buat range.
Types ->Structure
ABAP HANDOUT 2010
71
-Kiki Siswanto-
Select options -> range (Structure) Contoh :
PERFORM fm_collect_data Tables gi_header gi_ekko gi_ekpo so_bsart so_ebeln so_bukrs.
NB : gi_header , gi_ekko, gi_ekpo adalah tabel yang tipe datanya Structure, sedangkan so_bsart,
so_ebeln, so_bukrs adalah Select-options dan untuk menampung hasil kiriman dari select options
maka harus dibuat Structure.
Langkah – Langkah untuk membuat Structure untuk menampung hasil dari select-options :
1. Bukalah t-code 11.
2. Isilah nama untuk tipe data yang diinginkan.
ABAP HANDOUT 2010
72
-Kiki Siswanto-
3. Klik tombol create.
4. Aktifkan radio button Structure.
5. Klik tombol Check.
6. Isilah Short Description dan Field – Field yang dibutuhkan.
Untuk select options maka field – field yang dibutuhkan adalah :
- Sign ->tipe data char1
- Option ->tipe data char2
- Low ->sesuai dengan tipe data yang ada di program.
- High ->sesuai dengan tipe data yang ada di program.
ABAP HANDOUT 2010
73
-Kiki Siswanto-
7. Aktifkan Structure.
Parameters -> untuk menggunakan parameter dapat digunakan langsung dengan menggunakan
using.
Using digunakan setelah tabel
Contoh :
PERFORM fm_display_data Tables gi_header gi_ekko gi_ekpo using p_mline p_mwidth.
Function Module
Pembuatan Function Module Function modul adalah function yang dapat terdapat di luar program dan dapat dipanggil dari
program tersebut.
Function group : kumpulan dari beberapa function module.
Langkah – Langkah Membuat Function :
ABAP HANDOUT 2010
74
-Kiki Siswanto-
1. Untuk membuat function module yang harus dilakukan adalah membuat Function Group
terlebih dahulu.
Untuk membuat function module dan function group dapat dilakukan dengan membuka t-
code SE37.
2. Pilih menu Goto – Function Groups – create function.
3. Isilah Nama Function Group dan Short Text.
4. Klik Tombol Check.
5. Pilih package yang diinginkan. Untuk membuat fungsi yang dapat di transport pilih
package dan tekan tombol bergambar disket. Jika tidak pilih local object.
ABAP HANDOUT 2010
75
-Kiki Siswanto-
6. Masukkan nama Function yang ingin dibuat. Lalu tekan tombol create.
7. Pilihlah nama function group dan isilah Short Text.
8. Function sudah berhasil dibuat akan muncul pesan sbb :
ABAP HANDOUT 2010
76
-Kiki Siswanto-
9. Klik tombol check.
10. Isilah field – field yang dibutuhkan untuk sebuah fungsi.
Tab import digunakan untuk menerima parameter dari luar : seperti using pada
subroutine.
Tab export digunakan untuk mengirim parameter (dapat dianggap seperti return).
Tab changing digunakan untuk menerima parameter dan mengubahnya seperti changing
pada subroutine.
Tab tables digunakan untuk mendeklarasikan tabel yang akan dipakai dalam function.
Pada tab import ada beberapa field yang dapat diisi yaitu :
- Parameter name - > nama parameter
- Type -> dapat diisi Type , Like , dan Type ref to.
- Associated Type - > tipe data yang diinginkan.
- Default Value - > nilai awal.
ABAP HANDOUT 2010
77
-Kiki Siswanto-
- Optional -> menandakan apakah parameter harus diisi atau tidak. Kalau optional tidak
apa2-apa kalau tidak di pasing dari parameter lain. Kalo di uncheck harus dioper
dari parameter kalo gak default valuenya diisi.
- Pass Value -> mengoper value dari parameter
Subroutine mirip dengan Function Module akan tetapi subroutine hanya dapat di akses dari
ABAP Program sedangkan Function modul dapat diakses dari ABAP Program maupun dari
bahasa pemrograman lainnya.
Syarat agar function modul dapat diakses oleh server lainnya dan bahasa pemrograman lainnya
adalah :
1. Pada Tab attribute aktifkan remote enabled module.
2. Pada Tab import field pass value nya harus di check. Passing harus parameter yang
ada tipe datanya
Cara untuk memanggil function digunakan dengan tombol pattern.
Setelah itu pilih nama function yang ingin dipanggil.
ABAP HANDOUT 2010
78
-Kiki Siswanto-
Untuk memasukkan include di function module :
Pilih menu goto-> global data - > lalu ketikkan nama include yang ingin dimasukkan.
Contoh – Contoh Program
Program Subroutine
Contoh Program Subroutine tanpa using dan changing, dengan changing, dan dengan
menggunakan using dan changing.
REPORT zt02_latihan07 . DATA : a TYPE i Value 4,
b TYPE i Value 5, hasil TYPE p DECIMALS 2.
START-OF-SELECTION.
PERFORM fm_kali. WRITE : / 'Hasil : ', hasil, '(Tanpa Using dan Changing)'.
PERFORM fm_kali_type1 USING a b.
ABAP HANDOUT 2010
79
-Kiki Siswanto-
WRITE : / 'Hasil : ', hasil, '(Tanpa Changing)'. PERFORM fm_kali_type2 USING a b CHANGING hasil.
WRITE : / 'Hasil : ', hasil, '(Changing)‟.
*&---------------------------------------------------------------------* *& Form fm_kali *&---------------------------------------------------------------------*
* text *----------------------------------------------------------------------*
FORM fm_kali. hasil = a * b. ENDFORM. "fm_kali
*&---------------------------------------------------------------------*
*& Form fm_kali_type1 *&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* * -->FU_A text
* -->FU_B text *----------------------------------------------------------------------* FORM fm_kali_type1 USING fu_a fu_b.
hasil = fu_a * fu_b. ENDFORM. "fm_kali_type1
*&---------------------------------------------------------------------* *& Form fm_kali_type2
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* * -->FU_A text * -->FU_B text
* -->FC_HASIL text *----------------------------------------------------------------------*
FORM fm_kali_type2 USING fu_a fu_b CHANGING fc_hasil. fc_hasil = fu_a * fu_b. ENDFORM. "fm_kali_type2
ABAP HANDOUT 2010
80
-Kiki Siswanto-
Program memanggil Subroutine dari luar program
Contoh program untuk memanggil subroutine dari luar program (cara 1).
REPORT ZT02_LATIHAN07A .
Data : angka1 type P decimals 4 value '2.5',
angka2 Like angka1 value '4.3', Result Like angka2.
Start-of-selection.
PERFORM fm_kali_type2 IN Program ZT02_Latihan07 Using angka1 angka2 changing result. WRITE : / 'Result : ', result.
ABAP HANDOUT 2010
81
-Kiki Siswanto-
Contoh program untuk memanggil subroutine dari luar program (cara 2).
REPORT ZT02_LATIHAN07A .
Data : angka1 type P decimals 4 value '2.5', angka2 Like angka1 value '4.3',
Result Like angka2. Start-of-selection.
*PERFORM fm_kali_type2 IN Program ZT02_Latihan07 Using angka1 angka2 changing result.
PERFORM fm_kali_type2(ZT02_Latihan07) Using angka1 angka2 changing result.
WRITE : / 'Result : ', result.
Define : untuk mendefinisikan syntax agar nanti bisa digunakan kembali pada bagian program tertentu.
Tujuan nya untuk mempersingkat syntax namun maksimum hanya bisa 8 data / penampung (variable).
Define mirip seperti subroutine. Contoh : DEFINE macro_data_possition.
if &1 = 'HEADER'.
write : /'|' no-gap,(9) &2 centered,
'|' no-gap,(18) &3 centered,
'|' no-gap,(40) &4 centered, '|' no-gap,(18) &5 centered,
'|' no-gap,(5) &6 centered,
'|' no-gap,(10) &7 centered,
'|' no-gap. ENDIF.
END-OF-DEFINITION.
ABAP HANDOUT 2010
82
-Kiki Siswanto-
Mengganti Define dengan SubRoutine
Define pada contoh diatas dapat diganti manjadi subroutine seperti di bawah ini : FORM macro_data_possition using &1 &2 &3 &4 &5 &6 &7.
if &1 = 'HEADER'.
write : /'|' no-gap,(9) &2 centered,
'|' no-gap,(18) &3 centered, '|' no-gap,(40) &4 centered,
'|' no-gap,(18) &5 centered,
'|' no-gap,(5) &6 centered,
'|' no-gap,(10) &7 centered,
'|' no-gap. Endif. Endform.
Program Mengganti Define dengan Subroutine
Contoh Program untuk mengganti define dengan subroutine.
REPORT ZT02_REPORT202 NO STANDARD PAGE HEADING .
TABLES : mara, makt, t006a.
*DEFINE macro_data_possition. *
* if &1 = 'HEADER'. * * write : /'|' no-gap,(9) &2 centered,
* * '|' no-gap,(18) &3 centered,
* * '|' no-gap,(40) &4 centered, *
* '|' no-gap,(18) &5 centered, *
ABAP HANDOUT 2010
83
-Kiki Siswanto-
* '|' no-gap,(5) &6 centered, * * '|' no-gap,(10) &7 centered,
* * '|' no-gap.
* * else. *
* write : /'|' no-gap,(9) &2 centered, *
* '|' no-gap,(18) &3 , * * '|' no-gap,(40) &4 ,
* * '|' no-gap,(18) &5 ,
* * '|' no-gap,(5) &6 , *
* '|' no-gap,(10) &7 , *
* '|' no-gap. * * endif.
* *END-OF-DEFINITION.
FORM macro_data_possition using &1 &2 &3 &4 &5 &6 &7.
if &1 = 'HEADER'.
write : /'|' no-gap,(9) &2 centered,
'|' no-gap,(18) &3 centered,
'|' no-gap,(40) &4 centered,
'|' no-gap,(18) &5 centered,
'|' no-gap,(5) &6 centered,
'|' no-gap,(10) &7 centered,
'|' no-gap.
else.
ABAP HANDOUT 2010
84
-Kiki Siswanto-
write : /'|' no-gap,(9) &2 centered,
'|' no-gap,(18) &3 ,
'|' no-gap,(40) &4 ,
'|' no-gap,(18) &5 ,
'|' no-gap,(5) &6 ,
'|' no-gap,(10) &7 ,
'|' no-gap.
endif.
ENDFORM.
PERFORM macro_data_possition using 'CONTENT'
gi_header-matkl
gi_header-matnr
gi_header-maktx
gi_header-bismt
gi_header-meins
gi_header-mseht.
Perform macro_data_possition using
'HEADER' 'Mat. Group' 'Mat. No.' 'Description' 'Old Mat. No.' 'Base Unit' 'Measure'.
ABAP HANDOUT 2010
85
-Kiki Siswanto-
Tips Day 3 Dan 4
Cek Tabel Dalam membuat sebuah program maka yang harus dilakukan adalah melakukan cek tabel
terlebih dahulu agar field – field yang dibutuhkan berasal dari tabel yang benar.
Untuk melakukan cek tabel maka dapat dilakukan dengan melihat pada t-code se16 atau se11.
ABAP HANDOUT 2010
86
-Kiki Siswanto-
LOOPING.
LOOP AT.
LOOP AT WHERE.
ENDLOOP.
ENDLOOP.
Jika menggunakan LOOP AT WHERE maka waktu proses akan menjadi lebih lama karena
semua nya di loop (di cek) selain itu setelah dilakukan cek maka pointer akan kembali lagi ke
atas kemudian baru melakukan cek kembali.
A : B 1 2 3
A 4 dst.
A
B
B
ABAP HANDOUT 2010
87
-Kiki Siswanto-
Jadi pointer akan bergerak ke data yang pertama, setelah data pertama di cek maka kembali ke
atas dan kemudian mulai cek lagi ke data yang kedua, dst.
Read Table
Untuk mengatasi masalah diatas biar lebih cepat menggunakan read table.
Kalau menggunakan read table maka di sort dulu dan dicari index yang sesuai. Jadi mulai
pencariannya dari index yang uda dicari. Terus di loop dan di cek apakah data yang dimaksud
cocok atau tidak. Kalau tidak cocok maka langsung keluar dari loop sehingga tidak di cek semua.
Selain itu kalau pake cara read table setelah melakukan cek pointer tidak kembali lagi ke atas
tapi langsung cek ke baris / index berikutnya.
Sort gi_ekko by ebeln. Sort gi_ekpo by ebeln ebelp.
LOOP AT gi_ekko. READ table gi_ekpo WITH KEY ebeln = gi_ekko-ebeln BINARY SEARCH.
IF sy-subrc = 0. LOOP at gi_ekpo FROM sy-tabix.
IF NOT gi_ekpo-ebeln = gi_ekko-ebeln. EXIT. ENDIF.
ENDLOOP. ENDIF.
ENDLOOP.
Sort gi_ekko by ebeln. Sort gi_ekpo by ebeln ebelp.
LOOP AT gi_ekko.
READ table gi_ekpo WITH KEY ebeln = gi_ekko-ebeln BINARY SEARCH. IF sy-subrc = 0. LOOP at gi_ekpo FROM sy-tabix.
IF NOT gi_ekpo-ebeln = gi_ekko-ebeln. EXIT.
ENDIF. ENDLOOP. ENDIF.
CLEAR gi_header.
gi_header-bsart = gi_ekko-bsart.
ABAP HANDOUT 2010
88
-Kiki Siswanto-
gi_header-ebeln = gi_ekko-ebeln. gi_header-bukrs = gi_ekko-bukrs.
gi_header- lifnr = gi_ekko-lifnr.
gi_header-ebelp = gi_ekpo-ebelp.
gi_header-ematn = gi_ekpo-ematn.
gi_header-txz01 = gi_ekpo-txz01. gi_header-menge = gi_ekpo-menge.
gi_header-meins = gi_ekpo-meins.
APPEND gi_header.
ENDLOOP.
call transaction
Digunakan Untuk memanggil transaksi. Untuk mengirim parameter ke call transaction lihat dulu
apakah transaksi yang dipanggil punya parameter id apa tidak. Jika punya maka bisa diisi dari
program lain.
Lain - Lain Deklarasi dari eksternal program biasakan pake LIKE jangan TYPE.
gi_header LIKE STANDARD TABLE OF ZST02_SPAREPART WITH HEADER LINE, // jadi
kan tipe nya stucuture trus bikin di luar jangan di dalam program biar bisa dipanggil dari
subroutine agar sifatnya local.
PERFORM fm_display_data TABLES gi_header.
Subrutine pake tables
form fm_display_data TABLES FT_HEADER Structure ZST02_SPAREPART “agar yang local
ini bisa punya tipe data structure yang uda dibuat.
Tables sifatnya bisa using dan changing.
Kalau types di latihan 6 sifanya Cuma buat program itu saja.
ABAP HANDOUT 2010
89
-Kiki Siswanto-
Kalau structure yang dibikin di abap dictionary bisa untuk digunakan program lain.
SELECT OPTIONS-> select options masih belum bersifat local untuk mengubahnya maka dapat
dijadikan structure..
Connector sap-gui 100 % kompatibel dengan sap
3 aktive-x
SAP function : call function
SAP Logon : untuk masuk
SAP LABEL : tampung tabel dari SAP dlm bentuk array
Vb
Add reference - > com -> sap logon control, sap remote function call control, sap table factory
RFC - > remote function call (RFC)->koneksi
ABAP HANDOUT 2010
90
-Kiki Siswanto-
DAY 5
ALV
ALV HIERARCHY
Alv Hierarchy adalah salah satu jenis template tampilan / view yang disediakan SAP untuk menampilkan
report. Selain Alv Hierarchy, ada beberapa template lain yang disediakan oleh SAP antara lain ALv List
dan Alv Grid.
Contoh Tampilan Alv List :
Contoh Tampilan Alv Grid :
ABAP HANDOUT 2010
91
-Kiki Siswanto-
Contoh Tampilan Alv Hierarchy :
Tampilan Alv Hierarchy berbeda dengan Alv List dan Grid karena pada Alv Hierarchy tampilan report
dapat ditampilkan dalam bentuk header detail. Perbedaan antara alv list dengan alv hierarchy terletak
pada form set column dan show hier nya. Untuk alv hierarchy umumnya menggunakan 2 internal tabel.
Selain itu, alv hierarchy memiliki 2 level karena menggunakan 2 itab yang disediakan yaitu header dan
detail.
Dalam pembuatan template ALV , program harus disisipkan GUI Status yang dapat dilakukan dengan
cara menambahkan / mengcopy GUI Status yang dapat diambil dari program SAPLKKBL.
Report Sap dan Report Html
Report Sap berbeda dengan Report Html karena report sap memiliki keterbatasan – keterbatasan.
Keterbatasan yang paling terlihat adalah warna dan tampilan. Sedangkan report html memiliki warna
yang beragam dan tampilannya yang dapat diatur sesuai dengan keinginan kita (seperti halaman web).
ABAP HANDOUT 2010
92
-Kiki Siswanto-
Report Html
Dalam membuat report html maka kita harus meng add beberapa coding pada program kita / template.
Siklus hidupnya adalah pada setelah kita selesai mengetik coding html di program maka program akan
memanggil fungsi untuk mengcreate html file dan setelah itu untuk menampilkan hasilnya pada
program maka program harus melakukan load terhadap file html yang sudah dibuat. Report html
berhubungan erat dengan dialog programming karena ada komponen pada dialog programming yang
dapat digunakan untuk menampilkan halaman html.
Langkah – Langkah Membuat Report Html :
1. Buka T-code se38
2. Klik display object list (Shift+Ctrl+F5).
3. Klik kanan pada „Object tree‟, dan seleksi „Screen‟.
4. Masukkan nomor screen/screen number 2000 dan tekan tombol check.
NB : jangan masukkan nomor screen 1000 karena nanti akan bentrok dengan screen default
yang disediakan SAP. Karena pada saat kita menggunakan start of selection maka otomatis itu
akan menjadi screen 1000.
ABAP HANDOUT 2010
93
-Kiki Siswanto-
5. Klik untuk memulai design layout(desain Tampilan).
6. Klik untuk menambahkan komponen "Custom Control" ke screen and isi 'Custom Control
name'(Nama) dengan "CC_REPORT_DISPLAY"
7. Seleksi "CC_REPORT_DISPLAY", lalu klik (Attribute Windows).
8. Atur komponen seperti screen dibawah ini.
9. Klik save.
10. Tutup design layout dan kembali ke screen sebelumnya.
11. Klik tab elemen list.
12. Isi pada cell kosong dengan “OK_Code”.
13. Double Klik dan kembali ke kode sintak.
14. Ada beberapa koding yang perlu ditambahkan untuk membuat report html sperti :
TYPES: BEGIN OF gy_html_code,
line_code(1000),
END OF gy_html_code.
DATA: gi_html_code TYPE TABLE OF gy_html_code WITH HEADER LINE.
DATA: cc_report_display TYPE REF TO cl_gui_html_viewer,
web_container TYPE REF TO cl_gui_custom_container.
ABAP HANDOUT 2010
94
-Kiki Siswanto-
DEFINE write_code1.
clear gi_html_code.
gi_html_code-line_code = &1.
append gi_html_code.
END-OF-DEFINITION.
DEFINE write_code2.
clear gi_html_code.
concatenate &1 &2 into gi_html_code-line_code.
append gi_html_code.
END-OF-DEFINITION.
DEFINE write_code3.
clear gi_html_code.
concatenate &1 &2 &3 into gi_html_code-line_code.
append gi_html_code.
END-OF-DEFINITION.
NB : Untuk define write_code dapat ditambahkan sesuai kebutuhan. Jadi tidak terikat
hanya dengan 3 diatas. Define write_code diatas berfungsi untuk menggabungkan sintax-
sintax html yang bukan 1 kesatuan.
Misalnya : „<td>‟ „Matkl‟ „</td>‟. -> untuk menggabunkan 3 kata diatas dapat dilakukan
dengan write_code3.
FORM fm_initialization.
IF cc_report_display IS INITIAL.
CREATE OBJECT web_container
EXPORTING
container_name = 'CC_REPORT_DISPLAY'.
CREATE OBJECT cc_report_display
EXPORTING
parent = web_container.
IF sy-subrc NE 0.
ENDIF.
ABAP HANDOUT 2010
95
-Kiki Siswanto-
ENDIF.
ENDFORM.
FORM fm_create_html_file TABLES fi_file STRUCTURE gi_html_code USING fv_url.
CONDENSE fv_url NO-GAPS.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
Filename = fv_url
Filetype = 'ASC'
TABLES
data_tab = fi_file
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
ENDFORM.
FORM fm_load_html USING fv_url.
CALL METHOD cc_report_display->show_url
EXPORTING
url = fv_url.
ENDFORM.
Include Untuk menangkap event pada Html Code :
DATA : gv_html_event_tab TYPE cntl_simple_events,
gv_html_event TYPE cntl_simple_event,
gv_repid LIKE sy-repid,
ABAP HANDOUT 2010
96
-Kiki Siswanto-
gv_frame(255),
gv_action(256),
gv_getdata(2048),
gv_postdataline(1024),
gi_postdata_tab TYPE cnht_post_data_tab,
gi_query_table TYPE TABLE OF w3query WITH HEADER LINE.
CLASS cl_html_event_handler DEFINITION.
PUBLIC SECTION.
* Activate event
METHODS: on_sapevent
FOR EVENT sapevent OF cl_gui_html_viewer
IMPORTING action frame getdata postdata query_table.
ENDCLASS. "cl_html_event_handler DEFINITION
Data: gv_evt_receiver TYPE REF TO cl_html_event_handler.
*---------------------------------------------------------------------*
* CLASS cl_html_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS cl_html_event_handler IMPLEMENTATION.
* Event Procedure
METHOD on_sapevent.
CLEAR gv_action.
CLEAR gv_frame.
CLEAR gv_getdata.
CLEAR gv_postdataline.
gv_action = action.
gv_frame = frame.
gv_getdata = getdata.
gi_postdata_tab = postdata.
IF NOT gi_postdata_tab IS INITIAL.
READ TABLE gi_postdata_tab INDEX 1 INTO gv_postdataline.
ABAP HANDOUT 2010
97
-Kiki Siswanto-
ENDIF.
gi_query_table[] = query_table[].
CASE action.
* Action "OPEN_PAGE" when press a button in the html page
WHEN 'SUBMIT_PAGE_NO'.
PERFORM fm_display_data.
WHEN OTHERS.
ENDCASE.
ENDMETHOD. "on_sapevent
ENDCLASS. "cl_html_event_handler IMPLEMENTATION
NB: Class cl_html_event_handler implementation adalah class yang digunakan untuk
menangkap event yang diakibatkan oleh code html tersebut. Jika tidak ada event yang dipanggil
maka tidak usah menambahkan class diatas.
Untuk meregistrasi event yang ada pada screen agar bisa ditangkap oleh class di atas maka pada
module status output harus ditambahkan syntax sebagai berikut :
* Meregrister Event
IF NOT cc_report_display IS INITIAL.
gv_html_event-eventid = cc_report_display->m_id_sapevent.
gv_html_event-appl_event = 'x'.
APPEND gv_html_event TO gv_html_event_tab.
CALL METHOD cc_report_display->set_registered_events
EXPORTING
events = gv_html_event_tab.
CREATE OBJECT gv_evt_receiver.
SET HANDLER gv_evt_receiver->on_sapevent
FOR cc_report_display.
ELSE.
LEAVE TO SCREEN 0.
ABAP HANDOUT 2010
98
-Kiki Siswanto-
ENDIF.
Format SAPEvent pada Html
SAPEVENT:<variable>?<value>
Dialog programming
Dialog programming digunakan untuk program yang interaktif tapi kadang2 juga digunakan untuk report
seperti me23n. Untuk Dialog Programming yang paling utama adalah screen – minimal screen utama
yang akan ditampilkan.
Syntax untuk memanggil screen:
call [nama_screnn] biasanya di start of selection / langsung.
Dalam dialog programming ada sebuah istilah yaitu flow logic : untuk menghubungkan antara coding
dan screen.
Pada Dialog Programming juga memilik tools screen painter yang dapat digunakan untuk melakukan
desain pada screen seperti vb tapi lebih sederhana .Untuk menggunakan tools screen painter dapat
dilakukan dengan mengklik tombol layout pada screen.
Semua aktivitas /komponen yang ada di screen oleh sap ditampung dalam variable yang tipe nya ok
umumnya variable nya diberi nama ok_code.
Jadi di seluruh coding screen SAP terdapat ok_code : event yang ditangkap dari suatu screen yang aktif.
Objek di screen event nya terdapat di function code.
Save_code adalah variable yang digunakan untuk mengcopy ok_code karena ok_code bisa berubah.
Di screen terdapat tab element list. Jika diisikan Ok_code maka harus ditambahin di codingnya juga
untuk relasi.
Misalnya di element list nama nya diisi Ok_Code maka di coding harus tambahin variable :
ABAP HANDOUT 2010
99
-Kiki Siswanto-
DATA : ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm.
Siklus Hidup Screen Painter
Coding diexecute terlebih dahulu baru menjalankan PBO (kalau di VB seperti onactivate). Jadi dapat
melakukan sesuatu di PBO sebelum screen ditampilkan. Ketika screen muncul dan kemudian kita klik
tombol di screen / melakukan suatu action di screen tersebut maka setelah itu program akan
menjalankan PAI (proses after input) . Di PAI terdapat function code dan ketika di jalankan maka
ok_code akan jadi save dan begitu seterusnya.
Event Handler
Untuk menangkap event cara 1 :
module USER_COMMAND_2000 input.
if ok_code = ‘BACK’
endif.
endmodule.
ABAP HANDOUT 2010
100
-Kiki Siswanto-
Untuk menangkap event standard Sap :
module USER_COMMAND_2000 input.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
CLEAR ok_code.
endmodule.
Menuju screen awal :
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
mengaktifkan gui status dan guititle pada screen :
module STATUS_2000 output.
SET PF-STATUS 'ST_2000'.
SET TITLEBAR 'TL_2000'.
endmodule.
Langkah – Langkah Untuk membuat Dialog Programming Sederhana
1. Buka T-Code se-38
2. Tambahkan Variable global :
Data : Ok_Code LIKE sy-ucomm,
Save_Code LIKE sy-ucomm.
3. Klik tombol save.
4. Tambahkan Screen dan beri nama Screen 2000 (namanya bebas).
5. Klik Untuk menampilkan semua objek.
6. Klik kanan pada „Object tree‟, dan seleksi „Screen‟.
ABAP HANDOUT 2010
101
-Kiki Siswanto-
7. Masukkan nomor screen/screen number 2000 dan tekan tombol check.
NB : jangan masukkan nomor screen 1000 karena nanti akan bentrok dengan screen default
yang disediakan SAP. Karena pada saat kita menggunakan start of selection maka otomatis itu
akan menjadi screen 1000.
8. Isikan Deskripsi Singkat dari Screen pada tab Attributes.
9. Klik pada tab element list.
10. Isikan pada Cell yang kosong dengan “OK_Code”
ABAP HANDOUT 2010
102
-Kiki Siswanto-
11. Klik pada tab Flow Logic.
12. Tulis Kode Syntax seperti berikut :
PROCESS BEFORE OUTPUT.
MODULE STATUS_2000.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_2000.
13. Klik tombol save.
14. Double Klik pada teks Status 2000.
15. Klik tombol yes.
16. Pilih salah satu dan klik tombol check untuk membuat modul baru STATUS_2000.
17. Secara otomatis kode sintax ditulis oleh SAP.
Module STATUS_2000 output.
ABAP HANDOUT 2010
103
-Kiki Siswanto-
SET PF-STATUS ‘xxxxxxx’.
SET TITLEBAR ‘xxx’.
Endmodule.
18. Double Klik pada Untuk membuka screen 2000.
19. Klik pada tab flow logic.
20. Double Klik pada text User_Command_2000.
21. Klik tombol yes.
22. Pilih salah satu dan klik tombol check untuk membuat modul baru USER_COMMAND_2000.
23. Secara otomatis kode sintax ditulis oleh SAP.
Module USER_COMMAND_2000 output.
Endmodule.
24. Klik Save.
25. Tambahkan GUI Status Baru Untuk Screen 2000.
26. Isi Status dengan ST_2000.
ABAP HANDOUT 2010
104
-Kiki Siswanto-
27. Klik tombol check.
28. Modifikasi Modul Status 2000 Output.
module STATUS_2000 output.
SET PF-STATUS 'ST_2000'. “PF Status sesuai dengan Gui status yang dibuat.
endmodule.
29. Tambahkan GUI Title Untuk Screen.
30. Klik kanan pada Object tree.
31. Isilah title code dan title sesuai dengan yang diinginkan.
ABAP HANDOUT 2010
105
-Kiki Siswanto-
32. Klik tombol check.
33. Klik tombol save.
34. Modifikasi modul Status Output.
module STATUS_2000 output.
SET PF-STATUS 'ST_2000'.
SET TITLEBAR 'TL_2000'.
endmodule.
35. Modifikasi User_Command_2000_Input.
MODULE user_command_2000 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
CLEAR ok_code.
ENDMODULE.
36. Tambahkan kode Syntax untuk mengatur screen awal yang ditampilkan.
Call screen 2000.
37. Klik tombol save dan activate program.
Langkah – Langkah Untuk membuat Dialog Programming Dengan Screen
Painter
1. Buka Se38.
2. Lakukan langkah di atas untuk membuat screen.
3. Klik Display Object List (Shift+Ctrl+F5)
ABAP HANDOUT 2010
106
-Kiki Siswanto-
4. Double klik ada tree menu Screen 2000.
5. Klik tombol untuk memulai layout desain.
6. Klik dan kemudian klik di layar. (label)
7. Atur nama label (misalnya gv_label) dan text.
8. Klik dan kemudian klik di layar. (textbox)
9. Atur nama textbox (misalnya gv_text) dan length
10. Klik dan kemudian klik di layar .(button)
11. Atur nama Button (misalnya Gv_button) dan text.
12. Klik ganda pada dan atur function code (misalnya change).
Function code adalah code sebagai penanda button tersebut di klik (seperti id).
13. Setelah itu tombol akan berubah warna menjadi abu-abu.
14. Klik save.
ABAP HANDOUT 2010
107
-Kiki Siswanto-
15. Edit module user_command untuk mengatur event dari tombol-tombol di screen.
MODULE user_command_2000 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'CHANGE'. “Didapat dari function code
IF gv_text = 'TextBox'.
gv_text = 'www.sap-interface.com'.
ELSE.
gv_text = 'TextBox'.
ENDIF.
WHEN OTHERS.
ENDCASE.
CLEAR ok_code.
ENDMODULE.
16. Aktivate program.
Langkah – Langkah Untuk membuat Dialog Programming Untuk Menampilkan
Tabel Dengan Screen Painter.
1. Buka Se38.
2. Lakukan langkah di atas untuk membuat screen.
3. Klik Display Object List (Shift+Ctrl+F5)
4. Double klik ada tree menu Screen 2000.
5. Klik tombol untuk memulai layout desain.
6. Klik tombol kemudian dragke screen painter.
7. Setelah itu, Table Control wizard akan dieksekusi.
ABAP HANDOUT 2010
108
-Kiki Siswanto-
8. Klik .
9. Seleksi internal tabel atau dictionary tabel. Jika internal tabel maka isi lah field sesuai
dengan nama tabel yang sudah dideklarasikan di program. Jika dictionary tabel maka isilah
field dengan nama tabel yang diinginkan yang ada pada dictionary.
10. Seleksi field yang ingin ditampilkan dan kemudian klik continue.
ABAP HANDOUT 2010
109
-Kiki Siswanto-
11. Pilihlah option – option yang diinginkan.
12. Ceklist Scroll dan kemudian klik continue.
ABAP HANDOUT 2010
110
-Kiki Siswanto-
13. Isilah Semua textbox dan klik continue.
ABAP HANDOUT 2010
111
-Kiki Siswanto-
14. Hasil dari wizard diatas adalah sbb :
15. Klik save untuk menyimpan screen dan tutup screen painter.
16. Kembali ke code sintak.
Langkah – Langkah Untuk menghapus field tabel pada dialog programming.
1. Buka layar screen painter.
2. Arahkan kursor pada field yang ingin dihapus.
3. Klik kanan pada field tersebut.
ABAP HANDOUT 2010
112
-Kiki Siswanto-
4. Klik delete dan tekan yes untuk konfirmasi.
ABAP HANDOUT 2010
113
-Kiki Siswanto-
Langkah – Langkah Untuk menambah field tabel pada dialog programming.
1. Buka layar screen painter.
2. Klik tombol Dictionary / Program field window F6.
3. Pilihlah nama tabel asal yang ingin digunakan fieldnya untuk dimasukkan pada tabel yang
ada di screen painter. Dan klik tombol Get From Dict. Atau Get From Program.
ABAP HANDOUT 2010
114
-Kiki Siswanto-
4. Pilih field yang diinginkan dan kemudian tekan tombol check.
5. Pilih tempat dimana field baru akan ditempatkan.
ABAP HANDOUT 2010
115
-Kiki Siswanto-
6. Field baru telah ter- insert.
ABAP HANDOUT 2010
116
-Kiki Siswanto-
7. Beri header pada field baru tersebut dengan menggunakan label / komponen berlambang
.
8. Ubah agar field tersebut hanya untuk ouput tidak untuk di edit.
Cara nya double klik pada field tersebut. Lalu muncul attribute dari field tersebut. Lalu pada
tab Program cek option output only.
ABAP HANDOUT 2010
117
-Kiki Siswanto-
GUI Status
Menu – Menu pada GUI Status
Menubar : Menu yang paling atas seperti list , goto, dll.
Application toolbar : toolbar-toolbar yang terletak di bawah standard toolbar seperti select all, sort , dll.
Standard Toolbar : toolbar-toolbar yang terletak di antara menubar dan application toolbar seperi back,
exit , dll.
MenuBar Standard Toolbar Application Toolbar
Kalau di standard toolbar kalau kita tulis back otomatis Function Code nya jadi back.
Function key – buat short cut : standard toolbar uda punya standard shortcut sendiri.
ABAP HANDOUT 2010
118
-Kiki Siswanto-
Membuat Button Pada Gui Status
Langkah – Langkah untuk membuat button pada Gui Status :
1. Ketikkan nama Function yang ingin dibuat. Nama Function Insert new entry
2. Pilih Static Text
ABAP HANDOUT 2010
119
-Kiki Siswanto-
3. Isilah function name, icon name (untuk menambahkan icon), dan info teks.
4. Klik tombol check dan setelah itu pilih shortcut untuk tombol yang ingin dibuat.
ABAP HANDOUT 2010
120
-Kiki Siswanto-
5. Isilah field – field sesuai dengan kebutuhan.
6. Klik tombol check.
7. Save dan activate.
NB : Info text yang ditulis sebelumnya akan menjadi hint nya.
ABAP HANDOUT 2010
121
-Kiki Siswanto-
Tambahan
Deletion Indicator
Hampir semua transaksi di sap yang tercatat di tabel memiliki field yang digunakan deletion indicator
yang diberi nama Loeks . Jika field Loeks berisi (‘X’) maka record yang dimaksud berarti sudah di delete.
Kalau delete biasanya tidak dilakukan secara fisik jadi datanya masih ada di database hanya ada field
yang digunakan untuk menandakannya yaitu Loeks - > Deletion indicator
Tabel Customizing
Tabel yang namanya diawali dengan huruf T adalah tabel customizing. Sehingga untuk mengisi datanya
dilakukan dari t-code SPRO. Tabel Customizing ini memiliki pasangan tabel yang diberi nama tabel
description. Nama tabel description ini sama dengan nama tabel customizing nya akan tetapi diakhiri
dengan huruf T. Jika kita menjalankan tabel customizing ini dan tidak ada keterangnannya maka
keterangannya akan diambil dari tabel description.
Contoh : T023 - > tabel customizing.
T023T - > tabel description
Jadi ketika di se 16 kalau kita membuka tabel T023 maka se16 secara otomatis membuka tabel
descriptionnya. Contohnya field WGBEZ.
Transaction Code
Untuk membuat transaction code dapat dilakukan dengan cara :
1. Buka t-code Se93.
2. Isikan nama kode transaksi.
3. Kemudian klik create.
4. Isi short text
ABAP HANDOUT 2010
122
-Kiki Siswanto-
NB : "Program and screen" untuk abap program dengan teknik Dialog Programming
"Program and selection screen" untuk abap program dengan teknik ABAP Report
(Selection Screen).
5. Klik tombol check.
6. Isi nama program dengan nomor screen. Jika punya otoraisasi objek, maka isilah.
7. Klik tombol save dan keluar.
8. Coba jalankan transaksi dan selesai.
ABAP HANDOUT 2010
123
-Kiki Siswanto-
Fungsi untuk Print
Call method cc_report_display->execwb
Exporting
Cmd_id = 7
Cmd_opt = 1.
Fungsi Untuk Save
Call method cc_report_display->execwb
Exporting
Cmd_id = 4.
Write – to
Write jenis ini digunakan untuk menuliskan field-field yang memiliki pasangan seperti currency ataupun
unit agar tidak terjadi kesalahan. Jadi tidak boleh langsung sebaiknya ditampung dulu dalam satu
variable.
Contoh :
Data : k(25).
write gi_detail-netpr To k Currency gi_detail-waerk.
ABAP HANDOUT 2010
124
-Kiki Siswanto-
Day 6
Latihan – Latihan
Soal 1 : Membuat Input dari Halaman Html dan Menampilkannya dengan Dialog Programming.
Input :
OutpuT
Langkah – Langkah Untuk Membuat Program di atas (code – code yang harus ditambahkan):
1. Buat Include yang berisi class yang berfungsi untuk menangkap action yang dilakukan oleh
halaman HTML.
ABAP HANDOUT 2010
125
-Kiki Siswanto-
Include nya berisi sebagai berikut :
Deklarasi Data
DATA : gv_html_event_tab TYPE cntl_simple_events,
gv_html_event TYPE cntl_simple_event,
gv_repid LIKE sy-repid,
gv_frame(255),
gv_action(256),
gv_getdata(2048),
gv_postdataline(1024),
gi_postdata_tab TYPE cnht_post_data_tab,
gi_query_table TYPE TABLE OF w3query WITH HEADER LINE.
DATA: gv_evt_receiver TYPE REF TO cl_html_event_handler.
Class Untuk event Handler Html
CLASS cl_html_event_handler DEFINITION.
PUBLIC SECTION.
METHODS: on_sapevent
FOR EVENT sapevent OF cl_gui_html_viewer
IMPORTING action frame getdata postdata query_table.
ENDCLASS.
Class Untuk menangkap action yang dilakukan dan melakukan event yang
diiginkan.
CLASS cl_html_event_handler IMPLEMENTATION.
METHOD on_sapevent.
CLEAR gv_action.
CLEAR gv_frame.
CLEAR gv_getdata.
CLEAR gv_postdataline.
gv_action = action.
gv_frame = frame.
gv_getdata = getdata.
ABAP HANDOUT 2010
126
-Kiki Siswanto-
gi_postdata_tab = postdata.
IF NOT gi_postdata_tab IS INITIAL.
READ TABLE gi_postdata_tab INDEX 1 INTO gv_postdataline.
ENDIF.
gi_query_table[] = query_table[].
CASE action.
WHEN 'SUBMIT_PARAMETER'. “ Action Submit Parameter
PERFORM fm_get_input TABLES gi_query_table USING gv_matkl.
PERFORM fm_collect_data.
PERFORM fm_process_data.
PERFORM fm_display_data.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
ENDCLASS.
Fungsi Untuk Mengambil isi / value yang diterima dari parameter.
FORM fm_get_input TABLES ft_query_table STRUCTURE w3query USING ld_matkl.
IF LINES( ft_query_table ) > 0 AND gv_action = 'SUBMIT_PARAMETER'.
READ TABLE ft_query_table WITH KEY name = 'GV_MATKL'.
IF sy-subrc = 0.
ld_matkl = ft_query_table-value.
TRANSLATE ld_matkl TO UPPER CASE.
ENDIF.
ENDIF.
ENDFORM.
2. Buat 2 Screen baru untuk menampilkan halaman Html dan Halaman Dialog
Programming.
3. Buat Gui Status dan Gui Title.
4. Pada Screen yang berfungsi untuk menampilkan halaman html, tambahkan
coding di bawah ini pada PBO Module Screen Output. Coding di bawah ini
berfungsi untuk meregister event pada halaman html agar bisa ditangkap
actionnya.
ABAP HANDOUT 2010
127
-Kiki Siswanto-
IF NOT CC_REPORT_DISPLAY IS INITIAL.
GV_HTML_EVENT-EVENTID = CC_REPORT_DISPLAY->M_ID_SAPEVENT.
GV_HTML_EVENT-APPL_EVENT = 'x'.
APPEND GV_HTML_EVENT TO GV_HTML_EVENT_TAB.
CALL METHOD CC_REPORT_DISPLAY->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = GV_HTML_EVENT_TAB.
CREATE OBJECT GV_EVT_RECEIVER.
SET HANDLER GV_EVT_RECEIVER->ON_SAPEVENT
FOR CC_REPORT_DISPLAY.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
5. Pada Program Utama Tambahkan Syntax – Syntax di bawah ini :
Deklarasi Variable dan Tabel
TYPES: BEGIN OF TY_HEADER,
MATKL LIKE MARA-MATKL,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
BISMT LIKE MARA-BISMT,
MEINS LIKE MARA-MEINS,
MSEHT LIKE T006A-MSEHT,
CEK,
END OF TY_HEADER.
DATA: GI_HEADER TYPE STANDARD TABLE OF TY_HEADER WITH HEADER LINE,
GI_MAKT LIKE STANDARD TABLE OF MAKT WITH HEADER LINE,
GI_T006A LIKE STANDARD TABLE OF T006A WITH HEADER LINE.
DATA: GV_MATKL LIKE MARA-MATKL.
DATA : OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM.
DATA : GV_MESSAGE1(100),
GV_MESSAGE2(100).
ABAP HANDOUT 2010
128
-Kiki Siswanto-
Deklarasi yang harus ditulis untuk menggunakan Syntax Html
TYPES: BEGIN OF GY_HTML_CODE,
LINE_CODE(1000),
END OF GY_HTML_CODE.
DATA: GI_HTML_CODE TYPE TABLE OF GY_HTML_CODE WITH HEADER LINE.
DATA: CC_REPORT_DISPLAY TYPE REF TO CL_GUI_HTML_VIEWER,
WEB_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : P_FNAME LIKE RLGRAP-FILENAME VALUE 'H:\abap_report_01.html'.
DEFINE WRITE_CODE1.
CLEAR GI_HTML_CODE.
GI_HTML_CODE-LINE_CODE = &1.
APPEND GI_HTML_CODE.
END-OF-DEFINITION.
DEFINE WRITE_CODE2.
CLEAR GI_HTML_CODE.
CONCATENATE &1 &2 INTO GI_HTML_CODE-LINE_CODE.
APPEND GI_HTML_CODE.
END-OF-DEFINITION.
DEFINE WRITE_CODE3.
CLEAR GI_HTML_CODE.
CONCATENATE &1 &2 &3 INTO GI_HTML_CODE-LINE_CODE.
APPEND GI_HTML_CODE.
END-OF-DEFINITION.
Initialization
ABAP HANDOUT 2010
129
-Kiki Siswanto-
INITIALIZATION.
INCLUDE ZIN04_302_HTML.
INCLUDE ZT04_LATIHAN12_HEAD .
START-OF-SELECTION
Coding di bawah ini digunakan untuk menampilkan halaman Html yang akan
ditampilkan.
Potongan code action=”SAPEVENT”:SUBMIT_PARAMETER” menandakan nama action
yang akan dijalankan ketika tombol submit diklik.
START-OF-SELECTION.
PERFORM FM_INITIALIZATION.
WRITE_CODE1 : '<form name="form1" method="post" action="SAPEVENT:SUBMIT
_PARAMETER">'.
WRITE_CODE1 : '<strong>Mat Group: </strong>'.
WRITE_CODE1 : '<input type="text" name="GV_MATKL" id="GV_MATKL" />'.
WRITE_CODE1 : '<input type="submit" name="Submit" value="Display" />'.
WRITE_CODE1 : '</form>'.
PERFORM FM_CREATE_HTML_FILE TABLES GI_HTML_CODE USING P_FNAME.
PERFORM FM_LOAD_HTML USING P_FNAME.
CALL SCREEN 2000.
END-OF-SELECTION.
Form Initialization : digunakan untuk inisialisasi halaman Html
FORM FM_INITIALIZATION.
IF CC_REPORT_DISPLAY IS INITIAL.
CREATE OBJECT WEB_CONTAINER
EXPORTING
CONTAINER_NAME = 'CC_REPORT_DISPLAY'.
CREATE OBJECT CC_REPORT_DISPLAY
EXPORTING
PARENT = WEB_CONTAINER.
IF SY-SUBRC NE 0.
ENDIF.
ENDIF.
ENDFORM.
ABAP HANDOUT 2010
130
-Kiki Siswanto-
Form Untuk membuat file .html yang nantinya akan di load untuk
ditampilkan
FORM FM_CREATE_HTML_FILE TABLES FI_FILE STRUCTURE GI_HTML_CODE USING FV
_URL.
CONDENSE FV_URL NO-GAPS.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FV_URL
FILETYPE = 'ASC'
TABLES
DATA_TAB = FI_FILE
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
ENDFORM.
Form Untuk meload file .html untuk ditampilkan.
FORM FM_LOAD_HTML USING FV_URL.
CALL METHOD CC_REPORT_DISPLAY->SHOW_URL
EXPORTING
URL = FV_URL.
ENDFORM.
6. Tambahkan Form – Form untuk collect data, proses data, dan display data
ABAP HANDOUT 2010
131
-Kiki Siswanto-
Soal 2 : Membuat input dari ABAP (Select Options) dan Menampilkannya dalam bentuk HTML.
Input :
Output :
ABAP HANDOUT 2010
132
-Kiki Siswanto-
Langkah – Langkah Untuk Membuat Program di atas (code – code yang harus ditambahkan):
1. Buat Screen yang digunakan untuk menampilkan halaman html.
2. Buat Gui Status dan Gui Title nya.
3. Tambahkan Code – code pada program utama
Deklarasi
TABLES : vbak, vbap.
TYPES: BEGIN OF ty_detail,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
arktx LIKE vbap-arktx,
zmeng LIKE vbap-zmeng,
zieme LIKE vbap-zieme,
netpr LIKE vbap-netpr,
waerk LIKE vbap-waerk,
END OF ty_detail.
ABAP HANDOUT 2010
133
-Kiki Siswanto-
TYPES : BEGIN OF ty_header,
vbeln LIKE vbak-vbeln,
kunnr LIKE vbak-kunnr,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
END OF ty_header.
DATA : gi_header TYPE STANDARD TABLE OF ty_header WITH HEADER LINE,
gi_detail TYPE STANDARD TABLE OF ty_detail WITH HEADER LINE.
DATA : ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm.
Deklarasi Untuk Html
TYPES: BEGIN OF gy_html_code,
line_code(1000),
END OF gy_html_code.
DATA: gi_html_code TYPE TABLE OF gy_html_code WITH HEADER LINE.
DATA: cc_report_display TYPE REF TO cl_gui_html_viewer,
web_container TYPE REF TO cl_gui_custom_container.
DATA : p_fname LIKE rlgrap-filename VALUE 'H:\abap_report_01.html'.
DEFINE write_code1.
clear gi_html_code.
gi_html_code-line_code = &1.
append gi_html_code.
END-OF-DEFINITION.
DEFINE write_code2.
ABAP HANDOUT 2010
134
-Kiki Siswanto-
clear gi_html_code.
concatenate &1 &2 into gi_html_code-line_code.
append gi_html_code.
END-OF-DEFINITION.
DEFINE write_code3.
clear gi_html_code.
concatenate &1 &2 &3 into gi_html_code-line_code.
append gi_html_code.
END-OF-DEFINITION.
Code untuk input
SELECT-OPTIONS : gv_vbeln FOR vbak-vbeln.
SELECT-OPTIONS : gv_kunnr FOR vbak-kunnr.
Initialization
INITIALIZATION.
PERFORM fm_initialization.
Start Of Selection
START-OF-SELECTION.
PERFORM fm_collect_data.
PERFORM fm_display_data.
END-OF-SELECTION.
Form Initialization : digunakan untuk inisialisasi halaman Html
FORM fm_initialization.
IF cc_report_display IS INITIAL.
CREATE OBJECT web_container
EXPORTING
ABAP HANDOUT 2010
135
-Kiki Siswanto-
container_name = 'CC_REPORT_DISPLAY'.
CREATE OBJECT cc_report_display
EXPORTING
parent = web_container.
IF sy-subrc NE 0.
ENDIF.
ENDIF.
ENDFORM.
Form Collect Data
SELECT vbeln kunnr vkorg vtweg spart
INTO TABLE gi_header
FROM vbak
WHERE
vbeln IN gv_vbeln AND
kunnr IN gv_kunnr.
IF LINES( gi_header ) > 0.
SELECT vbeln posnr matnr arktx zmeng zieme netpr waerk
INTO CORRESPONDING FIELDS OF TABLE gi_detail
FROM vbap
FOR ALL ENTRIES IN gi_header
WHERE
vbeln = gi_header-vbeln.
ENDIF.
Form Process_Data
LOOP AT gi_header.
READ TABLE gi_detail WITH KEY vbeln = gi_header-vbeln.
IF sy-subrc = 0.
gi_header-vbeln = gi_detail-vbeln.
ENDIF.
MODIFY gi_header.
ENDLOOP.
ABAP HANDOUT 2010
136
-Kiki Siswanto-
Form Display Data digunakan untuk menampilkan output dalam bentuk html
DATA : tampung(25) TYPE c,
lv_selisih TYPE i.
REFRESH gi_html_code.
PERFORM fm_create_css.
write_code1 '<body>'.
LOOP AT gi_header.
write_code1 '<table width="100%" border="0" cellspacing="2" cellpad
ding="0">'.
write_code1 ' <tr bgcolor="#999999" class="styleHeader">'.
write_code1 ' <td>Sales Doc.Num</td>'.
write_code1 ' <td>Sold to Party</td>'.
write_code1 ' <td>Sales Org</td>'.
write_code1 ' <td>Dist. Channel</td>'.
write_code1 ' <td>Division</td>'.
write_code1 ' </tr>'.
write_code1 ' <tr bgcolor="#CCCFFF">'.
write_code3 ' <td class="style1">' gi_header-vbeln '</td>'.
write_code3 ' <td class="style1">' gi_header-kunnr '</td>'.
write_code3 ' <td class="style2">' gi_header-vkorg '</td>'.
write_code3 ' <td class="style2">' gi_header-vtweg '</td>'.
write_code3 ' <td class="style1">' gi_header-spart '</td>'.
write_code1 ' </tr>'.
write_code1 ' <tr bgcolor="Orange" class="styleHeader">'.
write_code1 ' <td bgcolor="white"></td>'.
write_code1 ' <td>Sales Doc.Item</td>'.
write_code1 ' <td>Mat Number</td>'.
write_code1 ' <td>Sort Text</td>'.
write_code1 ' <td>Quantity</td>'.
write_code1 ' <td>Uom</td>'.
write_code1 ' <td>Price</td>'.
write_code1 ' <td>Curr</td>'.
write_code1 ' </tr>'.
ABAP HANDOUT 2010
137
-Kiki Siswanto-
LOOP AT gi_detail WHERE vbeln = gi_header-vbeln.
write_code1 ' <tr bgcolor="#FFFCCC">'.
write_code1 ' <td bgcolor="white"></td>'.
write_code3 ' <td class="style1">' gi_detail-posnr '</td>'.
write_code3 ' <td class="style1">' gi_detail-matnr '</td>'.
write_code3 ' <td class="style2">' gi_detail-arktx '</td>'.
WRITE gi_detail-zmeng TO tampung UNIT gi_detail-zieme.
write_code3 ' <td class="style2">' tampung '</td>'.
write_code3 ' <td class="style1">' gi_detail-zieme '</td>'.
WRITE gi_detail-netpr TO tampung CURRENCY gi_detail-waerk.
write_code3 ' <td class="style2">' tampung '</td>'.
write_code3 ' <td class="style2">' gi_detail-waerk '</td>'.
write_code1 ' </tr>'.
ENDLOOP.
write_code1 '<br/>'.
write_code1 '</table>'.
ENDLOOP.
write_code1 '</body>'.
PERFORM fm_create_html_file TABLES gi_html_code USING p_fname.
PERFORM fm_load_html USING p_fname.
CALL SCREEN 2000.
Form Create Html digunakan untuk membuat file .html
FORM fm_create_html_file TABLES fi_file STRUCTURE gi_html_code USING fv
_url.
CONDENSE fv_url NO-GAPS.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = fv_url
filetype = 'ASC'
ABAP HANDOUT 2010
138
-Kiki Siswanto-
TABLES
data_tab = fi_file
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
ENDFORM.
Form Load Html Digunakan untuk meload file .html untuk ditampilkan
FORM fm_load_html USING fv_url.
CALL METHOD cc_report_display->show_url
EXPORTING
url = fv_url.
ENDFORM.
Soal 3 : Membuat Report Dengan Menggunakan ALV Grid lalu menampilkan detail dari record yang
dipilih menggunakan Dialog Programming.
Input :
ABAP HANDOUT 2010
139
-Kiki Siswanto-
Output Alv Grid :
Output Dialog Programming - > tabel Control
ABAP HANDOUT 2010
140
-Kiki Siswanto-
Langkah – Langkah Untuk Membuat Program di atas (code – code yang harus ditambahkan):
1. Masukkan include yang berfungsi sebagai template ALV grid.
2. Tambahkan code untuk deklarasi, tambahkan cek agar record dapat deselect.
TYPES: BEGIN OF TY_HEADER,
BSART LIKE EKKO-BSART,
EBELN LIKE EKKO-EBELN,
BUKRS LIKE EKKO-BUKRS,
LIFNR LIKE EKKO-LIFNR,
CEK,
END OF TY_HEADER.
TYPES: BEGIN OF TY_DETAIL,
ABAP HANDOUT 2010
141
-Kiki Siswanto-
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
TXZ01 LIKE EKPO-TXZ01,
MENGE LIKE EKPO-MENGE,
END OF TY_DETAIL.
DATA : GI_HEADER TYPE STANDARD TABLE OF TY_HEADER WITH HEADER
LINE,
GI_DETAIL TYPE STANDARD TABLE OF TY_DETAIL WITH HEADER LINE.
DATA: GW_PRI_PARAMS TYPE PRI_PARAMS,
GV_VALID TYPE C.
DATA : OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM.
DATA: GV_WIDTH TYPE I.
3. Untuk membuat input :
Select Options
SELECTION-SCREEN BEGIN OF BLOCK GROUPBOX1 WITH FRAME TITLE
TEXT_101. "Declare Group Box 1
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) TEXT_102 FOR FIELD SO_BSART.
SELECT-OPTIONS SO_BSART FOR EKKO-BSART.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) TEXT_103 FOR FIELD SO_EBELN.
SELECT-OPTIONS SO_EBELN FOR EKKO-EBELN.
SELECTION-SCREEN END OF LINE.
ABAP HANDOUT 2010
142
-Kiki Siswanto-
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) TEXT_104 FOR FIELD SO_BUKRS.
SELECT-OPTIONS SO_BUKRS FOR EKKO-BUKRS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK GROUPBOX1.
INITIALIZATION.
TEXT_101 = 'Selection Parameter'.
TEXT_102 = 'Order Type'.
TEXT_103 = 'PO Number'.
TEXT_104 = 'Co Code'.
4. Untuk membuat Output dengan tampilan Grid.
Start Of Selection
START-OF-SELECTION.
FORMAT RESET.
PERFORM FM_COLLECT_DATA.
PERFORM FM_PROCESS_DATA.
PERFORM FM_displAY_DATA.
END-OF-SELECTION.
Form Display Data Untuk menampilkan dalam bentuk ALV Grid setelah data di
collect dan diproses.
FORM FM_DISPLAY_DATA.
PERFORM FM_ALV_RESET_DATA.
PERFORM FM_ALV_SET_LAYOUT USING 'Display List of Master Material'.
ABAP HANDOUT 2010
143
-Kiki Siswanto-
PERFORM FM_ALV_SET_PRINT.
PERFORM FM_ALV_SET_COLUMN.
GV_I_DEFAULT = 'X'.
GV_I_SAVE = 'A'.
PERFORM FM_ALV_SHOW TABLES GI_HEADER.
ENDFORM.
Form Set Column untuk mengatur tampilan field pada ALV Grid
FORM FM_ALV_SET_COLUMN.
PERFORM FM_ALV_ADD_FIELDCAT USING :
'BSART' 'EKKO' 'BSART' '' '' 'TYPE' '' '' '' '' '' 'X' '' '' '' '' '' '' '' 'X' 'X',
'EBELN' 'EKKO' 'EBELN' '' '' 'PURCHASE DOC.' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'BUKRS' 'EKKO' 'BUKRS' '' '' 'CoCd' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',
'LIFNR' 'EKKO' 'LIFNR' '' '' 'VENDOR' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.
ENDFORM.
5. Untuk membuat output display pada dialog programming, buat terlebih dahulu button
untuk melakukan event yang diinginkan.
Pada fm_alv_user_command tambahkan action untuk button yang sudah dibuat.
FORM fm_alv_user_command USING fu_ucomm LIKE sy-ucomm
fu_selfield TYPE slis_selfield.
DATA: lt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE,
lv_ok_code LIKE sy-ucomm.
MOVE fu_ucomm TO lv_ok_code.
CASE lv_ok_code.
ABAP HANDOUT 2010
144
-Kiki Siswanto-
WHEN '&VIEW'.
PERFORM FM_VIEW_DETAIL.
ENDCASE.
MOVE 'X' TO fu_selfield-refresh.
ENDFORM.
Buat Fungsi fm_view_detail Untuk menampilkan data pada dialog programming
FORM FM_VIEW_DETAIL.
DATA : LI_HEADER LIKE STANDARD TABLE OF GI_HEADER WITH HEADER
LINE.
LI_HEADER[] = GI_HEADER[].
READ TABLE LI_HEADER WITH KEY EBELN = GI_HEADER-EBELN
BINARY SEARCH.
DELETE LI_HEADER WHERE NOT CEK = 'X'.
IF LINES( LI_HEADER ) > 0." For SAP 4.7 above
SELECT EBELN EBELP MATNR TXZ01 MENGE
INTO CORRESPONDING FIELDS OF TABLE GI_DETAIL
FROM EKPO
FOR ALL ENTRIES IN LI_HEADER
WHERE
EBELN = LI_HEADER-EBELN.
ENDIF.
CALL SCREEN 2000.
ENDFORM.
ABAP HANDOUT 2010
145
-Kiki Siswanto-
DAY 7
LUW – Logical Unit Of Work.
Dalam Logical Unit of Work terdiri dari perubahan yang dilakukan sampai status database
"Tertutup" (DB Commit). LUW memungkinkan untuk mengembalikan database yang telah
dirubah, jika terjadi kesalahan atau error pada saat proses, tetapi jika proses telah berhasil atau
DB Commit, tidak mungkin lagi untuk mengembalikan database kembali atau rollback.
Teknik yang digunakan di Abap dalam syntax Sql adalah : Teknik Open Sql.
Open Sql dan Native SQL
Native :
1. Tidak mendukung LUW (Tidak ada Rollback).
2. Kalau Database nya berubah maka ABAPer harus mengubah lagi codingnya.
3. Dapat connect dengan CB selain Database Sap nya.
Open Sql :
1. Mendukung LUW
2. Kalau Database nya berubah maka codingnya tidak perlu dirubah.
3. Tidak dapat connect dengan Database selain Database Sap nya.
DBCO - T-Code untuk mengatur Connector Sap.
- Kalau ada kebutuhan di luar Database yang disediakan maka harus mencari service yang
dibutuhkan atau menghubungi Basis.
- Dapat jalan di Background
Insert Ada 2 Teknik :
ABAP HANDOUT 2010
146
-Kiki Siswanto-
Single Insert.
Memasukkan 1 row 1 row : Bisa langsung define Valuenya atau Bisa menggunakan work
area (lebih baik pake work area agar types nya sama).
Dapat digunakan apabila Data yang diinsert sangat banyak dan system rollback nya kita
sendiri yang mengatur . Keuntungan dari teknik ini adalah kita dapat mengontrol data
yang berhasil masuk dan data yang gagal masuk. Jadi data yang gagal dapat dipindahkan
ke lock. Bisa menggunakan LUW.
Contoh :
LOOP AT gi_angka.
MOVE-CORRESPONDING gi_angka to gw_angka.
INSERT INTO ZTMP02_ANGKA VALUES gw_angka.
IF sy-subrc = 0.
WRITE : / gw_angka-angka, '(Sukses)'.
ELSE.
WRITE : / gw_angka-angka, '(Gagal)'.
ENDIF.
ENDLOOP.
Jadi kalau 1 gagal tidak mempengaruhi yang lain tapi bisa juga jika 1 gagal maka yang
sudah berhasil bisa digagalkan semua.
Tapi kelemahannya adalah lambat karena IO nya tinggi.
Multiple Insert
Langsung dari tabel i_tab nya.
Keunggulan nya adalah lebih cepat daripada Single insert karena IO nya kecil karena
pada saat sekali insert maka melakukan 1 x ping. Jika ada satu saja yang gagal maka yang
ABAP HANDOUT 2010
147
-Kiki Siswanto-
lain akan digagalkan semua. Kelemahan dari multiple insert ini adalah kita tidak bisa
mengontrol proses nya (LUW). Biasanya untuk table yang berkaitan seperti header dan
detail.
Contoh :
LOOP AT gi_angka.
MOVE-CORRESPONDING gi_angka to gw_angka.
INSERT INTO ZTMP02_ANGKA VALUES gw_angka.
IF sy-subrc = 0.
WRITE : / gw_angka-angka, '(Sukses)'.
COMMIT WORK.
ELSE.
WRITE : / gw_angka-angka, '(Gagal)'.
ROLLBACK WORK.
EXIT.
ENDIF.
ENDLOOP.
Gambaran kerangka kerja Insert
Insert - > disimpan dulu di buffer yang ada di DB Server.
Kalau sudah keluar dari Blok coding maka akan commit otomatis dan apabila status nya
sudah commit maka buffer di DB Server akan melakukan insert yang native. Insert yang
native akan membuat database fisik.
Update 1. Spesifik Field (Spesifik selain Primary Key)
Where : kondisi
Client Specified : spesifikasi client.
Connection : untuk mengubah database yang ada di server lain mengatur koneksinya
di sm59.
ABAP HANDOUT 2010
148
-Kiki Siswanto-
2. Single.
3. Multiple.
Modify data yang dimaksud tidak tersedia akan melakukan insert -> sebaiknya dihindari.
Contoh single update:
LOOP AT gi_angka.
MOVE-CORRESPONDING gi_angka to gw_angka.
INSERT INTO ZTMP02_ANGKA VALUES gw_angka.
IF sy-subrc = 0.
WRITE : / gw_angka-angka, '(Sukses)'.
COMMIT WORK.
ELSE.
WRITE : / gw_angka-angka, '(Gagal)'.
ROLLBACK WORK.
EXIT.
ENDIF.
ENDLOOP.
Contoh multiple update:
TRY .
INSERT ZTMP02_ANGKA FROM TABLE gi_angka.
WRITE : / 'Sukses'.
CATCH CX_SY_OPEN_SQL_DB.
WRITE : / 'Gagal'.
ROLLBACK WORK.
ENDTRY.
Contoh specific field :
LOOP AT gi_angka.
lv_count = lv_count + 1.
ABAP HANDOUT 2010
149
-Kiki Siswanto-
CONCATENATE p_desc lv_count INTO gi_angka-deskripsi.
UPDATE ZTMP02_ANGKA SET Deskripsi = gi_angka
deskripsi WHERE angka = gi_angka-angka.
IF sy-subrc = 0.
WRITE : / gi_angka-angka , '(Sukses)'.
ELSE.
WRITE : / gi_angka-angka, '(Gagal)'.
ENDIF.
ENDLOOP.
Delete
Contoh Single Delete :
LOOP AT gi_angka INTO gw_angka.
DELETE ZTMP02_ANGKA FROM gw_angka.
IF sy-subrc = 0.
WRITE : / gw_angka-angka, '(Sukses)'.
ELSE.
WRITE : / gw_angka-angka, '(Gagal)'.
ENDIF.
ENDLOOP.
Contoh Multiple Delete :
DELETE ZTMP02_ANGKA FROM TABLE gi_angka.
IF sy-subrc = 0.
WRITE : / gw_angka-angka, '(Sukses)'.
ELSE.
WRITE : / gw_angka-angka, '(Gagal)'.
ENDIF.
ABAP HANDOUT 2010
150
-Kiki Siswanto-
Lock
Locking dapat dibuat pada tcode se11 yang dapat digunakan untuk mengaktifkan locking pada
sebuah object.
Locking ada 2 jenis :
1. Enqueue : dilakukan untuk mengunci suatu tabel atau object agar tidak bisa di update /
delete bahkan tidak dapat didisplay. Locking object tergantung dibuat berdasarkan
primary key (pk). Untuk locking yang sederhana tidak bisa lock yang bukan primary key.
2. Dequeue : dilakukan untuk membuka lock pada suatu object atau tabel.
Langkah – langkah untuk membuat locking object / tabel
1. Buka SE11, kemudian pilih Lock Object, penamaan untuk Lock Object hanya diawali
dengan huruf "E".
ABAP HANDOUT 2010
151
-Kiki Siswanto-
2. Klik Create, lengkapi description
Allow RFC : maka RFC bisa memanggil function untuk locking jadi dapat melakukan
locking dari luar sap. Dapat melakukan lock dari interface (vb,dll)
3. Klik tab tables dan Pilih Primary Table, masukkan nama table dan Lock modenya, "E, X
atau S"
Exclusive, cumulative : locking bisa ditambahkan
Non Cumulative : harus lepas lock yang sudah ada baru bisa ditambahkan.
4. Pilih Lock Parameter, dan check field yang akan digunakan untuk locking.
ABAP HANDOUT 2010
152
-Kiki Siswanto-
5. Save dan aktifkan
6. Untuk menggunakan Lock Object kita dapat gunakan pattern “Call Function” karena dari
lock object yang kita buat akan menggenerate 2 function module yaitu :
a. Enqueue_<lock object_name> untuk setting lock.
b. Dequeue_<lock_object_name> untuk Release unlock.
7. Activate dan locking siap digunakan
8. Buka Se38
9. Buka program / Buat program
10. Call function_modul enqueue_<nama_object_name> dengan menu pattern
11. Modifikasi sintaks call function ENQUEUE
ABAP HANDOUT 2010
153
-Kiki Siswanto-
12. Call function module dequeue dengan menu pattern
Contoh call function enqueue
CALL FUNCTION 'ENQUEUE_EZ_ZTMP02DTMOBIL'
EXPORTING
MANDT = SY-MANDT
TIPE_MOBIL = T_HEADER-TIPE_MOBIL
SERI_MOBIL = T_HEADER-SERI_MOBIL.
Contoh cal function dequeue
CALL FUNCTION 'DEQUEUE_EZ_ZTMP02DTMOBIL'
EXPORTING
MODE_ZTMP02DTMOBIL = 'E'
MANDT = SY-MANDT
TIPE_MOBIL = SP_ED_MOBIL-TIPE_MOBIL
SERI_MOBIL = SP_ED_MOBIL-SERI_MOBIL.
ABAP HANDOUT 2010
154
-Kiki Siswanto-
Day 8
SAP Script
Sap ada 2 report : report biasa (alv dsb) dan report sap script.
Contoh : form kuitansi. Desain untuk meletakkan suatu value dalam suatu report. Kalau dengan
alv susah untuk menyesuaikan dengan form yang sudah ada.kalau report tidak bisa diapa2 in
seperti jenis formnya , ukurannya, trus marginnya. Tapi hal itu mungkin dengan sap script.
Sebenarnya ada 1 lagi yaitu smartforms. Alv – static tampilannya.
Cara kerja sap script Beda dengan alv biasa. Kalau alv kita bikin report di se38 trus isi data langsung dijalankan dan
tampil report nya.
Sap script ada 2 sisi :
1. Membuat layout set/ form (dilakukan di se71)
2. Membuat program pemanggil yang berfungsi untuk memanggil layout set. (dilakukan
di se38)
Di sap ada sap standard. Tapi kalau di perusahaan beda bisa copy dari standard yang udah ada
lalu hasil copyan nya yang diedit.
Version
Misalnya waktu transport ke production ada kesalahan maka bisa retrieve version yang
sebelumnya. Jadi perubahan-perubahan tercatat di version jadi kalau mau pilih version
sebelumnya bisa dilakukan retrieve terhadap version yang diinginkan. Tapi di sap script tidak
ada versionnya jadi harus di backup manual / copy.
ABAP HANDOUT 2010
155
-Kiki Siswanto-
Komponen dari sap script 1. Standard text : semacan teks constant yand dapat disimpan di sap dan bisa dipanggil
setiap waktu. S010.
2. Layout set : model dari form sap script yang akan kita buat. Se71
3. Print program : program yang akan memanggil layout set.se38
Flow sap script Driver program -> supllies data ke layout set . layout set isinya sap script lalu di print jadilah 1
form.
Memiliki paragraph format dan character format sehingga dapat mengatur layout sesuai
keingginan.
Dalam 1 Form dapat terdiri dari beberapa page dan dalam beberapa page bisa terdapat banyak
window.
Standard Text (so10) Object-object yang ada di layout set :
Contoh layout : ZPYGLLS_SD000210
1. Header.
Ada 2 tab :
- Administrative data : nama form, package, dll.
ABAP HANDOUT 2010
156
-Kiki Siswanto-
- Basic settings : page format :
untuk mengatur format page untuk form (bisa a4, kwarto, dll) .
2. Paragraph dan character format.
ABAP HANDOUT 2010
157
-Kiki Siswanto-
Alignment : untuk mengatur tampilan dari suatu paragraph kalau rata kiri jadi rata kiri,
dsb
Line spacing mengatur jarak antar line. Kalau di paragraph format kita atur fontnya tapi kita pake
format yang di character jadi yang dipakai yang dicharacter.
Di paragraph juga bisa punya banyak tab dan jarak tiap2 tab berbeda-beda.
Character format
3. Windows dan text element
Tab window : kumpulan semua window yang dipakai oleh sap script.
Text element bisa dikatakan sebagai id dari suatu window. Minimal 1 window harus
punya 1 text element. Maka pada windiw harus punya text element kalo gak ada maka
gak bisa dipanggil dari reportnya. Text element nya ada di kiri atas bisa dilihat di change
ABAP HANDOUT 2010
158
-Kiki Siswanto-
editor. Window juga bisa digunakan untuk mempermudah maintenance nantinya jadi
diatur sebaik mungkin.
4. Pages
Tab pages berisi halaman2 yang terdapat pada sap script tersbut.
Untuk mengatur halaman2 dengan tipe yang berbeda. Di layout set minimal harus ada 1.
5. Page windows
Bagian yang menjelaskan dimana dalam 1 page ada windows apa saja dan posisinya
juga.bisa juga digunakan untuk menambah page.
ABAP HANDOUT 2010
159
-Kiki Siswanto-
Paragraph :
1. Standar, font , tabs , outline
Windows :
Tipe windows ada 3 :
1. Main .
Bisanyana untuk menulis item biasanya 1.fleksible bisa pindah halaman setelah
pindah halaman otomatis berlanjut ke halaman selanjutnya jika masih ada datanya
2. Variable.
Variable buat yang isinya tidak selalu sama
3. Constant.
Windows buat yang isinya constant.
Style
T-Code : se72
ABAP HANDOUT 2010
160
-Kiki Siswanto-
Symbols bisa dikatakan variable diawali & diakhiri &, dan tidak boleh ada space :
1. System Symbol
2. System
Text symbol : untuk konstanta
Program untuk memanggil layout Setelah membuat layout untuk SAP Script maka yang harus kita lakukan adalah membuat
program pada se38 yang berfungsi untuk menjalanka layout / form yang telah kita buat.
Ada beberapa fungsi yang harus ditambahkan agar program kita dapat menampilkan dan
mengisi layout yang telah kita buat pada tcode se71 antara lain :
1. Function open_form (form diisi nama form yang telah dibuat)
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = 'ZKSILS_SAPSCRIPT'
LANGUAGE = SY-LANGU
IMPORTING
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12
.
IF sy-subrc <> 0.
ABAP HANDOUT 2010
161
-Kiki Siswanto-
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
2. Form Write Form (element diisi dengan element id yang mau diisi dan window diisi
dengan nama window yang ingin di write)
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = fu_element
* FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = fu_window
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
3. Function Close_Form
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
ABAP HANDOUT 2010
162
-Kiki Siswanto-
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* SEND_ERROR = 3
* SPOOL_ERROR = 4
* CODEPAGE = 5
* OTHERS = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Contoh tampilan Sap Script
Tips
- T-Code ST22 digunakan untuk melihat Short Dump / runtime error
ABAP HANDOUT 2010
163
-Kiki Siswanto-
- Occurs digunakan untuk mengatur mau menggunakan memory yang mana
- Jika ada update tabel dari se11, apabila hanya menambahkan field bisa langdung di
activate. Akan tetapi apabila melakukan delete / menyisipkan field maka tidak bisa
activate seperti biasa. Maka activate dapat dilakukan dengan cara : pilih menu utilities
-> database utility -> activate&adjust database.
- T-Code se11 dapat digunakan untuk membuat lock object.
- Penamaan lock object diawali dengan huruf E dan tidak boleh terlalu banyak
underscore.
- Field mandt pada saat membuat lock object harus selalu di check.
- T-Code SM12 digunakan untuk melihat lock
- Konsep locking sama seperti otorisasi jadi di codingnya harus ada blok untuk
otorisasi.
ABAP HANDOUT 2010
164
-Kiki Siswanto-
Day 9
Smartforms
Smartforms dan Sap Script
Sap script bersifat client spesifik. Jadi kalau kita membuat sap script di client 120 maka sap script
tersebut tidak dapat langsung dijalankan di client 140. Maka untuk menjalankan nya harus di copy client
terlebih dahulu.
Untuk melakukan copy client maka dapat dilakukan dengan cara membuka t-code se71 dan pilih menu
utilities -> copy from client.
Dan kemudian isilah form name, source client, dan target form lalu execute.
ABAP HANDOUT 2010
165
-Kiki Siswanto-
Selain itu, untuk melakukan copy client dapat dilakukan dengan menggunakan tcode scc1.
Isilah nomor request dan check Including Request Subtask. Lalu klik tombol start immediately.
ABAP HANDOUT 2010
166
-Kiki Siswanto-
Selain melakukan copy from client, maka dapat juga dilakukan download form secara partial :
Nama program untuk download SapScript: RSTXSCRP
Gambaran kerja sap script
Client 120 – Development
Download Form TextFile
Upload
Client 140 - Test
Smartforms : smartforms bersifat cross client dan bisa di download dalam bentuk xml. Smartform bisa
di running di semua platform tapi tidak bisa di edit di sap gui yang bukan windows karena smartforms
dibangun dengan teknologi vb dan membutuhkan activex. Pada java belum tersedia fitur editor
smartforms.
Download Form
Untuk mengdownload smartforms dapat dilakukan dengan cara :
1. Buka tcode smartforms
2. Masukkan nama smartforms yang ingin di download
3. Pilih menu utilities dan pilih download form.
ABAP HANDOUT 2010
167
-Kiki Siswanto-
4. Tekan tombol check
5. Pilih lokasi untuk file xml smartforms.
Upload Forms
ABAP HANDOUT 2010
168
-Kiki Siswanto-
1. Buka tcode smartforms
2. Ketiklah nama smartforms baru yang akan dibuat.
3. Pilih menu utilities lalu klik upload forms.
4. Lalu klik tombol check
5. Pilih file xml yang akan diupload
ABAP HANDOUT 2010
169
-Kiki Siswanto-
6. Lalu save
Keunggulan : bisa dirancang untuk semua printer sama seperti sap script, font nya juga bisa diatur sesuai
keinginan, dan bisa ditaruh gambar.
Tips :
- untuk kertas yang continuous form dan tidak preprinted : gunakan satuan karakter dan lines.
- Untuk kertas yang bukan continous form terutama preprinted : gunakan satuan mili
ABAP HANDOUT 2010
170
-Kiki Siswanto-
- Alternatif selain smartforms : dapat menggunakan report html
Perbedaan sap script dan smarformst:
Sap Script :
- tidak bisa sisipkan coding di sapscriptnya (select di se38)
- Tipe nya teks
Smartforms :
- mendukung 2 tipe teknik peng codingan (bisa seperti sap script) dan juga bisa coding nya
dilakukan di smartformsnya (select di smartforms). Jadi program yang di se38 hanya untuk
memanggil saja,
- Tipenya graphical , bisa ditambahkan gambar
- Teknik pemrograman Mirip seperti function
Smartforms Untuk membuat smartforms dapat dilakukan pada tcode smartforms.
Langkah – langkah membuat smartforms :
1. Buka tcode smartforms.
ABAP HANDOUT 2010
171
-Kiki Siswanto-
2. Tulislah nama smartforms dan tekan tombol create.
3. Isilah description. Pada form attributes, pada tab options dapat diatur ukuran kertasnya dan
sytle yang ingin digunakan.
ABAP HANDOUT 2010
172
-Kiki Siswanto-
4. Pada form interface digunakan untuk deklarasi.
ABAP HANDOUT 2010
173
-Kiki Siswanto-
5. Pada menu global definition : terdapat tab global data untuk mendeklrasikan data2 yang
digunakan, pada tab types digunakan untuk deklarasi Types. Tab form routines digunakan untuk
membuat subroutine (select data) dan initialization digunakan untuk melakukan coding perform
terhadap subroutine yang telah dibuat.
6. Setelah selesai di activate akan meng create suatu function. Beda dengan sap script yang harus
melakukan open form, dsb. Untuk manggil function ada 2 cara :
a. Langsung panggil nama functionnya : ada running numbernya. Bahaya soalnya belum
tentu nanti pas dinaikin ke QA dapet nomornya sama.
b. Pake function untuk tau nama functionnya smartformsnya. Jadi call function dinamis.
7. Untuk membuat tabel maka klik kanan pada main dan create – table.
8. Klik tombol details pada Tab Table untuk mendefinisikan kolom-kolom yang akan ditampilkan.
ABAP HANDOUT 2010
174
-Kiki Siswanto-
9. Tekan tombol untuk menambahkan kolom.
10. Tekan tombol untuk mengatur pola garis pada List Data
11. Tekan tombol
12. Klik Tab Data untuk mengoper parameter untuk digunakan pada smartforms.
13. Activate smartforms.
Default smarforms hanya 1 halaman
Program driver : report yang dibuat di se38 ditempelkan pada report standard sap.
Upload image
SE78 digunakan untuk upload image yang nanti dapat digunakan pada smartforms.
ABAP HANDOUT 2010
175
-Kiki Siswanto-
Untuk megupload image buka tab BMAP Bitmap Image.
Setelah itu pada menu Graphic pilih import.
ABAP HANDOUT 2010
176
-Kiki Siswanto-
Setelah itu, pilih workspace file yang akan diupload kemudian isi nama dan deskripsi dari file tersebut
dan tekan tombol check.
Jika sudah berhasil maka otomatis akan kembali ke halaman awal.
ABAP HANDOUT 2010
177
-Kiki Siswanto-
Untuk meng add gambar yang sudah dimasukkan maka dapat dilakukan dengan cara melakukan add
graphic pada page.
Setelah itu, masukkan nama icon yang telah diimport pada tcode SE78.
ABAP HANDOUT 2010
178
-Kiki Siswanto-
Lalu tekan tombol save.
Smartstyles Untuk mengatur tampilan pada smartforms baik paragraph maupun karakter dapat dilakukan pada
tcode smartstyles.
ABAP HANDOUT 2010
179
-Kiki Siswanto-
Lalu isilah nama smartstyles yang akan dibuat dan tekan tombol create.
Paragraph
Untuk mengatur format paragraph dapat dilakukan pada menu paragraph format. Lalu klik kanan dan
pilih create node.
Masukkan nama paragraph format yang ingin dibuat.
ABAP HANDOUT 2010
180
-Kiki Siswanto-
Lalu tekan tombol check
Pada tabs indents and spacing digunakan untuk mengatur alignment dari paragraph, tab font digunakan
untuk mengatur tulisan yang akan digunakan oleh sebuah paragraph, tab tabs digunakan untuk
membuat tabs yang nanti dapat digunakan, numbering and outline digunakan untukmemberikan
numbering.
Character
Untuk mengatur karakter dapat dilakukan pada menu character. Kemudian klik kanan dan create node.
ABAP HANDOUT 2010
181
-Kiki Siswanto-
Isilah nama karakter format yang akan dibuat.
Kemudian tekan tombol check.
Isilah deskripsi dan atur font sesuai dengan yang diinginkan.
Setelah selesai mengatur paragraph dan karakter format maka klik menu header data dan isilah field –
field yang dibutuhkan kemudian save dan activate.
ABAP HANDOUT 2010
182
-Kiki Siswanto-
Setelah selesai di activate, maka smartstyles yang telah dibuat dapat di panggil dari smartforms.
Untuk memanggil smartstyles yang telah dibuat di smartforms maka untuk memanggilnya dengan
memilih form attributes - > pilih tab outout options, lalu masukkan nama style yang telah kita buat pada
field style.
ABAP HANDOUT 2010
183
-Kiki Siswanto-
Untuk memanggil paragraph format atau karakter format yang telah kita buat dapat dilakukan dengan
cara pilih text dan pilih tab general attributes.
Page format
Untuk mengatur page format / ukuran kertas maka dapat dilakukan dari tcode spad.
Klik full administration
ABAP HANDOUT 2010
184
-Kiki Siswanto-
Kemudian Pilih tab device types
Klik button format types.
Klik tombol change dan pilih create.
ABAP HANDOUT 2010
185
-Kiki Siswanto-
Masukkan nama page format dan atur width dan height yang diinginkan.
ABAP HANDOUT 2010
186
-Kiki Siswanto-
Lalu klik tombol save.
Pilih tab devide tabs lagi dan kemudian klik button Format types.
Lalu pilih menu formats dan pilih create.
ABAP HANDOUT 2010
187
-Kiki Siswanto-
Lalu isilah deskripsi, type, page format (diambil dari page format yang sudah dibikin sebelumnya), dan
orientation.
Lalu klik tombol save dan page format siap digunakan pada smartforms.
ABAP HANDOUT 2010
188
-Kiki Siswanto-
Untuk menggunakan page format yang telah dibuat pada tcode SPADSmartforms pilih form attributes
– output options – page format (ukuran kertas).
ABAP HANDOUT 2010
189
-Kiki Siswanto-
ABAP HANDOUT 2010
190
-Kiki Siswanto-
Day 10
- Personalization : Otorisasi
- Modification : se38 / se80 a. Non-registered modification : biasanya di perusahaan yang sudah expired sapnya.
Jadi mengubah langsung di program sapnya tanpa minta ijin / ilegal. b. Assisted modification : yang mengubah programnya adalah sap. c. User exist : langsung melakukan perubahan di program sap dan harus mendapat ijin
dari sap nya: i. Cara mencari user exits :
1. Buka tcode nva va01. a. Trus debug. User exits selalu subroutine jadi bisa pilih
breakpoint at. Trus tulis perform cari yang perform nya da user exits. Trus bisa tau main program ama includenya
2. Dari main programmnya. Bisa cari nama program dari se93 atau system status. Tinggal cari subroutine yang dimaksud. Ada tools nya find word in abap program
3. Di subroutine user exits nya tulis break point jika ada access key nya
- Enchancement : menyisipkan di lubang-lubang yang disediakan sap. o Abap dictionary : umumnya yang di enhance adalah struktur fieldnya (lakukan di
dalam include nya misalnya mara includenya ada lebih dari 1 jika ada lebih dari 1 maka cari include yang terakhir), cara yang lain adalah lakukan append structure di akhir. Contoh : append Structure pada tabel makt. Buka t-code se11 lalu masukkan nama tabel yang diinginkan, lalu tekan display. Pada menu Goto pilih Append Structure.
ABAP HANDOUT 2010
191
-Kiki Siswanto-
Masukkan nama Structure yang ingin di insert
Masukkan nama component dan tipe data sesuai dengan yang diinginkan.
Save dan Aktifkan.
Tips : kalau datanya banyak maka activatenya akan makan waktu yang lama kalau sedang mlakukan activate semua trasaksi yang menggunakan tabel tersbut tidak bisa
ABAP HANDOUT 2010
192
-Kiki Siswanto-
diakses. Habis activate test lagi program yang memakai tabel yang diubah. Ada compiling sgen tapi menyebabkan server mati kalau tidak pake sgen juga tidak apa-apa tapi jika lagi membuka transaksi yang menggunakan tabel tersebut maka akan dilakukan compiling terlebih dahulu. kalau sudah melakukan penambahan field kemudian di delete maka tidak disarankan karena dapat menyebabkan tabel rusak (kemungkinannya tingi) dan bisa jadi transaksi shot dump. Cara melakukan cek apakah tabel tersebut rusak adalah coba liat di tcode se11 / se14 trus ekstras -> database object -> display. Jika di se11 nya ada tapi disini tidak ada maka databasenya rusak begitu juga sebaliknya. Cara perbaikin : ke db fisiknya, restore db. Cara melakukan cek database : Buka tcode se14. Masukkan nama tabel yang ingin di cek, kemudian Pilih menu Extras lalu pilih
Database Object-> Dsiplay
Cek field-field yang ada apakah sesuai atau tidak.
o Customer exist - > untuk membuat nya bisa di cmod (debug):
ii. Function module exits : functionnya yang di update : se37 iii. Menu exits : gui status : se38
ABAP HANDOUT 2010
193
-Kiki Siswanto-
iv. Screen exits : screen nya : se38 o Business transaction events : untuk transaksi yang berhubungan dengan finance. :
fibf (harus memiliki pengetahuan functional) o Business add-ins : se18 / se19 : Transaksi yang belakangnya n ada yang namanya
business add-ins / BADI. Kalao bikin ini kaya bikin class.(debug)
Customer exits Program terdiri dari beberapa include dan setiap include memiliki beberapa subroutine dan di dalmnya juga ada call function (biasanya namanya dinamis dan awalnya belum di activate). Di function ini juga ada include nya dan belum aktif juga. Jadi dengan tcode cmod bisa diaktifin dan nanti codingnya di includenya bukan di functionnya. Tipe-tipe customer exit ada yang pas di save, commit, enter, dll. Tapi kadang kita tidak tau letaknya
sebelum commit atau setelah commit (LUW). Untuk itu dapat digunakan syntax break. Jika pada waktu
break ternyata di SE11 baru ada data, brarti after commit. Tetapi pada saat terjadi break ternyata di
SE11 belum ada data berarti before commit.
Ada juga tipe PAI (Proses after input). Jadi waktu masuk ke dalam dia baru jalan. Makanya ada namanya
screen exit yang bersifat PAI.
Contoh customer exit yang butuh after commit : jika ada transaksi beruntun. Missal pas klik save,
Purchase order langsung dibuat.
1 enhancement bisa terdiri dari banyak function module, screen. Tips : untuk coding di includenya jika masih di develoment: break nya pake user login. Break ai03kikisi. If sy-uname = ‘ai03kikisi05’. If sy-tcode CS ‘MM0’. Endif. Endif. Langkah : se38 - > open program buat find user exits. Double klik copy nama enchanment. Create project->save masukin di enchanment yang tadi di copy BTE – FIBF klik environment -> info system - >execute ->trus keluar menu2 yang bisa ditempelkan. Klik objectnya trus klik dokumentasi. Contoh kasus Customer Exits :
- Buka tcode mm02
ABAP HANDOUT 2010
194
-Kiki Siswanto-
- Pilih data kemudian klik button select view -> basic data 1 . lalu tekan check.
- Lalu ubah nama material.
ABAP HANDOUT 2010
195
-Kiki Siswanto-
Kasus : MM02 kita mau buat setting kalau kita masukkin material “Proton” maka ada peringatan “Tidak Boleh”.
Solusi : 1. Jalankan program untuk menemukan user exits dari xd01.
ABAP HANDOUT 2010
196
-Kiki Siswanto-
2. Execute program.
3. Buka tcode cmod. Masukkan nama project dan Create.
ABAP HANDOUT 2010
197
-Kiki Siswanto-
4. Masukkan description dan klik button enhancement assignment
5. Pilih yes.
ABAP HANDOUT 2010
198
-Kiki Siswanto-
6. Masukkan nama customer exits yang telah ditemukan dengan menggunakan program di atas.
7. Klik tombol components dari gambar diatas
ABAP HANDOUT 2010
199
-Kiki Siswanto-
8. Jika masih bewarna merah maka menandakan bahwa belum aktif. Double klik pada nama
function exitnya. 9. Setelah double klik akan muncul halaman seperti di bawah ini.
Double klik pada nama include yang terletak pada bagian bawah program. Jika muncul warning tekan enter.
10. Klik yes.
ABAP HANDOUT 2010
200
-Kiki Siswanto-
11. Setelah klik yes akan muncul halaman berikut :
Tambahkan kode break untuk mengecek customer exits ini.
12. Activate include, function exit dan projectnya nya jadi 3 x activate baru bisa jalan. 13. Untuk melakukan cek pada customer exits yang uda kita buat maka masuk ke transaksi yang
dimaksud. Dalam kasus ini XD01.
ABAP HANDOUT 2010
201
-Kiki Siswanto-
14. Lalu buat customer baru. Dalam kasus ini kita kita ingin negaranya harus ID.
15. Jika pas save masuk break yang sudah dibuat maka customer exits nya benar. Dan kita harus
menambahkan coding di tempat tersebut.
ABAP HANDOUT 2010
202
-Kiki Siswanto-
16. Kembali lagi ke function yang ada di project cmod yang uda kita buat.
17. Pada nama-nama variable di atas kita cek satu persatu variable mana yang menampung data
Negara yang kita input.
ABAP HANDOUT 2010
203
-Kiki Siswanto-
18. Setelah ditemukan nama field dan variable nya (dalam kasus ini field l_kna1 dan variable
land1). Maka double klik pada include dan masuk kembali ke coding yang sudah ada breaknya.
19. Masukkan coding seperti di bawah ini.
20. Activate. 21. Buka tcode xd01 lagi untuk mengecek validasi yang sudah kita buat. 22. Jika berhasil maka akan muncul peringatan sesuai yang sudah kita buat.
ABAP HANDOUT 2010
204
-Kiki Siswanto-
Contoh BTE (Business Transaction Events) 1. Masuk ke tcode fbif
2. Klik Environment -> Info System
ABAP HANDOUT 2010
205
-Kiki Siswanto-
3. Klik execute
ABAP HANDOUT 2010
206
-Kiki Siswanto-
4. Pilih line item dan klik
ABAP HANDOUT 2010
207
-Kiki Siswanto-
Pasang function yang uda dibikin tadi. Business add-ins (badi) Tugas 1 :
1. Video badi_po_item ada 2 video - > pembatasan kuantiti 2. pembatasan net price 3. Buat badi ditempelin ke migo
ABAP HANDOUT 2010
208
-Kiki Siswanto-
BADI Untuk Transaksi MIGO 1. Buka se 19
2. Create implementation baru
3. Masukkan definition name (ini harus dicari) coba coba aja pake *MIGO*
4. Terdapat 2 definition, (coba lagi diantara 2 itu) ikutin feeling,
5. Pilih yang MG_MIGO_ITEM_BADI.
6. Isi short text
ABAP HANDOUT 2010
209
-Kiki Siswanto-
7. Klik tab interface
8. Didalamnya Cuma terdapat 1 method, yaitu ITEM_MODIFY, kalau ada banyak, maka kita harus
test satu per satu.
9. Double klik ITEM_MODIFY untuk masuk ke dalam koding
10. Tambahkan kode break
11. Jangan lupa activate, back ke implementation, lalu klik activate lagi untuk mengaktifkan
implementation nya.
12. Lalu masuk ke MIGO, buat MIGO baru, masukkan quantity, save sampai berhasil migo nya
ABAP HANDOUT 2010
210
-Kiki Siswanto-
13. Untuk mengetahui tempat penampung dari item dalam migo, kita buka interface dari BADI
14. Double klik IF_EX_MB_MIGO_ITEM_BADI
15. Terdapat method ITEM_MODIFY, lihat parameter dari method tersebut, klik item_modify lalu
klik parameters.
16. Terdapat 4 parameter, feeling sih mengatakan yang menyimpan isi dari detil MIGO adalah
IS_GOITEM, dan associated type nya adalah GOITEM.
ABAP HANDOUT 2010
211
-Kiki Siswanto-
17. Maka kita coba dalam koding,
18. Deklarasi table local untuk menampung is_goitem.
19. Jalankan migo, pasti pada saat save, akan masuk ke debug.
20. Lalu lihat isi dari table sementara lt_item. Didalamnya kita mengetahui field MENGE adalah
quantity dari detil MIGO tersebut.
21. Lalu kembali ke koding dan tuliskan
ABAP HANDOUT 2010
212
-Kiki Siswanto-
22. Aktivasi semua
23. Jalankan migo, Pada saat kita membuat migo dengan item detilnya diisi dengan quantity lebih
dari 200
24. Maka akan muncul pesan
quantity tidak boleh melebihi 200.
ABAP HANDOUT 2010
213
-Kiki Siswanto-
Day 11
Logical database. Untuk menggunakan logical database dapat menggunakan Tcode se36 / sldb.
SLDB - > Dapat digunakan untuk mengetahui relasi database. Umumnya Modul HR yang masih
menggunakan SLDB, sedangkan module – module yang lain sudah beralih menggunakan Object
Oriented.
ABAP HANDOUT 2010
214
-Kiki Siswanto-
Contoh logical database untuk transaksi PO ( Purchase Order ):
Dalam SLDB terdapat syntax-syntax untuk collect data dari database yang diletakkan pada bagian source
code. SLDB tidak akan berjalan tanpa adanya source code seperti put_ekko, put_ekpo, dll.
ABAP HANDOUT 2010
215
-Kiki Siswanto-
Untuk melihat suatu sldb digunakan di program yang mana dapat digunakan dengan enekan tombol
where-used list.
ABAP HANDOUT 2010
216
-Kiki Siswanto-
Untuk melihat dapat menggunakan tcode se38 lalu masukkan salah satu nama program diatas.
Untuk memanggil put ekko dalam program digunakan syntax get (seperti perform).
Untuk menempelkan report pada logical database dapat dilakukan dengan cara :
Pilih menu goto->attributes->isi field pada logical database.
Jadi saru report hanya dapat memiliki satu logical database.
Sldb memiliki kelemahan yaitu sangat lambat. Akan tetapi jika untuk development lebih cepat. Akan
tetapi untuk performance sangat lambat karena codenya menggunakan into corresponding dan select-
end select.
ABAP HANDOUT 2010
217
-Kiki Siswanto-
Contoh Coding program yang menggunakan sldb:
REPORT ZT02_LATIHAN29 .
TABLES : EKKO.
START-OF-SELECTION.
GET EKKO.
NB :
Syntax Get dapat diartikan seperti loop.
Get .. Late -> syntax yang dijalankan setelah get (seperti setelah endloop)
Hasil :
ABAP HANDOUT 2010
218
-Kiki Siswanto-
Select Options SLDB
Select options yang ditampilkan berasal dari logical database yang diletakkan pada tab
selections.
Contoh Select Options yang terdapat pada SLDB :
ABAP HANDOUT 2010
219
-Kiki Siswanto-
Teks yang ditampilkan pada select-options terdapat di logical database yang terletak pada tab
selection teks.
ABAP HANDOUT 2010
220
-Kiki Siswanto-
Selection Texts
ABAP HANDOUT 2010
221
-Kiki Siswanto-
Dynamic Selections
Icon yang terletak pada sebelah tombol execute adalah icon untuk dynamic selections. Berasal
dari code yang ada di logical database tab selections yaitu :
SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE: EKKO, EKPO.
Kalau tidak ada syntax di atas maka icon tersebut tidak akan muncul.
Untuk melihat field-field yang ada pada tabel dapat menggunakan tombol Display table fields.
ABAP HANDOUT 2010
222
-Kiki Siswanto-
Untuk membuat / melakukan customize terhadap dynamic selections.
Lalu klik tombol create
ABAP HANDOUT 2010
223
-Kiki Siswanto-
Centanglah checkbox preselect untuk menampilkan select options ini terlebih dahulu.
Hasil dari Tampilan dynamic selections :
ABAP HANDOUT 2010
224
-Kiki Siswanto-
Kasus : misalnya mau menambahkan field wadat dari eket ke po item namun tidak muncul
karena tabel eket di selection nya belum di declare atau di program report kita belum di deklare.
Declare pada tab selection :
SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE: EKKO, EKPO, EKET.
Declare pada program :
TABLES : EKKO, EKPO, EKET.
RFC -> remote function call
Multiple condition.
RFC_ ->function yang dapat dipanggil dari luar sap.
Selain rfc terdapat juga BAPI -> berhubungan dengan bisnis proses.
ABAP HANDOUT 2010
225
-Kiki Siswanto-
Jika ada Exception dikarenakan kekurangan karakter yang disediakan.
Cara mengatasi : 1. bikin types baru.
2. Tampilkan data ygn perlu saja.
ABAP HANDOUT 2010
226
-Kiki Siswanto-
RFC REAd table sangat powerfull tapi hanya untuk membaca tabel tidak untuk transaksi.
BAPI Bapi : fitur menu untuk functional - > tcode bapi
Pada BAPI terdapat Field testrun -> jika di x tidak melakukan generate number po , kalau tidak
di x maka akan melakukan generate number po namun tidak melakukan commit .
Untuk melakukan commit maka BAPI harus memanggil 1 fungsi lagi yaitu
BAPI_Transaction_Commit.
Tips Caranya untuk memanggil lebih dari 2 function pada se37.
ABAP HANDOUT 2010
227
-Kiki Siswanto-
Masukkan function2 yang ingin digunakan untuk di tes dan execute.
ABAP HANDOUT 2010
228
-Kiki Siswanto-
ABAP HANDOUT 2010
229
-Kiki Siswanto-
Day 12
Search Help
Cara membuat search help :
1. Tcode se11 -> masukkan key nya -> check table.
2. Tcode se11 -> search help
3. Coding
ABAP HANDOUT 2010
230
-Kiki Siswanto-
Create Search Help :
ABAP HANDOUT 2010
231
-Kiki Siswanto-
Kalau elementary tidak memiliki impact pada data element. Jadi tidak menempel.
Tidak bisa menggunakan syntax di bawah ini (langsung type data element):
p_kdsp1 TYPE ZPYGMMDE_KODE_SP002.
ABAP HANDOUT 2010
232
-Kiki Siswanto-
Import : yang di import misalanya pilih A* F4 maka masuk ke dalam import. Setelah itu yang
ditampilkan adalah eksport nya.
Kalau mau menggunakan langsung dari data element gunakan yang collective
ABAP HANDOUT 2010
233
-Kiki Siswanto-
Setelah diaktifkan Tempelkan ke data element dan kemudian edit param assignment
ABAP HANDOUT 2010
234
-Kiki Siswanto-
Cara edit search help exit :
1. Buat group baru jangan digabungin.
2. Copy
ABAP HANDOUT 2010
235
-Kiki Siswanto-
Lalu copy dan aktifkan
Jika ada error cek dengan Search Help Exits yang asli
pertama –tama lihat dari global data.
Kalau masih error cek lagi.
Analysis tools 1. Break point : digunakan untuk debug. Waktu di jalankan bisa dengan /h (untuk program
foreground) atau /hs (untuk program background & parallel processing -> parallel
memecah program tetapi impact nya dia yang di sm50 abis : -> form nya dijadikan
function).
Background tes run. 1. Pilih output device
2. Set time of printing (send to sap spooler only)
ABAP HANDOUT 2010
236
-Kiki Siswanto-
3. Set format
Open log background (dari sm36 / sm37)
1. Buka spool nya
2. Buka display content
Buat liat background proses (hasilnya) bisa dilihat di sm36
Code Inspector Code Inspector adalah sebuah tool yang disediakan oleh SAP untuk mengecek suatu program
apakah sudah sesuai atau belum. Pengaturan code inspector ini diatur oleh kernel.
Setetelah dijalankan maka akan menampilkan tampilan sebagai berikut :
ABAP HANDOUT 2010
237
-Kiki Siswanto-
Tampilan di atas menampilkan syntax-syntax yang tidak sesuai dengan kernel dan harus
diperbaiki.
ABAP HANDOUT 2010
238
-Kiki Siswanto-
Extended Check Extended sama halnya dengan Code Inspector. Namun tampilannya lebih sederhana.
ABAP HANDOUT 2010
239
-Kiki Siswanto-
Setelah memilih menu diatas maka akan tampil tampilan sebagai berikut :
Lalu jalankan program di atas.
ABAP HANDOUT 2010
240
-Kiki Siswanto-
RUNTIME ANALYSIS
ABAP HANDOUT 2010
241
-Kiki Siswanto-
ABAP HANDOUT 2010
242
-Kiki Siswanto-
Abap : code abapnya
Db : databasenya
ABAP HANDOUT 2010
243
-Kiki Siswanto-
System : kernel
ABAP HANDOUT 2010
244
-Kiki Siswanto-
Sql trace
Aktifkan dengan klik tombol Activate trace
ABAP HANDOUT 2010
245
-Kiki Siswanto-
Jalankan program dari se38.
Deactivate trace dengan klik tombol Deactivate Trace.
Tekan tombol check.
ABAP HANDOUT 2010
246
-Kiki Siswanto-
ABAP HANDOUT 2010
247
-Kiki Siswanto-
Day 13
Field symbols FIELD-SYMBOLS : <table> TYPE table, utk assign itab
<wa> TYPE data, utk assign structure (wa) <comp> TYPE ANY. utk assign single var
Field symbol dapat digunakan untuk membuat type data yang dinamis. Umumnya type table digunakan
untuk deklarasi tabel, type data digunakan untuk mendeklarasikan structure dan type any digunakan
untuk mendeklarasikan single variable.
Contoh utuk membuat itab dan structure secara dinamis Deklarasi itab
Function untuk mengenerate filed category .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING i_structure_name = pa_tabnm CHANGING ct_fieldcat = fieldcat[].
Method utk memasukkan fieldcat ke dalm itab.
CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = fieldcat[] IMPORTING ep_table = dyn_itab.
ASSIGN dyn_itab->* TO <table>. Deklarasi itab nya di assign ke table yg tipe nya harus ‘TABLE’
Utk create structure WA dg mengacu pd itab sebelumnya.
CREATE DATA wa LIKE LINE OF <table>. ASSIGN wa->* TO <wa> . wa di assign ke tipe data ‘DATA’
Untuk mengambil isi variable berdasarkan yang kita input dari selection screen dapat dilakukan dengan
menuliskna syntax (nama_parameter).
Contoh :
Select (field) into corresponding fields of table <table> from (tabel)
(field) diisi dg field dan (table) diisi dg nama table yg akan di select. Sedangkan <table> mrp itabnya.
Loop at <table> into <wa>.
ABAP HANDOUT 2010
248
-Kiki Siswanto-
Endloop.
<table> dan <wa> ini diisi melalui code ASSIGN yg telah dideklarasikan sebelumnya.
REPORT zt02_latihan36 .
TABLES : dd02l, dd03l.
FIELD-SYMBOLS : <table> TYPE table,
<wa> TYPE data,
<comp> TYPE ANY.
PARAMETERS : p_select LIKE dd03l-fieldname,
p_itab LIKE dd02l-tabname,
p_tab LIKE dd02l-tabname,
p_where(100) TYPE c.
DATA : fieldcat TYPE lvc_t_fcat , wadata TYPE lvc_s_fcat.
DATA : dyn_itab TYPE REF TO data,wa TYPE REF TO data, gv_tampung TYPE c LENGT
H 100.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_itab
CHANGING
ct_fieldcat = fieldcat[].
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = fieldcat[]
IMPORTING
ep_table = dyn_itab.
ASSIGN dyn_itab->* TO <table>.
CREATE DATA wa LIKE LINE OF <table>.
ASSIGN wa->* TO <wa> .
SELECT (p_select)
INTO CORRESPONDING FIELDS OF TABLE <table>
FROM (p_tab)
WHERE (p_where).
ABAP HANDOUT 2010
249
-Kiki Siswanto-
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = p_itab "<< Bisa pake table ato structure jika ti
dak pake FieldCat dlm ALV
i_grid_title = 'Dynamic Reporting'
TABLES
t_outtab = <table>.
ENDIF.
Jalankan programnya dan inputkan data :
Hasilnya :
ABAP HANDOUT 2010
250
-Kiki Siswanto-
BDC (Batch Data Control) Melakukan remote thd SAP, tapi ABAPer yg memegang kontrolnya.
Tcode : SHDB
LSMW : tools utk membuat Program upload standar dari sap menggunakan teknologi recording & bapi,
tp scr functional. Biasanya utk table master data.
Cara upload data transaksi :
1. BAPI
2. Recording (SHDB)
3. IDOC
4. Buat koding sendiri
Call transaction BDC
Source utk remote dpt diperoleh dr 2 sumber :
- Parameter ID : tipenya objek
ABAP HANDOUT 2010
251
-Kiki Siswanto-
- BDC Data : tipenya interbal table.
kemudian soruce sode tsb di execute “call transaction” dan mengeluarkan message. Jika proses sukses,
data akan disimpan/delete/modify (tergantung proses datanya) lalu keluar. Jika gagal, akan keluar dr
proses (simulate).
Latihan BDC 1. Tcode XD01, input account group dan company code
2. Klik continue. Lalu inputkan data :
ABAP HANDOUT 2010
252
-Kiki Siswanto-
3. Tekan tombol ENTER, lalu save. Input rec. account :
4. Klik save.
ABAP HANDOUT 2010
253
-Kiki Siswanto-
Nomor KUNNR : 0000100129
5. Lalu masuk ke se16 dan input cutomer master (KNA1).
6. Input kunnr utk nomornya atau pilih menu setting field selection Pilih name1 dan name2
7. Input kunnr
ABAP HANDOUT 2010
254
-Kiki Siswanto-
8. Klik execute
Tampil data-data yg telah diinputkan. Selanjutnya akn digunakan utk mengecek dlm proses
recording, dt apa sj yg telah diinputkan.
9. Masuk ke SHDB, klik new recording.
ABAP HANDOUT 2010
255
-Kiki Siswanto-
Input nama recording dan tcodenya. Pilih update mode Sinkronus prosesnya menunggu
hasilnya dulu, baru dikirim dan diterima . asynchronus (kirim data tnp menunggu hasilnya).
10. Klik start recording setelah ini diusahakan jng menekan keyboard krn akn terrekam jg.
11. Input data :
ABAP HANDOUT 2010
256
-Kiki Siswanto-
Untuk transaksi master data, aktifkan checkbox “Use central…”.
12. Klik tanda ENTER, input data pada field yg sama seperti pd langkah sebelumnya. Jgn input pada
field2 yg berbeda.
13. klik save, klik tombol check, lalu inputkan nilai seperti gambardi bawah ini.
14. Klik save, hasilnya terrecord :
ABAP HANDOUT 2010
257
-Kiki Siswanto-
15. Klik save lagi.
16. Klik tombol proses.
Processing mode :
A : tidak bs jln di background,ada error, terlihat semua screennya dan harus ada trigger dr user.
E : tdk bs jln dibackground, screen tdk kelihatan.
ABAP HANDOUT 2010
258
-Kiki Siswanto-
N : utk backround.
P : utk backround, tp bs melakukan break-point.
Bukan background proses : Digunakan jika program yg dibuat blm yakin bhw program berjalan
dg benar.
Background proses : Digunakan jika sudah yakin bahwa program sudah benar.
17. Klik check, lalu dlm tcode klik check terus smp selesai .
18. Jika terjadi error, maka hapus recordnya, lalu ulangi lg.
19. Record lagi, pada saat record, isi semua datanya, jgn save dl smp terisi smua seperti yg telah
diisikan sebelumnya dg cara klik next page. Jika sudah, klik save. lalu proses lg. hasilnya :
Buat code BDC : klik tombol program :
ABAP HANDOUT 2010
259
-Kiki Siswanto-
Klik source code, hasilnya ;
ABAP HANDOUT 2010
260
-Kiki Siswanto-
Comment kode-kode yang tidak diperlukan.
Klik activate, lalu execute
ABAP HANDOUT 2010
261
-Kiki Siswanto-
Pilih transaction mode S, lalu execute :
ABAP HANDOUT 2010
262
-Kiki Siswanto-
Transport To Production
Langkah – Langkah Transport 1. Masuk ke AI SO Development , Client 120
2. Buka TCODE SE10 – Transport Organizer
3. Klik Display
ABAP HANDOUT 2010
263
-Kiki Siswanto-
4. Lalu pilih Nomor Transport yang akan dinaikkan ke Production, sampai ke cabang No Transport
yang paling detil, lalu pilih satu demi satu No Transport (kotak warna merah) dan kemudian
diklik tombol mobil merah (lingkaran warna merah) :
Maka akan muncul :
5. Lalu klik Tombol Back, lalu pilih Tab Transport Proposal, dan klik Create Proposal (lingkaran
warna merah)
ABAP HANDOUT 2010
264
-Kiki Siswanto-
6. Maka akan tampil, Masukkan No Transport ke kolom Request for Import, lalu Copy Short Text
dibawah ke Short text diatas, lalu klik tombol Next System (lingkaran warna merah), lalu Select
All dan Create:
ABAP HANDOUT 2010
265
-Kiki Siswanto-
Maka akan muncul Target. Lalu Select All, kemudian Transfer (Enter) :
ABAP HANDOUT 2010
266
-Kiki Siswanto-
ABAP HANDOUT 2010
267
-Kiki Siswanto-
Hasilnya :
ABAP HANDOUT 2010
268
-Kiki Siswanto-
Lalu klik Create and Send Proposal (F8) :
ABAP HANDOUT 2010
269
-Kiki Siswanto-
Minta approvement dari Trans Admin Dev : Pak Anto. Jika sudah diapprove maka bisa dicek di
Inbox. Lalu langkah selanjutnya, minta approvement untuk ke Production :
ABAP HANDOUT 2010
270
-Kiki Siswanto-
Isi dengan Tgt systems : P99 Target clnt : 300, lalu klik gambar mobil. Maka data akan hilang dari
Inbox :
Lalu inform ke PIC Production (Mba Dian Wardani) untuk minta diapprove
ABAP HANDOUT 2010
271
-Kiki Siswanto-
7. Untuk melihat status apakah sudah naik ke Production
Isi check box Released, lalu klik Display:
Maka akan tampil data-data yang sudah direleased, lalu pilih no transport, kemudian klik tombol
Transport Log (Ctrl+Shift+F2) :
ABAP HANDOUT 2010
272
-Kiki Siswanto-
Maka akan muncul detil datanya, jika sudah sampai di Production makan akan muncul P99 dan
Nama Mesin Production (mis: AI SO Production)