Modul ABAP I v1
Modul ABAP I v1
MODUL PRAKTIKUM
Version 1.0 (2012)
SAP University
Partnership Program
Politeknik Pos Indonesia
Disusun Oleh:
Ari Yanuar Ridwan
, S.T.,M.T
.
ABAP Programming Modul
Praktikum I
Daftar ISi
1 Pendahuluan............................................................................................................. 5
1.1 Mempersiapkan Sistem Sap Netweaver 7 Pada VM Ware....................................5
1.2 Tujuan................................................................................................................. 5
1.3 Praktek................................................................................................................ 5
1.3.1 Menjalankan SAP ABAP Netweaver pada VMWare........................................5
1.3.2 Melakukan Log on kepada sistem untuk pertama kali................................11
1.3.3 Menjalankan Object navigator....................................................................13
1.4 Tugas 1.............................................................................................................. 15
2 Membuat Package, Program dan Transaction..........................................................15
2.1 Tujuan............................................................................................................... 15
2.2 Praktek.............................................................................................................. 15
2.2.1 Membuat Package....................................................................................... 15
2.2.2 Membuat Program ABAP Sederhana Z#_GS...............................................19
2.2.3 Aktivasi Objek............................................................................................. 23
2.2.4 Membuat Transactions................................................................................ 23
2.3 Tugas 2.............................................................................................................. 28
3 Elemen Dasar dalam Bahasa Pemrograman ABAB..................................................28
3.1 Tujuan............................................................................................................... 28
3.2 Praktek.............................................................................................................. 29
3.2.1 Membuat Program Z#_COMPUTE...............................................................29
3.2.2 Membuat Program Z#_CALC_I (Menghitung data obje bertipe integer)......30
3.2.3 Membuat Program Z#_CALC_P (Menghitung data objek bertipe Packed).. .33
3.3 Tugas 3.............................................................................................................. 36
4 Working With Structure And Internal Table..............................................................37
4.1 Tujuan............................................................................................................... 37
4.2 Praktek.............................................................................................................. 37
1 Pendahuluan
1.1 Mempersiapkan Sistem Sap Netweaver 7 Pada VM Ware
1.2 Tujuan
Setelah melaksanakan Praktikum ini mahasiswa diharapkan dapat:
1. Menjalankan SAP ABAP Netweaver 7.0 pada VMWare
2. Logon pada sistem SAP ABAP Netweaver 7.0
3. Membuat user pada sistem SAP ABAP Netweaver 7.0
1.3 Praktek
2. Setealah VM Ware terinstal, Open virtual machine, pilih sapides, lalu jalankan
Vmware sapides tersebut seperti pada gambar-gambar berikut. Sapides adalah
nama VMWare Image dimana SAP ABAP sudah diinstal pada sistem operasi
Windows XP.
3. Sesudah berhasil menjalankan sistem opersi Windows XP, logon pada user
nspadm, dengan passord P0lt3kP05. Seperti pada gamba di bawah berikut.
4. Sesudah berhasil logon ke dalam windows sebagai user nspadm, lalu jalankan
SAP Management Console untuk menjalankan message server dan dispatcher.
5. Pada Management consoe Jalankan NSP server dengen cara klik kanan lalu pilih
start.
7. Tunggu hingga semua process list berwarna hijau, dalam kasus ini terdapat dua
buah proses, yaitu msg_server.exe (message server) dan disp+work.exe
(dispatcher).
8. Sesudah process liset semuanya berwarna hijau, maka kita bisa logon ke dalam
sistem SAP ABAP Netweaver 7.0
3. Sesudah variabel logon dengan nama sapides dibuat, maka Log on dengan user
dan password nirwan.
4. Sesudah berhasil logon, maka akan tampil SAP Easy Access. Perlu diketahui
bahwa menu SAP IDES screen yang ada adalah khusus untuk ABAP. Karena
pada sistem ini yang terintal hanya sistem ABAP.
1.4 Tugas 1.
1. Akses SAP IDES di internet pada alamat www.consolut.net
2. Buat userid dan password pada situs tersebut
3. Logon kepada sistem
4. Print screen langkah-langkahnya lalu hasilnya dikumpulkan pada pertemuan
berikutnya.
2.2 Praktek
ii. Jika package tersebut belum ada maka akan ditampilkan dialog
untuk membuat package tersebut. Tetapi jika nama package yang
kita masukkan sudah ada maka akan ditampilkan package tersebut.
i. Pada dialog box, cari option terkait package lalu masukan nama
package.
ii. Pilih Button Create, Atau tekan F5 untuk membuat object baru
tersebut.
3. Assign package kepada change request. Bisa dengan membuat change request
baru atau diassign kepada change request yang sudah ada. Berikut adalah
langkah ketika di-assign kepada change request baru.
a) Masukkan deskripsi dari request
b) Otomatis oleh sistem akan dibuatkan request baru. Sesudah itu enter.
4. Access Key
Ketika pertama kali membuat object, maka akan diinta untuk memasukkan access key.
Access Key Untuk user Nirwan adalah: 25500393221492440973
c. Cara ketiga, melalui Edit Object, dengan cara yang sama seperti pada
membuat package.
- Masukkan nama program, pilih radio button Program, lalu enter.
- Maka akan ditampilan layar ABAP Editor untuk program yang baru
dibuat.
3. Masukkan transaction code yang akan digunakan. Tambahkan short text dan pilih
Program and Selection Screen (Report Transaction).
4. Pada screen berikutnya, masukan nama program dan pilih Professional User
Transaction. Pada GUI Enabled pilih indikator SAP GUI for Windows.
7. Untuk menjalankan transaction dari SAP Easy Access menu bisa dilakukan
dengan cara:
2.3 Tugas 2.
1. Buat Program untuk menampilkan
a. nama dan NPM.
b. parameter pada System (minimal 5 parameter), contoh: siapa yang logon,
waktu, bahasa yang digunakan, dll.
2. Kumpulkan pada pertemuannya berikutnya dalam bentuk hardcopy.
3.2 Praktek
2. Definisikan dua input parameter untuk dua buah nilai integer dengan nama
pa_int1 dan pa_int2 dan satu operator aritmetika dengan nama pa_op.
3. Definikan satu elementary data object dengan nama result dan memiliki dua
desimal.
REPORT z10578094_calc_i.
PARAMETERS:
pa_val1 TYPE i DEFAULT 5, " input variable 1
pa_val2 TYPE i DEFAULT 3. " input variable 2
DATA:
gv_result TYPE i. " result variable
START-OF-SELECTION.
WRITE: / text-001 COLOR COL_HEADING.
* (001) EN: 'calculate with
integer data'
SKIP 1.
WRITE: / text-002, pa_val1 COLOR COL_KEY,
/ text-003, pa_val2 COLOR COL_KEY.
* (002) EN: 'operand 1 = '
* (003) EN: 'operand 2 = '
SKIP 2.
* addition: a + b
gv_result = pa_val1 + pa_val2.
* subtraction: a - b
gv_result = pa_val1 - pa_val2.
* division: a / b
gv_result = pa_val1 / pa_val2.
* multiplication: a * b
gv_result = pa_val1 * pa_val2.
REPORT z10578094_calc_p.
PARAMETERS:
pa_val1 TYPE p LENGTH 8 DECIMALS 2 DEFAULT 5, " input variable 1
pa_val2 TYPE p LENGTH 8 DECIMALS 3 DEFAULT 3. " input variable 2 DATA:
gv_result TYPE p LENGTH 8 DECIMALS 4. " result variable
START-OF-SELECTION.
WRITE: / text-001 COLOR COL_HEADING.
* (001) EN: 'calculate with
packed data'
SKIP 1.
WRITE: / text-002, pa_val1 COLOR COL_KEY,
/ text-003, pa_val2 COLOR COL_KEY.
* (002) EN: 'operand 1 = '
* (003) EN: 'operand 2 = '
SKIP 2.
* addition: a + b
gv_result = pa_val1 + pa_val2.
* subtraction: a - b
gv_result = pa_val1 - pa_val2.
* division: a / b
gv_result = pa_val1 / pa_val2.
* multiplication: a * b
gv_result = pa_val1 * pa_val2.
3.3 Tugas 3
1. Buat program untuk menghitung IPK dari tiga mata kuliah
2. Kumpulkan dalam bentuk hardcopy pada pertemuan berikutnya.
4.2 Praktek
Komponen Tipe
Carrid s_carr_id
connid s_conn_id
Fldate s_date
Seatsmax s_seatsmax
Seatsocc s_seatcocc
Percentage P decimals 2, length 3
Solusi:
3. Definisikan sebuah work area dengan nama wa_flight untuk tipe struktur di atas.
Solusi:
Solusi:
5. Buat select loop untuk mengambil data dari tabel sflight lalu disimpan dalam wa_flihgt,
dihitung persentasi penumpang pada setiap penerbang, lalu ditampilkan ke layar.
Solusi:
Solusi lengkap:
*&---------------------------------------------------------------------*
*& Report Z10578094_SELECT_SFLIGHT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z10578094_select_sflight.
WRITE: / wa_flight-carrid,
wa_flight-connid, wa_flight-fldate,
wa_flight-seatsmax, wa_flight-
seatsocc, wa_flight-percentage.
ENDSELECT.
IF sy-subrc NE 0.
WRITE: ' No ', pa_car, 'flight found !'. ENDIF.
tabel)
1. Buat Program dengan nama Z##_SELECT_SFLIGHT_ITAB (## ganti dengan NPM) tanpa
TOP Include.
2. Deklarasikan sebuah tipe strukutr lokal dengan nama Z##_SBC400F0CC dengan
komponen sebagai berikut:
Komponen Tipe
Carrid s_carr_id
Connid s_conn_id
Fldate s_date
Seatsmax s_seatsmax
Seatsocc s_seatcocc
Solusi:
Solusi:
Solusi:
5. Definisikan sebuah work area dengan nama wa_flight untuk variabel struktur yang
memiliki tipe yang sama dengan line type dari internal tabe ITAB_Z##_SBC400FOCC.
Solusi:
Solusi:
7. Lakukan perintah select terhadap tabel sflight untuk field carrid, connid, fldate,
seatsmax, seatsocc untuk ditamping dalam wa_flight dimana carrid = pa_car.
8. Insert wa_flight ke dalam internal tabel ITAB_Z##_SBC400FOCC untuk menampung
semua nilai yang ada
Solusi:
9. Lalu tampilkan nilai yang ada pada internal tabel ITAB_Z##_SBC400FOCC tersebut.
Solusi:
Solusi:
Solusi lengkap:
*&---------------------------------------------------------------------*
*& Report Z10578094_SELECT_SFLIGHT_ITAB
*&
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z10578094_select_sflight_itab.
IF sy-subrc = 0.
4.3 Tugas 4
1. Buat program untuk menampung dan menampilkan data struktur yang
memiliki komponen nama dan NPM
2. Kumpulkan pada pertemuan berikutnya.
5.2 Praktek.
1. Salin program Z##_SELECT_SFLIGHT yang sudah dibuat sebelumnya ke dalam
program Z##_DETAIL_LIST.
2. Buat variabel working area wa_sbook dengan table type sbook.
Solusi:
START-OF-SELECTION.
4. Supaya dapat mengakses key values dari setiap baris ketika basic list row dipilih,
buat Hide area dalam program sesudah blok program untuk menampilkan basic
list. Key values yang relevan dalam hal ini adalah wa_flight-carrid, wa_flight-
connid, wa_flight-fldate
Solusi:
5. Buat event AT LINE-SELECTION untuk implementasi list dari basic list diatas dan
gunakan sy-lsind untuk memilih list yang akan ditampilkan (dalam kasus ini karena
hanya ada satu list, maka sylsind nilainya 1). Sy-lsind ini digunakan sebagai kontrol
untuk pengaturan list dalam blok AT LINE-SELECTION. Gunakan uline skip untuk
menstrukturkan list. Lalu retrieve semua data booking dari jadwal penerbangan
yang dipilih dari database table sbook dan tampilkan dalam detail list. Tampilkan
hanya field Bookid, customid, custtype, class, order_date, smoker, cancelled.
Solusi:
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: wa_flight-carrid,
wa_flight-connid, wa_flight-
fldate.
ULINE.
SKIP.
* menampilkan list
WRITE: / wa_sbook-bookid,
wa_sbook-customid, wa_sbook-
custtype, wa_sbook-class,
wa_sbook-order_date, wa_sbook-
smoker, wa_sbook-cancelled.
ENDSELECT.
ENDIF.
CLEAR wa_flight.
Solusi Lengkap:
*&---------------------------------------------------------------------*
*& Report Z10578094_DETAIL_LIST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z10578094_DETAIL_LIST.
WRITE: / wa_flight-carrid,
wa_flight-connid, wa_flight-fldate,
wa_flight-seatsmax, wa_flight-
seatsocc, wa_flight-percentage.
hide: wa_flight-carrid, wa_flight-connid, wa_flight-fldate.
ENDSELECT.
IF sy-subrc NE 0.
WRITE: ' No ', pa_car, 'flight found !'.
ENDIF.
uline.
skip.
* menampilkan list
write: / wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-class, wa_sbook-
order_date, wa_sbook-
smoker, wa_sbook-
cancelled. endselect.
endif. clear wa_flight.
6 SCREEN
6.1 Tujuan
Setelah melaksanakan praktikum ini mahasiswa diharapkan dapat:
1. Memhami konsep screen dalam ABAP
2. Membuat screen dan memanggilnya
3. Melakukan transfer data antar screen
4. Melengkapi screen dengan pushbutton
6.2 Praktek
Solusi:
Solusi:
Solusi Lengkap:
*&---------------------------------------------------------------------*
*& Report Z10578094_SEL_SCREEN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z10578094_sel_screen.
START-OF-SELECTION.
WRITE: / wa_flight-carrid,
wa_flight-connid, wa_flight-fldate,
wa_flight-seatsmax, wa_flight-seatsocc,
wa_flight-percentage.
ENDSELECT.
IF sy-subrc NE 0.
WRITE: ' No ', pa_car, 'flight found !'.
ENDIF.
AT LINE-SELECTION.
IF sy-lsind = 1.
WRITE: wa_flight-carrid, wa_flight-
connid, wa_flight-fldate.
ULINE.
SKIP.
* menampilkan list
WRITE: / wa_sbook-bookid,
wa_sbook-customid, wa_sbook-custtype,
wa_sbook-class, wa_sbook-order_date,
wa_sbook-smoker, wa_sbook-cancelled.
ENDSELECT.
ENDIF.
CLEAR wa_flight.
*&---------------------------------------------------------------------*
*& Report Z10578094_DYNPRO_1 *
*&---------------------------------------------------------------------*
REPORT z10578094_dynpro_1.
START-OF-SELECTION.
IF sy-subrc = 0.
WRITE: / wa_sbook-carrid COLOR col_key,
wa_sbook-connid COLOR col_key,
wa_sbook-fldate COLOR col_key,
wa_sbook-bookid COLOR col_key. ENDIF.
ENDSELECT.
2. Jalankan program tersebut dengan dimana travel agency number adalah 188
3. Tambahkan kode pada event AT LINE-SELECTION sehingga ketika suatu baris dalam
basic list (booking data) dipilih maka akan memanggil screen. Buat screen ini
dengan menggunakan forward navigation. Beri nomor screen tersebut 100.
AT LINE-SELECTION.
4. Double click 100, akan muncul dialog untuk membuat screen baru, pilih yes.
Atribut Value
Short Mengubah booking data Z##
Descripton
Next Screen 0
Mainten 21
83
6. Save, lalu jalankan program tersebut. Maka ketika melakukan double click pada
basic list akan memanggil screen 100.
7. Kembali ke program, lalu panggi kembali screen 100, pilih Grapich Layout Editor,
sehingga akan tampil gambar seperti berikut:
8. Pada Screen Painter tersebut Panggil dictionary/Program Field Window (atau F6),
lalu isi table/field Name dengan sdyn_book, lalu pilih Get From Dictionary. Maka
akan muncul layar sebagai berikut:
9. Pilih Field berikut: CARRID, CONNID, FLDATE, BOOKID, CUTOMID, dan LOCCURAM
disalin dengan field label-nya, sedangkan LOCCURKEY disalin tanpa dengan field
label-nya.
10.Setelah itu enter, lalu drag and drop field kepada screen.
11.Kelola screen element attribute, dimana CARRID, CONNID, FLDATE, BOOKID, dan
CUSTOMID, ditampilkan sebagai output fields, atribut LOCCURAM ditampilkan
sebagai as changeable (atribut: Input Field + Output Field), dan atribut LOCCURKEY
ditampillkan sebagai as a nonchangeable display field without field box (atribut:
Output Only). Seperti terlihat pada gambar berikut.
12.Save, lalu jalankan program. Ketika basic list di-double click, maka akan muncul
screen baru. Seperti pada gambar berikut.
3. Tambahkan program sehingga ketika memilih basic list (carrid, connid, fldate, dan
bookid), maka akan menampilkan data detail list pada screen 100.
START-OF-SELECTION.
IF sy-subrc = 0.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
wa_sbook-fldate COLOR COL_KEY,
wa_sbook-bookid COLOR COL_KEY. HIDE:
wa_sbook-carrid, wa_sbook-connid,
wa_sbook-fldate, wa_sbook-bookid.
ENDIF.
ENDSELECT.
CLEAR wa_sbook.
AT LINE-SELECTION.
IF sy-subrc = 0.
CLEAR wa_sbook.
4. Sebelum memanggil screen salin data dari work area (dalam hal ini adalah
wa_sbook) ketika kondisi pada point 3 di atas terpenuhi ke dalam TABLES work area
sehingga data tersebut ditranspor kepada screen secara otomatis.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
CALL SCREEN 100.
ENDIF.
5. Jalankan program tersebut, sehingga ketika suat baris pada basicl list dipilih akan
menampilkan data detil list di screen 100 sebagaimana gambar berikut:
*&---------------------------------------------------------------------
*
*& Report Z10578094_DYNPRO
*&
*&---------------------------------------------------------------------
*
*&
*&
*&---------------------------------------------------------------------
*
REPORT z10578094_dynpro.
PARAMETERS pa_anum TYPE sbook-agencynum.
START-OF-SELECTION.
IF sy-subrc = 0.
WRITE: / wa_sbook-carrid COLOR COL_KEY,
wa_sbook-connid COLOR COL_KEY,
wa_sbook-fldate COLOR COL_KEY,
wa_sbook-bookid COLOR COL_KEY. HIDE:
wa_sbook-carrid, wa_sbook-connid,
wa_sbook-fldate, wa_sbook-bookid.
ENDIF.
ENDSELECT.
CLEAR wa_sbook.
AT LINE-SELECTION.
IF sy-subrc = 0.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_sbook TO sdyn_book.
CALL SCREEN 100.
ENDIF.
ENDIF.
CLEAR wa_sbook.
4. Lihat tab element list pada screen layout, maka terlihat pushbutton tersebut sudah
ditambahkan pada element list. Lalu Beri nama OK type field pada baris terakhir
misalnya dengan OK_CODE seperti terlihat pada gambar.
*&---------------------------------------------------------------------*
*& Module CLEAR_OK_CODE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE clear_ok_code OUTPUT.
CLEAR ok_code.
ENDMODULE. " CLEAR_OK_CODE OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT *
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'SAVE'.
6. Implementasikan flow logic PAI (Process After Input) modul dan PBO (Process Before
Output) module sebagai berikut dengan memanggil modul di atas.