Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
46 lines
996 B
ABAP
46 lines
996 B
ABAP
FUNCTION {{p}}trl_price
|
|
IMPORTING
|
|
iv_source_lang TYPE string
|
|
iv_target_lang TYPE string
|
|
iv_words TYPE i
|
|
iv_express TYPE abap_bool
|
|
EXPORTING
|
|
ev_price TYPE decfloat34
|
|
EXCEPTIONS
|
|
invalid_words.
|
|
|
|
IF iv_words < 0.
|
|
RAISE invalid_words.
|
|
ENDIF.
|
|
|
|
IF iv_words = 0.
|
|
ev_price = 0.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
DATA lv_rate TYPE decfloat34.
|
|
IF ( iv_source_lang = 'EN' AND iv_target_lang = 'DE' )
|
|
OR ( iv_source_lang = 'DE' AND iv_target_lang = 'EN' ).
|
|
lv_rate = '0.12'.
|
|
ELSEIF ( iv_source_lang = 'EN' AND iv_target_lang = 'FR' )
|
|
OR ( iv_source_lang = 'FR' AND iv_target_lang = 'EN' ).
|
|
lv_rate = '0.15'.
|
|
ELSE.
|
|
lv_rate = '0.20'.
|
|
ENDIF.
|
|
|
|
DATA lv_amount TYPE decfloat34.
|
|
lv_amount = iv_words * lv_rate.
|
|
|
|
IF iv_express = abap_true.
|
|
lv_amount = lv_amount * '1.25'.
|
|
ENDIF.
|
|
|
|
ev_price = round( val = lv_amount dec = 3 mode = cl_abap_math=>round_half_up ).
|
|
|
|
IF ev_price < 25.
|
|
ev_price = 25.
|
|
ENDIF.
|
|
|
|
ENDFUNCTION.
|