Abap Handout - Kiki Siswanto [PDF]

  • Author / Uploaded
  • risa
  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

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 : „‟ „Matkl‟ „‟. -> 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 IF sy-subrc NE 0. ENDIF.



94 -Kiki Siswanto-



= web_container.



ABAP HANDOUT 2010 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 me nangkap event pada Html Code : DATA : gv_html_event_tab gv_html_event gv_repid LIKE sy-repid,



95 -Kiki Siswanto-



TYPE cntl_simple_events, TYPE cntl_simple_event,



ABAP HANDOUT 2010 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.



96 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



97 -Kiki Siswanto-



ABAP HANDOUT 2010 ENDIF.



Format SAPEvent pada Html



SAPEVENT:?



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 :



98 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



99 -Kiki Siswanto-



ABAP HANDOUT 2010 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‟.



100 -Kiki Siswanto-



ABAP HANDOUT 2010



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”



101 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



102 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



103 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



104 -Kiki Siswanto-



ABAP HANDOUT 2010



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)



105 -Kiki Siswanto-



ABAP HANDOUT 2010 4. Double klik ada tree menu Screen 2000. 5. Klik tombol 6. Klik



untuk memulai layout desain.



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.



106 -Kiki Siswanto-



ABAP HANDOUT 2010 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 6. Klik tombol



untuk memulai layout desain. kemudian dragke screen painter.



7. Setelah itu, Table Control wizard akan dieksekusi.



107 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



108 -Kiki Siswanto-



ABAP HANDOUT 2010



11. Pilihlah option – option yang diinginkan.



12. Ceklist Scroll dan kemudian klik continue.



109 -Kiki Siswanto-



ABAP HANDOUT 2010



13. Isilah Semua textbox dan klik continue.



110 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



111 -Kiki Siswanto-



ABAP HANDOUT 2010



4. Klik delete dan tekan yes untuk konfirmasi.



112 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



113 -Kiki Siswanto-



ABAP HANDOUT 2010 4. Pilih field yang diinginkan dan kemudian tekan tombol check.



5. Pilih tempat dimana field baru akan ditempatkan.



114 -Kiki Siswanto-



ABAP HANDOUT 2010



6. Field baru telah ter- insert.



115 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



116 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



117 -Kiki Siswanto-



ABAP HANDOUT 2010



Membuat Button Pada Gui Status Langkah – Langkah untuk membuat button pada Gui Status : 1. Ketikkan nama Function yang ingin dibuat. Nama Function



2. Pilih Static Text



118 -Kiki Siswanto-



Insert new entry



ABAP HANDOUT 2010 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.



119 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



120 -Kiki Siswanto-



ABAP HANDOUT 2010 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



121 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



122 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



123 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



124 -Kiki Siswanto-



ABAP HANDOUT 2010 Include nya berisi sebagai berikut : Deklarasi Data



DATA : gv_html_event_tab gv_html_event



TYPE cntl_simple_events, 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.



125 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



126 -Kiki Siswanto-



ABAP HANDOUT 2010 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).



127 -Kiki Siswanto-



ABAP HANDOUT 2010



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



128 -Kiki Siswanto-



ABAP HANDOUT 2010 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 : ''. WRITE_CODE1 :



'Mat Group: '.



WRITE_CODE1 :



''.



WRITE_CODE1 :



''.



WRITE_CODE1 : ''. 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 IF SY-SUBRC NE 0. ENDIF. ENDIF. ENDFORM.



129 -Kiki Siswanto-



= WEB_CONTAINER.



ABAP HANDOUT 2010



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



130 -Kiki Siswanto-



ABAP HANDOUT 2010



Soal 2 : Membuat input dari ABAP (Select Options) dan Menampilkannya dalam bentuk HTML. Input :



Output :



131 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



132 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



133 -Kiki Siswanto-



ABAP HANDOUT 2010 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



134 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



135 -Kiki Siswanto-



ABAP HANDOUT 2010 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 ''. LOOP AT gi_header. write_code1 '

'. write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code3 '



'.



write_code3 '



'.



write_code3 '



'.



write_code3 '



'.



write_code3 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



'.



write_code1 '



136 -Kiki Siswanto-



'.



ABAP HANDOUT 2010 LOOP AT gi_detail WHERE vbeln = gi_header-vbeln. write_code1 '



'.



write_code1 '



'.



write_code3 '



'.



write_code3 '



'.



write_code3 '



'.



WRITE gi_detail-zmeng TO tampung UNIT gi_detail-zieme. write_code3 '



'.



write_code3 '



'.



WRITE gi_detail-netpr TO tampung CURRENCY gi_detail-waerk. write_code3 '



'.



write_code3 '



'.



write_code1 '



'.



ENDLOOP. write_code1 '
'. write_code1 '
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 '
'. ENDLOOP. write_code1 ''. 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



137 -Kiki Siswanto-



filename



= fv_url



filetype



= 'ASC'



ABAP HANDOUT 2010 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 :



138 -Kiki Siswanto-



ABAP HANDOUT 2010 Output Alv Grid :



Output Dialog Programming - > tabel Control



139 -Kiki Siswanto-



ABAP HANDOUT 2010



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,



140 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



141 -Kiki Siswanto-



ABAP HANDOUT 2010 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 me nampilkan 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'.



142 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



143 -Kiki Siswanto-



ABAP HANDOUT 2010 WHEN '&VIEW'. PERFORM FM_VIEW_DETAIL. ENDCASE. MOVE 'X' TO fu_selfield-refresh. ENDFORM.



Buat Fungsi fm_vie w_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.



144 -Kiki Siswanto-



ABAP HANDOUT 2010 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 :



145 -Kiki Siswanto-



ABAP HANDOUT 2010 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



146 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



147 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



148 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



149 -Kiki Siswanto-



ABAP HANDOUT 2010 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".



150 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



151 -Kiki Siswanto-



ABAP HANDOUT 2010



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_ untuk setting lock. b. Dequeue_ untuk Release unlock. 7. Activate dan locking siap digunakan 8. Buka Se38 9. Buka program / Buat program 10. Call function_modul enqueue_ dengan menu pattern



11. Modifikasi sintaks call function ENQUEUE



152 -Kiki Siswanto-



ABAP HANDOUT 2010 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 MANDT



= 'E'



= SY-MANDT



TIPE_MOBIL



= SP_ED_MOBIL-TIPE_MOBIL



SERI_MOBIL



= SP_ED_MOBIL-SERI_MOBIL.



153 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



154 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



155 -Kiki Siswanto-



ABAP HANDOUT 2010



-



Basic settings : page format :



 untuk mengatur format page untuk form (bisa a4, kwarto, dll) .



2. Paragraph dan character format.



156 -Kiki Siswanto-



ABAP HANDOUT 2010 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



157 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



158 -Kiki Siswanto-



ABAP HANDOUT 2010



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



159 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



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



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 *



161 -Kiki Siswanto-



OTFDATA



=



ABAP HANDOUT 2010 * 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



162 -Kiki Siswanto-



ABAP HANDOUT 2010 -



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.



163 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



164 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



165 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



166 -Kiki Siswanto-



ABAP HANDOUT 2010



4. Tekan tombol check



5. Pilih lokasi untuk file xml smartforms.



Upload Forms



167 -Kiki Siswanto-



ABAP HANDOUT 2010 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



168 -Kiki Siswanto-



ABAP HANDOUT 2010



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



169 -Kiki Siswanto-



ABAP HANDOUT 2010 -



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.



170 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



171 -Kiki Siswanto-



ABAP HANDOUT 2010



4. Pada form interface digunakan untuk deklarasi.



172 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



173 -Kiki Siswanto-



ABAP HANDOUT 2010 9. Tekan tombol 10. Tekan tombol



untuk menambahkan kolom. 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.



174 -Kiki Siswanto-



ABAP HANDOUT 2010 Untuk megupload image buka tab BMAP Bitmap Image.



Setelah itu pada menu Graphic pilih import.



175 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



176 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



177 -Kiki Siswanto-



ABAP HANDOUT 2010



Lalu tekan tombol save.



Smartstyles Untuk mengatur tampilan pada smartforms baik paragraph maupun karakter dapat dilakukan pada tcode smartstyles.



178 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



179 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



180 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



181 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



182 -Kiki Siswanto-



ABAP HANDOUT 2010 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



183 -Kiki Siswanto-



ABAP HANDOUT 2010 Kemudian Pilih tab device types



Klik button format types.



Klik tombol change dan pilih create.



184 -Kiki Siswanto-



ABAP HANDOUT 2010



Masukkan nama page format dan atur width dan height yang diinginkan.



185 -Kiki Siswanto-



ABAP HANDOUT 2010 Lalu klik tombol save.



Pilih tab devide tabs lagi dan kemudian klik button Format types.



Lalu pilih menu formats dan pilih create.



186 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



187 -Kiki Siswanto-



ABAP HANDOUT 2010



Untuk menggunakan page format yang telah dibuat pada tcode SPADSmartforms pilih form attributes – output options – page format (ukuran kertas).



188 -Kiki Siswanto-



ABAP HANDOUT 2010



189 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



190 -Kiki Siswanto-



ABAP HANDOUT 2010 



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



191 -Kiki Siswanto-



ABAP HANDOUT 2010 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







o



192 -Kiki Siswanto-



Cek field-field yang ada apakah sesuai atau tidak.



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



iv. Screen exits : screen nya : se38 Business transaction events : untuk transaksi yang berhubungan dengan finance. : fibf (harus memiliki pengetahuan functional) 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



193 -Kiki Siswanto-



ABAP HANDOUT 2010



-



Pilih data kemudian klik button select view -> basic data 1 . lalu tekan check.



-



Lalu ubah nama material.



194 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



195 -Kiki Siswanto-



ABAP HANDOUT 2010



2. Execute program.



3. Buka tcode cmod. Masukkan nama project dan Create.



196 -Kiki Siswanto-



ABAP HANDOUT 2010



4. Masukkan description dan klik button enhancement assignment



5. Pilih yes.



197 -Kiki Siswanto-



ABAP HANDOUT 2010



6. Masukkan nama customer exits yang telah ditemukan dengan menggunakan program di atas.



7. Klik tombol components dari gambar diatas



198 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



199 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



200 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



201 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



202 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



203 -Kiki Siswanto-



ABAP HANDOUT 2010



Contoh BTE (Business Transaction Events) 1. Masuk ke tcode fbif



2. Klik Environment -> Info System



204 -Kiki Siswanto-



ABAP HANDOUT 2010



3. Klik execute



205 -Kiki Siswanto-



ABAP HANDOUT 2010



4. Pilih line item dan klik



206 -Kiki Siswanto-



ABAP HANDOUT 2010



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



207 -Kiki Siswanto-



ABAP HANDOUT 2010 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



208 -Kiki Siswanto-



ABAP HANDOUT 2010



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



209 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



210 -Kiki Siswanto-



ABAP HANDOUT 2010



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



211 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



212 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



213 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



214 -Kiki Siswanto-



ABAP HANDOUT 2010



Untuk melihat suatu sldb digunakan di program yang mana dapat digunakan dengan enekan tombol where-used list.



215 -Kiki Siswanto-



ABAP HANDOUT 2010 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 selectend select.



216 -Kiki Siswanto-



ABAP HANDOUT 2010



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 :



217 -Kiki Siswanto-



ABAP HANDOUT 2010



Select Options SLDB



Select options yang ditampilkan berasal dari logical database yang diletakkan pada tab selections. Contoh Select Options yang terdapat pada SLDB :



218 -Kiki Siswanto-



ABAP HANDOUT 2010



Teks yang ditampilkan pada select-options terdapat di logical database yang terletak pada tab selection teks.



219 -Kiki Siswanto-



ABAP HANDOUT 2010 Selection Texts



220 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



221 -Kiki Siswanto-



ABAP HANDOUT 2010 Untuk membuat / melakukan customize terhadap dynamic selections.



Lalu klik tombol create



222 -Kiki Siswanto-



ABAP HANDOUT 2010 Centanglah checkbox preselect untuk menampilkan select options ini terlebih dahulu.



Hasil dari Tampilan dynamic selections :



223 -Kiki Siswanto-



ABAP HANDOUT 2010 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.



224 -Kiki Siswanto-



ABAP HANDOUT 2010



Jika ada Exception dikarenakan kekurangan karakter yang disediakan. Cara mengatasi : 1. bikin types baru. 2. Tampilkan data ygn perlu saja.



225 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



226 -Kiki Siswanto-



ABAP HANDOUT 2010



Masukkan function2 yang ingin digunakan untuk di tes dan execute.



227 -Kiki Siswanto-



ABAP HANDOUT 2010



228 -Kiki Siswanto-



ABAP HANDOUT 2010



Day 12 Search Help Cara membuat search help : 1. Tcode se11 -> masukkan key nya -> check table. 2. Tcode se11 -> search help 3. Coding



229 -Kiki Siswanto-



ABAP HANDOUT 2010



Create Search Help :



230 -Kiki Siswanto-



ABAP HANDOUT 2010



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.



231 -Kiki Siswanto-



ABAP HANDOUT 2010



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



232 -Kiki Siswanto-



ABAP HANDOUT 2010



Setelah diaktifkan Tempelkan ke data element dan kemudian edit param assignment



233 -Kiki Siswanto-



ABAP HANDOUT 2010



Cara edit search help exit : 1. Buat group baru jangan digabungin. 2. Copy



234 -Kiki Siswanto-



ABAP HANDOUT 2010



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)



235 -Kiki Siswanto-



ABAP HANDOUT 2010 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 ker nel.



Setetelah dijalankan maka akan menampilkan tampilan sebagai berikut :



236 -Kiki Siswanto-



ABAP HANDOUT 2010



Tampilan di atas menampilkan syntax-syntax yang tidak sesuai dengan kernel dan harus diperbaiki.



237 -Kiki Siswanto-



ABAP HANDOUT 2010 Extended Check Extended sama halnya dengan Code Inspector. Namun tampilannya lebih sederhana.



238 -Kiki Siswanto-



ABAP HANDOUT 2010 Setelah memilih menu diatas maka akan tampil tampilan sebagai berikut :



Lalu jalankan program di atas.



239 -Kiki Siswanto-



ABAP HANDOUT 2010 RUNTIME ANALYSIS



240 -Kiki Siswanto-



ABAP HANDOUT 2010



241 -Kiki Siswanto-



ABAP HANDOUT 2010



Abap : code abapnya Db : databasenya



242 -Kiki Siswanto-



ABAP HANDOUT 2010 System : kernel



243 -Kiki Siswanto-



ABAP HANDOUT 2010



Sql trace



Aktifkan dengan klik tombol Activate trace



244 -Kiki Siswanto-



ABAP HANDOUT 2010



Jalankan program dari se38. Deactivate trace dengan klik tombol Deactivate Trace.



Tekan tombol check.



245 -Kiki Siswanto-



ABAP HANDOUT 2010



246 -Kiki Siswanto-



ABAP HANDOUT 2010 Day 13 Field symbols FIELD-SYMBOLS : TYPE table,  utk assign itab TYPE data,  utk assign structure (wa) 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
. 



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
. ASSIGN wa->* TO .  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
from (tabel) (field) diisi dg field dan (table) diisi dg nama table yg akan di select. Sedangkan
mrp itabnya.



Loop at
into .



247 -Kiki Siswanto-



ABAP HANDOUT 2010 Endloop.
dan ini diisi melalui code ASSIGN yg telah dideklarasikan sebelumnya.



REPORT



zt02_latihan36



.



TABLES : dd02l, dd03l. FIELD-SYMBOLS :
TYPE table, TYPE data, 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
. CREATE DATA wa LIKE LINE OF
. ASSIGN wa->* TO . SELECT (p_select) INTO CORRESPONDING FIELDS OF TABLE
FROM (p_tab) WHERE (p_where).



248 -Kiki Siswanto-



ABAP HANDOUT 2010 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_structure_name = p_itab "