With the method below you can verify a Turkish Identification Number
METHOD tckimlik_dogrula. DATA: v_tcno TYPE c LENGTH 11, v_13579 TYPE i, " 1. 3. 5. 7. 9. basamak v_13579x7 TYPE i, " 1. 3. 5. 7. 9. basamakların 7 katı v_02468 TYPE i, " 2. 4. 6. 8. basamak v_10 TYPE i, v_11 TYPE i. v_tcno = im_tckimlik. " 1. 3. 5. 7. ve 9. hanelerin toplamı v_13579 = v_tcno(1) + v_tcno+2(1) + v_tcno+4(1) + v_tcno+6(1) + v_tcno+8(1). " 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katı v_13579x7 = v_13579 * 7. " 2. 4. 6. ve 8. hanelerin toplamı v_02468 = v_tcno+1(1) + v_tcno+3(1) + v_tcno+5(1) + v_tcno+7(1). " Elde edilen sonucun 10'a bolumunden kalan " sayının Mod10'u bize 10. haneyi verir. v_10 = ( v_13579x7 - v_02468 ) MOD 10. " Eldeki 10 hanenin toplamından elde edilen sonucun " 10'a bolumunden kalan, yani Mod10'u bize 11. haneyi verir. v_11 = ( v_13579 + v_02468 + v_10 ) MOD 10. IF v_tcno+9(1) NE v_10. es_retmsg = VALUE #( retcode = 4 msg = 'Geçersiz TC Kimlik numarası.' ). ELSEIF v_tcno+10(1) NE v_11. es_retmsg = VALUE #( retcode = 4 msg = 'Geçersiz TC Kimlik numarası.' ). ENDIF. " TCKimlik sadece sayıdan oluşabilir IF NOT v_tcno CA '0123456789'. es_retmsg = VALUE #( retcode = 1 msg = 'TC Kimlik numarası sadece sayıdan oluşabilir.' ). " TCKimlik no 11 karakter uzunluğunda olmalı. ELSEIF strlen( v_tcno ) NE 11. es_retmsg = VALUE #( retcode = 2 msg = 'TC Kimlik numarası 11 karakter uzunluğunda olmalı.' ). " TCKimlik no sıfır ile başlayamaz ELSEIF v_tcno(1) EQ 0. es_retmsg = VALUE #( retcode = 3 msg = 'TC Kimlik numarası sıfır ile başlayamaz.' ). ENDIF. IF es_retmsg-retcode IS INITIAL. es_retmsg = VALUE #( retcode = 0 msg = 'TC Kimlik numarası doğru.' ). ENDIF. ENDMETHOD.