Harness: runner, generator, tasks T01 T13 T14 T15, CLAUDE.md

This commit is contained in:
Kral
2026-10-02 21:42:51 +02:00
commit 1c6c85492e
54 changed files with 3732 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
FUNCTION {{p}}evt_fee
IMPORTING
iv_doc_type TYPE string
iv_amount TYPE decfloat34
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_amount.
ev_skip = abap_false.
IF iv_amount < 0.
RAISE invalid_amount.
ENDIF.
CASE iv_doc_type.
WHEN 'IN'.
cv_fee = round( val = iv_amount * 2 / 100 dec = 2 mode = cl_abap_math=>round_half_up ).
IF cv_fee < 1.
cv_fee = 1.
ELSEIF cv_fee > 50.
cv_fee = 50.
ENDIF.
WHEN 'CR'.
ev_skip = abap_true.
WHEN OTHERS.
cv_fee = 0.
ENDCASE.
ENDFUNCTION.

View File

@@ -0,0 +1,52 @@
CLASS {{p}}t13_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS fee_for IMPORTING iv_type TYPE string iv_amount TYPE decfloat34
RETURNING VALUE(rv_fee) TYPE decfloat34.
METHODS invoice_fee FOR TESTING.
METHODS fee_limits FOR TESTING.
METHODS credit_memo FOR TESTING.
METHODS negative_amount FOR TESTING.
ENDCLASS.
CLASS {{p}}t13_test IMPLEMENTATION.
METHOD fee_for.
DATA lv_skip TYPE abap_bool.
CALL FUNCTION '{{P}}EVT_FEE'
EXPORTING iv_doc_type = iv_type iv_amount = iv_amount
IMPORTING ev_skip = lv_skip
CHANGING cv_fee = rv_fee
EXCEPTIONS invalid_amount = 1 OTHERS = 2.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
ENDMETHOD.
METHOD invoice_fee.
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 4 ) act = fee_for( iv_type = `IN` iv_amount = 200 ) ).
ENDMETHOD.
METHOD fee_limits.
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = fee_for( iv_type = `IN` iv_amount = 5 ) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 50 ) act = fee_for( iv_type = `IN` iv_amount = 9000 ) ).
ENDMETHOD.
METHOD credit_memo.
DATA lv_skip TYPE abap_bool.
DATA lv_fee TYPE decfloat34 VALUE 3.
CALL FUNCTION '{{P}}EVT_FEE'
EXPORTING iv_doc_type = `CR` iv_amount = 100
IMPORTING ev_skip = lv_skip
CHANGING cv_fee = lv_fee.
cl_abap_unit_assert=>assert_true( lv_skip ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = lv_fee ).
ENDMETHOD.
METHOD negative_amount.
DATA lv_fee TYPE decfloat34.
CALL FUNCTION '{{P}}EVT_FEE'
EXPORTING iv_doc_type = `IN` iv_amount = -5
CHANGING cv_fee = lv_fee
EXCEPTIONS invalid_amount = 1 OTHERS = 2.
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
ENDMETHOD.
ENDCLASS.