Selasa, Mei 12, 2009

Memanggil Webservice Menggunakan Ms Visual Basic 6

STUDI KASUS: MEMANGGIL WEBSERVICE BC1.1 DI INSW

Kali ini saya akan menuliskan tentang cara memanggil sebuah method di webservice dengan menggunakan M$ Visual Basic 6. Agar lebih mantap dan aplikatif, maka saya juga menggunakan studi kasus untuk memanggil sebuah method yang telah tersedia di webservice di INSW.

Sekilas Info Tentang Data BC1.1
Data BC1.1 adalah salah satu contoh data pre-notification untuk pengiriman dokumen impor. Seringkali untuk mendapatkan data ini, importir/PPJK mengalami kesulitan. Data BC1.1 merupakan data respon dari KPBC untuk perusahaan pengangkutan (baca: shipping agent) terkait dengan pengiriman dokumen manifestnya tersebut. Setiap 1 pos di dokumen manifes biasanya terhubung dengan 1 dokumen PIB dengan menggunakan parameter data BC1.1 tersebut. Oleh karena demi peningkatan pengawasan arus barang masuk di pelabuhan, maka sejak diberlakukannya implementasi sistem PDE Manifes, Bea Cukai mewajibkan informasi data BC1.1 tercantum disetiap dokumen PIB yang di kirim ke KPBC oleh importir/PPJK.

Mulai melakukan pemrograman
Sebelum melakukan pemrograman pemanggilan service menggunakan VB6, maka terlebih dahulu kita harus melakukan instalasi SOAP Toolkit yang bisa didownload di website Micro$oft. Software ini merupakan software yang dapat diunduh gratis berisi library-library SOAP yang bisa digunakan oleh VB6.

Alamat webservice BC1.1 adalah di http://services.insw.go.id/BC11Services/Services mempunyai satu method yang bisa di invoke yaitu CekBC11. Informasi detail tentang method Cek BC11 bisa ditemukan di WSDL yang disertakan. Disana kita melihat terdapat 2 parameter input yaitu string dan string0. Penjelasan tentang method tersebut dapat diringkas menjadi tabel sebagai berikut.

Parameter yang digunakan pada saat pemanggilan adalah Nomor dan Tanggal Bill of lading. Data ini sangat spesifik dan biasanya sudah cukup dikenal oleh para importir mengingat data ini merupakan salah satu dokumen pendukung yang "wajib" ada saat mengirimkan PIB disamping invoice.

Selanjutnya, kita buka software M$ Visual Basic 6. Buat sebuah project baru (Standar exe) kemudian buat satu form yang terdiri dari textbox dan tombol-tombol seperti contoh dibawah ini dan berilah nama variabel di masing-masing obyek tersebut.

Jangan lupa, kita juga harus membuat referensi ke library SOAP Toolkit yang telah kita instal tadi. Langkahnya:
- Buka menu Projects | References
- Cari library Micro$oft SOAP Type Library v3.0

- Kemudian klik tombol OK.

Kita mulai men-coding!
Pada form yang telah kita buat tadi, klik di tombol cmdInvoke ("Get BC1.1") ikut isikan baris sebagai berikut.
Private Sub cmdInvoke_Click()
Dim wsClient As SoapClient30
Dim strWSDL As String
Dim strResult As String
Dim noBL As String
Dim tgBL As String

Set wsClient = New SoapClient30
strWSDL = "http://services.insw.go.id/BC11Services/Services?WSDL"

noBL = txtNoBL.Text
tgBL = Format(txtTgBL.Value, "DD-MM-YYYY")

wsClient.MSSoapInit strWSDL
strResult = wsClient.cekBC11(noBL, tgBL)

Text2.Text = strResult
End Sub

Selanjutnya jalankan (Run) program yang kita buat ini. Masukan paramater Nomor BL dan Tanggal BL yang valid. Contoh response yang kita dapatkan akan keluar string sbb:
001476|22/04/2009|0001.0000.0000|040000|MT. LAUREN|04|PT INDORAMA SYNTHETICS TBK,
Langkah selanjutnya kita bisa lakukan parsing data tersebut untuk digunakan lebih lanjut.
Mudah, bukan? Selamat mencoba!

Selasa, Maret 31, 2009

Belajar Mapping Dokumen UN/EDIFACT Menggunakan Software AtlasEDI/ PalapaDI

Pada tulisan sebelumnya kita telah mempelajari bagaimana proses mapping dokumen UN/EDIFACT, kali ini saya akan mengajak sampeyan untuk mempelajari lagi bagaimana caranya melakukan mapping dokumen menggunakan software EDI Enabler yang lain. Sebenarnya banyak sekali sofware translator dokumen EDI yang bisa digunakan. Salah satunya adalah AtlasEDI.

AtlasEDI merupakan salah satu software EDI Enabler yang dikembangkan pertama kali oleh Atlas Product International. Kemudian diakhir hayatnya sempat pula dikelola oleh Harbinger Corporation, salah satu perusahaan di Inggris. Saya sendiri sempet merasakan nguprek software ini mulai dari yang versi AIX, versi DOS dan terakhir adalah versi Windows (versi 4.2.x).

Pada perkembangannya, ternyata software ini di Indonesia kemudian bermutasi nama menjadi PalapaDI, yang dikembangkan oleh salah satu software house lokal Indonesia. Pada jaman kejayaannya (tahun 1990-an), software ini merupakan salah satu software EDI yang cukup mumpuni. Disamping sebagai translator EDIFACT, juga menyediakan fasilitas koneksi dengan berbagai protokol komunikasi, dari protokol proprietary hingga teknologi TCP/IP yang kala itu baru mulai ngetrend.

Sebagai contoh case study untuk sharing knowledge kali ini, saya masih tetap menggunakan dokumen PIB yang telah kita pelajari sebelumnya. Langkah-langkah melakukan mapping dokumen UN/EDIFACT di software ini adalah sebagai berikut.

Membuat Table Maintenance
Fungsi table maintenance ini sama persis dengan file EDF yang pernah saya sampaikan sebelumnya yaitu digunakan untuk menginterpretasikan struktur global message UN/EDIFACT yang telah kita tentukan. Jika sampeyan lupa, silakan baca kembali tulisan saya sebelumnya. Untuk masuk ke menu ini, sampeyan bisa masuk ke software kemudian pilih menu Administration | Message Table Maintenance.

Setelah muncul form seperti diatas, selanjutnya pilih tombol Add maka akan muncul layar Message table maintenance. Terlebih dulu pilih tab Header. Isikan kolom-kolom tersebut sesuai dengan informasi yang terdapat dalam PIA. Misalnya sbb.

Kemudian klik tombol Segment. Pada layar ini terdapat beberapa isian yaitu:

  • Label, merupakan label rekord yang didefinisikan di PIA
  • Level, merupakan level segment tag UN/EDIFACT yang dipakai. Jika ada kesempatan, saya akan tuliskan apa yang dimaksud dengan hal ini.
  • Repeat, merupakan jumlah perulangan yang dijinkan dalam segment group atau tag itu.
  • G.M/C, merupakan scope perulangan dari segment group, apakah mandatory atau conditional. Jika tidak didefinisikan C atau M, maka tag tersebut bukan merupakan kepala segment group.
  • M/C, adalah scope kemunculan dari tag itu sendiri.
  • Segment, merupakan jenis-jenis tag element UN/EDIFACT yang dipakai.
  • Description merupakan keterangan dari masing-masing tag.
Sampeyan bisa gunakan tombol-tombol di layar ini;
  • Insert --> untuk menyisipkan tag baru diantara tag-tag yang sudah ada.
  • Add --> untuk menambahkan tag baru diakhir tag
  • Delete --> untuk menghapus tag yang sudah diisikan.
Untuk menyimpan semua setting Table Maintenance ini, silakan klik tombol OK.

Melakukan Mapping Data
Proses ini hampir mirip pada saat kita membuat file HDF ditulisan sebelumnya. Klik menu Administration | Translation Setting | Data Mapping. Muncul layar Table selection, kemudian pilihlah dokumen yang akan diedit. Misalnya DOKPIB, kemudian klik tombol Edit.

Kemudian akan muncul form sebagai berikut lakukan editing terhadap tag-tag element yang diperlukan. Pastikan bahwa semua tag element telah dimasukan sesuai dengan kebutuhan yang terdapat dalam PIA.

Langkah terakhir tentu saja melakukan pengetesan terhadap pekerjaan tersebut diatas. Caranya? Untuk melakukan translate dokumen dari flat file ke bentuk EDIFACT gunakan menu Data Processing | Export Translation.

Selamat mencoba!

Rabu, Maret 25, 2009

Belajar mapping dokumen menggunakan standar UN/EDIFACT

Gak serius dulu
Buat orang awam: Opo tho yo standar UN/EDIFACT itu? Apa sejenis kue lemper? Apa enak dimakan? Atau malah bikin saya muntah jika saya mempelajarinya?
Buat orang yang sudah ngerti: Satu guru-satu ilmu dilarang ganggu.


Mulai sedikit serius
Ide menulis ini didalam blog saya sebenarnya sederhana saja. Ketika saja tanya Paman Google, adakah blog berbahasa Indonesia yang pernah membahas tentang standar UN/EDIFACT? Paman Google menjawab belum. Alasan kedua, kemaren sempet kesal ada Mr-Mr yang sotoy nggak ngerti dokumen UN/EDIFACT tapi belagu dan nyalah-nyalain orang lain. Padahal mereka cuman expert di ISO 8583. Hehehe... Ya, sudah, daripada pengetahuan ini jadi hilang dari ingatan saya, lebih baik saya tulis aja disini sekalian sharing knowledge buat pembaca sekalian. :D Itu adalah alasan ketiga.

Ini baru serius.
UN/EDIFACT merupakan singkatan dari United Nation/Electronic Data Interchange for Administration, Commerce and Transport yaitu sebuah standar dokumen yang dikembangkan dibawah naungan salah satu badan PBB untuk kepentingan pertukaran data secara elektronik untuk kebutuhan administrasi, perdagangan dan transportasi. Pada perkembangannya, standar ini dikelola dan dikembangkan lebih lanjut oleh UN/CEFACT (United Nations Centre for Trade Facilitation and Electronic Business) dibawah naungan UN Economic Commission for Europe (UN/ECE). UN/EDIFACT sendiri telah menerima sertifikasi standar ISO 9735.

Standar UN/EDIFACT telah banyak digunakan dalam kebutuhan pertukaran data elektronik antar intitusi/lembaga. Bahkan WCO telah lama merekomendasikan standar ini untuk digunakan pada instansi kepabeanan di dunia.

Di Indonesia sendiri, selain digunakan oleh pertukaran data di lingkungan kepabeanan, beberapa perusahaan pelayaran pun telah lama menggunakan standar UN/EDIFACT ini untuk bertukar data dengan para prinsipalnya.

Berikut ini kita akan belajar standar dokumen UN/EDIFACT dengan mengambil studi kasus pada penerapan sistem kepabeanan impor di Indonesia.

Dokumen Pemberitahuan Impor Barang dibeberapa Kantor Pelayanan Bea dan Cukai telah diterapkan secara elektronik dalam penyampaiannya. Bisa menggunakan media disket, maupun menggunakan fasilitas EDI provider. Untuk menggunakan cara yang kedua dibutuhkan proses integrasi agar dokumen yang disampaikan dapat dimengerti oleh tujuan. Salah satu proses integrasi tersebut adalah melakukan mapping dokumen yang dipertukarkan antara data inhouse dengan data yang dikirimkan ke jaringan EDI begitu pula sebaliknya. Tulisan ini tidak membahas secara detil tentang konsep sistem EDI, namun hanya pada proses mapping dokumen saja. Semoga lain kali jika ada waktu, saya akan menuliskannya dikesempatan yang lain.

Gambaran kerja integrasi sistem secara global adalah seperti berikut.
Modul/sistem internal akan mengeluarkan sebuah file flat kemudian oleh EDI Enabler akan dibentuk sedemikian rupa sehingga menghasilkan file berstandar EDIFACT. Pada saat menerima dokumen akan berlaku sebaliknya. Berikut ini adalah salah satu contoh isi dari flat file dokumen PIB.

(di klik aja untuk memperjelas gambar diatas)

Apakah Anda mengerti maksud dan arti disetiap baris flat file tersebut diatas? Bisa jadi banyak pembaca yang bilang nggak ngerti. Bisa jadi pula ada diantara sampeyan yang masuk kategori kemeruh dan bilang "Ya, saya ngerti!" hehehe... Tentu saja akan sulit menginterpretasikan arti tiap-tiap baris flat file tersebut jika tidak terdapat kamus datanya. Kamus data pada sistem PDE Kepabeanan disebut dengan Pedoman Integrasi Aplikasi.

Tulisan di blog ini akan menjelaskan urut-urutan membuat mapping dokumen UN/EDIFACT. Secara garis besar, urut-urutannya adalah sebagai berikut.

Tentukan jenis message yang digunakan.
Jenis message di UN/EDIFACT bisa macam-macam. Misalnya untuk dokumen PIB ini disebut dengan CUSDEC (customs declaration message). Penentuan jenis message ini dapat dilihat dari konten dan tipikal data yang akan dipertukarkan, kemudian carilah referensi di UN/EDIFACT direktori. Pilih satu message dan rilis yang cocok sesuai kesepakatan dengan PIA. Misalnya untuk dokumen impor adalah CUSDEC D98B.

Pelajari struktur dokumen
Setelah ditentukan jenis message yang digunakan, selanjutnya pelajari pula struktur dokumen yang terdapat dalam direktori tersebut. Struktur dokumen UN/EDIFACT memiliki segment table seperti berikut.

Dalam sebuah segment tabel terdapat tag (UNH, BGM dst), uraian dari masing-masing tag, scope (mandatori atau conditional kemunculannya) dan pola perulangan. Dalam tag tabel tersebut terdapat pula segment group.

Persiapkan file EDI Definition File (EDF)
File ini merupakan terminologi jika menggunakan software Intercept Plus (IPLUS) sebagai EDI Enabler, jika menggunakan software lain, bisa jadi nama filenya berbeda namun secara konsep tetap saja sama. File ini merupakan file yang isinya merupakan representasi dari struktur lengkap document message tersebut diatas. Bisa jadi tidak semua tag digunakan. Boleh saja menggunakan tag yang dibutuhkan saja untuk dituliskan. Namun kita harus hati-hati, misalnya pada contoh diatas kita akan mengambil tag FTX di segment group ke-3, maka kita tak boleh begitu saja menuliskannya di file EDF kita tanpa menuliskan tag-tag pada segment group diatasnya. Keculai jika kita hanya menginginkan tag RFF di segment group ke-1, maka kita bisa saja melewatkan tag dibawahnya ataupun tag di segment group ke 2 atau ke 3.

(Contoh file EDF. Klik untuk memperjelas)

Buatlah file Inhouse Definition File (HDF)
Langkah selanjutnya, adalah memetakan masing-masing komponen data di flat file ke dalam dokumen EDF. Kita lihat disetiap tag terdapat variabel yang bisa dipanggil oleh file HDF. Contohnya RFF0010, PAC0010 dst. Jangan lupa, untuk memetakan ini, kita harus pegang buku 'sakti' Pedoman Integrasi Aplikasi untuk masing-masing dokumen.

(Contoh file HDF. Klik gambar untuk memperjelas)

Langkah selanjutnya adalah teliti kembali pekerjaan Anda dan lakukan testing sampai tidak ditemukan error. Hehehe...

Contoh dokumen UN/EDIFACT PIB kira-kira kayak gini.

(Contoh dokumen EDIFACT PIB, sebenarnya kagak nyambung dengan flatfile yang diatas hehehe. Klik deh untuk memperjelas.)


Kamis, November 27, 2008

Tambah aja programmernya, khan beres! Wakss...!!

Tatkala suatu proyek pengembangan sistem teknologi informasi telah hampir deadline dan pekerjaan masih belum selesai, banyak top manajemen yang berfikir,"Ya, udah tambah aja programmernya khan beres!" Waks...


Apakah memang demikian? Apakah jika sudah menambah programmer maka pekerjaan pengembangan sistem tersebut akan cepat kelar?

Manusia bukanlah bagian yang bisa dipertukarkan dengan mudah. Kita tidak bisa membuat asumsi bahwa pekerjaan yang sebenarnya dijadwalkan selesai dikerjakan 2 bulan oleh satu orang bisa diperpendek dan kelar dalam 1 bulan gara-gara dikerjakan oleh 2 orang. Sebuah analogi populer menyatakan: Tak mungkin dengan mengumpulkan 9 wanita bersama-sama dapat melahirkan seorang bayi dalam jangka waktu sebulan. Jelas tak mungkin!

Setiap orang memiliki tipe-tipe kepribadian yang berbeda-beda. Itu jelas! Sampeyan nggak mungkin memiliki kepribadiannya sama dengan saya, atau sebaliknya bukan? Terus terang saya sih bukan ahlinya yang mengamati kepribadian seseorang. Jika sampeyan pengen tahu tentang hal ini tanyakan langsung sama mbak yang punya blog ini. Sepanjang yang saya ketahui, seseorang yang memiliki kepribadian introvert lebih menyukai komunikasi yang lebih privat dibandingkan dengan seseorang dengan kepribadian ekstrovert yang lebih menyukai berdiskusi di depan orang banyak. Orang yang memiliki kepribadian intuitif lebih menyukai gambaran global, sedangkan orang dengan kepribadian sensing lebih menyukai rincian tahapan demi tahapan. Orang yang memiliki sifat pemikir lebih menyukai hal-hal yang bisa dilogikakan, sedangkan orang berkepribadian feeling akan selalu ingin tahu apa yang berimbas langsung kepada pribadinya. Seseorang yang memiliki kepribadian judging akan selalu bisa menuntaskan deadline, sedangkan orang dengan kepribadian perceiving akan butuh banyak bantuan dan mengerjakan tugas-tugasnya.

Perbedaan-perbedaan kepribadian ini harus dapat secara cepat diantisipasi oleh seorang ketua tim pengembang jika ingin menambah anggota tim. Menempatkan anggota tim yang saling berlawanan untuk menyelesaikan sebuah tugas, bukannya mempercepat pekerjaan tapi malah menghambat kinerja tim tersebut.

Itu baru dari sisi kepribadian anggota tim. Bagaimana dengan pola komunikasinya?

Proyek bukan semata mengejar deadline saja. Ia adalah sebuah proses komunikasi dan negosiasi yang tiada henti hingga proyek berakhir. Siapapun pemilik pekerjaan, tentu tak ingin adanya kejutan-kejutan. Harus terdapat mekanisme komunikasi yang efektif, baik internal pengembang maupun eksternal dengan pemilik pekerjaan. Oleh karenanya semakin kita menambah orang dalam tim kita, katakanlah menambah programmer, maka jalur komunikasi yang terjadi akan semakin banyak dan kompleks. Semakin singkat jalur komunikasi, maka semakin baik. Tak banyak informasi yang terdistorsi.

Jumlah jalur komunikasi dapat ditentukan menggunakan rumus:

Jumlah jalur komunikasi = n(n-1)/2

Dimana, n merupakan jumlah anggota tim kita yang terlibat. Maka, katakanlah julah anggota tim dari 3 kita tambah menjadi 4, maka jumlah jalur komunikasinya akan menjadi 4(4-1)/2 = 6

Lho, sekarang khan udah jaman teknologi canggih, nggak masalah jumlah timnya banyak khan? Kita bisa menyampaikan pesan-pesan langsung tersebar ke seluruh anggota tim menggunakan email bukan? Apa benar begitu?

Coba lihat gambar diatas. Jika anggota tim 4 maka akan terjadi 6 jalur komunikasi, jika 5 akan terjadi 10 jalur komunikasi, dan seterusnya. Apa artinya ini? Jalur komunikasi akan bertambah lebih banyak dibanding penambahan anggota tim. Jika kita ingin mempersingkat jalur komunikasi, misalnya dengan menggunakan email, kita harus mempertimbangkan interaksi yang terjadi antara anggota tim. Melempar sebuah isu dengan mengirim email ke 100 orang hasilnya akan sangat berbeda dibandingkan dengan membawa isu tersebut kesebuah rapat akbar atau rapat tim kecil. Mengirim email ke 100 orang bisa jadi akan menimbulkan banyak masalah dibandingkan hasil yang didapat dari sebuah rapat.

Bagaimana pendapat sampeyan?

Bahan bacaan:

Jumat, Oktober 17, 2008

Menghilangkan pesan "low ink warning" pada cartridges isi ulang printer HP

Printerku, HP Officejet 4355 All-in-one beberapa minggu ini nggak memuaskan digunakan. Gimana tidak memuasakan, lha wong tintanya habis. Mau beli cartride original kok mahal ya... ya akhirnya beli tinta refiilnya doang seharga Rp. 30 rebu. Jelas ini menghemat banget karena harga cartridge baru diatas seratus ribuan. :p

Cartridge untuk printerku ini jenisnya 22 untuk yang berwarna dan 21/27 untuk yang hitam. Ternyata untuk mengisi tintanya juga ndak sulit banget. Di tinta refill yang aku beli telah diberikan petunjuk cara penggunaannya. Tapi aku sempet terkecoh dengan petunjuk tersebut. Dipetunjuknya disebutkan bahwa cartridge harus di lubangin terlebih dulu dengan paku. Padahal untuk menemukan lubang isi ulangnya, kita tinggal buka aja stiker yang ada di cartridge tersebut.

Setelah diisi ulang, ternyata printer memberitahukan bahwa cartridgenya dalam kondisi low ink. Nah, ini baru benar-benar bodoh si printer ini. Lha wong udah jelas barusan diisi ulang kok dibilang tintanya dalam kondisi low.

Beberapa hari sempet tanya sana-sini tak menemukan jawaban memuaskan. Beberapa teman mengatakan agar cuekin aja pesan itu. Tinggal klik OK aja khan bisa ngeprint. Iya, sih. Tapi kurang nyaman aja setiap kali ngeprint muncul pesan yang tak diharapkan kayak gitu. Akhirnya aku menemukan jawaban yang cukup jitu untuk mengakali pesan tak diharapkan tersebut. Dari hasil browsing di beberapa website, printer HP tersebut sebenarnya mengingat serial cartridge yang pernah digunakan. Jadi selama memori printer masih terisi serial cartridge lama, maka walaupun cartridge itu telah diisi ulang, maka printer akan selalu menganggap sebagai cartridge yang udah pernah digunakan, bukan cartridge baru. Jadi kalo pengen menghlangkan pesan low ink warning tersebut yang melakukan hacking sedikit ke printer supaya memori serial cartridge refillan hilang.

Nah, langkah untuk mengakali supaya pesan low ink warning sehingga status tinta printer kembali penuh adalah sebagai berikut:

1. Siapkan gunting, selotip transparan dan tentu saja cartridge yang udah diisi tinta baru tersebut.

2. Nyalakan printer. Buka tempat tutup printer dan cabut cartridge yang mau di hack tersebut.

3. Tutup pin paling atas dari nomor 2 dari kiri dengan selotip. Tentu saja selotipnya telah digunting kecil. Lihat gambar deh.

4. Masukan cartridge tersebut dan tutup cover printer. Jika ada pesan "Cartridge(s) incorrectly instaled" acuhkan saja. Tunggu hingga printer ndak gerak lagi.


5. Cabut lagi cartridge tersebut. Sekarang tutup pin paling atas nomor 2 dari kanan menggunakan selotip. Selotip yang sebelumnya jangan dibuka dulu.

6. Masukan kembali cartridge tersebut. Tunggu hingga printer ndak gerak lagi.

7. Buka cover printer. Cabut cartridge tersebut. Buka kedua selotip yang telah menutupi kedua pin tadi.

8. Masukan lagi cartridge tersebut ke printer. Lihat, printer sekarang telah menganggap kita telah menginstal cartridge baru. Hehehe.... Dan status tintapun kembali penuh!

9. Langkah selanjutnya, printer biasanya akan minta kita melakukan alignment page. Turuti saja seperti apa yang tertampil di layar printer.

Kini tinta printer kembali penuh dan pesan low ink warning tak akan muncul lagi saat kita melakukan pencetakan. Hehehe...

* tips ini bisa digunakan pada cartridge 22/27/21
* thanks buat yang sempet nemenin aku cari-cari cara ngehack cartridge printer ini walau cuman lewat ym :p
* ide dari sini --> Resetting the 900 Series HP Printer's Ink Level For a Recycled Cartridge
* bacaan lain --> Reset Cartridge