272
ABAP HANDOUT 2010 1 -Kiki Siswanto-

Abap Handout - Kiki Siswanto

  • Upload
    risa

  • View
    139

  • Download
    20

Embed Size (px)

DESCRIPTION

ABAP For Beginer

Citation preview

Page 1: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

1

-Kiki Siswanto-

Page 2: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

2

-Kiki Siswanto-

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

Page 3: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

3

-Kiki Siswanto-

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

Page 4: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

4

-Kiki Siswanto-

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

Page 5: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

5

-Kiki Siswanto-

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

Page 6: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

6

-Kiki Siswanto-

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

Page 7: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

7

-Kiki Siswanto-

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

Page 8: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

8

-Kiki Siswanto-

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

perusahaan 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

Page 9: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

9

-Kiki Siswanto-

(Supply Chain Management), CRM dan masih banyak solusi-solusi bisnis lain yang ditawarkan

oleh SAP untuk berbagai jenis bidang usaha di dunia.

Enterprise Resource Planning (ERP) adalah sistem terintegrasi untuk

mengelola seluruh aktifitas perusahaan termasuk keuangan, 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 keputusan

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

- Transparasi data

o Data dapat diatur hak akses nya tergantung 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 : Programmer

Page 10: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

10

-Kiki Siswanto-

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.

Page 11: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

11

-Kiki Siswanto-

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)

membantu men-cek kualitas proses-proses di keseluruhan rantai logistik

o 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 Personnel Management (PA)

Page 12: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

12

-Kiki Siswanto-

o Personnel Time Management (PT)

o Payroll (PY)

o Training and Event Management (PE)

Gambar Modul SAP R/3

Page 13: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

13

-Kiki Siswanto-

Gambar Bisnis Proses

Sistem SAP

SAP Menggunakan Sistem Client – Server

Hardware-

oriented

view

Page 14: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

14

-Kiki Siswanto-

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.

Software-

oriented

view

Page 15: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

15

-Kiki Siswanto-

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

Page 16: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

16

-Kiki Siswanto-

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

Page 17: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

17

-Kiki Siswanto-

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

Page 18: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

18

-Kiki Siswanto-

- 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

Page 19: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

19

-Kiki Siswanto-

1

s

d

a

d

a

s

1

1

/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) Lock / Unlock (Ctrl + F5)

Change (Shift + F6) Copy (Shift + F5) Change Password (Shift + F8)

Untuk menggunakan tombol – tombol tersebut maka field user harus diisi terlebih dahulu.

Page 20: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

20

-Kiki Siswanto-

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 :

Page 21: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

21

-Kiki Siswanto-

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:

Page 22: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

22

-Kiki Siswanto-

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.

Page 23: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

23

-Kiki Siswanto-

Kemudian Pilih Yes.

Lalu User harus mengisi Short Description dan Transport Layer (Transport Layer Untuk

Standar Object adalah SAP).

Create New Request

Page 24: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

24

-Kiki Siswanto-

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.

Page 25: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

25

-Kiki Siswanto-

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

Page 26: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

26

-Kiki Siswanto-

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.

Page 27: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

27

-Kiki Siswanto-

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

Page 28: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

28

-Kiki Siswanto-

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_WAA-LD_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.

Page 29: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

29

-Kiki Siswanto-

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

Page 30: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

30

-Kiki Siswanto-

4. Klik Tombol Create.

5. Isi Short Description. Kemudian isi Data Type, No. Characters, Decimal places dan

Output length seperti dibawah ini

Page 31: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

31

-Kiki Siswanto-

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.

Page 32: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

32

-Kiki Siswanto-

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.

Page 33: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

33

-Kiki Siswanto-

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.

Page 34: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

34

-Kiki Siswanto-

8. Klik tombol bergambar disket untuk save.

9. Package diisi untuk membuat Data Element yang dapat di transport ke client lain.

Page 35: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

35

-Kiki Siswanto-

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

Page 36: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

36

-Kiki Siswanto-

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.

Page 37: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

37

-Kiki Siswanto-

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

Page 38: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

38

-Kiki Siswanto-

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

Page 39: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

39

-Kiki Siswanto-

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

Page 40: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

40

-Kiki Siswanto-

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

Page 41: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

41

-Kiki Siswanto-

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.

Page 42: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

42

-Kiki Siswanto-

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.

Page 43: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

43

-Kiki Siswanto-

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

Page 44: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

44

-Kiki Siswanto-

5. Isi Short Description dan field-field yang diperlukan.

6. Aktifkan field View Fields. Kemudian isi kolom-kolomnya seperti gambar berikut

Page 45: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

45

-Kiki Siswanto-

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.

Page 46: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

46

-Kiki Siswanto-

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.

Page 47: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

47

-Kiki Siswanto-

6. Masukkan nama index yang ingin dibuat.

7. Klik Continue.

8. Isilah field sesuai dengan yang diinginkan

9. Klik tombol bergambar disket / save.

Page 48: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

48

-Kiki Siswanto-

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.

Page 49: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

49

-Kiki Siswanto-

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 adalah penggunaan inner join karena itu akan

memperberat jalannya aplikasi.

Untuk mengganti Syntax left outer join dapat digunakan syntax for all entries in.

Contoh :

Page 50: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

50

-Kiki Siswanto-

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.

Page 51: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

51

-Kiki Siswanto-

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

subrc 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 = '12400177'.

wa-name = '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 :

Page 52: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

52

-Kiki Siswanto-

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' AND 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.

Page 53: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

53

-Kiki Siswanto-

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.

Page 54: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

54

-Kiki Siswanto-

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 :

Page 55: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

55

-Kiki Siswanto-

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.

Page 56: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

56

-Kiki Siswanto-

3. Isilah nama include yang diinginkan.

4. Klik tombol check.

Page 57: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

57

-Kiki Siswanto-

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 TYPE slis_layout_alv, gi_it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE, gi_it_excluding TYPE slis_t_extab WITH HEADER LINE, gi_it_special_groups TYPE slis_t_sp_group_alv WITH HEADER LINE, gi_it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE, gi_it_filter TYPE slis_t_filter_alv WITH HEADER LINE, gw_is_sel_hide TYPE slis_sel_hide_alv, gv_i_default, gv_i_save, gw_is_variant LIKE disvariant, gi_it_events TYPE slis_t_event WITH HEADER LINE, gi_it_event_exit TYPE slis_t_event_exit WITH HEADER LINE, gw_is_print TYPE slis_print_alv, gw_is_reprep_id TYPE slis_reprep_id. *&--------------------------------------------------------------------* *& Form fm_alv_show *&--------------------------------------------------------------------* * text

Page 58: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

58

-Kiki Siswanto-

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

Page 59: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

59

-Kiki Siswanto-

* 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'.

Page 60: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

60

-Kiki Siswanto-

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 = 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 = fu_6. " long key word gi_it_fieldcat-seltext_m = fu_7. " middle key word gi_it_fieldcat-seltext_s = fu_8. " short key word gi_it_fieldcat-reptext_ddic = fu_9. " heading (ddic) gi_it_fieldcat-round = fu_10. " round in write statement gi_it_fieldcat-do_sum = fu_11. " sum up gi_it_fieldcat-hotspot = fu_12. " 'X' = hotspot is active -> Event click gi_it_fieldcat-decimals_out = fu_13. " decimals in write statement 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 APPEND gi_it_fieldcat.

Page 61: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

61

-Kiki Siswanto-

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.

Page 62: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

62

-Kiki Siswanto-

11. Klik tombol display.

12. Klik display Object list (shift+ctrl+f5)

13. Buka GUI STATUS pada tree menu

14. Salin GUI Status -- "Standard"

Page 63: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

63

-Kiki Siswanto-

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.

Page 64: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

64

-Kiki Siswanto-

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 = fu_6. " long key word

gi_it_fieldcat-seltext_m = fu_7. " middle key word

gi_it_fieldcat-seltext_s = fu_8. " short key word

gi_it_fieldcat-reptext_ddic = fu_9. " heading (ddic) gi_it_fieldcat-round = fu_10. " round in write statement

gi_it_fieldcat-do_sum = fu_11. " sum up

gi_it_fieldcat-hotspot = fu_12. " 'X' = hotspot is active -> Event click

gi_it_fieldcat-decimals_out = fu_13. " decimals in write statement

Page 65: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

65

-Kiki Siswanto-

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

Page 66: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

66

-Kiki Siswanto-

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

Page 67: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

67

-Kiki Siswanto-

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 .

Page 68: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

68

-Kiki Siswanto-

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.

Page 69: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

69

-Kiki Siswanto-

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,

Page 70: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

70

-Kiki Siswanto-

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

Page 71: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

71

-Kiki Siswanto-

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.

Page 72: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

72

-Kiki Siswanto-

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.

Page 73: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

73

-Kiki Siswanto-

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 :

Page 74: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

74

-Kiki Siswanto-

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

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

Page 75: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

75

-Kiki Siswanto-

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 :

Page 76: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

76

-Kiki Siswanto-

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.

Page 77: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

77

-Kiki Siswanto-

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

Page 78: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

78

-Kiki Siswanto-

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.

Page 79: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

79

-Kiki Siswanto-

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

Page 80: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

80

-Kiki Siswanto-

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.

Page 81: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

81

-Kiki Siswanto-

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.

Page 82: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

82

-Kiki Siswanto-

Mengganti Define dengan SubRoutine

Define pada contoh diatas dapat diganti manjadi subroutine seperti 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, *

Page 83: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

83

-Kiki Siswanto-

* '|' 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 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.

else.

Page 84: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

84

-Kiki Siswanto-

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.

ENDFORM.

PERFORM macro_data_possition using 'CONTENT'

gi_header-matkl

gi_header-matnr

gi_header-maktx

gi_header-bismt

gi_header-meins

gi_header-mseht.

Perform macro_data_possition using

'HEADER' 'Mat. Group' 'Mat. No.' 'Description' 'Old Mat. No.' 'Base Unit' 'Measure'.

Page 85: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

85

-Kiki Siswanto-

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.

Page 86: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

86

-Kiki Siswanto-

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 2 3

A 4 dst.

A

B

B

Page 87: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

87

-Kiki Siswanto-

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.

Page 88: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

88

-Kiki Siswanto-

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.

Page 89: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

89

-Kiki Siswanto-

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

Page 90: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

90

-Kiki Siswanto-

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 :

Page 91: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

91

-Kiki Siswanto-

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

Page 92: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

92

-Kiki Siswanto-

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.

Page 93: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

93

-Kiki Siswanto-

5. Klik untuk memulai design layout(desain Tampilan).

6. Klik 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.

Page 94: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

94

-Kiki Siswanto-

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

sintax html yang bukan 1 kesatuan.

Misalnya : „<td>‟ „Matkl‟ „</td>‟. -> 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 = web_container.

IF sy-subrc NE 0.

ENDIF.

Page 95: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

95

-Kiki Siswanto-

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 menangkap event pada Html Code :

DATA : gv_html_event_tab TYPE cntl_simple_events,

gv_html_event TYPE cntl_simple_event,

gv_repid LIKE sy-repid,

Page 96: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

96

-Kiki Siswanto-

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.

Page 97: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

97

-Kiki Siswanto-

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.

Page 98: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

98

-Kiki Siswanto-

ENDIF.

Format SAPEvent pada Html

SAPEVENT:<variable>?<value>

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 :

Page 99: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

99

-Kiki Siswanto-

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.

Page 100: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

100

-Kiki Siswanto-

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

Page 101: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

101

-Kiki Siswanto-

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”

Page 102: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

102

-Kiki Siswanto-

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.

Page 103: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

103

-Kiki Siswanto-

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.

Page 104: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

104

-Kiki Siswanto-

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.

Page 105: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

105

-Kiki Siswanto-

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)

Page 106: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

106

-Kiki Siswanto-

4. Double klik ada tree menu Screen 2000.

5. Klik tombol untuk memulai layout desain.

6. Klik 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.

Page 107: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

107

-Kiki Siswanto-

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 untuk memulai layout desain.

6. Klik tombol kemudian dragke screen painter.

7. Setelah itu, Table Control wizard akan dieksekusi.

Page 108: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

108

-Kiki Siswanto-

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.

Page 109: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

109

-Kiki Siswanto-

11. Pilihlah option – option yang diinginkan.

12. Ceklist Scroll dan kemudian klik continue.

Page 110: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

110

-Kiki Siswanto-

13. Isilah Semua textbox dan klik continue.

Page 111: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

111

-Kiki Siswanto-

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.

Page 112: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

112

-Kiki Siswanto-

4. Klik delete dan tekan yes untuk konfirmasi.

Page 113: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

113

-Kiki Siswanto-

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.

Page 114: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

114

-Kiki Siswanto-

4. Pilih field yang diinginkan dan kemudian tekan tombol check.

5. Pilih tempat dimana field baru akan ditempatkan.

Page 115: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

115

-Kiki Siswanto-

6. Field baru telah ter- insert.

Page 116: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

116

-Kiki Siswanto-

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.

Page 117: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

117

-Kiki Siswanto-

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.

Page 118: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

118

-Kiki Siswanto-

Membuat Button Pada Gui Status

Langkah – Langkah untuk membuat button pada Gui Status :

1. Ketikkan nama Function yang ingin dibuat. Nama Function Insert new entry

2. Pilih Static Text

Page 119: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

119

-Kiki Siswanto-

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.

Page 120: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

120

-Kiki Siswanto-

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.

Page 121: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

121

-Kiki Siswanto-

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

Page 122: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

122

-Kiki Siswanto-

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.

Page 123: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

123

-Kiki Siswanto-

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.

Page 124: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

124

-Kiki Siswanto-

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.

Page 125: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

125

-Kiki Siswanto-

Include nya berisi sebagai berikut :

Deklarasi Data

DATA : gv_html_event_tab TYPE cntl_simple_events,

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

Page 126: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

126

-Kiki Siswanto-

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.

Page 127: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

127

-Kiki Siswanto-

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

Page 128: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

128

-Kiki Siswanto-

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

Page 129: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

129

-Kiki Siswanto-

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 : '<form name="form1" method="post" action="SAPEVENT:SUBMIT

_PARAMETER">'.

WRITE_CODE1 : '<strong>Mat Group: </strong>'.

WRITE_CODE1 : '<input type="text" name="GV_MATKL" id="GV_MATKL" />'.

WRITE_CODE1 : '<input type="submit" name="Submit" value="Display" />'.

WRITE_CODE1 : '</form>'.

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 = WEB_CONTAINER.

IF SY-SUBRC NE 0.

ENDIF.

ENDIF.

ENDFORM.

Page 130: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

130

-Kiki Siswanto-

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

Page 131: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

131

-Kiki Siswanto-

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

Input :

Output :

Page 132: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

132

-Kiki Siswanto-

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.

Page 133: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

133

-Kiki Siswanto-

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.

Page 134: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

134

-Kiki Siswanto-

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

Page 135: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

135

-Kiki Siswanto-

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.

Page 136: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

136

-Kiki Siswanto-

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 '<body>'.

LOOP AT gi_header.

write_code1 '<table width="100%" border="0" cellspacing="2" cellpad

ding="0">'.

write_code1 ' <tr bgcolor="#999999" class="styleHeader">'.

write_code1 ' <td>Sales Doc.Num</td>'.

write_code1 ' <td>Sold to Party</td>'.

write_code1 ' <td>Sales Org</td>'.

write_code1 ' <td>Dist. Channel</td>'.

write_code1 ' <td>Division</td>'.

write_code1 ' </tr>'.

write_code1 ' <tr bgcolor="#CCCFFF">'.

write_code3 ' <td class="style1">' gi_header-vbeln '</td>'.

write_code3 ' <td class="style1">' gi_header-kunnr '</td>'.

write_code3 ' <td class="style2">' gi_header-vkorg '</td>'.

write_code3 ' <td class="style2">' gi_header-vtweg '</td>'.

write_code3 ' <td class="style1">' gi_header-spart '</td>'.

write_code1 ' </tr>'.

write_code1 ' <tr bgcolor="Orange" class="styleHeader">'.

write_code1 ' <td bgcolor="white"></td>'.

write_code1 ' <td>Sales Doc.Item</td>'.

write_code1 ' <td>Mat Number</td>'.

write_code1 ' <td>Sort Text</td>'.

write_code1 ' <td>Quantity</td>'.

write_code1 ' <td>Uom</td>'.

write_code1 ' <td>Price</td>'.

write_code1 ' <td>Curr</td>'.

write_code1 ' </tr>'.

Page 137: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

137

-Kiki Siswanto-

LOOP AT gi_detail WHERE vbeln = gi_header-vbeln.

write_code1 ' <tr bgcolor="#FFFCCC">'.

write_code1 ' <td bgcolor="white"></td>'.

write_code3 ' <td class="style1">' gi_detail-posnr '</td>'.

write_code3 ' <td class="style1">' gi_detail-matnr '</td>'.

write_code3 ' <td class="style2">' gi_detail-arktx '</td>'.

WRITE gi_detail-zmeng TO tampung UNIT gi_detail-zieme.

write_code3 ' <td class="style2">' tampung '</td>'.

write_code3 ' <td class="style1">' gi_detail-zieme '</td>'.

WRITE gi_detail-netpr TO tampung CURRENCY gi_detail-waerk.

write_code3 ' <td class="style2">' tampung '</td>'.

write_code3 ' <td class="style2">' gi_detail-waerk '</td>'.

write_code1 ' </tr>'.

ENDLOOP.

write_code1 '<br/>'.

write_code1 '</table>'.

ENDLOOP.

write_code1 '</body>'.

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

filename = fv_url

filetype = 'ASC'

Page 138: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

138

-Kiki Siswanto-

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 :

Page 139: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

139

-Kiki Siswanto-

Output Alv Grid :

Output Dialog Programming - > tabel Control

Page 140: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

140

-Kiki Siswanto-

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,

Page 141: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

141

-Kiki Siswanto-

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.

Page 142: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

142

-Kiki Siswanto-

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 menampilkan 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'.

Page 143: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

143

-Kiki Siswanto-

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.

Page 144: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

144

-Kiki Siswanto-

WHEN '&VIEW'.

PERFORM FM_VIEW_DETAIL.

ENDCASE.

MOVE 'X' TO fu_selfield-refresh.

ENDFORM.

Buat Fungsi fm_view_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.

Page 145: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

145

-Kiki Siswanto-

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 :

Page 146: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

146

-Kiki Siswanto-

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

Page 147: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

147

-Kiki Siswanto-

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.

Page 148: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

148

-Kiki Siswanto-

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.

Page 149: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

149

-Kiki Siswanto-

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.

Page 150: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

150

-Kiki Siswanto-

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

Page 151: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

151

-Kiki Siswanto-

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.

Page 152: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

152

-Kiki Siswanto-

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_<lock object_name> untuk setting lock.

b. Dequeue_<lock_object_name> untuk Release unlock.

7. Activate dan locking siap digunakan

8. Buka Se38

9. Buka program / Buat program

10. Call function_modul enqueue_<nama_object_name> dengan menu pattern

11. Modifikasi sintaks call function ENQUEUE

Page 153: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

153

-Kiki Siswanto-

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 = 'E'

MANDT = SY-MANDT

TIPE_MOBIL = SP_ED_MOBIL-TIPE_MOBIL

SERI_MOBIL = SP_ED_MOBIL-SERI_MOBIL.

Page 154: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

154

-Kiki Siswanto-

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.

Page 155: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

155

-Kiki Siswanto-

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.

Page 156: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

156

-Kiki Siswanto-

- Basic settings : page format :

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

2. Paragraph dan character format.

Page 157: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

157

-Kiki Siswanto-

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

Page 158: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

158

-Kiki Siswanto-

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.

Page 159: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

159

-Kiki Siswanto-

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

Page 160: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

160

-Kiki Siswanto-

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.

Page 161: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

161

-Kiki Siswanto-

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

* OTFDATA =

Page 162: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

162

-Kiki Siswanto-

* 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

Page 163: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

163

-Kiki Siswanto-

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

Page 164: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

164

-Kiki Siswanto-

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.

Page 165: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

165

-Kiki Siswanto-

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.

Page 166: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

166

-Kiki Siswanto-

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.

Page 167: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

167

-Kiki Siswanto-

4. Tekan tombol check

5. Pilih lokasi untuk file xml smartforms.

Upload Forms

Page 168: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

168

-Kiki Siswanto-

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

Page 169: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

169

-Kiki Siswanto-

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

Page 170: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

170

-Kiki Siswanto-

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

Page 171: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

171

-Kiki Siswanto-

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.

Page 172: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

172

-Kiki Siswanto-

4. Pada form interface digunakan untuk deklarasi.

Page 173: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

173

-Kiki Siswanto-

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.

Page 174: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

174

-Kiki Siswanto-

9. Tekan tombol untuk menambahkan kolom.

10. Tekan tombol 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.

Page 175: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

175

-Kiki Siswanto-

Untuk megupload image buka tab BMAP Bitmap Image.

Setelah itu pada menu Graphic pilih import.

Page 176: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

176

-Kiki Siswanto-

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.

Page 177: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

177

-Kiki Siswanto-

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.

Page 178: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

178

-Kiki Siswanto-

Lalu tekan tombol save.

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

tcode smartstyles.

Page 179: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

179

-Kiki Siswanto-

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.

Page 180: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

180

-Kiki Siswanto-

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.

Page 181: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

181

-Kiki Siswanto-

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.

Page 182: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

182

-Kiki Siswanto-

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.

Page 183: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

183

-Kiki Siswanto-

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

Page 184: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

184

-Kiki Siswanto-

Kemudian Pilih tab device types

Klik button format types.

Klik tombol change dan pilih create.

Page 185: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

185

-Kiki Siswanto-

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

Page 186: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

186

-Kiki Siswanto-

Lalu klik tombol save.

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

Lalu pilih menu formats dan pilih create.

Page 187: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

187

-Kiki Siswanto-

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.

Page 188: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

188

-Kiki Siswanto-

Untuk menggunakan page format yang telah dibuat pada tcode SPADSmartforms pilih form attributes

– output options – page format (ukuran kertas).

Page 189: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

189

-Kiki Siswanto-

Page 190: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

190

-Kiki Siswanto-

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.

Page 191: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

191

-Kiki Siswanto-

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

Page 192: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

192

-Kiki Siswanto-

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

Cek field-field yang ada apakah sesuai atau tidak.

o Customer exist - > untuk membuat nya bisa di cmod (debug):

ii. Function module exits : functionnya yang di update : se37 iii. Menu exits : gui status : se38

Page 193: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

193

-Kiki Siswanto-

iv. Screen exits : screen nya : se38 o Business transaction events : untuk transaksi yang berhubungan dengan finance. :

fibf (harus memiliki pengetahuan functional) o 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

Page 194: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

194

-Kiki Siswanto-

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

- Lalu ubah nama material.

Page 195: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

195

-Kiki Siswanto-

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.

Page 196: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

196

-Kiki Siswanto-

2. Execute program.

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

Page 197: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

197

-Kiki Siswanto-

4. Masukkan description dan klik button enhancement assignment

5. Pilih yes.

Page 198: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

198

-Kiki Siswanto-

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

7. Klik tombol components dari gambar diatas

Page 199: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

199

-Kiki Siswanto-

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.

Page 200: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

200

-Kiki Siswanto-

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.

Page 201: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

201

-Kiki Siswanto-

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.

Page 202: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

202

-Kiki Siswanto-

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.

Page 203: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

203

-Kiki Siswanto-

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.

Page 204: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

204

-Kiki Siswanto-

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

2. Klik Environment -> Info System

Page 205: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

205

-Kiki Siswanto-

3. Klik execute

Page 206: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

206

-Kiki Siswanto-

4. Pilih line item dan klik

Page 207: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

207

-Kiki Siswanto-

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

Page 208: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

208

-Kiki Siswanto-

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

Page 209: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

209

-Kiki Siswanto-

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

Page 210: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

210

-Kiki Siswanto-

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.

Page 211: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

211

-Kiki Siswanto-

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

Page 212: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

212

-Kiki Siswanto-

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.

Page 213: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

213

-Kiki Siswanto-

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.

Page 214: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

214

-Kiki Siswanto-

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.

Page 215: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

215

-Kiki Siswanto-

Untuk melihat suatu sldb digunakan di program yang mana dapat digunakan dengan enekan tombol

where-used list.

Page 216: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

216

-Kiki Siswanto-

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

end select.

Page 217: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

217

-Kiki Siswanto-

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 :

Page 218: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

218

-Kiki Siswanto-

Select Options SLDB

Select options yang ditampilkan berasal dari logical database yang diletakkan pada tab

selections.

Contoh Select Options yang terdapat pada SLDB :

Page 219: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

219

-Kiki Siswanto-

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

selection teks.

Page 220: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

220

-Kiki Siswanto-

Selection Texts

Page 221: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

221

-Kiki Siswanto-

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.

Page 222: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

222

-Kiki Siswanto-

Untuk membuat / melakukan customize terhadap dynamic selections.

Lalu klik tombol create

Page 223: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

223

-Kiki Siswanto-

Centanglah checkbox preselect untuk menampilkan select options ini terlebih dahulu.

Hasil dari Tampilan dynamic selections :

Page 224: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

224

-Kiki Siswanto-

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.

Page 225: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

225

-Kiki Siswanto-

Jika ada Exception dikarenakan kekurangan karakter yang disediakan.

Cara mengatasi : 1. bikin types baru.

2. Tampilkan data ygn perlu saja.

Page 226: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

226

-Kiki Siswanto-

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.

Page 227: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

227

-Kiki Siswanto-

Masukkan function2 yang ingin digunakan untuk di tes dan execute.

Page 228: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

228

-Kiki Siswanto-

Page 229: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

229

-Kiki Siswanto-

Day 12

Search Help

Cara membuat search help :

1. Tcode se11 -> masukkan key nya -> check table.

2. Tcode se11 -> search help

3. Coding

Page 230: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

230

-Kiki Siswanto-

Create Search Help :

Page 231: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

231

-Kiki Siswanto-

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.

Page 232: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

232

-Kiki Siswanto-

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

Page 233: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

233

-Kiki Siswanto-

Setelah diaktifkan Tempelkan ke data element dan kemudian edit param assignment

Page 234: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

234

-Kiki Siswanto-

Cara edit search help exit :

1. Buat group baru jangan digabungin.

2. Copy

Page 235: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

235

-Kiki Siswanto-

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)

Page 236: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

236

-Kiki Siswanto-

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

Setetelah dijalankan maka akan menampilkan tampilan sebagai berikut :

Page 237: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

237

-Kiki Siswanto-

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

diperbaiki.

Page 238: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

238

-Kiki Siswanto-

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

Page 239: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

239

-Kiki Siswanto-

Setelah memilih menu diatas maka akan tampil tampilan sebagai berikut :

Lalu jalankan program di atas.

Page 240: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

240

-Kiki Siswanto-

RUNTIME ANALYSIS

Page 241: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

241

-Kiki Siswanto-

Page 242: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

242

-Kiki Siswanto-

Abap : code abapnya

Db : databasenya

Page 243: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

243

-Kiki Siswanto-

System : kernel

Page 244: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

244

-Kiki Siswanto-

Sql trace

Aktifkan dengan klik tombol Activate trace

Page 245: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

245

-Kiki Siswanto-

Jalankan program dari se38.

Deactivate trace dengan klik tombol Deactivate Trace.

Tekan tombol check.

Page 246: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

246

-Kiki Siswanto-

Page 247: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

247

-Kiki Siswanto-

Day 13

Field symbols FIELD-SYMBOLS : <table> TYPE table, utk assign itab

<wa> TYPE data, utk assign structure (wa) <comp> 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 <table>. 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 <table>. ASSIGN wa->* TO <wa> . 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 <table> from (tabel)

(field) diisi dg field dan (table) diisi dg nama table yg akan di select. Sedangkan <table> mrp itabnya.

Loop at <table> into <wa>.

Page 248: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

248

-Kiki Siswanto-

Endloop.

<table> dan <wa> ini diisi melalui code ASSIGN yg telah dideklarasikan sebelumnya.

REPORT zt02_latihan36 .

TABLES : dd02l, dd03l.

FIELD-SYMBOLS : <table> TYPE table,

<wa> TYPE data,

<comp> 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 <table>.

CREATE DATA wa LIKE LINE OF <table>.

ASSIGN wa->* TO <wa> .

SELECT (p_select)

INTO CORRESPONDING FIELDS OF TABLE <table>

FROM (p_tab)

WHERE (p_where).

Page 249: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

249

-Kiki Siswanto-

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_structure_name = p_itab "<< Bisa pake table ato structure jika ti

dak pake FieldCat dlm ALV

i_grid_title = 'Dynamic Reporting'

TABLES

t_outtab = <table>.

ENDIF.

Jalankan programnya dan inputkan data :

Hasilnya :

Page 250: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

250

-Kiki Siswanto-

BDC (Batch Data Control) Melakukan remote thd SAP, tapi ABAPer yg memegang kontrolnya.

Tcode : SHDB

LSMW : tools utk membuat Program upload standar dari sap menggunakan teknologi recording & bapi,

tp scr functional. Biasanya utk table master data.

Cara upload data transaksi :

1. BAPI

2. Recording (SHDB)

3. IDOC

4. Buat koding sendiri

Call transaction BDC

Source utk remote dpt diperoleh dr 2 sumber :

- Parameter ID : tipenya objek

Page 251: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

251

-Kiki Siswanto-

- BDC Data : tipenya interbal table.

kemudian soruce sode tsb di execute “call transaction” dan mengeluarkan message. Jika proses sukses,

data akan disimpan/delete/modify (tergantung proses datanya) lalu keluar. Jika gagal, akan keluar dr

proses (simulate).

Latihan BDC 1. Tcode XD01, input account group dan company code

2. Klik continue. Lalu inputkan data :

Page 252: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

252

-Kiki Siswanto-

3. Tekan tombol ENTER, lalu save. Input rec. account :

4. Klik save.

Page 253: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

253

-Kiki Siswanto-

Nomor KUNNR : 0000100129

5. Lalu masuk ke se16 dan input cutomer master (KNA1).

6. Input kunnr utk nomornya atau pilih menu setting field selection Pilih name1 dan name2

7. Input kunnr

Page 254: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

254

-Kiki Siswanto-

8. Klik execute

Tampil data-data yg telah diinputkan. Selanjutnya akn digunakan utk mengecek dlm proses

recording, dt apa sj yg telah diinputkan.

9. Masuk ke SHDB, klik new recording.

Page 255: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

255

-Kiki Siswanto-

Input nama recording dan tcodenya. Pilih update mode Sinkronus prosesnya menunggu

hasilnya dulu, baru dikirim dan diterima . asynchronus (kirim data tnp menunggu hasilnya).

10. Klik start recording setelah ini diusahakan jng menekan keyboard krn akn terrekam jg.

11. Input data :

Page 256: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

256

-Kiki Siswanto-

Untuk transaksi master data, aktifkan checkbox “Use central…”.

12. Klik tanda ENTER, input data pada field yg sama seperti pd langkah sebelumnya. Jgn input pada

field2 yg berbeda.

13. klik save, klik tombol check, lalu inputkan nilai seperti gambardi bawah ini.

14. Klik save, hasilnya terrecord :

Page 257: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

257

-Kiki Siswanto-

15. Klik save lagi.

16. Klik tombol proses.

Processing mode :

A : tidak bs jln di background,ada error, terlihat semua screennya dan harus ada trigger dr user.

E : tdk bs jln dibackground, screen tdk kelihatan.

Page 258: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

258

-Kiki Siswanto-

N : utk backround.

P : utk backround, tp bs melakukan break-point.

Bukan background proses : Digunakan jika program yg dibuat blm yakin bhw program berjalan

dg benar.

Background proses : Digunakan jika sudah yakin bahwa program sudah benar.

17. Klik check, lalu dlm tcode klik check terus smp selesai .

18. Jika terjadi error, maka hapus recordnya, lalu ulangi lg.

19. Record lagi, pada saat record, isi semua datanya, jgn save dl smp terisi smua seperti yg telah

diisikan sebelumnya dg cara klik next page. Jika sudah, klik save. lalu proses lg. hasilnya :

Buat code BDC : klik tombol program :

Page 259: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

259

-Kiki Siswanto-

Klik source code, hasilnya ;

Page 260: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

260

-Kiki Siswanto-

Comment kode-kode yang tidak diperlukan.

Klik activate, lalu execute

Page 261: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

261

-Kiki Siswanto-

Pilih transaction mode S, lalu execute :

Page 262: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

262

-Kiki Siswanto-

Transport To Production

Langkah – Langkah Transport 1. Masuk ke AI SO Development , Client 120

2. Buka TCODE SE10 – Transport Organizer

3. Klik Display

Page 263: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

263

-Kiki Siswanto-

4. Lalu pilih Nomor Transport yang akan dinaikkan ke Production, sampai ke cabang No Transport

yang paling detil, lalu pilih satu demi satu No Transport (kotak warna merah) dan kemudian

diklik tombol mobil merah (lingkaran warna merah) :

Maka akan muncul :

5. Lalu klik Tombol Back, lalu pilih Tab Transport Proposal, dan klik Create Proposal (lingkaran

warna merah)

Page 264: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

264

-Kiki Siswanto-

6. Maka akan tampil, Masukkan No Transport ke kolom Request for Import, lalu Copy Short Text

dibawah ke Short text diatas, lalu klik tombol Next System (lingkaran warna merah), lalu Select

All dan Create:

Page 265: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

265

-Kiki Siswanto-

Maka akan muncul Target. Lalu Select All, kemudian Transfer (Enter) :

Page 266: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

266

-Kiki Siswanto-

Page 267: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

267

-Kiki Siswanto-

Hasilnya :

Page 268: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

268

-Kiki Siswanto-

Lalu klik Create and Send Proposal (F8) :

Page 269: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

269

-Kiki Siswanto-

Minta approvement dari Trans Admin Dev : Pak Anto. Jika sudah diapprove maka bisa dicek di

Inbox. Lalu langkah selanjutnya, minta approvement untuk ke Production :

Page 270: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

270

-Kiki Siswanto-

Isi dengan Tgt systems : P99 Target clnt : 300, lalu klik gambar mobil. Maka data akan hilang dari

Inbox :

Lalu inform ke PIC Production (Mba Dian Wardani) untuk minta diapprove

Page 271: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

271

-Kiki Siswanto-

7. Untuk melihat status apakah sudah naik ke Production

Isi check box Released, lalu klik Display:

Maka akan tampil data-data yang sudah direleased, lalu pilih no transport, kemudian klik tombol

Transport Log (Ctrl+Shift+F2) :

Page 272: Abap Handout - Kiki Siswanto

ABAP HANDOUT 2010

272

-Kiki Siswanto-

Maka akan muncul detil datanya, jika sudah sampai di Production makan akan muncul P99 dan

Nama Mesin Production (mis: AI SO Production)