5 0 8 MB
ABAP HANDOUT 2010
1 -Kiki Siswanto-
ABAP HANDOUT 2010 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
2 -Kiki Siswanto-
ABAP HANDOUT 2010 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
3 -Kiki Siswanto-
ABAP HANDOUT 2010 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
4 -Kiki Siswanto-
ABAP HANDOUT 2010 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
5 -Kiki Siswanto-
ABAP HANDOUT 2010 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
6 -Kiki Siswanto-
ABAP HANDOUT 2010 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
7 -Kiki Siswanto-
ABAP HANDOUT 2010
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 perusahaanperusahaan 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
8 -Kiki Siswanto-
ABAP HANDOUT 2010 (Supply Chain Management), CRM dan masih banyak solusi-solusi bisnis lain yang ditawarkan oleh SAP untuk berbagai jenis bidang usaha di dunia.
Enterprise
Resource
mengelola
seluruh
Planning aktifitas
(ERP)
perusahaan
adalah termasuk
sistem keuangan,
terintegrasi
untuk
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 keputus an 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
Trans parasi data o
Data dapat diatur hak akses nya terga ntung 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
9 -Kiki Siswanto-
: Programmer
ABAP HANDOUT 2010 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.
10 -Kiki Siswanto-
ABAP HANDOUT 2010 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)
o
membantu men-cek kualitas proses-proses di keseluruhan rantai logistik
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
11 -Kiki Siswanto-
Personnel Management (PA)
ABAP HANDOUT 2010 o
Personnel Time Management (PT)
o
Payroll (PY)
o
Training and Event Management (PE)
Gambar Modul SAP R/3
12 -Kiki Siswanto-
ABAP HANDOUT 2010
Gambar Bisnis Proses
Sistem SAP SAP Menggunak an Sistem Client – Server
Hardwareoriented view
13 -Kiki Siswanto-
ABAP HANDOUT 2010
Softwareoriented view
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.
14 -Kiki Siswanto-
ABAP HANDOUT 2010 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
15 -Kiki Siswanto-
ABAP HANDOUT 2010
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).
16 -Kiki Siswanto-
ABAP HANDOUT 2010 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 se rver 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
17 -Kiki Siswanto-
ABAP HANDOUT 2010 -
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
18 -Kiki Siswanto-
ABAP HANDOUT 2010 /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)
Change (Shift + F6)
Copy (Shift + F5)
Lock / Unlock (Ctrl + F5) Change Password (Shift + F8)
1 s d a d a s 1 1
Untuk menggunakan tombol – tombol tersebut maka field user harus diisi terlebih dahulu.
19 -Kiki Siswanto-
ABAP HANDOUT 2010 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 :
20 -Kiki Siswanto-
ABAP HANDOUT 2010 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:
21 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
22 -Kiki Siswanto-
ABAP HANDOUT 2010
Kemudian Pilih Yes.
Lalu User harus mengisi Short Description dan Transport Layer (Transport Layer Untuk Standar Object adalah SAP).
Create New Request
23 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
24 -Kiki Siswanto-
ABAP HANDOUT 2010 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
25 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
26 -Kiki Siswanto-
ABAP HANDOUT 2010 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
27 -Kiki Siswanto-
ABAP HANDOUT 2010 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_WAALD_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.
28 -Kiki Siswanto-
ABAP HANDOUT 2010 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
29 -Kiki Siswanto-
ABAP HANDOUT 2010
4. Klik Tombol Create. 5. Isi Short Description. Kemudian isi Data Type, No. Characters, Decimal places dan Output length seperti dibawah ini
30 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
31 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
32 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
33 -Kiki Siswanto-
ABAP HANDOUT 2010
8. Klik tombol bergambar disket untuk save. 9. Package diisi untuk membuat Data Element yang dapat di transport ke client lain.
34 -Kiki Siswanto-
ABAP HANDOUT 2010 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
35 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
36 -Kiki Siswanto-
ABAP HANDOUT 2010
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
37 -Kiki Siswanto-
ABAP HANDOUT 2010
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
38 -Kiki Siswanto-
ABAP HANDOUT 2010 -
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.
39 -Kiki Siswanto-
ABAP HANDOUT 2010 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
40 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
41 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
42 -Kiki Siswanto-
ABAP HANDOUT 2010 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
43 -Kiki Siswanto-
ABAP HANDOUT 2010
5. Isi Short Description dan field-field yang diperlukan.
6. Aktifkan field View Fields. Kemudian isi kolom-kolomnya seperti gambar berikut
44 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
45 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
46 -Kiki Siswanto-
ABAP HANDOUT 2010
6. Masukkan nama index yang ingin dibuat.
7. Klik Continue. 8. Isilah field sesuai dengan yang diinginkan
9. Klik tombol bergambar disket / save.
47 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
48 -Kiki Siswanto-
ABAP HANDOUT 2010
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 adala h penggunaan inner join karena itu akan memperberat jalannya aplikasi. Untuk mengganti Syntax left outer join dapat digunakan syntax for all entries in. Contoh :
49 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
50 -Kiki Siswanto-
ABAP HANDOUT 2010 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 sysubrc 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 wa-name
= '12400177'. = '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 :
51 -Kiki Siswanto-
ABAP HANDOUT 2010 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' 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.
52 -Kiki Siswanto-
AND
ABAP HANDOUT 2010 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.
53 -Kiki Siswanto-
ABAP HANDOUT 2010 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 :
54 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
55 -Kiki Siswanto-
ABAP HANDOUT 2010
3. Isilah nama include yang diinginkan.
4. Klik tombol check.
56 -Kiki Siswanto-
ABAP HANDOUT 2010
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 gi_it_fieldcat gi_it_excluding gi_it_special_groups LINE, 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
TYPE TYPE TYPE TYPE
slis_layout_alv, slis_t_fieldcat_alv WITH HEADER LINE, slis_t_extab WITH HEADER LINE, slis_t_sp_group_alv WITH HEADER
TYPE TYPE TYPE
slis_t_sortinfo_alv WITH HEADER LINE, slis_t_filter_alv WITH HEADER LINE, slis_sel_hide_alv,
LIKE TYPE TYPE TYPE TYPE
disvariant, slis_t_event slis_t_event_exit slis_print_alv, slis_reprep_id.
WITH HEADER LINE, WITH HEADER LINE,
*&-------------------------------------------------------------------- * *& Form fm_alv_show *&-------------------------------------------------------------------- * * text
57 -Kiki Siswanto-
ABAP HANDOUT 2010 *---------------------------------------------------------------------* * -->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.
58 -Kiki Siswanto-
ABAP HANDOUT 2010 * 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'.
59 -Kiki Siswanto-
ABAP HANDOUT 2010 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 gi_it_fieldcat-ref_tabname gi_it_fieldcat-ref_fieldname gi_it_fieldcat-no_out gi_it_fieldcat-outputlen gi_it_fieldcat-seltext_l gi_it_fieldcat-seltext_m gi_it_fieldcat-seltext_s gi_it_fieldcat-reptext_ddic gi_it_fieldcat-round gi_it_fieldcat-do_sum gi_it_fieldcat-hotspot gi_it_fieldcat-decimals_out gi_it_fieldcat-currency gi_it_fieldcat-quantity gi_it_fieldcat-qfieldname gi_it_fieldcat-cfieldname gi_it_fieldcat-checkbox gi_it_fieldcat-icon gi_it_fieldcat-fix_column off gi_it_fieldcat-key gi_it_fieldcat-key APPEND gi_it_fieldcat.
60 -Kiki Siswanto-
= = = = = = = = = = = = = = = = = = = =
fu_1. " Fieldname fu_2. " Reference Tablename fu_3. " Reference Fieldname fu_4. " (O)blig.(X)no out fu_5. " Output length fu_6. " long key word fu_7. " middle key word fu_8. " short key word fu_9. " heading (ddic) fu_10. " round in write statement fu_11. " sum up fu_12. " 'X' = hotspot is active -> Event click fu_13. " decimals in write statement fu_14. fu_15. fu_16. " field with quantity unit fu_17. " field with currency unit fu_18. " 'X' = checkbox or ' ' = not checkbox fu_19. " 'X' = icon or ' ' = not icon fu_20. " 'X' = Fix Column On or ' ' = Fix Column = &21. " = fu_21. " 'X' = Key or ' ' = not Key
ABAP HANDOUT 2010 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.
61 -Kiki Siswanto-
ABAP HANDOUT 2010 11. Klik tombol display. 12. Klik display Object list (shift+ctrl+f5) 13. Buka GUI STATUS pada tree menu
14. Salin GUI Status -- "Standard"
62 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
63 -Kiki Siswanto-
ABAP HANDOUT 2010 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 gi_it_fieldcat-seltext_m gi_it_fieldcat-seltext_s
= fu_6. " long key word = fu_7. " middle key word = fu_8. " short key word
gi_it_fieldcat-reptext_ddic = fu_9. " heading (ddic) gi_it_fieldcat-round gi_it_fieldcat-do_sum gi_it_fieldcat- hotspot
= fu_10. " round in write statement = fu_11. " sum up = fu_12. " 'X' = hotspot is active -> Event click
gi_it_fieldcat-decimals_out = fu_13. " decimals in write statement
64 -Kiki Siswanto-
ABAP HANDOUT 2010 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
65 -Kiki Siswanto-
ABAP HANDOUT 2010
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 functio n 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
66 -Kiki Siswanto-
ABAP HANDOUT 2010 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 .
67 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
68 -Kiki Siswanto-
ABAP HANDOUT 2010 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,
69 -Kiki Siswanto-
ABAP HANDOUT 2010 '|' 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
70 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
71 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
72 -Kiki Siswanto-
ABAP HANDOUT 2010
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 :
73 -Kiki Siswanto-
ABAP HANDOUT 2010 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 tcode 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.
74 -Kiki Siswanto-
ABAP HANDOUT 2010 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 :
75 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
76 -Kiki Siswanto-
ABAP HANDOUT 2010 -
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.
77 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
78 -Kiki Siswanto-
ABAP HANDOUT 2010 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
79 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
80 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
81 -Kiki Siswanto-
ABAP HANDOUT 2010
Mengganti Define dengan SubRoutine Define pada contoh diatas dapat diganti manjadi subroutine sepe rti 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, *
82 -Kiki Siswanto-
.
ABAP HANDOUT 2010 * '|' 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 cente red, '|' 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.
83 -Kiki Siswanto-
ABAP HANDOUT 2010 write : /'|' no-gap,(9) &2 cente red, '|' 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_heade r-matkl
gi_heade r-matnr
gi_heade r-maktx
gi_heade r-bis mt
gi_heade r-meins
gi_heade r-mseht.
Perform macro_data_possition using 'HEADER' 'Mat. Group' 'Mat. No.' 'Description' 'Old Mat. No.' 'Base Unit' 'Measure'.
84 -Kiki Siswanto-
ABAP HANDOUT 2010
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.
85 -Kiki Siswanto-
ABAP HANDOUT 2010
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
A A B B
86 -Kiki Siswanto-
2
3 4 dst.
ABAP HANDOUT 2010 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.
87 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
88 -Kiki Siswanto-
ABAP HANDOUT 2010 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
89 -Kiki Siswanto-
ABAP HANDOUT 2010 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 :
90 -Kiki Siswanto-
ABAP HANDOUT 2010 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).
91 -Kiki Siswanto-
ABAP HANDOUT 2010 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.
92 -Kiki Siswanto-
ABAP HANDOUT 2010
5. Klik 6. Klik
untuk memulai design layout(desain Tampilan). 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.
93 -Kiki Siswanto-
ABAP HANDOUT 2010 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 sintaxsintax html yang bukan 1 kesatuan. Misalnya : „
Sales Doc.Num | '.Sold to Party | '.Sales Org | '.Dist. Channel | '.Division | '.|||
' gi_header-vbeln ' | '.' gi_header-kunnr ' | '.' gi_header-vkorg ' | '.' gi_header-vtweg ' | '.' gi_header-spart ' | '.|||
'. | Sales Doc.Item | '.Mat Number | '.Sort Text | '.Quantity | '.Uom | '.Price | '.Curr | '.
'. | ' gi_detail-posnr ' | '.' gi_detail-matnr ' | '.' gi_detail-arktx ' | '.' tampung ' | '.' gi_detail-zieme ' | '.' tampung ' | '.' gi_detail-waerk ' | '.