Professional Documents
Culture Documents
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
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 '|'.