Vous êtes sur la page 1sur 44

*&---------------------------------------------------------------------*

*& Report AM_GL_RECONCI_RPT


*&
*&---------------------------------------------------------------------*
REPORT zzrffi220_am_gl_reconci_rpt.
TYPE-POOLS: slis.
DATA: wa_s_zgroupt TYPE zgroupt,
wa_s_anla
TYPE anla,
wa_s_t095
TYPE t095.
*----------------------------------------------------------------------*
* Selection screen
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-t01.
PARAMETERS: p_rldnr TYPE zgroupt-rldnr OBLIGATORY
"Ledger
DEFAULT 'X1', "#CR
p_ryear TYPE zgroupt-ryear OBLIGATORY
"Fiscal Year
DEFAULT sy-datum+0(4).
SELECT-OPTIONS: s_rbukrs FOR wa_s_zgroupt-rbukrs OBLIGATORY, "Cocd
s_racct FOR wa_s_zgroupt-racct,
"GL account
s_resctr FOR wa_s_zgroupt-zzrespcntr,
"Res Cost.ctr
s_asset FOR wa_s_zgroupt-zzasset,
"Field Code
s_anlkl FOR wa_s_anla-anlkl,
"Asset class
s_afabe FOR wa_s_t095-afabe.
"Depre Area
SELECTION-SCREEN SKIP 1.
PARAMETERS: rb_gl
RADIOBUTTON GROUP mod MODIF ID try
"GL lvl
USER-COMMAND test,
rb_fld RADIOBUTTON GROUP mod,
"Field lvl
rb_cc
RADIOBUTTON GROUP mod,
"Cost ctr lvl
rb_fldcc RADIOBUTTON GROUP mod.
"Fld_cost_ctr lvl
SELECTION-SCREEN END OF BLOCK a1.
*----------------------------------------------------------------------*
* Data declaration
*----------------------------------------------------------------------*
TYPES: BEGIN OF t_s_t001,
bukrs TYPE t001-bukrs,
END OF t_s_t001,
BEGIN OF t_t001,
bukrs TYPE t001-bukrs,
land1 TYPE t001-land1,
waers TYPE t001-waers,
ktopl TYPE t001-ktopl,
END OF t_t001,
BEGIN OF t_t000,
mandt TYPE t000-mandt,
mwaer TYPE t000-mwaer,
END OF t_t000,
BEGIN OF t_t095,
ktopl
TYPE
ktogr
TYPE
afabe
TYPE
ktansw TYPE
END OF t_t095,
BEGIN OF t_t095b,

t095-ktopl,
t095-ktogr,
t095-afabe,
t095-ktansw,

ktopl
TYPE
ktogr
TYPE
afabe
TYPE
ktnafb TYPE
END OF t_t095b,

t095b-ktopl,
t095b-ktogr,
t095b-afabe,
t095b-ktnafb,

BEGIN OF t_anla,
bukrs
TYPE
anln1
TYPE
anln2
TYPE
anlkl
TYPE
zugdt
TYPE
deakt
TYPE
invnr
TYPE
END OF t_anla,

anla-bukrs,
anla-anln1,
anla-anln2,
anla-anlkl,
anla-zugdt,
anla-deakt,
anla-invnr,

BEGIN OF t_c_anla,
bukrs
TYPE
anla-bukrs,
invnr
TYPE
anla-invnr,
END OF t_c_anla,
BEGIN OF t_anlz,
bukrs TYPE
anln1 TYPE
anln2 TYPE
bdatu TYPE
kostl TYPE
END OF t_anlz,

anlz-bukrs,
anlz-anln1,
anlz-anln2,
anlz-bdatu,
anlz-kostl,

BEGIN OF t_anlc,
bukrs TYPE
anln1 TYPE
anln2 TYPE
gjahr TYPE
afabe TYPE
zujhr TYPE
zucod TYPE
kansw TYPE
knafa TYPE
kaafa TYPE
nafag TYPE
aafag TYPE
answl TYPE
nafam TYPE
zusna TYPE
zusaa TYPE
nafav TYPE
aafav TYPE
nafal TYPE
aafal TYPE
END OF t_anlc,

anlc-bukrs,
anlc-anln1,
anlc-anln2,
anlc-gjahr,
anlc-afabe,
anlc-zujhr,
anlc-zucod,
anlc-kansw,
anlc-knafa,
anlc-kaafa,
anlc-nafag,
anlc-aafag,
anlc-answl,
anlc-nafam,
anlc-zusna,
anlc-zusaa,
anlc-nafav,
anlc-aafav,
anlc-nafal,
anlc-aafal,

BEGIN OF
bukrs
anln1
anln2
invnr
anlkl
kostl
gjahr

t_asset_cal,
TYPE
anlc-bukrs,
TYPE
anlc-anln1,
TYPE
anlc-anln2,
TYPE
anla-invnr,
TYPE
anla-anlkl,
TYPE
anlz-kostl,
TYPE
anlc-gjahr,

afabe TYPE
anlc-afabe,
tot_acq TYPE
wertv9,
tot_dep TYPE
wertv9,
ktansw TYPE
t095-ktansw,
ktnafb TYPE
t095b-ktnafb,
END OF t_asset_cal,
BEGIN OF t_asset_fld,
racct TYPE
zgroupt-racct,
invnr TYPE
anla-invnr,
afabe TYPE
anlc-afabe,
bukrs TYPE
anlc-bukrs,
anln1 TYPE
anlc-anln1,
anln2 TYPE
anlc-anln2,
anlkl TYPE
anla-anlkl,
kostl TYPE
anlz-kostl,
gjahr TYPE
anlc-gjahr,
total TYPE
wertv9,
flg
TYPE
c LENGTH 1,
END OF t_asset_fld,
BEGIN OF t_asset_cc,
racct TYPE
zgroupt-racct,
kostl TYPE
anlz-kostl,
afabe TYPE
anlc-afabe,
bukrs TYPE
anlc-bukrs,
anln1 TYPE
anlc-anln1,
anln2 TYPE
anlc-anln2,
invnr TYPE
anla-invnr,
anlkl TYPE
anla-anlkl,
gjahr TYPE
anlc-gjahr,
total TYPE
wertv9,
flg
TYPE
c LENGTH 1,
END OF t_asset_cc,
BEGIN OF t_asset_fldcc,
racct TYPE
zgroupt-racct,
invnr TYPE
anla-invnr,
kostl TYPE
anlz-kostl,
afabe TYPE
anlc-afabe,
bukrs TYPE
anlc-bukrs,
anln1 TYPE
anlc-anln1,
anln2 TYPE
anlc-anln2,
anlkl TYPE
anla-anlkl,
gjahr TYPE
anlc-gjahr,
total TYPE
wertv9,
flg
TYPE
c LENGTH 1,
END OF t_asset_fldcc,
BEGIN OF
bukrs
anln1
anln2
invnr
anlkl
kostl
gjahr
afabe
total
racct

t_asset_sum,
TYPE
anla-bukrs,
TYPE
anla-anln1,
TYPE
anla-anln2,
TYPE
anla-invnr,
TYPE
anla-anlkl,
TYPE
anlz-kostl,
TYPE
anlc-gjahr,
TYPE
anlc-afabe,
TYPE
wertv9,
TYPE
zgroupt-racct,

flg
TYPE
c LENGTH 1,
END OF t_asset_sum,
BEGIN OF t_zgroupt,
rldnr
TYPE zgroupt-rldnr,
rrcty
TYPE zgroupt-rrcty,
rvers
TYPE zgroupt-rvers,
ryear
TYPE zgroupt-ryear,
robjnr
TYPE zgroupt-robjnr,
cobjnr
TYPE zgroupt-cobjnr,
sobjnr
TYPE zgroupt-sobjnr,
rtcur
TYPE zgroupt-rtcur,
runit
TYPE zgroupt-runit,
drcrk
TYPE zgroupt-drcrk,
rpmax
TYPE zgroupt-rpmax,
rbukrs
TYPE zgroupt-rbukrs,
racct
TYPE zgroupt-racct,
zzasset
TYPE zgroupt-zzasset,
zzrespcntr TYPE zgroupt-zzrespcntr,
hslvt
TYPE zgroupt-hslvt,
hsl01
TYPE zgroupt-hsl01,
hsl02
TYPE zgroupt-hsl02,
hsl03
TYPE zgroupt-hsl03,
hsl04
TYPE zgroupt-hsl04,
hsl05
TYPE zgroupt-hsl05,
hsl06
TYPE zgroupt-hsl06,
hsl07
TYPE zgroupt-hsl07,
hsl08
TYPE zgroupt-hsl08,
hsl09
TYPE zgroupt-hsl09,
hsl10
TYPE zgroupt-hsl10,
hsl11
TYPE zgroupt-hsl11,
hsl12
TYPE zgroupt-hsl12,
kslvt
TYPE zgroupt-kslvt,
ksl01
TYPE zgroupt-ksl01,
ksl02
TYPE zgroupt-ksl02,
ksl03
TYPE zgroupt-ksl03,
ksl04
TYPE zgroupt-ksl04,
ksl05
TYPE zgroupt-ksl05,
ksl06
TYPE zgroupt-ksl06,
ksl07
TYPE zgroupt-ksl07,
ksl08
TYPE zgroupt-ksl08,
ksl09
TYPE zgroupt-ksl09,
ksl10
TYPE zgroupt-ksl10,
ksl11
TYPE zgroupt-ksl11,
ksl12
TYPE zgroupt-ksl12,
END OF t_zgroupt,
BEGIN OF t_sum_zgroupt,
racct
TYPE zgroupt-racct,
zzasset
TYPE zgroupt-zzasset,
zzrespcntr TYPE zgroupt-zzrespcntr,
tot_loc
TYPE zgroupt-hslvt,
tot_grp
TYPE zgroupt-kslvt,
END OF t_sum_zgroupt,
BEGIN OF t_fld_zgroupt,
racct
TYPE zgroupt-racct,
zzasset
TYPE zgroupt-zzasset,
zzrespcntr TYPE zgroupt-zzrespcntr,
hslvt
TYPE zgroupt-hslvt,

hsl01
TYPE zgroupt-hsl01,
hsl02
TYPE zgroupt-hsl02,
hsl03
TYPE zgroupt-hsl03,
hsl04
TYPE zgroupt-hsl04,
hsl05
TYPE zgroupt-hsl05,
hsl06
TYPE zgroupt-hsl06,
hsl07
TYPE zgroupt-hsl07,
hsl08
TYPE zgroupt-hsl08,
hsl09
TYPE zgroupt-hsl09,
hsl10
TYPE zgroupt-hsl10,
hsl11
TYPE zgroupt-hsl11,
hsl12
TYPE zgroupt-hsl12,
kslvt
TYPE zgroupt-kslvt,
ksl01
TYPE zgroupt-ksl01,
ksl02
TYPE zgroupt-ksl02,
ksl03
TYPE zgroupt-ksl03,
ksl04
TYPE zgroupt-ksl04,
ksl05
TYPE zgroupt-ksl05,
ksl06
TYPE zgroupt-ksl06,
ksl07
TYPE zgroupt-ksl07,
ksl08
TYPE zgroupt-ksl08,
ksl09
TYPE zgroupt-ksl09,
ksl10
TYPE zgroupt-ksl10,
ksl11
TYPE zgroupt-ksl11,
ksl12
TYPE zgroupt-ksl12,
END OF t_fld_zgroupt,
BEGIN OF t_cc_zgroupt,
racct
TYPE zgroupt-racct,
zzrespcntr TYPE zgroupt-zzrespcntr,
zzasset
TYPE zgroupt-zzasset,
hslvt
TYPE zgroupt-hslvt,
hsl01
TYPE zgroupt-hsl01,
hsl02
TYPE zgroupt-hsl02,
hsl03
TYPE zgroupt-hsl03,
hsl04
TYPE zgroupt-hsl04,
hsl05
TYPE zgroupt-hsl05,
hsl06
TYPE zgroupt-hsl06,
hsl07
TYPE zgroupt-hsl07,
hsl08
TYPE zgroupt-hsl08,
hsl09
TYPE zgroupt-hsl09,
hsl10
TYPE zgroupt-hsl10,
hsl11
TYPE zgroupt-hsl11,
hsl12
TYPE zgroupt-hsl12,
kslvt
TYPE zgroupt-kslvt,
ksl01
TYPE zgroupt-ksl01,
ksl02
TYPE zgroupt-ksl02,
ksl03
TYPE zgroupt-ksl03,
ksl04
TYPE zgroupt-ksl04,
ksl05
TYPE zgroupt-ksl05,
ksl06
TYPE zgroupt-ksl06,
ksl07
TYPE zgroupt-ksl07,
ksl08
TYPE zgroupt-ksl08,
ksl09
TYPE zgroupt-ksl09,
ksl10
TYPE zgroupt-ksl10,
ksl11
TYPE zgroupt-ksl11,
ksl12
TYPE zgroupt-ksl12,
END OF t_cc_zgroupt,
BEGIN OF t_t093c,

bukrs
TYPE t093c-bukrs,
afapl
TYPE t093c-afapl,
END OF t_t093c,
BEGIN OF t_t093,
afapl
TYPE t093-afapl,
afaber TYPE t093-afaber,
buhbkt TYPE t093-buhbkt,
END OF t_t093,
BEGIN OF t_t093a,
afapl
TYPE t093a-afapl,
afabe
TYPE t093a-afabe,
curtp
TYPE t093a-curtp,
END OF t_t093a,
BEGIN OF t_csks,
kokrs TYPE csks-kokrs,
kostl TYPE csks-kostl,
datbi TYPE csks-datbi,
datab TYPE csks-datab,
bukrs TYPE csks-bukrs,
END OF t_csks,
BEGIN OF t_alv.
INCLUDE TYPE zzsffi028_am_gl_reconcil.
TYPES: END OF t_alv.
DATA: wa_group
wa_s_t001
wa_t000
wa_t001
wa_t095
wa_t095b
wa_anla
wa_anlz
wa_anlc
wa_alv
wa_zgrp_fld
wa_zgrp_cc
wa_zgrp_sum
wa_asset_cal
wa_ass_fld
wa_ass_cc
wa_ass_fldcc
wa_asset_sum
wa_t093c
wa_layout
wa_setvalues
wa_csks
gt_group
gt_s_t001
gt_t093c
gt_t093
gt_t093a
gt_t001
gt_t095
gt_t095b
gt_anla
gt_c_anla

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

t_zgroupt,
t_s_t001,
t_t000,
t_t001,
t_t095,
t_t095b,
t_anla,
t_anlz,
t_anlc,
t_alv,
t_fld_zgroupt,
t_cc_zgroupt,
t_sum_zgroupt,
t_asset_cal,
t_asset_fld,
t_asset_cc,
t_asset_fldcc,
t_asset_sum,
t_t093c,
slis_layout_alv,
setvalues,
t_csks,
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF

t_zgroupt,
t_s_t001,
t_t093c,
t_t093,
t_t093a,
t_t001,
t_t095,
t_t095b,
t_anla,
t_c_anla,

gt_anlz
gt_anlc
gt_zgrp_fld
gt_zgrp_cc
gt_zgrp_sum
gt_asset_cal
gt_ass_fld
gt_ass_cc
gt_ass_fldcc
gt_asset_sum
gt_alv
gt_fieldcat
gt_setvalues
gt_csks
v_shortname
v_error

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
c LENGTH
c LENGTH

TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
24 VALUE
132.

t_anlz,
t_anlc,
t_fld_zgroupt,
t_cc_zgroupt,
t_sum_zgroupt,
t_asset_cal,
t_asset_fld,
t_asset_cc,
t_asset_fldcc,
t_asset_sum,
t_alv,
slis_fieldcat_alv,
setvalues,
t_csks,
'ZZF_COCODE_FXA_FLDCDE',

DATA : r_cocd TYPE RANGE OF bkpf-bukrs.


CONSTANTS: c_x1
TYPE c LENGTH 2 VALUE 'X1',
"#CR
c_x2
TYPE c LENGTH 2 VALUE 'X2',
"#CR
c_1231
TYPE c LENGTH 4 VALUE '1231',
"#CR
c_nodate TYPE dats VALUE '00000000',
"#CR
c_x
TYPE c LENGTH 1 VALUE 'X',
"#CR
c_01
TYPE n LENGTH 2 VALUE '01',
"#CR
c_02
TYPE n LENGTH 2 VALUE '02',
"#CR
c_21
TYPE n LENGTH 2 VALUE '21',
"#CR
c_22
TYPE n LENGTH 2 VALUE '22',
"#CR
c_a1000000 TYPE c LENGTH 8 VALUE 'A1000000',
"#CR
c_a1999999 TYPE c LENGTH 8 VALUE 'A1999999',
"#CR
c_i
TYPE c LENGTH 1 VALUE 'I',
"#CR
c_a
TYPE c LENGTH 1 VALUE 'A',
"#CR
c_d
TYPE c LENGTH 1 VALUE 'D',
"#CR
c_e
TYPE c LENGTH 1 VALUE 'E',
"#CR
c_s
TYPE c LENGTH 1 VALUE 'S',
"#CR
c_w
TYPE c LENGTH 1 VALUE 'W',
"#CR
c_bt
TYPE c LENGTH 2 VALUE 'BT',
"#CR
c_cp
TYPE c LENGTH 2 VALUE 'CP',
"#CR
c_eq
TYPE c LENGTH 2 VALUE 'EQ',
"#CR
c_c1000000 TYPE c LENGTH 8 VALUE 'C1000000',
"#CR
c_c1999999 TYPE c LENGTH 8 VALUE 'C1999999',
"#CR
c_i1000000 TYPE c LENGTH 8 VALUE 'I1000000',
"#CR
c_i1999999 TYPE c LENGTH 8 VALUE 'I1999999',
"#CR
c_rbcc
TYPE c LENGTH 5 VALUE 'RB_CC',
"#CR
c_rbfldcc TYPE c LENGTH 8 VALUE 'RB_FLDCC',
"#CR
c_star
TYPE c LENGTH 1 VALUE '*',
"#CR
c_am01
TYPE c LENGTH 4 VALUE 'AM01',
"#CR
c_0
TYPE c LENGTH 1 VALUE '0',
"#CR
c_1
TYPE c LENGTH 1 VALUE '1',
"#CR
c_001
TYPE c LENGTH 3 VALUE '001'.
"#CR
*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
PERFORM f_get_set.
*----------------------------------------------------------------------*
* At Selection screen

*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
DATA: r_rbukrs TYPE RANGE OF zgroupt-rbukrs.
DATA: wa_s_rbukrs LIKE LINE OF r_rbukrs,
wa_c_anla
TYPE t_c_anla.
IF NOT s_rbukrs[] IS INITIAL.
SELECT bukrs
FROM t001
INTO TABLE gt_s_t001
WHERE bukrs IN s_rbukrs.
IF sy-subrc EQ 0.
CLEAR: wa_s_t001.
LOOP AT gt_s_t001 INTO wa_s_t001.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD wa_s_t001-bukrs
ID 'ACTVT' FIELD '03'.
IF sy-subrc NE 0.
MESSAGE e192(zzfn) WITH wa_s_t001-bukrs.
ENDIF.
CLEAR: wa_s_t001.
ENDLOOP.
ENDIF.
ENDIF.
IF NOT s_asset[] IS INITIAL
OR NOT rb_fld IS INITIAL.
CLEAR: wa_s_rbukrs.
LOOP AT s_rbukrs INTO wa_s_rbukrs.
IF NOT wa_s_rbukrs-low IN r_cocd
AND NOT wa_s_rbukrs-low IS INITIAL.
CLEAR: v_error.
CONCATENATE wa_s_rbukrs-low
text-e04
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
MESSAGE v_error
TYPE c_e.
RETURN.
ENDIF.
IF NOT wa_s_rbukrs-high IN r_cocd
AND NOT wa_s_rbukrs-high IS INITIAL.
CLEAR: v_error.
CONCATENATE wa_s_rbukrs-high
text-e04
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
MESSAGE v_error
TYPE c_e.
RETURN.
ENDIF.
CLEAR: wa_s_rbukrs.
ENDLOOP.
ENDIF.
IF NOT s_asset[] IS INITIAL.

* 1. Standard Cost Center Hierarchy (list of Cost Center


*
-> Which Company Code Cost Center belongs)
SELECT kokrs
kostl
datbi
datab
bukrs
INTO TABLE gt_csks
FROM csks
WHERE kokrs EQ c_am01
AND kostl IN s_resctr
AND datbi GE sy-datum
AND datab LE sy-datum
AND bukrs IN s_rbukrs.
IF sy-subrc EQ 0.
SORT: gt_csks[]
BY kokrs ASCENDING
kostl ASCENDING
datbi ASCENDING
datab DESCENDING
bukrs ASCENDING.
DELETE ADJACENT DUPLICATES FROM gt_csks[]
COMPARING kokrs
kostl
bukrs.
SORT: gt_csks[]
BY bukrs ASCENDING.
DELETE ADJACENT DUPLICATES FROM gt_csks[]
COMPARING bukrs.
CLEAR: wa_csks.
LOOP AT gt_csks INTO wa_csks.
AT NEW bukrs.
IF NOT wa_csks-bukrs IN r_cocd
AND NOT wa_csks-bukrs IS INITIAL.
CLEAR: v_error.
CONCATENATE wa_csks-bukrs
text-e04
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
MESSAGE v_error
TYPE c_e.
RETURN.
ENDIF.
ENDAT.
CLEAR: wa_csks.
ENDLOOP.
ENDIF.
*2.
Inventory Number in Asset Master Record
*
(Which Company Code asset belong)
REFRESH: gt_c_anla.
SELECT bukrs
invnr
INTO TABLE gt_c_anla
FROM anla

WHERE bukrs IN s_rbukrs.


IF sy-subrc EQ 0.
IF NOT gt_c_anla[] IS INITIAL.
SORT: gt_c_anla[]
BY bukrs ASCENDING.
DELETE ADJACENT DUPLICATES FROM gt_c_anla[]
COMPARING bukrs.
CLEAR: wa_c_anla.
LOOP AT gt_c_anla INTO wa_c_anla.
AT NEW bukrs.
IF NOT wa_c_anla-bukrs IN r_cocd
AND NOT wa_c_anla-bukrs IS INITIAL.
CLEAR: v_error.
CONCATENATE wa_c_anla-bukrs
text-e04
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
MESSAGE v_error
TYPE c_e.
RETURN.
ENDIF.
ENDAT.
CLEAR: wa_c_anla.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
FREE: gt_c_anla[].
*----------------------------------------------------------------------*
* At Selection screen OUTPUT
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
IF NOT s_asset[] IS INITIAL.
LOOP AT SCREEN.
CASE screen-name.
WHEN c_rbcc.
screen-input = c_0.
WHEN OTHERS.
screen-input = c_1.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
CASE screen-name.
WHEN c_rbfldcc.
screen-input = c_0.
WHEN OTHERS.
screen-input = c_1.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

*----------------------------------------------------------------------*
* Start of Selection
*----------------------------------------------------------------------*
START-OF-SELECTION.
IF s_racct[] IS INITIAL.
PERFORM f_default_racct.
ENDIF.
IF NOT s_asset[] IS INITIAL.
PERFORM f_add_star.
ENDIF.
PERFORM f_refresh.
PERFORM f_retrieve.
PERFORM f_populate.
IF NOT gt_alv[] IS INITIAL.
PERFORM f_display.
ELSE.
MESSAGE text-e02
TYPE c_s
DISPLAY LIKE c_e.
LEAVE LIST-PROCESSING.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&
Form F_REFRESH
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_refresh .
REFRESH: gt_group,
gt_t001,
gt_t095,
gt_t095b,
gt_anla,
gt_anlz,
gt_anlc,
gt_zgrp_sum,
gt_zgrp_fld,
gt_zgrp_cc,
gt_asset_cal,
gt_asset_sum,
gt_ass_fld,
gt_ass_cc,
gt_ass_fldcc,
gt_t093,
gt_t093a,
gt_t093c.
ENDFORM.
" F_REFRESH
*&---------------------------------------------------------------------*
*&
Form F_RETRIEVE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_retrieve .
PERFORM f_t093.
IF NOT s_afabe[] IS INITIAL.
PERFORM f_check_s_afabe.
ENDIF.
IF p_rldnr EQ c_x1.
PERFORM f_t001.
ELSEIF p_rldnr EQ c_x2.
PERFORM f_t000.
REFRESH: gt_t001.
PERFORM f_t001.
ENDIF.
IF NOT gt_t001[] IS INITIAL.
PERFORM f_t095.
ENDIF.
PERFORM f_zgroupt.
PERFORM f_anla.
ENDFORM.
" F_RETRIEVE
*&---------------------------------------------------------------------*
*&
Form F_T001
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_t001 .
SELECT bukrs
land1
waers
ktopl
INTO TABLE gt_t001
FROM t001
WHERE bukrs IN s_rbukrs.
IF sy-subrc EQ 0.
SORT gt_t001 by bukrs.
ENDIF.
ENDFORM.
" F_T001
*&---------------------------------------------------------------------*
*&
Form F_ANLA

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_anla .
DATA: lv_endda TYPE sy-datum,
lt_anla TYPE STANDARD TABLE OF t_anla.
REFRESH: lt_anla.
CLEAR: lv_endda.
CONCATENATE p_ryear
c_1231
INTO lv_endda.
CONDENSE lv_endda NO-GAPS.
SELECT bukrs
anln1
anln2
anlkl
zugdt
deakt
invnr
INTO TABLE gt_anla
FROM anla
WHERE bukrs IN s_rbukrs
AND anlkl IN s_anlkl
AND zugdt LE lv_endda
AND ( deakt EQ c_nodate
OR
deakt GE lv_endda )
AND invnr IN s_asset.
IF sy-subrc EQ 0.
MOVE: gt_anla[] TO lt_anla[].
SORT: lt_anla[]
BY bukrs ASCENDING
anln1 ASCENDING
anln2 ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_anla[]
COMPARING bukrs
anln1
anln2.
IF NOT lt_anla[] IS INITIAL.
SELECT bukrs
anln1
anln2
bdatu
kostl
INTO TABLE gt_anlz
FROM anlz
FOR ALL ENTRIES IN lt_anla
WHERE bukrs EQ lt_anla-bukrs
AND anln1 EQ lt_anla-anln1
AND anln2 EQ lt_anla-anln2.
IF sy-subrc EQ 0.

SORT: gt_anlz[]
BY bukrs ASCENDING
anln1 ASCENDING
anln2 ASCENDING.
ENDIF.
SELECT bukrs
anln1
anln2
gjahr
afabe
zujhr
zucod
kansw
knafa
kaafa
nafag
aafag
answl
nafam
zusna
zusaa
nafav
aafav
nafal
aafal
INTO TABLE gt_anlc
FROM anlc
FOR ALL ENTRIES IN lt_anla
WHERE bukrs EQ lt_anla-bukrs
AND anln1 EQ lt_anla-anln1
AND anln2 EQ lt_anla-anln2
AND gjahr EQ p_ryear
AND afabe IN s_afabe.
IF sy-subrc EQ 0.
SORT gt_anlc BY bukrs
anln1
anln2
gjahr
afabe.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
" F_ANLA
*&---------------------------------------------------------------------*
*&
Form F_DEFAULT_RACCT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_default_racct .
DATA: lr_racct TYPE RANGE OF zgroupt-racct.
DATA: lwa_s_racct LIKE LINE OF lr_racct.
REFRESH s_racct.

CLEAR: lwa_s_racct.
MOVE: c_i TO lwa_s_racct-sign,
c_bt TO lwa_s_racct-option,
c_a1000000 TO lwa_s_racct-low,
c_a1999999 TO lwa_s_racct-high.
APPEND: lwa_s_racct TO s_racct.
CLEAR: lwa_s_racct.
MOVE: c_i TO lwa_s_racct-sign,
c_bt TO lwa_s_racct-option,
c_c1000000 TO lwa_s_racct-low,
c_c1999999 TO lwa_s_racct-high.
APPEND: lwa_s_racct TO s_racct.
CLEAR: lwa_s_racct.
MOVE: c_i TO lwa_s_racct-sign,
c_bt TO lwa_s_racct-option,
c_i1000000 TO lwa_s_racct-low,
c_i1999999 TO lwa_s_racct-high.
APPEND: lwa_s_racct TO s_racct.
CLEAR: lwa_s_racct.
ENDFORM.
" F_DEFAULT_RACCT
*&---------------------------------------------------------------------*
*&
Form F_ZGROUPT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_zgroupt .
DATA: lv_zzasset TYPE zgroupt-zzasset.
SELECT rldnr
rrcty
rvers
ryear
robjnr
cobjnr
sobjnr
rtcur
runit
drcrk
rpmax
rbukrs
racct
zzasset
zzrespcntr
hslvt
hsl01
hsl02
hsl03
hsl04
hsl05
hsl06

hsl07
hsl08
hsl09
hsl10
hsl11
hsl12
kslvt
ksl01
ksl02
ksl03
ksl04
ksl05
ksl06
ksl07
ksl08
ksl09
ksl10
ksl11
ksl12
FROM zgroupt
INTO TABLE gt_group
WHERE rldnr EQ p_rldnr
AND rrcty EQ c_0
AND rvers EQ c_001
AND ryear EQ p_ryear
AND rbukrs IN s_rbukrs
AND racct IN s_racct
AND zzrespcntr IN s_resctr
AND zzasset IN s_asset.
IF sy-subrc EQ 0.
CLEAR: wa_group.
LOOP AT gt_group INTO wa_group.
IF NOT rb_fld IS INITIAL
OR NOT rb_fldcc IS INITIAL
OR NOT rb_gl IS INITIAL.
*1.
If Field Level is selected in selection-screen then,
*
Summarize by Account, Field Code.
*3.
If Field Level - Cost Center Level is selected in
*
selection-screen then, Summarize by Account, Field Code,
*
Cost center.
CLEAR: wa_zgrp_fld,
lv_zzasset.
MOVE-CORRESPONDING wa_group TO wa_zgrp_fld.
MOVE: wa_zgrp_fld-zzasset+4(4) TO lv_zzasset,
lv_zzasset
TO wa_zgrp_fld-zzasset.
APPEND: wa_zgrp_fld TO gt_zgrp_fld.
CLEAR: wa_zgrp_fld.
ELSEIF NOT rb_cc IS INITIAL.
*2.
If Cost Center Level is selected in selection-screen then,
*
Summarize by Account, Cost Center.
CLEAR: wa_zgrp_cc,
lv_zzasset.
MOVE-CORRESPONDING wa_group TO wa_zgrp_cc.
MOVE: wa_zgrp_cc-zzasset+4(4) TO lv_zzasset,
lv_zzasset
TO wa_zgrp_cc-zzasset.
APPEND: wa_zgrp_cc TO gt_zgrp_cc.
CLEAR: wa_zgrp_cc.

ENDIF.
CLEAR: wa_group.
ENDLOOP.
ENDIF.
ENDFORM.
" F_ZGROUPT
*&---------------------------------------------------------------------*
*&
Form F_T000
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_t000 .
CLEAR: wa_t000.
SELECT SINGLE (wa_t000)
INTO CORRESPONDING FIELDS OF wa_t000
FROM t000
WHERE mandt EQ sy-mandt.
IF sy-subrc EQ 0.
ENDIF.
ENDFORM.
" F_T000
*&---------------------------------------------------------------------*
*&
Form F_T095
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_t095 .
DATA: lt_t001 TYPE STANDARD TABLE OF t_t001.
DATA: lr_afabe TYPE RANGE OF t095-afabe.
FIELD-SYMBOLS: <fs_afabe> LIKE LINE OF lr_afabe.
REFRESH: lt_t001.
MOVE: gt_t001[] TO lt_t001[].
SORT: lt_t001[]
BY ktopl ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_t001[]
COMPARING ktopl.
DELETE lt_t001[] WHERE ktopl EQ space.
IF NOT s_afabe[] IS INITIAL.
LOOP AT s_afabe ASSIGNING <fs_afabe>.
IF <fs_afabe>-low EQ c_21.
MOVE: c_01 TO <fs_afabe>-low.
ELSEIF <fs_afabe>-low EQ c_22.
MOVE: c_02 TO <fs_afabe>-low.
ENDIF.
IF <fs_afabe>-high EQ c_21.
MOVE: c_01 TO <fs_afabe>-high.
ELSEIF <fs_afabe>-high EQ c_22.
MOVE: c_02 TO <fs_afabe>-high.

ENDIF.
ENDLOOP.
UNASSIGN <fs_afabe>.
ENDIF.
IF NOT lt_t001[] IS INITIAL.
SELECT ktopl
ktogr
afabe
ktansw
FROM t095
INTO TABLE gt_t095
FOR ALL ENTRIES IN lt_t001
WHERE ktopl EQ lt_t001-ktopl
AND afabe IN s_afabe.
IF sy-subrc EQ 0.
SORT: gt_t095[]
BY ktopl ASCENDING
ktogr ASCENDING
afabe ASCENDING.
ENDIF.
SELECT ktopl
ktogr
afabe
ktnafb
FROM t095b
INTO TABLE gt_t095b
FOR ALL ENTRIES IN lt_t001
WHERE ktopl EQ lt_t001-ktopl
AND afabe IN s_afabe.
IF sy-subrc EQ 0.
SORT: gt_t095b[]
BY ktopl ASCENDING
ktogr ASCENDING
afabe ASCENDING.
ENDIF.
ENDIF.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

MOVE: gt_t001[] TO lt_t001[],


s_afabe[] TO lr_afabe[].
SORT: lt_t001[]
BY ktopl ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_t001[]
COMPARING ktopl.
DELETE lt_t001[] WHERE ktopl EQ space.
IF NOT lr_afabe[] IS INITIAL.
LOOP AT lr_afabe ASSIGNING <fs_afabe>.
IF <fs_afabe>-low EQ c_21.
MOVE: c_01 TO <fs_afabe>-low.
ELSEIF <fs_afabe>-low EQ c_22.
MOVE: c_02 TO <fs_afabe>-low.
ENDIF.
IF <fs_afabe>-high EQ c_21.
MOVE: c_01 TO <fs_afabe>-high.
ELSEIF <fs_afabe>-high EQ c_22.

*
MOVE: c_02 TO <fs_afabe>-high.
*
ENDIF.
*
ENDLOOP.
*
*
UNASSIGN <fs_afabe>.
*
*
SORT: lr_afabe[]
*
BY sign ASCENDING
*
option ASCENDING
*
low ASCENDING
*
high ASCENDING.
*
*
DELETE ADJACENT DUPLICATES FROM lr_afabe[]
*
COMPARING ALL FIELDS.
* ENDIF.
*
* IF NOT lt_t001[] IS INITIAL.
*
SELECT ktopl
*
ktogr
*
afabe
*
ktansw
*
FROM t095
*
INTO TABLE gt_t095
*
FOR ALL ENTRIES IN lt_t001
*
WHERE ktopl EQ lt_t001-ktopl
*
AND afabe IN lr_afabe.
*
IF sy-subrc EQ 0.
*
SORT: gt_t095[]
*
BY ktopl ASCENDING
*
ktogr ASCENDING
*
afabe ASCENDING.
*
ENDIF.
*
*
SELECT ktopl
*
ktogr
*
afabe
*
ktnafb
*
FROM t095b
*
INTO TABLE gt_t095b
*
FOR ALL ENTRIES IN lt_t001
*
WHERE ktopl EQ lt_t001-ktopl
*
AND afabe IN lr_afabe.
*
IF sy-subrc EQ 0.
*
SORT: gt_t095b[]
*
BY ktopl ASCENDING
*
ktogr ASCENDING
*
afabe ASCENDING.
*
ENDIF.
* ENDIF.
ENDFORM.
" F_T095
*&---------------------------------------------------------------------*
*&
Form F_ADD_STAR
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_add_star .
DATA: lr_asset TYPE RANGE OF zgroupt-zzasset.

FIELD-SYMBOLS: <fs_asset> LIKE LINE OF lr_asset.


LOOP AT s_asset ASSIGNING <fs_asset>.
IF NOT <fs_asset>-low IS INITIAL.
CONCATENATE c_star
<fs_asset>-low
c_star
INTO <fs_asset>-low.
CONDENSE <fs_asset>-low NO-GAPS.
ENDIF.
IF NOT <fs_asset>-low IS INITIAL
AND <fs_asset>-high IS INITIAL.
<fs_asset>-option = c_cp.
ENDIF.
IF NOT <fs_asset>-high IS INITIAL.
CONCATENATE c_star
<fs_asset>-high
c_star
INTO <fs_asset>-high.
CONDENSE <fs_asset>-high NO-GAPS.
ENDIF.
ENDLOOP.
UNASSIGN <fs_asset>.
ENDFORM.
" F_ADD_STAR
*&---------------------------------------------------------------------*
*&
Form F_POPULATE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_populate .
PERFORM f_pop_asset.
PERFORM f_pop_zgroupt.
IF NOT gt_asset_sum[] IS INITIAL
OR NOT gt_zgrp_sum[] IS INITIAL.
PERFORM f_mapping.
PERFORM f_check_mapping.
PERFORM f_display_ccdat.
ENDIF.
ENDFORM.
" F_POPULATE
*&---------------------------------------------------------------------*
*&
Form F_POP_ZGROUPT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_pop_zgroupt .
DATA: lwa_grp_fld TYPE t_fld_zgroupt,
lwa_grp_cc TYPE t_cc_zgroupt.

IF NOT gt_zgrp_fld[] IS INITIAL.


IF NOT rb_fld IS INITIAL.
SORT: gt_zgrp_fld[]
BY racct ASCENDING
zzasset ASCENDING.
ELSEIF NOT rb_fldcc IS INITIAL.
SORT: gt_zgrp_fld[]
BY racct
ASCENDING
zzasset ASCENDING
zzrespcntr ASCENDING.
ELSEIF NOT rb_gl IS INITIAL.
SORT: gt_zgrp_fld[]
BY racct ASCENDING.
ENDIF.
ENDIF.
IF NOT gt_zgrp_cc[] IS INITIAL.
SORT: gt_zgrp_cc[]
BY racct
ASCENDING
zzrespcntr ASCENDING.
ENDIF.
* For zgroupt to as such into table gt_zgrp_sum
*Sum Local Amount BalFwd + period 01 thru 012
*Sum Group Amount BalFwd + period 01 thru 012
IF NOT rb_gl IS INITIAL.
CLEAR: wa_zgrp_fld,
lwa_grp_fld,
wa_zgrp_sum.
LOOP AT gt_zgrp_fld INTO wa_zgrp_fld.
IF sy-tabix NE 1.
IF NOT lwa_grp_fld-racct EQ wa_zgrp_fld-racct.
MOVE: lwa_grp_fld-racct TO wa_zgrp_sum-racct,
lwa_grp_fld-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_fld-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_fld.
ELSE.
wa_zgrp_sum-tot_loc = wa_zgrp_sum-tot_loc
wa_zgrp_fld-hslvt
wa_zgrp_fld-hsl01
wa_zgrp_fld-hsl02
wa_zgrp_fld-hsl03
wa_zgrp_fld-hsl04
wa_zgrp_fld-hsl05
wa_zgrp_fld-hsl06
wa_zgrp_fld-hsl07
wa_zgrp_fld-hsl08
wa_zgrp_fld-hsl09
wa_zgrp_fld-hsl10
wa_zgrp_fld-hsl11
wa_zgrp_fld-hsl12 .

+
+
+
+
+
+
+
+
+
+
+
+
+

wa_zgrp_sum-tot_grp = wa_zgrp_sum-tot_grp
wa_zgrp_fld-kslvt
wa_zgrp_fld-ksl01
wa_zgrp_fld-ksl02
wa_zgrp_fld-ksl03

+
+
+
+
+

wa_zgrp_fld-ksl04
wa_zgrp_fld-ksl05
wa_zgrp_fld-ksl06
wa_zgrp_fld-ksl07
wa_zgrp_fld-ksl08
wa_zgrp_fld-ksl09
wa_zgrp_fld-ksl10
wa_zgrp_fld-ksl11
wa_zgrp_fld-ksl12 .

+
+
+
+
+
+
+
+

ENDIF.
ENDIF.
IF lwa_grp_fld IS INITIAL.
MOVE: wa_zgrp_fld TO lwa_grp_fld.
wa_zgrp_sum-tot_loc = lwa_grp_fld-hslvt
lwa_grp_fld-hsl01
lwa_grp_fld-hsl02
lwa_grp_fld-hsl03
lwa_grp_fld-hsl04
lwa_grp_fld-hsl05
lwa_grp_fld-hsl06
lwa_grp_fld-hsl07
lwa_grp_fld-hsl08
lwa_grp_fld-hsl09
lwa_grp_fld-hsl10
lwa_grp_fld-hsl11
lwa_grp_fld-hsl12.
wa_zgrp_sum-tot_grp = lwa_grp_fld-kslvt
lwa_grp_fld-ksl01
lwa_grp_fld-ksl02
lwa_grp_fld-ksl03
lwa_grp_fld-ksl04
lwa_grp_fld-ksl05
lwa_grp_fld-ksl06
lwa_grp_fld-ksl07
lwa_grp_fld-ksl08
lwa_grp_fld-ksl09
lwa_grp_fld-ksl10
lwa_grp_fld-ksl11
lwa_grp_fld-ksl12.
ENDIF.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

AT LAST.
MOVE: lwa_grp_fld-racct TO wa_zgrp_sum-racct,
lwa_grp_fld-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_fld-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_fld.
ENDAT.
CLEAR: wa_zgrp_fld.
ENDLOOP.
ELSEIF NOT rb_fld IS INITIAL.
CLEAR: wa_zgrp_fld,
lwa_grp_fld,
wa_zgrp_sum.
LOOP AT gt_zgrp_fld INTO wa_zgrp_fld.
IF sy-tabix NE 1.

IF NOT lwa_grp_fld-racct EQ wa_zgrp_fld-racct


OR NOT lwa_grp_fld-zzasset EQ wa_zgrp_fld-zzasset.
MOVE: lwa_grp_fld-racct TO wa_zgrp_sum-racct,
lwa_grp_fld-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_fld-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_fld.
ELSE.
wa_zgrp_sum-tot_loc = wa_zgrp_sum-tot_loc
wa_zgrp_fld-hslvt
wa_zgrp_fld-hsl01
wa_zgrp_fld-hsl02
wa_zgrp_fld-hsl03
wa_zgrp_fld-hsl04
wa_zgrp_fld-hsl05
wa_zgrp_fld-hsl06
wa_zgrp_fld-hsl07
wa_zgrp_fld-hsl08
wa_zgrp_fld-hsl09
wa_zgrp_fld-hsl10
wa_zgrp_fld-hsl11
wa_zgrp_fld-hsl12 .

+
+
+
+
+
+
+
+
+
+
+
+
+

wa_zgrp_sum-tot_grp = wa_zgrp_sum-tot_grp
wa_zgrp_fld-kslvt
wa_zgrp_fld-ksl01
wa_zgrp_fld-ksl02
wa_zgrp_fld-ksl03
wa_zgrp_fld-ksl04
wa_zgrp_fld-ksl05
wa_zgrp_fld-ksl06
wa_zgrp_fld-ksl07
wa_zgrp_fld-ksl08
wa_zgrp_fld-ksl09
wa_zgrp_fld-ksl10
wa_zgrp_fld-ksl11
wa_zgrp_fld-ksl12 .
ENDIF.
ENDIF.

+
+
+
+
+
+
+
+
+
+
+
+
+

IF lwa_grp_fld IS INITIAL.
MOVE: wa_zgrp_fld TO lwa_grp_fld.
wa_zgrp_sum-tot_loc = lwa_grp_fld-hslvt
lwa_grp_fld-hsl01
lwa_grp_fld-hsl02
lwa_grp_fld-hsl03
lwa_grp_fld-hsl04
lwa_grp_fld-hsl05
lwa_grp_fld-hsl06
lwa_grp_fld-hsl07
lwa_grp_fld-hsl08
lwa_grp_fld-hsl09
lwa_grp_fld-hsl10
lwa_grp_fld-hsl11
lwa_grp_fld-hsl12.
wa_zgrp_sum-tot_grp = lwa_grp_fld-kslvt
lwa_grp_fld-ksl01

+
+
+
+
+
+
+
+
+
+
+
+
+
+

lwa_grp_fld-ksl02
lwa_grp_fld-ksl03
lwa_grp_fld-ksl04
lwa_grp_fld-ksl05
lwa_grp_fld-ksl06
lwa_grp_fld-ksl07
lwa_grp_fld-ksl08
lwa_grp_fld-ksl09
lwa_grp_fld-ksl10
lwa_grp_fld-ksl11
lwa_grp_fld-ksl12.

+
+
+
+
+
+
+
+
+
+

ENDIF.
AT LAST.
MOVE: lwa_grp_fld-racct TO wa_zgrp_sum-racct,
lwa_grp_fld-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_fld-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_fld.
ENDAT.
CLEAR: wa_zgrp_fld.
ENDLOOP.
ELSEIF NOT rb_cc IS INITIAL.
CLEAR: wa_zgrp_cc,
lwa_grp_cc,
wa_zgrp_sum.
LOOP AT gt_zgrp_cc INTO wa_zgrp_cc.
IF sy-tabix NE 1.
IF NOT lwa_grp_cc-racct EQ wa_zgrp_cc-racct
OR NOT lwa_grp_cc-zzrespcntr EQ wa_zgrp_cc-zzrespcntr.
MOVE: lwa_grp_cc-racct TO wa_zgrp_sum-racct,
lwa_grp_cc-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_cc-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_cc.
ELSE.
wa_zgrp_sum-tot_loc = wa_zgrp_sum-tot_loc +
wa_zgrp_cc-hslvt +
wa_zgrp_cc-hsl01 +
wa_zgrp_cc-hsl02 +
wa_zgrp_cc-hsl03 +
wa_zgrp_cc-hsl04 +
wa_zgrp_cc-hsl05 +
wa_zgrp_cc-hsl06 +
wa_zgrp_cc-hsl07 +
wa_zgrp_cc-hsl08 +
wa_zgrp_cc-hsl09 +
wa_zgrp_cc-hsl10 +
wa_zgrp_cc-hsl11 +
wa_zgrp_cc-hsl12 .
wa_zgrp_sum-tot_grp = wa_zgrp_sum-tot_grp +
wa_zgrp_cc-kslvt +
wa_zgrp_cc-ksl01 +
wa_zgrp_cc-ksl02 +
wa_zgrp_cc-ksl03 +

wa_zgrp_cc-ksl04
wa_zgrp_cc-ksl05
wa_zgrp_cc-ksl06
wa_zgrp_cc-ksl07
wa_zgrp_cc-ksl08
wa_zgrp_cc-ksl09
wa_zgrp_cc-ksl10
wa_zgrp_cc-ksl11
wa_zgrp_cc-ksl12 .

+
+
+
+
+
+
+
+

ENDIF.
ENDIF.
IF lwa_grp_cc IS INITIAL.
MOVE: wa_zgrp_cc TO lwa_grp_cc.
wa_zgrp_sum-tot_loc = lwa_grp_cc-hslvt
lwa_grp_cc-hsl01
lwa_grp_cc-hsl02
lwa_grp_cc-hsl03
lwa_grp_cc-hsl04
lwa_grp_cc-hsl05
lwa_grp_cc-hsl06
lwa_grp_cc-hsl07
lwa_grp_cc-hsl08
lwa_grp_cc-hsl09
lwa_grp_cc-hsl10
lwa_grp_cc-hsl11
lwa_grp_cc-hsl12.
wa_zgrp_sum-tot_grp = lwa_grp_cc-kslvt
lwa_grp_cc-ksl01
lwa_grp_cc-ksl02
lwa_grp_cc-ksl03
lwa_grp_cc-ksl04
lwa_grp_cc-ksl05
lwa_grp_cc-ksl06
lwa_grp_cc-ksl07
lwa_grp_cc-ksl08
lwa_grp_cc-ksl09
lwa_grp_cc-ksl10
lwa_grp_cc-ksl11
lwa_grp_cc-ksl12.
ENDIF.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

AT LAST.
MOVE: lwa_grp_cc-racct TO wa_zgrp_sum-racct,
lwa_grp_cc-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_cc-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_cc.
ENDAT.
CLEAR: wa_zgrp_cc.
ENDLOOP.
ELSEIF NOT rb_fldcc IS INITIAL.
CLEAR: wa_zgrp_fld,
lwa_grp_fld,
wa_zgrp_sum.
LOOP AT gt_zgrp_fld INTO wa_zgrp_fld.
IF sy-tabix NE 1.

IF NOT lwa_grp_fld-racct EQ wa_zgrp_fld-racct


OR NOT lwa_grp_fld-zzasset EQ wa_zgrp_fld-zzasset
OR NOT lwa_grp_fld-zzrespcntr EQ wa_zgrp_fld-zzrespcntr.
MOVE: lwa_grp_fld-racct TO wa_zgrp_sum-racct,
lwa_grp_fld-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_fld-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_fld.
ELSE.
wa_zgrp_sum-tot_loc = wa_zgrp_sum-tot_loc
wa_zgrp_fld-hslvt
wa_zgrp_fld-hsl01
wa_zgrp_fld-hsl02
wa_zgrp_fld-hsl03
wa_zgrp_fld-hsl04
wa_zgrp_fld-hsl05
wa_zgrp_fld-hsl06
wa_zgrp_fld-hsl07
wa_zgrp_fld-hsl08
wa_zgrp_fld-hsl09
wa_zgrp_fld-hsl10
wa_zgrp_fld-hsl11
wa_zgrp_fld-hsl12 .

+
+
+
+
+
+
+
+
+
+
+
+
+

wa_zgrp_sum-tot_grp = wa_zgrp_sum-tot_grp
wa_zgrp_fld-kslvt
wa_zgrp_fld-ksl01
wa_zgrp_fld-ksl02
wa_zgrp_fld-ksl03
wa_zgrp_fld-ksl04
wa_zgrp_fld-ksl05
wa_zgrp_fld-ksl06
wa_zgrp_fld-ksl07
wa_zgrp_fld-ksl08
wa_zgrp_fld-ksl09
wa_zgrp_fld-ksl10
wa_zgrp_fld-ksl11
wa_zgrp_fld-ksl12 .
ENDIF.
ENDIF.

+
+
+
+
+
+
+
+
+
+
+
+
+

IF lwa_grp_fld IS INITIAL.
MOVE: wa_zgrp_fld TO lwa_grp_fld.
wa_zgrp_sum-tot_loc = lwa_grp_fld-hslvt
lwa_grp_fld-hsl01
lwa_grp_fld-hsl02
lwa_grp_fld-hsl03
lwa_grp_fld-hsl04
lwa_grp_fld-hsl05
lwa_grp_fld-hsl06
lwa_grp_fld-hsl07
lwa_grp_fld-hsl08
lwa_grp_fld-hsl09
lwa_grp_fld-hsl10
lwa_grp_fld-hsl11
lwa_grp_fld-hsl12.

+
+
+
+
+
+
+
+
+
+
+
+

wa_zgrp_sum-tot_grp = lwa_grp_fld-kslvt

lwa_grp_fld-ksl01
lwa_grp_fld-ksl02
lwa_grp_fld-ksl03
lwa_grp_fld-ksl04
lwa_grp_fld-ksl05
lwa_grp_fld-ksl06
lwa_grp_fld-ksl07
lwa_grp_fld-ksl08
lwa_grp_fld-ksl09
lwa_grp_fld-ksl10
lwa_grp_fld-ksl11
lwa_grp_fld-ksl12.

+
+
+
+
+
+
+
+
+
+
+

ENDIF.
AT LAST.
MOVE: lwa_grp_fld-racct TO wa_zgrp_sum-racct,
lwa_grp_fld-zzrespcntr TO wa_zgrp_sum-zzrespcntr,
lwa_grp_fld-zzasset TO wa_zgrp_sum-zzasset.
APPEND wa_zgrp_sum TO gt_zgrp_sum.
CLEAR: wa_zgrp_sum,
lwa_grp_fld.
ENDAT.
CLEAR: wa_zgrp_fld.
ENDLOOP.
ENDIF.
ENDFORM.
" F_POP_ZGROUPT
*&---------------------------------------------------------------------*
*&
Form F_POP_ASSET
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_pop_asset .
DATA: lwa_ass_fld TYPE t_asset_fld,
lwa_ass_cc
TYPE t_asset_cc,
lwa_ass_fldcc TYPE t_asset_fldcc.
IF NOT gt_anla[] IS INITIAL.
SORT: gt_anla[]
BY bukrs ASCENDING
anln1 ASCENDING
anln2 ASCENDING.
ENDIF.
SORT: gt_t093c[]
BY bukrs ASCENDING,
gt_t093[]
BY afapl ASCENDING
afaber ASCENDING,
gt_t093a[]
BY afapl ASCENDING
afabe ASCENDING,
gt_t001[]
BY bukrs ASCENDING.
IF NOT gt_anlc[] IS INITIAL.
CLEAR: wa_anlc,

wa_anla,
wa_anlz,
wa_asset_cal,
wa_asset_sum.
LOOP AT gt_anlc INTO wa_anlc.
CLEAR: wa_t093c.
READ TABLE gt_t093c INTO wa_t093c
WITH KEY bukrs = wa_anlc-bukrs
BINARY SEARCH.
IF sy-subrc EQ 0.
READ TABLE gt_t093 TRANSPORTING NO FIELDS
WITH KEY afapl = wa_t093c-afapl
afaber = wa_anlc-afabe
BINARY SEARCH.
IF sy-subrc NE 0.
READ TABLE gt_t093a TRANSPORTING NO FIELDS
WITH KEY afapl = wa_t093c-afapl
afabe = wa_anlc-afabe
BINARY SEARCH.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
MOVE: wa_anlc-gjahr TO wa_asset_cal-gjahr,
wa_anlc-afabe TO wa_asset_cal-afabe.
wa_asset_cal-tot_acq = wa_anlc-kansw +
wa_anlc-answl.
wa_asset_cal-tot_dep = wa_anlc-knafa
wa_anlc-kaafa
wa_anlc-nafag
wa_anlc-aafag
wa_anlc-nafam
wa_anlc-zusna
wa_anlc-zusaa
wa_anlc-nafav
wa_anlc-aafav
wa_anlc-nafal
wa_anlc-aafal.

+
+
+
+
+
+
+
+
+
+

CLEAR: wa_anla.
READ TABLE gt_anla INTO wa_anla
WITH KEY bukrs = wa_anlc-bukrs
anln1 = wa_anlc-anln1
anln2 = wa_anlc-anln2
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE: wa_anla-bukrs TO wa_asset_cal-bukrs,
wa_anla-anln1 TO wa_asset_cal-anln1,
wa_anla-anln2 TO wa_asset_cal-anln2,
wa_anla-invnr TO wa_asset_cal-invnr,
wa_anla-anlkl TO wa_asset_cal-anlkl.
ENDIF.

CLEAR: wa_anlz.
READ TABLE gt_anlz INTO wa_anlz
WITH KEY bukrs = wa_anlc-bukrs
anln1 = wa_anlc-anln1
anln2 = wa_anlc-anln2
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE: wa_anlz-kostl TO wa_asset_cal-kostl.
ENDIF.
IF wa_anlc-afabe EQ c_21.
MOVE: c_01 TO wa_anlc-afabe.
ELSEIF wa_anlc-afabe EQ c_22.
MOVE: c_02 TO wa_anlc-afabe.
ENDIF.
CLEAR: wa_t001.
READ TABLE gt_t001 INTO wa_t001
WITH KEY bukrs = wa_anlc-bukrs
BINARY SEARCH.
IF sy-subrc EQ 0.
CLEAR: wa_t095.
READ TABLE gt_t095 INTO wa_t095
WITH KEY ktopl = wa_t001-ktopl
ktogr = wa_asset_cal-anlkl
afabe = wa_anlc-afabe
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE: wa_t095-ktansw TO wa_asset_cal-ktansw.
ENDIF.
CLEAR: wa_t095b.
READ TABLE gt_t095b INTO wa_t095b
WITH KEY ktopl = wa_t001-ktopl
ktogr = wa_asset_cal-anlkl
afabe = wa_anlc-afabe
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE: wa_t095b-ktnafb TO wa_asset_cal-ktnafb.
ENDIF.
ENDIF.
APPEND: wa_asset_cal TO gt_asset_cal.
CLEAR: wa_anlc,
wa_anla,
wa_anlz,
wa_asset_cal.
ENDLOOP.
ENDIF.
IF NOT gt_asset_cal[] IS INITIAL.
CLEAR: wa_asset_cal.
LOOP AT gt_asset_cal INTO wa_asset_cal.
IF NOT rb_fld IS INITIAL.
CLEAR: wa_ass_fld.
MOVE: wa_asset_cal-invnr TO wa_ass_fld-invnr,
wa_asset_cal-afabe TO wa_ass_fld-afabe,
wa_asset_cal-bukrs TO wa_ass_fld-bukrs,

wa_asset_cal-anln1
wa_asset_cal-anln2
wa_asset_cal-anlkl
wa_asset_cal-kostl
wa_asset_cal-gjahr
wa_asset_cal-ktansw
wa_asset_cal-tot_acq
c_a

TO
TO
TO
TO
TO
TO
TO
TO

wa_ass_fld-anln1,
wa_ass_fld-anln2,
wa_ass_fld-anlkl,
wa_ass_fld-kostl,
wa_ass_fld-gjahr,
wa_ass_fld-racct,
wa_ass_fld-total,
wa_ass_fld-flg.

IF wa_ass_fld-racct IN s_racct.
APPEND: wa_ass_fld TO gt_ass_fld.
ENDIF.
CLEAR: wa_ass_fld-racct,
wa_ass_fld-total,
wa_ass_fld-flg.
MOVE: wa_asset_cal-ktnafb TO wa_ass_fld-racct,
wa_asset_cal-tot_dep TO wa_ass_fld-total,
c_d
TO wa_ass_fld-flg.
IF wa_ass_fld-racct IN s_racct.
APPEND: wa_ass_fld TO gt_ass_fld.
ENDIF.
CLEAR: wa_ass_fld.
ELSEIF NOT rb_cc IS INITIAL.
CLEAR: wa_ass_cc.
MOVE: wa_asset_cal-invnr
wa_asset_cal-afabe
wa_asset_cal-bukrs
wa_asset_cal-anln1
wa_asset_cal-anln2
wa_asset_cal-anlkl
wa_asset_cal-kostl
wa_asset_cal-gjahr
wa_asset_cal-ktansw
wa_asset_cal-tot_acq
c_a

TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO

wa_ass_cc-invnr,
wa_ass_cc-afabe,
wa_ass_cc-bukrs,
wa_ass_cc-anln1,
wa_ass_cc-anln2,
wa_ass_cc-anlkl,
wa_ass_cc-kostl,
wa_ass_cc-gjahr,
wa_ass_cc-racct,
wa_ass_cc-total,
wa_ass_cc-flg.

IF wa_ass_cc-racct IN s_racct.
APPEND: wa_ass_cc TO gt_ass_cc.
ENDIF.
CLEAR: wa_ass_cc-racct,
wa_ass_cc-total,
wa_ass_cc-flg.
MOVE: wa_asset_cal-ktnafb TO wa_ass_cc-racct,
wa_asset_cal-tot_dep TO wa_ass_cc-total,
c_d
TO wa_ass_cc-flg.
IF wa_ass_cc-racct IN s_racct.
APPEND: wa_ass_cc TO gt_ass_cc.
ENDIF.
CLEAR: wa_ass_cc.
ELSEIF NOT rb_fldcc IS INITIAL

OR NOT rb_gl IS INITIAL.


CLEAR: wa_ass_fldcc.
MOVE: wa_asset_cal-invnr
wa_asset_cal-afabe
wa_asset_cal-bukrs
wa_asset_cal-anln1
wa_asset_cal-anln2
wa_asset_cal-anlkl
wa_asset_cal-kostl
wa_asset_cal-gjahr
wa_asset_cal-ktansw
wa_asset_cal-tot_acq
c_a

TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO

wa_ass_fldcc-invnr,
wa_ass_fldcc-afabe,
wa_ass_fldcc-bukrs,
wa_ass_fldcc-anln1,
wa_ass_fldcc-anln2,
wa_ass_fldcc-anlkl,
wa_ass_fldcc-kostl,
wa_ass_fldcc-gjahr,
wa_ass_fldcc-racct,
wa_ass_fldcc-total,
wa_ass_fldcc-flg.

IF wa_ass_fldcc-racct IN s_racct.
APPEND: wa_ass_fldcc TO gt_ass_fldcc.
ENDIF.
CLEAR: wa_ass_fldcc-racct,
wa_ass_fldcc-total,
wa_ass_fldcc-flg.
MOVE: wa_asset_cal-ktnafb TO wa_ass_fldcc-racct,
wa_asset_cal-tot_dep TO wa_ass_fldcc-total,
c_d
TO wa_ass_fldcc-flg.
IF wa_ass_fldcc-racct IN s_racct.
APPEND: wa_ass_fldcc TO gt_ass_fldcc.
ENDIF.
CLEAR: wa_ass_fldcc.
ENDIF.
CLEAR: wa_asset_cal.
ENDLOOP.
ENDIF.
IF NOT gt_ass_fld[] IS INITIAL.
SORT: gt_ass_fld[]
BY racct ASCENDING
invnr ASCENDING
afabe ASCENDING.
CLEAR: wa_ass_fld,
lwa_ass_fld,
wa_asset_sum.
LOOP AT gt_ass_fld INTO wa_ass_fld.
IF sy-tabix NE 1.
IF NOT lwa_ass_fld-racct EQ wa_ass_fld-racct
OR NOT lwa_ass_fld-invnr EQ wa_ass_fld-invnr
OR NOT lwa_ass_fld-afabe EQ wa_ass_fld-afabe.
MOVE: lwa_ass_fld-bukrs TO wa_asset_sum-bukrs,
lwa_ass_fld-anln1 TO wa_asset_sum-anln1,
lwa_ass_fld-anln2 TO wa_asset_sum-anln2,
lwa_ass_fld-invnr TO wa_asset_sum-invnr,
lwa_ass_fld-anlkl TO wa_asset_sum-anlkl,
lwa_ass_fld-kostl TO wa_asset_sum-kostl,
lwa_ass_fld-gjahr TO wa_asset_sum-gjahr,
lwa_ass_fld-afabe TO wa_asset_sum-afabe,
lwa_ass_fld-racct TO wa_asset_sum-racct,
lwa_ass_fld-flg
TO wa_asset_sum-flg.

APPEND wa_asset_sum TO gt_asset_sum.


CLEAR: wa_asset_sum,
lwa_ass_fld.
ELSE.
wa_asset_sum-total = wa_asset_sum-total +
wa_ass_fld-total.
ENDIF.
ENDIF.
IF lwa_ass_fld IS INITIAL.
MOVE: wa_ass_fld TO lwa_ass_fld,
lwa_ass_fld-total TO wa_asset_sum-total.
ENDIF.
AT LAST.
MOVE: lwa_ass_fld-bukrs TO wa_asset_sum-bukrs,
lwa_ass_fld-anln1 TO wa_asset_sum-anln1,
lwa_ass_fld-anln2 TO wa_asset_sum-anln2,
lwa_ass_fld-invnr TO wa_asset_sum-invnr,
lwa_ass_fld-anlkl TO wa_asset_sum-anlkl,
lwa_ass_fld-kostl TO wa_asset_sum-kostl,
lwa_ass_fld-gjahr TO wa_asset_sum-gjahr,
lwa_ass_fld-afabe TO wa_asset_sum-afabe,
lwa_ass_fld-racct TO wa_asset_sum-racct,
lwa_ass_fld-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,
lwa_ass_fld.
ENDAT.
CLEAR: wa_ass_fld.
ENDLOOP.
ENDIF.
IF NOT gt_ass_cc[] IS INITIAL.
SORT: gt_ass_cc[]
BY racct ASCENDING
kostl ASCENDING
afabe ASCENDING.
CLEAR: wa_ass_cc,
lwa_ass_cc,
wa_asset_sum.
LOOP AT gt_ass_cc INTO wa_ass_cc.
IF sy-tabix NE 1.
IF NOT lwa_ass_cc-racct EQ wa_ass_cc-racct
OR NOT lwa_ass_cc-kostl EQ wa_ass_cc-kostl
OR NOT lwa_ass_cc-afabe EQ wa_ass_cc-afabe.
MOVE: lwa_ass_cc-bukrs TO wa_asset_sum-bukrs,
lwa_ass_cc-anln1 TO wa_asset_sum-anln1,
lwa_ass_cc-anln2 TO wa_asset_sum-anln2,
lwa_ass_cc-invnr TO wa_asset_sum-invnr,
lwa_ass_cc-anlkl TO wa_asset_sum-anlkl,
lwa_ass_cc-kostl TO wa_asset_sum-kostl,
lwa_ass_cc-gjahr TO wa_asset_sum-gjahr,
lwa_ass_cc-afabe TO wa_asset_sum-afabe,
lwa_ass_cc-racct TO wa_asset_sum-racct,
lwa_ass_cc-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,

lwa_ass_cc.
ELSE.
wa_asset_sum-total = wa_asset_sum-total +
wa_ass_cc-total.
ENDIF.
ENDIF.
IF lwa_ass_cc IS INITIAL.
MOVE: wa_ass_cc TO lwa_ass_cc,
lwa_ass_cc-total TO wa_asset_sum-total.
ENDIF.
AT LAST.
MOVE: lwa_ass_cc-bukrs TO wa_asset_sum-bukrs,
lwa_ass_cc-anln1 TO wa_asset_sum-anln1,
lwa_ass_cc-anln2 TO wa_asset_sum-anln2,
lwa_ass_cc-invnr TO wa_asset_sum-invnr,
lwa_ass_cc-anlkl TO wa_asset_sum-anlkl,
lwa_ass_cc-kostl TO wa_asset_sum-kostl,
lwa_ass_cc-gjahr TO wa_asset_sum-gjahr,
lwa_ass_cc-afabe TO wa_asset_sum-afabe,
lwa_ass_cc-racct TO wa_asset_sum-racct,
lwa_ass_cc-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,
lwa_ass_cc.
ENDAT.
CLEAR: wa_ass_cc.
ENDLOOP.
ENDIF.
IF NOT gt_ass_fldcc[] IS INITIAL.
IF NOT rb_gl IS INITIAL.
SORT: gt_ass_fldcc[]
BY racct ASCENDING
afabe ASCENDING.
CLEAR: wa_ass_fldcc,
lwa_ass_fldcc,
wa_asset_sum.
LOOP AT gt_ass_fldcc INTO wa_ass_fldcc.
IF sy-tabix NE 1.
IF NOT lwa_ass_fldcc-racct EQ wa_ass_fldcc-racct
OR NOT lwa_ass_fldcc-afabe EQ wa_ass_fldcc-afabe.
MOVE: lwa_ass_fldcc-bukrs TO wa_asset_sum-bukrs,
lwa_ass_fldcc-anln1 TO wa_asset_sum-anln1,
lwa_ass_fldcc-anln2 TO wa_asset_sum-anln2,
lwa_ass_fldcc-invnr TO wa_asset_sum-invnr,
lwa_ass_fldcc-anlkl TO wa_asset_sum-anlkl,
lwa_ass_fldcc-kostl TO wa_asset_sum-kostl,
lwa_ass_fldcc-gjahr TO wa_asset_sum-gjahr,
lwa_ass_fldcc-afabe TO wa_asset_sum-afabe,
lwa_ass_fldcc-racct TO wa_asset_sum-racct,
lwa_ass_fldcc-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,
lwa_ass_fldcc.
ELSE.

wa_asset_sum-total = wa_asset_sum-total +
wa_ass_fldcc-total.
ENDIF.
ENDIF.
IF lwa_ass_fldcc IS INITIAL.
MOVE: wa_ass_fldcc TO lwa_ass_fldcc,
lwa_ass_fldcc-total TO wa_asset_sum-total.
ENDIF.
AT LAST.
MOVE: lwa_ass_fldcc-bukrs TO wa_asset_sum-bukrs,
lwa_ass_fldcc-anln1 TO wa_asset_sum-anln1,
lwa_ass_fldcc-anln2 TO wa_asset_sum-anln2,
lwa_ass_fldcc-invnr TO wa_asset_sum-invnr,
lwa_ass_fldcc-anlkl TO wa_asset_sum-anlkl,
lwa_ass_fldcc-kostl TO wa_asset_sum-kostl,
lwa_ass_fldcc-gjahr TO wa_asset_sum-gjahr,
lwa_ass_fldcc-afabe TO wa_asset_sum-afabe,
lwa_ass_fldcc-racct TO wa_asset_sum-racct,
lwa_ass_fldcc-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,
lwa_ass_fldcc.
ENDAT.
CLEAR: wa_ass_fldcc.
ENDLOOP.
ELSEIF NOT rb_fldcc IS INITIAL.
SORT: gt_ass_fldcc[]
BY racct ASCENDING
invnr ASCENDING
kostl ASCENDING
afabe ASCENDING.
CLEAR: wa_ass_fldcc,
lwa_ass_fldcc,
wa_asset_sum.
LOOP AT gt_ass_fldcc INTO wa_ass_fldcc.
IF sy-tabix NE 1.
IF NOT lwa_ass_fldcc-racct EQ wa_ass_fldcc-racct
OR NOT lwa_ass_fldcc-invnr EQ wa_ass_fldcc-invnr
OR NOT lwa_ass_fldcc-kostl EQ wa_ass_fldcc-kostl
OR NOT lwa_ass_fldcc-afabe EQ wa_ass_fldcc-afabe.
MOVE: lwa_ass_fldcc-bukrs TO wa_asset_sum-bukrs,
lwa_ass_fldcc-anln1 TO wa_asset_sum-anln1,
lwa_ass_fldcc-anln2 TO wa_asset_sum-anln2,
lwa_ass_fldcc-invnr TO wa_asset_sum-invnr,
lwa_ass_fldcc-anlkl TO wa_asset_sum-anlkl,
lwa_ass_fldcc-kostl TO wa_asset_sum-kostl,
lwa_ass_fldcc-gjahr TO wa_asset_sum-gjahr,
lwa_ass_fldcc-afabe TO wa_asset_sum-afabe,
lwa_ass_fldcc-racct TO wa_asset_sum-racct,
lwa_ass_fldcc-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,
lwa_ass_fldcc.
ELSE.
wa_asset_sum-total = wa_asset_sum-total +

wa_ass_fldcc-total.
ENDIF.
ENDIF.
IF lwa_ass_fldcc IS INITIAL.
MOVE: wa_ass_fldcc TO lwa_ass_fldcc,
lwa_ass_fldcc-total TO wa_asset_sum-total.
ENDIF.
AT LAST.
MOVE: lwa_ass_fldcc-bukrs TO wa_asset_sum-bukrs,
lwa_ass_fldcc-anln1 TO wa_asset_sum-anln1,
lwa_ass_fldcc-anln2 TO wa_asset_sum-anln2,
lwa_ass_fldcc-invnr TO wa_asset_sum-invnr,
lwa_ass_fldcc-anlkl TO wa_asset_sum-anlkl,
lwa_ass_fldcc-kostl TO wa_asset_sum-kostl,
lwa_ass_fldcc-gjahr TO wa_asset_sum-gjahr,
lwa_ass_fldcc-afabe TO wa_asset_sum-afabe,
lwa_ass_fldcc-racct TO wa_asset_sum-racct,
lwa_ass_fldcc-flg
TO wa_asset_sum-flg.
APPEND wa_asset_sum TO gt_asset_sum.
CLEAR: wa_asset_sum,
lwa_ass_fldcc.
ENDAT.
CLEAR: wa_ass_fldcc.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM.
" F_POP_ASSET
*&---------------------------------------------------------------------*
*&
Form F_MAPPING
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_mapping .
DATA: lv_flg_lc_ass TYPE c LENGTH 1, "#CR
lv_flg_gc_ass TYPE c LENGTH 1. "#CR
REFRESH: gt_alv.
SORT: gt_t093c[]
BY bukrs ASCENDING,
gt_t093[]
BY afapl ASCENDING
afaber ASCENDING.
IF NOT rb_gl IS INITIAL.
SORT: gt_zgrp_sum[]
BY racct
ASCENDING.
ELSEIF NOT rb_fld IS INITIAL.
SORT: gt_zgrp_sum[]
BY racct
ASCENDING
zzasset ASCENDING.

ELSEIF NOT rb_cc IS INITIAL.


SORT: gt_zgrp_sum[]
BY racct
ASCENDING
zzrespcntr ASCENDING.
ELSEIF NOT rb_fldcc IS INITIAL.
SORT: gt_zgrp_sum[]
BY racct
ASCENDING
zzasset ASCENDING
zzrespcntr ASCENDING.
ENDIF.
CLEAR: wa_asset_sum,
wa_zgrp_sum,
wa_alv.
LOOP AT gt_asset_sum INTO wa_asset_sum.
MOVE: wa_asset_sum-bukrs TO wa_alv-bukrs,
wa_asset_sum-afabe TO wa_alv-afabe,
wa_asset_sum-racct TO wa_alv-racct,
wa_asset_sum-total TO wa_alv-z_total.
CLEAR: wa_t093c,
lv_flg_lc_ass,
lv_flg_gc_ass.
READ TABLE gt_t093c INTO wa_t093c
WITH KEY bukrs = wa_asset_sum-bukrs
BINARY SEARCH.
IF sy-subrc EQ 0.
READ TABLE gt_t093 TRANSPORTING NO FIELDS
WITH KEY afapl = wa_t093c-afapl
afaber = wa_asset_sum-afabe
BINARY SEARCH.
IF sy-subrc EQ 0.
IF p_rldnr EQ c_x1.
MOVE: c_x TO lv_flg_lc_ass.
ELSEIF p_rldnr EQ c_x2.
MOVE: c_x TO lv_flg_gc_ass.
ENDIF.
ELSE.
IF p_rldnr EQ c_x1.
MOVE: c_x TO lv_flg_gc_ass.
ELSEIF p_rldnr EQ c_x2.
MOVE: c_x TO lv_flg_lc_ass.
ENDIF.
ENDIF.
ENDIF.
IF NOT rb_gl IS INITIAL.
CLEAR: wa_zgrp_sum.
READ TABLE gt_zgrp_sum INTO wa_zgrp_sum
WITH KEY racct = wa_asset_sum-racct
BINARY SEARCH.

IF sy-subrc EQ 0.
PERFORM f_total_mapping.
ENDIF.
ELSEIF NOT rb_fld IS INITIAL.
MOVE: wa_asset_sum-invnr TO wa_alv-invnr.
CLEAR: wa_zgrp_sum.
READ TABLE gt_zgrp_sum INTO wa_zgrp_sum
WITH KEY racct
= wa_asset_sum-racct "#CR
zzasset = wa_asset_sum-invnr "#CR
BINARY SEARCH.
IF sy-subrc EQ 0.
PERFORM f_total_mapping.
ENDIF.
ELSEIF NOT rb_cc IS INITIAL.
MOVE: wa_asset_sum-kostl TO wa_alv-kostl.
CLEAR: wa_zgrp_sum.
READ TABLE gt_zgrp_sum INTO wa_zgrp_sum
WITH KEY racct
= wa_asset_sum-racct
zzrespcntr = wa_asset_sum-kostl
BINARY SEARCH.
IF sy-subrc EQ 0.
PERFORM f_total_mapping.
ENDIF.
ELSEIF NOT rb_fldcc IS INITIAL.
MOVE: wa_asset_sum-invnr TO wa_alv-invnr,
wa_asset_sum-kostl TO wa_alv-kostl.
CLEAR: wa_zgrp_sum.
READ TABLE gt_zgrp_sum INTO wa_zgrp_sum
WITH KEY racct
= wa_asset_sum-racct
zzasset = wa_asset_sum-invnr
zzrespcntr = wa_asset_sum-kostl
BINARY SEARCH.
IF sy-subrc EQ 0.
PERFORM f_total_mapping.
ENDIF.
ENDIF.

*
*
*
*
*
*

IF wa_alv-z_grp_sum IS INITIAL
AND wa_alv-z_total LE -0.
MOVE: wa_alv-z_total TO wa_alv-z_diff.
ELSE.
wa_alv-z_diff = wa_alv-z_grp_sum wa_alv-z_total.
ENDIF.
BEGIN DELETE BY MYAWAG CR-G01116/D16K9A3A2T/RT50335 04/06/2014
IF wa_alv-z_diff IS INITIAL.
MOVE: c_c510 TO wa_alv-line_color.
ELSEIF NOT wa_alv-z_diff IS INITIAL.
MOVE: c_c610 TO wa_alv-line_color.
ENDIF.

* END DELETE BY MYAWAG CR-G01116/D16K9A3A2T/RT50335 04/06/2014


IF wa_alv-racct IS INITIAL
AND wa_alv-z_total IS INITIAL
AND wa_alv-z_grp_sum IS INITIAL
AND wa_alv-z_diff IS INITIAL .
ELSE.
APPEND: wa_alv TO gt_alv.
ENDIF.
CLEAR: wa_asset_sum,
wa_alv.
ENDLOOP.
ENDFORM.
" F_MAPPING
*&---------------------------------------------------------------------*
*&
Form F_TOTAL_MAPPING
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_total_mapping .
DATA: lv_flg_lc_ass TYPE c LENGTH 1,
lv_flg_gc_ass TYPE c LENGTH 1.
IF p_rldnr EQ c_x1.
IF NOT lv_flg_lc_ass IS INITIAL.
MOVE: wa_zgrp_sum-tot_loc TO wa_alv-z_grp_sum.
ELSEIF NOT lv_flg_gc_ass IS INITIAL.
MOVE: wa_zgrp_sum-tot_grp TO wa_alv-z_grp_sum.
ENDIF.
ELSEIF p_rldnr EQ c_x2.
IF NOT lv_flg_lc_ass IS INITIAL.
MOVE: wa_zgrp_sum-tot_loc TO wa_alv-z_grp_sum.
ELSEIF NOT lv_flg_gc_ass IS INITIAL.
MOVE: wa_zgrp_sum-tot_grp TO wa_alv-z_grp_sum.
ENDIF.
ENDIF.
ENDFORM.
" F_TOTAL_MAPPING
*&---------------------------------------------------------------------*
*&
Form F_T093
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_t093 .
SELECT bukrs
afapl
INTO TABLE gt_t093c
FROM t093c
WHERE bukrs IN s_rbukrs.
IF sy-subrc EQ 0.

SORT gt_t093c BY afapl.


DELETE ADJACENT DUPLICATES FROM gt_t093c
COMPARING afapl.
SELECT afapl
afaber
buhbkt
INTO TABLE gt_t093
FROM t093
FOR ALL ENTRIES IN gt_t093c
WHERE afapl EQ gt_t093c-afapl
AND buhbkt NE 0.
IF sy-subrc EQ 0.
SORT: gt_t093[]
BY afaber ASCENDING.
ENDIF.
SELECT afapl
afabe
curtp
INTO TABLE gt_t093a
FROM t093a
FOR ALL ENTRIES IN gt_t093c
WHERE afapl EQ gt_t093c-afapl
AND curtp NE space.
IF sy-subrc EQ 0.
SORT: gt_t093a[]
BY afabe ASCENDING.
ENDIF.
ENDIF.
ENDFORM.
" F_T093
*&---------------------------------------------------------------------*
*&
Form F_DISPLAY
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_display .
PERFORM f_layout.
CLEAR: gt_fieldcat[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name
= sy-repid
i_structure_name
= 'ZZSFFI028_AM_GL_RECONCIL'
CHANGING
ct_fieldcat
= gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error
= 2
OTHERS
= 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.
IF NOT rb_gl IS INITIAL.
SORT: gt_alv[]
BY racct ASCENDING.
ELSEIF NOT rb_fld IS INITIAL.
SORT: gt_alv[]
BY racct
ASCENDING
invnr
ASCENDING.
ELSEIF NOT rb_cc IS INITIAL.
SORT: gt_alv[]
BY racct
ASCENDING
kostl
ASCENDING.
ELSEIF NOT rb_fldcc IS INITIAL.
SORT: gt_alv[]
BY racct
ASCENDING
invnr
ASCENDING
kostl
ASCENDING.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_bypassing_buffer = 'X'
i_callback_program = sy-repid
is_layout
= wa_layout
it_fieldcat
= gt_fieldcat[]
i_save
= 'A'
TABLES
t_outtab
= gt_alv[]
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
" F_DISPLAY
*&---------------------------------------------------------------------*
*&
Form F_LAYOUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_layout .
CLEAR wa_layout.
wa_layout-colwidth_optimize = c_x.
wa_layout-info_fieldname = text-l01.
ENDFORM.
" F_LAYOUT
*&---------------------------------------------------------------------*
*&
Form F_CHECK_S_AFABE

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_check_s_afabe .
DATA: lr_afabe TYPE RANGE OF t095-afabe.
DATA: lwa_s_afabe LIKE LINE OF lr_afabe.
CLEAR: lwa_s_afabe,
v_error.
LOOP AT s_afabe INTO lwa_s_afabe.
IF NOT lwa_s_afabe-low IS INITIAL.
READ TABLE gt_t093 TRANSPORTING NO FIELDS
WITH KEY afaber = lwa_s_afabe-low
BINARY SEARCH.
IF sy-subrc NE 0.
READ TABLE gt_t093a TRANSPORTING NO FIELDS
WITH KEY afabe = lwa_s_afabe-low
BINARY SEARCH.
IF sy-subrc NE 0.
IF v_error IS INITIAL.
CONCATENATE lwa_s_afabe-low
text-e01
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
ELSE.
CONCATENATE lwa_s_afabe-low
v_error
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
ENDIF.
MESSAGE v_error
TYPE c_s
DISPLAY LIKE c_w.
ENDIF.
ENDIF.
ENDIF.
IF NOT lwa_s_afabe-high IS INITIAL.
READ TABLE gt_t093 TRANSPORTING NO FIELDS
WITH KEY afaber = lwa_s_afabe-high
BINARY SEARCH.
IF sy-subrc NE 0.
READ TABLE gt_t093a TRANSPORTING NO FIELDS
WITH KEY afabe = lwa_s_afabe-high
BINARY SEARCH.
IF sy-subrc NE 0.
IF v_error IS INITIAL.
CONCATENATE lwa_s_afabe-high
text-e01
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
ELSE.
CONCATENATE lwa_s_afabe-high

v_error
INTO v_error
SEPARATED BY space
IN CHARACTER MODE.
ENDIF.
MESSAGE v_error
TYPE c_s
DISPLAY LIKE c_w.
ENDIF.
ENDIF.
ENDIF.
CLEAR: lwa_s_afabe.
ENDLOOP.
ENDFORM.
" F_CHECK_S_AFABE
*&---------------------------------------------------------------------*
*&
Form F_GET_SET
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM f_get_set.
DATA : lwa_cocd LIKE LINE OF r_cocd.
DATA : lv_setid TYPE sethier-setid.
CLEAR: lv_setid.
CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
shortname
= v_shortname
IMPORTING
new_setid
= lv_setid
EXCEPTIONS
no_set_found
= 1
no_set_picked_from_popup = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
REFRESH: gt_setvalues.
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
setid
= lv_setid
TABLES
set_values
= gt_setvalues
EXCEPTIONS
set_not_found
= 1
illegal_field_replacement = 2
illegal_table_replacement = 3
set_is_damaged
= 4
OTHERS
= 5.
IF sy-subrc EQ 0.
IF NOT gt_setvalues[] IS INITIAL.
CLEAR: wa_setvalues,
r_cocd[].
LOOP AT gt_setvalues INTO wa_setvalues.
CLEAR: lwa_cocd.

lwa_cocd-sign = c_i.
IF NOT wa_setvalues-to IS INITIAL.
IF wa_setvalues-from NE wa_setvalues-to.
lwa_cocd-option = c_bt.
ELSE.
lwa_cocd-option = c_eq.
ENDIF.
ELSE.
lwa_cocd-option = c_eq.
ENDIF.
lwa_cocd-low = wa_setvalues-from.
lwa_cocd-high = wa_setvalues-to.
APPEND lwa_cocd TO r_cocd.
CLEAR: wa_setvalues.
ENDLOOP.
ENDIF.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
FREE: gt_setvalues[].
ENDFORM.
" F_GET_SET
*&---------------------------------------------------------------------*
*&
Form F_CHECK_MAPPING
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_check_mapping .
SORT gt_alv[] BY invnr racct.
SORT gt_zgrp_sum[] BY racct zzasset.
SORT gt_asset_sum[] BY racct.
LOOP AT gt_zgrp_sum INTO wa_zgrp_sum.
READ TABLE gt_alv INTO wa_alv
WITH KEY invnr = wa_zgrp_sum-zzasset
racct = wa_zgrp_sum-racct
BINARY SEARCH.
IF sy-subrc NE 0.
MOVE: wa_zgrp_sum-tot_loc TO wa_alv-z_grp_sum.
MOVE: wa_zgrp_sum-zzasset TO wa_alv-invnr.
*Get rest data from gt_asset_sum
READ TABLE gt_asset_sum INTO wa_asset_sum
WITH KEY racct = wa_zgrp_sum-racct
BINARY SEARCH.
IF sy-subrc EQ 0.
IF wa_asset_sum-bukrs IS INITIAL OR
wa_asset_sum-racct NE wa_alv-racct.
CLEAR wa_asset_sum.
CLEAR wa_alv.
EXIT.

ELSE.
MOVE: wa_asset_sum-bukrs TO wa_alv-bukrs,
wa_asset_sum-afabe TO wa_alv-afabe,
wa_asset_sum-racct TO wa_alv-racct.
ENDIF.
ENDIF.
"Pass
wa_alv-z_diff = wa_alv-z_grp_sum - wa_alv-z_total.
"Z_total should be 0 always in this case because this value is from wa_ass
et_sum in case same INVNR found in that
APPEND wa_alv TO gt_alv.
CLEAR: wa_asset_sum,
wa_alv,
wa_zgrp_sum.
ENDIF.
ENDLOOP.
ENDFORM.
" F_CHECK_MAPPING
*&---------------------------------------------------------------------*
*&
Form F_DISPLAY_CCDAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_display_ccdat .
IF rb_cc = 'X'.
DELETE gt_alv[] WHERE
NOT kostl IN s_resctr.
ENDIF.
ENDFORM.

" F_DISPLAY_CCDAT

Vous aimerez peut-être aussi