0% found this document useful (1 vote)
204 views25 pages

Stock Ledger

This document defines data structures and variables to store material stock data from transaction tables MKPF and MSEG. It selects stock data for specified materials, plants, storage locations, and date ranges. It then performs various calculations on the stock data, including segregating movements and calculating opening, closing, and transaction stock levels. The results are displayed in a report.

Uploaded by

shareef1188
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
204 views25 pages

Stock Ledger

This document defines data structures and variables to store material stock data from transaction tables MKPF and MSEG. It selects stock data for specified materials, plants, storage locations, and date ranges. It then performs various calculations on the stock data, including segregating movements and calculating opening, closing, and transaction stock levels. The results are displayed in a report.

Uploaded by

shareef1188
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 25

*----------------------------------------------------------------------*

REPORT yf_movtype_stock LINE-COUNT 58 LINE-SIZE 245 NO STANDARD PAGE


HEADING."146."v_uline.
DEFINE pstl.
write: at (&1) &2.
END-OF-DEFINITION.
DEFINE pstr.
write: at (&1) &2 right-justified.
END-OF-DEFINITION.
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.
TYPES : BEGIN OF stype_mseg_lean,
mblnr LIKE mkpf-mblnr,
mjahr LIKE mkpf-mjahr,
vgart LIKE mkpf-vgart,
blart LIKE mkpf-blart,
budat LIKE mkpf-budat,
cpudt LIKE mkpf-cpudt,
cputm LIKE mkpf-cputm,
usnam LIKE mkpf-usnam,
* process 'goods receipt/issue slip' as hidden field "n450596
xabln LIKE mkpf-xabln, "n450596
xblnr LIKE mkpf-xblnr,
lbbsa LIKE t156m-lbbsa,
bwagr LIKE t156s-bwagr,
bukrs LIKE t001-bukrs,
belnr LIKE bkpf-belnr,
gjahr LIKE bkpf-gjahr,
waers LIKE mseg-waers,
zeile LIKE mseg-zeile,
bwart LIKE mseg-bwart,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
charg LIKE mseg-charg,
bwtar LIKE mseg-bwtar,
kzvbr LIKE mseg-kzvbr,
kzbew LIKE mseg-kzbew,
sobkz LIKE mseg-sobkz,
kzzug LIKE mseg-kzzug,
bustm LIKE mseg-bustm,
bustw LIKE mseg-bustw,
mengu LIKE mseg-mengu,
wertu LIKE mseg-wertu,
shkzg LIKE mseg-shkzg,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
dmbtr LIKE mseg-dmbtr,
dmbum LIKE mseg-dmbum,
xauto LIKE mseg-xauto,
kzbws LIKE mseg-kzbws,
shkum LIKE mseg-shkum,
insmk LIKE mseg-insmk,
aufnr LIKE mseg-aufnr,
kostl LIKE mseg-kostl,
anln1 LIKE mseg-anln1,
kdauf LIKE mseg-kdauf,
* special flag for retail "n497992
retail(01) TYPE c, "n497992
* the following fields are used for the selection of
* the reversal movements
smbln LIKE mseg-smbln, " No. doc
sjahr LIKE mseg-sjahr, " Year "n497992
smblp LIKE mseg-smblp. " Item in doc
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: i_mseg_lean_new TYPE stype_mseg_lean OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF i_show OCCURS 0,
matnr LIKE mseg-matnr,
maktx LIKE makt-maktx,
meins LIKE mseg-meins,
op_stock LIKE mseg-menge,
* stock_in_a LIKE mseg-menge,
stock_in_a_prd LIKE mseg-menge,
stock_in_a_cstn LIKE mseg-menge,
* stock_in_b 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 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.
types: BEGIN OF t_mseg_lean_new ,
matnr LIKE mseg-matnr,
budat LIKE mkpf-budat,
bwart LIKE mseg-bwart,
dmbtr LIKE mseg-dmbtr,
shkzg LIKE mseg-shkzg,
dmbum LIKE mseg-dmbum,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
insmk LIKE mseg-insmk,
aufnr LIKE mseg-aufnr,
kostl LIKE mseg-kostl,
anln1 LIKE mseg-anln1,
xblnr LIKE mkpf-xblnr,
lgort LIKE mseg-lgort,
kdauf LIKE mseg-kdauf,
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: i_mseg_lean_cl_final type t_mseg_lean_new OCCURS 0
* 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,
wa_stock_321s LIKE mseg-menge,
wa_stock_321h LIKE mseg-menge.
*added by ishtiyaq 09.06.04
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,
insme LIKE mard-insme,
cl_stock LIKE mseg-menge,
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,
v_uline TYPE i VALUE 246. "203.
DATA: i_tabb LIKE bdcdata OCCURS 0 WITH HEADER LINE,
wa_options LIKE ctu_params.
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.
* p_lgort LIKE t001l-lgort OBLIGATORY.
SELECT-OPTIONS: s_lgort FOR t001l-lgort.
SELECT-OPTIONS: s_budat FOR mkpf-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK one.
* 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.
*RANGES s_lgort FOR t001l-lgort.
*s_lgort-sign = 'I'.
*s_lgort-option = 'EQ'.
*s_lgort-low = p_lgort.
*APPEND s_lgort.
*commented the above code to include select-option for LGORT
**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 stock_transaction.
PERFORM op_stock.
END-OF-SELECTION.
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 mkpf~mandt = mseg~mandt AND
* mkpf~mblnr = mseg~mblnr AND
* mkpf~mjahr = mseg~mjahr
* 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
SELECT mseg~matnr mkpf~budat mkpf~xblnr mseg~bwart
mseg~dmbtr mseg~shkzg
mseg~dmbum mseg~menge mseg~werks mseg~lgort
mseg~meins mseg~insmk mseg~aufnr mseg~kostl mseg~anln1 mseg~mblnr
mseg~zeile
mseg~kdauf
INTO CORRESPONDING FIELDS OF TABLE i_mseg_lean
FROM mkpf AS mkpf JOIN mseg AS mseg
ON mkpf~mandt = mseg~mandt AND
mkpf~mblnr = mseg~mblnr AND
mkpf~mjahr = mseg~mjahr
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.

IF sy-subrc <> 0.
* no material documents found
* MESSAGE e001(zmc) WITH 'No selection'." s842.
* v_flag = 1.
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 .
* SELECT SINGLE meins FROM mara INTO i_mseg_lean-meins
* WHERE matnr = i_mseg_lean-matnr.
*
* APPEND i_mseg_lean.
* ENDSELECT.
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 .
* SELECT SINGLE meins FROM mara INTO i_mseg_lean-meins
* WHERE matnr = i_mseg_lean-matnr.
**
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, wa_stock_in_b,
* wa_stock_out_a, wa_stock_out_b,
* wa_stock_in_r, wa_stock_out_r .
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 ''.
*
*****Firoz 20.04.2004 Starts
*****STOCK IN_A
* IF ( i_mseg_lean_new-bwart = '101' AND i_mseg_lean_new-insmk NE 'X'
*)
* OR ( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'S' )
* OR ( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'S' )
*.
* wa_stock_in_a = wa_stock_in_a + i_mseg_lean_new-menge.
* ELSEIF
* ( i_mseg_lean_new-bwart = '102' AND i_mseg_lean_new-insmk NE 'X'
*)
* OR ( i_mseg_lean_new-bwart = '310' AND i_mseg_lean_new-shkzg = 'H' )
*.
* wa_stock_in_a = wa_stock_in_a - i_mseg_lean_new-menge.
* ELSEIF
*****STOCK IN_B
* i_mseg_lean_new-shkzg = 'S' AND
* i_mseg_lean_new-bwart NE '602' AND i_mseg_lean_new-bwart NE '310' .
* wa_stock_in_b = wa_stock_in_b + 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 = '201' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '241' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'H' ).
* 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 = '310' AND i_mseg_lean_new-shkzg = 'S' ).
* wa_stock_out_a = wa_stock_out_a - i_mseg_lean_new-menge.
* ELSEIF
******STOCK OUT_B
* i_mseg_lean_new-shkzg = 'H' AND
* i_mseg_lean_new-bwart NE '310' .
* wa_stock_out_b = wa_stock_out_b + i_mseg_lean_new-menge.
* ENDIF.
*****Firoz 20.04.2004 Ends
*****Firoz 27.04.2004 Starts
*****STOCK IN_A
* IF ( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'S' )
* OR ( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'S' )
* .
* wa_stock_in_a = wa_stock_in_a + 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 = '321' AND i_mseg_lean_new-shkzg = 'H'
* AND i_mseg_lean_new-aufnr EQ '' )
* .
* wa_stock_in_a = wa_stock_in_a - i_mseg_lean_new-menge.
* ELSEIF
*****STOCK IN_B
* ( i_mseg_lean_new-shkzg = 'S' AND
* i_mseg_lean_new-bwart NE '602' AND
* i_mseg_lean_new-bwart NE '310' )
** and
** i_mseg_lean_new-bwart NE '101' )
** OR ( i_mseg_lean_new-bwart = '101' AND i_mseg_lean_new-aufnr EQ '')
*
*OR i_mseg_lean_new-bwart EQ '101'
*.
* wa_stock_in_b = wa_stock_in_b + i_mseg_lean_new-menge.
* ELSEIF
* ( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'H'
* AND i_mseg_lean_new-aufnr NE '' )
* OR ( i_mseg_lean_new-bwart = '102' AND i_mseg_lean_new-shkzg = 'H'
* AND i_mseg_lean_new-aufnr NE '' ).
* wa_stock_in_b = wa_stock_in_b - 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 = '201' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '241' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'H' ).
* 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 = '310' AND i_mseg_lean_new-shkzg = 'S' ).
* wa_stock_out_a = wa_stock_out_a - i_mseg_lean_new-menge.
* ELSEIF
******STOCK OUT_B
* ( i_mseg_lean_new-shkzg = 'H' AND
* i_mseg_lean_new-bwart NE '310' )
* OR ( i_mseg_lean_new-bwart = '102' AND
* i_mseg_lean_new-shkzg = 'H'
* AND i_mseg_lean_new-aufnr EQ '' ).
*
** and i_mseg_lean_new-bwart NE '321'
*
** OR
** ( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'H'
** AND i_mseg_lean_new-aufnr EQ '' ).
* wa_stock_out_b = wa_stock_out_b + i_mseg_lean_new-menge.
* ENDIF.
*****Firoz 27.04.2004 Ends
*COMMENTED BY ISHTIYAQ 09.06.04
*****Firoz 29.04.2004 Starts
*****STOCK IN_A
* IF ( i_mseg_lean_new-shkzg = 'S' AND i_mseg_lean_new-aufnr CA '-' )
* 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-xblnr(1) = 'R'
** OR i_mseg_lean_new-xblnr(1) = 'r' )
* 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-xblnr(1) = 'R'
** OR i_mseg_lean_new-xblnr(1) = 'r' )
* AND i_mseg_lean_new-shkzg = 'S' )
* .
* wa_stock_in_a = wa_stock_in_a + i_mseg_lean_new-menge.
* ELSEIF
* ( i_mseg_lean_new-shkzg = 'H' AND i_mseg_lean_new-aufnr CA '-' )
* 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-xblnr(1) = 'R'
** OR i_mseg_lean_new-xblnr(1) = 'r' )
* 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-xblnr(1) = 'R'
** OR i_mseg_lean_new-xblnr(1) = 'r' )
* AND i_mseg_lean_new-shkzg = 'H' ) .
*
*
* wa_stock_in_a = wa_stock_in_a - i_mseg_lean_new-menge.
* ELSEIF
*****STOCK IN_B
* ( i_mseg_lean_new-shkzg = 'S' AND
* i_mseg_lean_new-bwart NE '602' AND
* i_mseg_lean_new-bwart NE '310' AND
* i_mseg_lean_new-bwart NE '654' AND
* i_mseg_lean_new-bwart NE '202' AND
* i_mseg_lean_new-bwart NE '242' AND
* i_mseg_lean_new-bwart NE '262' ) AND
** ADDED BY ISHTIYAQ
* i_mseg_lean_new-bwart NE '653'.
** ADDITION ENDS
******change on 22.05.2004 by Mirza Shafiullah Baig
*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 = wa_stock_out_b + i_mseg_lean_new-menge.
*ENDIF.
*wa_stock_in_b = wa_stock_in_b + i_mseg_lean_new-menge.
** OR ( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'S' )
*
** wa_stock_in_b = wa_stock_in_b + i_mseg_lean_new-menge.
* ELSEIF
* ( i_mseg_lean_new-bwart = '122' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '922' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '302' 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 = '310' AND i_mseg_lean_new-shkzg = 'H' )
*OR ( i_mseg_lean_new-bwart = '321' AND i_mseg_lean_new-shkzg = 'H' )
*.
* wa_stock_in_b = wa_stock_in_b - i_mseg_lean_new-menge.
*
* ELSEIF
*****STOCK OUT_A
* ( i_mseg_lean_new-bwart = '601' AND i_mseg_lean_new-shkzg = 'H' )
** commented by ish
** OR ( i_mseg_lean_new-bwart = '201' AND i_mseg_lean_new-shkzg = 'H' )
** OR ( i_mseg_lean_new-bwart = '241' AND i_mseg_lean_new-shkzg = 'H' )
** OR ( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-shkzg = 'H' )
**comment ends
**added by ish
*or ( i_mseg_lean_new-bwart = '654' AND i_mseg_lean_new-shkzg = 'H' )
* .
* 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' ).
*
** OR ( i_mseg_lean_new-bwart = '654' AND i_mseg_lean_new-shkzg = 'S' ).
* wa_stock_out_a = wa_stock_out_a - i_mseg_lean_new-menge.
* ELSEIF
******STOCK OUT_B
**COMMENTED BY ISH
** i_mseg_lean_new-shkzg = 'H'
** added by ishtiyaq
*( i_mseg_lean_new-bwart NE '901' AND i_mseg_lean_new-bwart NE '902'
* AND i_mseg_lean_new-shkzg = 'H' )
** addtion ends
* OR ( i_mseg_lean_new-bwart = '309' AND i_mseg_lean_new-shkzg = 'H' )
*
* OR ( i_mseg_lean_new-bwart = '201' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '241' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-shkzg = 'H' ).
* wa_stock_out_b = wa_stock_out_b + i_mseg_lean_new-menge.
* ELSEIF
** ADDED BY ISH
*( i_mseg_lean_new-bwart NE '901' AND i_mseg_lean_new-bwart NE '902'
* AND i_mseg_lean_new-shkzg = 'S' )
** ADDITION ENDS
*OR ( i_mseg_lean_new-bwart = '202' AND i_mseg_lean_new-shkzg = 'S' )
* OR ( i_mseg_lean_new-bwart = '242' AND i_mseg_lean_new-shkzg = 'S' )
* OR ( i_mseg_lean_new-bwart = '262' AND i_mseg_lean_new-shkzg = 'S' )
* OR ( i_mseg_lean_new-bwart = '310' AND i_mseg_lean_new-shkzg = 'S' )
*.
* wa_stock_out_b = wa_stock_out_b - i_mseg_lean_new-menge.
*
* ENDIF.
*****Firoz 29.04.2004 Ends
* ISHTIYAQ COMMENT ENDS

**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.
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.
* IF ( i_mseg_lean_new-shkzg = 'S' AND i_mseg_lean_new-aufnr CA '-'
* and i_mseg_lean_new-bwart = '521' )
* 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' ).
*
* wa_stock_in_a_prd = wa_stock_in_a_prd + i_mseg_lean_new-menge.
*
* ELSEIF
* ( i_mseg_lean_new-shkzg = 'H' AND i_mseg_lean_new-aufnr CA '-'
*and i_mseg_lean_new-bwart = '522' )
* 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' ).
*
* 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' )
* commented by ish
* OR ( i_mseg_lean_new-bwart = '201' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '241' AND i_mseg_lean_new-shkzg = 'H' )
* OR ( i_mseg_lean_new-bwart = '261' AND i_mseg_lean_new-shkzg = 'H' )
*comment ends
*added by ish
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.
i_show-maktx = ''.
* i_show-meins = v_meins.
* i_show-op_stock = ''.
* i_show-stock_in_a = wa_stock_in_a.
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 = wa_stock_in_b.
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 = wa_stock_out_b.
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.
* i_show-cl_stock = ''.
APPEND i_show.
* CLEAR: wa_stock_in_a, wa_stock_in_b,
* wa_stock_out_a, wa_stock_out_b,
* wa_stock_in_r, wa_stock_out_r,
* wa_stock_321s, wa_stock_321h.
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.
* i_mseg_lean_new-xblnr = i_mseg_lean-xblnr.
APPEND i_mseg_lean_new.
ENDLOOP.
*****
* LOOP AT i_mseg_lean_new.
* AT END OF matnr.
* i_show-matnr = i_mseg_lean_new-matnr.
* APPEND i_show.
* ENDAT.
* ENDLOOP.
*****
ENDFORM. " set_for_segregation
*&---------------------------------------------------------------------*
*& Form show
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show.
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 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 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 IS INITIAL.
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.
* v_div = v_count MOD 2 .
* IF v_div = 0.
IF NOT i_show-op_stock IS INITIAL OR
NOT i_show-cl_stock IS INITIAL OR
* NOT i_show-stock_in_a 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 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 IS INITIAL.
NOT i_show-stock_out_b_issue IS INITIAL OR
NOT i_show-stock_out_b_trn IS INITIAL.
* IF v_count = 52.
* WRITE sy-uline(v_uline).
* v_count = 0.
* ENDIF.
SELECT single maktx FROM makt into i_show-maktx WHERE matnr = i_show-matn
r AND
spras = 'E'.
* SELECT * FROM makt into corresponding fields of i_show up to 1 rows WHERE
matnr = i_show-matnr AND
* spras = 'E'.
*
* endselect.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/ '|'.
pstl 15 i_show-matnr. HIDE i_show-matnr.
pstl 1 '|'.pstl 44 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 = v_in_a + i_show-stock_in_a.
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 = v_in_b + i_show-stock_in_b.
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 = v_out_b + i_show-stock_out_b.
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.
FORMAT COLOR OFF.
ENDIF.
ENDLOOP.
WRITE sy-uline(v_uline).
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
WRITE:/ '|'.
pstl 15 'Totals:'. pstl 46 ''.
pstl 1 '|'.pstl 5 ''.
pstl 1 '|'.pstr 16 v_op_stock.
* pstl 1 '|'.pstr 16 v_in_a.
pstl 1 '|'.pstr 16 v_in_a_prd.
pstl 1 '|'.pstr 16 v_in_a_cstn.
* pstl 1 '|'.pstr 16 v_in_b.
pstl 1 '|'.pstr 16 v_in_b_issue.
pstl 1 '|'.pstr 16 v_in_b_trn.
* pstl 1 '|'.pstr 16 v_toprd.
* pstl 1 '|'.pstr 16 v_in_r.
pstl 1 '|'.pstr 16 v_out_a.
* pstl 1 '|'.pstr 16 v_out_b.
pstl 1 '|'.pstr 16 v_out_b_issue.
pstl 1 '|'.pstr 16 v_out_b_trn.
* pstl 1 '|'.pstr 16 v_out_r.
pstl 1 '|'.pstr 16 v_cl_stock.
pstl 1 '|'.
WRITE sy-uline(v_uline).
FORMAT COLOR OFF.
ENDFORM. " show
*&---------------------------------------------------------------------*
*& Form cl_stock
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM cl_stock.
***** op (2 a comment)

* CLEAR: i_mard[].
* SELECT matnr labst insme FROM mard INTO TABLE i_mard
* FOR ALL ENTRIES IN i_show
* WHERE matnr = i_show-matnr AND
* werks IN s_werks AND
* lgort IN s_lgort.
**added on 15.02.2004 to consider select-option for LGORT
* DATA: v_labst_all LIKE mard-labst, v_insme_all LIKE mard-insme.
* DATA: i_mard_new LIKE LINE OF i_mard OCCURS 0 WITH HEADER LINE.
* LOOP AT i_mard.
* v_labst_all = v_labst_all + i_mard-labst.
* v_insme_all = v_insme_all + i_mard-insme.
* AT END OF matnr.
* i_mard_new-matnr = i_mard-matnr.
* i_mard_new-labst = v_labst_all.
* i_mard_new-insme = v_insme_all.
* CLEAR: v_labst_all,v_insme_all.
* APPEND i_mard_new.
* ENDAT.
* ENDLOOP.
* CLEAR: i_mard, i_mard[].
* i_mard[] = i_mard_new[].
* CLEAR: i_mard_new, i_mard_new[].
*addition ends
*****op (2 z comment)

***** 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.
* i_mseg_lean_cl_final[] = i_mseg_lean_new[].
*added on 08.02.2004 and commented the above code
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 mkpf~mandt = mseg~mandt AND
mkpf~mblnr = mseg~mblnr AND
mkpf~mjahr = mseg~mjahr
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 INDEX sy-tabix.
*****op (3 a added)
READ TABLE i_mseg_lean_cl_final with table key matnr = i_mard-matnr.
* WITH KEY matnr = i_mard-matnr.
*****op (3 z added)
* IF sy-subrc EQ 0.
* i_show-cl_stock = ( i_mard-labst + i_mard-insme ) -
* i_mseg_lean_cl_final-menge.
* ELSE.
* i_show-cl_stock = ( i_mard-labst + i_mard-insme ) .
* ENDIF.
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.
**added on 14.02.2004 and commented the above code
**to take into account only the unrestricted stock.
* IF sy-subrc EQ 0.
* i_show-cl_stock = i_mard-labst -
* i_mseg_lean_cl_final-menge.
* ELSE.
* i_show-cl_stock = i_mard-labst .
* ENDIF.
**addition ends
*commented no of entries in i_mard and i_show r different.
* MODIFY i_show INDEX v_index TRANSPORTING cl_stock.
* MODIFY i_show TRANSPORTING cl_stock
* WHERE matnr = i_mard-matnr.
* CLEAR: i_show.
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 + i_show-stock_in_b + i_show-stock_out_r ) -
** ( i_show-stock_out_a + i_show-stock_out_b + i_show-stock_in_r ).
* ( i_show-stock_out_a + i_show-stock_out_b +
* i_show-stock_in_r + i_show-stock_toprd ).
*i_show-stock_in_a_cstn
*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_r ) -
*( i_show-stock_out_a + i_show-stock_out_b_issue
* + i_show-stock_out_b_trn
* + i_show-stock_in_a_cstn +
* i_show-stock_in_r + i_show-stock_toprd + i_show-stock_in_a_cstn ).
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.
* i_show-op_stock = i_show-cl_stock - v_in_out.
* MODIFY i_show INDEX sy-tabix TRANSPORTING op_stock.
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.
* WRITE:/117 'Plant :',p_werks.
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:/ 'Storage Location:',s_lgort-low.
WRITE:/102 'Selection Date :',s_budat-low,'-',s_budat-high.
WRITE: /216 'Page', 221 sy-pagno, 231 'of',235 v_total_pages.
* format color off.
*write:/.
WRITE:/ sy-uline(v_uline).
* FORMAT COLOR COL_group INTENSIFIED on.
*added by ishtiyaq
*FORMAT COLOR COL_HEADING INTENSIFIED ON.
*write: /01 '|',19 '|',57 '|',65 '|',84 '|'.
*FORMAT COLOR COL_HEADING INTENSIFIED ON.
*WRITE: 118 'STOCK IN',160 '|',
* 185 'STOCK OUT', 217 '|'.
* FORMAT COLOR OFF.
*WRITE: 236 '|'.
*WRITE: /01 '|','MATERIAL NO.',20 'DESCRIPTION',
* 60 'OPENING STOC',
* 84 SY-ULINE(134),'CLOSING STOCK',236 '|'.
*WRITE:/ sy-uline(v_uline).
*WRITE:/01 '|'.
*FORMAT COLOR COL_HEADING INTENSIFIED ON.
*WRITE: 03 'MATERIAL NO.',19 '|',
* 21 'DESCRIPTION',
* 57 '|',
* 59 'UNIT',
* 217 '|',
* 219 'CLOSING STOCK'.
*FORMAT COLOR OFF.
*
* WRITE: 236 '|'.

* WRITE:/ '|'.pstl 15 ''.


* pstl 1 '|'.pstl 35 ''.
* pstl 1 '|'.pstl 5 ''.
* pstl 1 '|'.pstl 16 ''.
* pstl 1 '|'.
* WRITE: /1 '|MATERIAL NO.',
* 20 '|UNIT',
* 25 '|OPENING STOCK',
* 43 '|'.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/ '|'.pstl 15 'MATERIAL NO.'.
pstl 1 '|'.pstl 44 'DESCRIPTION'.
pstl 1 '|'.pstl 5 'UNIT'.
pstl 1 '|'.pstl 16 'OPENING STOCK'.
* pstl 16 'PRD STOCK'.
pstl 1 '|'. pstl 16 'PRODUCTION'.
pstl 1 '|'.
pstl 16 'CONSUMPTION'.
* pstl 1 '|'.pstl 16 'TRN_IN/ADD/OTHER'.
pstl 1 '|'.pstl 16 'STOCK_IN'.
* pstl 1 '|'.
pstl 1 '|'.pstl 16 'TRANSFER_IN'.
* pstl 1 '|'.pstl 16 'TO PRD'.
* pstl 1 '|'.pstl 16 'STOCK IN (R)'.
pstl 1 '|'.
* 44 'PRD STOCK',
* 61 '|TRN_IN/ADD/OTHER',
* 79 '|STOCK IN (R)',
* 97 '|'.
FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.
* WRITE:
pstl 16 'DELIVERY'.
* pstl 1 '|'.pstl 16 'STORE_ISS/VED_RTN'.
pstl 1 '|'.pstl 16 'ISSUE'.
pstl 1 '|'.pstl 16 'TRANSFER_OUT'.
* pstl 1 '|'.pstl 16 'STOCK OUT (R)'.
pstl 1 '|'.
* 98 'DN/TRN_OUT',
* 115 '|STORE_ISS/VED_RTN',
* 133 '|STOCK OUT (R)',
* 151 '|'.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
* WRITE:
pstl 16 'CLOSING STOCK'.
pstl 1 '|'.
* 152 'CLOSING STOCK',
* v_uline '|'.
FORMAT COLOR OFF.
WRITE sy-uline(v_uline).
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
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_OK

You might also like