Go on link..

link us with ...

Thursday, December 30, 2010

Form IV Register (Excise)

REPORT ZVVF_MR045_FORMIV_REG NO STANDARD PAGE HEADING LINE-SIZE 246
MESSAGE-ID ZMM .
*---------------------------------------------------------------------*
* *
* MODULE : Material Management *
* *
*---------------------------------------------------------------------*
* Objective : Form IV Register (Excise) *
* *
* *
* Program : Update Tables ( ) Download Data ( ) Outputs List (X)*
* Technical Specs No : *
* Date Created : *
* Author : *
* Location : *
* LDB : *
*---------------------------------------------------------------------*

*---------------------------------------------------------------------*
* Tables *
*---------------------------------------------------------------------*
TABLES : MSEG, "Document Segment: Material
MAKT, "Material Descriptions
MKPF, "Header: Material Document
EKPO, "Purchasing Document Item
MARDH, "Batch Stocks: History
MARD, "Batch Stocks
MARA, "General Material Data
MBEWH. "Material Valuation: History

*---------------------------------------------------------------------*
* Types Begin with TY_ *
*---------------------------------------------------------------------*
TYPES : BEGIN OF TY_DISPLAY,
DATE TYPE DATS,
MENGE_O LIKE MSEG-MENGE,
MENGE_R LIKE MSEG-MENGE,
MENGE_T LIKE MSEG-MENGE,
MENGE_UE LIKE MSEG-MENGE,
MENGE_UO LIKE MSEG-MENGE,
MENGE_C LIKE MSEG-MENGE,
REMARKS LIKE MSEG-SGTXT,
END OF TY_DISPLAY.

TYPES : BEGIN OF TY_MARD,
MATNR LIKE MCHB-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF TY_MARD.

TYPES : BEGIN OF TY_MARA,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF TY_MARA.

TYPES : BEGIN OF TY_MARDH,
MATNR LIKE MARDH-MATNR,
WERKS LIKE MARDH-WERKS,
LABST LIKE MARDH-LABST,
INSMT LIKE MARDH-INSME,
EINMT LIKE MARDH-EINME,
SPEMT LIKE MARDH-SPEME,
END OF TY_MARDH.

TYPES : BEGIN OF TY_MSEG,
MBLNR LIKE MSEG-MBLNR,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MCHBH-WERKS,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
SHKZG LIKE MSEG-SHKZG,
AUFNR LIKE MSEG-AUFNR,
LIFNR LIKE MSEG-LIFNR,
EBELN LIKE MSEG-EBELN,
EBELP LIKE MSEG-EBELP,
BEDNR LIKE EKPO-BEDNR,
CHARG LIKE MSEG-CHARG,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
SGTXT LIKE MSEG-SGTXT,
SOBKZ LIKE MSEG-SOBKZ,
END OF TY_MSEG.

TYPES : BEGIN OF TY_MOVE,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MCHBH-WERKS,
BUDAT LIKE MKPF-BUDAT,
MENGE LIKE MSEG-MENGE,
SHKZG LIKE MSEG-SHKZG,
END OF TY_MOVE.

TYPES : BEGIN OF TY_MBEWH,
MATNR LIKE MBEWH-MATNR,
BWKEY LIKE MBEWH-BWKEY,
LBKUM LIKE MBEWH-LBKUM,
VPRSV LIKE MBEWH-VPRSV,
VERPR LIKE MBEWH-VERPR,
STPRS LIKE MBEWH-STPRS,
END OF TY_MBEWH.

TYPES : BEGIN OF TY_MBEWH1,
MATNR LIKE MBEWH-MATNR,
VPRSV LIKE MBEWH-VPRSV,
VERPR LIKE MBEWH-VERPR,
STPRS LIKE MBEWH-STPRS,
LBKUM LIKE MBEWH-LBKUM,
SALK3 LIKE MBEWH-SALK3,
END OF TY_MBEWH1.

*---------------------------------------------------------------------*
* Internal tables Begin with IT_ *
*---------------------------------------------------------------------*
DATA : IT_MSEG TYPE STANDARD TABLE OF TY_MSEG WITH HEADER LINE,
IT_MSEG1 TYPE STANDARD TABLE OF TY_MSEG WITH HEADER LINE,
IT_MARA TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE,
IT_MARD TYPE STANDARD TABLE OF TY_MARD WITH HEADER LINE,
IT_MARDH1 TYPE STANDARD TABLE OF TY_MARDH WITH HEADER LINE,
IT_MARDH TYPE STANDARD TABLE OF TY_MARDH WITH HEADER LINE,
IT_MBEWH TYPE STANDARD TABLE OF TY_MBEWH WITH HEADER LINE,
IT_MBEWH1 TYPE STANDARD TABLE OF TY_MBEWH1 WITH HEADER LINE,
* IT_DISPLAY TYPE STANDARD TABLE OF TY_DISPLAY WITH HEADER LINE,
IT_DISPLAY TYPE STANDARD TABLE OF ZVVF_MS045_FORMIV_REG WITH
HEADER LINE,

IT_R TYPE STANDARD TABLE OF TY_MOVE WITH HEADER LINE,
IT_UE TYPE STANDARD TABLE OF TY_MOVE WITH HEADER LINE,
IT_UO TYPE STANDARD TABLE OF TY_MOVE WITH HEADER LINE,
IT_J_1IMTCHID TYPE STANDARD TABLE OF J_1IMTCHID WITH HEADER LINE,
IT_AFPO TYPE STANDARD TABLE OF AFPO WITH HEADER LINE.

*---------------------------------------------------------------------*
* Work Area Begin with WA_ *
*---------------------------------------------------------------------*
DATA : WA_MSEG LIKE LINE OF IT_MSEG,
WA_MARD LIKE LINE OF IT_MARD,
WA_MARDH1 LIKE LINE OF IT_MARDH,
WA_MARDH LIKE LINE OF IT_MARDH,
WA_MBEWH LIKE LINE OF IT_MBEWH,
WA_MBEWH1 LIKE LINE OF IT_MBEWH1,
WA_MARA LIKE LINE OF IT_MARA,
WA_DISPLAY LIKE ZVVF_MS045_FORMIV_REG,
* WA_DISPLAY LIKE LINE OF IT_DISPLAY,
WA_AFPO LIKE LINE OF IT_AFPO,
WA_J_1IMTCHID LIKE LINE OF IT_J_1IMTCHID,

WA_R LIKE LINE OF IT_R,
WA_UE LIKE LINE OF IT_UE,
WA_UO LIKE LINE OF IT_UO.

*---------------------------------------------------------------------*
* Data Begin with W_ *
*---------------------------------------------------------------------*
DATA : W_DATE LIKE MKPF-BUDAT,
W_DATE1 LIKE MKPF-BUDAT,
W_DATE2 LIKE MKPF-BUDAT,
W_DATE3 LIKE MKPF-BUDAT,
W_DATE4 LIKE MKPF-BUDAT,
W_BUPER LIKE T009B-POPER,
W_LFMON LIKE MCHB-LFMON,
W_YEAR LIKE T009B-BDATJ,
W_RMENGE LIKE MSEG-MENGE,
W_MON(2) TYPE N,
W_INDEX TYPE SY-INDEX,
W_CNT TYPE I,
W_CNT1 TYPE I,
W_CNT2 TYPE I,
W_IMENGE LIKE MSEG-MENGE,
W_MENGE LIKE MSEG-MENGE,
W_MAKTX LIKE MAKT-MAKTX,
W_KEY LIKE INOB-OBJEK,
W_STRENGTH LIKE AUSP-ATFLV.


DATA : W_R LIKE MSEG-MENGE,
W_UE LIKE MSEG-MENGE,
W_UO LIKE MSEG-MENGE.

*---------------------------------------------------------------------*
* Select Options Begin with SO_ *
*---------------------------------------------------------------------*
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
PARAMETERS : PR_PLANT LIKE MSEG-WERKS.
PARAMETERS : PR_MTART LIKE MARA-MTART DEFAULT 'ROH'."Material Type

SELECT-OPTIONS : SO_MATNR FOR MARD-MATNR OBLIGATORY. "Material code
SELECT-OPTIONS : SO_DATE FOR SY-DATUM OBLIGATORY NO-EXTENSION.
SELECTION-SCREEN : END OF BLOCK B1.

*---------------------------------------------------------------------*
* Ranges Begin with R_ *
*---------------------------------------------------------------------*
RANGES : R_MOVR FOR MSEG-BWART, "Movement type
R_MOVUE FOR MSEG-BWART,
R_MOVUO FOR MSEG-BWART.

*---------------------------------------------------------------------*
* At selection-screen *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN .

perform f001_validate.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN .
IF SCREEN-NAME = 'PR_MTART'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.


IF NOT SO_DATE-HIGH IS INITIAL.
IF ( SO_DATE-HIGH+4(2) NE SO_DATE-LOW+4(2) )
OR ( SO_DATE-HIGH+0(4) NE SO_DATE-LOW+0(4) ).
MESSAGE E119.
ENDIF.
ENDIF.

***********************************************************************
* S T A R T O F S E L E C T I O N *
***********************************************************************
START-OF-SELECTION.
PERFORM F001_MOVE_TYPES.
PERFORM F002_GET_MCHB.
PERFORM F003_GET_MSEG.

*---------------------------------------------------------------------*
* END-OF-SELECTION *
*---------------------------------------------------------------------*
END-OF-SELECTION.
PERFORM F005_DATA_SUM.
PERFORM F004_DISPDATA.

TOP-OF-PAGE.

DATA : LW_MATNR LIKE MARA-MATNR,
LW_MAKTX LIKE MAKT-MAKTX,
LW_DAT1 TYPE D,
LW_DAT2 TYPE D.

DATA : LW_DATE1(10) TYPE C.
DATA : LW_DATE2(10) TYPE C.



LW_MATNR = WA_MARD-MATNR.
LW_MAKTX = WA_MARD-MAKTX.
LW_DAT1 = SO_DATE-LOW.
LW_DAT2 = SO_DATE-HIGH.

CONCATENATE LW_DAT1+6(2) '.' LW_DAT1+4(2) '.' LW_DAT1+0(4) INTO LW_DATE1
.
CONCATENATE LW_DAT2+6(2) '.' LW_DAT2+4(2) '.' LW_DAT2+0(4) INTO LW_DATE2
.

WRITE : /120 'FORM IV'.
WRITE : /100 'ACCOUNT OF RAW MATERIALS AND COMPONENTS'.
WRITE : /117 '(RULE 173G)'.


SKIP 2.
WRITE : /3 'Material Number',19 ':',22 LW_MATNR.
WRITE : 38 'MaterialDescription',60 lw_maktx,110 'Month',118 LW_DATE1,
'TO', LW_DATE2.

SKIP 2.
ULINE AT 3(246).
WRITE : /3 sy-vline, 4(12) 'DATE' CENTERED,16
sy-vline, 17(19) 'OPENING BALANCE' CENTERED,36
sy-vline, 37(18) 'QUANTITY RECEIVED' CENTERED,55
sy-vline, 56(10) 'TOTAL(A)' CENTERED,66
sy-vline, 67(30) 'QTY USED IN THE' CENTERED,97
sy-vline, 98(30) 'QTY OTHERWISE' CENTERED,128
sy-vline, 129(20) 'QTY WASTED' CENTERED,149
sy-vline, 150(16) 'CLOSING BALANCE' CENTERED,166
sy-vline, 167(20) 'QTY OF EXCISABLE' CENTERED,187
sy-vline, 188(20) 'QTY OF OTHER' CENTERED,208
sy-vline, 209(20) 'REMARKS' CENTERED,229
sy-vline, 230(16) 'SIGN OF THE' CENTERED,246
sy-vline.


WRITE : /3 sy-vline, 16
sy-vline, 36
sy-vline, 55
sy-vline, 66
sy-vline, 67(30) 'MANUFACTURE OF (B)' CENTERED,97
sy-vline, 98(30) 'DEPOSITED TO' CENTERED,128
sy-vline, 129(20) 'OR DESTROYED' CENTERED,149
sy-vline, 166
sy-vline, 167(20) 'GOODS MANUFACTURED' CENTERED,187
sy-vline, 188(20) 'GOODS MANUFACTURED' CENTERED,208
sy-vline, 229
sy-vline, 230(16) 'ASSESSE OR HIS' CENTERED,246
sy-vline.

WRITE : /3 sy-vline, 16
sy-vline, 36
sy-vline, 55
sy-vline, 66
sy-vline, 97
sy-vline, 128
sy-vline, 149
sy-vline, 166
sy-vline, 187
sy-vline, 208
sy-vline, 229
sy-vline, 230(16) 'AGENT' CENTERED,246
sy-vline.
ULINE AT 67(30).
ULINE AT 98(30).

WRITE : /3 SY-VLINE,16
sy-vline, 36
sy-vline, 55
SY-VLINE, 66
SY-VLINE,67(15) 'EXCISABLE GOODS' CENTERED,81
SY-VLINE,82(15) 'OTHER GOODS',97
sy-vline, 98(20) 'NATURE OF DISPOSAL' CENTERED,117
SY-VLINE,118(10) 'QUANTITY',128
SY-VLINE,149
SY-VLINE,166
SY-VLINE,187
SY-VLINE,208
SY-VLINE,229
SY-VLINE,246
sy-vline.


ULINE AT /3(246).




*&---------------------------------------------------------------------*
*& Form F001_MOVE_TYPES
*&---------------------------------------------------------------------*
FORM F001_MOVE_TYPES .
R_MOVR-SIGN = 'I'.
R_MOVR-OPTION = 'EQ'.
R_MOVR-LOW = '101'.
R_MOVR-HIGH = ' '.
APPEND R_MOVR.

R_MOVR-SIGN = 'I'.
R_MOVR-OPTION = 'EQ'.
R_MOVR-LOW = '102'.
R_MOVR-HIGH = ' '.
APPEND R_MOVR.

R_MOVR-SIGN = 'I'.
R_MOVR-OPTION = 'EQ'.
R_MOVR-LOW = '105'.
R_MOVR-HIGH = ' '.
APPEND R_MOVR.

R_MOVR-SIGN = 'I'.
R_MOVR-OPTION = 'EQ'.
R_MOVR-LOW = '106'.
R_MOVR-HIGH = ' '.
APPEND R_MOVR.

R_MOVR-SIGN = 'I'.
R_MOVR-OPTION = 'EQ'.
R_MOVR-LOW = '561'.
R_MOVR-HIGH = ' '.
APPEND R_MOVR.

R_MOVR-SIGN = 'I'.
R_MOVR-OPTION = 'EQ'.
R_MOVR-LOW = '562'.
R_MOVR-HIGH = ' '.
APPEND R_MOVR.

*************************
R_MOVUE-SIGN = 'I'.
R_MOVUE-OPTION = 'EQ'.
R_MOVUE-LOW = '261'.
R_MOVUE-HIGH = ' '.
APPEND R_MOVUE.

R_MOVUE-SIGN = 'I'.
R_MOVUE-OPTION = 'EQ'.
R_MOVUE-LOW = '262'.
R_MOVUE-HIGH = ' '.
APPEND R_MOVUE.

R_MOVUE-SIGN = 'I'.
R_MOVUE-OPTION = 'EQ'.
R_MOVUE-LOW = '961'.
R_MOVUE-HIGH = ' '.
APPEND R_MOVUE.

R_MOVUE-SIGN = 'I'.
R_MOVUE-OPTION = 'EQ'.
R_MOVUE-LOW = '962'.
R_MOVUE-HIGH = ' '.
APPEND R_MOVUE.

*************************
R_MOVUO-SIGN = 'I'.
R_MOVUO-OPTION = 'EQ'.
R_MOVUO-LOW = '261'.
R_MOVUO-HIGH = ' '.
APPEND R_MOVUO.

R_MOVUO-SIGN = 'I'.
R_MOVUO-OPTION = 'EQ'.
R_MOVUO-LOW = '262'.
R_MOVUO-HIGH = ' '.
APPEND R_MOVUO.

R_MOVUE-SIGN = 'I'.
R_MOVUE-OPTION = 'EQ'.
R_MOVUE-LOW = '961'.
R_MOVUE-HIGH = ' '.
APPEND R_MOVUE.

R_MOVUE-SIGN = 'I'.
R_MOVUE-OPTION = 'EQ'.
R_MOVUE-LOW = '962'.
R_MOVUE-HIGH = ' '.
APPEND R_MOVUE.


ENDFORM. " F001_MOVE_TYPES
*&---------------------------------------------------------------------*
*& Form F002_GET_MCHB
*&---------------------------------------------------------------------*
FORM F002_GET_MCHB .



CONCATENATE SO_DATE-LOW+0(6) '01' INTO W_DATE.
W_DATE1 = W_DATE.
PERFORM F005_FISCAL_PERIOD USING W_DATE1
CHANGING W_BUPER
W_YEAR.
W_LFMON = W_BUPER+1(2).

*Select all stock details from MCHB i.e. selection screen high date
SELECT DISTINCT MARD~MATNR MAKT~MAKTX
FROM MARD
INNER JOIN MAKT ON MARD~MATNR = MAKT~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_MARD
FOR ALL ENTRIES IN IT_MARA
WHERE MARD~MATNR = IT_MARA-MATNR AND MARD~WERKS = PR_PLANT
AND MAKT~SPRAS = SY-LANGU.
IF SY-SUBRC = 0.
SELECT MATNR BWKEY LBKUM VPRSV VERPR STPRS
FROM MBEWH
INTO CORRESPONDING FIELDS OF TABLE IT_MBEWH1
FOR ALL ENTRIES IN IT_MARD
WHERE BWKEY = PR_PLANT AND MATNR = IT_MARD-MATNR
AND LFGJA = W_YEAR AND LFMON = W_LFMON.

W_DATE = W_DATE - 1.
PERFORM F005_FISCAL_PERIOD USING W_DATE
CHANGING W_BUPER
W_YEAR.
W_LFMON = W_BUPER+1(2).
*CURRENT STOCK IS TAKEN FROM STOCK HISTORY TABLE MARDH
SELECT MATNR WERKS LABST INSME EINME SPEME
FROM MARDH
INTO CORRESPONDING FIELDS OF TABLE IT_MARDH1
FOR ALL ENTRIES IN IT_MARD
WHERE WERKS = PR_PLANT AND MATNR = IT_MARD-MATNR
AND LFGJA = W_YEAR AND LFMON = W_LFMON.
IF SY-SUBRC = 0.
LOOP AT IT_MARDH1 INTO WA_MARDH1.
MOVE-CORRESPONDING WA_MARDH1 TO WA_MARDH.
COLLECT WA_MARDH INTO IT_MARDH.
ENDLOOP.
ENDIF.

SELECT MATNR BWKEY LBKUM VPRSV VERPR STPRS
FROM MBEWH
INTO CORRESPONDING FIELDS OF TABLE IT_MBEWH
FOR ALL ENTRIES IN IT_MARD
WHERE BWKEY = PR_PLANT AND MATNR = IT_MARD-MATNR
AND LFGJA = W_YEAR AND LFMON = W_LFMON.
ELSE.
MESSAGE E123 WITH 'MARD' W_DATE1 SO_DATE-HIGH PR_PLANT.
ENDIF.

ENDFORM. " F002_GET_MCHB
*&---------------------------------------------------------------------*
*& Form F003_GET_MSEG
*&---------------------------------------------------------------------*
FORM F003_GET_MSEG .
IF SO_DATE-LOW = SO_DATE-HIGH.
SELECT MSEG~MBLNR
MSEG~MATNR
MSEG~WERKS
MKPF~BUDAT
MSEG~BWART
MSEG~SHKZG
MSEG~AUFNR
MSEG~LIFNR
MSEG~EBELN
MSEG~EBELP
EKPO~BEDNR
MSEG~CHARG
MSEG~MENGE
MSEG~MEINS
MSEG~SGTXT
MSEG~SOBKZ
INTO CORRESPONDING FIELDS OF TABLE IT_MSEG
FROM MSEG
INNER JOIN MKPF ON MKPF~MBLNR = MSEG~MBLNR
AND MKPF~MJAHR = MSEG~MJAHR
LEFT OUTER JOIN EKPO ON MSEG~EBELN = EKPO~EBELN
AND MSEG~EBELP = EKPO~EBELP
FOR ALL ENTRIES IN IT_MARA
WHERE MSEG~MATNR = IT_MARA-MATNR AND MKPF~BUDAT = SO_DATE-HIGH .
ELSE.
SELECT MSEG~MBLNR
MSEG~MATNR
MSEG~WERKS
MKPF~BUDAT
MSEG~BWART
MSEG~SHKZG
MSEG~AUFNR
MSEG~LIFNR
MSEG~EBELN
MSEG~EBELP
EKPO~BEDNR
MSEG~CHARG
MSEG~MENGE
MSEG~MEINS
MSEG~SGTXT
MSEG~SOBKZ
INTO CORRESPONDING FIELDS OF TABLE IT_MSEG
FROM MSEG
INNER JOIN MKPF ON MKPF~MBLNR = MSEG~MBLNR
AND MKPF~MJAHR = MSEG~MJAHR
LEFT OUTER JOIN EKPO ON MSEG~EBELN = EKPO~EBELN
AND MSEG~EBELP = EKPO~EBELP
FOR ALL ENTRIES IN IT_MARA
WHERE MSEG~MATNR = IT_MARA-MATNR AND
MKPF~BUDAT BETWEEN W_DATE1 AND SO_DATE-HIGH .
ENDIF.

* READ ALL THE EXCISABLE MATERIALS FROM J_1IMTCHID.
SELECT *
FROM J_1IMTCHID
INTO CORRESPONDING FIELDS OF TABLE IT_J_1IMTCHID.

* READ PROCESS ORDER NUMBERS FROM AFPO
SELECT *
FROM AFPO
INTO CORRESPONDING FIELDS OF TABLE IT_AFPO
FOR ALL ENTRIES IN IT_MSEG
WHERE AUFNR = IT_MSEG-AUFNR.


IF SY-SUBRC = 0.
LOOP AT IT_MARD INTO WA_MARD.
IT_MSEG1[] = IT_MSEG[].
DELETE IT_MSEG1 WHERE MATNR NE WA_MARD-MATNR.
DELETE IT_MSEG1 WHERE NOT BWART IN R_MOVR.

LOOP AT IT_MSEG1 INTO WA_MSEG WHERE BWART IN R_MOVR AND
MATNR = WA_MARD-MATNR AND WERKS =
PR_PLANT.
IF WA_MSEG-SHKZG = 'S'.
W_RMENGE = W_RMENGE + WA_MSEG-MENGE .
ENDIF.

IF WA_MSEG-SHKZG = 'H'.
W_IMENGE = W_IMENGE + WA_MSEG-MENGE .
ENDIF.

AT END OF BUDAT.
W_IMENGE = W_IMENGE * ( -1 ).
WA_R-MATNR = WA_MARD-MATNR.
WA_R-WERKS = PR_PLANT.
WA_R-BUDAT = WA_MSEG-BUDAT.
WA_R-MENGE = W_RMENGE + W_IMENGE.
COLLECT WA_R INTO IT_R.
CLEAR : W_RMENGE,W_IMENGE,WA_R.
ENDAT.
ENDLOOP.


IT_MSEG1[] = IT_MSEG[].
DELETE IT_MSEG1 WHERE MATNR NE WA_MARD-MATNR.
DELETE IT_MSEG1 WHERE NOT BWART IN R_MOVUE.

LOOP AT IT_MSEG1 INTO WA_MSEG WHERE BWART IN R_MOVUE AND
MATNR = WA_MARD-MATNR AND AUFNR <> '' AND
WERKS = PR_PLANT.

IF WA_MSEG-SHKZG = 'S'.
W_RMENGE = W_RMENGE + WA_MSEG-MENGE .
ENDIF.

IF WA_MSEG-SHKZG = 'H'.
W_IMENGE = W_IMENGE + WA_MSEG-MENGE .
ENDIF.

READ TABLE IT_AFPO INTO WA_AFPO WITH KEY AUFNR = WA_MSEG-AUFNR.
IF SY-SUBRC = 0.
READ TABLE IT_J_1IMTCHID INTO WA_J_1IMTCHID
WITH KEY MATNR = WA_AFPO-MATNR.
IF SY-SUBRC = 0.
AT END OF BUDAT.
W_RMENGE = W_RMENGE * ( -1 ).
WA_UE-MATNR = WA_MARD-MATNR.
WA_UE-WERKS = PR_PLANT.
WA_UE-BUDAT = WA_MSEG-BUDAT.
WA_UE-MENGE = W_IMENGE + W_RMENGE.
COLLECT WA_UE INTO IT_UE.
CLEAR : W_RMENGE,W_IMENGE,WA_UE.
ENDAT.
ELSE.
AT END OF BUDAT.
W_RMENGE = W_RMENGE * ( -1 ).
WA_UO-MATNR = WA_MARD-MATNR.
WA_UO-WERKS = PR_PLANT.
WA_UO-BUDAT = WA_MSEG-BUDAT.
WA_UO-MENGE = W_IMENGE + W_RMENGE.
COLLECT WA_UO INTO IT_UO.
CLEAR : W_RMENGE,W_IMENGE,WA_UO.
ENDAT.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.

ENDFORM. " F003_GET_MSEG
*&---------------------------------------------------------------------*
*& Form F004_DISPDATA
*&---------------------------------------------------------------------*
FORM F004_DISPDATA .

*DATA : LW_MATNR LIKE MARA-MATNR,
* LW_MAKTX LIKE MAKT-MAKTX,
* LW_DAT1 TYPE D,
* LW_DAT2 TYPE D.
*
* DATA : LF_FORMNAME TYPE TDSFNAME.
*
* CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
* EXPORTING
* FORMNAME = 'ZVVF_ML045_FORMIV_REG'
* IMPORTING
* FM_NAME = LF_FORMNAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3.
*
* IF SY-SUBRC = 0.
* CALL FUNCTION LF_FORMNAME
* EXPORTING
* W_MATNR = SO_MATNR-LOW
* W_MAKTX = W_MAKTX
* W_FDATE = SO_DATE-LOW
* W_TDATE = SO_DATE-HIGH
* TABLES
* IT_DISPLAY = IT_DISPLAY
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* USER_CANCELED = 4
* OTHERS = 5.
*
* ENDIF.
*
LOOP AT IT_MARD INTO WA_MARD.

DATA : LW_MENGE_O(14) TYPE C.
DATA : LW_MENGE_R(14) TYPE C.
DATA : LW_MENGE_T(14) TYPE C.
DATA : LW_MENGE_UO(14) TYPE C.
DATA : LW_MENGE_UE(14) TYPE C.
DATA : LW_MENGE_C(14) TYPE C.

new-page. "New Page for every material

*LW_MATNR = WA_MARD-MATNR.
*LW_MAKTX = WA_MARD-MAKTX.
*LW_DAT1 = SO_DATE-LOW.
*LW_DAT2 = SO_DATE-HIGH.
*
*WRITE : /120 'FORM IV'.
*WRITE : /100 'ACCOUNT OF RAW MATERIALS AND COMPONENTS'.
*WRITE : /117 '(RULE 173G)'.
*
*
*SKIP 2.
*WRITE : /3 'Material Number',18 LW_MATNR,38 'Material Description',60
*lw_maktx,110 'Month',118 LW_DAT1, 'TO', LW_DAT2.
*
*SKIP 2.
*ULINE AT 3(246).

* WRITE : /3 sy-vline, 4(12) 'DATE' CENTERED,16
* sy-vline, 17(19) 'OPENING BALANCE' CENTERED,36
* sy-vline, 37(18) 'QUANTITY RECEIVED' CENTERED,55
* sy-vline, 56(10) 'TOTAL(A)' CENTERED,66
* sy-vline, 67(30) 'QTY USED IN THE' CENTERED,97
* sy-vline, 98(30) 'QTY OTHERWISE' CENTERED,128
* sy-vline, 129(20) 'QTY WASTED' CENTERED,149
* sy-vline, 150(16) 'CLOSING BALANCE' CENTERED,166
* sy-vline, 167(20) 'QTY OF EXCISABLE' CENTERED,187
* sy-vline, 188(20) 'QTY OF OTHER' CENTERED,208
* sy-vline, 209(20) 'REMARKS' CENTERED,229
* sy-vline, 230(16) 'SIGN OF THE' CENTERED,246
* sy-vline.
*
*
*WRITE : /3 sy-vline, 16
* sy-vline, 36
* sy-vline, 55
* sy-vline, 66
* sy-vline, 67(30) 'MANUFACTURE OF (B)' CENTERED,97
* sy-vline, 98(30) 'DEPOSITED TO' CENTERED,128
* sy-vline, 129(20) 'OR DESTROYED' CENTERED,149
* sy-vline, 166
* sy-vline, 167(20) 'GOODS MANUFACTURED' CENTERED,187
* sy-vline, 188(20) 'GOODS MANUFACTURED' CENTERED,208
* sy-vline, 229
* sy-vline, 230(16) 'ASSESSE OR HIS' CENTERED,246
* sy-vline.
*
*WRITE : /3 sy-vline, 16
* sy-vline, 36
* sy-vline, 55
* sy-vline, 66
* sy-vline, 97
* sy-vline, 128
* sy-vline, 149
* sy-vline, 166
* sy-vline, 187
* sy-vline, 208
* sy-vline, 229
* sy-vline, 230(16) 'AGENT' CENTERED,246
* sy-vline.
*ULINE AT 67(30).
*ULINE AT 98(30).
*
*WRITE : /3 SY-VLINE,16
* sy-vline, 36
* sy-vline, 55
* SY-VLINE, 66
* SY-VLINE,67(15) 'EXCISABLE GOODS' CENTERED,81
* SY-VLINE,82(15) 'OTHER GOODS',97
* sy-vline, 98(20) 'NATURE OF DISPOSAL' CENTERED,117
* SY-VLINE,118(10) 'QUANTITY',128
* SY-VLINE,149
* SY-VLINE,166
* SY-VLINE,187
* SY-VLINE,208
* SY-VLINE,229
* SY-VLINE,246
* sy-vline.
*
*
*ULINE AT /3(246).
*
LOOP AT IT_DISPLAY WHERE MATNR = WA_MARD-MATNR.

LW_MENGE_O = IT_DISPLAY-MENGE_O.
LW_MENGE_R = IT_DISPLAY-MENGE_R.
LW_MENGE_T = IT_DISPLAY-MENGE_T.
LW_MENGE_UE = IT_DISPLAY-MENGE_UE.
LW_MENGE_UO = IT_DISPLAY-MENGE_UO.
LW_MENGE_C = IT_DISPLAY-MENGE_C.


CONDENSE LW_MENGE_O.
CONDENSE LW_MENGE_R.
CONDENSE LW_MENGE_T.
CONDENSE LW_MENGE_UE.
CONDENSE LW_MENGE_UO.
CONDENSE LW_MENGE_C.


WRITE : /3 sy-vline, 4(12) IT_DISPLAY-TDATE CENTERED,16
sy-vline, 17(19) LW_MENGE_O CENTERED,36
sy-vline, 37(18) LW_MENGE_R CENTERED,55
sy-vline, 56(10) LW_MENGE_T CENTERED,66
sy-vline, 67(15) LW_MENGE_UE CENTERED,81
SY-VLINE, 82(15) LW_MENGE_UO CENTERED,97
SY-VLINE, 117
sy-vline, 128
sy-vline, 149
sy-vline, 150(16) LW_MENGE_C CENTERED,166
sy-vline, 187
sy-vline, 208
sy-vline, 229
sy-vline, 246
sy-vline.


ULINE AT /3(246).


ENDLOOP.
SKIP 3.

ENDLOOP.

ENDFORM. " F004_DISPDATA
*&---------------------------------------------------------------------*
*& Form F005_FISCAL_PERIOD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_W_DATE1 text
* <--P_W_BUPER text
* <--P_W_YEAR text
*----------------------------------------------------------------------*
FORM F005_FISCAL_PERIOD USING P_W_DATE1
CHANGING P_W_BUPER
P_W_YEAR.
*FIND FISCALYEAR AND MONTH OF PREVIOUS YEAR & MONTH
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = P_W_DATE1
I_PERIV = 'V3'
IMPORTING
E_BUPER = P_W_BUPER
E_GJAHR = P_W_YEAR.

ENDFORM. " F005_FISCAL_PERIOD
*&---------------------------------------------------------------------*
*& Form F005_DATA_SUM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F005_DATA_SUM .
SORT IT_MARD STABLE BY MATNR.
W_DATE2 = SO_DATE-LOW.
W_DATE3 = SO_DATE-LOW - 1.
W_MON = ( SO_DATE-HIGH+6(2) - SO_DATE-LOW+6(2) ) + 1.
LOOP AT IT_MARD INTO WA_MARD.
DO W_MON TIMES.
W_INDEX = SY-INDEX.
WA_DISPLAY-TDATE = W_DATE2.
IF W_INDEX = 1.
READ TABLE IT_MBEWH INTO WA_MBEWH WITH KEY MATNR = WA_MARD-MATNR.
IF SY-SUBRC = 0.
WA_DISPLAY-MENGE_O = WA_MBEWH-LBKUM.
ENDIF.
PERFORM F006_GET_QTY.
IF NOT SO_DATE-LOW+6(2) = '01'.
WA_DISPLAY-MENGE_O = WA_DISPLAY-MENGE_C.
ENDIF.
ELSE.
WA_DISPLAY-MENGE_O = W_MENGE.
PERFORM F006_GET_QTY.
ENDIF.
WA_DISPLAY-MENGE_T = WA_DISPLAY-MENGE_O + WA_DISPLAY-MENGE_R.
WA_DISPLAY-MENGE_C = WA_DISPLAY-MENGE_T - ( WA_DISPLAY-MENGE_UE +
WA_DISPLAY-MENGE_UO ).
W_MENGE = WA_DISPLAY-MENGE_C.
***-----ADDED BY VINOD
WA_DISPLAY-MATNR = WA_MARD-MATNR.
***-----END OF ADDITIONS
APPEND WA_DISPLAY TO IT_DISPLAY.
CLEAR : WA_DISPLAY.
W_DATE2 = W_DATE2 + 1.
ENDDO.
W_DATE2 = SO_DATE-LOW.
CLEAR : W_INDEX,W_MENGE,WA_DISPLAY.
ENDLOOP.

ENDFORM. " F005_DATA_SUM
*&---------------------------------------------------------------------*
*& Form F006_GET_QTY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F006_GET_QTY .
LOOP AT IT_R INTO WA_R WHERE WERKS = PR_PLANT
AND MATNR = WA_MARD-MATNR AND BUDAT = W_DATE2.
W_R = W_R + WA_R-MENGE.
ENDLOOP.

LOOP AT IT_UE INTO WA_UE WHERE WERKS = PR_PLANT
AND MATNR = WA_MARD-MATNR AND BUDAT = W_DATE2.
W_UE = W_UE + WA_UE-MENGE.
ENDLOOP.
LOOP AT IT_UO INTO WA_UO WHERE WERKS = PR_PLANT
AND MATNR = WA_MARD-MATNR AND BUDAT = W_DATE2.
W_UO = W_UO + WA_UO-MENGE.
ENDLOOP.

WA_DISPLAY-MENGE_R = W_R.
WA_DISPLAY-MENGE_UE = W_UE.
WA_DISPLAY-MENGE_UO = W_UO.

CLEAR : W_R, W_UE, W_UO.

ENDFORM. " F006_GET_QTY


*&---------------------------------------------------------------------*
*& Form f001_validate
*&---------------------------------------------------------------------*

FORM f001_validate .

IF SO_DATE-HIGH IS INITIAL.
SO_DATE-HIGH = SO_DATE-LOW.
ENDIF.

*----COMMENTED BY VINOD

* SELECT MATNR FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA
* WHERE MATNR IN SO_MATNR AND MTART = PR_MTART.
*
* READ TABLE IT_MARA INTO WA_MARA INDEX 1.
*
* SELECT SINGLE MAKTX FROM MAKT
* INTO W_MAKTX
* WHERE MATNR = WA_MARA-MATNR.

*----END OF COMMENTS BY VINOD


*------------addition by vinod.

SELECT MA~MATNR MK~MAKTX
FROM MARA AS MA INNER JOIN
MAKT AS MK
ON MA~MATNR = MK~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_MARA
WHERE MA~MATNR IN SO_MATNR AND
MA~MTART = PR_MTART AND
MK~SPRAS = SY-LANGU.
IF SY-SUBRC NE 0.
MESSAGE e135.
ENDIF.

*------------end of additions.


ENDFORM. " f001_validate

No comments:

link us...

For Visitors

if you want to publish or Add something on ERP, SAP , SAP FUNCTIONAL, SAP ABAP then mail us along with your email-id. contain must be yours

email-id :- avinashkr_raj@yahoo.com(any email)

email-id :- avinaskr_raj.abap@blogger.com ( use only gmail)