49 lines
1010 B
ABAP
49 lines
1010 B
ABAP
FUNCTION {{p}}ad_price
|
|
IMPORTING
|
|
iv_lines TYPE i
|
|
iv_insertions TYPE i
|
|
iv_photo TYPE abap_bool
|
|
EXPORTING
|
|
ev_price TYPE decfloat34
|
|
EXCEPTIONS
|
|
invalid_lines
|
|
invalid_insertions.
|
|
|
|
CONSTANTS lc_line_rate TYPE decfloat34 VALUE '12.45'.
|
|
CONSTANTS lc_photo_fee TYPE decfloat34 VALUE '25.00'.
|
|
CONSTANTS lc_min_price TYPE decfloat34 VALUE '20.00'.
|
|
|
|
DATA lv_price TYPE decfloat34.
|
|
DATA lv_discount TYPE decfloat34.
|
|
|
|
IF iv_lines < 1.
|
|
RAISE invalid_lines.
|
|
ENDIF.
|
|
|
|
IF iv_insertions < 1.
|
|
RAISE invalid_insertions.
|
|
ENDIF.
|
|
|
|
lv_price = iv_lines * lc_line_rate.
|
|
IF iv_photo = abap_true.
|
|
lv_price = lv_price + lc_photo_fee.
|
|
ENDIF.
|
|
|
|
lv_discount = 0.
|
|
IF iv_insertions >= 6.
|
|
lv_discount = 20.
|
|
ELSEIF iv_insertions >= 3.
|
|
lv_discount = 10.
|
|
ENDIF.
|
|
|
|
lv_price = lv_price * ( 100 - lv_discount ) / 100.
|
|
lv_price = round( val = lv_price dec = 3 ).
|
|
|
|
IF lv_price < lc_min_price.
|
|
lv_price = lc_min_price.
|
|
ENDIF.
|
|
|
|
ev_price = lv_price.
|
|
|
|
ENDFUNCTION.
|