Go on link..

link us with ...

Tuesday, December 28, 2010

Tracking C-Forms, H-Forms, Form-51 & Form 14B

REPORT ZVVF_MM008_FRM_TRACK NO STANDARD PAGE HEADING .
*---------------------------------------------------------------------*
* *
* MODULE : Material Management *
* *
*---------------------------------------------------------------------*
* Objective : Tracking C-Forms, H-Forms, Form-51 & Form 14B *
* *
* Program : Update Tables (X) Download Data ( ) Outputs List ( )*
* Technical Specs No : *
*
* LDB : *
* *
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* Tables *
*---------------------------------------------------------------------*
TABLES :EKKO, "Purchasing Document Header
EKPO, "Purchasing Document Item
MKPF, "Header: Material Document
MSEG, "Document Segment: Material
RBKP, "Document Header: Invoice Receipt
BKPF, "Accounting Document Header
LFA1, "Vendor Master (General Section)
ZVVF_MT008_FRMTR,"Data For Form Tracking
ZVVF_MT008_FORM. "Form Types and Related Tax Codes

*----------------------------------------------------------------------*
* STRUCTURES : Begin with WA_ *
*----------------------------------------------------------------------*
DATA : WA_FRMTR TYPE ZVVF_MT008_FRMTR,
WA_FRMTR1 TYPE ZVVF_MT008_FRMTR,
WA_LFA1 TYPE LFA1,
WA_TAX TYPE ZVVF_MT008_FORM.

DATA : BEGIN OF WA_MSEG,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
MBLNR TYPE MBLNR,
MJAHR TYPE MJAHR,
BLDAT TYPE BLDAT,
MENGE TYPE MENGE_D,
LFBNR TYPE LFBNR,
END OF WA_MSEG.

DATA : BEGIN OF WA_RSEG,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BLDAT TYPE BLDAT,
MENGE TYPE MENGE_D,
RMWWR TYPE RMWWR,
XBLNR TYPE XBLNR1,
LIFNR TYPE LIFNR,
LFBNR TYPE LFBNR,
END OF WA_RSEG.
DATA : WA_RSEG1 LIKE WA_RSEG.

*----------------------------------------------------------------------*
* INTERNAL TABLES: Begin with IT_ *
*----------------------------------------------------------------------*
DATA: IT_FRMTR LIKE TABLE OF WA_FRMTR WITH HEADER LINE,
IT_FRMTR1 LIKE TABLE OF WA_FRMTR WITH HEADER LINE,
IT_FRMTR2 LIKE TABLE OF WA_FRMTR WITH HEADER LINE,
IT_LFA1 LIKE SORTED TABLE OF LFA1 WITH UNIQUE KEY LIFNR,
IT_MSEG LIKE SORTED TABLE OF WA_MSEG WITH HEADER LINE
WITH NON-UNIQUE KEY EBELN EBELP MBLNR,
IT_MSEG1 LIKE SORTED TABLE OF WA_MSEG WITH HEADER LINE
WITH NON-UNIQUE KEY EBELN EBELP MBLNR,
IT_RSEG LIKE SORTED TABLE OF WA_RSEG WITH NON-UNIQUE KEY EBELN
EBELP BELNR WITH HEADER LINE,
IT_RSEG1 LIKE SORTED TABLE OF WA_RSEG WITH NON-UNIQUE KEY EBELN
EBELP BELNR WITH HEADER LINE,
IT_DBFRMTR LIKE SORTED TABLE OF WA_FRMTR WITH HEADER LINE WITH
NON-UNIQUE KEY EBELN EBELP MBLNR BELNR,
IT_TAX LIKE TABLE OF ZVVF_MT008_FORM WITH HEADER LINE.

*----------------------------------------------------------------------*
* DATA : Begin with W_ *
*----------------------------------------------------------------------*
DATA : W_ITEMFLAG TYPE I,
W_LINNO TYPE I.

*----------------------------------------------------------------------*
* CONSTANTS : Begin with C_ *
*----------------------------------------------------------------------*
CONSTANTS : C_BWART1(3) VALUE '101',
C_BWART2(3) VALUE '102',
C_BWART3(3) VALUE '105',
C_BWART4(3) VALUE '106'.

*----------------------------------------------------------------------*
* SELECTION SCREEN *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK FORMTRACK WITH FRAME TITLE TEXT-001.
PARAMETERS : PR_BUKRS TYPE BUKRS OBLIGATORY, "Company Code
PR_WERKS TYPE WERKS_D OBLIGATORY. "Plant

SELECT-OPTIONS : SO_EBELN FOR EKKO-EBELN, "Purchase Order No.
SO_BEDAT FOR EKKO-BEDAT OBLIGATORY, "Purchase Order
"Document Date
SO_MWSKZ FOR ZVVF_MT008_FORM-MWSKZ OBLIGATORY. "Tax-
" Code
SELECTION-SCREEN END OF BLOCK FORMTRACK.

*----------------------------------------------------------------------*
* START-OF-SELECTION *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM F001_GET_DATA.


*----------------------------------------------------------------------*
* END-OF-SELECTION *
*----------------------------------------------------------------------*
WRITE TEXT-005.
*&---------------------------------------------------------------------*
*& Form F001_GET_DATA
*&---------------------------------------------------------------------*
FORM F001_GET_DATA .

SELECT MWSKZ FRMTYPE INTO CORRESPONDING FIELDS OF TABLE IT_TAX
FROM ZVVF_MT008_FORM
WHERE MWSKZ IN SO_MWSKZ.

SELECT EK~EBELN EBELP MWSKZ
INTO CORRESPONDING FIELDS OF TABLE IT_FRMTR
FROM EKKO AS EK INNER JOIN EKPO AS EP ON EK~EBELN = EP~EBELN
WHERE EK~EBELN IN SO_EBELN AND EK~BUKRS = PR_BUKRS
AND BEDAT IN SO_BEDAT AND EP~WERKS = PR_WERKS
AND MWSKZ IN SO_MWSKZ.

IF SY-SUBRC = 0.

SELECT MS~EBELN MS~EBELP MK~MBLNR MK~MJAHR MK~BLDAT MS~MENGE
MS~LFBNR MS~BWART
INTO CORRESPONDING FIELDS OF TABLE IT_MSEG
FROM MSEG AS MS INNER JOIN MKPF AS MK ON MS~MBLNR = MK~MBLNR
AND MS~MJAHR = MK~MJAHR
WHERE EBELN IN SO_EBELN AND WERKS = PR_WERKS AND EBELN <> ''
AND BWART IN (C_BWART1,C_BWART2,C_BWART3,C_BWART4).

IF SY-SUBRC = 0.
INSERT LINES OF IT_MSEG INTO TABLE IT_MSEG1.
ENDIF.

SELECT EBELN EBELP RK~BELNR RK~BLDAT RK~GJAHR RMWWR RK~XBLNR
RK~LIFNR LFBNR MENGE
INTO CORRESPONDING FIELDS OF TABLE IT_RSEG
FROM RSEG AS RS INNER JOIN RBKP AS RK ON RS~BELNR = RK~BELNR
AND RS~GJAHR = RK~GJAHR
WHERE EBELN IN SO_EBELN AND RS~BUKRS = PR_BUKRS AND WERKS = PR_WERKS
AND MWSKZ IN SO_MWSKZ.

IF SY-SUBRC NE 0.
ENDIF.

SELECT LIFNR NAME1 FROM LFA1
INTO CORRESPONDING FIELDS OF TABLE IT_LFA1
FOR ALL ENTRIES IN IT_RSEG
WHERE LIFNR = IT_RSEG-LIFNR.

IF SY-SUBRC NE 0.
ENDIF.

LOOP AT IT_FRMTR INTO WA_FRMTR.
W_ITEMFLAG = 0.
LOOP AT IT_MSEG WHERE EBELN = WA_FRMTR-EBELN AND EBELP =
WA_FRMTR-EBELP.
IF IT_MSEG-EBELN = WA_FRMTR-EBELN "IF SIN/MUL GRN
AND IT_MSEG-EBELP = WA_FRMTR-EBELP.
AT END OF MBLNR.
IT_FRMTR1-EBELN = WA_FRMTR-EBELN.
IT_FRMTR1-EBELP = WA_FRMTR-EBELP.
IT_FRMTR1-MWSKZ = WA_FRMTR-MWSKZ.
IT_FRMTR1-MBLNR = IT_MSEG-MBLNR.
IT_FRMTR1-MJAHR = IT_MSEG-MJAHR.
IT_FRMTR1-GBLDAT = IT_MSEG-BLDAT.
SUM.
W_ITEMFLAG = 1.
IT_FRMTR1-GMENGE = IT_MSEG-MENGE.
READ TABLE IT_MSEG1 WITH KEY EBELN = WA_FRMTR-EBELN
EBELP = WA_FRMTR-EBELP MBLNR = IT_MSEG-MBLNR.
IT_FRMTR1-MJAHR = IT_MSEG1-MJAHR.
IT_FRMTR1-GBLDAT = IT_MSEG1-BLDAT.
IT_FRMTR1-LFBNR = IT_MSEG1-LFBNR. "ADDED 11TH MAR
APPEND IT_FRMTR1.
ENDAT.
ENDIF.
ENDLOOP.

IF W_ITEMFLAG = 0. "IF NO GRN AGAINST PO
INSERT WA_FRMTR INTO TABLE IT_FRMTR1.
ENDIF.
ENDLOOP.

SORT IT_FRMTR1 ASCENDING.

LOOP AT IT_FRMTR1 INTO WA_FRMTR.
REFRESH IT_RSEG1.
LOOP AT IT_RSEG INTO WA_RSEG WHERE EBELN = WA_FRMTR-EBELN
AND EBELP = WA_FRMTR-EBELP.
INSERT WA_RSEG INTO TABLE IT_RSEG1.
ENDLOOP.
IF WA_FRMTR-MBLNR IS INITIAL. "NO GRN BUT INVOICE
READ TABLE IT_RSEG1 INTO WA_RSEG WITH KEY
EBELN = WA_FRMTR-EBELN EBELP = WA_FRMTR-EBELP BINARY SEARCH.
IF SY-SUBRC = 0. "IF INVOICE NO.EXISTS MODIFY ITAB
WA_FRMTR1-EBELN = WA_FRMTR-EBELN.
WA_FRMTR1-EBELP = WA_FRMTR-EBELP.
WA_FRMTR1-MBLNR = WA_FRMTR-MBLNR.
WA_FRMTR1-MJAHR = WA_FRMTR-MJAHR.
WA_FRMTR1-MWSKZ = WA_FRMTR-MWSKZ.
WA_FRMTR1-GBLDAT = WA_FRMTR-GBLDAT.
WA_FRMTR1-GMENGE = WA_FRMTR-GMENGE.
WA_FRMTR1-LFBNR = WA_FRMTR-LFBNR.
WA_FRMTR1-BELNR = WA_RSEG-BELNR.
WA_FRMTR1-GJAHR = WA_RSEG-GJAHR.
WA_FRMTR1-IBLDAT = WA_RSEG-BLDAT.
WA_FRMTR1-RMWWR = WA_RSEG-RMWWR.
WA_FRMTR1-XBLNR = WA_RSEG-XBLNR.
WA_FRMTR1-LIFNR = WA_RSEG-LIFNR.
WA_FRMTR1-IMENGE = WA_RSEG-MENGE.
MODIFY IT_FRMTR1 FROM WA_FRMTR1.
READ TABLE IT_LFA1 INTO WA_LFA1
WITH KEY LIFNR = WA_RSEG-LIFNR BINARY SEARCH.
IF SY-SUBRC = 0.
WA_FRMTR1-NAME1 = WA_LFA1-NAME1.
ENDIF.
READ TABLE IT_TAX INTO WA_TAX WITH KEY
MWSKZ = WA_FRMTR1-MWSKZ.
IF SY-SUBRC = 0.
WA_FRMTR1-FRMTYPE = WA_TAX-FRMTYPE.
ENDIF.
INSERT WA_FRMTR1 INTO TABLE IT_FRMTR2.
ELSE. "DELETE RECORD FROM ITAB
DELETE IT_FRMTR1.
ENDIF.

ELSEIF WA_FRMTR-MBLNR IS NOT INITIAL AND "GRN & NO REF DOC
WA_FRMTR-LFBNR IS INITIAL.
READ TABLE IT_RSEG1 INTO WA_RSEG WITH KEY
EBELN = WA_FRMTR-EBELN EBELP = WA_FRMTR-EBELP .
IF SY-SUBRC = 0. "IF INVOICE NO.EXISTS MODIFY ITAB
WA_FRMTR1-EBELN = WA_FRMTR-EBELN.
WA_FRMTR1-EBELP = WA_FRMTR-EBELP.
WA_FRMTR1-MBLNR = WA_FRMTR-MBLNR.
WA_FRMTR1-MJAHR = WA_FRMTR-MJAHR.
WA_FRMTR1-MWSKZ = WA_FRMTR-MWSKZ.
WA_FRMTR1-GBLDAT = WA_FRMTR-GBLDAT.
WA_FRMTR1-GMENGE = WA_FRMTR-GMENGE.
WA_FRMTR1-LFBNR = WA_FRMTR-LFBNR.
WA_FRMTR1-BELNR = WA_RSEG-BELNR.
WA_FRMTR1-GJAHR = WA_RSEG-GJAHR.
WA_FRMTR1-IBLDAT = WA_RSEG-BLDAT.
WA_FRMTR1-RMWWR = WA_RSEG-RMWWR.
WA_FRMTR1-XBLNR = WA_RSEG-XBLNR.
WA_FRMTR1-LIFNR = WA_RSEG-LIFNR.
WA_FRMTR1-IMENGE = WA_RSEG-MENGE.
MODIFY IT_FRMTR1 FROM WA_FRMTR1.
READ TABLE IT_LFA1 INTO WA_LFA1
WITH KEY LIFNR = WA_RSEG-LIFNR BINARY SEARCH.
IF SY-SUBRC = 0.
WA_FRMTR1-NAME1 = WA_LFA1-NAME1.
ENDIF.
READ TABLE IT_TAX INTO WA_TAX WITH KEY
MWSKZ = WA_FRMTR1-MWSKZ.
IF SY-SUBRC = 0.
WA_FRMTR1-FRMTYPE = WA_TAX-FRMTYPE.
ENDIF.
INSERT WA_FRMTR1 INTO TABLE IT_FRMTR2 .
ELSE. "DELETE RECORD FROM ITAB
DELETE IT_FRMTR1.
ENDIF.

ELSEIF WA_FRMTR-MBLNR IS NOT INITIAL "MULTIPLE GRN AGAINST INV.
AND WA_FRMTR-LFBNR IS NOT INITIAL.
DESCRIBE TABLE IT_RSEG1 LINES W_LINNO.
IF W_LINNO > 0.
LOOP AT IT_RSEG1 INTO WA_RSEG1.
READ TABLE IT_RSEG1 INTO WA_RSEG WITH KEY
EBELN = WA_FRMTR-EBELN EBELP = WA_FRMTR-EBELP LFBNR =
WA_FRMTR-LFBNR. "WA_FRMTR-MBLNR
IF SY-SUBRC = 0. "IF INVOICE NO.EXISTS MODIFY ITAB
WA_FRMTR1-EBELN = WA_FRMTR-EBELN.
WA_FRMTR1-EBELP = WA_FRMTR-EBELP.
WA_FRMTR1-MBLNR = WA_FRMTR-MBLNR.
WA_FRMTR1-MJAHR = WA_FRMTR-MJAHR.
WA_FRMTR1-MWSKZ = WA_FRMTR-MWSKZ.
WA_FRMTR1-GBLDAT = WA_FRMTR-GBLDAT.
WA_FRMTR1-GMENGE = WA_FRMTR-GMENGE.
WA_FRMTR1-LFBNR = WA_FRMTR-LFBNR.
WA_FRMTR1-BELNR = WA_RSEG1-BELNR.
WA_FRMTR1-GJAHR = WA_RSEG1-GJAHR.
WA_FRMTR1-IBLDAT = WA_RSEG1-BLDAT.
WA_FRMTR1-RMWWR = WA_RSEG1-RMWWR.
WA_FRMTR1-XBLNR = WA_RSEG1-XBLNR.
WA_FRMTR1-LIFNR = WA_RSEG1-LIFNR.
WA_FRMTR1-IMENGE = WA_RSEG1-MENGE.
MODIFY IT_FRMTR1 FROM WA_FRMTR1.
READ TABLE IT_LFA1 INTO WA_LFA1
WITH KEY LIFNR = WA_RSEG-LIFNR BINARY SEARCH.
IF SY-SUBRC = 0.
WA_FRMTR1-NAME1 = WA_LFA1-NAME1.
ENDIF.
READ TABLE IT_TAX INTO WA_TAX WITH KEY
MWSKZ = WA_FRMTR1-MWSKZ.
IF SY-SUBRC = 0.
WA_FRMTR1-FRMTYPE = WA_TAX-FRMTYPE.
ENDIF.
INSERT WA_FRMTR1 INTO TABLE IT_FRMTR2.
ELSE. "DELETE RECORD FROM ITAB
DELETE IT_FRMTR1.
ENDIF.
ENDLOOP.
ELSE.
DELETE IT_FRMTR1.
ENDIF.
ENDIF.
ENDLOOP.


*APPEND DATA WHICH DOES NOT EXIST.
SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_DBFRMTR
FROM ZVVF_MT008_FRMTR
WHERE EBELN IN SO_EBELN.

IF SY-SUBRC = 0. "IF DATA FOUND APPEND DATA WHICH NOT
"FOUND IN DB TABLE.
LOOP AT IT_FRMTR2 INTO WA_FRMTR.
READ TABLE IT_DBFRMTR WITH KEY EBELN = WA_FRMTR-EBELN
EBELP = WA_FRMTR-EBELP MBLNR = WA_FRMTR-MBLNR
MJAHR = WA_FRMTR-MJAHR BELNR = WA_FRMTR-BELNR
GJAHR = WA_FRMTR-GJAHR.
IF SY-SUBRC <> 0. "NOT FOUND
INSERT ZVVF_MT008_FRMTR FROM WA_FRMTR.
ENDIF.
ENDLOOP.
ELSE. "INSERT INTERNAL TABLE INTO DB TABLE.
INSERT ZVVF_MT008_FRMTR FROM TABLE IT_FRMTR2.
ENDIF.
ENDIF.
ENDFORM. " F001_GET_DATA

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)