5.06.2008

Looping yang Pusing

* Get the first date they got golongan
SORT p0001 BY begda DESCENDING.
LOOP AT p0001.
PERFORM f_get_golongan USING p0001-plans p0001-begda p0001-endda
CHANGING l_trfgr.
IF l_trfgr <> l_oldtrfgr.
EXIT.
ENDIF.
IF i_hrp1501-begda > p0001-begda.
l_date = i_hrp1501-begda.
ELSE.
l_date = p0001-begda.
ENDIF.
ENDLOOP.

sintaks perulangan di atas bikin saya pusing 5 hari. khususnya bagian IF i_hrp1501-begda > p0001-begda. Kode ini menurut pembuatnya dimaksudkan untuk mengambil tanggal mulai terhitung (TMT) sejak seorang pegawai mendapatkan golongan saat ini. begda itu start date. Jadi yang dia coba bandingkan adalah apakah start date di tabel hrp1501 lebih besar dari start date di tabel p0001. Kalo iya begitu, maka TMT nya diisi dari hrp15001. Naaah, kok dia ambil tanggal yg lebih besarr.. waa.. saya langsung ngerasa logika saya dalam memahami kode nya gak benar. Kemungkinan kodenya yang salah lebih kecil karena 1 tahun 5 bulan saya disini, ngoprek dan nyontek kode para konsultan itu, kode mereka belum pernah salah, selalu saya yang ngoprek atau yang nyonteklah yang khilaf, hehe.

Sampai hari ini, saya berani bilang kodenya yang salah, yak, yakin 1000% insya Allah. Karena setelah lihat kode di dalam prosedur f_get_golongan, ga mungkin sampe lebaran monyet bagian IF di atas akan pernah bernilai true. Karena di prosedur itu start date dari tabel hrp1501 diambil dengan kondisi: where hrp1501-begda <= p0001-begda. Lah waktu diambil saja sudah dikasih kondisi lebih kecil dari p0001 terus setelah itu di IF sebaliknya.

Oh Allah, manusia memang tempatnya khilaf dan lupa, saya mungkin masih akan koding beribu2 baris dari sekarang (mudah2an tidak), entah berapa baris yang akan bikin orang lain bingung seperti yang saya alami ini, kekekekeke. Baiklah, kasus ditutup.

 
Template by yummylolly.com