Category

Wednesday, January 29, 2014

Bekerja dengan Drop Down List

Biasanya dropdown list digunakan dalam sebuah parameter. Berikut contoh source code penggunaan drop down list dalam paramater.

 *&---------------------------------------------------------------------*  
 *& Report ZTEST_DROPDOWN  
 *&  
 *&---------------------------------------------------------------------*  
 *&  
 *&  
 *&---------------------------------------------------------------------*  
 REPORT ZTEST_DROPDOWN.  
 TYPE-POOLS: VRM.  
 DATA: IT_LIST_OPTION   TYPE VRM_VALUES.  
 DATA: WA_LIST_OPTION  TYPE VRM_VALUE.  
 DATA: IT_LIST  TYPE TABLE OF DYNPREAD,  
    WA_LIST TYPE DYNPREAD.  
 DATA: V_SELECTED_VALUE(10) TYPE C.  
 *--------------------------------------------------------------*  
 *Selection-Screen  
 *--------------------------------------------------------------*  
 PARAMETERS: LIST TYPE C AS LISTBOX VISIBLE LENGTH 20.  
 *--------------------------------------------------------------*  
 *At Selection Screen  
 *--------------------------------------------------------------*  
 AT SELECTION-SCREEN ON LIST.  
  CLEAR: WA_LIST, IT_LIST.  
  REFRESH IT_LIST.  
  WA_LIST-FIELDNAME = 'LIST'.  
  APPEND WA_LIST TO IT_LIST.  
  CALL FUNCTION 'DYNP_VALUES_READ'  
   EXPORTING  
    DYNAME       = SY-CPROG  
    DYNUMB       = SY-DYNNR  
    TRANSLATE_TO_UPPER = 'X'  
   TABLES  
    DYNPFIELDS     = IT_LIST.  
  READ TABLE IT_LIST INDEX 1 INTO WA_LIST.  
  IF SY-SUBRC = 0 AND WA_LIST-FIELDVALUE IS NOT INITIAL.  
   READ TABLE IT_LIST_OPTION INTO WA_LIST_OPTION  
            WITH KEY KEY = WA_LIST-FIELDVALUE.  
   IF SY-SUBRC = 0.  
    V_SELECTED_VALUE = WA_LIST_OPTION-TEXT.  
   ENDIF.  
  ENDIF.  
 *--------------------------------------------------------------*  
 *Initialization  
 *--------------------------------------------------------------*  
 INITIALIZATION.  
  WA_LIST_OPTION-KEY = '1'.  
  WA_LIST_OPTION-TEXT = 'Pilihan1'.  
  APPEND WA_LIST_OPTION TO IT_LIST_OPTION.  
  WA_LIST_OPTION-KEY = '2'.  
  WA_LIST_OPTION-TEXT = 'Pilihan2'.  
  APPEND WA_LIST_OPTION TO IT_LIST_OPTION.  
  WA_LIST_OPTION-KEY = '3'.  
  WA_LIST_OPTION-TEXT = 'Pilihan3'.  
  APPEND WA_LIST_OPTION TO IT_LIST_OPTION.  
  WA_LIST_OPTION-KEY = '4'.  
  WA_LIST_OPTION-TEXT = 'Pilihan4'.  
  APPEND WA_LIST_OPTION TO IT_LIST_OPTION.  
  CALL FUNCTION 'VRM_SET_VALUES'  
   EXPORTING  
    ID       = 'LIST'  
    VALUES     = IT_LIST_OPTION  
   EXCEPTIONS  
    ID_ILLEGAL_NAME = 1  
    OTHERS     = 2.  
 *--------------------------------------------------------------*  
 *Start of Selection  
 *--------------------------------------------------------------*  
 START-OF-SELECTION.  
  WRITE:/ V_SELECTED_VALUE.  

Hasil akhirnya adalah sebagai berikut.

Eksekusi program.
Selamat Mencoba. :)

Membuat Form Sederhana

Kali ini saya akan membahas mengenai cara membuat sebuah form sederhana. Form yang akan dibuat berkaitan dengan tutorial Membuat Report ALV Grid Sederhana yang telah diposting sebelumnya. Casenya adalah, pada saat report billing telah ditampilkan, jika user melakukan double click di salah satu row report tersebut, maka akan ditampilkan sebuah form yang memuat detail dan item dari Billing Number pada row tersebut.

Muncul form berikut.
Data yang diperlukan adalah image ZLOGO_BILLING untuk header report, No Billing, Tanggal Billing, dan item data billing.

Berikut Langkah-langkah yang perlu dilakukan.

  • Masuk ke transaksi SMARTFORMS.Masukkan nama form, contohnya ZSF_BILLING, click Create
  • Awalnya, hanya ditampilkan 1 window pada form painter, yaitu main window. Untuk form ZSF_BILLING, kita akan create 2 window baru yang menampung gambar dan header. Window disini berfungsi sebagai layer. Jadi sebaiknya pisahkan setiap window tergantung keperluannya, agar lebih mudah dimaintain jika terjadi perubahan layout. Caranya adalah klik kanan subtree %PAGE1 New Page , pilih Create-Window.
  • Create 2 window, yaitu W_HEADER dan W_IMAGE, ubah layoutnya seperti berikut.
  • Untuk format text, kita gunakan ZMY_STYLE. Klik Node Form Attributes, pada tab Output Options, masukkan nama style di field Style.
  • Data yang akan ditampilkan di form diimport dari program ZRBILLING, jadi, diperlukan interface untuk mengakses (import,eksport, table, exception) data dari program tersebut. Klik node Form Interface, tambahkan variabel-variabel berikut. Pada tab Import :
  • Pada tab Tables :
    Tables tersebut bertype structure ZSTR_BILLING.
  • Klik node Global Definitions, tambahkan variabel WA_BILLING yang akan digunakan untuk output dari input interface IF_BILLING yang telah di-define sebelumnya di Form Interface, dan variabel V_FKIMG, yang akan digunakan sebagai variabel referensi yang menampung data bertipe QUANT. Dalam smartforms, biasanya data yang bertipe QUANT tidak dapat ditampilkan secara langsung seperti data tipe lainnya. Jadi, harus di-define sebuah variabel untuk menampung data tersebut.
  • Klik Tab Initialization, masukkan IF_BILLING sebagai input parameter dan WA_BILLING sebagai output parameters, dan pindahkan nilainya di editor yang telah tersedia.
  • Klik tab Currency/Quant. Fields, assign nilai data bertipe QUANT ke variabel penampung yang telah kita definisikan di Global Data.
  • Gambar ZLOGO_BILLING yang telah kita upload sebelumnya pada tutorial Upload Gambar ke Sistem SAP akan diinsert pada window W_HEADER. Klik kanan W_HEADER, pilih Create-Graphic. Pada tab General Attributes, masukkan nama gambar yg akan ditampilkan, tekan F4 (untuk memastikan apakah gambar tersebut terdapat di dalam sistem), jika ada, tekan enter. (jangan lupa pilih Color Bitmap Image)
  • Di window W_HEADER akan diinsert data Billing No dan Billing Date. Agar formatnya lebih rapi maka kita gunakan template. Template dapat digunakan sebagai ruler, user tinggal menentukan baris dan kolom tempat menginput data sesuai kebutuhan user. Sebagai contoh, kita gunakan template tanpa border yang terdiri dari 2 baris dan 2 kolom.
  • C(1,1) berisi text : 'Billing No'
    C(2,1) berisi billing no hasil import dari program
    C(1,2) berisi text : 'Billing Date'
    C(2,2) berisi billing date hasil import dari program
  • Klik kanan W_HEADER, Create-Template (TMP_HEADER), maka akan ditampilkan layout berikut.
  • Awalnya hanya terdapat sebuah cell pada template tersebut. Klik kanan Cell %C1, pilih Insert-Empty Line Underneath untuk menginsert row baru.
  • Klik icon pensil, kemudian bagi 2 cel tersebut.
  • Klik kanan template, pilih Create-Text.
  • Tentukan isi text di tab General Attibutes.
  • Tentukan posisi text tersebut, di baris berapa dan kolom berapa di tab Output Option, Screen Output structure, misalnya Line 1, Column 1.
  • Untuk text biasa, kita dapat mengetik langsung isi text, tapi untuk text yang mengandung nilai sebuah variabel, maka digunakan button insert field, dengan format text &[nama_variabel]&
  • Untuk template TMP_HEADER, create 4 text
    • TXT_BLNO
      Text : Billing No.
      Line 1 Column
    • TXT_BLDATE
      Text : Billing Date.
      Line 2 Column 1
    • TXT_DBLNO
      Text : &P_VBELN&.
      Line 1 Column 2
    • TXT_DBLDATE
      Text : &P_FKDAT&.
      Line 2 Column 2
  • Data item untuk setiap billing di-define di window MAIN. Dynamic data ditampung dalam tabel. Klik kanan window main, pilih Create-Table. Misalnya tabelnya diberi nama T_BILLING. Di tab table, define line yang akan digunakan sebagai template line table yang telah dicreate. Untuk kondisi saat ini, kita hanya perlu sebuah line type yang terdiri dari 9 kolom, dan memiliki border.
  • Klik kanan node Header, pilih Create-Table Line
  • Sebuah line dengan sembilan cell akan muncul secara otomatis, yang dapat kita isi dengan text. Berbeda dengan template, pada table tidak perlu define line dan column, tinggal isi text sesuai urutan yang dibutuhkan. Isi setiap text sesuai dengan kebutuhan form (Lihat kembali hasil akhir form di awal tutorial).
  • Lakukan hal yang sama di node Main Area, bedanya, setiap cell diisi dengan nilai variabel WA_BILLING yang telah diimport. Misalnya &WA_BILLING-VBELN& untuk cell pertama, dan varibael lain seterusnya. Khusus untuk Quantity, variabel yang digunakan adalah V_FKIMG bukan WA_BILLING-FKIMG.
  • Save dan aktivasi form.
  • Edit program ZRBILLING untuk memanggil smartforms yang telah dicreate. Edit ZRBILLING_TOP, tambahkan variabel berikut.
  • Tambahkan FORM F_USER_COMMAND di ZRBILLING_F01.
  • Tambahkan FORM F_CALL_FORM.
  • Edit form F_LIST_DETAIL, tambahkan code berikut.
  • Save program dan aktivasi kemudian eksekusi program.

Tuesday, January 28, 2014

Bekerja dengan Smart Styles

Smart Styles digunakan untuk menetapkan format karakter maupun paragraf yang nantinya dapat di-assign ke text atau fields dalam SmartForms.

Sebuah smart Style terdiri dari :

  • Header Data yang berisi nilai default dari Smart Style tersebut
  • Paragraph formats, termasuk indentasi dan spasi, font attributes, tab, dan outline & numbering
  • Character Formats, termasuk efek (superscript, subscript), barcode, dan font attributes
  • Warna dan style (underlines, italic, bold) untuk sebuah paragraph format atau character format.
Berikut cara membuat Smart Styles :
  • Masuk ke tcode SMARTFORMS, pilih Style, masukkan nama style yg akan di-create, contohnya ZMY_STYLE
  • Misalnya kita akan membuat format paragraph , klik kanan node Paragraph Formats, Create Node.
  • Masukkan nama format paragraph, misalnya H1 (Header 1),lalu tentukan propertiesnya sesuai dengan kebutuhan.
  • Untuk tutorial kali ini, format paragraph yang dibuat adalah sebagai berikut.
    • H1
    • Description : Header 1
      Alignment : Centered
      Font Family : A_SIMP
      Font Size : 16.0 pt
      Font Style : Bold
    • N1
    • Description : Normal 1
      Alignment : Left-aligned
      Indent, Left Margin : 1,00 MM
      Font Family : A_SIMP
      Font Size : 10.0 pt
    • TN
    • Description :Title Normal
      Alignment : Left-aligned
      Font Family : A_SIMP
      Font Size : 10.0 pt
      Font Style : Bold
    • TT
    • Description : Table Title
      Alignment : Centered
      Font Family : A_SIMP
      Font Size : 10.0 pt
      Font Style : Bold
  • Klik node Header Data, isi field berikut.
    Standart Paragraph : N1
    Font : A_SIMP
    Font Size : 10.0 pt
  • Save dan Aktivasi.

Upload Gambar ke dalam Sistem SAP

Sebuah gambar dapat dimasukkan ke dalam sistem SAP dengan cara mengimport gambar tersebut menggunakan transaksi SE78. Biasanya gambar tersebut digunakan pada saat membuat sebuah form. Gambar yang dapat diimport adalah gambar yang bertipe bitmap.

Cara mengimport gambar ke sistem SAP adalah sebagai berikut.

  • Masuk ke transaksi SE78, pilih menu GRAPHICS-BMAP. Click Import.
  • Masukkan directory path tempat gambar yang akan diupload disimpan di field File Name. Masukkan nama gambar yang akan diupload (jangan lupa diawali dengan huruf z- ya), misalnya ZLOGO_BILLING. Jika gambar yang diupload berwarna, pilih Color Bitmap Image, jika tidak, pilih Black and White Bitmap Image.
  • Tekan enter
  • Selamat mencoba ya. :)

Membuat Structure di ABAP

Structure merupakan data type yang terdiri dari beberapa komponen (field). Structure hanya menyimpan data sementara yang diakses untuk sebuah tujuan tertentu saat proses runtime berlangsung. Sebuah struktur hampir sama dengan sebuah table dalam ABAP Dictionary, yaitu bisa diakses dari program ABAP, tapi tidak berkaitan dengan object-object dalam database. Structure bisa digunakan berkali2 oleh objek yang berbeda. Structure disebut juga dengan transparent table.

Cara membuat sebuah structure adalah sebagai berikut.

  • Masuk ke transaksi SE11, pilih radio button Data Type. Sebagai contoh, nama structure yang akan kita buat adalah ZSTR_BILLING. Click button Create.
  • Saat pop up muncul, pilih Structure
  • Karena tutorial dalam blog ini berkaitan satu dengan yang lain, maka structure yang akan diciptakan terdiri dari field-field type TY_BILLING yang telah kita buat di tutorial Membuat Report ALV Grid Sederhana.
  • Untuk field bertipe Quantity, seperti field FKIMG, kita perlu menyertakan Currency/Quantity fields. Pada structure ZSTR_BILLING, field yang memiliki type quantity adalah field FKIMG. Data Currency/Qty fields dapat dilihat dari tabel asli yang mengandung field tersebut (diakses melalui T-Code SE11 juga)
  • Save dan aktivasi structure ZSTR_BILLING

Selamat mencoba. :)

Wednesday, January 15, 2014

Membuat Report ALV Grid Sederhana

Pemrograman ABAP akan sering berkaitan dengan ALV Report. Saya akan membahas cara membuat sebuah ALV Grid Report sederhana. Contoh report pada pembahasan kali ini akan menampilkan data billing, yaitu Billing No, Billing Date, Type, Category, Item, Material, Material Group, Description.

Berikut langkah-langkah yang perlu dilakukan:

  • Masuk ke transaksi SE38, create program baru, sebagai contoh, nama programnya "ZRBILLING".
  • Agar kodingannya lebih rapi, maka saya memisahkan bagian-bagian koding sesuai dengan keperluannya (ini bukan sesuatu hal yang harus diikuti, lakukan saja sesuai sense anda mengkoding. haha). Biasanya saya akan membagi2 programnya menjadi :
    • [ZPROGRAM]_TOP : berisi definisi global data, parameter, maupun selection screen
    • [ZPROGRAM]_F01 : berisi penggalan-penggalan program yang berupa FORM.
    • [ZPROGRAM]_O01 : berisi penggalan-penggalan program yang berupa Modul Before Output dalam sebuah screen.
    • [ZPROGRAM]_I01 : berisi penggalan-penggalan program yang berupa Module After Input dalam sebuah screen.
    • ZABAPALV : sebenarnya ini adalah program yang pernah saya peroleh saat mengikuti sebuah project SAP di salah satu client perusahaan tempat saya bekerja. Berisi template untuk membuat kerangka sebuah report ALV Grid, sehingga kita tidak perlu membuat line of code yang panjang dan berulang. (Izin share ya Pak, berbagi ilmu. hehe)
  • Biasanya fungsional akan memberikan spek program kepada ABAPer . Spek itu berbeda-beda sesuai keinginan fungsional atau kesepakatan bersama dengan programmer. Contoh spek report billing yang akan kita create adalah sebagai berikut.
  • Hasil akhir reportnya adalah sebagai berikut:
  • Berikut kode program ZRBILLING :
  • Kode Program ZRBILLING_TOP
  • Kode Program ZABAPALV dapat diunduh di sini
  • Kode Program ZRBILLING_F01 dapat diunduh di sini
  • Cara menggunakan template ZABAPALV adalah fieldcatalog di-assign di Form F_FIELD_CATALOG (nama form dapat diubah )
  • ALV Grid dibentuk di Form F_LIST_DETAIL (nama Form dapat diubah)
  • Save program dan aktivasi
  • Run program, maka akan ditampilkan selection screen seperti gambar berikut.
  • Agar selection screen sesuai dengan spek, ubah selection text dari selection screen. Buka Program, pilih Goto-Text Elements-Selection text.
  • Isi text Selection Screen sesuai dengan yang diinginkan, save dan aktivasi kembali program ZRBILLING.
  • Run program, report ZRBILLING akan ditampilkan.

Selamat mencoba ya, jangan lupa mengeksplore ZBAPALV-nya. Sekian info mengenai cara membuat Report ALV Grid sederhana, semoga bermanfaat. Thnx. :)

Tuesday, January 14, 2014

Mengedit Program di Client QA & Production tanpa Menggunakan CR

Saya akan membahas mengenai cara mengedit program di QA atau Production client tanpa harus menaikkan CR. Sebenarnya ini cara "yang kurang baik", hahaha, tpi terkadang kita butuh mengubah program di QA dan Production dalam waktu yang cepat tanpa harus transport CR.

Caranya adalah sebagai berikut.
- Masuk ke transaksi SE38, dan buka program LSTRDU34
- Set breakpoint di line 175 ("Case lv_subrc").


- Masuk ke transaksi SE38 dan buka program LSTRDU44
- Set breakpoint di line 165 ("Case sy-subrc").

- Buka program yang akan diedit, klik tombol "Change"
- Akan muncul pop up berikut,pilih "display"

- Program akan masuk ke sesi debug, klik dua kali variabel LV_SUBRC.

- Change nilai LV_SUBRC yang tadinya 4, menjadi 0, lalu tekan enter (jangan sampai lupa tekan tombol enter ya)

- Tekan tombol F8, dan program bisa diedit.

- Ubah program kemudian save dan aktivasi, abap program akan masuk kembali ke sesi debug, ubah nilai sy-subrc menjadi 0 seperti langkah sebelumnya, dan tekan F8 hingga program berhasil disimpan dan diaktivasi.
- Selamat mengutak-atik program, tapi kalau boleh, jika tidak terlalu urgent, lebih baik gunakan CR. Thnx :)