Perubahan tipe field

Salah satu hal yang saya lakukan ketika mengolah data dari tabel foxpro (dbf) adalah merubahnya ke tipe tabel yang lebih tua. Tipe itu adalah foxplus. Tipe ini dikenal dengan dbase versi 4. Alasan perubahan dari tipe yang paling baru ke tipe sebelumnya adalah karena saya melakukan pengolahan data di dalam Access. Tipe table dari foxpro yang dikenal Access hanya dbase 3 dan 4. Setara dengan tipe foxplus.

Cara merubah tipe dbf adalah dengan perintah ‘copy to nama_table type foxplus’. Sepintas, tidak ada yang aneh dengan command ini, karena memang tidak melakukan apapun selain merubah tipe ke foxplus.

Kemudian, terjadilah hal yang menakutkan buat saya setelah tipe dbf ini dirubah ke dalam foxplus. Data yang diolah dalam Access tidak bisa diproses lebih lanjut. Data di kolom yang bertipe double dirubah oleh command ‘copy to…’ menjadi numeric. Data dalam Access yang tadinya hendak saya upload ke dalam program ERP yang saya gunakan, tidak bisa dikenali formatnya. Kolom - kolom yang bertipe numeric tadi tidak bisa diupload, dan program ERP tidak menampilkan error yang semestinya menurut saya, tampil menunjukkan adanya perbedaan tipe field yang diupload.

Pertanyaan saya sekarang adalah, mengapa perintah ‘copy to nama_table type foxplus’ bisa menimbulkan efek perubahan tipe field ? Apa tipe double tidak dikenali dalam format sebelumnya ?

Memindahkan data transaksi ke dalam program ERP

Salah satu hal yang harus dilakukan sebelum dijalankannya secara total program ERP adalah memindahkan data yang ada di program yang lama ke dalam program ERP. Proses memindahkan data ini mutlak harus dijalankan untuk mengetahui posisi jumlah uang di rekening bank, posisi jumlah hutang yang ada di vendor, posisi uang yang masih harus dibayar pelanggan ke kita dan posisi-posisi lainnya. Posisi jumlah nilai-nilai itu harus sama persis dengan yang ada di program lama. ERP harus memakan data itu bulat-bulat, dimasukkan ke dalam sistem mereka dan menampilkannya keluar lewat laporan-laporan yang diterbitkan.

Ada 2 jenis perpindahan data ini : jenis pertama, data yang dipindahkan adalah data detil per transaksi. Data yang terdapat di penjualan, pembelian maupun data akunting, semuanya masuk ke dalam ERP. Data-data ini benar-benar harus diuji posisi terakhirnya di ERP.

Ukuran keberhasilan proses perpindahan data detail per transaksi, cuma satu :D sedikit kan ? Yaitu, posisi atau nilai yang tertera, sama persis dengan yang ada di program lama.

Misalnya begini, ada data penjualan ke kustomer selama tahun 2007, bernilai 1 milyar rupiah. Tersimpan di dalam nomor akun, 101.000.999 atau disebut juga piutang usaha. Data penjualan yang sudah terjadi selama tahun 2007, semuanya dipindahkan masuk ke dalam ERP. Kalau kita bicara detail, artinya data penjualan seperti Faktur atau Invoice yang ada, semuanya harus dipindahkan ke dalam ERP.

Daftar nomor akun atau Chart Of Account(COA) dalam ERP, dengan nomor yang boleh jadi sama,maka nomor akun dalam ERP harus menampilkan jumlah nilai / posisi yang sama dengan nomor akun di program lama.

Proses perpindahan model begini, membutuhkan pemetaan antara tabel di program lama dan tabel di ERP. Tabel yang sudah dipetakan itu berujud seperti relasi antara pemasok dan pemakai. Ada tabel yang berfungsi sebagai sumber data dan ada tabel yang berfungsi sebagai penampung data. Semua aturan atau proses bisnis yang terjadi di program lama, yang itu tercermin di data, harus bisa diterima dan diproses oleh ERP. Hasil akhirnya adalah laporan keuangan yang dikeluarkan ERP akan bernilai sama dengan laporan keuangan yang dihasilkan program lama.

Jenis ke dua dari proses pemindahan data transaksi ke ERP adalah memasukkan nilai / posisi COA saja. Nilai terakhir dari COA yang ada di program lama, dipindahkan ke dalam COAnya ERP. Tidak perlu ada data transaksi yang dipindahkan. Karena nilai dari data transaksi yang terjadi selama tahun 2007, misalnya, sudah berada di dalam COA.

Nah, nilai / posisi inilah yang dipindahkan ke dalam ERP. Mudah bukan ? Anda tidak perlu memikirkan data tentang Faktur atau Invoice, pembelian, perpindahan barang dari lokasi yang satu ke lokasi yang lain, dll. Konsentrasilah hanya pada nilai COA. Jangan kepada yang lain. Cukup daftar COA itu saja yang anda cermati, perhatikan dan jangan sampai ada 1 yang luput dari mata anda. Ingat, aturannya tetap sama dengan jenis yang pertama. Nilai / posisinya dalam ERP harus sama dengan yang ada di program lama. Itu saja.

Sepintas, cara kedua lebih mudah digunakan. Tidak terlalu pusing dengan data transaksi detil yang ada di program lama. Bedanya cuma satu dengan jenis pemindahan pertama, tidak ada data transaksi detil yang ikut ke dalam ERP. Masa bodoh lah dengan sejarah :D padahal kalau kita mau belajar sejarah, kita bisa mengoreksi kebiasaan buruk yang sering kita lakukan.

Pilihan ada di tangan anda sebagai penentu langkah. Mau pilih yang mana, cara kesatu atau kedua. Semua ada harga yang harus dibayar. Ada resiko yang ditanggung. Ada waktu yang akan dikorbankan. Jangan sampai anda salah memilih jalan…nasihat kuno ya :D Tapi seandainya anda salah jalan pun, selama mau merubah sikap, saya yakin, tidak ada yang tidak mungkin untuk melakukan pemindahan data transaksi dari program lama ke dalam ERP. Pokoknya tetap semangat dan optimis.

Menghitung Record (2)

Kalau dalam artikel sebelumnya tentang menghitung record, ada delay waktu yang diperlukan SQL Server untuk menampilkan hasil query pengecekan kita, kali ini saya akan memberikan script dalam syntax Axapta, untuk menghitung jumlah record. Script ini bisa digunakan untuk menghitung record dalam table LedgerJournalTable dan LedgerJournalTrans. Waktu yang diperlukan lebih cepat dari yang dijalankan di SQL Server. Script ini menghitung dalam beberapa Company Accounts.

/*
Created on 12 Maret 2008
By Setiaji Kurniawan
Purpose: Menghitung jumlah record pada account “Kas Penjualan - Rupiah (Upload)” Nomor 1112.47.0000
*/

static void Jobs_Status_Upload(Args _args)
{

str MyStr;
LedgerJournalTrans _LJTrans;
LedgerJournalTable _LJTab;
LedgerBalancesTrans _Lbt;

changecompany(’MKS’)
{
_LJTab = Null;
_LJTrans = Null;
MyStr = curext();
_Lbt = null;

select count(journalnum) from _LJTrans group by dataareaid join _LJTab
where _LJTrans.JournalNum == _LJTab.JournalNum && _LJTab.JournalName==’Penerimaan’;
info(strfmt(”Trans : %1 %2″,_LJTrans.JournalNum,MyStr));

select count(journalnum) from _LJTab where _LJTab.JournalName==’Penerimaan’;
info(strfmt(”Table : %1 %2″,_LJTab.JournalNum,MyStr));

select sum(debitMST) from _LBT where _Lbt.AccountNum==’1112.47.0000′;
info(strfmt(”Nilai: %1 %2″,_Lbt.DebitMST,MyStr));
info(’—–’);
}

changecompany(’PLG’)
{
_LJTab = Null;
_LJTrans = Null;
MyStr = curext();
_Lbt = null;

select count(journalnum) from _LJTrans group by dataareaid join _LJTab
where _LJTrans.JournalNum == _LJTab.JournalNum && _LJTab.JournalName==’Penerimaan’;
info(strfmt(”Trans : %1 %2″,_LJTrans.JournalNum,MyStr));

select count(journalnum) from _LJTab where _LJTab.JournalName==’Penerimaan’;
info(strfmt(”Table : %1 %2″,_LJTab.JournalNum,MyStr));

select sum(debitMST) from _LBT where _Lbt.AccountNum==’1112.47.0000′;
info(strfmt(”Nilai: %1 %2″,_Lbt.DebitMST,MyStr));
info(’—–’);

}

changecompany(’SMD’)
{
_LJTab = Null;
_LJTrans = Null;
MyStr = curext();
_Lbt = null;

MyStr = curext();
select count(journalnum) from _LJTrans group by dataareaid join _LJTab
where _LJTrans.JournalNum == _LJTab.JournalNum && _LJTab.JournalName==’Penerimaan’;
info(strfmt(”Trans: %1 %2″,_LJTrans.JournalNum,MyStr));

select count(journalnum) from _LJTab where _LJTab.JournalName==’Penerimaan’;
info(strfmt(”Table: %1 %2″,_LJTab.JournalNum,MyStr));

select sum(debitMST) from _LBT where _Lbt.AccountNum==’1112.47.0000′;
info(strfmt(”Nilai: %1 %2″,_Lbt.DebitMST,MyStr));

info(’—–’);
}

}

Menghitung Record

Sewaktu Axapta sedang menjalankan query untuk input dan update data, SQL Server mengunci (lock) tabel-tabel yang sedang digunakan. Jadi kalau kita ingin melakukan pengecekan data yang sudah masuk ke dalam tabel, ada delay waktu yang digunakan SQL Server untuk mengeluarkan hasilnya. Locking di SQL Server 2005 lebih baik kecepatannya dari pada SQL Server 2000.

Contoh : Ada proses input data ke dalam table LedgerJournalTable dan LedgerJournalTrans dengan jumlah record yang harus dimasukkan sebanyak 3.117.852. Proses input data ini melibatkan banyak Company Account. Waktu yang dibutuhkan kira-kira 48 jam. Proses input data ini menggunakan query, bukan input secara manual. Bagaimana kita bisa memeriksa record-record yang sedang diinput, berhasil masuk ke dalam 2 tabel itu ?

Jika kita ingin mengecek lewat query, baik dari Query Analyzer, atau IDE bahasa pemrograman lain, dipastikan akan ada delay selama kurang lebih 3 menit.

Query yang dijalankan adalah “select count(journalnum) from LedgerJournalTrans group by dataareaid join
LedgerJournalTable
where LedgerJournalTrans.JournalNum == LedgerJournalTable.JournalNum and LedgerJournalTable.JournalName==’Penerimaan’

Input Data Transaksi

Paket ERP dapat menerima data transaksi lewat dua cara. Pertama, input langsung lewat modul yang ada di dalamnya. Kedua, upload data dari sistem lama. Keduanya punya plus dan minusnya. Faktor-faktor dalam menentukan plus minusnya harus dipertimbangkan sebelum diambil langkah selanjutnya. Jangan sampai salah keputusan yang akhirnya malah merugikan banyak pihak. Baik dari sisi kustomer yang membeli paket ERP maupun sisi konsultan vendor ERP tsb.

Ada salah satu sarana yang bisa kita jadikan salah satu ukuran untuk menentukan keputusan input data. Sarana itu adalah menciptakan suatu lingkungan virtual yang isinya sama persis dengan kondisi live. Secara teknis, lingkungan virtual ini merupakan sebuah aplikasi yang isi setting, modul, security dll sama persis dengan kondisi live. Sebuah database yang juga berisi data master yang persis sama dengan kondisi live.

Kenapa kondisi virtual ini diperlukan untuk menentukan keputusan input data ? Karena efek dari proses input data yang dilakukan di dalam lingkungan virtual bisa dilihat besarnya, bisa dipelajari untuk solusinya, dan juga bisa dicegah dari awal sebelum masuk ke kondisi live.

Butuh banyak resource dalam hard disk server yang diperlukan. Karena kita seolah-olah menduplikasi 2 hal. Aplikasi dan databasenya. Setiap update aplikasi harus dicopy ke dalam lingkungan virtual, setiap update database juga harus dicopy ke dalam lingkungan virtual. Jadi apapun yang terjadi di master data, aplikasi data di lingkungan live, harus dicopykan ke lingkungan virtual.

Setelah disiapkan kondisi virtual dengan aplikasi dan database di dalamnya, baru kita bisa input data di dalamnya. Pekerjaan ini pun dilakukan dengan 2 kali effort. Input di dalam virtual dan input di live. Hasil dari proses input di virtual menentukan apakah input di live bisa dilakukan.

Belajar sampai tulangnya

Belajar secara teknikal untuk pemrograman dalam paket program ERP seperti memahami ruangan besar dengan kamar-kamar yang jumlah ribuan. Di masing-masing kamar itu terdapat bermacam-macam objek, ada lemari, bangku, alat rias, cermin, kasur dan lain-lain. Semua objek dalam kamar bisa saya samakan dengan method dalam class. Kamar saya samakan dengan class. Oia, saya lupa, pembicaraan saya ini dalam paket ERP Axapta, keluaran Microsoft. Kenapa saya menggunakan Axapta, karena saya sehari-hari menggunakan dalam bekerja. Insya Allah jika saya sudah bisa membagi waktu, saya akan mempelajari paket ERP selain Axapta. Ingin saya yang sifatnya open dan mampu saya instal / jalankan di komputer.

Di Axapta, modul-modul yang ada terbangun dari ribuan class yang di dalamnya terdiri dari puluhan method. Coba anda bayangkan pelan-pelan, jika kamar itu saya samakan dengan class, dan objek di dalamnya saya samakan dengan method, alangkah besarnya paket ERP Axapta ini. Ya, memang besar. Tapi tidak semua bisa kita gunakan, tergantung keperluan yang ingin kita gunakan. Dan saya yakin, tidak ada orang yang bisa memahami keseluruhan class dan method yang ada di Axapta. Mohon maaf kalau pendapat saya salah, dan saya butuh koreksinya, jika ada orang yang mampu memahami sampai ke tingkat variabel dalam method di keseluruhan class yang ada.

Lalu bagaimana kita memahami Axapta secara keseluruhan ? Tidak ada cara lain, gunakan sebagai aplikasi untuk sehari-hari. Lambat laun kita akan mampu memahaminya. Berapa lama ? Entah, tergantung tingkat pemahaman dari masing-masing orang yang menggunakannya. Seperti belajar bahasa di suatu daerah dimana kita sebagai orang baru yang tinggal disitu, hanya langsung bicara dengan tertatih-tatih di dalam bahasa daerah itu. Apa harus mengerti dulu semua kosa katanya untuk sekadar kata sapaan ? Tentu tidak. Mulailah dari yang mudah dan praktis, juga sering digunakan. Pasti lama-lama bisa.

Membaca program orang lain

Ternyata memang lebih susah memahami program buatan orang lain daripada membuat program sendiri. Sebelumnya saya tidak percaya dengan omongan ini. Tapi setelah membuktikannya sendiri, baru terasa sampai tulang-tulang. Begitulah, kiranya saya langsung percaya, tentu tidak perlu sampai pening puyeng tujuh keliling.

Satu-satunya hal yang membuat sulit memahami program buatan orang adalah, kita tidak tahu tahap-tahapan yang ditempuh sewaktu membaca programnya. Boleh jadi tahu tujuan program itu dibuat. Dan setiap orang punya logika sendiri untuk menuju tujuannya. Kita sebagai pembacanya, hanya bisa menerka-nerka semua variabel, metode dan query yang digunakan. Variabel ini fungsinya apa, metode itu gunanya apa, query ini untuk mendapatkan data itu. Perkiraan ini akan semakin bengkak, seiring dengan banyaknya program yang harus dibaca.

Dokumentasi yang baik di dalam program akan sangat membantu orang lain memahami alur program. Hal ini banyak dilakukan di program yang bersifat open. Orang lain malah diharapkan untuk memodifikasi program dengan logika yang lebih baik dari pembuat program aslinya. Semakin banyak orang yang merubah menjadi lebih baik, semakin banyak utilitas program itu.

ERP makanan S1, S2 ?

Dalam milis sering kali ditanyakan gelar ijazah yang harus kita milliki untuk mempelajari ERP. Harus S1 ya? Apa S2? ERP itu materi spesialis yang hanya S2 saja yang bisa ya ?

Entah kenapa pengkotak-kotakkan itu terjadi di jaman sekarang. Seolah-olah tabu untuk seorang D3 mengetahui ERP. Atau malah seorang operator warnet yang lulusan STM tidak dibolehkan bosnya membaca-baca materi ERP. Alasannya, pusing nantinya.

Bos jepang di tempat kerja saya yang lama, sering kali menyemangati saya dengan slogannya, ‘Anda masih muda, masih kuat untuk berpikir keras, untuk pusing menghadapi materi pelajaran yang ada. Maju, jangan takut’. Kadang kalau saya sedang down melihat masalah yang saya hadapi, semangat seperti ini yang menjadi penyemangat untuk maju lagi menghadapi hidup.

Apa haknya seseorang menghalang-halangi orang lain untuk belajar? Belajar untuk memperbaiki kualitas hidup. Apa tidak wajar seseorang lulusan STM atau D3 untuk membuat software sekelas ERP ?

Setahu saya, pertama kali kita memutuskan untuk terjun ke dunia ERP, pasti ditertawakan. Dianggap sebelah mata. Siapa elo ? Nih gua udah punya titel spesialis, dari lembaga pendidikan juga sertifikasi dari vendor. Apa boleh buat, itulah realitanya.

Jadi, menurut saya, dengan semakin banyaknya materi ERP yang bisa kita dapatkan di internet, sudah nggak ada lagi pengkotak-kotakkan tingkat pendidikan dengan kemampuannya. Siapapun bisa dan boleh untuk mempelajarinya. Tinggal kemampuan masing-masing untuk memahaminya. Butuh waktu, tenaga dan uang yang tidak sedikit. Karena Tuhan pasti akan melihat usaha kita yang dimulai dengan doa.

Powered by ScribeFire.

Coba dulu baru beli

Saking seringnya yang nanya soal kapan baiknya beli software ERP, udah lah jawabannya saya tulis disini aja. Jawabannya cuma 1, COBA DULU BARU BELI. Kalau dirasa pas dengan bisnis proses yang ada, beli. Tapi kalau nggak sreg, jangan beli. Rugi ! Mending kalau cuma rugi, malah jadi bumerang buat yang nyesel beli. Sampai berdarah-darah malah, soalnya jabatan jadi taruhannya. Wong dia yang ngusulin ya dia juga yang tanggung jawab harus implement sampai selesai. Jangan berhenti di tengah jalan.

Kerugian bukan cuma di pihak customer yang membeli software ERP, tapi juga di pihak vendor. Budget untuk biaya implementasi bengkak tiada tara. Mirip bisul yang udah nggak ketulungan gedenya. Mau dipecahin salah, didiemin salah. Jadi serba salah kan, maju kena mundur kena.

Sekarang kan banyak tuh software free yang di bidang ERP. Buanyak banget. Coba deh masukkin keywordnya ‘free software erp’ di google. Bejibun tuh keluarnya. Cek websitenya, download, trus coba instal deh. Kalau dirasa pas, gunakan, jadi nggak perlu keluar duit. Tapi kalau pengin yang model closed source, coba aja hubungi vendor dari software ERP itu, tanyakan apa mereka nyediain cd trialnya. Kalau ada, minta deh, terus coba instal.

Cara nyoba dulu baru beli sebenarnya dari dulu udah ada. Kayak kita nyoba baju yang mau dibeli, kan musti ke kamar pas, ngaca dulu, tanya ke teman pantes enggaknya. Kalau semua udah cocok, baru deh beli.

Gimana, mudah kan ?

Powered by ScribeFire.

Vista memang sering masalah di network

Saking seringnya bermasalah di network, saya sampai sesumbar ke teman-teman, jangan pernah pakai Vista untuk pemakaian di kantor.

Kasusnya itu seperti ini, Vista yang ada di notebook HP beda VLAN dengan server. Login ke server sering masalah, dan kalau sudah login, sering disconnect tiba-tiba. Pemakainya pun sering kaget dengan dc ini karena file yang sedang dikerjakan sering hilang tiba-tiba dari editornya.

Untuk aplikasi Axapta, setting harus ke lokal kalau mau aman pakai Vista. Bakalan sering timbul masalah kalau disetting ke 2 tier / 3 tier. Dimana IP nya server dan database kemungkinan berbeda VLAN dengan Vista.

Maaf Om Bill, saya kali ini tidak bisa menggunakan produk terbaru anda dengan optimal. Karena memang mengesalkan saya secara profesional. Om Bill tidak akan merekomendasikan produk yang seandainya anda mengalaminya sendiri. Di saat sedang input journal, tiba-tiba di layar monitor terbentang windows error message, “You have been disconnected from AOS”. Kesal gak Om kalau anda ada di situasi seperti itu ?

Powered by ScribeFire.


AJAXed with AWP