Paranoya Bizi Hayatta Tutar

İncelediğim bir ABAP programında şöyle bir kod gözüme çarptı:

parameters:

(…)

p_matnr like mara-matnr obligatory.

(…)

clear mara.

select single * from mara where matnr = p_matnr.

perform process_data using mara-matnr

mara-meins

p_olcu

p_miktar

changing p_miktar.

Bu koddaki problem şu: Seçim ekranında hiç olmayan bir malzeme girildiğinde program yine de çalışmaya devam ediyor.

Bunun iki çözümü olabilir. İlk çözüm, seçim ekranındaki tanımı değiştirmek:

parameters:

(…)

p_matnr like mara-matnr obligatory value check.

Bunu dediğinde; kullanıcı istese de MARA’da olmayan bir malzeme giremez.

İkinci yol ise sorgudan sonra kontrol etmek:

clear mara.

select single * from mara where matnr = p_matnr.

if sy-subrc ne 0.

Message ….

Leave list-processing.

endif.

perform process_data using mara-matnr

mara-meins

p_olcu

p_miktar

changing p_miktar.

İstersen benim yazdığım birkaç programı incele. Programın hiçbir yerinde “Bu veri nasılsa vardır” veya “Bunu kullanıcı nasılsa doğru girer” gibi varsayımlar kullanmamalıyız. Aradığın verinin orada olmayabileceği, kullanıcının yanlış veri girebileceği, ne bileyim, girilmiş bir metinden belli bir bilgiyi çıkartıyorsan metinin yanlış girilmiş olabileceği gibi beklenmedik durumları da dikkate alacak bir şekilde yazmalısın programı. Bu da; kodun her adımına kontrol koyup hatalı / beklenmedik durumlarda kullanıcıyı bilgilendirmek ve gerekiyorsa programın akışını durdurmak ile mümkün olur.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s