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