10-23-2006 8:54 AM
i want to get sstock for given material and quantity how to get and also for that batch
10-23-2006 8:57 AM
hi,
goto table mard and look for labst,
mard-labst --avaliable stock ,
regards,
vijay
10-23-2006 8:57 AM
10-23-2006 9:01 AM
Hi
Check out this code:
Regards,
Raj
REPORT Z_MM_WEIGT_EVALU_REPORT LINE-SIZE 300 NO STANDARD PAGE HEADING.
TABLES: MARA, MARD, T001, T001W,T001L,MCHB,MSEG,MKPF,MBEW.
INCLUDE Z_MM_WGT_EVAL_REPORT_TOP.
SELECTION-SCREEN BEGIN OF BLOCK DATABASE-SELECTION
WITH FRAME .
SELECT-OPTIONS: MATNR FOR MARD-MATNR MEMORY ID MAT
MATCHCODE OBJECT MAT1,"Material no
BUKRS FOR T001-BUKRS MEMORY ID BUK, "CompanyCode
WERKS FOR T001W-WERKS MEMORY ID WRK, "Plant
LGORT FOR T001L-LGORT, "Storage loc
CHARG FOR MCHB-CHARG, "Batch Number
BWART FOR MSEG-BWART. "Movement ty
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: DATUM FOR MKPF-BUDAT NO-EXTENSION OBLIGATORY.
SELECTION-SCREEN END OF BLOCK DATABASE-SELECTION.
AT SELECTION-SCREEN.
IF DATUM-HIGH IS INITIAL.
MESSAGE E000(ZZ) WITH 'Enter the Closing date'.
ENDIF.
START-OF-SELECTION.
PERFORM GET_MATERIAL_DOCUMENTS.
PERFORM GET_CLOSING_BALANCES.
END-OF-SELECTION.
PERFORM PROCESS_OUTPUT.
TOP-OF-PAGE.
PERFORM FORM_TOP_OF_PAGE.
INCLUDE Z_MM_WGT_EVAL_REPORT_GET_CF01.
-
----
***INCLUDE Z_MM_WEIGT_EVALU_REPT_GET_CF01 .
----
FORM GET_CLOSING_BALANCES .
RANGES: G_RA_BWKEY FOR MBEW-BWKEY.
DATA: L_MSG TYPE REF TO IF_HRPA_MESSAGE_HANDLER.
DATA: L_SUMAMT TYPE MSEG-DMBTR.
FIELD-SYMBOLS: <FS> TYPE TY_MBEW.
G_RA_BWKEY[] = WERKS[].
****For Closing Balance
SELECT MATNR BWKEY BWTAR LBKUM SALK3
VPRSV
VERPR
STPRS
FROM MBEW
INTO TABLE I_MBEW
WHERE MATNR IN MATNR
AND BWKEY IN G_RA_BWKEY.
PERFORM UPDATE_MBEW.
****For Material Desc
SELECT MATNR MAKTX
FROM MAKT
INTO TABLE I_MAKT
WHERE MATNR IN MATNR.
****For storage location descip
SELECT WERKS
LGORT
LGOBE
INTO TABLE I_T001L
FROM T001L
WHERE WERKS IN WERKS.
AND LGORT IN LGORT.
***For plant descip
SELECT WERKS
NAME1
INTO TABLE I_T001W
FROM T001W
WHERE WERKS IN WERKS.
RANGES: R_DATE FOR SY-DATUM.
R_DATE-OPTION = 'BT'.
R_DATE-SIGN = 'I'.
IF DATUM-HIGH IS INITIAL.
R_DATE-LOW = DATUM-LOW.
ELSE.
R_DATE-LOW = DATUM-HIGH.
ENDIF.
DATA: L_DATE TYPE SY-DATUM,
L_OK TYPE C.
CALL FUNCTION 'HR_ECM_ADD_PERIOD_TO_DATE'
EXPORTING
ORIG_DATE = R_DATE-LOW
NUM_DAYS = '01'
MESSAGE_HANDLER = L_MSG
IMPORTING
RESULT_DATE = L_DATE
IS_OK = L_OK.
IF L_OK = 'X'.
R_DATE-LOW = L_DATE.
ENDIF.
IF DATUM-HIGH > SY-DATLO.
R_DATE-HIGH = DATUM-HIGH.
ELSE.
R_DATE-HIGH = SY-DATLO.
ENDIF.
APPEND R_DATE.
IF I_MKPF_CL[] IS NOT INITIAL.
SELECT MBLNR
MJAHR
MATNR
WERKS
LGORT
SHKZG
MENGE
DMBTR
FROM MSEG
INTO TABLE I_CLOSING
FOR ALL ENTRIES IN I_MKPF_CL
WHERE MBLNR = I_MKPF_CL-MBLNR
AND MJAHR = I_MKPF_CL-MJAHR .
IF SY-SUBRC = 0.
DELETE I_CLOSING WHERE WERKS NOT IN WERKS.
DELETE I_CLOSING WHERE LGORT NOT IN LGORT.
DELETE I_CLOSING WHERE MATNR NOT IN MATNR.
ENDIF.
ENDIF.
LOOP AT I_CLOSING.
I_CLOSEVAL-MATNR = I_CLOSING-MATNR.
I_CLOSEVAL-WERKS = I_CLOSING-WERKS.
I_CLOSEVAL-LGORT = I_CLOSING-LGORT.
I_CLOSEVAL-SHKZG = I_CLOSING-SHKZG.
I_CLOSEVAL-DMBTR = I_CLOSING-DMBTR.
I_CLOSEVAL-MENGE = I_CLOSING-MENGE.
COLLECT I_CLOSEVAL.
ENDLOOP.
***To Find closing value
SORT I_CLOSEVAL BY MATNR WERKS LGORT.
LOOP AT I_CLOSEVAL.
IF I_CLOSEVAL-SHKZG = 'S'.
L_SUMAMT = L_SUMAMT - I_CLOSEVAL-DMBTR.
ELSE.
L_SUMAMT = L_SUMAMT + I_CLOSEVAL-DMBTR.
ENDIF.
*
AT END OF WERKS.
READ TABLE I_MBEW ASSIGNING <FS>
WITH KEY MATNR = I_CLOSEVAL-MATNR
BWKEY = I_CLOSEVAL-WERKS.
IF SY-SUBRC = 0.
L_SUMAMT = ABS( L_SUMAMT ).
<FS>-SALK3 = <FS>-SALK3 - L_SUMAMT.
CLEAR L_SUMAMT.
ENDIF.
ENDAT.
ENDLOOP.
***Get the closing documents for the specific storage location
SELECT MATNR
WERKS
LABST
INSME
SPEME
INTO CORRESPONDING FIELDS OF TABLE I_MARD
FROM MARD
WHERE MATNR IN MATNR AND
WERKS IN WERKS.
AND LGORT IN LGORT.
ENDFORM. " get_closing_balances
&----
*& Form get_material_documents
&----
FORM GET_MATERIAL_DOCUMENTS.
RANGES: R_BWART FOR MSEG-BWART.
FIELD-SYMBOLS: <FS> TYPE TY_MATDOC.
FIELD-SYMBOLS: <FS1> TYPE TY_MATDOC.
SELECT MBLNR
MJAHR
BUDAT
FROM MKPF INTO TABLE I_MKPF
WHERE BUDAT GE DATUM-LOW.
I_MKPF_CL[] = I_MKPF[].
***Getting the current documents
DELETE I_MKPF WHERE BUDAT NOT IN DATUM. "R_DATE.
***Getting the closing balance documents
DELETE I_MKPF_CL WHERE BUDAT IN DATUM.
CHECK I_MKPF[] IS NOT INITIAL.
SELECT
MBLNR
MJAHR
ZEILE
BWART
MATNR
WERKS
LGORT
CHARG
BUKRS
MENGU
SHKZG
MENGE
MEINS
DMBTR
DMBUM
SMBLN
SJAHR
SMBLP
FROM MSEG
INTO CORRESPONDING FIELDS OF TABLE I_MATDOC
FOR ALL ENTRIES IN I_MKPF
WHERE MBLNR = I_MKPF-MBLNR
AND MJAHR = I_MKPF-MJAHR.
IF SY-SUBRC = 0.
DELETE I_MATDOC WHERE BUKRS NOT IN BUKRS.
DELETE I_MATDOC WHERE MATNR NOT IN MATNR.
DELETE I_MATDOC WHERE WERKS NOT IN WERKS.
DELETE I_MATDOC WHERE LGORT NOT IN LGORT.
DELETE I_MATDOC WHERE CHARG NOT IN CHARG.
DELETE I_MATDOC WHERE BWART NOT IN BWART.
R_BWART-OPTION = 'EQ'.
R_BWART-SIGN = 'I'.
R_BWART-LOW = '321'.
APPEND R_BWART.
R_BWART-OPTION = 'EQ'.
R_BWART-SIGN = 'I'.
R_BWART-LOW = '322'.
APPEND R_BWART.
R_BWART-OPTION = 'EQ'.
R_BWART-SIGN = 'I'.
R_BWART-LOW = '343'.
APPEND R_BWART.
R_BWART-OPTION = 'EQ'.
R_BWART-SIGN = 'I'.
R_BWART-LOW = '344'.
APPEND R_BWART.
R_BWART-OPTION = 'EQ'.
R_BWART-SIGN = 'I'.
R_BWART-LOW = '349'.
APPEND R_BWART.
R_BWART-OPTION = 'EQ'.
R_BWART-SIGN = 'I'.
R_BWART-LOW = '350'.
APPEND R_BWART.
DELETE I_MATDOC WHERE BWART IN R_BWART. "Commented by Raj
SORT I_MATDOC DESCENDING BY SMBLN .
*- Commented by Raj on 18.07.2005
LOOP AT I_MATDOC ASSIGNING <FS> WHERE SMBLN IS NOT INITIAL.
*
READ TABLE I_MATDOC ASSIGNING <FS1> WITH KEY MBLNR = <FS>-SMBLN.
IF SY-SUBRC = 0.
CLEAR: <FS>-MBLNR, <FS1>-MBLNR.
ENDIF.
*
ENDLOOP.
DELETE I_MATDOC WHERE MBLNR IS INITIAL.
ENDIF.
*- Inserted by Raj on 18.07.2005
*- Update I_MATDOC with Material Type (MTART)
LOOP AT I_MATDOC.
CLEAR MARA-MTART.
SELECT SINGLE MTART INTO MARA-MTART
FROM MARA
WHERE MATNR = I_MATDOC-MATNR.
IF SY-SUBRC = 0.
I_MATDOC-MTART = MARA-MTART.
MODIFY I_MATDOC INDEX SY-TABIX TRANSPORTING MTART.
ENDIF.
ENDLOOP.
ENDFORM. " get_material_documents
&----
*& Form process_output
&----
FORM PROCESS_OUTPUT .
FIELD-SYMBOLS: <FS> TYPE TY_MATDOC.
DATA: REC_OUTPUT TYPE TY_OUTPUT,
V_KWERT TYPE KWERT,
L_OPNQTYSUM TYPE MSEG-MENGE,
L_QPNAMTSUM TYPE NETWR,
L_CLQTYSUM TYPE MSEG-MENGE,
L_RCQTYSUM TYPE MSEG-MENGE,
L_ISQTYSUM TYPE MSEG-MENGE,
L_RCAMTSUM TYPE NETWR,
L_ISAMTSUM TYPE NETWR,
L_CLAMTSUM TYPE NETWR.
DATA: L_POPER(2) TYPE N. " Added by Raj on 15.07.2005
*- Inserted by Raj on 18.07.2005 to filter some materials
RANGES: R_MATNR FOR MARA-MATNR.
R_MATNR-OPTION = 'EQ'.
R_MATNR-SIGN = 'I'.
R_MATNR-LOW = '80800003'.
APPEND R_MATNR.
CLEAR R_MATNR-LOW.
R_MATNR-OPTION = 'EQ'.
R_MATNR-SIGN = 'I'.
R_MATNR-LOW = '80800012'.
APPEND R_MATNR.
CLEAR R_MATNR-LOW.
R_MATNR-OPTION = 'EQ'.
R_MATNR-SIGN = 'I'.
R_MATNR-LOW = '80800018'.
APPEND R_MATNR.
CLEAR R_MATNR-LOW.
DELETE I_MATDOC WHERE MATNR IN R_MATNR.
*- End of insertion
LOOP AT I_MATDOC ASSIGNING <FS>.
REC_OUTPUT-WERKS = <FS>-WERKS.
REC_OUTPUT-LGORT = <FS>-LGORT.
REC_OUTPUT-MATNR = <FS>-MATNR.
REC_OUTPUT-MTART = <FS>-MTART.
REC_OUTPUT-MEINS = <FS>-MEINS.
IF <FS>-SHKZG = 'S'.
REC_OUTPUT-RCPQTY = <FS>-MENGE.
REC_OUTPUT-RCPVAL = <FS>-DMBTR.
ELSE.
REC_OUTPUT-ISSQTY = <FS>-MENGE.
REC_OUTPUT-ISSVAL = <FS>-DMBTR.
ENDIF.
COLLECT REC_OUTPUT INTO I_OUTPUT.
CLEAR REC_OUTPUT.
ENDLOOP.
DELETE I_OUTPUT WHERE MTART IS INITIAL.
PERFORM POPULATE_MARD.
SORT I_MARD BY WERKS MATNR.
SORT I_OUTPUT BY WERKS MATNR.
PERFORM POPULATE_MATDOC.
*- Inserted by Raj on 15.07.2005
PERFORM CALCULATE_RECD_RATE.
*- End of insertion
SORT I_CLOSEVAL BY WERKS MATNR SHKZG.
*- Display Output
PERFORM DISPLAY_DATA.
ENDFORM. " process_output
&----
*& Form FORM_TOP_OF_PAGE
&----
FORM FORM_TOP_OF_PAGE .
FORMAT COLOR 6 INVERSE INTENSIFIED.
WRITE : /80 'NAGARJUNA FERTILIZERS AND CHEMICALS INDIA LIMITED' COLOR 6
INVERSE INTENSIFIED
,
/65 'Weighted Average Valuation Statement for the period',
DATUM-LOW, 'To', DATUM-HIGH.
FORMAT COLOR OFF.
SKIP 3.
ULINE.
FORMAT COLOR 4.
WRITE : /18 'Item Code ' ,
50 'Description',
100 'Uom',
115 '<--
>',
158 '<--
>',
210 '<--
>',
260 '<--
>'.
WRITE : /115 'Quantity',
142 'Value',
160 'Quantity',
178 'Rate',
195 'Value',
210 'Quantity',
232 'Rate',
250 'Value',
262 'Quantity',
280 'Rate',
295 'Value'.
ENDFORM. " FORM_TOP_OF_PAGE
&----
*& Form CALCULATE_RECD_RATE
&----
Calculate the Recvd Rate
----
FORM CALCULATE_RECD_RATE .
DATA: L_INDEX LIKE SY-TABIX,
L_ISSRATE TYPE KWERT, "Issue rate
L_ISSQTY TYPE MSEG-MENGE, "Issue quantity
L_ISSVAL TYPE MSEG-DMBTR, "Issue value
L_RECDRATE TYPE KWERT, "Receved rate
L_RCPQTY TYPE MSEG-MENGE, "Recepts quantity
L_RCPVAL TYPE MSEG-DMBTR. "Receiving value
DATA: BEGIN OF L_MATDOC OCCURS 0,
BUKRS LIKE T001-BUKRS,
WERKS LIKE MSEG-WERKS,
MTART LIKE MARA-MTART, " Material Type
MATNR LIKE MSEG-MATNR,
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,
LBBSA LIKE T156M-LBBSA,
BWAGR LIKE T156S-BWAGR,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
CHARG LIKE MSEG-CHARG,
MENGU LIKE MSEG-MENGU,
SHKZG LIKE MSEG-SHKZG,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
DMBTR LIKE MSEG-DMBTR,
DMBUM LIKE MSEG-DMBUM,
RETAIL(01) TYPE C,
OIGLCALC(01) TYPE C,
OIGLSKU(07) TYPE P DECIMALS 3,
SMBLN LIKE MSEG-SMBLN, " No. doc
SJAHR LIKE MSEG-SJAHR, " Year
SMBLP LIKE MSEG-SMBLP, " Item in doc
MAKTX LIKE MAKT-MAKTX,
END OF L_MATDOC.
LOOP AT I_MATDOC.
MOVE-CORRESPONDING I_MATDOC TO L_MATDOC.
APPEND L_MATDOC.
CLEAR L_MATDOC.
ENDLOOP.
SORT L_MATDOC BY BUKRS WERKS MTART MATNR.
LOOP AT L_MATDOC.
AT NEW MTART.
CLEAR: L_RECDRATE, L_RCPQTY, L_RCPVAL,
L_ISSRATE, L_ISSQTY, L_ISSVAL.
ENDAT.
IF L_MATDOC-DMBTR > 0.
IF L_MATDOC-SHKZG = 'S'.
L_RCPQTY = L_RCPQTY + L_MATDOC-MENGE.
L_RCPVAL = L_RCPVAL + L_MATDOC-DMBTR.
ELSEIF L_MATDOC-SHKZG = 'H'.
L_ISSQTY = L_ISSQTY + L_MATDOC-MENGE.
L_ISSVAL = L_ISSVAL + L_MATDOC-DMBTR.
ENDIF.
ENDIF.
AT END OF MTART.
READ TABLE L_MATDOC INDEX SY-TABIX.
IF L_RCPQTY > 0.
L_RECDRATE = L_RCPVAL / L_RCPQTY.
ENDIF.
IF L_ISSQTY > 0.
L_ISSRATE = L_ISSVAL / L_ISSQTY.
ENDIF.
*- Read I_output and modify the receivables rate
READ TABLE I_OUTPUT WITH KEY WERKS = L_MATDOC-WERKS
LGORT = L_MATDOC-LGORT
MATNR = L_MATDOC-MATNR
BINARY SEARCH.
IF SY-SUBRC = 0.
L_INDEX = SY-TABIX.
I_OUTPUT-RCPRAT = L_RECDRATE.
I_OUTPUT-ISSRAT = L_ISSRATE.
MODIFY I_OUTPUT INDEX L_INDEX TRANSPORTING RCPRAT ISSRAT.
CLEAR: L_RECDRATE, L_ISSRATE.
ENDIF.
ENDAT.
ENDLOOP.
ENDFORM. " CALCULATE_RECD_RATE
&----
*& Form POPULATE_MARD
&----
FORM POPULATE_MARD .
CLEAR: I_MARD1, I_MARD1[].
LOOP AT I_MARD.
I_MARD1-MATNR = I_MARD-MATNR.
I_MARD1-WERKS = I_MARD-WERKS.
I_MARD1-LABST = I_MARD-LABST.
I_MARD1-INSME = I_MARD-INSME.
I_MARD1-SPEME = I_MARD-SPEME.
COLLECT I_MARD1.
ENDLOOP.
ENDFORM. " POPULATE_MARD
&----
*& Form POPULATE_MATDOC
&----
FORM POPULATE_MATDOC .
CLEAR: I_MATDOC1, I_MATDOC1[].
LOOP AT I_MATDOC.
MOVE-CORRESPONDING I_MATDOC TO I_MATDOC1.
APPEND I_MATDOC1.
CLEAR I_MATDOC1.
ENDLOOP.
ENDFORM. " POPULATE_MATDOC
&----
*& Form DISPLAY_DATA
&----
FORM DISPLAY_DATA .
DATA: L_INDEX LIKE SY-TABIX.
DATA: MT_OPENQTY TYPE MSEG-MENGE,
MT_OPENVAL TYPE MSEG-DMBTR,
MT_RECQTY TYPE MSEG-MENGE,
MT_RECVAL TYPE MSEG-DMBTR,
MT_ISSQTY TYPE MSEG-MENGE,
MT_ISSVAL TYPE MSEG-DMBTR,
MT_CLOSQTY TYPE MSEG-MENGE,
MT_CLOSVAL TYPE MSEG-DMBTR,
GT_OPENQTY TYPE MSEG-MENGE,
GT_OPENVAL TYPE MSEG-DMBTR,
GT_RECQTY TYPE MSEG-MENGE,
GT_RECVAL TYPE MSEG-DMBTR,
GT_ISSQTY TYPE MSEG-MENGE,
GT_ISSVAL TYPE MSEG-DMBTR,
GT_CLOSQTY TYPE MSEG-MENGE,
GT_CLOSVAL TYPE MSEG-DMBTR.
LOOP AT I_OUTPUT.
L_INDEX = SY-TABIX.
AT NEW MTART.
CLEAR:MT_OPENQTY, MT_OPENVAL, MT_RECQTY ,
MT_RECVAL, MT_ISSQTY, MT_ISSVAL ,
MT_CLOSQTY, MT_CLOSVAL.
ENDAT.
READ TABLE I_T001W WITH KEY WERKS = I_MARD-WERKS.
ULINE.
FORMAT RESET.
READ TABLE I_MAKT WITH KEY MATNR = I_OUTPUT-MATNR.
READ TABLE I_MBEW WITH KEY MATNR = I_OUTPUT-MATNR
BWKEY = I_OUTPUT-WERKS.
WRITE 😕 I_OUTPUT-WERKS, I_OUTPUT-MTART COLOR 6 INVERSE INTENSIFIED.
FORMAT COLOR 2.
WRITE :/18 I_OUTPUT-MATNR.
WRITE : 40 I_MAKT-MAKTX,
100 I_OUTPUT-MEINS.
CLEAR: V_OPENQTY, V_OPENVAL.
V_OPENQTY = I_MBEW-LBKUM + I_OUTPUT-ISSQTY - I_OUTPUT-RCPQTY.
V_OPENVAL = I_MBEW-SALK3 + I_OUTPUT-ISSVAL - I_OUTPUT-RCPVAL.
WRITE : 105 V_OPENQTY.
WRITE : 131 V_OPENVAL.
WRITE : 150 I_OUTPUT-RCPQTY,
167 I_OUTPUT-RCPRAT,
185 I_OUTPUT-RCPVAL.
WRITE : 200 I_OUTPUT-ISSQTY,
220 I_OUTPUT-ISSRAT,
240(12) I_OUTPUT-ISSVAL.
WRITE : 252 I_MBEW-LBKUM.
WRITE : 268 I_MBEW-VERPR,
290 I_MBEW-SALK3.
*- Material Type Totals
MT_RECQTY = MT_RECQTY + I_OUTPUT-RCPQTY.
MT_RECVAL = MT_RECVAL + I_OUTPUT-RCPVAL.
MT_ISSQTY = MT_ISSQTY + I_OUTPUT-ISSQTY.
MT_ISSVAL = MT_ISSVAL + I_OUTPUT-ISSVAL.
MT_CLOSQTY = MT_CLOSQTY + I_MBEW-LBKUM.
MT_CLOSVAL = MT_CLOSVAL + I_MBEW-SALK3.
MT_OPENQTY = MT_OPENQTY + ( I_MBEW-LBKUM - I_OUTPUT-RCPQTY + I_OUTPUT-ISSQTY ).
MT_OPENVAL = MT_OPENVAL + ( I_MBEW-SALK3 - I_OUTPUT-RCPVAL + I_OUTPUT-ISSVAL ).
AT END OF MTART.
ULINE.
FORMAT COLOR 3.
WRITE : /.
WRITE : 'Total'.
WRITE : 105 MT_OPENQTY.
WRITE : 131 MT_OPENVAL.
WRITE : 150 MT_RECQTY,
185 MT_RECVAL.
WRITE : 200 MT_ISSQTY,
240(12) MT_ISSVAL.
WRITE : 252 MT_CLOSQTY,
290 MT_CLOSVAL.
ULINE.
*- Final Totals
GT_OPENQTY = GT_OPENQTY + MT_OPENQTY.
GT_OPENVAL = GT_OPENVAL + MT_OPENVAL.
GT_RECQTY = GT_RECQTY + MT_RECQTY.
GT_RECVAL = GT_RECVAL + MT_RECVAL.
GT_ISSQTY = GT_ISSQTY + MT_ISSQTY.
GT_ISSVAL = GT_ISSVAL + MT_ISSVAL.
GT_CLOSQTY = GT_CLOSQTY + MT_CLOSQTY.
GT_CLOSVAL = GT_CLOSVAL + MT_CLOSVAL.
ENDAT.
AT LAST.
FORMAT COLOR 3.
WRITE : /.
WRITE : 'Grand Totals'.
WRITE : 105 GT_OPENQTY.
WRITE : 131 GT_OPENVAL.
WRITE : 150 GT_RECQTY,
185 GT_RECVAL.
WRITE : 200 GT_ISSQTY,
240(12) GT_ISSVAL.
WRITE : 252 GT_CLOSQTY,
290 GT_CLOSVAL.
ULINE.
ENDAT.
ENDLOOP.
ENDFORM. " DISPLAY_DATA
&----
*& Form UPDATE_MBEW
&----
Update MBEW
----
FORM UPDATE_MBEW.
DATA: C_POPER TYPE POPER,
C_BDATJ TYPE BDATJ,
SD_POPER TYPE POPER,
SD_BDATJ TYPE BDATJ.
DATA: L_POPER(2) TYPE N,
V_KWERT TYPE KWERT.
*- Get current period
CLEAR: C_POPER,
C_BDATJ,
SD_POPER,
SD_BDATJ.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = SY-DATUM
I_MONMIT = 00
I_PERIV = 'V3'
IMPORTING
E_BUPER = C_POPER
E_GJAHR = C_BDATJ
EXCEPTIONS
INPUT_FALSE = 1
T009_NOTFOUND = 2
T009B_NOTFOUND = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*- Get Selection date (Closing) period
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = DATUM-HIGH
I_MONMIT = 00
I_PERIV = 'V3'
IMPORTING
E_BUPER = SD_POPER
E_GJAHR = SD_BDATJ
EXCEPTIONS
INPUT_FALSE = 1
T009_NOTFOUND = 2
T009B_NOTFOUND = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT I_MBEW.
CLEAR MBEW.
IF SD_BDATJ <= C_BDATJ.
IF SD_POPER <= C_POPER.
IF SD_BDATJ = C_BDATJ AND
SD_POPER = C_POPER.
I_MBEW-VERPR = I_MBEW-VERPR.
I_MBEW-LBKUM = I_MBEW-LBKUM.
I_MBEW-SALK3 = I_MBEW-SALK3.
ELSE.
CLEAR L_POPER.
L_POPER = SD_POPER+1(2).
*- Get rate from MBEWH
SELECT SINGLE LBKUM SALK3 VERPR INTO (MBEW-LBKUM, MBEW-SALK3, MBEW-VERPR)
FROM MBEWH
WHERE MATNR = I_MBEW-MATNR AND
BWKEY = I_MBEW-BWKEY AND
LFGJA = SD_BDATJ AND
LFMON = L_POPER.
IF SY-SUBRC <> 0.
L_POPER = L_POPER + 1.
SELECT SINGLE LBKUM SALK3 VERPR INTO (MBEW-LBKUM, MBEW-SALK3, MBEW-VERPR)
FROM MBEWH
WHERE MATNR = I_MBEW-MATNR AND
BWKEY = I_MBEW-BWKEY AND
LFGJA = SD_BDATJ AND
LFMON = L_POPER.
IF SY-SUBRC = 0.
I_MBEW-LBKUM = MBEW-LBKUM.
I_MBEW-SALK3 = MBEW-SALK3.
I_MBEW-VERPR = MBEW-VERPR.
ENDIF.
ELSEIF SY-SUBRC = 0.
I_MBEW-LBKUM = MBEW-LBKUM.
I_MBEW-SALK3 = MBEW-SALK3.
I_MBEW-VERPR = MBEW-VERPR.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
MODIFY I_MBEW INDEX SY-TABIX TRANSPORTING LBKUM SALK3 VERPR.
ENDLOOP.
ENDFORM. " UPDATE_MBEW
10-23-2006 9:08 AM
oops ,
table
mcha
field
charg
MCHA-CHARG for batch of the material
regards
vijay.