gwa_head01-ebukrs = p_bukrs1.
SELECT SINGLE butxt
INTO gwa_head01-ebutxt
FROM t001
WHERE bukrs = gwa_head01-ebukrs.
CALL FUNCTION 'FIMA_DATE_CREATE'
EXPORTING
i_date = p_date "sy-datum
* I_FLG_END_OF_MONTH = ' '
* I_YEARS = 0
* I_MONTHS = 0
* I_DAYS = 0
* I_CALENDAR_DAYS = 0
i_set_last_day_of_month = 'X'
IMPORTING
e_date = gwa_head01-mvdat.
* E_FLG_END_OF_MONTH =
* E_DAYS_OF_I_DATE =
.
*list
SELECT DISTINCT a~bukrs AS ebukrs
a~anln1 AS eanln1
a~anln2 AS eanln2
a~txt50 AS etxt50
a~anlkl AS eanlkl
a~sernr AS esernr
a~invnr AS einvnr
z~kostl AS ekostl
z~kostlv AS ekostlv
z~raumn AS eraumn
z~kfzkz AS ekfzkz
a~lifnr AS elifnr
b~afabe AS eafabe
b~afasl AS eafasl
b~ndjar AS endjar
b~ndper AS endper
a~aktiv AS eaktiv
a~menge AS emenge
a~meins AS emeins
a~ord41 AS eord41
a~ord42 AS eord42
a~ord43 AS eord43
a~gdlgrp AS egdlgrp
a~deakt AS deakt
a~typbz AS etypbz
INTO CORRESPONDING FIELDS OF TABLE gt_reslt01
FROM anla AS a
INNER JOIN anlb AS b ON b~bukrs = a~bukrs
AND b~anln1 = a~anln1
AND b~anln2 = a~anln2
INNER JOIN anlz AS z ON z~bukrs = a~bukrs
AND z~anln1 = a~anln1
AND z~anln2 = a~anln2
WHERE a~bukrs = p_bukrs1
AND a~anln1 IN s_anln11
AND a~anlkl IN s_anlkl1
AND z~kostl IN s_kostl1
AND z~bdatu >= sy-datum
AND z~adatu <= sy-datum
AND a~aktiv <= lv_datum and b~afabe = '01'.
*删除数据
DELETE gt_reslt01 WHERE deakt IS NOT INITIAL OR eaktiv IS INITIAL.
SORT gt_reslt01 BY eanln1 eanln2.
IF gt_reslt01[] IS NOT INITIAL.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE lt_01202
FROM zfit_01202 AS b
INNER JOIN zfit_01201 AS a ON a~numbr = b~numbr
FOR ALL ENTRIES IN gt_reslt01
WHERE b~eanln1 = gt_reslt01-eanln1
AND b~eanln2 = gt_reslt01-eanln2
AND a~ebukrs = gt_reslt01-ebukrs.
ENDIF.
LOOP AT gt_reslt01 INTO gwa_reslt01.
IF gwa_reslt01-emenge = 0.
READ TABLE lt_01202 INTO lwa_01202 WITH KEY eanln1 = gwa_reslt01-eanln1 eanln2 = gwa_reslt01-eanln2.
IF sy-subrc = 0.
DELETE gt_reslt01.
ENDIF.
ELSE.
CLEAR: lv_menge.
LOOP AT lt_01202 INTO lwa_01202 WHERE eanln1 = gwa_reslt01-eanln1 AND eanln2 = gwa_reslt01-eanln2.
IF lwa_01202-status = '1' OR lwa_01202-status IS INITIAL.
lv_menge = lv_menge + lwa_01202-tmenge.
ELSE.
"lv_menge = lv_menge + lwa_01202-imenge.
ENDIF.
ENDLOOP.
IF lv_menge >= gwa_reslt01-emenge.
DELETE gt_reslt01.
ENDIF.
ENDIF.
ENDLOOP.
*
SORT gt_reslt01 BY ebukrs eanln1 eanln2.
IF lines( gt_reslt01[] ) > 0.
* SELECT *
* INTO TABLE lt_anlc
* FROM anlc
* FOR ALL ENTRIES IN gt_reslt01
* WHERE bukrs = gt_reslt01-ebukrs
* AND anln1 = gt_reslt01-eanln1
* AND anln2 = gt_reslt01-eanln2
* AND gjahr = sy-datum+0(4).
* "AND afabe = '01'.
* SELECT *
* INTO CORRESPONDING FIELDS OF TABLE lt_anea
* FROM anek AS k INNER JOIN anea AS a
* ON a~bukrs = k~bukrs
* AND a~anln1 = k~anln1
* AND a~anln2 = k~anln2
* AND a~lnran = k~lnran
* AND a~lnran = k~lnran
* AND a~gjahr = k~gjahr
* AND a~afabe = '01'
* FOR ALL ENTRIES IN gt_reslt01
* WHERE k~bukrs = gt_reslt01-ebukrs
* AND k~anln1 = gt_reslt01-eanln1
* AND k~anln2 = gt_reslt01-eanln2
* AND k~budat IN r_budat
* AND k~budat <= sy-datum.
* SELECT *
* INTO TABLE lt_anep
* FROM anep
* FOR ALL ENTRIES IN gt_reslt01
* WHERE bukrs = gt_reslt01-ebukrs
* AND anln1 = gt_reslt01-eanln1
* AND anln2 = gt_reslt01-eanln2
* AND gjahr = sy-datum+0(4)
* AND bzdat <= lv_datum.
ENDIF.
****----取资产期末余额
PERFORM frm_get_ezljzj TABLES lt_data USING lv_datum.
*
LOOP AT gt_reslt01 INTO gwa_reslt01.
lv_tabix = sy-tabix.
**资产原值、累计折旧
* LOOP AT lt_anlc INTO lwa_anlc WHERE bukrs = gwa_reslt01-ebukrs
* AND anln1 = gwa_reslt01-eanln1
* AND anln2 = gwa_reslt01-eanln2.
*
* gwa_reslt01-ekansw = gwa_reslt01-ekansw + lwa_anlc-kansw." + lwa_anlc-answl.
*
* IF lwa_anlc-afabe = '01'.
* gwa_reslt01-ezljzj = gwa_reslt01-ezljzj
* + lwa_anlc-knafa
* + lwa_anlc-ksafa
* + lwa_anlc-kaafa.
*
* gwa_reslt01-ezljzj = gwa_reslt01-ezljzj
* + lwa_anlc-nafag
* + lwa_anlc-safag
* + lwa_anlc-aafag.
* ENDIF.
* ENDLOOP.
*
* LOOP AT lt_anep INTO lwa_anep WHERE bukrs = gwa_reslt01-ebukrs
* AND anln1 = gwa_reslt01-eanln1
* AND anln2 = gwa_reslt01-eanln2..
* gwa_reslt01-ekansw = gwa_reslt01-ekansw + lwa_anep-anbtr.
* ENDLOOP.
*
* LOOP AT lt_anea INTO lwa_anea WHERE bukrs = gwa_reslt01-ebukrs
* AND anln1 = gwa_reslt01-eanln1
* AND anln2 = gwa_reslt01-eanln2.
*
* gwa_reslt01-ezljzj = gwa_reslt01-ezljzj
* + lwa_anea-nafav
* + lwa_anea-safav
* + lwa_anea-aafav.
*
* gwa_reslt01-ezljzj = gwa_reslt01-ezljzj
* + lwa_anea-nafal
* + lwa_anea-safal
* + lwa_anea-aafal.
* ENDLOOP.
*
**资产净值
* "gwa_reslt01-ezzcjz = gwa_reslt01-ekansw - gwa_reslt01-ezljzj.
* gwa_reslt01-ezzcjz = gwa_reslt01-ekansw + gwa_reslt01-ezljzj.
*****----取资产原值、折旧、净值2016-07-15
READ TABLE lt_data WITH KEY bukrs = gwa_reslt01-ebukrs
anln1 = gwa_reslt01-eanln1 BINARY SEARCH.
IF sy-subrc = 0.
gwa_reslt01-ekansw = lt_data-btr1 + lt_data-btr7.
gwa_reslt01-ezzcjz = lt_data-btr17.
gwa_reslt01-ezljzj = gwa_reslt01-ekansw - gwa_reslt01-ezzcjz.
ENDIF.
MODIFY gt_reslt01 FROM gwa_reslt01 INDEX lv_tabix.
ENDLOOP.
期末余额
FORM frm_get_ezljzj TABLES pt_data STRUCTURE fiaa_salvtab_rahafa USING pl_datum.
DATA:berdatum TYPE sy-datum,
bereich1 TYPE rbada-afabe1,
srtvr TYPE rbada-srtvr,
xeinzel TYPE rbada-xeinzl,
xuntnr TYPE rbada-xuntnr,
p_grid TYPE xgrid.
DATA:ls_data TYPE REF TO data.
RANGES:r_bukrs FOR t001-bukrs,
so_anlkl FOR anlav-anlkl.
FIELD-SYMBOLS: <lt_data> TYPE table,
<fs_field> TYPE any,
<l_data> TYPE data.
r_bukrs-sign = 'I'.
r_bukrs-option = 'EQ'.
r_bukrs-low = p_bukrs1.
APPEND r_bukrs.
berdatum = pl_datum.
"折旧范围 01
bereich1 = '01'.
srtvr = '0001'.
xeinzel = ''.
xuntnr = 'X'.
p_grid = 'X'.
cl_salv_bs_runtime_info=>set(
display = abap_false
metadata = abap_false
data = abap_true ).
SUBMIT rahafa_alv01
WITH p_grid = p_grid "按报表分类汇总
WITH xuntnr = xuntnr "
WITH xeinzel = xeinzel
WITH srtvr = srtvr "
WITH bereich1 = bereich1 "
WITH bukrs IN r_bukrs
WITH so_anlkl IN s_anlkl1 "资产分类
WITH anlage IN s_anln11 " 资产号
WITH berdatum = berdatum
AND RETURN .
TRY.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data = ls_data ).
ASSIGN ls_data->* TO <lt_data>.
CATCH cx_salv_bs_sc_runtime_info.
ENDTRY.
cl_salv_bs_runtime_info=>clear_all( ).
LOOP AT <lt_data> ASSIGNING <l_data>.
CLEAR pt_data.
MOVE-CORRESPONDING <l_data> TO pt_data.
APPEND pt_data.
ENDLOOP.
SORT pt_data BY bukrs anln1.
ENDFORM.
该段代码展示了在SAPABAP环境中进行数据操作的过程,包括从表t001中选择数据,调用函数创建日期,执行复杂的联接查询以获取特定条件的数据,删除无效数据,以及对查询结果进行排序和循环处理,以计算和验证资产的期末余额。

4402

被折叠的 条评论
为什么被折叠?



