REPORT zfi012 .
"TYPE-POOLS: alis.
*&---------------------------------------------------------------------*
*& TABLES
*&---------------------------------------------------------------------*
TABLES: acdoca, anla, ankt, t001 ,bseg.
DATA: gw_layout TYPE lvc_s_layo,
gw_fcat TYPE lvc_s_fcat,
gt_fcat TYPE lvc_t_fcat.
*----------------------------------------------------------------------*
* 定义工作区和内表:
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_alv,
rbukrs LIKE acdoca-rbukrs, "公司
butxt LIKE t001-butxt, "公司代码名称
anlkl LIKE anla-anlkl, "资产类型
txk50 LIKE ankt-txk50, "资产类型描述
anln1 LIKE acdoca-anln1, "资产编号
anln2 LIKE acdoca-anln2, "资产次级编号
txt50 LIKE anla-txt50, "资产描述
deakt LIKE anla-deakt, "不活动日期
yz LIKE acdoca-hsl, "原值
dyzj LIKE acdoca-hsl, "当月折旧
ljzj LIKE acdoca-hsl, "累计折旧
qmjz LIKE acdoca-hsl, "期末账面净值
* TXA50 LIKE ANLA-TXA50, "旧资产编号
txa50 LIKE anla-txa50, "资产补充描述 ADD BY ibmMY AT 20200420
aktiv LIKE anla-aktiv, "资本化日期
afasl LIKE anlb-afasl, "折旧码
ndjar LIKE anlb-ndjar, "计划使用年
ndper LIKE anlb-ndper, "计划使用月
afabg LIKE anlb-afabg, "这就开始日
kostl LIKE anlz-kostl, "成本中心编码
ltext LIKE cskt-ltext, "成本中心名称
syzj LIKE acdoca-hsl, "上月普通折旧
flag(1), "报废标识
invnr LIKE anla-invnr, "库存注记
gdlgrp LIKE anlz-raumn, "保管人
* GDLGRP LIKE ANLA-GDLGRP, "保管人
menge LIKE anla-menge, " 数量
meins LIKE anla-meins, "单位
ljzjyf TYPE char6, "累计已折旧月份
syzjyf TYPE char6, "剩余折旧月份
bnzj LIKE acdoca-hsl, "本年折旧
*&------ 添加序列号、供应商、制造商、贸易伙伴、资产小类、原始资产、执照牌号、内部订单号
sernr TYPE anla-sernr, " 序列号
liefe TYPE anla-liefe, " 供应商
herst TYPE anla-herst, " 制造商
vbund TYPE anla-vbund, " 贸易伙伴
typbz TYPE anla-typbz, " 资产小类
aibn1 TYPE anla-aibn1, " 原始资产
kfzkz TYPE anlz-kfzkz, " 执照牌号
caufn TYPE anlz-caufn, " 内部订单号
anlhtxt TYPE anlh-anlhtxt, " 资产主号说明
yz_nc TYPE acdoca-hsl, " 原值-年初 "@Bengin-added by ibmcsh at 20018.09.03
bnljzz TYPE acdoca-hsl, " 本年累计增值
bqzz TYPE acdoca-hsl, " 本期增值
bnljzg TYPE acdoca-hsl, " 本年累计转固
bqzg TYPE acdoca-hsl, " 本期转固 "@End-added by ibmcsh at 2018.09.03
*--------------------------------------------------------------------*
*ADD BY ibmMY AT 20200420
zzwxe TYPE ekko-rlwrt, "总维修额
zdywxe TYPE ekko-rlwrt, "当月维修额
zcz TYPE anlb-schrw, "残值
zczl TYPE t091t-anhtxt, "残值率
*END BY ibmMY AT 20200420
*--------------------------------------------------------------------*
END OF ty_alv.
DATA: BEGIN OF wa_acdoca,
rbukrs LIKE acdoca-rbukrs,
butxt LIKE t001-butxt,
anlkl LIKE anla-anlkl,
txk50 LIKE ankt-txk50,
anln1 LIKE acdoca-anln1,
anln2 LIKE acdoca-anln2,
txt50 LIKE anla-txt50,
deakt LIKE anla-deakt,
hsl LIKE acdoca-hsl,
blart LIKE acdoca-blart,
racct LIKE acdoca-racct,
drcrk LIKE acdoca-drcrk,
gjahr LIKE acdoca-gjahr,
depr_period LIKE acdoca-depr_period,
slalittype LIKE acdoca-slalittype,
vorgn LIKE acdoca-vorgn,
belnr LIKE acdoca-belnr,
poper LIKE acdoca-poper,
budat LIKE acdoca-budat,
panl1 LIKE acdoca-panl1, "@Added by ibmcsh at 2018.09.03
END OF wa_acdoca.
DATA: BEGIN OF wa_t001,
bukrs LIKE t001-bukrs,
butxt LIKE t001-butxt,
END OF wa_t001.
DATA: BEGIN OF wa_cskt,
kostl LIKE cskt-kostl,
ltext LIKE cskt-ltext,
END OF wa_cskt.
DATA: BEGIN OF wa_anla,
bukrs LIKE anla-bukrs,
anlkl LIKE anla-anlkl,
txk50 LIKE ankt-txk50,
anln1 LIKE anla-anln1,
anln2 LIKE anla-anln2,
txt50 LIKE anla-txt50,
deakt LIKE anla-deakt,
txa50 LIKE anla-txa50,
aktiv LIKE anla-aktiv,
invnr LIKE anla-invnr,
* gdlgrp LIKE anla-gdlgrp,
gdlgrp LIKE anlz-raumn,
afasl LIKE anlb-afasl,
ndjar LIKE anlb-ndjar,
ndper LIKE anlb-ndper,
afabg LIKE anlb-afabg,
kostl LIKE anlz-kostl,
menge LIKE anla-menge, " 数量
meins LIKE anla-meins, "单位
ltext LIKE cskt-ltext,
sernr TYPE anla-sernr, " 序列号
liefe TYPE anla-liefe, " 供应商
herst TYPE anla-herst, " 制造商
vbund TYPE anla-vbund, " 贸易伙伴
typbz TYPE anla-typbz, " 资产小类
aibn1 TYPE anla-aibn1, " 原始资产
kfzkz TYPE anlz-kfzkz, " 执照牌号
caufn TYPE anlz-caufn, " 内部订单号
anlhtxt TYPE anlh-anlhtxt, " 资产主号说明
END OF wa_anla.
DATA: BEGIN OF wa_anlz,
bukrs LIKE anlz-bukrs,
anln1 LIKE anlz-anln1,
anln2 LIKE anlz-anln2,
raumn LIKE anlz-raumn,
kostl LIKE anlz-kostl,
adatu LIKE anlz-adatu,
bdatu LIKE anlz-bdatu,
kfzkz TYPE anlz-kfzkz, " 执照牌号
caufn TYPE anlz-caufn, " 内部订单号
END OF wa_anlz.
DATA: it_alv TYPE STANDARD TABLE OF ty_alv,
wa_alv TYPE ty_alv.
DATA: it_anlz LIKE wa_anlz OCCURS 0.
*DATA: it_alv LIKE wa_alv OCCURS 0.
DATA: it_acdoca LIKE wa_acdoca OCCURS 0.
DATA: wa_acdoca1 LIKE wa_acdoca.
DATA: it_acdoca1 LIKE wa_acdoca OCCURS 0.
DATA: ls_acdoca LIKE wa_acdoca OCCURS 0.
DATA: it_t001 LIKE wa_t001 OCCURS 0.
DATA: it_cskt LIKE wa_cskt OCCURS 0.
DATA: it_anla LIKE wa_anla OCCURS 0.
DATA: wa_butxt LIKE t001-butxt,
i_deakt LIKE anla-deakt,
i_deakt1 LIKE anla-deakt,
p_fiscyearper LIKE acdoca-fiscyearper,
p_fiscyearper1 LIKE acdoca-fiscyearper,
p_gjahr1 LIKE acdoca-gjahr,
p_period1 LIKE acdoca-depr_period.
"ALV
DATA: wa_layo TYPE lvc_s_layo.
DATA: wa_fcat TYPE lvc_s_fcat,
it_fcat TYPE lvc_t_fcat.
DATA: s_belnr TYPE RANGE OF acdoca-belnr WITH HEADER LINE.
DATA: go_cl_grid TYPE REF TO cl_gui_alv_grid.
*----------------------------------------------------------------------*
* 定义选择屏幕:查询条件
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
*SELECT-OPTIONS: s_bukrs FOR anla-bukrs OBLIGATORY NO INTERVALS NO-EXTENSION, "公司代码
* s_anln1 FOR anla-anln1 OBLIGATORY NO INTERVALS NO-EXTENSION, "资产编号
* s_anln2 FOR anla-anln2 OBLIGATORY, "次级编号
* s_afabe FOR acdoca-afabe OBLIGATORY DEFAULT '01'. "折旧范围 默认01
* s_gjahr FOR acdoca-gjahr OBLIGATORY, "财年
* s_depr_p FOR acdoca-depr_period OBLIGATORY "折旧期间
SELECT-OPTIONS:
s_anlkl FOR anla-anlkl, "资产类型, "资产类型
s_anln1 FOR acdoca-anln1,
s_anln2 FOR acdoca-anln2,
s_afabe FOR acdoca-afabe OBLIGATORY DEFAULT '01'.
* p_gjahr FOR acdoca-gjahr OBLIGATORY NO-EXTENSION, "财年
* p_period FOR acdoca-depr_period OBLIGATORY. "折旧期间
PARAMETERS: s_rbukrs LIKE acdoca-rbukrs DEFAULT '1000',
p_gjahr LIKE acdoca-gjahr OBLIGATORY,
p_period LIKE acdoca-depr_period OBLIGATORY,
p_monat LIKE bseg-h_monat NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK blk1.
*&-----------------------------------------*
* INITIALIZATION/选择屏幕前初始化
*&----------------------------------------*
INITIALIZATION.
*&-----------------------------------------------------------------*
*& SELECTION-SCREEN OUTPUT/选择屏幕控制
*&-----------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
*&---在此可以对选择界面输入的条件进行判断
PERFORM frm_authority_check.
*&-----------------------------------------*
* EVENT START OF SELECTION
*&-----------------------------------------*
START-OF-SELECTION.
"显示处理状态
PERFORM frm_show_progress USING TEXT-s01.
"主要逻辑处理
CLEAR: gt_fcat[],gw_layout.
PERFORM frm_main_ibmle CHANGING gt_fcat
gw_layout.
* PERFORM get_data.
* PERFORM PREPARE_FIELDCAT.
* PERFORM ALV_DISPLAY.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& FORM FRM_AUTHORITY_CHECK
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* -->P_S_VKBUR_LOW TEXT
*----------------------------------------------------------------------*
FORM frm_authority_check.
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM FRM_SHOW_PROGRESS
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* -->P_TEXT_S01 TEXT
*----------------------------------------------------------------------*
FORM frm_show_progress USING pv_text_s01.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = pv_text_s01.
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM FRM_MAIN_ibmLE
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* -->P_GT_OUTPUT TEXT
*----------------------------------------------------------------------*
FORM frm_main_ibmle CHANGING ct_fcat LIKE gt_fcat
cw_layout LIKE gw_layout.
DATA: lv_error TYPE char1,
lv_messe TYPE string.
CLEAR: lv_error, lv_messe.
"获取展示数据
PERFORM frm_get_data .
* CHANGING ct_fcat
* LV_ERROR
* LV_MESSE.
IF lv_error = 'E'.
MESSAGE s000(zfi001) WITH lv_messe DISPLAY LIKE 'E'.
RETURN.
ENDIF.
"ALV展示数据
PERFORM frm_display_alv CHANGING ct_fcat
cw_layout.
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM FRM_GET_DATA
*&---------------------------------------------------------------------*
*& TEXT
*&---------------------------------------------------------------------*
* <--P_LV_ERROR TEXT
* <--P_LV_MESSE TEXT
*&---------------------------------------------------------------------*
*FORM FRM_GET_DATA.
*
* CONCATENATE P_GJAHR P_PERIOD INTO P_FISCYEARPER.
* CONCATENATE P_GJAHR P_PERIOD+1(2) '01' INTO I_DEAKT.
* IF P_PERIOD = '001'.
* P_GJAHR1 = P_GJAHR - 1.
* P_PERIOD1 ='012'.
* ENDIF.
* CONCATENATE P_GJAHR1 P_PERIOD1 INTO P_FISCYEARPER1.
*
* CLEAR S_BELNR.
* S_BELNR-SIGN = 'E'.
* S_BELNR-OPTION = &#