Files
abap-llm/tasks_gen/train/G1303/seed/glasses_pricer.clas.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.