Minggu, 26 Agustus 2007

Membuat ABAP Dialog Progam sederhana

Baca dulu: Mengenal Screen Painter.

Melalui contoh ini diperkenalkan:
1. cara membuat text field
2. cara membuat button
3. mengatur alur program



Step 1.
Masuk tcode SE38, buat program baru.

Step 2.
Deklarasikan data.
Program ini akan menampilkan text field di screen.
DATA: d_nama(40) TYPE c.

Step 3.
Tulis code berikut:
CALL SCREEN 100.
Code tersebut akan memanggil screen 100. Double click di screen 100 untuk masuk ke screen tsb.

Step 5.
Tambahkan element / object di layout editor.
Masuk ke layout editor, tambahkan object text di screen. Text field bisa ditambahkan dengan dua:
- cara pertama: drag & drop text object ke dalam screen dari list object. Namai sesuai nama variable di program (yaitu d_nama), lalu ubah attribute text dengan cara double click, akan muncul window atrribute, ubah lebar field sesuai dengan yang sudah dideklarasikan sebelum-nya.
- cara kedua: klik Goto -> Secondary window -> Dict/program fields. Tulis nama variable yang ingin di-insert ke layout (yaitu d_nama) , lalu klik "Get from program".

Tambahkan tombol dengan cara drag & drop dari list object.
Tiap tombol musti mempunyai attribute FctCode ( Function code). Saat tombol ditekan, nilai sy-ucomm akan berubah berdasarkan attribute FctCode dari tombol tersebut. Dalam contoh ini kita akan beri nilai FctCode = 'NEXT'.


Step 6.
Di flow logic screen 100.
Di event PBO, kita tidak melakukan apa2.
Di event PAI, kita ingin menangkap action (tombol ditekan) di screen tersebut, maka kita perlu buat buat untuk menangkap-nya. Buat satu module, misal-nya nama module-nya USER_COMMAND_0100. Double-click di nama module tersebut untuk membuat isi module. Di module tersebut, bila tombol yang ditekan adalah tombol dengan FctCode = 'NEXT', kita ingin keluar dari screen 100. Perintah-nya bisa dituliskan sebagai berikut.

MODULE USER_COMMAND_0100 INPUT.
IF sy-ucomm = 'NEXT'.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT

Perintah SET SCREEN 0 adalah perintah untuk keluar dari screen.
Perintah LEAVE SCREEN adalah perintah untuk keluar dari event PAI.
Bila perintah hanya SET SCREEN 0 saja tanpa LEAVE SCREEN, maka module2 di PAI akan di-execute seluruh-nya sampai selesai, baru setelah itu keluar dari screen tersebut.

Step 7.
Keluar dari Screen Editor, kembali ke program biasa.
Tekan tombol back dari screen untuk kembali ke ABAP editor biasa (transaction SE38).

Step 8.
Tulis data.

Berikut adalah program lengkap-nya:


REPORT ZAALGAL0009 .
*http://abap-gallery.blogspot.com
*Screen Painter: my first dialog program
DATA: d_nama(40) TYPE c.

start-of-selection.
* Buat screen 100
* Tambahkan element textbox dengan nama "d_nama".
* Tambahkan button dengan FctCode = 'NEXT'
* Buat Flow logic untuk screen 100
* PROCESS BEFORE OUTPUT.
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.

call screen 100.
WRITE :/ 'Nama=', d_nama.

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.

IF sy-ucomm = 'NEXT'.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.

ENDMODULE. " USER_COMMAND_0100 INPUT


Read More......

Dialog Programming: Mengenal Screen Painter

Screen painter adalah editor untuk membuat ABAP screen (dialog program). Screen painter diakses melalui TCode SE51. Berbeda dengan ABAP list report yang berfungsi untuk menampilkan data, dialog program biasanya digunakan untuk entry data.

Arsitektur Screen painter terdiri dari:

1. Screen Attributes.
Mengubah nama screen, menentukan type screen (normal, subscreen).

2. Flow logic
Flow logic berfungsi mengatur alur program.
Contoh sederhana dari flow logic adalah sbb:
PROCESS BEFORE OUTPUT. MODULE PBO_module1.
MODULE PBO_module2.
PROCESS AFTER INPUT. MODULE PAI_module1.
MODULE PAI_module2.
Structure flow logic disusun berdasarkan event, untuk contoh di atas ada dua event yg digunakan, yaitu "process before output" (PBO) dan "process after input" (PAI).
Event PBO dieksekusi sebelum screen ditampilkan. Gunanya antara lain adalah menentukan toolbar apa saja yang muncul, judul windows, mengubah attribute dari object2 secara dinamis.
Event PAI dieksekusi sesudah user melakukan suatu action (menekan tombol, melakukan double klik, dll) pada screen. PAI digunakan untuk mengeksekusi command berdasarkan action.
Flow logic hanya berfungsi untuk mengatur alur program, sedangkan program-nya sendiri berada di tempat lain, module di-eksekusi berdasarkan urutannya secara sekuensial. Untuk membuat isi module double-click di nama module.

3. Layout Editor
Layout editor berfungsi untuk menyusun letak object2 pada screen. Ada 2 pilihan setting untuk layout editor, graphic & list. Yang lebih mudah digunakan adalah yg graphic, untuk mengubah setting, di SE51, pilih Utilities -> Setting, di tab screen painter centang checkbox "Graphical layout editor".

Layout Editor
Screen layout memiliki elemen sbb:
i. Daftar element / object : di kiri layout terlihat daftar object2 (lable, textbox, checkbox, dll), drag & drop ke screen untuk memasukan element (object) ke screen.
ii. Name & text
Di atas screen daftar elemen terlihat "Name" & "Text", ini berfungsi untuk memberi nama dan default value pada object.
iii. Attribute window
Di sebelah kiri tanda help (?) terlihat kotak kecil berwarna kuning dengan alt = "Attributes window" atau bisa diakses melalui menu Goto->Secondari Window->Attributes. Ini berfungsi untuk mengubah setting object, misal-nya mengubah text field menjadi read only.
iv. Dictionary / program field.
Di sebelah kiri tanda help (?) terlihat kotak kecil berwarna kuning dengan alt = "Dictionary / program fields", berfungsi membuat object type text dengan attributes refer ke field di data dictionary atau field yg sudah dideklarasikan di program.

4. Element list
Element list berisi element2/object yang ada di sceen. Bisa digunakan untuk mengubah attributes suatu object. Element list jarang digunakan karena attributes object lebih mudah dimaintain di Layout Editor.

Read More......

Selasa, 14 Agustus 2007

Belajar ABAP

Apa itu ABAP?
ABAP (Advanced Business Application Programming) adalah bahasa pemrograman yang diperuntukkan membangun aplikasi SAP. SAP adalah suatu ERP dengan konsep open source. Seluruh program SAP yang ditulis dengan bahasa ABAP dapat dilihat oleh customer.


Untuk apa ABAP?
1. Membuat Report (ABAP report)
Walaupun SAP sudah menyediakan report2 standard. Namun terkadang report standard tersebut belum memenuhi kebutuhan customer yang sangat specific dan bervariasi.
2. Membuat form (SAP form)
Form adalah dokumen output dari SAP, contohnya adalah hasil cetak invoice, purchase order.
3. Menyesuaikan proses bisnis. (user exit, enhancement)
Terkadang proses bisnis yang sudah disediakan oleh SAP belum mencukupi. Contohnya, di perusahaan saya untuk membuat sales order, pembuatan sales order untuk material2 tertentu hanya bisa dilakukan untuk order type tertentu, hal ini tidak di-cover oleh SAP standard.
4. Memperbaiki bug SAP (implement SAP notes)
SAP memang tidak bersih dari bug, hal ini dimaklumi melihat perkembangan SAP yang terus menerus dan juga tingginya kompleksitas program. Untuk itu SAP menyediakan service berupa SAP notes. SAP notes adalah catatan2 tentang problem2 di SAP berikut solusi-nya.

Install SAP trial
Download ABAP trial

Sulitkah belajar ABAP?
Untuk mempelajari ABAP seluruh-nya memang tidak mudah. Namun sekedar untuk mempelajari syntax sederhana yang umum digunakan tidaklah sulit, karena ABAP memang dilengkapi syntax yang sangat mendukung reporting. Berikut contoh program untuk menampilkan sales order, sederhana bukan?.


report zgetsalesorder.
*deklarasi data
data t_report like tbl_salesorder occurs 10 with header line.
*ambil data
select * from tbl_salesorder into table t_report.
*tampilkan data
loop at t_report.
skip.
write t_report-salesorderno.
write t_report-kustomer.
endloop.

Read More......