Você está na página 1de 28

Material Aging Report

*&---------------------------------------------------------------------*
*& Report ZFI_MATERIAL_AGE
*&---------------------------------------------------------------------*
*& Created By : Pampaniya Rakesh
*& Requested By :
*& Date
: 24.06.2013
*& TCode
: ZMC46
*& Description : Material Aging Report
*&---------------------------------------------------------------------*
report ZINVTRY_AGING.
*&---------------------------------------------------------------------*
*& Type-Pool Declaration
*&---------------------------------------------------------------------*
type-pools: slis.
*&---------------------------------------------------------------------*
*& ALV Data Declaration
*&---------------------------------------------------------------------*
data: it_fieldcat
type slis_t_fieldcat_alv.
data: wa_fieldcat
like line of it_fieldcat.
data: t_list_top_of_page type slis_t_listheader.
data: it_events
type slis_t_event with header line.
data: g_save
type c value 'A'.
data: gt_sort type slis_t_sortinfo_alv.
data: gx_save
type c value 'A'.
data: gx_variant
type disvariant.
data: g_variant
type disvariant.
data: gs_layout
type slis_layout_alv.
data: t_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
data: t_i_event
type slis_alv_event.
*&---------------------------------------------------------------------*
*& External Table Declaration
*

*&---------------------------------------------------------------------*
tables : mchbh,mchb,mseg.
*&---------------------------------------------------------------------*
*& Internal Table Declaration
*
*&---------------------------------------------------------------------*
types : begin of ty_mchbh,
matnr type mchbh-matnr,
werks type mchbh-werks,
lgort type mchbh-lgort,
charg type mchbh-charg,
lfgja type mchbh-lfgja,
lfmon type mchbh-lfmon,
clabs type mchbh-clabs,
cumlm type mchbh-cumlm,
cinsm type mchbh-cinsm,
ceinm type mchbh-ceinm,
cspem type mchbh-cspem,
cretm type mchbh-cretm,
mtart type mara-mtart,
maktx type makt-maktx,
budat type mkpf-budat,
price type mbewh-verpr,
value type wtgxxx,
flag(1) type c,
end of ty_mchbh.
types : begin of ty_mchb,
matnr type mchbh-matnr,
werks type mchbh-werks,
lgort type mchbh-lgort,
charg type mchbh-charg,
lfgja type mchbh-lfgja,
lfmon type mchbh-lfmon,
clabs type mchbh-clabs,
cumlm type mchbh-cumlm,
cinsm type mchbh-cinsm,
ceinm type mchbh-ceinm,
cspem type mchbh-cspem,
cretm type mchbh-cretm,
end of ty_mchb.
types : begin of ty_matnr,
matnr type mara-matnr,
mtart type mara-mtart,
flag(1) type c,
end of ty_matnr.

types : begin of ty_mbewh,


matnr type mbewh-matnr,
lfgja type mbewh-lfgja,
lfmon type mbewh-lfmon,
lbkum type mbewh-lbkum,
salk3 type mbewh-salk3,
vprsv type mbewh-vprsv,
verpr type mbewh-verpr,
stprs type mbewh-stprs,
end of ty_mbewh.
types : begin of ty_final,
matnr type mchbh-matnr,
werks type mchbh-werks,
lgort type mchbh-lgort,
charg type mchbh-charg,
salk3 type mbewh-salk3,
meins type mara-meins,
nodue type wtgxxx,
day_0_30 type wtgxxx,
day_31_60 type wtgxxx,
day_61_90 type wtgxxx,
day_91_120 type wtgxxx,
day_121_180 type wtgxxx,
day_181_270 type wtgxxx,
day_271_365 type wtgxxx,
day_m_365 type wtgxxx,
total type wtgxxx,
maktx type makt-maktx,
mtart type mara-mtart,
clabs type mchbh-clabs,
price type mbewh-verpr,
budat type mkpf-budat,
end of ty_final.
types : begin of ty_month,
matnr type mchbh-matnr,
werks type mchbh-werks,
lgort type mchbh-lgort,
charg type mchbh-charg,
lfmon type mchbh-lfmon,
lfgja type mchbh-lfgja,
clabs type mchbh-clabs,
cinsm type mchbh-cinsm,
cspem type mchbh-cspem,

ceinm type mchbh-ceinm,


cretm type mchbh-cretm,
end of ty_month.
data : it_mchbh type table of ty_mchbh,
wa_mchbh type ty_mchbh,
it_mchbh1 type table of ty_mchbh,
wa_mchbh1 type ty_mchbh,
it_mchbh2 type table of ty_mchbh,
wa_mchbh2 type ty_mchbh,
it_mchb type table of ty_mchb,
wa_mchb type ty_mchb,
it_mchb1 type table of ty_mchb,
wa_mchb1 type ty_mchb,
it_matnr type table of ty_matnr,
wa_matnr type ty_matnr,
it_mbewh type table of ty_mbewh,
wa_mbewh type ty_mbewh,
it_mbewh1 type table of ty_mbewh,
wa_mbewh1 type ty_mbewh,
it_mbew type table of ty_mbewh,
wa_mbew type ty_mbewh,
it_mbew1 type table of ty_mbewh,
wa_mbew1 type ty_mbewh,
it_mbew2 type table of ty_mbewh,
wa_mbew2 type ty_mbewh,
it_final type table of ty_final,
wa_final type ty_final,
it_month type table of ty_month,
wa_month type ty_month.
*&---------------------------------------------------------------------*
*& Variables Declaration
*
*&---------------------------------------------------------------------*
data : mblnr type mseg-mblnr.
data : p_date1 type char10. "sy-datum.
data : p_date type sy-datum.
data : month like t009b-bumon.
data : year like t009b-bdatj.
data : days like t009b-butag.
data : wd0 type sy-datum,
wd30 type sy-datum,
wd31 type sy-datum,
wd60 type sy-datum,
wd61 type sy-datum,
wd90 type sy-datum,
wd91 type sy-datum,

wd120 type sy-datum,


wd121 type sy-datum,
wd180 type sy-datum,
wd181 type sy-datum,
wd270 type sy-datum,
wd271 type sy-datum,
wd365 type sy-datum,
wd15 type sy-datum,
wd16 type sy-datum,
wd17 type sy-datum,
wd18 type sy-datum.
data : x1 type mchbh-lfmon.
data : lfmon type mchbh-lfmon.
data : v_name2 type t001w-name2.
*&---------------------------------------------------------------------*
*& Selection-screen
*
*&---------------------------------------------------------------------*
selection-screen begin of block blk1 with frame title text-t01.
selection-screen begin of block var with frame title variant.
parameters : spmon type spmon obligatory.
select-options : s_werks for mchbh-werks obligatory.
select-options : s_matnr for mchbh-matnr.
"" obligatory.
select-options : s_lgort for mchbh-lgort.
select-options : s_charg for mchbh-charg.
selection-screen skip.
parameters : r1 radiobutton group rb,
r2 radiobutton group rb.
selection-screen end of block var.
selection-screen end of block blk1.
*&---------------------------------------------------------------------*
*& At Selection Screen
*
*&---------------------------------------------------------------------*
at selection-screen.
*&---------------------------------------------------------------------*
*& Initialization Event
*
*&---------------------------------------------------------------------*
initialization.
*&---------------------------------------------------------------------*
*& Start of Selection Event
*
*&---------------------------------------------------------------------*
start-of-selection.
perform get_data.
perform get_com_dtl.
BREAK 10115.
if it_mchbh[] is not initial.

perform alv_fieldcat.
perform get_events.
perform sub_comment_build using t_list_top_of_page.
perform alv_display.
else.
message 'No Data Found' type 'I'.
endif.
*&---------------------------------------------------------------------*
*&
Form GET_DATA
*&---------------------------------------------------------------------*
form get_data.
break 10115.
select matnr mtart
from mara
into corresponding fields of table it_matnr
where matnr in s_matnr.
* and mtart in ('ROH','VERP','ZERP','HALB','FERT','ZERT','HAWA').
if sy-subrc = 0.
sort it_matnr by matnr.
delete adjacent duplicates from it_matnr comparing matnr.
endif.
if it_matnr is not initial.
select matnr werks lgort charg lfgja
lfmon clabs cumlm cinsm ceinm
cspem cretm
from mchbh
into corresponding fields of table it_mchbh2
for all entries in it_matnr
where matnr = it_matnr-matnr
and werks in s_werks
and lgort in s_lgort.
endif.
sort it_mchbh2 by matnr werks lgort charg lfgja lfmon.
delete adjacent duplicates from it_mchbh2
comparing matnr werks lgort charg. "lfgja lfmon.
if s_charg[] is not initial.
delete it_mchbh2 where charg not in s_charg.
endif.
if it_matnr[] is not initial.
select matnr werks lgort charg lfgja
lfmon clabs cumlm cinsm ceinm
cspem cretm
from mchbh
into corresponding fields of table it_mchbh
for all entries in it_matnr
where matnr = it_matnr-matnr

and werks in s_werks


and lgort in s_lgort
and charg in s_charg
and lfgja = spmon+0(4)
and lfmon = spmon+4(2).
select matnr werks lgort charg lfgja
lfmon clabs cumlm cinsm ceinm
cspem cretm
from mchb
into corresponding fields of table it_mchb
for all entries in it_matnr
where matnr = it_matnr-matnr
and werks in s_werks
and lgort in s_lgort
and charg in s_charg.
endif.
sort it_mchbh by matnr werks lgort charg lfgja lfmon.
delete adjacent duplicates from it_mchbh
comparing matnr werks lgort charg lfgja lfmon.
sort it_mchb by matnr werks lgort charg lfgja lfmon.
delete adjacent duplicates from it_mchb
comparing matnr werks lgort charg lfgja lfmon.
*****
loop at it_mchbh2 into wa_mchbh2.
read table it_mchbh into wa_mchbh
with key matnr = wa_mchbh2-matnr
werks = wa_mchbh2-werks
lgort = wa_mchbh2-lgort
charg = wa_mchbh2-charg.
if sy-subrc eq 0.
wa_mchbh2-flag = 'X'.
endif.
modify it_mchbh2 from wa_mchbh2.
clear wa_mchbh2.
endloop.
delete it_mchbh2 where flag = 'X'.
****
break 10115.
if it_mchbh2[] is not initial.
loop at it_mchbh2 into wa_mchbh2.
wa_mchbh2-lfgja = '0000'.
wa_mchbh2-lfmon = '00'.
wa_mchbh2-clabs = 0.
wa_mchbh2-cinsm = 0.

wa_mchbh2-cumlm = 0.
wa_mchbh2-cspem = 0.
wa_mchbh2-ceinm = 0.
wa_mchbh2-cretm = 0.
modify it_mchbh2 from wa_mchbh2.
clear wa_mchbh2.
endloop.
endif.
*****
break 10115.
if it_mchbh2[] is not initial.
loop at it_mchbh2 into wa_mchbh2.
wa_month-matnr = wa_mchbh2-matnr.
wa_month-werks = wa_mchbh2-werks.
wa_month-lgort = wa_mchbh2-lgort.
wa_month-charg = wa_mchbh2-charg.
****For Min Month And Year
select single min( lfgja )
from mchbh
into wa_month-lfgja
where matnr = wa_month-matnr
and werks = wa_month-werks
and lgort = wa_month-lgort
and charg = wa_month-charg
and lfgja => spmon+0(4).
if wa_month-lfgja = spmon+0(4).
select single min( lfmon )
from mchbh
into wa_month-lfmon
where matnr = wa_month-matnr
and werks = wa_month-werks
and lgort = wa_month-lgort
and charg = wa_month-charg
and lfgja = wa_month-lfgja
and lfmon => spmon+4(2).
endif.
if wa_month-lfmon < spmon+4(2).
select single min( lfgja )
from mchbh
into wa_month-lfgja
where matnr = wa_month-matnr
and werks = wa_month-werks
and lgort = wa_month-lgort
and charg = wa_month-charg

and lfgja > spmon+0(4).


endif.
if wa_month-lfgja > spmon+0(4).
select single min( lfmon )
from mchbh
into wa_month-lfmon
where matnr = wa_month-matnr
and werks = wa_month-werks
and lgort = wa_month-lgort
and charg = wa_month-charg
and lfgja = wa_month-lfgja.
endif.
****For Qty.
select single clabs cinsm cspem ceinm cretm
from mchbh
into (wa_month-clabs,wa_month-cinsm,
wa_month-cspem,wa_month-ceinm,
wa_month-cretm)
where matnr = wa_month-matnr
and werks = wa_month-werks
and lgort = wa_month-lgort
and charg = wa_month-charg
and lfgja = wa_month-lfgja
and lfmon = wa_month-lfmon.
if sy-subrc ne 0.
select single lfgja lfmon clabs cinsm
cspem ceinm cretm
from mchb
into (wa_month-lfgja,wa_month-lfmon,wa_month-clabs,
wa_month-cinsm,wa_month-cspem,wa_month-ceinm,
wa_month-cretm)
where matnr = wa_month-matnr
and werks = wa_month-werks
and lgort = wa_month-lgort
and charg = wa_month-charg.
endif.
append wa_month to it_month.
clear : wa_month,lfmon.
endloop.
endif.
sort it_month by matnr werks lgort charg lfgja lfmon.
delete adjacent duplicates from it_month
comparing matnr werks lgort charg.
loop at it_month into wa_month.

move-corresponding wa_month to wa_mchbh.


append wa_mchbh to it_mchbh.
clear wa_mchbh.
endloop.
****
if it_mchbh[] is not initial.
select matnr lfgja lfmon lbkum
salk3 vprsv verpr stprs
from mbewh
into corresponding fields of table it_mbewh
for all entries in it_mchbh
where matnr = it_mchbh-matnr
and lfmon = spmon+4(2)
and lfgja = spmon+0(4)
and bwkey = it_mchbh-werks.
select matnr lfgja lfmon lbkum
salk3 vprsv verpr stprs
from mbew
into corresponding fields of table it_mbew
for all entries in it_mchbh
where matnr = it_mchbh-matnr
and lfmon = spmon+4(2)
and lfgja = spmon+0(4)
and bwkey = it_mchbh-werks.
endif.
loop at it_mchbh into wa_mchbh.
read table it_matnr into wa_matnr
with key matnr = wa_mchbh-matnr.
if sy-subrc = 0.
wa_mchbh-mtart = wa_matnr-mtart.
endif.
select single maktx
from makt
into wa_mchbh-maktx
where matnr = wa_mchbh-matnr.
if wa_mchbh-mtart = 'ROH' or
wa_mchbh-mtart = 'VERP' or
wa_mchbh-mtart = 'ZERP'.
select single a~lwedt
into wa_mchbh-budat
from mch1 as a
inner join mcha as b

on a~matnr = b~matnr
and a~charg = b~charg
where a~matnr = wa_mchbh-matnr
and a~charg = wa_mchbh-charg
and a~lvorm = space
and b~werks = wa_mchbh-werks.
elseif wa_mchbh-mtart = 'HALB' or
wa_mchbh-mtart = 'FERT' or
wa_mchbh-mtart = 'ZERT' or
wa_mchbh-mtart = 'HAWA'.
select single a~hsdat
into wa_mchbh-budat
from mch1 as a
inner join mcha as b
on a~matnr = b~matnr
and a~charg = b~charg
where a~matnr = wa_mchbh-matnr
and a~charg = wa_mchbh-charg
and a~lvorm = space
and b~werks = wa_mchbh-werks.
endif.
read table it_mbewh into wa_mbewh
with key matnr = wa_mchbh-matnr.
if sy-subrc = 0.
if wa_mchbh-mtart = 'ROH' or
wa_mchbh-mtart = 'VERP' or
wa_mchbh-mtart = 'ZERP'.
wa_mchbh-price = wa_mbewh-verpr.
wa_mchbh-value = ( wa_mchbh-clabs + wa_mchbh-cinsm +
wa_mchbh-cspem + wa_mchbh-ceinm +
wa_mchbh-cretm )
* wa_mchbh-price.
elseif wa_mchbh-mtart = 'HALB' or
wa_mchbh-mtart = 'FERT' or
wa_mchbh-mtart = 'ZERT' or
wa_mchbh-mtart = 'HAWA'..
wa_mchbh-price = wa_mbewh-stprs.
wa_mchbh-value = ( wa_mchbh-clabs + wa_mchbh-cinsm +
wa_mchbh-cspem + wa_mchbh-ceinm +
wa_mchbh-cretm )
* wa_mchbh-price.
endif.
endif.
modify it_mchbh from wa_mchbh.

clear wa_mchbh.
endloop.
*****
break abapdev2.
loop at it_mchbh into wa_mchbh where price eq 0.
****For Min Year For Price
if wa_mchbh-mtart = 'ROH' or
wa_mchbh-mtart = 'VERP' or
wa_mchbh-mtart = 'ZERP'.
*****
select single min( lfgja )
from mbewh
into wa_mchbh1-lfgja
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja => spmon+0(4)
and verpr ne 0.
elseif wa_mchbh-mtart = 'HALB' or
wa_mchbh-mtart = 'FERT' or
wa_mchbh-mtart = 'ZERT' or
wa_mchbh-mtart = 'HAWA'..
select single min( lfgja )
from mbewh
into wa_mchbh1-lfgja
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja => spmon+0(4)
and stprs ne 0.
endif.
****For Min Month For Price
if wa_mchbh-mtart = 'ROH' or
wa_mchbh-mtart = 'VERP' or
wa_mchbh-mtart = 'ZERP'.
if wa_mchbh1-lfgja = spmon+0(4).
select single min( lfmon )
from mbewh
into wa_mchbh1-lfmon
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja = wa_mchbh1-lfgja
and lfmon => spmon+4(2)
and verpr ne 0.
endif.
if wa_mchbh1-lfmon < spmon+4(2).
select single min( lfgja )

from mbewh
into wa_mchbh1-lfgja
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja > spmon+0(4)
and verpr ne 0.
endif.
if wa_mchbh1-lfgja > spmon+0(4).
select single min( lfmon )
from mbewh
into wa_mchbh1-lfmon
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja = wa_mchbh1-lfgja
and verpr ne 0.
endif.
elseif wa_mchbh-mtart = 'HALB' or
wa_mchbh-mtart = 'FERT' or
wa_mchbh-mtart = 'ZERT' or
wa_mchbh-mtart = 'HAWA'..
if wa_mchbh1-lfgja = spmon+0(4).
select single min( lfmon )
from mbewh
into wa_mchbh1-lfmon
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja = wa_mchbh1-lfgja
and lfmon => spmon+4(2)
and stprs ne 0.
endif.
if wa_mchbh1-lfmon < spmon+4(2).
select single min( lfgja )
from mbewh
into wa_mchbh1-lfgja
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja > spmon+0(4)
and stprs ne 0.
endif.
if wa_mchbh1-lfgja > spmon+0(4).
select single min( lfmon )
from mbewh
into wa_mchbh1-lfmon
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks

and lfgja = wa_mchbh1-lfgja


and stprs ne 0.
endif.
endif.
****For price.
if wa_mchbh-mtart = 'ROH' or
wa_mchbh-mtart = 'VERP' or
wa_mchbh-mtart = 'ZERP'.
select single verpr
from mbewh
into wa_mchbh-price
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja = wa_mchbh1-lfgja
and lfmon = wa_mchbh1-lfmon.
if sy-subrc ne 0.
select single verpr
from mbew
into wa_mchbh-price
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks.
endif.
elseif wa_mchbh-mtart = 'HALB' or
wa_mchbh-mtart = 'FERT' or
wa_mchbh-mtart = 'ZERT' or
wa_mchbh-mtart = 'HAWA'.
select single stprs
from mbewh
into wa_mchbh-price
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks
and lfgja = wa_mchbh1-lfgja
and lfmon = wa_mchbh1-lfmon.
if sy-subrc ne 0.
select single stprs
from mbew
into wa_mchbh-price
where matnr = wa_mchbh-matnr
and bwkey = wa_mchbh-werks.
endif.
endif.
****for value
wa_mchbh-value = ( wa_mchbh-clabs + wa_mchbh-cinsm +
wa_mchbh-cspem + wa_mchbh-ceinm +
wa_mchbh-cretm )
* wa_mchbh-price.

modify it_mchbh from wa_mchbh.


clear : wa_mchbh,wa_mchbh1.
endloop.
sort it_mchbh by matnr charg werks.
perform get_p_date.
perform date_seting.
loop at it_mchbh into wa_mchbh.
wa_final-matnr = wa_mchbh-matnr.
wa_final-werks = wa_mchbh-werks.
wa_final-lgort = wa_mchbh-lgort.
wa_final-charg = wa_mchbh-charg.
wa_final-clabs = wa_mchbh-clabs + wa_mchbh-cinsm +
wa_mchbh-cspem + wa_mchbh-ceinm +
wa_mchbh-cretm.
if r1 = 'X'.
****For Ageing Value
if wa_mchbh-budat between wd0 and wd30.
wa_final-day_0_30 = wa_final-day_0_30 +
wa_mchbh-value.
endif.
if wa_mchbh-budat between wd31 and wd60.
wa_final-day_31_60 = wa_final-day_31_60 +
wa_mchbh-value.
endif.
if wa_mchbh-budat between wd61 and wd90.
wa_final-day_61_90 = wa_final-day_61_90 +
wa_mchbh-value.
endif.
if wa_mchbh-budat between wd91 and wd120.
wa_final-day_91_120 = wa_final-day_91_120 +
wa_mchbh-value.
endif.
if wa_mchbh-budat between wd121 and wd180.
wa_final-day_121_180 = wa_final-day_121_180 +
wa_mchbh-value.
endif.
if wa_mchbh-budat between wd181 and wd270.
wa_final-day_181_270 = wa_final-day_181_270 +

wa_mchbh-value.
endif.
if wa_mchbh-budat between wd271 and wd365.
wa_final-day_271_365 = wa_final-day_271_365 +
wa_mchbh-value.
endif.
if wa_mchbh-budat < wd271.
wa_final-day_m_365 = wa_final-day_m_365 +
wa_mchbh-value.
endif.
if wa_mchbh-budat > wd30.
wa_final-nodue = wa_final-nodue +
wa_mchbh-value.
endif.
elseif r2 = 'X'.
if wa_mchbh-budat between wd0 and wd30.
wa_final-day_0_30 = wa_final-day_0_30 +
wa_final-clabs.
endif.
if wa_mchbh-budat between wd31 and wd60.
wa_final-day_31_60 = wa_final-day_31_60 +
wa_final-clabs.
endif.
if wa_mchbh-budat between wd61 and wd90.
wa_final-day_61_90 = wa_final-day_61_90 +
wa_final-clabs.
endif.
if wa_mchbh-budat between wd91 and wd120.
wa_final-day_91_120 = wa_final-day_91_120 +
wa_final-clabs.
endif.
if wa_mchbh-budat between wd121 and wd180.
wa_final-day_121_180 = wa_final-day_121_180 +
wa_final-clabs.
endif.
if wa_mchbh-budat between wd181 and wd270.
wa_final-day_181_270 = wa_final-day_181_270 +

wa_final-clabs.
endif.
if wa_mchbh-budat between wd271 and wd365.
wa_final-day_271_365 = wa_final-day_271_365 +
wa_final-clabs.
endif.
if wa_mchbh-budat < wd271.
wa_final-day_m_365 = wa_final-day_m_365 +
wa_final-clabs.
endif.
if wa_mchbh-budat > wd30.
wa_final-nodue = wa_final-nodue +
wa_final-clabs.
endif.
endif.
append wa_final to it_final.
clear : wa_final.
endloop.
loop at it_final into wa_final.
read table it_mchbh into wa_mchbh
with key matnr = wa_final-matnr
werks = wa_final-werks
lgort = wa_final-lgort
charg = wa_final-charg.
if sy-subrc = 0.
wa_final-maktx = wa_mchbh-maktx.
wa_final-mtart = wa_mchbh-mtart.
wa_final-price = wa_mchbh-price.
wa_final-budat = wa_mchbh-budat.
endif.
select single meins
from mara
into wa_final-meins
where matnr = wa_final-matnr.
wa_final-total = wa_final-day_0_30 + wa_final-day_31_60 +
wa_final-day_61_90 + wa_final-day_91_120 +
wa_final-day_121_180 + wa_final-day_181_270
+ wa_final-day_271_365 + wa_final-day_m_365
+ wa_final-nodue.
modify it_final from wa_final.

clear wa_final.
endloop.
delete adjacent duplicates from it_final
comparing matnr werks lgort charg.
delete it_final where clabs is initial.
endform.
" GET_DATA
*&---------------------------------------------------------------------*
*&
Form ALV_FIELDCAT
*&---------------------------------------------------------------------*
form alv_fieldcat .
data: counter type i.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Material'.
wa_fieldcat-no_zero = 'X'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'UOM'.
wa_fieldcat-no_zero = 'X'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Material Desc.'.
wa_fieldcat-no_zero = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'MTART'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Material Type'.

wa_fieldcat-no_zero = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Plant'.
wa_fieldcat-no_zero = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'LGORT'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Storage Loc.'.
wa_fieldcat-no_zero = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'CHARG'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Batch'.
* wa_fieldcat-no_zero = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'BUDAT'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Date Of Mfg.'.
* wa_fieldcat-no_zero = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'CLABS'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Quantity'.
* wa_fieldcat-no_zero = 'X'.

wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'PRICE'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Price'.
wa_fieldcat-no_zero = 'X'.
* wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'NODUE'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Not Due'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_0_30'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '00 - 30 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_31_60'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '31 - 60 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.

wa_fieldcat-fieldname = 'DAY_61_90'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '61 - 90 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_91_120'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '91 - 120 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_121_180'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '121 - 180 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_181_270'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '181 - 270 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_271_365'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = '271 - 365 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.

clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'DAY_M_365'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'More then 365 Days'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
counter = counter + 1.
wa_fieldcat-col_pos = counter.
wa_fieldcat-fieldname = 'TOTAL'.
wa_fieldcat-tabname = 'IT_FINAL'.
wa_fieldcat-seltext_l = 'Total'.
* wa_fieldcat-no_zero = 'X'.
wa_fieldcat-do_sum = 'X'.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
endform.
" ALV_FIELDCAT
*&---------------------------------------------------------------------*
*&
Form GET_EVENTS
*&---------------------------------------------------------------------*
form get_events .
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events
= it_events[]
exceptions
list_type_wrong = 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.
read table it_events with key name = slis_ev_top_of_page
into it_events.
if sy-subrc = 0.
move t_formname_top_of_page to it_events-form.
append it_events.
endif.

endform.
" GET_EVENTS
*&---------------------------------------------------------------------*
*&
Form SUB_COMMENT_BUILD
*&---------------------------------------------------------------------*
form sub_comment_build using i_top_of_page type slis_t_listheader.
data: ls_line type slis_listheader.
data: wrk_name type string.
data: spmon2 type string.
wrk_name = v_name2. "'Claris Lifesciences Ltd.'.
concatenate spmon+4(2) '.' spmon+0(4) into spmon2.
clear ls_line.
ls_line-typ = 'H'.
ls_line-info = wrk_name.
append ls_line to i_top_of_page.
ls_line-typ = 'H'.
ls_line-info = 'Material Ageing Report'.
append ls_line to i_top_of_page.
ls_line-typ = 'S'.
ls_line-key = 'Ageing For :-'.
ls_line-info = spmon2.
append ls_line to i_top_of_page.
endform.
" SUB_COMMENT_BUILD
*&---------------------------------------------------------------------*
*&
Form top_of_page
*&---------------------------------------------------------------------*
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_list_top_of_page.
endform.
"top_of_page
*&---------------------------------------------------------------------*
*&
Form ALV_DISPLAY
*&---------------------------------------------------------------------*
form alv_display .
gs_layout-zebra
= 'X'.
gs_layout-detail_popup
= 'X'.
gs_layout-detail_initial_lines = 'X'.
* gs_layout-colwidth_optimize = 'X'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
it_fieldcat
= it_fieldcat

it_events
= it_events[]
i_callback_program = sy-repid
is_layout
= gs_layout
it_sort
= gt_sort[]
i_save
= g_save
is_variant
= gx_variant
*
i_callback_pf_status_set = 'ZSTANDARD'
*
i_callback_user_command = 'USER_COMMAND'
tables
t_outtab
= it_final[].
.
endform.
" ALV_DISPLAY
*&---------------------------------------------------------------------*
*&
Form GET_P_DATE
*&---------------------------------------------------------------------*
form get_p_date .
if spmon is not initial.
clear : p_date,p_date1,month,year.
month = spmon+4(2).
year = spmon+0(4).
call function 'NUMBER_OF_DAYS_PER_MONTH_GET'
exporting
par_month = month
par_year = year
importing
par_days = days.
if days is not initial.
concatenate days '.' spmon+4(2) '.' spmon+0(4) into p_date1.
concatenate spmon+0(4) spmon+4(2) days into p_date.
*
p_date = p_date1.
endif.
endif.
endform.
" GET_P_DATE
*&---------------------------------------------------------------------*
*&
Form DATE_SETING
*&---------------------------------------------------------------------*
form date_seting .
clear:wd0,wd30,wd31,wd60,wd61,wd90,wd91,wd120,
wd121,wd180,wd181,wd270,wd271,wd365,wd15.
****
* 0 - 30 DAYS
wd30 = p_date.
data:wa_duration like psen_duration_dec,
w_date type endda.

clear:wa_duration,w_date.
wa_duration-caldd = '30'.
perform date_duration using wa_duration
changing w_date.
wd0 = w_date.
****
* 31 - 60 DAYS
*wd31 = wd30 - 60.
*wd60 = wd30 - 31.
clear:wa_duration,w_date.
wa_duration-caldd = '60'.
perform date_duration using wa_duration
changing w_date.
wd31 = w_date.
clear:wa_duration,w_date.
wa_duration-caldd = '31'.
perform date_duration using wa_duration
changing w_date.
wd60 = w_date.
****
* 61 - 90 DAYS
*wd61 = wd30 - 90.
*wd90 = wd30 - 61.
clear:wa_duration,w_date.
wa_duration-caldd = '90'.
perform date_duration using wa_duration
changing w_date.
wd61 = w_date.
clear:wa_duration,w_date.
wa_duration-caldd = '61'.
perform date_duration using wa_duration
changing w_date.
wd90 = w_date.

****
* 91 - 120 DAYS
*wd91 = wd30 - 120.
*wd120 = wd30 - 91.
clear:wa_duration,w_date.
wa_duration-caldd = '120'.
perform date_duration using wa_duration
changing w_date.
wd91 = w_date.
clear:wa_duration,w_date.
wa_duration-caldd = '91'.
perform date_duration using wa_duration
changing w_date.
wd120 = w_date.
****
* 121 - 180 DAYS
*wd121 = wd30 - 180.
*wd180 = wd30 - 121.
clear:wa_duration,w_date.
wa_duration-caldd = '180'.
perform date_duration using wa_duration
changing w_date.
wd121 = w_date.
clear:wa_duration,w_date.
wa_duration-caldd = '121'.
perform date_duration using wa_duration
changing w_date.
wd180 = w_date.
****
* 181 - 270 DAYS
*wd270 = wd30 - 181.
*wd181 = wd30 - 270.
clear:wa_duration,w_date.
wa_duration-caldd = '181'.

perform date_duration using wa_duration


changing w_date.
wd270 = w_date.
clear:wa_duration,w_date.
wa_duration-caldd = '270'.
perform date_duration using wa_duration
changing w_date.
wd181 = w_date.
****
* 271 - 365 DAYS
*wd365 = wd30 - 271.
*wd271 = wd30 - 365.
clear:wa_duration,w_date.
wa_duration-caldd = '271'.
perform date_duration using wa_duration
changing w_date.
wd365 = w_date.
clear:wa_duration,w_date.
wa_duration-caldd = '365'.
perform date_duration using wa_duration
changing w_date.
wd271 = w_date.
endform.
" DATE_SETING
*&---------------------------------------------------------------------*
*&
Form DATE_DURATION
*&---------------------------------------------------------------------*
form date_duration using p_wa_duration
changing p_w_date.
call function 'HR_SEN_CALE_DAYS_DATE'
exporting
id_date
= p_date
id_operator
= '-'
is_duration
= p_wa_duration
importing
ed_date
= p_w_date
exceptions
conversion_not_specified = 1
conversion_not_possible = 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.
endform.
" DATE_DURATION
*&---------------------------------------------------------------------*
*&
Form GET_COM_DTL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form get_com_dtl .
select single name2 from t001w into v_name2 where werks = s_werks-low.
endform.

" GET_COM_DTL

Você também pode gostar