SAP Abap kodları ile yazdığım isimlerin sonuna gelecek olan türkçe iyelik eklerini belirleyen rutin.
*&---------------------------------------------------------------------*
*& Form KIP_EKI
*&---------------------------------------------------------------------*
form kip_eki using p_kipturu p_text type char100
changing p_ek.
data: v_len type i,
v_cnt1 type i,
v_cnt2 type i value 1,
seslivesert(100),
ss, "sonsesli
sh, "sonharf
lv_text like p_text.
lv_text = p_text.
replace all occurrences of 'İ' in lv_text with 'i'.
replace all occurrences of 'I' in lv_text with 'ı'.
translate lv_text to lower case.
concatenate 'a' 'ı' 'e' 'i' 'u' 'o' 'ü' 'ö' 'ç' 'f' 'h' 'k' 'p' 's' 'ş' 't'
into seslivesert
separated by ','.
v_len = strlen( lv_text ).
do v_len times.
if lv_text+v_cnt1(v_cnt2) ca 'a,e,ı,o,ö,u,ü,i'.
ss = lv_text+v_cnt1(v_cnt2).
endif.
sh = lv_text+v_cnt1(v_cnt2).
v_cnt1 = v_cnt1 + 1.
enddo.
case p_kipturu.
when 'in' . "iyelik eki -> Ahmet'in
if ( sh = 'a' or sh = 'ı' ) .
p_ek = '''nın'.
elseif ( sh = 'e' or sh = 'i' ) .
p_ek = '''nin'.
elseif ( sh = 'u' or sh = 'o' ) .
p_ek = '''nun'.
elseif ( sh = 'ü' or sh = 'ö' ) .
p_ek = '''nün'.
elseif ( ss = 'a' or ss = 'ı' ) .
p_ek = '''ın'.
elseif ( ss = 'e' or ss = 'i' ) .
p_ek = '''in'.
elseif ( ss = 'u' or ss = 'o' ) .
p_ek = '''un'.
elseif ( ss = 'ü' ) .
p_ek = '''ün'.
else .
p_ek = '''ın'.
endif.
when 'e' . "ismin e hali -> Ahmet'e
if ( sh = 'a' or sh = 'ı' or sh = 'u' or sh = 'o' ) .
p_ek = '''ya'.
elseif ( sh = 'e' or sh = 'i' or sh = 'ü' or sh = 'ö' ).
p_ek = '''ye'.
elseif ( ss = 'a' or ss = 'ı' or ss = 'u' or ss = 'o' ).
p_ek = '''a'.
elseif ( ss = 'e' or ss = 'i' or ss = 'ö' or ss = 'ü' ).
p_ek = '''e'.
else.
p_ek = '''a'.
endif.
when 'i' . "ismin i hali -> Ahmet'i
if ( sh = 'a' or sh = 'ı' ) .
p_ek = '''yı'.
elseif ( sh = 'e' or sh = 'i' ) .
p_ek = '''yi'.
elseif ( sh = 'u' or sh = 'o' ) .
p_ek = '''yu'.
elseif ( sh = 'ü' or sh = 'ö' ) .
p_ek = '''yü'.
elseif ( ss = 'a' or ss = 'ı' ) .
p_ek = '''ı'.
elseif ( ss = 'e' or ss = 'i' ) .
p_ek = '''i'.
elseif ( ss = 'u' or ss = 'o' ) .
p_ek = '''u'.
elseif ( ss = 'ü' ) .
p_ek = '''ü'.
endif.
when 'de' . "ismin de hali -> Ahmet'te / Ayşe'de
if ( sh = 'a' or sh = 'ı' or sh = 'u' or sh = 'o' ) .
p_ek = '''da'.
elseif ( sh = 'e' or sh = 'i' or sh = 'ü' or sh = 'ö' ) .
p_ek = '''de'.
elseif ( sh ca seslivesert )
and ( ss = 'a' or ss = 'ı' or ss = 'u' or ss = 'o' ) .
p_ek = '''ta'.
elseif ( sh ca seslivesert )
and ( ss = 'e' or ss = 'i' or ss = 'ü' or ss = 'ö' ) .
p_ek = '''te'.
elseif ( ss = 'a' or ss = 'ı' or ss = 'u' or ss = 'o' ) .
p_ek = '''da'.
elseif ( ss = 'e' or ss = 'i' or ss = 'ü' or ss = 'ö' ) .
p_ek = '''da'.
elseif ( sh ca seslivesert ) .
p_ek = '''ta'.
else .
p_ek = '''da'.
endif.
when 'den'. "ismin de hali -> Ahmet'ten / Ayşe'den
if ( sh = 'a' or sh = 'ı' or sh = 'u' or sh = 'o' ) .
p_ek = '''dan'.
elseif ( sh = 'e' or sh = 'i' or sh = 'ü' or sh = 'ö' ) .
p_ek = '''den'.
elseif ( sh ca seslivesert )
and ( ss = 'a' or ss = 'ı' or ss = 'u' or ss = 'o' ) .
p_ek = '''tan'.
elseif ( sh ca seslivesert )
and ( ss = 'e' or ss = 'i' or ss = 'ü' or ss = 'ö' ) .
p_ek = '''ten'.
elseif ( ss = 'a' or ss = 'ı' or ss = 'u' or ss = 'o' ) .
p_ek = '''dan'.
elseif ( ss = 'e' or ss = 'i' or ss = 'ü' or ss = 'ö' ) .
p_ek = '''dan'.
elseif ( sh ca seslivesert ) .
p_ek = '''tan'.
else.
p_ek = '''dan'.
endif.
when 'ile'. "beraberlik hali -> Ayşeyle / Ahmetle
if ( sh = 'a' or sh = 'ı' or sh = 'u' or sh = 'o' ) .
p_ek ='yla'.
elseif ( sh = 'e' or sh = 'i' or sh = 'ü' or sh = 'ö' ) .
p_ek ='yle'.
elseif ( ss = 'a' or ss = 'ı' or ss = 'u' or ss = 'o' ) .
p_ek ='la'.
elseif ( ss = 'e' or ss = 'i' or ss = 'ö' or ss = 'ü' ) .
p_ek ='le'.
else .
p_ek = 'la'.
endif.
endcase.
endform. "kip_eki
Hiç yorum yok:
Yorum Gönder