You are on page 1of 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