76 lines
1.4 KiB
ABAP
76 lines
1.4 KiB
ABAP
CLASS {{p}}glasses_pricer DEFINITION
|
|
PUBLIC
|
|
FINAL
|
|
CREATE PUBLIC .
|
|
|
|
PUBLIC SECTION.
|
|
TYPES ty_amount TYPE p LENGTH 9 DECIMALS 2 .
|
|
TYPES ty_lens TYPE c LENGTH 1 .
|
|
TYPES ty_coat TYPE c LENGTH 1 .
|
|
METHODS price
|
|
IMPORTING
|
|
iv_frame TYPE ty_amount
|
|
iv_lens TYPE ty_lens
|
|
iv_coat TYPE ty_coat
|
|
iv_qty TYPE i
|
|
RETURNING
|
|
VALUE(rv_price) TYPE ty_amount .
|
|
PROTECTED SECTION.
|
|
PRIVATE SECTION.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}glasses_pricer IMPLEMENTATION.
|
|
|
|
METHOD price.
|
|
|
|
DATA lv_qty TYPE i .
|
|
DATA lv_frame TYPE ty_amount .
|
|
DATA lv_lens TYPE ty_amount .
|
|
DATA lv_coat TYPE ty_amount .
|
|
DATA lv_total TYPE ty_amount .
|
|
|
|
lv_qty = iv_qty .
|
|
IF lv_qty > 100 .
|
|
lv_qty = 100 .
|
|
ENDIF .
|
|
|
|
IF lv_qty < 1 .
|
|
rv_price = 0 .
|
|
RETURN .
|
|
ENDIF .
|
|
|
|
lv_frame = iv_frame * lv_qty .
|
|
|
|
IF iv_lens = 'S' .
|
|
lv_lens = 40 .
|
|
ELSEIF iv_lens = 'B' .
|
|
lv_lens = 90 .
|
|
ELSEIF iv_lens = 'P' .
|
|
lv_lens = 150 .
|
|
ELSE .
|
|
lv_lens = 40 .
|
|
ENDIF .
|
|
lv_lens = lv_lens * lv_qty .
|
|
|
|
CASE iv_coat .
|
|
WHEN 'A' .
|
|
lv_coat = 25 .
|
|
WHEN 'B' .
|
|
lv_coat = 35 .
|
|
WHEN OTHERS .
|
|
lv_coat = 0 .
|
|
ENDCASE .
|
|
lv_coat = lv_coat * lv_qty .
|
|
|
|
lv_total = lv_frame + lv_lens + lv_coat .
|
|
|
|
IF lv_qty >= 3 .
|
|
lv_total = lv_total - lv_total * 10 / 100 .
|
|
ENDIF .
|
|
|
|
rv_price = lv_total .
|
|
|
|
ENDMETHOD .
|
|
ENDCLASS.
|