Sunteți pe pagina 1din 8

*&---------------------------------------------------------------------* *& Report ZFI_ASSET_REGISTER *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZFI_ASSET_REGISTER.

TABLES : anla , anlb , anlc, anlz ,CSKT ,LFA1 . TYPE-POOLS : slis. DATA : BEGIN OF it_anla OCCURS 0, anln1 LIKE anla-anln1, sernr LIKE anla-sernr, menge LIKE anla-menge, meins LIKE anla-meins, aktiv LIKE anla-aktiv, deakt LIKE anla-deakt, lifnr LIKE anla-lifnr, herst LIKE anla-herst, txt50 LIKE anla-txt50, ANLN2 LIKE anla-ANLN2, ANLKL like anla-ANLKL, END OF it_anla. DATA : BEGIN OF it_anlb OCCURS 0, anln1 LIKE anlb-anln1, afasl LIKE anlb-afasl, AFABE like anlb-AFABE, anln2 LIKE anlb-anln2, END OF it_anlb. DATA : BEGIN anln1 LIKE afabe LIKE kansw LIKE nafap LIKE nafag LIKE answl LIKE gjahr LIKE KNAFA LIKE anln2 LIKE jtot ktot ltot mtot ntot type type type type type OF it_anlc OCCURS 0, anlc-anln1, anlc-afabe, anlc-kansw, anlc-nafap, anlc-nafag, anlc-answl, anlc-gjahr, ANLC-KNAFA, anlc-anln2, p, p, p, p, p,

END OF it_anlc. DATA : BEGIN OF it_anlz OCCURS 0,

anln1 LIKE anlz-anln1, gsber LIKE anlz-gsber, kostl LIKE anlz-kostl, werks LIKE anlz-werks, anln2 LIKE anlz-anln2, END OF it_anlz. DATA : BEGIN OF IT_CSKT OCCURS 0, KOSTL LIKE CSKT-KOSTL, KTEXT LIKE CSKT-KTEXT, END OF IT_CSKT. DATA : BEGIN OF IT_LFA1 OCCURS 0, LIFNR LIKE LFA1-LIFNR, NAME1 LIKE LFA1-NAME1, END OF IT_LFA1. data : begin of it_t090naz occurs 0, afapl like t090naz-afapl, afasl like t090naz-afasl, metstu like t090naz-metstu, end of it_t090naz. data : begin of it_t090ns occurs 0, afapl like t090ns-afapl, metstu like t090ns-metstu, afproz like t090ns-afproz, end of it_t090ns. DATA : BEGIN OF it_output OCCURS 0, anln1 LIKE anla-anln1, afasl LIKE anlb-afasl, sernr LIKE anla-sernr, menge LIKE anla-menge, meins LIKE anla-meins, aktiv LIKE anla-aktiv, deakt LIKE anla-deakt, lifnr LIKE anla-lifnr, herst LIKE anla-herst, gsber LIKE anlz-gsber, kostl LIKE anlz-kostl, werks LIKE anlz-werks, txt50 LIKE anla-txt50, KTEXT LIKE CSKT-KTEXT, NAME1 LIKE LFA1-NAME1, kansw LIKE anlc-kansw, nafap LIKE anlc-nafap, nafag LIKE anlc-nafag, answlp LIKE anlc-answl, gjahr LIKE anlc-gjahr, afabe LIKE anlc-afabe, KNAFA LIKE ANLC-KNAFA, ANLN2 LIKE anla-ANLN2,

ANLKL like anla-ANLKL, answln LIKE anlc-answl, jtot type p, ktot type p, ltot type p, mtot type p, ntot type p, afproz type p decimals 2, afproz1 like t090ns-afproz, cap95 type p, check1 type p, check2 type p, check3 type p, END OF it_output. data: zdays type TFMATAGE. DATA : it_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE. DATA : layout TYPE slis_layout_alv. data : fdate type sy-datum. data : tdate type sy-datum. SELECT-OPTIONS : s_bukrs FOR anla-bukrs OBLIGATORY NO INTERVALS NOEXTENSION, s_anln1 FOR anla-anln1 , s_anlkl for anla-anlkl , s_fdate for sy-datum obligatory no intervals noextension, s_tdate for sy-datum obligatory no intervals noextension, s_gjahr for anlcgjahr obligatory default '2010' no intervals no-extension. fdate = s_fdate-low. tdate = s_tdate-low. SELECT anln1 sernr menge meins aktiv deakt lifnr herst txt50 ANLN2 ANLKL FR OM anla INTO TABLE it_anla WHERE bukrs IN s_bukrs AND anln1 in s_anln1 and anlkl in s_anlkl. * and menge > 0 . if sy-subrc = 0. SELECT anln1 afasl afabe ANLN2 FROM anlb INTO CORRESPONDING FIELDS OF TABLE it_anlb FOR ALL ENTRIES IN it_anla WHERE anln1 = it_anla-anln1 and ANLN2 = it_anla-ANLN2 and bukrs IN s_bukrs and afabe = '01'. SELECT anln1 afabe kansw nafap nafag answl gjahr KNAFA ANLN2 FROM anlc INTO CORRESPONDING FIELDS OF TABLE it_anlc

FOR ALL ENTRIES IN it_anlb WHERE anln1 = it_anlb-anln1 and ANLN2 = it_anlb-ANLN2 and afabe = it_anlb-afabe and bukrs IN s_bukrs and afabe = '01' and gjahr in s_gjahr.

SELECT anln1 gsber kostl werks ANLN2 FROM anlz INTO CORRESPONDING FIELDS OF TABLE it_anlz FOR ALL ENTRIES IN it_anla WHERE anln1 = it_anla-anln1 and ANLN2 = it_anla-ANLN2 and bukrs IN s_bukrs. if sy-subrc = 0 . SELECT KOSTL KTEXT FROM CSKT INTO CORRESPONDING FIELDS OF TABLE FOR ALL ENTRIES IN IT_ANLZ WHERE KOSTL = IT_ANLZ-KOSTL AND SPRAS = 'EN'.

IT_CSKT

SELECT LIFNR NAME1 FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE IT_LFA1 FOR ALL ENTRIES IN IT_ANLA WHERE LIFNR = IT_ANLA-LIFNR. select afapl afasl metstu from t090naz depreciation Key table into corresponding fields of table it_t090naz for all entries in it_anlb where afapl = 'TSLD' and afasl = it_anlb-afasl. select afapl metstu afproz from t090ns Multi level method into corresponding fields of table it_t090ns for all entries in it_t090naz where afapl = 'TSLD' and metstu = it_t090naz-metstu. LOOP AT it_anlb. MOVE-CORRESPONDING READ TABLE it_anla MOVE it_anla-sernr MOVE it_anla-menge MOVE it_anla-meins MOVE it_anla-aktiv MOVE it_anla-deakt MOVE it_anla-lifnr MOVE it_anla-herst MOVE it_anla-txt50 MOVE it_anla-ANLN2

it_anlb TO it_output. WITH KEY anln1 = it_anlb-anln1 anln2 = it_anlb-anln2. TO it_output-sernr. TO it_output-menge. TO it_output-meins. TO it_output-aktiv. TO it_output-deakt. TO it_output-lifnr. TO it_output-herst. TO it_output-txt50. TO it_output-ANLN2.

MOVE it_anla-ANLKL to it_output-anlkl. READ TABLE it_anlz WITH KEY anln1 = it_anla-anln1 anln2 = it_anla-anln2. MOVE it_anlz-gsber TO it_output-gsber. MOVE it_anlz-kostl TO it_output-kostl. MOVE it_anlz-werks TO it_output-werks. READ TABLE it_anlc with KEY anln1 = it_anlb-anln1 afabe = it_anlbafabe anln2 = it_anlb-anln2 . move it_anlc-kansw to it_output-kansw. move it_anlc-nafag to it_output-nafag. move it_anlc-gjahr to it_output-gjahr. move it_anlc-afabe to it_output-afabe. move it_anlc-KNAFA to it_output-KNAFA. if it_anlc-answl < 0. move it_anlc-answl to it_output-answln. else. move it_anlc-answl to it_output-answlp. endif. CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS' EXPORTING I_DATE_FROM = fdate I_DATE_TO = tdate IMPORTING E_DAYS = zdays . read table it_t090naz with key afapl = 'TSLD' afasl = it_anlb-afasl. read table it_t090ns with key afapl = 'TSLD' metstu = it_t090naz-metstu. it_output-afproz = it_t090ns-afproz . it_output-afproz1 = it_t090ns-afproz / 100. if it_output-answln < 0. move it_anlc-nafap to it_output-nafap. else. it_output-nafap = ( ( it_output-kansw * it_outputafproz1 ) / 365 ) * ( zdays + 1 ) . it_output-nafap = - it_output-nafap. endif. it_output-check1 = it_output-kansw + it_output-answlp . it_output-check3 = it_output-check1 + it_output-knafa . if it_output-check3 = 0. it_output-nafap = 0. endif. it_output-check2 = it_output-knafa + it_output-nafap . if it_output-check2 > it_output-kansw . it_output-nafap = it_output-kansw - it_output-knafa . endif. it_output-cap95 = it_output-kansw * 95 / 100 . if it_output-anlkl = '02060000' or it_outputanlkl = '02060100' or it_output-anlkl = '02060002' . if it_output-check2 > it_output-cap95. it_output-nafap = it_output-kansw - it_output-knafa. endif. endif.

READ TABLE IT_CSKT WITH KEY KOSTL = IT_ANLZ-KOSTL . MOVE IT_CSKT-KTEXT TO IT_OUTPUT-KTEXT. READ TABLE IT_LFA1 WITH KEY LIFNR = IT_ANLA-LIFNR. MOVE IT_LFA1-NAME1 TO IT_OUTPUT-NAME1. if it_output-answln < 0. it_output-jtot = it_output-knafa + it_output-nafap. "it_output-nafag. it_output-jtot = - ( it_output-jtot ) . else. it_output-jtot = 0. endif. it_output-ktot = it_output-kansw + it_output-knafa. it_output-ltot = ( it_output-kansw + it_output-answlp ) + it_outputanswln. it_output-mtot = it_output-jtot + ( it_output-knafa + it_outputnafap ) . it_output-ntot = it_output-ltot + it_output-mtot. if it_output-kansw > 0 or it_output-ntot > 0. APPEND it_output. endif. CLEAR : it_output , it_anla , it_anlb FA1. ENDLOOP. endif. endif. clear it_fcat. it_fcat-fieldname = 'ANLKL'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Asset Class'. APPEND it_fcat. clear it_fcat. it_fcat-fieldname = 'ANLN1'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Asset No.'. APPEND it_fcat. clear it_fcat. it_fcat-fieldname = 'ANLN2'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Asset sub no.'. APPEND it_fcat. clear it_fcat. it_fcat-fieldname = 'TXT50'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Asset Desc.'. APPEND it_fcat. clear it_fcat. it_fcat-fieldname = 'AKTIV'. , it_anlc , it_anlz,it_CSKT , it_L

it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Capitalized on'. APPEND it_fcat. clear it_fcat. it_fcat-fieldname it_fcat-tabname = it_fcat-seltext_l APPEND it_fcat. clear it_fcat. it_fcat-fieldname it_fcat-tabname = it_fcat-seltext_l APPEND it_fcat.

= 'DEAKT'. 'IT_OUTPUT'. = 'Deactivation on'.

= 'AFPROZ'. 'IT_OUTPUT'. = 'Dep. Rate'.

CLEAR it_fcat. it_fcat-fieldname = 'KANSW'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'APC FY Start'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'ANSWLP'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Acquisition'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'ANSWLN'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Retirement'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'LTOT'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Current APC'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'KNAFA'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Dep. FY Start'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'NAFAP'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Dep. for the year'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'JTOT'.

it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Dep. Retirement'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'MTOT'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Acc. Dep.'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'KTOT'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'BK. val. FY Start'. APPEND it_fcat. CLEAR it_fcat. it_fcat-fieldname = 'NTOT'. it_fcat-tabname = 'IT_OUTPUT'. it_fcat-seltext_l = 'Curr. bk. val'. APPEND it_fcat.

***** change made ********* *LOOP AT IT_OUTPUT. * IF IT_OUTPUT-NTOT < 0. * IT_OUTPUT-NTOT = '0.00'. * MODIFY IT_OUTPUT. * ENDIF. * *ENDLOOP.

*****************************

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = sy-cprog IS_LAYOUT IT_FIELDCAT I_DEFAULT I_SAVE TABLES t_outtab . = = = = layout it_fcat[] 'X' 'A' = it_output[].

S-ar putea să vă placă și