11-24-2005 7:28 AM
Hi
Can any body provide me the code for report with selection screen using ALV.
Thanks in advance
Prasanna Kumar
11-24-2005 7:33 AM
Hi Prasanna,
Below is an example of ALV reporting.
*&---------------------------------------------------------------------*
*& Report ZVVF_MR028_STOCKLEDGER *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZVVF_MR028_STOCKLEDGER .
**---------------------------------------------------------------------*
* Tables
**---------------------------------------------------------------------*
TABLES: EKKO, "PURCHASING DOC. HEADER
EKPO, "PURCHASING DOC. ITEM
MAKT, "MATERIAL DISCRIPTION
LFA1, "VENDOR MASTER
RSEG, "DOC. ITEM - INCOMING INVOICE
KONV, "CONDITION (TRANSECTION DATA - CLUSTER TABLE)
EKPA, "Partner Roles in Purchasing
MSEG,
t247,
mardh,
mara.
**---------------------------------------------------------------------*
* Types Begin with TY_
**---------------------------------------------------------------------*
TYPE-POOLS slis.
TYPES : BEGIN OF ty_head,
p_date TYPE dats,
matnr LIKE mseg-matnr,
maktx LIKE makt-maktx,
openbal LIKE mardh-labst,
r_po LIKE mseg-menge,
r_prodord LIKE mseg-menge,
r_byprod LIKE mseg-menge,
r_others LIKE mseg-menge,
R_TOTAL TYPE mseg-menge,
i_prod LIKE mseg-menge,
i_cust LIKE mseg-menge,
i_costcen LIKE mseg-menge,
i_scrapping LIKE mseg-menge,
i_subcontractor LIKE mseg-menge,
i_sampling LIKE mseg-menge,
purret LIKE mseg-menge,
i_total like mseg-menge,
stock_out LIKE mseg-menge,
stock_in LIKE mseg-menge,
stock_transit LIKE mseg-menge,
m_to_m_transit LIKE mseg-menge,
phy_loss LIKE mseg-menge,
phy_gain LIKE mseg-menge,
closing_bal LIKE mseg-menge,
current_bal LIKE mseg-menge,
bwart like mseg-bwart,
werks like mseg-werks,
END OF ty_head.
types : begin of ty_docs,
matnr like mseg-matnr, "Material
budat like mkpf-budat, "Posting date
menge like mseg-menge, "Qty
xblnr like mkpf-xblnr, "Ref doc
end of ty_docs.
data : w_cnt type I.
data : w_chk type i.
TYPES: BEGIN OF TY_KONV,
KNUMV LIKE KONV-KNUMV,
KBETR LIKE KONV-KBETR,
KSCHL LIKE KONV-KSCHL,
KWERT LIKE KONV-KAWRT,
END OF TY_KONV.
TYPES: BEGIN OF TY_KBETR,
* KBETR LIKE KONV-KBETR,
KWERT LIKE KONV-KWERT,
END OF TY_KBETR.
TYPES: BEGIN OF TY_RSEG,
EBELN LIKE RSEG-EBELN,
MATNR LIKE RSEG-MATNR,
WRBTR LIKE RSEG-WRBTR,
KSCHL LIKE RSEG-KSCHL,
LIFNR LIKE RSEG-LIFNR,
END OF TY_RSEG.
TYPES: BEGIN OF TY_NAME1,
NAME1 LIKE LFA1-NAME1,
END OF TY_NAME1.
**-----------------------------------------------------------
** Each Condition and their values w.r.t different docu types
**-----------------------------------------------------------
*data: begin of temp_head occurs 0,
* kschl like konv-kschl, " Condition type
* kwert like konv-kwert, " Condition value
* end of temp_head.
*
**---------------------------------------------------------------------*
* Constants Begin with C_
**---------------------------------------------------------------------*
CONSTANTS: st_formname_top_of_page TYPE slis_formname
VALUE 'TOP_OF_PAGE-ALV'.
**---------------------------------------------------------------------*
* Data Begin with W_
**---------------------------------------------------------------------*
*-------- Declarations for ALV Grid.
DATA: it_st_list_top_of_page TYPE slis_t_listheader,
it_st_fieldcat TYPE slis_t_fieldcat_alv,
it_st_events TYPE slis_t_event,
st_layout TYPE slis_layout_alv,
s_status TYPE slis_formname VALUE 'STANDARD_ST01',
s_user_command TYPE slis_formname VALUE 'USER_COMMAND-ALV',
s_repid LIKE sy-repid,
s_save(1) TYPE c,
s_variant LIKE disvariant,
code LIKE disvariant-handle.
data : begin of it_stockclose occurs 0,
werks like s031-werks, "Plant
matnr like mara-matnr, "Material
lgort like mard-lgort, "Storage Loc
labst like mardh-labst, "Unrestricted Stock
insme like mardh-insme, "Inspection Stock
speme like mardh-speme, "Safety stock
einme like mardh-einme, "Total stock of rest batches
retme like mardh-retme, "Blocked stock returns
end of it_stockclose.
data : begin of it_finalstock occurs 0,
werks like mseg-werks, "Plant
matnr like mseg-matnr, "Material code
lgort like mard-lgort, "Sto Loc
menge like mseg-menge, "Qty
* budat like mkpf-budat, "Posting Date
end of it_finalstock.
data : begin of it_docs occurs 0,
matnr like mseg-matnr, "Material code
budat like mkpf-budat, "Posting date
bwart like mseg-bwart, "Movement type
menge like mseg-menge, "Quantity
werks like mseg-werks, "Plant
shkzg like mseg-shkzg, "Credit/debit
lgort like mseg-lgort, "Sto Loc
maktx like makt-maktx, "Material Discription
end of it_docs.
data : begin of it_mkpf occurs 0,
budat like mkpf-budat, "Posting date
mblnr like mkpf-mblnr, "Material Doc
xblnr like mkpf-xblnr, "Delivery ref no
mjahr like mkpf-mjahr, "Fiscal yr
cpudt like mkpf-cpudt,
end of it_mkpf.
data : begin of it_mseg occurs 0,
matnr like mseg-matnr, "Material
bwart like mseg-bwart, "Movement type
menge like mseg-menge, "Qty
werks like mseg-werks, "Plant
mjahr like mseg-mjahr, "Fiscal yr
shkzg like mseg-shkzg, "Credit/Debit Indicator
lgort like mard-lgort, "Sto loc
budat like mkpf-budat, "Posting date
xblnr like mkpf-xblnr, "Delivery ref
cpudt like mkpf-cpudt,
end of it_mseg.
data : begin of it_matnr occurs 0,
matnr like mara-matnr, "Material
end of it_matnr.
data : w_monat type monat. "Month number
data : w_gjahr like sy-datum, "Date
w_date_fiscal(4) type n, "Year
w_date like sy-datum, "Date
w_buper like t009b-poper, "Posting period
w_year like t009b-bdatj, "Posting date
w_datum(2) type n. "Date
**---------------------------------------------------------------------*
* Internal tables Begin with IT_
**---------------------------------------------------------------------*
DATA : IT_HEAD TYPE STANDARD TABLE OF TY_HEAD WITH HEADER LINE.
***Issues and receipts
data : it_issue type ty_docs occurs 0 with header line,
it_receipt type ty_docs occurs 0 with header line,
it_issue_date type ty_docs occurs 0 with header line,
it_receipt_date type ty_docs occurs 0 with header line.
data: w_dval like mseg-menge,
w_opbal like mseg-menge.
**----------------------------------------------------------------------
**
** WORK AREAS: Begin with WA_
**
**----------------------------------------------------------------------
**
*
*DATA: wa_HEAD type TY_HEAD.
*data: w_tkwert type p decimals 2 value 0,
* grmenge like ekpo-menge,
* w_tot_kwert type p decimals 2 value 0,
* w_tmp_kwert type p decimals 2 value 0,
* w_finalsum type p decimals 2 value 0, "#EC *
* w_finalrate type p decimals 4 value 0. "#EC *
**---------------------------------------------------------------------*
* R A N G E S
**---------------------------------------------------------------------*
ranges: r_loekz for ekko-loekz. " Deletion Indicator
ranges : r_movtype for mseg-bwart, "Movement type
r_date for sy-datum. "Date
**---------------------------------------------------------------------*
* Select Options Begin with SO_
**---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 2.
*SELECT-OPTIONS : SO_LIFNR FOR EKKO-LIFNR.
*SELECT-OPTIONS : SO_EKORG FOR EKKO-EKORG .
*SELECT-OPTIONS : SO_WERKS FOR MSEG-WERKS .
*
*SELECT-OPTIONS : SO_EBELN FOR EKKO-EBELN.
*
*SELECT-OPTIONS : SO_DATE for sy-datum obligatory no-extension.
*
*SELECT-OPTIONS : SO_EKGRP FOR EKKO-EKGRP.
*
*SELECT-OPTIONS : SO_BSART FOR EKKO-BSART DEFAULT 'NB'.
*
*SELECT-OPTIONS : SO_MATKL FOR EKPO-MATKL.
*
*SELECT-OPTIONS : SO_MATNR FOR MSEG-MATNR.
*
select-options : so_werks for mseg-werks default 'P001'. "Plant
select-options : so_lgort for mseg-lgort. " Sto. Location
select-options : so_matnr for mseg-matnr obligatory. "Material code
select-options : so_mtart for mara-mtart. "Material type
SELECT-OPTIONS : SO_MATKL FOR EKPO-MATKL. "Material Group
select-options : so_date for sy-datum obligatory no-extension.
SELECTION-SCREEN SKIP 2.
selection-screen: skip,
begin of line,
comment (15) text-034.
parameters: p_all radiobutton group del.
selection-screen comment 25(9) for field p_all.
parameters: p_del radiobutton group del.
selection-screen comment 45(12) for field p_del.
parameters: p_undel radiobutton group del default 'X'.
selection-screen comment 65(14) for field p_undel.
selection-screen end of line.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN END OF BLOCK MAIN.
**---------------------------------------------------------------------*
* Parameters Begin with PR_
**---------------------------------------------------------------------*
**---------------------------------------------------------------------*
* Initialisation
**---------------------------------------------------------------------*
INITIALIZATION.
s_repid = sy-repid.
s_save = 'A'.
perform f000_initialize_mov_type changing r_movtype[].
PERFORM eventtab_build USING it_st_events[].
PERFORM variant_init.
************************************************************************
* S T A R T O F S E L E C T I O N
************************************************************************
START-OF-SELECTION.
PERFORM initialize.
perform f001_determine_fiscal_period.
perform f002_determine_closing_stock changing it_stockclose[].
if not so_date-low+6(2) eq '01'.
perform f003_change_closing_stock changing it_stockclose[].
endif.
perform f004_determine_mat_docs changing it_mkpf[]
it_mseg[].
perform f005_receipts_issues using it_mseg[]
changing it_issue[]
it_receipt[]
it_matnr[].
*---alv
PERFORM comment_build USING it_st_list_top_of_page[].
PERFORM fieldcat USING it_st_fieldcat[].
PERFORM layout_build USING st_layout.
PERFORM reuse_alv_list_display.
END-OF-SELECTION.
*---------------
form initialize.
*---------------
clear: r_loekz.
refresh: r_loekz.
*--- Deleted PO's only
if p_del = 'X'.
r_loekz-sign = 'I'.
r_loekz-option = 'EQ'.
r_loekz-low = 'L'.
append r_loekz.
endif.
*--- UnDeleted PO's only
if p_undel = 'X'.
r_loekz-sign = 'E'.
r_loekz-option = 'EQ'.
r_loekz-low = ' '.
append r_loekz.
endif.
endform. "initialize
*&---------------------------------------------------------------------*
*& Form f000_initialize_mov_type
*&---------------------------------------------------------------------*
* Desc : Initialization of movement types
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f000_initialize_mov_type changing p_r_movtype like r_movtype[].
data : lwa_movtype like line of p_r_movtype.
lwa_movtype-sign = 'I'.
lwa_movtype-option = 'EQ'.
lwa_movtype-low = '101'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '102'.
append lwa_movtype to p_r_movtype.
***********
* Additional changes done for other movement types--> by deepak
lwa_movtype-low = '103'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '104'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '105'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '106'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '122'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '123'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '161'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '162'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '201'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '202'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '261'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '262'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '301'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '302'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '303'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '304'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '305'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '306'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '309'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '310'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '331'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '332'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '333'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '334'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '335'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '336'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '511'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '512'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '531'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '532'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '541'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '542'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '561'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '562'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '601'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '602'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '641'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '642'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '643'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '644'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '701'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '702'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '909'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '910'.
append lwa_movtype to p_r_movtype.
endform. " f000_initialize_mov_type
*&---------------------------------------------------------------------*
*& Form f001_determine_fiscal_period
*&---------------------------------------------------------------------*
* Desc Determination of fiscal period
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f001_determine_fiscal_period .
clear : w_monat,
w_gjahr,
w_date,
w_buper,
w_year.
w_monat = so_date-low+4(2).
if w_monat = '01'.
w_monat = '12'.
w_gjahr = so_date-low+0(4).
w_date_fiscal = w_gjahr+0(4) - 1.
w_gjahr = w_date_fiscal.
else.
w_monat = w_monat - 1.
w_gjahr = so_date-low+0(4).
endif.
concatenate w_gjahr w_monat '01' into w_gjahr.
*****Determines Fiscal yr and period
call function 'DATE_TO_PERIOD_CONVERT'
EXPORTING
i_date = w_gjahr
i_periv = 'V3'
IMPORTING
e_buper = w_buper
e_gjahr = w_year.
if sy-subrc <> 0.
endif.
w_datum = w_buper+1(2).
**Month text
select single ltx from t247 into t247-ltx
where spras = 'E'
and mnr = so_date-low+4(2).
endform. " f001_determine_fiscal_period
*&---------------------------------------------------------------------*
*& Form f001_determine_closing_stock
*&---------------------------------------------------------------------*
* Desc : Determination of closing stock
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f002_determine_closing_stock
changing p_it_stockclose like it_stockclose[].
data : lw_recs type i,
w_dval like mseg-menge,
w_opbal like mseg-menge.
data : begin of lit_stockclose occurs 0,
lfgja like mardh-lfgja, "Fiscal yr
lfmon like mardh-lfmon, "Period
werks like s031-werks, "Plant
matnr like mara-matnr, "Material
lgort like mseg-lgort, "Storage Loc
labst like mardh-labst, "Unrestricted Stock
end of lit_stockclose.
data : begin of lit_mard occurs 0,
matnr like mara-matnr,
werks like mseg-werks,
lgort like mseg-lgort,
end of lit_mard.
data : lwa_stockclose like line of p_it_stockclose.
select matnr werks lgort from mard
into corresponding fields of table lit_mard
where matnr in so_matnr
and werks in so_werks.
refresh it_stockclose.
clear it_stockclose.
*****Fetch Closing stock
*If the entry is found in MARD then consider the same
*else fetch the closing stock from MARDH.
loop at lit_mard.
refresh lit_stockclose.
clear lit_stockclose.
select werks matnr lgort labst
insme speme einme retme
lfgja lfmon
into corresponding fields of
table lit_stockclose
from mard
where lfmon = w_datum
and lfgja = w_year
and werks = lit_mard-werks
and matnr = lit_mard-matnr
and lgort = lit_mard-lgort.
clear lw_recs.
describe table lit_stockclose lines lw_recs.
*If no entry in MARD fetch from MARDH.
if lw_recs = 0.
select werks matnr lgort labst
insme speme einme retme
lfgja lfmon
into corresponding fields of
table lit_stockclose
from mardh
where lfmon = w_datum
and lfgja = w_year
and werks = lit_mard-werks
and matnr = lit_mard-matnr
and lgort = lit_mard-lgort.
endif.
sort lit_stockclose by lfgja lfmon descending.
read table lit_stockclose index 1.
if sy-subrc eq 0.
move-corresponding lit_stockclose to lwa_stockclose.
append lwa_stockclose to p_it_stockclose.
clear lwa_stockclose.
endif.
endloop.
endform. " f001_determine_closing_stock
*&---------------------------------------------------------------------*
*& Form f003_change_closing_stock
*&---------------------------------------------------------------------*
* Desc : Selection of the mat docs for the intermediate
* days if the selection begin date is not from
* first date of the corresponding month.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f003_change_closing_stock changing
p_it_stockclose like it_stockclose[].
data : lwa_stockclose like line of p_it_stockclose[].
refresh : r_date,
it_docs,
it_finalstock.
clear : r_date,
lwa_stockclose.
r_date-sign = 'I'.
r_date-option = 'BT'.
concatenate so_date-low+0(4)
so_date-low+4(2)
'01'
into r_date-low.
r_date-high = so_date-low - 1.
append r_date.
clear r_date.
read table r_loekz index 1.
select mkpf~budat
mseg~matnr
mseg~bwart
mseg~menge
mseg~werks
mseg~shkzg
mseg~lgort
makt~maktx
into corresponding
fields of
table it_docs
from mkpf as mkpf inner join mseg as mseg
on mkpf~mandt = mseg~mandt and
mkpf~mblnr = mseg~mblnr and
mkpf~mjahr = mseg~mjahr
inner join makt as makt
on mseg~matnr = makt~matnr
where
mseg~werks IN SO_WERKS and
mseg~matnr in so_matnr and
mkpf~budat in r_date and
mseg~bwart in r_movtype.
Clear it_docs.
loop at it_docs.
if it_docs-shkzg = 'H'.
it_docs-menge = - ( it_docs-menge ).
modify it_docs.
endif.
move-corresponding it_docs to it_finalstock.
collect it_finalstock.
clear it_finalstock.
move it_docs-maktx to it_head-maktx.
endloop.
loop at p_it_stockclose into lwa_stockclose.
read table it_finalstock with key
matnr = lwa_stockclose-matnr
werks = lwa_stockclose-werks
lgort = lwa_stockclose-lgort.
if sy-subrc eq 0.
lwa_stockclose-labst = lwa_stockclose-labst +
it_finalstock-menge.
modify p_it_stockclose from lwa_stockclose.
read table p_it_stockclose into lwa_stockclose index 1.
"with key matnr = wa_head-matnr.
"budat = wa_head-p_date.
if sy-subrc = 0.
w_dval = lwa_stockclose-labst.
ENDIF.
clear lwa_stockclose.
endif.
endloop.
endform. " f003_change_closing_stock
*&---------------------------------------------------------------------*
*& Form f004_determine_mat_docs
*&---------------------------------------------------------------------*
* DEsc : Determination of Receipts and Issues
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f004_determine_mat_docs changing p_it_mkpf like it_mkpf[]
p_it_mseg like it_mseg[].
data : lwa_mkpf like line of p_it_mkpf[],
lwa_mseg like line of p_it_mseg[],
ls_quantity type mseg-menge,
sum_issue type mseg-menge,
sum_receipt type mseg-menge,
sum_531 type mseg-menge,
sum_541 type mseg-menge,
sum_101 type mseg-menge,
sum_511 type mseg-menge,
sum_261 type mseg-menge,
sum_601 type mseg-menge,
sum_201 type mseg-menge,
sum_641 type mseg-menge,
sum_po type mseg-menge,
sum_551 type mseg-menge,
sum_331 type mseg-menge,
sum_161 type mseg-menge,
sum_305 type mseg-menge,
sum_309 type mseg-menge,
sum_701 type mseg-menge,
sum_702 type mseg-menge.
***Determination of Mat Docs
select mblnr xblnr budat mjahr cpudt from mkpf
into corresponding fields
of table it_mkpf
where budat in so_date.
***Determination of Receipts and issues
* loop at p_it_mkpf into lwa_mkpf.
*
* select mblnr matnr bwart menge werks mjahr shkzg lgort
* from mseg into corresponding
* fields of lwa_mseg
* where mblnr = lwa_mkpf-mblnr
* and mjahr = lwa_mkpf-mjahr
* and werks in so_werks
* and matnr in so_matnr
* and bwart in r_movtype.
*
* if lwa_mseg-shkzg = 'H'.
* lwa_mseg-menge = - ( lwa_mseg-menge ).
* endif.
*
*
* move : lwa_mkpf-budat to lwa_mseg-budat,
* lwa_mkpf-xblnr to lwa_mseg-xblnr,
* lwa_mkpf-cpudt to lwa_mseg-cpudt.
*
*
* append lwa_mseg to p_it_mseg.
*
* move lwa_mseg-matnr to it_head-matnr.
* move lwa_mseg-budat to it_head-p_date.
* move lwa_mseg-bwart to it_head-bwart.
* append it_head.
* clear it_head.
* clear lwa_mseg.
*
*
* endselect.
* endloop.
sort it_mkpf by budat cpudt .
loop at it_mkpf.
at new budat.
if w_opbal = SPACE.
it_head-openbal = w_dval.
w_chk = 1.
else.
it_head-openbal = w_opbal.
w_chk = 2.
endif.
endat.
if w_chk = 1.
it_head-openbal = w_dval.
elseif w_chk = 2.
it_head-openbal = w_opbal.
endif.
select Single *
from mseg
where mblnr = it_mkpf-mblnr
and mjahr = it_mkpf-mjahr
and werks in so_werks
and matnr in so_matnr
and bwart in r_movtype.
if mseg-matnr ne SPACE.
move mseg-mblnr to it_mseg-xblnr.
move mseg-matnr to it_mseg-matnr.
move mseg-bwart to IT_mseg-bwart.
move mseg-menge to it_mseg-menge.
move mseg-werks to it_mseg-werks.
move mseg-mjahr to it_mseg-mjahr.
move mseg-shkzg to it_mseg-shkzg.
move mseg-lgort to it_mseg-lgort.
if it_mseg-shkzg = 'H'.
it_mseg-menge = - ( lwa_mseg-menge ).
endif.
move : it_mkpf-budat to it_mseg-budat,
it_mkpf-xblnr to it_mseg-xblnr,
it_mkpf-cpudt to it_mseg-cpudt.
* append lwa_mseg to p_it_mseg.
append it_mseg.
* it_head-R_PO = it_head-r_po + ls_quantity.
if ( it_mseg-bwart eq '101'
or it_mseg-bwart eq '102'
or it_mseg-bwart eq '103'
or it_mseg-bwart eq '104'
or it_mseg-bwart eq '105'
or it_mseg-bwart eq '106'
or it_mseg-bwart eq '161'
or it_mseg-bwart eq '162'
or it_mseg-bwart eq '122'
or it_mseg-bwart eq '123'
or it_mseg-bwart eq '511'
or it_mseg-bwart eq '512'
or it_mseg-bwart eq '531'
or it_mseg-bwart eq '532'
or it_mseg-bwart eq '561'
or it_mseg-bwart eq '562'
or it_mseg-bwart eq '305'
or it_mseg-bwart eq '306'
or it_mseg-bwart eq '702') and it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_receipt = sum_receipt + ls_quantity.
elseif
( it_mseg-bwart eq '261'
or it_mseg-bwart eq '262'
or it_mseg-bwart eq '601'
or it_mseg-bwart eq '602'
or it_mseg-bwart eq '201'
or it_mseg-bwart eq '202'
or it_mseg-bwart eq '551'
or it_mseg-bwart eq '552'
or it_mseg-bwart eq '541'
or it_mseg-bwart eq '542'
or it_mseg-bwart eq '331'
or it_mseg-bwart eq '332'
or it_mseg-bwart eq '333'
or it_mseg-bwart eq '334'
or it_mseg-bwart eq '335'
or it_mseg-bwart eq '336'
or it_mseg-bwart eq '641'
or it_mseg-bwart eq '642'
or it_mseg-bwart eq '643'
or it_mseg-bwart eq '644'
or it_mseg-bwart eq '351'
or it_mseg-bwart eq '352'
or it_mseg-bwart eq '301'
or it_mseg-bwart eq '302'
or it_mseg-bwart eq '303'
or it_mseg-bwart eq '304'
or it_mseg-bwart eq '309'
or it_mseg-bwart eq '310'
or it_mseg-bwart eq '909'
or it_mseg-bwart eq '910'
or it_mseg-bwart eq '701') and it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_issue = sum_issue + ls_quantity.
endif.
if ( it_mseg-bwart eq '101' or it_mseg-bwart eq '102'
or it_mseg-bwart eq '103' or it_mseg-bwart eq '104'
or it_mseg-bwart eq '105' or it_mseg-bwart eq '106')
And it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_po = sum_po + ls_quantity.
endif.
if ( it_mseg-bwart eq '531'
or it_mseg-bwart eq '532') and it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_531 = sum_531 + ls_quantity.
endif.
if ( it_mseg-bwart eq '541' or it_mseg-bwart eq '542' ).
move it_mseg-menge to ls_quantity.
sum_541 = sum_541 + ls_quantity.
endif.
if ( it_mseg-bwart eq '102' or it_mseg-bwart eq '102' ).
move it_mseg-menge to ls_quantity.
sum_101 = sum_101 + ls_quantity.
endif.
if ( it_mseg-bwart eq '561' or it_mseg-bwart eq '562'
OR IT_MSEG-BWART EQ '511' OR it_mseg-bwart eq '512').
move it_mseg-menge to ls_quantity.
sum_511 = sum_511 + ls_quantity.
endif.
if ( it_mseg-bwart eq '261' or it_mseg-bwart eq '262').
move it_mseg-menge to ls_quantity.
sum_261 = sum_261 + ls_quantity.
endif.
if ( it_mseg-bwart eq '601' or it_mseg-bwart eq '602').
move it_mseg-menge to ls_quantity.
sum_601 = sum_601 + ls_quantity.
endif.
if ( it_mseg-bwart eq '201' or it_mseg-bwart eq '202').
move it_mseg-menge to ls_quantity.
sum_201 = sum_201 + ls_quantity.
endif.
if ( it_mseg-bwart eq '551' or it_mseg-bwart eq '552').
move it_mseg-menge to ls_quantity.
sum_551 = sum_551 + ls_quantity.
endif.
if ( it_mseg-bwart eq '331' or it_mseg-bwart eq '332'
or it_mseg-bwart eq '333' or it_mseg-bwart eq '334'
or it_mseg-bwart eq '335' or it_mseg-bwart eq '336').
move it_mseg-menge to ls_quantity.
sum_331 = sum_331 + ls_quantity.
endif.
if ( it_mseg-bwart eq '161' or it_mseg-bwart eq '162'
or it_mseg-bwart eq '123' or it_mseg-bwart eq '122').
move it_mseg-menge to ls_quantity.
sum_161 = sum_161 + ls_quantity.
endif.
if ( it_mseg-bwart eq '641' or it_mseg-bwart eq '642'
or it_mseg-bwart eq '643' or it_mseg-bwart eq '644'
or it_mseg-bwart eq '351' or it_mseg-bwart eq '352'
or it_mseg-bwart eq '301' or it_mseg-bwart eq '302'
or it_mseg-bwart eq '303' or it_mseg-bwart eq '304').
move it_mseg-menge to ls_quantity.
sum_641 = sum_641 + ls_quantity.
endif.
if ( it_mseg-bwart eq '305' or it_mseg-bwart eq '306').
move it_mseg-menge to ls_quantity.
sum_305 = sum_305 + ls_quantity.
endif.
if ( it_mseg-bwart eq '309' or it_mseg-bwart eq '310'
or it_mseg-bwart eq '909' or it_mseg-bwart eq '910').
move it_mseg-menge to ls_quantity.
sum_309 = sum_309 + ls_quantity.
endif.
if ( it_mseg-bwart eq '701').
move it_mseg-menge to ls_quantity.
sum_701 = sum_701 + ls_quantity.
endif.
if ( it_mseg-bwart eq '702').
move it_mseg-menge to ls_quantity.
sum_702 = sum_702 + ls_quantity.
endif.
at end of budat.
it_head-closing_bal = ( it_head-openbal + sum_receipt ) - sum_issue.
w_opbal = it_head-closing_bal.
move it_mseg-matnr to it_head-matnr.
move it_mseg-budat to it_head-p_date.
move it_mseg-bwart to it_head-bwart.
move sum_po to it_head-R_po.
move sum_101 to it_head-R_ProdOrd.
move sum_531 to it_head-R_ByProd.
move sum_511 to it_head-R_OTHERS.
move sum_receipt to it_head-r_total.
move sum_261 to it_head-I_Prod.
move sum_601 to it_head-I_cust.
move sum_201 to it_head-I_CostCen.
move sum_551 to it_head-I_Scrapping.
move sum_541 to it_head-I_subcontractor.
move sum_331 to it_head-I_Sampling.
move sum_issue to it_head-i_total.
move sum_161 to it_head-PurRet.
move sum_641 to it_head-stock_out.
move sum_305 to it_head-stock_in.
move sum_309 to it_head-M_to_M_transit.
move sum_701 to it_head-phy_loss.
move sum_702 to it_head-phy_gain.
append it_head.
w_chk = 0.
sum_issue = 0.
sum_receipt = 0.
sum_531 = 0.
sum_541 = 0.
sum_101 = 0.
SUM_511 = 0.
sum_261 = 0.
sum_601 = 0.
sum_201 = 0.
sum_po = 0.
sum_551 = 0.
sum_641 = 0.
sum_701 = 0.
sum_702 = 0.
endat.
clear it_head.
clear it_mseg.
endif.
endloop.
sort it_mseg by matnr budat bwart.
sort it_head by matnr p_date bwart.
delete ADJACENT duplicates from it_head.
endform. " f004_determine_mat_docs
*&---------------------------------------------------------------------*
*& Form f005_receipts_issues
*&---------------------------------------------------------------------*
* Desc
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f005_receipts_issues using p_it_mseg like it_mseg[]
changing p_it_issue like it_issue[]
p_it_receipt like it_receipt[]
p_it_matnr like it_matnr[].
data : lwa_mseg like line of p_it_mseg[],
lwa_issue like line of p_it_issue[],
lwa_receipt like line of p_it_receipt[],
lwa_matnr like line of p_it_matnr[],
ls_quantity type mseg-menge,
wa_head type ty_head,
lwa_stockclose like line of it_stockclose[].
* sort it_head by bwart p_date matnr.
* loop at it_head into wa_head.
*
* read table p_it_mseg into lwa_mseg with key bwart = wa_head-bwart.
* if sy-subrc = 0.
* if ( lwa_mseg-bwart eq '101'
* or lwa_mseg-bwart eq '102'
* or lwa_mseg-bwart eq '103'
* or lwa_mseg-bwart eq '104'
* or lwa_mseg-bwart eq '105'
* or lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
* .
* loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
*
* move lwa_mseg-menge to ls_quantity.
* wa_head-R_PO = ls_quantity + wa_head-R_PO.
* modify it_head from wa_head.
* endloop.
* clear ls_quantity .
* endif.
*
*
* if ( lwa_mseg-bwart eq '641'
* and lwa_mseg-shkzg = 'S' ).
* loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
* IF SY-SUBRC = 0 .
* move lwa_mseg-menge to ls_quantity.
* wa_head-stock_out = ls_quantity + wa_head-stock_out.
* modify it_head from wa_head.
* ENDIF.
* endloop.
* clear ls_quantity .
* endif.
*
* read table it_stockclose into lwa_stockclose
* with key matnr = wa_head-matnr.
* "budat = wa_head-p_date.
*
* if sy-subrc = 0.
*
* wa_head-openbal = lwa_stockclose-labst.
*
* modify it_head from wa_head.
*
* ENDIF.
*
* endif.
* endloop.
* sort it_head by bwart p_date matnr.
* loop at it_head into wa_head.
*
* read table it_mseg into lwa_mseg with key bwart = wa_head-bwart.
* if sy-subrc = 0.
* if ( lwa_mseg-bwart eq '101'
* or lwa_mseg-bwart eq '102'
* or lwa_mseg-bwart eq '103'
* or lwa_mseg-bwart eq '104'
* or lwa_mseg-bwart eq '105'
* or lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
* .
* loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
*
* move lwa_mseg-menge to ls_quantity.
* wa_head-R_PO = ls_quantity + wa_head-R_PO.
* modify it_head from wa_head.
* endloop.
* clear ls_quantity .
* endif.
*
*
* if ( lwa_mseg-bwart eq '641'
* and lwa_mseg-shkzg = 'S' ).
* loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
* IF SY-SUBRC = 0 .
* move lwa_mseg-menge to ls_quantity.
* wa_head-stock_out = ls_quantity + wa_head-stock_out.
* modify it_head from wa_head.
* ENDIF.
* endloop.
* clear ls_quantity .
* endif.
*
* read table it_stockclose into lwa_stockclose
* with key matnr = wa_head-matnr.
* "budat = wa_head-p_date.
*
* if sy-subrc = 0.
*
* wa_head-openbal = lwa_stockclose-labst.
*
* modify it_head from wa_head.
*
* ENDIF.
*
* endif.
* endloop.
endform. " f005_receipts_issues
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM comment_build USING p_it_st_list_top_of_page TYPE slis_t_listheader
.
DATA: ls_line TYPE slis_listheader.
REFRESH p_it_st_list_top_of_page.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Details of Stock Ledger'.
APPEND ls_line TO p_it_st_list_top_of_page.
ENDFORM. " COMMENT_BUILD
*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE-ALV
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM top_of_page-alv.
*
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_st_list_top_of_page.
ENDFORM. "TOP_OF_PAGE-ALV
*&---------------------------------------------------------------------*
*& Form FIELDCAT
*&---------------------------------------------------------------------*
* -->P_IT_ST_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM fieldcat USING p_it_st_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'P_DATE'.
ls_fieldcat-datatype = 'P_DATE'.
ls_fieldcat-outputlen = 18.
ls_fieldcat-seltext_m = text-002 .
* ls_fieldcat-rollname = 'MATNR'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-rollname = 'MATNR'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-outputlen = 18.
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-rollname = 'MAKTX'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-outputlen = 40.
APPEND ls_fieldcat TO p_it_st_fieldcat.
* CLEAR ls_fieldcat.
* ls_fieldcat-fieldname = 'BWART'.
* ls_fieldcat-rollname = 'BWART'.
* ls_fieldcat-ddictxt = 'L'.
* APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'OPENBAL'.
ls_fieldcat-rollname = 'OPENBAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-003 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_PO'.
ls_fieldcat-rollname = 'R_PO'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-004 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_PRODORD'.
ls_fieldcat-rollname = 'R_PRODORD'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-005 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_BYPROD'.
ls_fieldcat-rollname = 'R_BYPROD'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-006 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_OTHERS'.
ls_fieldcat-rollname = 'R_OTHERS'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-007 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_TOTAL'.
ls_fieldcat-rollname = 'R_TOTAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-008 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_PROD'.
ls_fieldcat-rollname = 'I_PROD'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-009 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_CUST'.
ls_fieldcat-rollname = 'I_CUST'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-010 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_COSTCEN'.
ls_fieldcat-rollname = 'I_COSTCEN'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-011 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_SCRAPPING'.
ls_fieldcat-rollname = 'I_SCRAPPING'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-012 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_SUBCONTRACTOR'.
ls_fieldcat-rollname = 'I_SUBCONTRACTOR'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-013 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_SAMPLING'.
ls_fieldcat-rollname = 'I_SAMPLING'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-014 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_TOTAL'.
ls_fieldcat-rollname = 'I_TOTAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-015 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PURRET'.
ls_fieldcat-rollname = 'PURRET'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-016 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'STOCK_OUT'.
ls_fieldcat-rollname = 'STOCK_OUT'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-017 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'STOCK_IN'.
ls_fieldcat-rollname = 'STOCK_IN'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-018 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'STOCK_TRANSIT'.
ls_fieldcat-rollname = 'STOCK_TRANSIT'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-019 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'M_TO_M_TRANSIT'.
ls_fieldcat-rollname = 'M_TO_M_TRANSIT'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-020 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PHY_LOSS'.
ls_fieldcat-rollname = 'PHY_LOSS'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-021 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PHY_GAIN'.
ls_fieldcat-rollname = 'PHY_GAIN'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-022 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CLOSING_BAL'.
ls_fieldcat-rollname = 'CLOSING_BAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-023 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
ENDFORM. " FIELDCAT
*&---------------------------------------------------------------------*
*& Form LAYOUT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ST_LAYOUT text
*----------------------------------------------------------------------*
FORM layout_build USING p_st_layout TYPE slis_layout_alv.
p_st_layout-box_fieldname = 'SELK'. " Checkbox
p_st_layout-get_selinfos = 'X'.
p_st_layout-f2code = 'PICK' . " Doppelklickfunktion
p_st_layout-confirmation_prompt = 'X'. "Sicherheitsabfrage
p_st_layout-key_hotspot = 'X'. "Schlüssel als Hotspot
p_st_layout-info_fieldname = 'COL'. "Zeilenfarbe
ENDFORM. " LAYOUT_BUILD
*&---------------------------------------------------------------------*
*& Form REUSE_ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM reuse_alv_list_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_program = s_repid
* I_CALLBACK_PF_STATUS_SET = S_STATUS
* I_CALLBACK_USER_COMMAND = S_USER_COMMAND
* I_STRUCTURE_NAME = ''
* IS_LAYOUT = ST_LAYOUT
it_fieldcat = it_st_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS = ST_SP_GROUP
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = S_SAVE
* IS_VARIANT = S_VARIANT
IT_EVENTS = IT_ST_EVENTS[]
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_head.
ENDFORM. " REUSE_ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_ST_EVENTS[] text
*----------------------------------------------------------------------*
FORM eventtab_build USING p_st_events TYPE slis_t_event .
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_st_events.
READ TABLE p_st_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE st_formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_st_events.
ENDIF.
READ TABLE p_st_events WITH KEY name = slis_ev_user_command
INTO ls_event.
IF sy-subrc = 0.
MOVE s_user_command TO ls_event-form.
APPEND ls_event TO p_st_events.
ENDIF.
* READ TABLE p_st_events WITH KEY name = slis_ev_pf_status_set
* INTO ls_event.
*
* IF sy-subrc = 0.
* MOVE s_status TO ls_event-form.
* APPEND ls_event TO p_st_events.
* ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form VARIANT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM variant_init .
CLEAR s_variant.
s_variant-report = s_repid.
s_variant-handle = code.
ENDFORM. " VARIANT_INIT
11-24-2005 7:33 AM
Hi Prasanna,
Below is an example of ALV reporting.
*&---------------------------------------------------------------------*
*& Report ZVVF_MR028_STOCKLEDGER *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZVVF_MR028_STOCKLEDGER .
**---------------------------------------------------------------------*
* Tables
**---------------------------------------------------------------------*
TABLES: EKKO, "PURCHASING DOC. HEADER
EKPO, "PURCHASING DOC. ITEM
MAKT, "MATERIAL DISCRIPTION
LFA1, "VENDOR MASTER
RSEG, "DOC. ITEM - INCOMING INVOICE
KONV, "CONDITION (TRANSECTION DATA - CLUSTER TABLE)
EKPA, "Partner Roles in Purchasing
MSEG,
t247,
mardh,
mara.
**---------------------------------------------------------------------*
* Types Begin with TY_
**---------------------------------------------------------------------*
TYPE-POOLS slis.
TYPES : BEGIN OF ty_head,
p_date TYPE dats,
matnr LIKE mseg-matnr,
maktx LIKE makt-maktx,
openbal LIKE mardh-labst,
r_po LIKE mseg-menge,
r_prodord LIKE mseg-menge,
r_byprod LIKE mseg-menge,
r_others LIKE mseg-menge,
R_TOTAL TYPE mseg-menge,
i_prod LIKE mseg-menge,
i_cust LIKE mseg-menge,
i_costcen LIKE mseg-menge,
i_scrapping LIKE mseg-menge,
i_subcontractor LIKE mseg-menge,
i_sampling LIKE mseg-menge,
purret LIKE mseg-menge,
i_total like mseg-menge,
stock_out LIKE mseg-menge,
stock_in LIKE mseg-menge,
stock_transit LIKE mseg-menge,
m_to_m_transit LIKE mseg-menge,
phy_loss LIKE mseg-menge,
phy_gain LIKE mseg-menge,
closing_bal LIKE mseg-menge,
current_bal LIKE mseg-menge,
bwart like mseg-bwart,
werks like mseg-werks,
END OF ty_head.
types : begin of ty_docs,
matnr like mseg-matnr, "Material
budat like mkpf-budat, "Posting date
menge like mseg-menge, "Qty
xblnr like mkpf-xblnr, "Ref doc
end of ty_docs.
data : w_cnt type I.
data : w_chk type i.
TYPES: BEGIN OF TY_KONV,
KNUMV LIKE KONV-KNUMV,
KBETR LIKE KONV-KBETR,
KSCHL LIKE KONV-KSCHL,
KWERT LIKE KONV-KAWRT,
END OF TY_KONV.
TYPES: BEGIN OF TY_KBETR,
* KBETR LIKE KONV-KBETR,
KWERT LIKE KONV-KWERT,
END OF TY_KBETR.
TYPES: BEGIN OF TY_RSEG,
EBELN LIKE RSEG-EBELN,
MATNR LIKE RSEG-MATNR,
WRBTR LIKE RSEG-WRBTR,
KSCHL LIKE RSEG-KSCHL,
LIFNR LIKE RSEG-LIFNR,
END OF TY_RSEG.
TYPES: BEGIN OF TY_NAME1,
NAME1 LIKE LFA1-NAME1,
END OF TY_NAME1.
**-----------------------------------------------------------
** Each Condition and their values w.r.t different docu types
**-----------------------------------------------------------
*data: begin of temp_head occurs 0,
* kschl like konv-kschl, " Condition type
* kwert like konv-kwert, " Condition value
* end of temp_head.
*
**---------------------------------------------------------------------*
* Constants Begin with C_
**---------------------------------------------------------------------*
CONSTANTS: st_formname_top_of_page TYPE slis_formname
VALUE 'TOP_OF_PAGE-ALV'.
**---------------------------------------------------------------------*
* Data Begin with W_
**---------------------------------------------------------------------*
*-------- Declarations for ALV Grid.
DATA: it_st_list_top_of_page TYPE slis_t_listheader,
it_st_fieldcat TYPE slis_t_fieldcat_alv,
it_st_events TYPE slis_t_event,
st_layout TYPE slis_layout_alv,
s_status TYPE slis_formname VALUE 'STANDARD_ST01',
s_user_command TYPE slis_formname VALUE 'USER_COMMAND-ALV',
s_repid LIKE sy-repid,
s_save(1) TYPE c,
s_variant LIKE disvariant,
code LIKE disvariant-handle.
data : begin of it_stockclose occurs 0,
werks like s031-werks, "Plant
matnr like mara-matnr, "Material
lgort like mard-lgort, "Storage Loc
labst like mardh-labst, "Unrestricted Stock
insme like mardh-insme, "Inspection Stock
speme like mardh-speme, "Safety stock
einme like mardh-einme, "Total stock of rest batches
retme like mardh-retme, "Blocked stock returns
end of it_stockclose.
data : begin of it_finalstock occurs 0,
werks like mseg-werks, "Plant
matnr like mseg-matnr, "Material code
lgort like mard-lgort, "Sto Loc
menge like mseg-menge, "Qty
* budat like mkpf-budat, "Posting Date
end of it_finalstock.
data : begin of it_docs occurs 0,
matnr like mseg-matnr, "Material code
budat like mkpf-budat, "Posting date
bwart like mseg-bwart, "Movement type
menge like mseg-menge, "Quantity
werks like mseg-werks, "Plant
shkzg like mseg-shkzg, "Credit/debit
lgort like mseg-lgort, "Sto Loc
maktx like makt-maktx, "Material Discription
end of it_docs.
data : begin of it_mkpf occurs 0,
budat like mkpf-budat, "Posting date
mblnr like mkpf-mblnr, "Material Doc
xblnr like mkpf-xblnr, "Delivery ref no
mjahr like mkpf-mjahr, "Fiscal yr
cpudt like mkpf-cpudt,
end of it_mkpf.
data : begin of it_mseg occurs 0,
matnr like mseg-matnr, "Material
bwart like mseg-bwart, "Movement type
menge like mseg-menge, "Qty
werks like mseg-werks, "Plant
mjahr like mseg-mjahr, "Fiscal yr
shkzg like mseg-shkzg, "Credit/Debit Indicator
lgort like mard-lgort, "Sto loc
budat like mkpf-budat, "Posting date
xblnr like mkpf-xblnr, "Delivery ref
cpudt like mkpf-cpudt,
end of it_mseg.
data : begin of it_matnr occurs 0,
matnr like mara-matnr, "Material
end of it_matnr.
data : w_monat type monat. "Month number
data : w_gjahr like sy-datum, "Date
w_date_fiscal(4) type n, "Year
w_date like sy-datum, "Date
w_buper like t009b-poper, "Posting period
w_year like t009b-bdatj, "Posting date
w_datum(2) type n. "Date
**---------------------------------------------------------------------*
* Internal tables Begin with IT_
**---------------------------------------------------------------------*
DATA : IT_HEAD TYPE STANDARD TABLE OF TY_HEAD WITH HEADER LINE.
***Issues and receipts
data : it_issue type ty_docs occurs 0 with header line,
it_receipt type ty_docs occurs 0 with header line,
it_issue_date type ty_docs occurs 0 with header line,
it_receipt_date type ty_docs occurs 0 with header line.
data: w_dval like mseg-menge,
w_opbal like mseg-menge.
**----------------------------------------------------------------------
**
** WORK AREAS: Begin with WA_
**
**----------------------------------------------------------------------
**
*
*DATA: wa_HEAD type TY_HEAD.
*data: w_tkwert type p decimals 2 value 0,
* grmenge like ekpo-menge,
* w_tot_kwert type p decimals 2 value 0,
* w_tmp_kwert type p decimals 2 value 0,
* w_finalsum type p decimals 2 value 0, "#EC *
* w_finalrate type p decimals 4 value 0. "#EC *
**---------------------------------------------------------------------*
* R A N G E S
**---------------------------------------------------------------------*
ranges: r_loekz for ekko-loekz. " Deletion Indicator
ranges : r_movtype for mseg-bwart, "Movement type
r_date for sy-datum. "Date
**---------------------------------------------------------------------*
* Select Options Begin with SO_
**---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 2.
*SELECT-OPTIONS : SO_LIFNR FOR EKKO-LIFNR.
*SELECT-OPTIONS : SO_EKORG FOR EKKO-EKORG .
*SELECT-OPTIONS : SO_WERKS FOR MSEG-WERKS .
*
*SELECT-OPTIONS : SO_EBELN FOR EKKO-EBELN.
*
*SELECT-OPTIONS : SO_DATE for sy-datum obligatory no-extension.
*
*SELECT-OPTIONS : SO_EKGRP FOR EKKO-EKGRP.
*
*SELECT-OPTIONS : SO_BSART FOR EKKO-BSART DEFAULT 'NB'.
*
*SELECT-OPTIONS : SO_MATKL FOR EKPO-MATKL.
*
*SELECT-OPTIONS : SO_MATNR FOR MSEG-MATNR.
*
select-options : so_werks for mseg-werks default 'P001'. "Plant
select-options : so_lgort for mseg-lgort. " Sto. Location
select-options : so_matnr for mseg-matnr obligatory. "Material code
select-options : so_mtart for mara-mtart. "Material type
SELECT-OPTIONS : SO_MATKL FOR EKPO-MATKL. "Material Group
select-options : so_date for sy-datum obligatory no-extension.
SELECTION-SCREEN SKIP 2.
selection-screen: skip,
begin of line,
comment (15) text-034.
parameters: p_all radiobutton group del.
selection-screen comment 25(9) for field p_all.
parameters: p_del radiobutton group del.
selection-screen comment 45(12) for field p_del.
parameters: p_undel radiobutton group del default 'X'.
selection-screen comment 65(14) for field p_undel.
selection-screen end of line.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN END OF BLOCK MAIN.
**---------------------------------------------------------------------*
* Parameters Begin with PR_
**---------------------------------------------------------------------*
**---------------------------------------------------------------------*
* Initialisation
**---------------------------------------------------------------------*
INITIALIZATION.
s_repid = sy-repid.
s_save = 'A'.
perform f000_initialize_mov_type changing r_movtype[].
PERFORM eventtab_build USING it_st_events[].
PERFORM variant_init.
************************************************************************
* S T A R T O F S E L E C T I O N
************************************************************************
START-OF-SELECTION.
PERFORM initialize.
perform f001_determine_fiscal_period.
perform f002_determine_closing_stock changing it_stockclose[].
if not so_date-low+6(2) eq '01'.
perform f003_change_closing_stock changing it_stockclose[].
endif.
perform f004_determine_mat_docs changing it_mkpf[]
it_mseg[].
perform f005_receipts_issues using it_mseg[]
changing it_issue[]
it_receipt[]
it_matnr[].
*---alv
PERFORM comment_build USING it_st_list_top_of_page[].
PERFORM fieldcat USING it_st_fieldcat[].
PERFORM layout_build USING st_layout.
PERFORM reuse_alv_list_display.
END-OF-SELECTION.
*---------------
form initialize.
*---------------
clear: r_loekz.
refresh: r_loekz.
*--- Deleted PO's only
if p_del = 'X'.
r_loekz-sign = 'I'.
r_loekz-option = 'EQ'.
r_loekz-low = 'L'.
append r_loekz.
endif.
*--- UnDeleted PO's only
if p_undel = 'X'.
r_loekz-sign = 'E'.
r_loekz-option = 'EQ'.
r_loekz-low = ' '.
append r_loekz.
endif.
endform. "initialize
*&---------------------------------------------------------------------*
*& Form f000_initialize_mov_type
*&---------------------------------------------------------------------*
* Desc : Initialization of movement types
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f000_initialize_mov_type changing p_r_movtype like r_movtype[].
data : lwa_movtype like line of p_r_movtype.
lwa_movtype-sign = 'I'.
lwa_movtype-option = 'EQ'.
lwa_movtype-low = '101'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '102'.
append lwa_movtype to p_r_movtype.
***********
* Additional changes done for other movement types--> by deepak
lwa_movtype-low = '103'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '104'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '105'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '106'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '122'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '123'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '161'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '162'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '201'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '202'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '261'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '262'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '301'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '302'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '303'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '304'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '305'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '306'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '309'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '310'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '331'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '332'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '333'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '334'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '335'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '336'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '511'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '512'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '531'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '532'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '541'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '542'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '561'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '562'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '601'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '602'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '641'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '642'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '643'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '644'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '701'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '702'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '909'.
append lwa_movtype to p_r_movtype.
lwa_movtype-low = '910'.
append lwa_movtype to p_r_movtype.
endform. " f000_initialize_mov_type
*&---------------------------------------------------------------------*
*& Form f001_determine_fiscal_period
*&---------------------------------------------------------------------*
* Desc Determination of fiscal period
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f001_determine_fiscal_period .
clear : w_monat,
w_gjahr,
w_date,
w_buper,
w_year.
w_monat = so_date-low+4(2).
if w_monat = '01'.
w_monat = '12'.
w_gjahr = so_date-low+0(4).
w_date_fiscal = w_gjahr+0(4) - 1.
w_gjahr = w_date_fiscal.
else.
w_monat = w_monat - 1.
w_gjahr = so_date-low+0(4).
endif.
concatenate w_gjahr w_monat '01' into w_gjahr.
*****Determines Fiscal yr and period
call function 'DATE_TO_PERIOD_CONVERT'
EXPORTING
i_date = w_gjahr
i_periv = 'V3'
IMPORTING
e_buper = w_buper
e_gjahr = w_year.
if sy-subrc <> 0.
endif.
w_datum = w_buper+1(2).
**Month text
select single ltx from t247 into t247-ltx
where spras = 'E'
and mnr = so_date-low+4(2).
endform. " f001_determine_fiscal_period
*&---------------------------------------------------------------------*
*& Form f001_determine_closing_stock
*&---------------------------------------------------------------------*
* Desc : Determination of closing stock
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f002_determine_closing_stock
changing p_it_stockclose like it_stockclose[].
data : lw_recs type i,
w_dval like mseg-menge,
w_opbal like mseg-menge.
data : begin of lit_stockclose occurs 0,
lfgja like mardh-lfgja, "Fiscal yr
lfmon like mardh-lfmon, "Period
werks like s031-werks, "Plant
matnr like mara-matnr, "Material
lgort like mseg-lgort, "Storage Loc
labst like mardh-labst, "Unrestricted Stock
end of lit_stockclose.
data : begin of lit_mard occurs 0,
matnr like mara-matnr,
werks like mseg-werks,
lgort like mseg-lgort,
end of lit_mard.
data : lwa_stockclose like line of p_it_stockclose.
select matnr werks lgort from mard
into corresponding fields of table lit_mard
where matnr in so_matnr
and werks in so_werks.
refresh it_stockclose.
clear it_stockclose.
*****Fetch Closing stock
*If the entry is found in MARD then consider the same
*else fetch the closing stock from MARDH.
loop at lit_mard.
refresh lit_stockclose.
clear lit_stockclose.
select werks matnr lgort labst
insme speme einme retme
lfgja lfmon
into corresponding fields of
table lit_stockclose
from mard
where lfmon = w_datum
and lfgja = w_year
and werks = lit_mard-werks
and matnr = lit_mard-matnr
and lgort = lit_mard-lgort.
clear lw_recs.
describe table lit_stockclose lines lw_recs.
*If no entry in MARD fetch from MARDH.
if lw_recs = 0.
select werks matnr lgort labst
insme speme einme retme
lfgja lfmon
into corresponding fields of
table lit_stockclose
from mardh
where lfmon = w_datum
and lfgja = w_year
and werks = lit_mard-werks
and matnr = lit_mard-matnr
and lgort = lit_mard-lgort.
endif.
sort lit_stockclose by lfgja lfmon descending.
read table lit_stockclose index 1.
if sy-subrc eq 0.
move-corresponding lit_stockclose to lwa_stockclose.
append lwa_stockclose to p_it_stockclose.
clear lwa_stockclose.
endif.
endloop.
endform. " f001_determine_closing_stock
*&---------------------------------------------------------------------*
*& Form f003_change_closing_stock
*&---------------------------------------------------------------------*
* Desc : Selection of the mat docs for the intermediate
* days if the selection begin date is not from
* first date of the corresponding month.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f003_change_closing_stock changing
p_it_stockclose like it_stockclose[].
data : lwa_stockclose like line of p_it_stockclose[].
refresh : r_date,
it_docs,
it_finalstock.
clear : r_date,
lwa_stockclose.
r_date-sign = 'I'.
r_date-option = 'BT'.
concatenate so_date-low+0(4)
so_date-low+4(2)
'01'
into r_date-low.
r_date-high = so_date-low - 1.
append r_date.
clear r_date.
read table r_loekz index 1.
select mkpf~budat
mseg~matnr
mseg~bwart
mseg~menge
mseg~werks
mseg~shkzg
mseg~lgort
makt~maktx
into corresponding
fields of
table it_docs
from mkpf as mkpf inner join mseg as mseg
on mkpf~mandt = mseg~mandt and
mkpf~mblnr = mseg~mblnr and
mkpf~mjahr = mseg~mjahr
inner join makt as makt
on mseg~matnr = makt~matnr
where
mseg~werks IN SO_WERKS and
mseg~matnr in so_matnr and
mkpf~budat in r_date and
mseg~bwart in r_movtype.
Clear it_docs.
loop at it_docs.
if it_docs-shkzg = 'H'.
it_docs-menge = - ( it_docs-menge ).
modify it_docs.
endif.
move-corresponding it_docs to it_finalstock.
collect it_finalstock.
clear it_finalstock.
move it_docs-maktx to it_head-maktx.
endloop.
loop at p_it_stockclose into lwa_stockclose.
read table it_finalstock with key
matnr = lwa_stockclose-matnr
werks = lwa_stockclose-werks
lgort = lwa_stockclose-lgort.
if sy-subrc eq 0.
lwa_stockclose-labst = lwa_stockclose-labst +
it_finalstock-menge.
modify p_it_stockclose from lwa_stockclose.
read table p_it_stockclose into lwa_stockclose index 1.
"with key matnr = wa_head-matnr.
"budat = wa_head-p_date.
if sy-subrc = 0.
w_dval = lwa_stockclose-labst.
ENDIF.
clear lwa_stockclose.
endif.
endloop.
endform. " f003_change_closing_stock
*&---------------------------------------------------------------------*
*& Form f004_determine_mat_docs
*&---------------------------------------------------------------------*
* DEsc : Determination of Receipts and Issues
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f004_determine_mat_docs changing p_it_mkpf like it_mkpf[]
p_it_mseg like it_mseg[].
data : lwa_mkpf like line of p_it_mkpf[],
lwa_mseg like line of p_it_mseg[],
ls_quantity type mseg-menge,
sum_issue type mseg-menge,
sum_receipt type mseg-menge,
sum_531 type mseg-menge,
sum_541 type mseg-menge,
sum_101 type mseg-menge,
sum_511 type mseg-menge,
sum_261 type mseg-menge,
sum_601 type mseg-menge,
sum_201 type mseg-menge,
sum_641 type mseg-menge,
sum_po type mseg-menge,
sum_551 type mseg-menge,
sum_331 type mseg-menge,
sum_161 type mseg-menge,
sum_305 type mseg-menge,
sum_309 type mseg-menge,
sum_701 type mseg-menge,
sum_702 type mseg-menge.
***Determination of Mat Docs
select mblnr xblnr budat mjahr cpudt from mkpf
into corresponding fields
of table it_mkpf
where budat in so_date.
***Determination of Receipts and issues
* loop at p_it_mkpf into lwa_mkpf.
*
* select mblnr matnr bwart menge werks mjahr shkzg lgort
* from mseg into corresponding
* fields of lwa_mseg
* where mblnr = lwa_mkpf-mblnr
* and mjahr = lwa_mkpf-mjahr
* and werks in so_werks
* and matnr in so_matnr
* and bwart in r_movtype.
*
* if lwa_mseg-shkzg = 'H'.
* lwa_mseg-menge = - ( lwa_mseg-menge ).
* endif.
*
*
* move : lwa_mkpf-budat to lwa_mseg-budat,
* lwa_mkpf-xblnr to lwa_mseg-xblnr,
* lwa_mkpf-cpudt to lwa_mseg-cpudt.
*
*
* append lwa_mseg to p_it_mseg.
*
* move lwa_mseg-matnr to it_head-matnr.
* move lwa_mseg-budat to it_head-p_date.
* move lwa_mseg-bwart to it_head-bwart.
* append it_head.
* clear it_head.
* clear lwa_mseg.
*
*
* endselect.
* endloop.
sort it_mkpf by budat cpudt .
loop at it_mkpf.
at new budat.
if w_opbal = SPACE.
it_head-openbal = w_dval.
w_chk = 1.
else.
it_head-openbal = w_opbal.
w_chk = 2.
endif.
endat.
if w_chk = 1.
it_head-openbal = w_dval.
elseif w_chk = 2.
it_head-openbal = w_opbal.
endif.
select Single *
from mseg
where mblnr = it_mkpf-mblnr
and mjahr = it_mkpf-mjahr
and werks in so_werks
and matnr in so_matnr
and bwart in r_movtype.
if mseg-matnr ne SPACE.
move mseg-mblnr to it_mseg-xblnr.
move mseg-matnr to it_mseg-matnr.
move mseg-bwart to IT_mseg-bwart.
move mseg-menge to it_mseg-menge.
move mseg-werks to it_mseg-werks.
move mseg-mjahr to it_mseg-mjahr.
move mseg-shkzg to it_mseg-shkzg.
move mseg-lgort to it_mseg-lgort.
if it_mseg-shkzg = 'H'.
it_mseg-menge = - ( lwa_mseg-menge ).
endif.
move : it_mkpf-budat to it_mseg-budat,
it_mkpf-xblnr to it_mseg-xblnr,
it_mkpf-cpudt to it_mseg-cpudt.
* append lwa_mseg to p_it_mseg.
append it_mseg.
* it_head-R_PO = it_head-r_po + ls_quantity.
if ( it_mseg-bwart eq '101'
or it_mseg-bwart eq '102'
or it_mseg-bwart eq '103'
or it_mseg-bwart eq '104'
or it_mseg-bwart eq '105'
or it_mseg-bwart eq '106'
or it_mseg-bwart eq '161'
or it_mseg-bwart eq '162'
or it_mseg-bwart eq '122'
or it_mseg-bwart eq '123'
or it_mseg-bwart eq '511'
or it_mseg-bwart eq '512'
or it_mseg-bwart eq '531'
or it_mseg-bwart eq '532'
or it_mseg-bwart eq '561'
or it_mseg-bwart eq '562'
or it_mseg-bwart eq '305'
or it_mseg-bwart eq '306'
or it_mseg-bwart eq '702') and it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_receipt = sum_receipt + ls_quantity.
elseif
( it_mseg-bwart eq '261'
or it_mseg-bwart eq '262'
or it_mseg-bwart eq '601'
or it_mseg-bwart eq '602'
or it_mseg-bwart eq '201'
or it_mseg-bwart eq '202'
or it_mseg-bwart eq '551'
or it_mseg-bwart eq '552'
or it_mseg-bwart eq '541'
or it_mseg-bwart eq '542'
or it_mseg-bwart eq '331'
or it_mseg-bwart eq '332'
or it_mseg-bwart eq '333'
or it_mseg-bwart eq '334'
or it_mseg-bwart eq '335'
or it_mseg-bwart eq '336'
or it_mseg-bwart eq '641'
or it_mseg-bwart eq '642'
or it_mseg-bwart eq '643'
or it_mseg-bwart eq '644'
or it_mseg-bwart eq '351'
or it_mseg-bwart eq '352'
or it_mseg-bwart eq '301'
or it_mseg-bwart eq '302'
or it_mseg-bwart eq '303'
or it_mseg-bwart eq '304'
or it_mseg-bwart eq '309'
or it_mseg-bwart eq '310'
or it_mseg-bwart eq '909'
or it_mseg-bwart eq '910'
or it_mseg-bwart eq '701') and it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_issue = sum_issue + ls_quantity.
endif.
if ( it_mseg-bwart eq '101' or it_mseg-bwart eq '102'
or it_mseg-bwart eq '103' or it_mseg-bwart eq '104'
or it_mseg-bwart eq '105' or it_mseg-bwart eq '106')
And it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_po = sum_po + ls_quantity.
endif.
if ( it_mseg-bwart eq '531'
or it_mseg-bwart eq '532') and it_mseg-shkzg = 'S'.
move it_mseg-menge to ls_quantity.
sum_531 = sum_531 + ls_quantity.
endif.
if ( it_mseg-bwart eq '541' or it_mseg-bwart eq '542' ).
move it_mseg-menge to ls_quantity.
sum_541 = sum_541 + ls_quantity.
endif.
if ( it_mseg-bwart eq '102' or it_mseg-bwart eq '102' ).
move it_mseg-menge to ls_quantity.
sum_101 = sum_101 + ls_quantity.
endif.
if ( it_mseg-bwart eq '561' or it_mseg-bwart eq '562'
OR IT_MSEG-BWART EQ '511' OR it_mseg-bwart eq '512').
move it_mseg-menge to ls_quantity.
sum_511 = sum_511 + ls_quantity.
endif.
if ( it_mseg-bwart eq '261' or it_mseg-bwart eq '262').
move it_mseg-menge to ls_quantity.
sum_261 = sum_261 + ls_quantity.
endif.
if ( it_mseg-bwart eq '601' or it_mseg-bwart eq '602').
move it_mseg-menge to ls_quantity.
sum_601 = sum_601 + ls_quantity.
endif.
if ( it_mseg-bwart eq '201' or it_mseg-bwart eq '202').
move it_mseg-menge to ls_quantity.
sum_201 = sum_201 + ls_quantity.
endif.
if ( it_mseg-bwart eq '551' or it_mseg-bwart eq '552').
move it_mseg-menge to ls_quantity.
sum_551 = sum_551 + ls_quantity.
endif.
if ( it_mseg-bwart eq '331' or it_mseg-bwart eq '332'
or it_mseg-bwart eq '333' or it_mseg-bwart eq '334'
or it_mseg-bwart eq '335' or it_mseg-bwart eq '336').
move it_mseg-menge to ls_quantity.
sum_331 = sum_331 + ls_quantity.
endif.
if ( it_mseg-bwart eq '161' or it_mseg-bwart eq '162'
or it_mseg-bwart eq '123' or it_mseg-bwart eq '122').
move it_mseg-menge to ls_quantity.
sum_161 = sum_161 + ls_quantity.
endif.
if ( it_mseg-bwart eq '641' or it_mseg-bwart eq '642'
or it_mseg-bwart eq '643' or it_mseg-bwart eq '644'
or it_mseg-bwart eq '351' or it_mseg-bwart eq '352'
or it_mseg-bwart eq '301' or it_mseg-bwart eq '302'
or it_mseg-bwart eq '303' or it_mseg-bwart eq '304').
move it_mseg-menge to ls_quantity.
sum_641 = sum_641 + ls_quantity.
endif.
if ( it_mseg-bwart eq '305' or it_mseg-bwart eq '306').
move it_mseg-menge to ls_quantity.
sum_305 = sum_305 + ls_quantity.
endif.
if ( it_mseg-bwart eq '309' or it_mseg-bwart eq '310'
or it_mseg-bwart eq '909' or it_mseg-bwart eq '910').
move it_mseg-menge to ls_quantity.
sum_309 = sum_309 + ls_quantity.
endif.
if ( it_mseg-bwart eq '701').
move it_mseg-menge to ls_quantity.
sum_701 = sum_701 + ls_quantity.
endif.
if ( it_mseg-bwart eq '702').
move it_mseg-menge to ls_quantity.
sum_702 = sum_702 + ls_quantity.
endif.
at end of budat.
it_head-closing_bal = ( it_head-openbal + sum_receipt ) - sum_issue.
w_opbal = it_head-closing_bal.
move it_mseg-matnr to it_head-matnr.
move it_mseg-budat to it_head-p_date.
move it_mseg-bwart to it_head-bwart.
move sum_po to it_head-R_po.
move sum_101 to it_head-R_ProdOrd.
move sum_531 to it_head-R_ByProd.
move sum_511 to it_head-R_OTHERS.
move sum_receipt to it_head-r_total.
move sum_261 to it_head-I_Prod.
move sum_601 to it_head-I_cust.
move sum_201 to it_head-I_CostCen.
move sum_551 to it_head-I_Scrapping.
move sum_541 to it_head-I_subcontractor.
move sum_331 to it_head-I_Sampling.
move sum_issue to it_head-i_total.
move sum_161 to it_head-PurRet.
move sum_641 to it_head-stock_out.
move sum_305 to it_head-stock_in.
move sum_309 to it_head-M_to_M_transit.
move sum_701 to it_head-phy_loss.
move sum_702 to it_head-phy_gain.
append it_head.
w_chk = 0.
sum_issue = 0.
sum_receipt = 0.
sum_531 = 0.
sum_541 = 0.
sum_101 = 0.
SUM_511 = 0.
sum_261 = 0.
sum_601 = 0.
sum_201 = 0.
sum_po = 0.
sum_551 = 0.
sum_641 = 0.
sum_701 = 0.
sum_702 = 0.
endat.
clear it_head.
clear it_mseg.
endif.
endloop.
sort it_mseg by matnr budat bwart.
sort it_head by matnr p_date bwart.
delete ADJACENT duplicates from it_head.
endform. " f004_determine_mat_docs
*&---------------------------------------------------------------------*
*& Form f005_receipts_issues
*&---------------------------------------------------------------------*
* Desc
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f005_receipts_issues using p_it_mseg like it_mseg[]
changing p_it_issue like it_issue[]
p_it_receipt like it_receipt[]
p_it_matnr like it_matnr[].
data : lwa_mseg like line of p_it_mseg[],
lwa_issue like line of p_it_issue[],
lwa_receipt like line of p_it_receipt[],
lwa_matnr like line of p_it_matnr[],
ls_quantity type mseg-menge,
wa_head type ty_head,
lwa_stockclose like line of it_stockclose[].
* sort it_head by bwart p_date matnr.
* loop at it_head into wa_head.
*
* read table p_it_mseg into lwa_mseg with key bwart = wa_head-bwart.
* if sy-subrc = 0.
* if ( lwa_mseg-bwart eq '101'
* or lwa_mseg-bwart eq '102'
* or lwa_mseg-bwart eq '103'
* or lwa_mseg-bwart eq '104'
* or lwa_mseg-bwart eq '105'
* or lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
* .
* loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
*
* move lwa_mseg-menge to ls_quantity.
* wa_head-R_PO = ls_quantity + wa_head-R_PO.
* modify it_head from wa_head.
* endloop.
* clear ls_quantity .
* endif.
*
*
* if ( lwa_mseg-bwart eq '641'
* and lwa_mseg-shkzg = 'S' ).
* loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
* IF SY-SUBRC = 0 .
* move lwa_mseg-menge to ls_quantity.
* wa_head-stock_out = ls_quantity + wa_head-stock_out.
* modify it_head from wa_head.
* ENDIF.
* endloop.
* clear ls_quantity .
* endif.
*
* read table it_stockclose into lwa_stockclose
* with key matnr = wa_head-matnr.
* "budat = wa_head-p_date.
*
* if sy-subrc = 0.
*
* wa_head-openbal = lwa_stockclose-labst.
*
* modify it_head from wa_head.
*
* ENDIF.
*
* endif.
* endloop.
* sort it_head by bwart p_date matnr.
* loop at it_head into wa_head.
*
* read table it_mseg into lwa_mseg with key bwart = wa_head-bwart.
* if sy-subrc = 0.
* if ( lwa_mseg-bwart eq '101'
* or lwa_mseg-bwart eq '102'
* or lwa_mseg-bwart eq '103'
* or lwa_mseg-bwart eq '104'
* or lwa_mseg-bwart eq '105'
* or lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
* .
* loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
*
* move lwa_mseg-menge to ls_quantity.
* wa_head-R_PO = ls_quantity + wa_head-R_PO.
* modify it_head from wa_head.
* endloop.
* clear ls_quantity .
* endif.
*
*
* if ( lwa_mseg-bwart eq '641'
* and lwa_mseg-shkzg = 'S' ).
* loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
* and budat = wa_head-p_date
* and bwart = wa_head-bwart.
* IF SY-SUBRC = 0 .
* move lwa_mseg-menge to ls_quantity.
* wa_head-stock_out = ls_quantity + wa_head-stock_out.
* modify it_head from wa_head.
* ENDIF.
* endloop.
* clear ls_quantity .
* endif.
*
* read table it_stockclose into lwa_stockclose
* with key matnr = wa_head-matnr.
* "budat = wa_head-p_date.
*
* if sy-subrc = 0.
*
* wa_head-openbal = lwa_stockclose-labst.
*
* modify it_head from wa_head.
*
* ENDIF.
*
* endif.
* endloop.
endform. " f005_receipts_issues
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM comment_build USING p_it_st_list_top_of_page TYPE slis_t_listheader
.
DATA: ls_line TYPE slis_listheader.
REFRESH p_it_st_list_top_of_page.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Details of Stock Ledger'.
APPEND ls_line TO p_it_st_list_top_of_page.
ENDFORM. " COMMENT_BUILD
*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE-ALV
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM top_of_page-alv.
*
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_st_list_top_of_page.
ENDFORM. "TOP_OF_PAGE-ALV
*&---------------------------------------------------------------------*
*& Form FIELDCAT
*&---------------------------------------------------------------------*
* -->P_IT_ST_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM fieldcat USING p_it_st_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'P_DATE'.
ls_fieldcat-datatype = 'P_DATE'.
ls_fieldcat-outputlen = 18.
ls_fieldcat-seltext_m = text-002 .
* ls_fieldcat-rollname = 'MATNR'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-rollname = 'MATNR'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-outputlen = 18.
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-rollname = 'MAKTX'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-outputlen = 40.
APPEND ls_fieldcat TO p_it_st_fieldcat.
* CLEAR ls_fieldcat.
* ls_fieldcat-fieldname = 'BWART'.
* ls_fieldcat-rollname = 'BWART'.
* ls_fieldcat-ddictxt = 'L'.
* APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'OPENBAL'.
ls_fieldcat-rollname = 'OPENBAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-003 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_PO'.
ls_fieldcat-rollname = 'R_PO'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-004 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_PRODORD'.
ls_fieldcat-rollname = 'R_PRODORD'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-005 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_BYPROD'.
ls_fieldcat-rollname = 'R_BYPROD'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-006 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_OTHERS'.
ls_fieldcat-rollname = 'R_OTHERS'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-007 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'R_TOTAL'.
ls_fieldcat-rollname = 'R_TOTAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-008 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_PROD'.
ls_fieldcat-rollname = 'I_PROD'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-009 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_CUST'.
ls_fieldcat-rollname = 'I_CUST'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-010 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_COSTCEN'.
ls_fieldcat-rollname = 'I_COSTCEN'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-011 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_SCRAPPING'.
ls_fieldcat-rollname = 'I_SCRAPPING'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-012 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_SUBCONTRACTOR'.
ls_fieldcat-rollname = 'I_SUBCONTRACTOR'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-013 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_SAMPLING'.
ls_fieldcat-rollname = 'I_SAMPLING'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-014 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_TOTAL'.
ls_fieldcat-rollname = 'I_TOTAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-015 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PURRET'.
ls_fieldcat-rollname = 'PURRET'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-016 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'STOCK_OUT'.
ls_fieldcat-rollname = 'STOCK_OUT'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-017 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'STOCK_IN'.
ls_fieldcat-rollname = 'STOCK_IN'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-018 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'STOCK_TRANSIT'.
ls_fieldcat-rollname = 'STOCK_TRANSIT'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-019 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'M_TO_M_TRANSIT'.
ls_fieldcat-rollname = 'M_TO_M_TRANSIT'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-020 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PHY_LOSS'.
ls_fieldcat-rollname = 'PHY_LOSS'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-021 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PHY_GAIN'.
ls_fieldcat-rollname = 'PHY_GAIN'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-022 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CLOSING_BAL'.
ls_fieldcat-rollname = 'CLOSING_BAL'.
ls_fieldcat-ddictxt = 'L'.
ls_fieldcat-seltext_m = text-023 .
APPEND ls_fieldcat TO p_it_st_fieldcat.
ENDFORM. " FIELDCAT
*&---------------------------------------------------------------------*
*& Form LAYOUT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ST_LAYOUT text
*----------------------------------------------------------------------*
FORM layout_build USING p_st_layout TYPE slis_layout_alv.
p_st_layout-box_fieldname = 'SELK'. " Checkbox
p_st_layout-get_selinfos = 'X'.
p_st_layout-f2code = 'PICK' . " Doppelklickfunktion
p_st_layout-confirmation_prompt = 'X'. "Sicherheitsabfrage
p_st_layout-key_hotspot = 'X'. "Schlüssel als Hotspot
p_st_layout-info_fieldname = 'COL'. "Zeilenfarbe
ENDFORM. " LAYOUT_BUILD
*&---------------------------------------------------------------------*
*& Form REUSE_ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM reuse_alv_list_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_program = s_repid
* I_CALLBACK_PF_STATUS_SET = S_STATUS
* I_CALLBACK_USER_COMMAND = S_USER_COMMAND
* I_STRUCTURE_NAME = ''
* IS_LAYOUT = ST_LAYOUT
it_fieldcat = it_st_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS = ST_SP_GROUP
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = S_SAVE
* IS_VARIANT = S_VARIANT
IT_EVENTS = IT_ST_EVENTS[]
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_head.
ENDFORM. " REUSE_ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_ST_EVENTS[] text
*----------------------------------------------------------------------*
FORM eventtab_build USING p_st_events TYPE slis_t_event .
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_st_events.
READ TABLE p_st_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE st_formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_st_events.
ENDIF.
READ TABLE p_st_events WITH KEY name = slis_ev_user_command
INTO ls_event.
IF sy-subrc = 0.
MOVE s_user_command TO ls_event-form.
APPEND ls_event TO p_st_events.
ENDIF.
* READ TABLE p_st_events WITH KEY name = slis_ev_pf_status_set
* INTO ls_event.
*
* IF sy-subrc = 0.
* MOVE s_status TO ls_event-form.
* APPEND ls_event TO p_st_events.
* ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form VARIANT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM variant_init .
CLEAR s_variant.
s_variant-report = s_repid.
s_variant-handle = code.
ENDFORM. " VARIANT_INIT
11-24-2005 7:33 AM
there are lot of examples in sap see se38 with Balv* and take f4 you will get lot of reports
11-24-2005 7:34 AM
Hi,
Have a look at the programs starting with BALV* in SE38 transaction, this might help,
Rgds,
11-24-2005 7:36 AM
Take a look at the program BCALV_GRID_VERIFY in your system.
There are quite a few example programs. Search using BCALV*
Regards,
Ravi