perancangan metode reporting client server berbasis ......gambar 3 activity diagram ekspor data...

28
Perancangan Metode Reporting Client Server berbasis Python yang Berinteraksi dengan Microsoft Excel dan VBA di PT. Sumber Alfaria Trijaya Tbk. Artikel Penelitian Peneliti: Timoti Hesel Marnadi (672015011) Magdalena A. Ineke Pakereng, M. Kom. Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga Desember 2018

Upload: others

Post on 02-Feb-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

  • Perancangan Metode Reporting Client – Server berbasis

    Python yang Berinteraksi dengan Microsoft Excel dan VBA

    di PT. Sumber Alfaria Trijaya Tbk.

    Artikel Penelitian

    Peneliti:

    Timoti Hesel Marnadi (672015011)

    Magdalena A. Ineke Pakereng, M. Kom.

    Program Studi Teknik Informatika

    Fakultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Salatiga

    Desember 2018

  • Perancangan Metode Reporting Client – Server berbasis

    Python yang Berinteraksi dengan Microsoft Excel dan VBA

    di PT. Sumber Alfaria Trijaya Tbk.

    Artikel Penelitian

    Diajukan kepada

    Fakultas Teknologi Informasi

    untuk memperoleh Gelar Sarjana Komputer

    Peneliti:

    Timoti Hesel Marnadi (672015011)

    Magdalena A. Ineke Pakereng, M. Kom.

    Program Studi Teknik Informatika

    Fakultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Salatiga

  • 1

    Perancangan Metode Reporting Client – Server berbasis

    Python yang Berinteraksi dengan Microsoft Excel dan VBA

    di PT. Sumber Alfaria Trijaya Tbk.

    Timoti Hesel Marnadi1, Magdalena A. Ineke Pakereng2

    Fakultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Jl. Diponegoro 52-60, Salatiga 50771, Indonesia

    E-mail: [email protected], [email protected]

    Abstract

    Reporting system is needed for companies with a large number of

    transactions per day. The majority of companies still use Microsoft Excel to

    present their reports. Microsoft Excel is still a familiar application and is

    considered to have complete functions, including the existence of Visual Basic

    Application (VBA). The use of Visual Basic Application scripts available in

    Microsoft Excel to connect directly to the database is considered insecure, so at

    PT. Sumber Alfaria Trijaya, Tbk that should not be done. Meanwhile, web

    applications as reporting systems have limitations in accessing special functions in

    Microsoft Excel, such as macros. Often, programmers need a long time to write a

    single report script, even though almost all reports have the same structure and

    process. A new method for making reporting systems is needed to improve

    efficiency, security and to get full access to Microsoft Excel.

    Keywords : Reporting System, Python Tkinter, Common Gateway Interface

    Abstrak

    Sistem reporting sangat dibutuhkan bagi perusahaan dengan jumlah

    transaksi yang besar per harinya. Mayoritas perusahaan masih menggunakan

    Microsoft Excel untuk menyajikan report mereka. Microsoft Excel masih menjadi

    aplikasi yang familiar dan dinilai memiliki fungsi yang lengkap, termasuk adanya

    Visual Basic Application (VBA). Penggunaan script Visual Basic Application yang

    tersedia di Microsoft Excel untuk melakukan koneksi secara langsung ke database

    dinilai tidak aman, sehingga di PT. Sumber Alfaria Trijaya, Tbk dalam hal itu tidak

    boleh dilakukan. Sedangkan, aplikasi web sebagai sistem reporting memiliki

    keterbatasan dalam pengaksesan fungsi – fungsi khusus pada Microsoft Excel,

    seperti macro. Seringkali, programmer membutuhkan waktu yang lama untuk

    menulis script untuk suatu report, padahal, hampir semua report memiliki struktur

    dan proses yang sama. Suatu metode baru untuk membuat sistem reporting

    diperlukan untuk meningkatkan efisiensi, keamanan dan untuk mendapatkan akses

    penuh ke Microsoft Excel.

    Kata Kunci : Sistem Reporting, Python Tkinter, Common Gateway Interface

    1 Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas

    Kristen Satya Wacana Salatiga 2 Staf Pengajar Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga

  • 2

    1. Latar Belakang Masalah

    Microsoft Excel masih menjadi aplikasi spreadsheet standar yang digunakan

    di mayoritas perusahaan dan digunakan untuk berbagai macam keperluan, mulai

    dari analisa, reporting, modelling, dsb. Menurut survei yang dilakukan oleh bi-

    survey.com, didapati bahwa sekitar 26% karyawan di perusahaan masih

    menggunakan Microsoft Excel, sedangkan rata - rata pengguna aplikasi sejenis

    lainnya hanya 17%. Menurut sumber yang sama, sekitar 88% penggunaan

    Microsoft Excel adalah untuk membuat laporan standar atau laporan perusahaan.

    Fleksibilitasnya dalam query, mempersiapkan dan memvisualisasikan data

    menjadi alasan mengapa Microsoft Excel sering digunakan untuk membuat

    laporan perusahaan [1].

    Microsoft Excel memiliki bahasa pemrograman Visual Basic Application

    (VBA) yang bisa diakses melalui tab Developer. Fungsi yang dihasilkan dari script

    VBA biasa disebut macro. VBA ini dapat menambahkan kemampuan Excel untuk

    melakukan otomatisasi di dalam Excel dan juga menambahkan fungsi-fungsi yang

    dapat didefinisikan oleh pengguna (user-defined functions/UDF) untuk digunakan

    di dalam worksheet. Sistem ini dibuat karena di divisi IT PT. Sumber Alfaria

    Trijaya, Tbk., koneksi ke database untuk menarik data menggunakan script VBA

    tidak dianjurkan karena masalah keamanan, karena script dan query dapat terlihat

    dari sisi client. Maka dari itu, perlu adanya aplikasi di sisi client sebagai

    penengah, berupa graphical user interface (GUI) yang bertugas mengirim dan

    menerima parameter query, serta berinteraksi dengan worksheet dan VBA di

    Microsoft Excel.

    Bahasa pemrograman Python digunakan untuk membuat script GUI sesuai

    dengan tugas – tugas yang dibutuhkan. Hal ini didasari pada banyak dan

    tersedianya modul – modul yang mendukung tugas – tugas tersebut serta sintaks

    yang sederhana. Modul - modul seperti Tkinter dapat digunakan untuk membuat

    GUI dengan desain native desktop, xlsxwriter untuk berinteraksi dengan

    spreadsheet, win32com untuk berinteraksi dengan VBA di Excel, urllib untuk

    mengirim HTTP request ke server.

    Selain itu, dalam sistem ini, dibutuhkan webservice pada sisi server yang

    bertugas melakukan cek id session, user login, menerjemahkan setiap request dari

    sisi client, menanggapi request, mengirimkan response, melakukan koneksi ke

    database dan fungsi – fungsi lainnya.

    Sistem reporting ini bermanfaat bagi user dan developer dalam membuat

    dan menyajikan reporting perusahaan. Manfaat –manfaat yang akan didapatkan,

    antara lain: mempersingkat proses development pada menu report, menggantikan

    fungsi aplikasi web yang memiliki celah dimana url dan parameter dapat terlihat

    pada browser di sisi client serta bisa dilakukan inspect element pada webpage,

    merancang metode baru untuk memperbarui/versioning aplikasi dari sisi server

    dengan hanya mengganti file DSL, dan merancang GUI yang memiliki hak akses

    penuh ke aplikasi Microsoft Excel.

    Sistem reporting ini dirancang khusus untuk memenuhi kebutuhan khusus

    untuk kepentingan internal di Head Office PT. Sumber Alfaria Trijaya, Tbk.

  • 3

    Permasalahan - permasalahan di atas menimbulkan kebutuhan akan suatu

    metode reporting client - server berbasis Python yang dapat berinteraksi dengan

    spreadsheet dan VBA di Microsoft Excel dengan tujuan menciptakan suatu

    framework untuk reporting internal perusahaan yang aman, fleksibel dan mudah

    diaplikasikan.

    2. Tinjauan Pustaka

    Sistem reporting dengan metode ini baru pertama kali dibuat dan belum

    pernah ada sistem yang dibuat dengan metode yang sama. Namun, beberapa

    penelitian ditinjau sebagai referensi untuk penelitian ini. Penelitian terdahulu

    dengan judul “Perancangan Aplikasi Pengolahan Report untuk Sales Marketing

    Berbasis Web dengan Penerapan Google Maps API (Studi Kasus: PT. Gunung

    Jati)”. Tujuan dari penelitian ini yaitu merancang sebuah aplikasi berbasis web

    untuk memproses data berupa informasi pekerja, barang-barang yang dijual, dan

    informasi distribusi sales pada cabang di PT. Gunung Jati dan memiliki output

    dalam bentuk file Microsoft Excel [2].

    Penelitian lain yang berkaitan yaitu “Program Aplikasi Perhitungan Premi

    Asuransi Jiwa dengan Macro dan Excel Visual Basic for Application (VBA)”.

    Tujuan dari penelitian ini yaitu membuat program yang digunakan sebagai alat

    bantu perhitungan premi asuransi jiwa, dengan syarat hasil perhitungan program

    aplikasi dibandingkan dengan perhitungan manual tidak lebih dari Rp 1 [3].

    Penelitian terdahulu yang dikaji yaitu penelitian yang berjudul

    “Perancangan Aplikasi Pengolahan Data Report Penjualan”. Tujuan penelitian ini

    yaitu melakukan studi untuk menganalisa sistem informasi akuntansi di Agen

    Toko Wulan Jaya untuk meningkatkan mutu dan kualitas sistem [4].

    Sistem yang dibangun pada penelitian yang dilakukan sebelumnya memiliki

    output berupa aplikasi berbasis web yang menggunakan bahasa pemrograman

    PHP dengan interaksi ke Microsoft Excel. Sistem ini hanya sebatas menulis data

    ke spreadsheet dan tidak memanfaatkan macro. Tujuan pembuatan aplikasi pada

    penelitian diatas adalah untuk satu toko, sedangkan pada penelitian ini

    keseluruhan sistem (client dan server) yang dibuat untuk tujuan multi-reporting,

    banyak report bisa dipilih dari satu user interface. Sistem yang dibuat pada

    penelitian kali ini berupa desktop application agar mudah berinteraksi dengan

    Microsoft Excel. Namun, dengan dikembangkannya configuration file nantinya

    user dapat membuat form di device lainnya seperti android atau web dengan

    hanya menulis pada satu format file. Tampilan user interface bisa disesuaikan

    seperti keinginan pengguna dengan lebih mudah. Pada penelitian lainnya yang

    dikaji, ditemukan aplikasi yang bergantung pada Microsoft Excel dan macro,

    tanpa memanfaatkan client GUI atau webservice di server.

    Python adalah bahasa pemrograman yang berfokus pada tingkat keterbacaan

    kode. Python diklaim sebagai bahasa yang menggabungkan kapabilitas,

    kemampuan, dengan sintaksis kode yang sangat jelas, dan dilengkapi dengan

    fungsionalitas pustaka standar yang besar serta komprehensif. Python juga

    didukung oleh komunitas yang besar [6].

  • 4

    Common Gateway Interface atau disingkat CGI adalah suatu standar untuk

    berinteraksi antar halaman web. CGI mirip sebuah program komputer yang

    menjadi perantara antara standar HTML yang menghubungkan tampilan web

    dengan program lain, contohnya basis data (database). Hasil yang diperoleh dari

    proses pencarian dikirimkan kembali ke halaman web untuk ditampilkan dalam

    format HTML [7].

    Redis adalah basis data NoSQL yang bersifat open source, disimpan di in-

    memory dan disk, dan dapat digunakan sebagai database, session database, serta

    cache. Redis mendukung struktur data seperti string, sets, hash, lists dan sorted

    sets [8].

    3. Metode Perancangan

    Penelitian ini dilakukan melalui lima tahapan penelitian yang dapat dilihat pada

    Gambar 1.

    Gambar 1 Metode Penelitian

    Berdasarkan Gambar 1. dapat dijelaskan bahwa proses tiap tahapan penelitian

    yang dilakukan adalah sebagai berikut :

    1. Studi Pustaka Tahap pertama. Studi pustaka. Pada tahap ini, peneliti melakukan

    studi pustaka mengenai reporting dengan memanfaatkan Microsoft

    Excel, eksplorasi Visual Basic Application, eksplorasi bahasa

    pemrograman Python beserta modul-modulnya, mempelajari bagaimana

    HTTP request dan HTTP GET bekerja, mempelajari webservice,

    konfigurasi Ubuntu Server dan Redis pada server, dsb. Bahan studi

  • 5

    diperoleh dari buku – buku, jurnal – jurnal pada penelitian terdahulu,

    dan website mengenai python programming, server-side programming

    dan Microsoft Excel. Peneliti juga melakukan analisis terhadap

    environment yang dibutuhkan dalam sistem. Output yang dihasilkan

    pada tahap ini adalah informasi dan ilmu yang dibutuhkan dalam

    perancangan sistem yang akan dibuat.

    2. Perencanaan dan Perancangan Sistem Tahap kedua. Perencanaan dan perancangan kebutuhan sistem.

    Peneliti melakukan perencanaan dan spesifikasi sistem yang akan dibuat

    dengan diagram - diagram UML ( Unified Modeling Language ). Peneliti

    juga akan merancang user interface sistem. Output yang dihasilkan pada

    tahapan ini adalah hasil perencanaan dalam bentuk Use Case Diagram,

    Activity Diagram, dan Class Diagram.

    3. Implementasi dan Pengujian Sistem Tahap ketiga. Implementasi hasil perencanaan dan perancangan

    serta pengujian sistem yang dibuat. Pada tahap ini, peneliti

    mengimplementasikan hasil perancangan dan perencanaan serta ilmu

    yang dimiliki menjadi sebuah sistem yang baik. Setelah itu, peneliti

    melakukan pengujian sistem yang telah dibuat dengan memperhatikan

    kepada perbaikan pada bug, error, keamanan dan perbaikan user

    interface. Output yang dihasilkan pada tahapan ini yaitu sistem reporting

    client - server berbasis Python yang berinteraksi dengan spreadsheet dan

    macro di Microsoft Excel.

    4. Penarikan Kesimpulan dan Penyusunan Laporan Tahap keempat. Penarikan kesimpulan dari penelitian dan menyusun

    laporan hasil penelitian. Peneliti menarik kesimpulan dari hasil

    penelitian yang telah dilakukan dan mendokumentasikannya dalam

    bentuk laporan hasil penelitian.

  • 6

    Gambar 2 Use Case Diagram Peranan User dalam Sistem

    Diagram UML yang akan dibahas pada penelitian ini adalah Use Case

    Diagram, Activity Diagram, dan Class Diagram. Seperti yang dilihat pada

    Gambar 2, sistem reporting ini melibatkan dua aktor, yaitu user/pengguna pada

    sisi client dan admin/developer pada sisi server. User/pengguna dapat melihat list

    menu, memilih menu dari list, menginputkan detail menu, mengekspor data report

    ke Microsoft Excel dan mengakses macro. Pada sisi server, ada admin/developer

    yang membuatkan format file berekstensi .cfg untuk tiap tampilan menu. File .cfg

    ini akan dikonversi secara otomatis menjadi script Python oleh satu program yang

    dikaitkan ke webservice.

  • 7

    Gambar 3 Activity Diagram Ekspor Data Report dan Macro ke MS.Excel.

  • 8

    Perancangan Activity Diagram menunjukkan alur dari suatu aktivitas.

    Activity diagram pada Gambar 3 menunjukan aktivitas yang terjadi dalam proses

    penarikan/ekspor data. User/pengguna melakukan login untuk mengecek

    kecocokan data NIK dan PIN, serta untuk mendapatkan session id yang diciptakan

    oleh webservice dan disimpan di redis in–memory database. Setelah itu, user

    dapat melihat list menu, dan memilih satu dari beberapa menu report yang

    tersedia. Selanjutnya, user dapat melakukan input data yang dicari dan

    mengekspornya ke Microsoft Excel. Setiap aksi yang dilakukan pada GUI akan

    melibatkan session id, apabila user idle terlalu lama maka session id akan timeout

    dan user akan dikembalikan kembali ke login.

    Gambar 4 Class Diagram Sistem Reporting

    Class Diagram menunjukkan kelas kelas dalam suatu sistem, atribut masing

    – masing kelas, fungsi masing – masing kelas dan relasinya satu sama lain. Class

    Diagram pada Gambar 4 menunjukkan kelas kelas yang terdapat pada sistem

    reporting ini. Terdapat dua kelas utama yaitu client dan webservice pada server

    yang berkomunikasi lewat ip address dan port yang menjadi satu dalam url.

    Setiap client memiliki satu akun untuk login dan diwajibkan untuk melakukan

    login sebelum masuk ke menu utama. Setiap client dapat melakukan lebih dari 1

    kali request list menu, layout menu, dan report data. Lalu untuk mengatur request

    yang masuk ada webservice pada sisi server. Webservice ini dapat memberi

    respons dari setiap request yang masuk, mengatur session id, dan mengkonversi

    file cfg menjadi script Python.

  • 9

    4. Hasil dan Pembahasan

    Sistem ini melibatkan 3 komponen :

    1. Client Side

    Berupa GUI yang dirancang menggunakan Python Tkinter, berfungsi:

    • Menyiapkan tampilan agar user dapat melakukan fungsi login

    • Memilih menu report

    • Menyediakan frame untuk setiap report menu

    • Menentukan parameter dari report (contoh: tanggal, periode)

    • Mengirim parameter HTTP GET

    • Menulis script VBA di module Excel dan data di worksheet Excel

    dan fungsi lain yang berhubungan dengan interaksi user.

    2. Server Side

    a. Webservice CGI yang bertugas :

    • Mengidentifikasi request yang dikirim dari sisi client

    • Memberikan session id setiap login

    • Menghapus session ketika logout dan timeout

    • Mengecek session id

    • Mengirimkan query yang diminta ke database

    • Konversi configuration file menjadi script Python

    • Membaca dan mengirimkan skrip yang sudah dikonversi

    • Mengatur permintaan client dengan memberikan response yang

    diminta

    b. File - file cfg script menu report ( script yang akan dieksekusi di

    GUI client )

    c. File - file cfg script macro ( script yang akan di tulis ke module

    VBA)

    d. File - file cfg konfigurasi setiap parameter action.

    e. Redis sebagai session database.

    3. Database Oracle

    a. Tabel Login (Username dan Password)

    b. Data Report (Data yang akan ditulis di Excel)

    GUI di sisi client ini mirip seperti “browser” untuk setiap menu report.

    Pada browser, url dan parameter yang dikirim dapat terlihat, sedangkan pada GUI

    ini, url dan parameter yang dikirim ke server tidak terlihat. GUI ini juga memiliki

    hak akses secara penuh ke Microsoft Excel, sedangkan pada web hal itu tidak

    diperbolehkan. Session management pada web adalah otomatis, GUI ini dapat

    melakukan hal yang hampir serupa dengan adanya Redis di webserver. Berikut

    adalah GUI yang akan dikembangkan untuk Client Side:

  • 10

    1. Frame Login

    Berikut adalah tampilan frame login beserta error handlingnya. Apabila

    tombol “Login” diklik, maka url beserta parameternya akan dikirimkan ke

    webservice, lalu webservice mengecek apakah username dan password sesuai

    dengan data di database. Webservice akan memberikan respons berupa

    keterangan True / False dan id session.

    Gambar 5 Frame/Page Login beserta Error Handling-nya

    2. Frame Menu Report

    Setelah login berhasil, user akan dibawa pada frame ini. Pada subframe Menu

    List ditampilkan seluruh menu report berdasarkan nama/kode menu. Ada fungsi

    search yang digunakan untuk memfilter menu report di Listbox. Selain itu ada

    fungsi untuk menu help, refresh list menu, logout, dan preview.

    Gambar 6 Frame/Page Menu

  • 11

    Menu di bawah logo Alfamart adalah tampilan menu frame yang di exec/

    di embed ke dalam GUI, file konfigurasinya berada di sisi server, kemudian ada

    modul yang menerjemahkan file tersebut menjadi script python. Apabila pilihan

    list menu di sebelah kiri di click, maka webservice akan mengirimkan script

    tampilan menu sesuai parameter yang dikirim client, berikut adalah contoh menu

    reportnya:

    Gambar 7 Tampilan ketika Menu di Klik

    Setelah menemukan report yang diinginkan, user bisa menentukan

    direktori penyimpanan file Excel atau akan secara default akan diatur dengan

    menekan tombol Save as.

    Gambar 8 Memilih direktori penyimpanan

  • 12

    Apabila session sudah berakhir atau id session tidak sesuai ketika

    parameter session di check di webservice, maka webservice akan menghapus data

    session user dari database session dan memberikan respons agar GUI

    mengeluarkan warning dan mengembalikan user ke menu Login.

    Gambar 9 Dialog yang Keluar ketika Sesi Habis

    Apabila tombol Get Data diklik, maka url beserta parameternya akan

    dikirimkan ke webservice. Webservice akan melakukan pengecekan session dan

    melakukan akses ke database untuk mengambil data yang diminta, dan

    menyiapkan script VBA macro untuk ditulis ke module Microsoft Excel.

    Kemudian webservice akan merespons semua itu kembali ke client. User bisa

    langsung membuka Microsoft Excel yang diunduh atau melihatnya nanti.

    Gambar 10 Dialog yang Keluar ketika Data Berhasil Ditarik

  • 13

    Apabila tombol “Yes” di-click atau file Microsoft Excel yang sudah

    diunduh dibuka, maka bisa dilihat hasil data dan macro sudah ada dalam sheet.

    Gambar 11 File Excel dan ActiveX Button ketika Dibuka

    Apabila tombol “Chart” pada sheet di-click, script module VBA pada

    Microsoft Excel akan dijalankan. Hasilnya adalah seperti berikut:

    Gambar 12 Macro yang Telah Dijalankan Lewat Button

  • 14

    Apabila icon “Logout” di-click, GUI akan mengeluarkan konfirmasi

    sebelum logout, apabila “Yes” di-click, GUI mengirimkan parameter ke

    webservice untuk menghapus data session di session database.

    Gambar 13 Dialog yang Muncul ketika User Logout/Keluar Aplikasi

    Kode Program 1 Mengirim Parameter Data ke Webservice pada GUI 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    def sendparam(self):

    self.xl.Visible = False

    self.sheet_name = self.Entry_sheet.get()

    start = dt.now()

    if self.file_path=="":

    self.file_path=os.getcwd()+"/%s.xlsx"%self.currentmenu

    last_index = self.file_path.split('/')

    self.file_name = last_index[-1]

    if self.sheet_name=="":

    self.sheet_name="Data"

    parameters= ast.literal_eval(self.execstring[1])

    newparam = {'sessionid':SESSION_ID}

    for key,value in parameters.iteritems():

    if key not in ['table','column','action']:

    exec('%s=%s'%("newvalue",value))

    newparam.update({key:newvalue})

    else:

    newparam.update({key:value})

    menu_params=urllib.urlencode(newparam)

    req = urllib2.Request(url%menu_params)

    print_request(url%menu_params)

    response = urllib2.urlopen(req,cafile=certifi.where())

    the_page = response.read()

    if the_page=="relog":

    self.session_timed_out()

    result = ast.literal_eval(the_page)

    self.workbook = xlsxwriter.Workbook(self.file_path)

    self.worksheet = self.workbook.add_worksheet(self.sheet_name)

    data=[result[1][0]]

    for index_row, data_row, in enumerate(result[1][1]):

    datarow = list(data_row)

    data.append(datarow)

    for index_row, data_row, in enumerate(data):

    for index_col, data_col in enumerate(data_row):

    self.worksheet.write(index_row, index_col, data_col)

    self.workbook.close()

    end = dt.now()

  • 15

    42

    43

    44

    45

    46

    47

    48

    49

    if tkMessageBox.askyesno("Import Successful", "Retrieving data from

    server takes "+str(end-start)+" s. \n\nDo you want to open the Excel

    now?"):

    self.generate_macro(self.currentmenu)

    else:

    tkMessageBox.showinfo("File Info", "Your Excel named %s is in

    %s"%(self.file_name,self.file_path))

    }

    Kode program di atas adalah fungsi pada aplikasi sisi client untuk

    melakukan pengambilan data dan macro dari server. Request yang dikirim dari

    client GUI memiliki parameter berupa session id, kode report, dan parameter yang

    diperlukan. Kode pada baris 21 sampai 25 berfungsi melakukan request dan

    menampilkan hasil request url HTTPS. Data dan script macro kemudian

    ditambahkan ke Microsoft Excel file.

    Kode Program 2 Contoh file Konfigurasi 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    reportparam = ""

    Header = ""

    text = TES06-Data Sales

    Datepicker = ""

    name = Date

    labeltext = DATE

    width = 70

    height = 5

    position = 1

    Button = ""

    name = GetData

    text = Download

    command = sendparam

    position = 2

    width = 45

    height = 5

    commands = ""

    sendparam = ""

    action = select

    table = DEV_SCRIPT_TAB

    column = *

    dates = Datepicker>>Date

    Kode di atas merupakan contoh bahasa konfigurasi yang dibuat untuk

    mengerjakan suatu pekerjaan yang spesifik. Bahasa seperti ini biasa juga disebut

    DSL (Domain Specific Language). Pada kasus sistem reporting ini, bahasa

    konfigurasi dibuat agar developer tidak perlu menulis script panjang untuk

    membuat suatu report. Widget, konfigurasi database, query, dan parameter dibuat

    dalam satu struktur sederhana seperti kode diatas. Indentasi digunakan sebagai

    pemisah antar perintah. Satu program telah dibuat untuk mengkonversi bahasa

    konfigurasi ini menjadi script Python. File ini kemudian akan dibaca oleh

    webservice sebagai script Python dan dikirimkan ke sisi client.

  • 16

    Kode Program 3 Konversi file konfigurasi menjadi Dictionary 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    for c in data :

    j+=1

    a=self.conf_file_extract_line(c)

    if a[0] == 1 :

    if listKey.count(str(a[0]))==0 :

    listKey.append(a[1])

    k+=1

    elif a[0] == 2 :

    keyB = a[1]

    # dictData1[keyB] = []

    elif a[0] == 3 :

    keyC = a[1]

    if '[' in a[2] and ']' in a[2] :

    textA = str(a[2])

    import ast

    dictData2[keyC] = ast.literal_eval(textA)

    else:

    dictData2[keyC] = str(a[2])

    else :

    stringGet = dictData2.get(keyC,"")

    if stringGet != "" :

    stringGet += str(a[3])

    dictData2[keyC] = stringGet

    try :

    nextData = self.conf_file_extract_line(data[j])

    except :

    nextData = (100,"","")

    if nextData[0] == 2 and dictData2 != {} :

    dictData1[keyB] = dictData2.copy()

    dictData2 = {}

    listData.append(dictData1)

    dictData1 = {}

    elif nextData[0] == 1 and a[0] == 3 :

    dictData1[keyB] = dictData2.copy()

    dictData2 = {}

    listData.append(dictData1)

    dictData1 = {}

    elif j == len(data) :

    dictData1[keyB] = dictData2.copy()

    dictData2 = {}

    listData.append(dictData1)

    dictData1 = {}

    if nextData[0] == 1 and listData != [] :

    dictData[listKey[k-1]] = listData

    listData = []

    elif j == len(data) :

    dictData[listKey[k-1]] = listData

    listData = []

    return dictData

    Kode di atas merupakan fungsi untuk mengubah configuration file

    menjadi bentuk dictionary untuk kemudian diubah kembali menjadi script Python.

    Pengujian sistem dilakukan pada sistem reporting client – server ini dengan

    User Acceptance Test. UAT adalah pengujian yang bertujuan untuk membuktikan

    bahwa sistem yang dibangun sesuai dengan kebutuhan pengguna dan dapat

    menyelesaikan permasalahan pengguna. User Acceptance Test pada sistem

    reporting client – server dilakukan terhadap staff department IT di PT. Sumber

    Alfaria Trijaya, Tbk. Hasil dari pengujian User Acceptance Test terdapat pada

    Tabel 1.

  • 17

    Tabel 1 User Acceptance Test Metode Reporting

    No Pertanyaan Jawaban

    Jumlah Ax5 Ax4 Ax3 Ax2 Ax1

    1

    Apakah Metode Reporting

    sudah menyelesaikan

    permasalahan update

    script otomatis?

    4 1 0 0 0 24

    2

    Apakah Metode Reporting

    sudah menyelesaikan

    permasalahan interaksi

    langsung antara aplikasi

    dan Microsoft Excel?

    4 1 0 0 0 24

    3

    Apakah Metode Reporting

    sudah aman dalam hal

    pengiriman data dan

    script?

    3 2 0 0 0 23

    4

    Apakah developer terbantu

    dengan adanya

    configuration file?

    4 1 0 0 0 24

    5

    Apakah Metode Reporting

    dibutuhkan oleh

    perusahaan saat ini?

    5 0 0 0 0 25

    6

    Apakah metode ini akan

    diimplementasikan ke

    untuk sistem di perusahaan

    kedepannya?

    5 0 0 0 0 25

    Berdasarkan Tabel 1, nilai rata-rata pada jawaban pertama adalah 4,8 maka

    persentasenya adalah 96%, metode reporting ini dapat menyelesaikan kebutuhan

    perusahaan dimana dibutuhkan tampilan GUI desktop pada sisi client yang

    dinamis tanpa perlu melakukan update aplikasi. Nilai rata-rata pada jawaban

    kedua adalah 4,8 maka persentasenya adalah 96%, metode reporting ini dapat

    menyajikan data report di Microsoft Excel dengan baik, sampai dapat

    menambahkan macro. Nilai rata-rata pada jawaban ketiga adalah 4,6 maka

    persentasenya adalah 92%, user meyakini bahwa script dan data yang dikirim

    dalam sistem sudah aman karena sudah menggunakan protokol HTTPS. Nilai

    rata-rata pada jawaban keempat adalah 4,8 maka persentasenya adalah 96%,

    dalam membuat menu report, developer merasa terbantu karena tidak perlu

    menulis script panjang untuk setiap menu report. Nilai rata-rata pada jawaban

    kelima adalah 5 maka persentasenya adalah 100%, user menganggap metode ini

    berguna bagi toko yang membutuhkan aplikasi desktop dinamis dengan sistem

    yang aman. Nilai rata-rata pada jawaban keenam adalah 5 maka persentasenya

    adalah 100%, user menganggap metode ini sangat membantu dan bisa diterapkan

    ke sistem di perusahaan nantinya.

  • 18

    5. Simpulan

    Sistem reporting ini dibuat dengan menggunakan framework Python

    Tkinter sebagai Graphical User Interface (GUI) di sisi client dan Common

    Gateway Interface (CGI) untuk membuat webservice di sisi server. Bahasa

    konfigurasi pada sistem ini merupakan bahasa yang dikembangkan khusus untuk

    merancang menu report. Sistem ini mampu membuat report dalam format

    Microsoft Excel dengan fungsi macro (eksekusi dari script VBA) yang dikirim dari

    sisi server. Dengan adanya metode ini, diharapkan dapat mengatasi permasalahan

    dalam pengaksesan fitur macro pada report di Microsoft Excel, mencegah

    pengaksesan database langsung dari VBA, dan mempersingkat pembuatan menu

    report. Sistem ini tidak memerlukan update aplikasi di sisi client untuk tiap

    penambahan report. Sehingga proses pendistribusian menjadi lebih sederhana.

    Script dan data yang dikirim dari server ke client sudah aman karena

    menggunakan protocol HTTPS (secure HTTP).

    Saran yang diberikan untuk penyempurnaan: dapat diimplementasikan

    pada framework GUI Python lainnya untuk mendapatkan tampilan yang lebih

    menarik, dan menyempurnakan struktur file konfigurasi agar bisa menangani

    query yang kompleks.

    6. Daftar Pustaka

    [1] Bi-survey. 2018. “Microsoft Excel.” [Online]. Available:

    https://bisurvey.com/product/microsoft-excel. [Accessed: 19-Jul-2018].

    [2] T. Adhi Wardhana, A. Iriani, and Hendry, “Perancangan Aplikasi

    Pengolahan Report untuk Sales Marketing Berbasis Web dengan

    Penerapan Google Maps API (Studi Kasus: PT. Gunung Jati),” J. Teknol.

    Informasi-Aiti, vol. 9, no. 1, pp. 1–100, 2012.

    [3] N. Khamdan, Z. Solichin, and W. Yucianan, “Program Aplikasi

    Perhitungan Premi Asuransi Jiwa dengan Macro dan Excel Visual Basic

    for Application (VBA),” J. Mat., vol. 1, no. 1, pp. 108–117, 2012.

    [4] A. Wahana and A. R. Riswaya, “Perancangan Aplikasi Pengolahan Data

    Report Penjualan,” J. Comput. Bisnis, vol. 8, no. 1, p. 25, 2014.

    [5] Wikipedia, “Python (bahasa pemrograman).” [Online]. Available:

    https://id.wikipedia.org/wiki/Python_(bahasa_pemrograman). [Accessed:

    19-Jul-2018].

    [6] Wikipedia, “Common Gateway Interface.” [Online]. Available:

    https://id.wikipedia.org/wiki/Common_Gateway_Interface. [Accessed: 19-

    Jul-2018].

    [7] Redis, “Introduction to Redis” [Online]. Available:

    https://redis.io/topics/introduction [Accessed: 1-Aug-2018].

    [8] https://id.wikipedia.org/wiki/Microsoft_Excel. [Accessed: 19-Jul-2018].

    [9] M. Dewi, “Model Pemilihan Server Side Scripting untuk Sistem Informasi

    Sekolah: Studi Komparasi ASP, JSP, PHP, Python, dan Ruby,” J. Univ.

    Indraprasta PGRI, vol. 1, no. 58, pp. 13–20, 2000.