79 lines
2.0 KiB
ABAP
79 lines
2.0 KiB
ABAP
class ZCL_CUSTOM_TAX_AMDP definition
|
|
public
|
|
final
|
|
create public .
|
|
|
|
public section.
|
|
|
|
interfaces IF_AMDP_MARKER_HDB .
|
|
|
|
class-methods GET_ASSET_DEPR_PLAN
|
|
for table function ZTF_ASSET_DEPR .
|
|
protected section.
|
|
private section.
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_CUSTOM_TAX_AMDP IMPLEMENTATION.
|
|
|
|
|
|
METHOD get_asset_depr_plan
|
|
BY DATABASE FUNCTION
|
|
FOR HDB
|
|
LANGUAGE SQLSCRIPT
|
|
OPTIONS READ-ONLY
|
|
USING zttax0008 scal_tt_month.
|
|
|
|
RETURN
|
|
select mandt,
|
|
assettype,
|
|
assetcode,
|
|
* assetdate,
|
|
* aname,
|
|
* depr_method,
|
|
* useful_life,
|
|
month_cnt,
|
|
start_ym,
|
|
end_ym,
|
|
* assetprice,
|
|
yearmonth,
|
|
seq_no,
|
|
|
|
* Round amt fixed.
|
|
CASE when seq_no = month_cnt then
|
|
( dep_amt + assetprice - (dep_amt * month_cnt ))
|
|
ELSE dep_amt
|
|
END as dep_amt,
|
|
waers
|
|
from (
|
|
SELECT mandt,
|
|
assettype,
|
|
assetcode,
|
|
* assetdate,
|
|
* aname,
|
|
* depr_method,
|
|
* useful_life,
|
|
useful_life * 12 as month_cnt,
|
|
to_varchar(assetdate, 'yyyymm') as start_ym,
|
|
to_varchar(add_months(assetdate, useful_life * 12 - 1 ), 'YYYYMM') as end_ym,
|
|
assetprice,
|
|
q.yearmonth,
|
|
row_number() over (
|
|
partition by p.assetcode
|
|
order by q.yearmonth
|
|
) as seq_no,
|
|
|
|
round(assetprice / (useful_life * 12), 2) as dep_amt,
|
|
|
|
waers
|
|
from zttax0008 as p
|
|
inner join scal_tt_month as q
|
|
ON q.yearmonth >= to_varchar(assetdate, 'yyyymm')
|
|
and q.yearmonth < to_varchar(add_months(assetdate, useful_life * 12 ), 'YYYYMM')
|
|
where p.depr_method = '1'
|
|
);
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|