ABAP Objects vs Java: Hello World

Mungkin ada yang ingin tahu perbandingan OOP antara ABAP Objects dengan Java untuk program “Hello World”. Pada ABAP, bagian deklarasi class dipisahkan dengan bagian implementasi class (mirip Delphi).

 REPORT  z_oo_hello_world.

 *----------------------------------------------------------------------*
 *       CLASS welcome DEFINITION
 *----------------------------------------------------------------------*
 CLASS welcome1 DEFINITION CREATE PUBLIC"public class
   PUBLIC SECTION.
     CLASS-METHODS main.                  "public static void method
 ENDCLASS.

 *----------------------------------------------------------------------*
 *       CLASS welcome IMPLEMENTATION
 *----------------------------------------------------------------------*
 CLASS welcome1 IMPLEMENTATION.
   METHOD main.
     WRITE 'Hello World!'.
   ENDMETHOD.
 ENDCLASS.

 START-OF-SELECTION.  "Execute main
   welcome1=>main( ).

 *----------------------------------------------------------------------*
 *       Compare to Java
 *----------------------------------------------------------------------*
 * public class welcome1 {
 *     public static void main(String[] args) {
 *         System.out.println( "Hello World!" );
 *     }
 * }
Ditulis dalam Java, SAP. Tag: , , . Leave a Comment »

ABAP: Simple Address Book Part 2 (Database)

Setelah anda membuat Package seperti yang telah diuraikan di ABAP: Simple Address Book Part 1, sekarang saatnya membuat database dengan satu (1) tabel saja. Kalau terdiri dua tabel atau lebih maka judul artikel ini tidak mengandung kata simple lagi, hehehe.

1. Kembali ke “Repository Browser”, klik kanan Package Z_ADDRESS_BOOK, kemudian lanjutkan seperti pada gambar berikut. Jangan lupa ikuti sesuai nomor urutnya.

abok_db_00

2. Nama database tidak diperlukan karena sudah menyatu dengan Package. Masukkan nama tabel ZADDRESS sebagaimana berikut:

abok_db_01

3. Untung penanganan “Delivery and Maintenance” tiru saja seperti gambar berikut. “Delivery Class” jenis A berarti tabel ini dapat menangani transaksi (CRUD).

abok_db_02

4. Sekarang saatnya membuat “table fields”. Buatlah kolom-kolom tabel seperti yang ditunjukkan pada gambar berikut. “Data Element” adalah mirip dengan Domain atau nama tipe data, baik yang telah dibuat oleh SAP (predefined) atau yang kita buat sendiri. Masukkan saja nama-nama “Data Element” seperti pada contoh walaupun anda belum membuatnya. Setelah semua nama field dan “Data Element” dimasukkan, langkah selanjutnya adalah membuat “Data Element”. “Data Element” yang pertama kali kita buat adalah ZADDRESS_ID dengan cara men-dobel klik-nya.

abok_db_03

Baca entri selengkapnya »

Ditulis dalam SAP. Tag: , . Leave a Comment »

ABAP: Simple Address Book Part 1 (Package)

Pada awalnya saya kesulitan mencari artikel sederhana tentang bagaimana membuat aplikasi sederhana dengan ABAP. Setelah mencoba sendiri membuat aplikasi sederhana dengan ABAP, ternyata membutuhkan proses yang cukup panjang daripada umumnya bila menggunakan C# atau Delphi misalnya. Kemungkinan karena saya belum terbiasa saja. Penggunaan Class dan Function Builder terlalu overkill untuk proyek sederhana, tetapi bisa jadi akan sangat membantu untuk proyek yang besar.
Ok, saya akan memberi gambaran bagaimana membuat aplikasi buku alamat sederhana dengan menggunakan ABAP Objects di SAP Netweaver (). Untuk yang belum pernah mencoba ABAP, awas, ini bukan tutorial dan saya tidak akan menjelaskan secara detil setiap setting yang dipilih. Saya mengharapkan bahwa anda bisa mendapatkan gambaran (big picture) bagaimana aplikasi ini dibuat. Silakan membaca buku ABAP Object – ABAP Programming in SAP NetWeaver (http://sap-press.com/product.cfm?account=&product=H1934) untuk pendalaman lebih lanjut.
Secara garis besar aplikasi ini dibuat melalui tiga tahap, yaitu pembuatan:
1. Package,
2. Database,
3. Program/Code.
Pada kesempatan ini saya hanya membahas Package sedang tahap-tahap berikut akan dibahas di artikel berikutnya. Package adalah wadah semua obyek-obyek yanga akan dibuat. Wadah (package) ini mirip dengan project group. Wadah ini akan menampung obyek-obyek database, class, function, atau program. Bila proyek sudah selesai maka kita cukup memindahkan package ini ke test machine dan selanjutnya ke production machine. Mari kita mulai.

Pada awalnya saya kesulitan mencari artikel tentang bagaimana membuat aplikasi sederhana dengan ABAP. Setelah mencobanya sendiri , ternyata membutuhkan proses yang cukup panjang daripada bila menggunakan misalnya C# atau Delphi, sehingga orang malas membuat tutorialnya. Penggunaan Class dan Function Builder terlalu overkill untuk proyek sederhana, tetapi bisa jadi akan sangat membantu untuk proyek yang besar.

Ok, saya akan memberi gambaran bagaimana membuat aplikasi buku alamat sederhana dengan menggunakan ABAP Objects di SAP Netweaver. Untuk yang belum pernah mencoba ABAP, awas, ini bukan tutorial dan saya tidak akan menjelaskan secara detil setiap entri yang dipilih. Saya mengharapkan bahwa anda bisa mendapatkan gambaran (big picture) tentang bagaimana aplikasi ini dibuat. Silakan membaca buku ABAP Object – ABAP Programming in SAP NetWeaver untuk pendalaman lebih lanjut.

Secara garis besar aplikasi ini dibuat melalui tiga proses, yaitu pembuatan:
1. Package,
2. Database,
3. Program/Code.

Pada kesempatan ini saya hanya membahas Package sedang tahap-tahap berikut akan dibahas di artikel lanjutannya. Package adalah wadah semua obyek-obyek yang akan dibuat. Wadah (package) ini mirip dengan project group. Package ini akan menampung obyek-obyek database, class, function, program atau report. Bila proyek sudah selesai maka kita cukup memindahkan package ini ke “test system” dan selanjutnya ke “production system”. Boleh dikatakan bahwa Package adalah bagian dari sistem logistik untuk obyek-obyek. Mari kita mulai.

1. Buka transaksi SE80. Kemudian ikuti petunjuk dalam gambar berikut sesuai nomor urutnya.

abook_pkg_0

2. Kemudian muncul Package Builder. Ikuti petunjuk dalam gambar berikut sesuai nomor urutnya. Yang di-entri harus sama dengan apa yang ditampilkan berikut pula:

abook_pkg_1

Baca entri selengkapnya »

Ditulis dalam SAP. Tag: , . 1 Komentar »

Mencoba Web Dynpro for ABAP: Tutorial 4 – Display Bookings of Selected Flight

Berhasil mencoba ‘Web Dynpro for ABAP: Tutorial 4 – Display Bookings of Selected Flight’ dari Web Dynpro for ABAP: Tutorials for Beginners. Tutorial 4 adalah kelanjutan dari tutorial-tutorial sebelumnya. Berikut adalah semua penerbangan dari SINGAPORE menuju JAKARTA bersama penumpang yang telah BOOKING:

T4-01

Sayang, tidak ada permasalahan atau kejutan-kejutan yang berarti pada saat mengikuti tutorial 4 ini. Apa yang tertulis di tutorial 4 dapat diikuti dengan tanpa masalah, asal anda telah berhasil juga mempraktekkan tutorial-tutorial sebelumnya. Jadi ya cuma gini aja posting-an saya… hehehe.

Sampai jumpa di pengalaman saya mempraktekkan tutorial 5.

Ditulis dalam SAP. Tag: , . 2 Komentar »

Mencoba Web Dynpro for ABAP: Tutorial 3 – Navigation

Berhasil mencoba ‘Tutorial 3 – Navigation’ dari Web Dynpro for ABAP: Tutorials for Beginners. Berikut adalah penerbangan dan SAN FRANSISCO menuju SINGAPORE:

T3-03

Setelah dicoba ternyata tidak ada penerbangan dari JAKARTA menuju SINGAPORE:

T3-04

Namun saya mendapatkan kejutan kejutan pada saat mengikuti petunjuk tutorial tersebut. Terkadang tutorial tidak menunjukkan secara detil tentang suatu operasi atau tidak diberi contoh gambar. Kesulitan yang saya alami dan terpecahkan adalah sebagai berikut:

1. Pada halaman 6 bagian atas terdapat teks:
Copy the Web Dynpro component ZZ_00_BAPIFLIGHT from Tutorial 2 to a new component with name ZZ_00_BAPINAV.
Adjust the name of the window according to the component name.
Setelah mencoba mengikuti instruksi tersebut, saya mendapatkan error:
RFC system error for destination GTADIR_SERVER
Namun proses peng-copy-an tetap berhasil.

1. Pada halaman 6 bagian atas terdapat teks:

Copy the Web Dynpro component ZZ_00_BAPIFLIGHT from Tutorial 2 to a new component with name ZZ_00_BAPINAV. Adjust the name of the window according to the component name.

Setelah mencoba mengikuti instruksi tersebut, saya mendapatkan error:

RFC system error for destination GTADIR_SERVER

Namun proses peng-copy-an tetap berhasil. Lain kali akan googling dulu mengapa error itu muncul.

2. Pada halaman 17 bagian bawah terdapat teks:

You can use the code wizard to generate the access to the attribute CITY of node DESTINATION_FROM and modify it for the second attribute. The concatenate statement assembles the string together. The method set_attribute links the message to UI element.

Dalam tutorial tidak ditunjukkan secara visual tentang cara menggunakan code wizard. Berikut adalah cara saya menggunakan wizard pembuatan kode untuk mendapatan kota asal penerbangan (perhatikan urutan angkanya):

T3-01

Lalu kode akan dibuat secara otomatis. Ralat: urutan yang benar dari gambar di atas adalah (1) taruh cursor di sini, (2) klik wizard. Variabel lv_city saya ganti menjadi lv_city_from dengan cara berikut:

T3-02

Kembali ke editor dan taruh cursor di atas endmethod. Lakukan hal yang sama untuk DESTINATION_TO.

Setelah selesai, kode lengkapnya adalah sebagai berikut. Dibawah komentar ’set text message’ adalah hasil ketikan manual. Memang hasil kodenya lebih panjang dari tutorial, namun saya ingin tahu konstruksi kode yang dibuat secara otomatis ini.

method HANDLENO_FLIGHTS_FOUND .
***************************
* get destination from city
***************************    
  data lo_nd_destination_from type ref to if_wd_context_node.
  data lo_el_destination_from type ref to if_wd_context_element.
  data ls_destination_from type wd_this->element_destination_from.
  data lv_city_from like ls_destination_from-city.

* navigate from <CONTEXT> to <DESTINATION_FROM> via lead selection
  lo_nd_destination_from = wd_context->get_child_node( name = wd_this->wdctx_destination_from ).
* get element via lead selection
  lo_el_destination_from = lo_nd_destination_from->get_element(  ).
* get single attribute
  lo_el_destination_from->get_attribute(
    exporting
      name = `CITY`
    importing
      value = lv_city_from ).

*************************
* get destination to city
*************************    
  data lo_nd_destination_to type ref to if_wd_context_node.
  data lo_el_destination_to type ref to if_wd_context_element.
  data ls_destination_to type wd_this->element_destination_to.
  data lv_city_to like ls_destination_to-city.

* navigate from <CONTEXT> to <DESTINATION_TO> via lead selection
  lo_nd_destination_to = wd_context->get_child_node( name = wd_this->wdctx_destination_to ).

* get element via lead selection
  lo_el_destination_to = lo_nd_destination_to->get_element(  ).

* get single attribute
  lo_el_destination_to->get_attribute(
    exporting
      name =  `CITY`
    importing
      value = lv_city_to ).

*************************
* set text message
*************************    
  data text type string.
  CONCATENATE 'no flights available from' lv_city_from 'to' lv_city_to INTO text SEPARATED BY ' '.
  wd_context->set_attribute( name = 'TEXT' value = text )endmethod.

secara otomatis ini. Awas, perhatikan penggunaan kurung. Berikut akan menghasilkan 'syntax error' karena 'text' dan ')' tersambung:

 

    wd_context->set_attribute( name = 'TEXT' value = text).
Ok, Sampai jumpa di Mencoba Tutorial berikutnya.
Ditulis dalam SAP. Tag: , . Leave a Comment »