‎2008 Mar 08 4:36 PM
DATA: v_title(245) TYPE c,
v_butxt(245) TYPE c,
v_tot_recs LIKE sy-tabix,
v_total_pages LIKE sy-tabix,
v_tot_qty LIKE mseg-menge.
TABLES: mara, makt, marc, mard, mkpf, mseg, t001, t001w,t001l.
TABLES: sscrfields.
*----
*TYPE_POOLS
*----
TYPE-POOLS: slis. "ALV Display
TYPES : BEGIN OF stype_mseg_lean,
mblnr LIKE mkpf-mblnr,
mjahr LIKE mkpf-mjahr,
budat LIKE mkpf-budat,
xblnr LIKE mkpf-xblnr,
bukrs LIKE t001-bukrs,
zeile LIKE mseg-zeile,
bwart LIKE mseg-bwart,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
shkzg LIKE mseg-shkzg,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
dmbtr LIKE mseg-dmbtr,
dmbum LIKE mseg-dmbum,
insmk LIKE mseg-insmk,
aufnr LIKE mseg-aufnr,
kostl LIKE mseg-kostl,
anln1 LIKE mseg-anln1,
kdauf LIKE mseg-kdauf.
TYPES : END OF stype_mseg_lean.
TYPES: stab_mseg_lean TYPE STANDARD TABLE OF stype_mseg_lean
WITH KEY mblnr mjahr.
TYPES: BEGIN OF stype_fields,
fieldname TYPE name_feld,
END OF stype_fields.
TYPES: stab_fields TYPE STANDARD TABLE OF stype_fields
WITH KEY fieldname.
DATA: g_t_mseg_fields TYPE stab_fields.
DATA: i_mseg_lean TYPE stype_mseg_lean OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF i_show OCCURS 0,
matnr LIKE mseg-matnr,
maktx(150) type c,
meins LIKE mseg-meins,
op_stock LIKE mseg-menge,
stock_in_a_prd LIKE mseg-menge,
stock_in_a_cstn LIKE mseg-menge,
stock_in_b_issue LIKE mseg-menge,
stock_in_b_trn LIKE mseg-menge,
stock_in_r LIKE mseg-menge,
stock_toprd LIKE mseg-menge,
stock_out_a LIKE mseg-menge,
stock_out_b_issue LIKE mseg-menge,
stock_out_b_trn LIKE mseg-menge,
stock_out_r LIKE mseg-menge,
cl_stock LIKE mseg-menge,
END OF i_show.
DATA : i_show_alv LIKE i_show OCCURS 0 WITH HEADER LINE.
types: BEGIN OF t_mseg_lean_new ,
matnr LIKE mseg-matnr, "Material Number
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
dmbtr LIKE mseg-dmbtr, "Amount in Local Currency
shkzg LIKE mseg-shkzg, "Debit/Credit Indicator
dmbum LIKE mseg-dmbum, "Revaluation amount on back
menge LIKE mseg-menge, "Quantity
meins LIKE mseg-meins, "Base Unit of Measure
insmk LIKE mseg-insmk, "Stock Type
aufnr LIKE mseg-aufnr, "Order Number
kostl LIKE mseg-kostl, "Cost Center
anln1 LIKE mseg-anln1, "Main Asset Number
lgort LIKE mseg-lgort, "Storage Location
kdauf LIKE mseg-kdauf, "Sales Order Number
budat LIKE mkpf-budat, "Posting Date in the Document
xblnr LIKE mkpf-xblnr, "Reference Document Number
END OF t_mseg_lean_new.
DATA: i_mseg_lean_new type t_mseg_lean_new OCCURS 0
WITH HEADER LINE.
DATA: i_mseg_lean_cl type t_mseg_lean_new OCCURS 0
WITH HEADER LINE.
DATA: i_mseg_lean_cl_final type sorted table of t_mseg_lean_new
with unique key matnr with header line.
DATA: wa_op_stock LIKE mseg-menge,
wa_stock_in_a LIKE mseg-menge,
wa_stock_in_b LIKE mseg-menge,
wa_stock_in_r LIKE mseg-menge,
wa_stock_out_a LIKE mseg-menge,
wa_stock_out_b LIKE mseg-menge,
wa_stock_out_r LIKE mseg-menge,
wa_cl_stock LIKE mseg-menge, "closing stock
wa_stock_321s LIKE mseg-menge, "Debit
wa_stock_321h LIKE mseg-menge. "Credit
DATA: wa_stock_in_a_prd LIKE mseg-menge,
wa_stock_in_a_cstn LIKE mseg-menge,
wa_stock_in_b_issue LIKE mseg-menge,
wa_stock_in_b_trn LIKE mseg-menge,
wa_stock_out_b_issue LIKE mseg-menge,
wa_stock_out_b_trn LIKE mseg-menge.
addition ends
types: BEGIN OF t_mard ,
matnr LIKE mard-matnr,
labst LIKE mard-labst, "UNRESTRICTED STOCK
insme LIKE mard-insme, "STOCK IN QUALITY INSP
cl_stock LIKE mseg-menge, "QTY
END OF t_mard.
data: i_mard type sorted table of t_mard with unique key matnr with
header line.
DATA: v_meins TYPE mseg-meins.
DATA: i_tabb LIKE bdcdata OCCURS 0 WITH HEADER LINE,
wa_options LIKE ctu_params.
DATA: v_objnm TYPE stxh-tdname,
v_object TYPE stxh-tdobject,
v_objid TYPE stxh-tdid.
DATA: n TYPE i.
DATA : v_long_text(22) TYPE c.
DATA : V_DESC(150) TYPE C.
DATA : i_tline LIKE tline OCCURS 0
WITH HEADER LINE.
DATA : BEGIN OF i_text_tab OCCURS 0,
out_lines(150),
END OF i_text_tab.
DATA : i_text_tab1 LIKE i_text_tab OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF i_tab_text OCCURS 0,
ltext(150),
END OF i_tab_text.
DATA : BEGIN OF i_tab_text1 OCCURS 0,
ltext1(100),
END OF i_tab_text1.
SELECTION-SCREEN BEGIN OF BLOCK one WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_matnr FOR mara-matnr." OBLIGATORY.
PARAMETERS: "p_bukrs LIKE t001-bukrs OBLIGATORY,
p_werks LIKE t001w-werks OBLIGATORY.
SELECT-OPTIONS: s_lgort FOR t001l-lgort.
SELECT-OPTIONS: s_budat FOR mkpf-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK one.
PARAMETERS p_alv AS CHECKBOX . "For ALV
If no date is given at all, the range is set to the maximum
extend (1.1.0000 - 31.12.9999).
If only s_budat-low is set, it is interpreted as the day for
which the analysis is wanted --> s_budat-high is filled up.
SELECTION-SCREEN FUNCTION KEY 1.
IF s_budat-low IS INITIAL.
s_budat-low = '00000101'.
IF s_budat-high IS INITIAL.
s_budat-high = '99991231'.
ENDIF.
ELSE.
IF s_budat-high IS INITIAL.
s_budat-high = s_budat-low.
ENDIF.
ENDIF.
RANGES s_werks FOR t001w-werks.
s_werks-sign = 'I'.
s_werks-option = 'EQ'.
s_werks-low = p_werks.
APPEND s_werks.
**********ALV Setting starts***************
*ALV Data Declaration.
DATA : i_events TYPE slis_t_event,
i_list_top_of_page TYPE slis_t_listheader,
g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
i_layout TYPE slis_layout_alv,
i_fieldcat TYPE slis_t_fieldcat_alv ,
gs_print TYPE slis_print_alv,
wa_fieldcat LIKE LINE OF i_fieldcat.
DATA: v_repid TYPE sy-repid.
DATA: gs_variant LIKE disvariant,
first(01) TYPE c,
g_save.
*Initialization for ALV.
INITIALIZATION.
v_repid = sy-repid.
i_layout-detail_popup = 'X'."PERFORM layout_init USING i_layout.
PERFORM layout_init USING i_layout.
PERFORM eventtab_build USING i_events[].
gs_variant-report = v_repid.
g_save = 'A'.
*TOP-OF-PAGE, END-OF-PAGE, END-OF-LIST are called
*dynamically due to PERFORM eventtab_build
**********ALV Setting Ends***************
**For Documentation
INITIALIZATION.
MOVE text-002 TO sscrfields-functxt_01.
AT SELECTION-SCREEN.
**For Documentation
IF sscrfields-ucomm = 'FC01'.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'DOCS'
object_name = 'ZMMR0100'
object_type = 'PROG'
EXCEPTIONS
not_executed = 1
invalid_object_type = 2
OTHERS = 3.
ENDIF.
START-OF-SELECTION.
PERFORM mkpf_mseg.
PERFORM set_for_segregation.
PERFORM segregation.
PERFORM cl_stock.
PERFORM op_stock.
Added By Essam on 25.02.2008
PERFORM i_show_alv_populate.
Addition Ends
i_show[] = i_show_alv[].
END-OF-SELECTION.
**ADDED BY ESSAM FOR ALV ON 23-FEB-2008
PERFORM SHOW.
IF p_alv = 'X'.
PERFORM display_alv.
ELSE.
PERFORM display_list.
ENDIF.
**ADDITION ENDS FOR ALV
SET TITLEBAR 'ZT1' WITH s_budat-low s_budat-high.
PERFORM show.
SET PF-STATUS 'ZP1'.
TOP-OF-PAGE.
PERFORM top_page.
*AT LINE-SELECTION.
PERFORM next_screen.
&----
*& Form mkpf_mseg
&----
text
----
--> p1 text
<-- p2 text
----
FORM mkpf_mseg.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean
FROM mkpf AS mkpf JOIN mseg AS mseg
ON mkpfmandt = msegmandt AND
mkpfmblnr = msegmblnr AND
mkpfmjahr = msegmjahr
WHERE mseg~matnr IN s_matnr
AND mseg~werks IN s_werks
AND mseg~lgort IN s_lgort
AND mkpf~budat GE s_budat-low.
AND mkpf~budat IN s_budat.
*added by ish on 30.6.04
BELOW CODE CHANGED BY ESSAM ON 19-FEB-2008
SELECT msegmatnr mkpfbudat mkpfxblnr msegbwart
msegdmbtr msegshkzg
msegdmbum msegmenge msegwerks mseglgort
msegmeins mseginsmk msegaufnr msegkostl mseganln1 msegmblnr
mseg~zeile
mseg~kdauf
INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean
FROM mkpf AS mkpf JOIN mseg AS mseg
ON msegmandt = mkpfmandt AND
msegmblnr = mkpfmblnr AND
msegmjahr = mkpfmjahr
WHERE mseg~matnr IN s_matnr
AND mseg~werks IN s_werks
AND mseg~lgort IN s_lgort
AND mkpf~budat IN s_budat.
IF sy-subrc <> 0.
ENDIF.
****testing for optimization.
SELECT msegmatnr mkpfbudat mkpfxblnr msegbwart
msegdmbtr msegshkzg
msegdmbum msegmenge msegwerks mseglgort
msegmeins mseginsmk msegaufnr msegkostl mseganln1 msegmblnr
mseg~zeile
mseg~kdauf
INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean
FROM mkpf AS mkpf JOIN mseg AS mseg
ON msegmandt = mkpfmandt AND
msegmblnr = mkpfmblnr AND
msegmjahr = mkpfmjahr
WHERE mseg~matnr IN s_matnr
AND mseg~werks IN s_werks
AND mseg~lgort IN s_lgort
AND mkpf~budat IN s_budat.
****
IF sy-subrc <> 0.
ENDIF.
*adding other materials whose transaction is not made during the
*selected period
CLEAR: i_mseg_lean.
SELECT matnr werks lgort FROM mard INTO CORRESPONDING FIELDS OF
i_mseg_lean WHERE
matnr IN s_matnr AND
werks IN s_werks AND
lgort IN s_lgort .
APPEND i_mseg_lean.
ENDSELECT.
*addition ends
SORT i_mseg_lean BY matnr.
ENDFORM. " mkpf_mseg
&----
*& Form segregation
&----
text
----
--> p1 text
<-- p2 text
----
FORM segregation.
CLEAR: wa_stock_in_a_prd,wa_stock_in_a_cstn, wa_stock_in_b_issue,
wa_stock_in_b_trn,wa_stock_out_a, wa_stock_out_b_issue,
wa_stock_out_b_trn,wa_stock_in_r, wa_stock_out_r.
LOOP AT i_mseg_lean_new WHERE matnr NE ''.
xx
**As per change log(6)
IF ( ( i_mseg_lean_new-bwart = '101' OR
i_mseg_lean_new-bwart = '102' ) AND i_mseg_lean_new-lgort = ''
AND i_mseg_lean_new-kdauf NE '' ).
do not take into consideration but display the op&cl stock
**ends
****STOCK IN_A
ELSEIF ( i_mseg_lean_new-shkzg = 'S' AND i_mseg_lean_new-aufnr CA '-'
AND i_mseg_lean_new-bwart NE '261' AND
i_mseg_lean_new-bwart NE '262' )
OR ( i_mseg_lean_new-bwart = '521' AND i_mseg_lean_new-shkzg = 'S' )
OR ( i_mseg_lean_new-bwart = '309' AND
i_mseg_lean_new-xblnr CA '-' AND
i_mseg_lean_new-shkzg = 'S' )
OR ( i_mseg_lean_new-bwart = '310' AND
i_mseg_lean_new-xblnr CA '-' AND
i_mseg_lean_new-shkzg = 'S' )
**adeed as per change log(5)
OR i_mseg_lean_new-bwart = '131' OR i_mseg_lean_new-bwart = '531'.
**ends
.
wa_stock_in_a_prd = wa_stock_in_a_prd + i_mseg_lean_new-menge.
XY
ELSEIF
( i_mseg_lean_new-shkzg = 'H' AND i_mseg_lean_new-aufnr CA '-'
AND i_mseg_lean_new-bwart NE '261' AND
i_mseg_lean_new-bwart NE '262' )
OR ( i_mseg_lean_new-bwart = '522' AND i_mseg_lean_new-shkzg = 'H' )
OR ( i_mseg_lean_new-bwart = '309' AND
i_mseg_lean_new-xblnr CA '-' AND
i_mseg_lean_new-shkzg = 'H' )
OR ( i_mseg_lean_new-bwart = '310' AND
i_mseg_lean_new-xblnr CA '-' AND
i_mseg_lean_new-shkzg = 'H' )
**adeed as per change log(5)
OR i_mseg_lean_new-bwart = '132' OR i_mseg_lean_new-bwart = '532'.
**ends
wa_stock_in_a_prd = wa_stock_in_a_prd - i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-aufnr CA '-' ).
wa_stock_in_a_cstn = wa_stock_in_a_cstn + i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '262' AND i_mseg_lean_new-aufnr CA '-' ) .
wa_stock_in_a_cstn = wa_stock_in_a_cstn - i_mseg_lean_new-menge.
****STOCK IN_B
ELSEIF
i_mseg_lean_new-bwart = '101' OR
( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'S' ).
IF ( i_mseg_lean_new-bwart EQ '101' AND i_mseg_lean_new-shkzg = 'S' )
AND ( i_mseg_lean_new-kostl NE ' ' OR
i_mseg_lean_new-anln1 NE ' ' OR
( i_mseg_lean_new-aufnr NA '-' AND
i_mseg_lean_new-aufnr NE ' ' ) ).
wa_stock_out_b_issue = wa_stock_out_b_issue + i_mseg_lean_new-menge.
ENDIF.
wa_stock_in_b_issue = wa_stock_in_b_issue + i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'H' ) OR
i_mseg_lean_new-bwart = '102' OR
i_mseg_lean_new-bwart = '122' OR
i_mseg_lean_new-bwart = '922'.
wa_stock_in_b_issue = wa_stock_in_b_issue - i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'S' ) OR
( i_mseg_lean_new-bwart = '311' AND i_mseg_lean_new-shkzg = 'S' ) OR
( i_mseg_lean_new-bwart = '301' AND i_mseg_lean_new-shkzg = 'S' ) OR
i_mseg_lean_new-bwart = '701'.
wa_stock_in_b_trn = wa_stock_in_b_trn + i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '310' AND i_mseg_lean_new-shkzg = 'S' ) OR
( i_mseg_lean_new-bwart = '312' AND i_mseg_lean_new-shkzg = 'S' ) OR
( i_mseg_lean_new-bwart = '302' AND i_mseg_lean_new-shkzg = 'S' ) OR
i_mseg_lean_new-bwart = '702'.
wa_stock_in_b_trn = wa_stock_in_b_trn - i_mseg_lean_new-menge.
ELSEIF
****STOCK OUT_A
( i_mseg_lean_new-bwart = '601' AND i_mseg_lean_new-shkzg = 'H' )
OR ( i_mseg_lean_new-bwart = '654' AND i_mseg_lean_new-shkzg = 'H' )
*As per change log(7)
OR ( i_mseg_lean_new-bwart = '251' AND i_mseg_lean_new-shkzg = 'H' ).
*Ends
wa_stock_out_a = wa_stock_out_a + i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '602' AND i_mseg_lean_new-shkzg = 'S' )
OR ( i_mseg_lean_new-bwart = '653' AND i_mseg_lean_new-shkzg = 'S' )
*As per change log(7)
OR ( i_mseg_lean_new-bwart = '252' AND i_mseg_lean_new-shkzg = 'S' ).
*Ends
wa_stock_out_a = wa_stock_out_a - i_mseg_lean_new-menge.
*****STOCK OUT_B
ELSEIF
( i_mseg_lean_new-bwart = '261' OR
i_mseg_lean_new-bwart = '241' OR
i_mseg_lean_new-bwart = '201' ).
wa_stock_out_b_issue = wa_stock_out_b_issue + i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '202' OR
i_mseg_lean_new-bwart = '242' OR
i_mseg_lean_new-bwart = '262' ).
**The following line for subtraction was missed out in the
**original coding.
**Added on 16.10.2005 by Firoz.
wa_stock_out_b_issue = wa_stock_out_b_issue - i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'H' ) OR
( i_mseg_lean_new-bwart = '311' AND i_mseg_lean_new-shkzg = 'H' ) OR
( i_mseg_lean_new-bwart = '301' AND i_mseg_lean_new-shkzg = 'H' ).
wa_stock_out_b_trn = wa_stock_out_b_trn + i_mseg_lean_new-menge.
ELSEIF
( i_mseg_lean_new-bwart = '310' AND i_mseg_lean_new-shkzg = 'H' ) OR
( i_mseg_lean_new-bwart = '312' AND i_mseg_lean_new-shkzg = 'H' ) OR
( i_mseg_lean_new-bwart = '302' AND i_mseg_lean_new-shkzg = 'H' ).
wa_stock_out_b_trn = wa_stock_out_b_trn - i_mseg_lean_new-menge.
ENDIF.
*****addition Ends
v_meins = i_mseg_lean_new-meins.
AT END OF matnr.
if v_meins is initial.
SELECT SINGLE meins FROM mara INTO i_show-meins
WHERE matnr = i_mseg_lean_new-matnr.
endif.
i_show-matnr = i_mseg_lean_new-matnr.
****ADDED BY ESSAM ON 24-FEB-2008
v_long_text = i_show-matnr.
v_objnm = v_long_text.
v_object = 'MATERIAL'.
v_objid = 'GRUN'.
PERFORM read_text TABLES i_tline
USING v_objnm
v_objid
v_object.
CLEAR: v_long_text.
PERFORM split_texts TABLES i_tline i_text_tab1.
DATA : v_lines TYPE sy-tabix,
v_charno TYPE i.
DESCRIBE TABLE i_text_tab1 LINES v_lines.
IF v_lines NE 0.
DO v_lines TIMES.
READ TABLE i_text_tab1 INDEX sy-index.
IF sy-subrc = 0.
i_tab_text-ltext = i_text_tab1-out_lines.
v_desc = i_tab_text-ltext.
ENDIF.
ENDDO.
CLEAR:i_tab_text-ltext,i_tline[],v_charno,i_text_tab1[],v_lines.
ENDIF.
i_show-maktx = v_desc.
i_show-stock_in_a_prd = wa_stock_in_a_prd.
i_show-stock_in_a_cstn = wa_stock_in_a_cstn.
i_show-stock_in_b_issue = wa_stock_in_b_issue.
i_show-stock_in_b_trn = wa_stock_in_b_trn.
i_show-stock_in_r = wa_stock_in_r.
i_show-stock_toprd = wa_stock_321h - wa_stock_321s.
i_show-stock_out_a = wa_stock_out_a.
i_show-stock_out_b_issue = wa_stock_out_b_issue.
i_show-stock_out_b_trn = wa_stock_out_b_trn.
i_show-stock_out_r = wa_stock_out_r.
APPEND i_show.
CLEAR: wa_stock_in_a_prd,wa_stock_in_a_cstn,
wa_stock_in_b_issue,wa_stock_in_b_trn,
wa_stock_out_a,
wa_stock_out_b_issue, wa_stock_out_b_trn,
wa_stock_in_r, wa_stock_out_r,
wa_stock_321s, wa_stock_321h.
ENDAT.
ENDLOOP.
ENDFORM. " segregation
&----
*& Form set_for_segregation
&----
text
----
--> p1 text
<-- p2 text
----
FORM set_for_segregation.
*i_mseg_lean_new[] = i_mseg_lean[] .
LOOP AT i_mseg_lean .
i_mseg_lean_new-matnr = i_mseg_lean-matnr.
i_mseg_lean_new-budat = i_mseg_lean-budat.
i_mseg_lean_new-bwart = i_mseg_lean-bwart.
i_mseg_lean_new-dmbtr = i_mseg_lean-dmbtr.
i_mseg_lean_new-shkzg = i_mseg_lean-shkzg.
i_mseg_lean_new-dmbum = i_mseg_lean-dmbum.
i_mseg_lean_new-menge = i_mseg_lean-menge.
i_mseg_lean_new-meins = i_mseg_lean-meins.
i_mseg_lean_new-insmk = i_mseg_lean-insmk.
i_mseg_lean_new-aufnr = i_mseg_lean-aufnr.
i_mseg_lean_new-xblnr = i_mseg_lean-xblnr.
i_mseg_lean_new-kostl = i_mseg_lean-kostl.
i_mseg_lean_new-anln1 = i_mseg_lean-anln1.
i_mseg_lean_new-kdauf = i_mseg_lean-kdauf.
i_mseg_lean_new-lgort = i_mseg_lean-lgort.
APPEND i_mseg_lean_new.
ENDLOOP.
ENDFORM. " set_for_segregation
&----
*& Form display_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_list.
DATA: v_count TYPE i,
v_div TYPE i,
v_op_stock TYPE mseg-menge,
v_in_a TYPE mseg-menge,
v_in_b TYPE mseg-menge,
v_in_r TYPE mseg-menge,
v_out_a TYPE mseg-menge,
v_out_b TYPE mseg-menge,
v_out_r TYPE mseg-menge,
v_cl_stock TYPE mseg-menge,
v_toprd TYPE mseg-menge.
DATA: v_in_a_prd TYPE mseg-menge,
v_in_a_cstn TYPE mseg-menge,
v_in_b_issue TYPE mseg-menge,
v_in_b_trn TYPE mseg-menge,
v_out_b_issue TYPE mseg-menge,
v_out_b_trn TYPE mseg-menge.
LOOP AT i_show.
IF NOT i_show-op_stock IS INITIAL OR
NOT i_show-cl_stock IS INITIAL OR
NOT i_show-stock_in_a_prd IS INITIAL OR
NOT i_show-stock_in_a_cstn IS INITIAL OR
NOT i_show-stock_in_b_issue IS INITIAL OR
NOT i_show-stock_in_b_trn IS INITIAL OR
NOT i_show-stock_out_a IS INITIAL OR
NOT i_show-stock_out_b_issue IS INITIAL OR
NOT i_show-stock_out_b_trn IS INITIAL.
v_tot_recs = v_tot_recs + 1.
ENDIF.
ENDLOOP.
IF s_lgort-low IS INITIAL AND s_lgort-high IS INITIAL.
v_tot_recs = v_tot_recs + 3.
v_tot_qty = v_tot_recs MOD 51.
IF v_tot_qty NE '0'.
CLEAR v_tot_qty.
v_tot_qty = v_tot_recs / 51.
v_total_pages = v_tot_qty.
IF v_total_pages GT v_tot_qty.
v_total_pages = v_total_pages - 1.
ENDIF.
v_total_pages = v_total_pages + 1.
ELSE.
CLEAR v_tot_qty.
v_total_pages = v_tot_recs / 51.
ENDIF.
ELSE.
v_tot_recs = v_tot_recs + 3.
v_tot_qty = v_tot_recs MOD 50.
IF v_tot_qty NE '0'.
CLEAR v_tot_qty.
v_tot_qty = v_tot_recs / 50.
v_total_pages = v_tot_qty.
IF v_total_pages GT v_tot_qty.
v_total_pages = v_total_pages - 1.
ENDIF.
v_total_pages = v_total_pages + 1.
ELSE.
CLEAR v_tot_qty.
v_total_pages = v_tot_recs / 50.
ENDIF.
ENDIF.
LOOP AT i_show.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/ '|'.
pstl 15 i_show-matnr. HIDE i_show-matnr.
pstl 1 '|'. pstl 150 i_show-maktx.
pstl 1 '|'.pstl 5 i_show-meins.
pstl 1 '|'.pstr 16 i_show-op_stock.
pstl 1 '|'.pstr 16 i_show-stock_in_a_prd.
pstl 1 '|'.pstr 16 i_show-stock_in_a_cstn.
pstl 1 '|'.pstr 16 i_show-stock_in_b_issue.
pstl 1 '|'.pstr 16 i_show-stock_in_b_trn.
pstl 1 '|'.pstr 16 i_show-stock_out_a.
pstl 1 '|'.pstr 16 i_show-stock_out_b_issue.
pstl 1 '|'.pstr 16 i_show-stock_out_b_trn.
pstl 1 '|'.pstr 16 i_show-cl_stock.
pstl 1 '|'.
v_count = v_count + 1.
v_op_stock = v_op_stock + i_show-op_stock.
v_in_a_prd = v_in_a_prd + i_show-stock_in_a_prd.
v_in_a_cstn = v_in_a_cstn + i_show-stock_in_a_cstn.
v_in_b_issue = v_in_b_issue + i_show-stock_in_b_issue.
v_in_b_trn = v_in_b_trn + i_show-stock_in_b_trn.
v_in_r = v_in_r + i_show-stock_in_r.
v_toprd = v_toprd + i_show-stock_toprd.
v_out_a = v_out_a + i_show-stock_out_a.
v_out_b_issue = v_out_b_issue + i_show-stock_out_b_issue.
v_out_b_trn = v_out_b_trn + i_show-stock_out_b_trn.
v_out_r = v_out_r + i_show-stock_out_r.
v_cl_stock = v_cl_stock + i_show-cl_stock.
ENDLOOP.
ULINE AT (351).
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
WRITE:/ '|'.
pstl 15 'Totals:'. pstl 152 ''.
pstl 1 '|'.pstl 5 ''.
pstl 1 '|'.pstr 16 v_op_stock.
pstl 1 '|'.pstr 16 v_in_a_prd.
pstl 1 '|'.pstr 16 v_in_a_cstn.
pstl 1 '|'.pstr 16 v_in_b_issue.
pstl 1 '|'.pstr 16 v_in_b_trn.
pstl 1 '|'.pstr 16 v_out_a.
pstl 1 '|'.pstr 16 v_out_b_issue.
pstl 1 '|'.pstr 16 v_out_b_trn.
pstl 1 '|'.pstr 16 v_cl_stock.
pstl 1 '|'.
ULINE AT (351).
FORMAT COLOR OFF.
ENDFORM. " show
&----
*& Form cl_stock
&----
text
----
--> p1 text
<-- p2 text
----
FORM cl_stock.
op (1 a add)
*selecting the current availabe stock in the system for requested
materials
SELECT matnr sum( labst ) sum( insme ) FROM mard INTO TABLE i_mard
WHERE matnr in s_matnr and
werks IN s_werks AND
lgort IN s_lgort group by matnr.
op (1 z add)
IF s_budat-high NE '99991231' AND s_budat-high NE s_budat-low.
*added on 25.01.2004
IF s_budat-high NE '99991231' AND s_budat-high NE sy-datum.
PERFORM mkpf_mseg_closing.
ELSE.
*added on 08.02.2004
LOOP AT i_show.
i_mseg_lean_cl_final-matnr = i_show-matnr.
APPEND i_mseg_lean_cl_final.
CLEAR i_mseg_lean_cl_final.
ENDLOOP.
*addition ends
ENDIF.
CLEAR: wa_cl_stock, v_meins.
IF NOT i_mseg_lean_cl[] IS INITIAL.
LOOP AT i_mseg_lean_cl.
addition
IF i_mseg_lean_cl-bwart EQ '101'
AND ( i_mseg_lean_cl-kostl NE ' '
OR i_mseg_lean_cl-anln1 NE ' ' OR ( i_mseg_lean_cl-aufnr NA '-'
AND i_mseg_lean_cl-aufnr NE ' ' ) ).
ELSEIF i_mseg_lean_cl-shkzg = 'S'.
wa_cl_stock = wa_cl_stock + i_mseg_lean_cl-menge.
ELSEIF i_mseg_lean_cl-shkzg = 'H'.
wa_cl_stock = wa_cl_stock - i_mseg_lean_cl-menge.
ENDIF.
v_meins = i_mseg_lean_cl-meins.
AT END OF matnr.
i_mseg_lean_cl_final-matnr = i_mseg_lean_cl-matnr.
i_mseg_lean_cl_final-menge = wa_cl_stock.
i_mseg_lean_cl_final-meins = v_meins.
APPEND i_mseg_lean_cl_final.
CLEAR: wa_cl_stock.
ENDAT.
ENDLOOP.
ENDIF.
PERFORM cl_stock_final.
ENDFORM. " cl_stock
&----
*& Form mkpf_mseg_closing
&----
text
----
--> p1 text
<-- p2 text
----
FORM mkpf_mseg_closing.
selecting all transactions from max. date entered to the current
date.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean_cl
FROM mkpf AS mkpf JOIN mseg AS mseg
ON mkpfmandt = msegmandt AND
mkpfmblnr = msegmblnr AND
mkpfmjahr = msegmjahr
WHERE mseg~matnr IN s_matnr
AND mseg~werks IN s_werks
AND mseg~lgort IN s_lgort
AND mkpf~budat GT s_budat-high.
SORT i_mseg_lean_cl BY matnr.
CHANGED BY ESSAM ON 19-FEB-2008
SELECT msegmatnr mkpfbudat mkpfxblnr msegbwart
msegdmbtr msegshkzg
msegdmbum msegmenge msegwerks mseglgort
msegmeins mseginsmk msegaufnr msegkostl mseganln1 msegmblnr
mseg~zeile
mseg~kdauf
INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean_CL
FROM mkpf AS mkpf JOIN mseg AS mseg
ON mkpfmandt = msegmandt AND
mkpfmblnr = msegmblnr AND
mkpfmjahr = msegmjahr
WHERE mseg~matnr IN s_matnr
AND mseg~werks IN s_werks
AND mseg~lgort IN s_lgort
AND mkpf~budat GT s_budat-high.
SORT i_mseg_lean_cl BY matnr.
****
ENDFORM. " mkpf_mseg_closing
&----
*& Form cl_stock_final
&----
text
----
--> p1 text
<-- p2 text
----
FORM cl_stock_final.
DATA: v_index LIKE sy-tabix.
LOOP AT i_mard.
v_index = sy-tabix.
READ TABLE i_mseg_lean_cl_final with table key matnr = i_mard-matnr.
IF sy-subrc EQ 0.
i_mard-cl_stock = ( i_mard-labst + i_mard-insme ) -
i_mseg_lean_cl_final-menge.
ELSE.
i_mard-cl_stock = ( i_mard-labst + i_mard-insme ) .
ENDIF.
modify i_mard.
ENDLOOP.
ENDFORM. " cl_stock_final
&----
*& Form stock_transaction
&----
text
----
--> p1 text
<-- p2 text
----
FORM stock_transaction.
ENDFORM. " stock_transaction
&----
*& Form op_stock
&----
text
----
--> p1 text
<-- p2 text
----
FORM op_stock.
DATA: v_in_out TYPE mseg-menge.
LOOP AT i_show.
v_in_out =
( i_show-stock_in_a_prd +
i_show-stock_in_b_issue + i_show-stock_in_b_trn
) -
( i_show-stock_out_a + i_show-stock_out_b_issue +
i_show-stock_out_b_trn
+ i_show-stock_in_a_cstn ).
read table i_mard with table key matnr = i_show-matnr.
i_show-op_stock = i_mard-cl_stock - v_in_out.
i_show-cl_stock = i_mard-cl_stock.
modify i_show.
ENDLOOP.
ENDFORM. " op_stock
&----
*& Form top_page
&----
text
----
--> p1 text
<-- p2 text
----
FORM top_page.
*format color col_group intensified off.
MOVE 'STOCK LEDGER REPORT' TO v_title.
CASE p_werks.
WHEN '2100'.
v_butxt = 'National Steel and Iron Company'.
WHEN '2200'.
v_butxt = 'Al-Ittefaq Steel Products Company'.
WHEN '2300'.
v_butxt = 'Faisal Steel Products Company'.
WHEN '1000'.
v_butxt = 'Al-Tuwairqi Trading and Contracting Establishment'.
WHEN '3200'.
v_butxt = 'The International Electrical Products Company'.
WHEN '2000'.
v_butxt = 'Direct Reduced Iron Company'.
WHEN '2210'.
v_butxt = 'Al-Ittefaq Steel Products Company, Makkah'.
ENDCASE.
WRITE:/ v_title CENTERED.
WRITE:/ v_butxt CENTERED.
IF s_lgort-low NE '' AND s_lgort-high NE '' AND
s_lgort-sign EQ 'I' AND s_lgort-option EQ 'BT'.
WRITE:/108 'Storage Location:',s_lgort-low,'To', s_lgort-high.
ELSEIF s_lgort-low NE '' AND s_lgort-high EQ ''
AND s_lgort-sign EQ 'I' AND
s_lgort-option EQ 'EQ'.
WRITE:/112 'Storage Location:',s_lgort-low.
ELSEIF s_lgort-low EQ '' AND s_lgort-high NE ''
AND s_lgort-sign EQ 'I' AND s_lgort-option EQ 'BT'.
WRITE:/110 'Storage Location:', 'Upto', s_lgort-high.
ENDIF.
WRITE:/102 'Selection Date :',s_budat-low,'-',s_budat-high.
WRITE: /216 'Page', 221 sy-pagno, 231 'of',235 v_total_pages.
ULINE AT (351).
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/ '|'.pstl 15 'MATERIAL NO.'.
pstl 1 '|'.pstl 150 'DESCRIPTION'.
pstl 1 '|'.pstl 5 'UNIT'.
pstl 1 '|'.pstl 16 'OPENING STOCK'.
pstl 1 '|'. pstl 16 'PRODUCTION'.
pstl 1 '|'.
pstl 16 'CONSUMPTION'.
pstl 1 '|'.pstl 16 'STOCK_IN'.
pstl 1 '|'.pstl 16 'TRANSFER_IN'.
pstl 1 '|'.
FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.
pstl 16 'DELIVERY'.
pstl 1 '|'.pstl 16 'ISSUE'.
pstl 1 '|'.pstl 16 'TRANSFER_OUT'.
pstl 1 '|'.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
pstl 16 'CLOSING STOCK'.
pstl 1 '|'.
FORMAT COLOR OFF.
WRITE sy-uline(v_uline).
ULINE AT (351).
ENDFORM. " top_page
&----
*& Form next_screen
&----
text
----
--> p1 text
<-- p2 text
----
FORM next_screen.
IF sy-lsind = 1.
*SET PARAMETER ID 'MAT' FIELD i_show-matnr.
*SET PARAMETER ID 'WRK' FIELD p_werks.
PERFORM fill_itabb USING i_show-matnr.
wa_options-racommit = ''.
CALL TRANSACTION 'MB51' USING i_tabb OPTIONS FROM wa_options.
CLEAR: i_tabb, i_tabb[].
ENDIF.
*call transaction 'MB51' and skip first screen.
ENDFORM. " next_screen
&----
*& Form fill_itabb
&----
text
----
-->P_I_SHOW_MATNR text
----
FORM fill_itabb USING p_matnr.
DATA: v_d1(10) TYPE c,
v_d2(10) TYPE c,
v_dt(2) TYPE c, v_mn(2) TYPE c, v_yr(4) TYPE c.
v_dt = s_budat-low+6(2).
v_mn = s_budat-low+4(2).
v_yr = s_budat-low(4).
CONCATENATE v_dt v_mn v_yr INTO v_d1.
CLEAR: v_dt, v_mn, v_yr.
v_dt = s_budat-high+6(2).
v_mn = s_budat-high+4(2).
v_yr = s_budat-high(4).
CONCATENATE v_dt v_mn v_yr INTO v_d2.
CLEAR i_tabb.
i_tabb-program = 'RM07DOCS'.
i_tabb-dynpro = '1000'.
i_tabb-dynbegin = 'X'.
APPEND i_tabb.
CLEAR i_tabb.
i_tabb-fnam = 'BDC_OKCODE'.
i_tabb-fval = '=ONLI'.
APPEND i_tabb.
CLEAR i_tabb.
i_tabb-fnam = 'MATNR-LOW'.
i_tabb-fval = p_matnr.
APPEND i_tabb.
CLEAR i_tabb.
i_tabb-fnam = 'WERKS-LOW'.
i_tabb-fval = p_werks.
APPEND i_tabb.
CLEAR i_tabb.
i_tabb-fnam = 'BUDAT-LOW'.
i_tabb-fval = v_d1.
APPEND i_tabb.
CLEAR i_tabb.
i_tabb-fnam = 'BUDAT-HIGH'.
i_tabb-fval = v_d2.
APPEND i_tabb.
*******
*CLEAR i_tabb.
i_tabb-fnam = 'BDC_OKCODE'.
i_tabb-fval = '=&F8'.
APPEND i_tabb.
CLEAR i_tabb.
i_tabb-program = 'SAPMSSY0'.
i_tabb-dynpro = '0120'.
i_tabb-dynbegin = 'X'.
APPEND i_tabb.
*
*CLEAR i_tabb.
i_tabb-fnam = 'BDC_OKCODE'.
i_tabb-fval = '=&F12'.
APPEND i_tabb.
*
CLEAR i_tabb.
i_tabb-program = 'RM07DOCS'.
i_tabb-dynpro = '1000'.
i_tabb-dynbegin = 'X'.
APPEND i_tabb.
*
CLEAR i_tabb.
i_tabb-fnam = 'BDC_OKCODE'.
i_tabb-fval = '/EE'.
APPEND i_tabb.
ENDFORM. " fill_itabb
*****ADDED BY ESSAM ON 19-FEB-2008
----
FORM read_text *
----
........ *
----
--> I_TLINE *
--> V_TEXT_NAM *
--> V_TEXT_ID *
--> V_OBJECT *
----
FORM read_text TABLES i_tline
USING v_text_nam
v_text_id
v_object.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
id = v_text_id
language = 'E'
name = v_text_nam
object = v_object
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
lines = i_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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. "read_text
----
FORM split_texts *
----
........ *
----
--> I_TLINE *
----
FORM split_texts TABLES i_tline STRUCTURE tline
i_text_tab1 STRUCTURE i_text_tab.
DATA: v_lines LIKE sy-tabix,
v_text(1500)." type string.
DESCRIBE TABLE i_tline LINES
v_lines.
IF v_lines NE 0.
DO v_lines TIMES.
READ TABLE i_tline INDEX
sy-index.
CONCATENATE v_text
i_tline-tdline INTO v_text separated by space.
ENDDO.
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
textline = v_text
delimiter = ' '
outputlen = 150
IMPORTING
OUT_LINE1 =
OUT_LINE2 =
OUT_LINE3 =
TABLES
out_lines = i_text_tab1
EXCEPTIONS
outputlen_too_large = 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.
CLEAR v_lines.
ENDIF.
ENDFORM. "split_texts
******ADDED BY ESSAM ON 23-FEB-2008
&----
*& Form eventtab_build
&----
text
----
-->P_I_EVENTS[] text
----
FORM eventtab_build USING i_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
ls_event-name = slis_ev_top_of_page.
ls_event-form = 'TOP_OF_PAGE'.
APPEND ls_event TO i_events.
CLEAR ls_event.
ls_event-name = slis_ev_end_of_page.
ls_event-form = 'END_OF_PAGE'.
APPEND ls_event TO i_events.
CLEAR ls_event.
ls_event-name = slis_ev_end_of_list.
ls_event-form = 'END_OF_LIST'.
APPEND ls_event TO i_events.
CLEAR ls_event.
ENDFORM. " eventtab_build
&----
*& Form display_alv
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_alv.
PERFORM build_catalog.
***Cause of Dump when we take the preview
i_layout-coltab_fieldname = 'COLOR'.
gs_print-reserve_lines = 2.
gs_print-no_print_listinfos = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
i_buffer_active = 'X'
i_callback_program = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
is_layout = i_layout
it_fieldcat = i_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = lt_sort
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = g_save
is_variant = gs_variant
it_events = i_events[]
IT_EVENT_EXIT =
is_print = gs_print
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_show_alv
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
ENDFORM. " display_alv
&----
*& Form build_catalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_catalog.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_l = 'MATERIAL NO'.
wa_fieldcat-col_pos = 1.
wa_fieldcat-outputlen = 15.
wa_fieldcat-fix_column = ''.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-seltext_l = 'DESCRIPTION'.
wa_fieldcat-col_pos = 2.
wa_fieldcat-outputlen = 150.
wa_fieldcat-fix_column = 'X'.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-seltext_l = 'UNIT'.
wa_fieldcat-col_pos = 3.
wa_fieldcat-outputlen = 05.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'OP_STOCK'.
wa_fieldcat-seltext_l = 'OPENING STOCK'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-outputlen = 10.
wa_fieldcat-fix_column = 'X'.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'STOCK_IN_A_PRD'.
wa_fieldcat-seltext_l = 'PRODUCTION'.
wa_fieldcat-col_pos = 5.
wa_fieldcat-outputlen = 16.
wa_fieldcat-fix_column = ''.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'STOCK_IN_CSTN'.
wa_fieldcat-seltext_l = 'CONSUMPTION'.
wa_fieldcat-col_pos = 6.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'STOCK_IN_B_ISSUE'.
wa_fieldcat-seltext_l = 'STOCK_IN'.
wa_fieldcat-col_pos = 7.
wa_fieldcat-outputlen = 16.
wa_fieldcat-fix_column = ''.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'STOCK_IN_B_TRN'.
wa_fieldcat-seltext_l = 'TRANSFER_IN'.
wa_fieldcat-col_pos = 8.
wa_fieldcat-outputlen = 16.
wa_fieldcat-fix_column = ''.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'STOCK_OUT_A'.
wa_fieldcat-seltext_l = 'DELIVERY'.
wa_fieldcat-col_pos = 9.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show' .
wa_fieldcat-fieldname = 'STOCK_OUT_B_ISSUE'.
wa_fieldcat-seltext_l = 'ISSUE'.
wa_fieldcat-col_pos = 10.
wa_fieldcat-outputlen = 16.
wa_fieldcat-fix_column = ''.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show' .
wa_fieldcat-fieldname = 'STOCK_OUT_B_TRN'.
wa_fieldcat-seltext_l = 'TRANSFER OUT'.
wa_fieldcat-col_pos = 11.
wa_fieldcat-outputlen = 16.
wa_fieldcat-fix_column = ''.
APPEND wa_fieldcat TO i_fieldcat.
wa_fieldcat-tabname = 'i_show'.
wa_fieldcat-fieldname = 'CL_STOCK'.
wa_fieldcat-seltext_l = 'CLOSING STOCK'.
wa_fieldcat-col_pos = 12.
wa_fieldcat-outputlen = 16.
APPEND wa_fieldcat TO i_fieldcat.
ENDFORM. " build_catalog
*************EVENTS FORM**********
FORM top_of_page.
DATA: ls_line TYPE slis_listheader.
IF first IS INITIAL.
CLEAR ls_line.
ls_line-typ = 'H'.
WRITE: p_werks TO ls_line-info .
IF ls_line-info = '1000'.
ls_line-info = 'AL-TUWAIRQI TRDADING & CONTRCTING CO.' .
ELSEIF ls_line-info = '2100'.
ls_line-info = 'NATIONAL STEEL & IRON FACTORY'.
ELSEIF ls_line-info = '2200'.
ls_line-info = 'AL-ITTEFAQ STEEL PRODUCTS FACTORY'.
ELSEIF ls_line-info = '2300'.
ls_line-info = 'AL-FAISAL STEEL PRODUCTS FACTORY'.
ELSEIF ls_line-info = '3200'.
ls_line-info = 'TIEPCO'.
ENDIF.
APPEND ls_line TO i_list_top_of_page.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Stock Ledger Report ' .
APPEND ls_line TO i_list_top_of_page.
CLEAR ls_line.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_top_of_page
I_LOGO =
I_END_OF_LIST_GRID =
.
first = 'N'.
ELSE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_top_of_page.
ENDIF.
ENDFORM. " top_of_page
----
FORM end_of_page *
----
........ *
----
FORM end_of_page.
ULINE.
WRITE: AT 1(10) 'Page No:', sy-pagno,
AT 120 'Contd.....'.
ENDFORM. "end_of_page
----
FORM end_of_list *
----
........ *
----
FORM end_of_list.
WRITE:/ 'Page:', sy-pagno.
ENDFORM. "end_of_list
&----
*& Form layout_init
&----
text
----
-->P_I_LAYOUT text
----
FORM layout_init USING p_i_layout.
i_layout-detail_popup = 'X'.
i_layout-totals_text = 'Total:'.
i_layout-zebra = 'X'.
i_layout-subtotals_text = 'Sub Total:'.
ENDFORM. " layout_init
&----
*& Form i_show_alv_populate
&----
text
----
ADDED BY ESSAM ON 25-FEB-2008
----
FORM i_show_alv_populate.
LOOP AT I_SHOW.
IF NOT i_show-op_stock IS INITIAL OR
NOT i_show-cl_stock IS INITIAL OR
NOT i_show-stock_in_a_prd IS INITIAL OR
NOT i_show-stock_in_a_cstn IS INITIAL OR
NOT i_show-stock_in_b_issue IS INITIAL OR
NOT i_show-stock_in_b_trn IS INITIAL OR
NOT i_show-stock_out_a IS INITIAL OR
NOT i_show-stock_out_b_issue IS INITIAL OR
NOT i_show-stock_out_b_trn IS INITIAL.
i_show_alv-matnr = i_show-matnr.
i_show_alv-maktx = i_show-maktx.
i_show_alv-meins = i_show-meins.
i_show_alv-op_stock = i_show-op_stock.
i_show_alv-stock_in_a_prd = i_show-stock_in_a_prd.
i_show_alv-stock_in_a_cstn = i_show-stock_in_a_cstn.
i_show_alv-stock_in_b_issue = i_show-stock_in_b_issue.
i_show_alv-stock_in_b_trn = i_show-stock_in_b_trn.
i_show_alv-stock_in_r = i_show-stock_in_r.
i_show_alv-stock_toprd = i_show-stock_toprd.
i_show_alv-stock_out_a = i_show-stock_out_a.
i_show_alv-stock_out_b_issue = i_show-stock_out_b_issue.
i_show_alv-stock_out_b_trn = i_show-stock_out_b_trn.
i_show_alv-stock_out_r = i_show-stock_out_r.
i_show_alv-cl_stock = i_show-cl_stock.
APPEND i_show_alv.
ENDIF.
ENDLOOP.
ENDFORM. " i_show_alv_populate
please can any1 optimize this his code.
thx
u can mail me at essamsaud@yahoo.co.in
‎2008 Mar 08 5:28 PM
You want people to do your job, is that a joke? Please look for SE30 (transaction) in the forum, to see explanations process how to optimize
‎2008 Mar 09 12:03 AM
You should use SE30 or ST05 to find the problem area before posting this.
Rob
‎2012 Oct 04 5:03 AM