Sunteți pe pagina 1din 8

*&---------------------------------------------------------------------*

*& Report ZREAL_TIME_MM


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZREAL_TIME_MM
NO STANDARD PAGE HEADING.
*LINE-COUNT 25(2)><
*PAGE-COUNT 200.
TABLES : VBAK.
SELECT-OPTIONS : D_DATE FOR VBAK-ERDAT.
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
W_LAYOUT TYPE SLIS_LAYOUT_ALV.
*************FETCHING SALES ORDER INFORMATION**************
TYPES : BEGIN OF TY_SALES,
VBELN TYPE VBAK-VBELN ,
ERDAT TYPE VBAK-ERDAT ,
PSTYV TYPE VBAP-PSTYV ,
VKAUS TYPE VBAP-VKAUS,
SPART TYPE VBAP-SPART ,
KWMENG TYPE VBAP-KWMENG,
PRCTR TYPE VBAP-PRCTR ,
ERZET TYPE VBAP-ERZET,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
WERKS TYPE VBAP-WERKS,
END OF TY_SALES.
DATA : IT_SALES TYPE TABLE OF TY_SALES,
WA_SALES TYPE TY_SALES.
START-OF-SELECTION.
SELECT A~VBELN
A~ERDAT
B~PSTYV
B~VKAUS
B~SPART
B~KWMENG
B~PRCTR
B~ERZET
B~POSNR
B~MATNR
B~WERKS INTO TABLE IT_SALES
FROM VBAK AS A
INNER JOIN
VBAP AS B
ON A~VBELN = B~VBELN
WHERE A~ERDAT IN D_DATE.
* IF sy-subrc NE 0.
* MESSAGE 'No Sales orders processed on given date' TYPE 'I'.
* ELSE.
* PERFORM DISPLAY.

* ENDIF.
*************FETCHING DELIVERY INFORMATION**********
TYPES : BEGIN OF TY_LIKP,
VBELN TYPE LIKP-VBELN,
ERDAT TYPE LIKP-ERDAT,
ERZET TYPE LIKP-ERZET,
WADAT TYPE LIKP-WADAT,
END OF TY_LIKP,
BEGIN OF TY_LIPS,
VBELN TYPE LIPS-VBELN,
POSNR TYPE LIPS-POSNR,
VGBEL TYPE LIPS-VGBEL,
VGPOS TYPE LIPS-VGPOS,
END OF TY_LIPS,
BEGIN OF TY_DEL,
VBELN TYPE LIKP-VBELN,
ERDAT TYPE LIKP-ERDAT,
ERZET TYPE LIKP-ERZET,
WADAT TYPE LIKP-WADAT,
POSNR TYPE LIPS-POSNR,
VGBEL TYPE LIPS-VGBEL,
VGPOS TYPE LIPS-VGPOS,
END OF TY_DEL.
DATA : IT_DEL TYPE TABLE OF TY_DEL,
IT_LIKP TYPE TABLE OF TY_LIKP,
IT_LIPS TYPE TABLE OF TY_LIPS,
WA_DEL TYPE TY_DEL,
WA_LIKP TYPE TY_LIKP,
WA_LIPS TYPE TY_LIPS.
SELECT VBELN ERDAT ERZET WADAT
FROM LIKP INTO TABLE IT_LIKP
WHERE ERDAT IN D_DATE.
CHECK IT_LIKP[] IS NOT INITIAL.
SELECT VBELN POSNR VGBEL VGPOS
FROM LIPS INTO TABLE IT_LIPS
FOR ALL ENTRIES IN IT_LIKP
WHERE VBELN = IT_LIKP-VBELN.
LOOP AT IT_LIKP INTO WA_LIKP.
WA_DEL-VBELN = WA_LIKP-VBELN.
WA_DEL-ERDAT = WA_LIKP-ERDAT.
WA_DEL-ERZET = WA_LIKP-ERZET.
WA_DEL-WADAT = WA_LIKP-WADAT.
READ TABLE IT_LIPS INTO WA_LIPS WITH KEY VBELN = WA_LIKP-VBELN.
WA_DEL-VBELN = WA_LIPS-VBELN.
WA_DEL-POSNR = WA_LIPS-POSNR.
WA_DEL-VGBEL = WA_LIPS-VGBEL.
WA_DEL-VGPOS = WA_LIPS-VGPOS.
APPEND WA_DEL TO IT_DEL.
ENDLOOP.
************GET BUSINESS DATA********************
TYPES : BEGIN OF TY_VBKD,
VBELN TYPE VBKD-VBELN,

POSNR TYPE VBKD-POSNR,


BSTKD TYPE VBKD-BSTKD,
BSTDK TYPE VBKD-BSTDK,
END OF TY_VBKD.
DATA : IT_VBKD TYPE TABLE OF TY_VBKD,
WA_VBKD TYPE TY_VBKD.
SELECT VBELN
POSNR
BSTKD
BSTDK
FROM VBKD INTO TABLE IT_VBKD
FOR ALL ENTRIES IN IT_SALES
WHERE VBELN = IT_SALES-VBELN.
***************GET VBFA INFORMATION*****************
TYPES : BEGIN OF TY_VBFA,
VBELN TYPE VBELN_NACH,
VBELV TYPE VBFA-VBELV,
ERDAT TYPE VBFA-ERDAT,
END OF TY_VBFA.
DATA : IT_VBFA TYPE TABLE OF TY_VBFA,
WA_VBFA TYPE TY_VBFA.
SELECT VBELN
VBELV
ERDAT
FROM VBFA INTO TABLE IT_VBFA
FOR ALL ENTRIES IN IT_SALES
WHERE VBELV = IT_SALES-VBELN.
**********FETCHING SERIAL NUMBER****************
TYPES : BEGIN OF TY_SER01,
OBKNR TYPE SER01-OBKNR,
LIEFNR TYPE SER01-LIEF_NR,
POSNR TYPE SER01-posnr,
END OF TY_SER01,
BEGIN OF TY_OBJK,
OBKNR TYPE OBJK-OBKNR,
SERNR TYPE OBJK-SERNR,
MATNR TYPE OBJK-MATNR,
END OF TY_OBJK.
DATA : IT_SER01 TYPE TABLE OF TY_SER01,
IT_OBJK TYPE TABLE OF TY_OBJK,
WA_SER01 TYPE TY_SER01,
WA_OBJK TYPE TY_OBJK.
SELECT OBKNR POSNR INTO TABLE IT_SER01 FROM SER01
FOR ALL ENTRIES IN IT_LIPS
WHERE POSNR = IT_LIPS-POSNR AND
LIEF_NR = IT_LIPS-VBELN.
IF SY-subrc = 0.
SELECT OBKNR SERNR MATNR INTO TABLE IT_OBJK FROM OBJK
FOR ALL ENTRIES IN IT_SER01 WHERE OBKNR = IT_SER01-OBKNR.
ENDIF.

*********TETCHING REVENUE RECOGNITION****************


TYPES : BEGIN OF TY_BKPF,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
MONAT TYPE BKPF-MONAT,
END OF TY_BKPF.
DATA : IT_BKPF TYPE TABLE OF TY_BKPF,
WA_BKPF TYPE TY_BKPF.
SELECT BELNR
GJAHR
BLDAT
BUDAT
MONAT FROM BKPF INTO TABLE IT_BKPF FOR ALL ENTRIES IN IT_SALES
WHERE BELNR = IT_SALES-VBELN.
**********FINAL TABLE****************
TYPES : BEGIN OF TY_SD,
VBELN TYPE VBAK-VBELN ,
ERDAT TYPE VBAK-ERDAT ,
PSTYV TYPE VBAP-PSTYV ,
VKAUS TYPE VBAP-VKAUS,
SPART TYPE VBAP-SPART ,
KWMENG TYPE VBAP-KWMENG,
PRCTR TYPE VBAP-PRCTR ,
ERZET TYPE VBAP-ERZET,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
WERKS TYPE VBAP-WERKS,
WADAT TYPE LIKP-WADAT,
VGBEL TYPE LIPS-VGBEL,
VGPOS TYPE LIPS-VGPOS,
BSTKD TYPE VBKD-BSTKD,
BSTDK TYPE VBKD-BSTDK,
VBELN_NACH TYPE VBELN_NACH,
VBELV TYPE VBFA-VBELV,
SERNR TYPE OBJK-SERNR,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
MONAT TYPE BKPF-MONAT,
WEEK TYPE SCAL-WEEK,
WEEK1 TYPE SCAL-WEEK,
END OF TY_SD.
DATA : IT_SD TYPE TABLE OF TY_SD,
WA_SD TYPE TY_SD.
LOOP AT IT_SALES INTO WA_SALES.
DATA : VBAP_WEEK TYPE SCAL-WEEK.
DATA : VBAP1_WEEK TYPE SCAL-WEEK.
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING

*
*
*
*

date
= WA_SALES-ERDAT
IMPORTING
WEEK
= VBAP1_WEEK
EXCEPTIONS
DATE_INVALID
= 1
OTHERS
= 2
.
IF sy-subrc <> 0.
Implement suitable error handling here
ENDIF.

MOVE : VBAP1_WEEK+4(2) TO VBAP_WEEK.


DATA : LIKP_WEEK TYPE SCAL-WEEK.
DATA : LIKP1_WEEK TYPE SCAL-WEEK.
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
date
= WA_LIKP-WADAT
IMPORTING
WEEK
= LIKP1_WEEK
* EXCEPTIONS
*
DATE_INVALID
= 1
*
OTHERS
= 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
MOVE : LIKP1_WEEK+4(2) TO LIKP_WEEK.
WA_SD-VBELN = WA_SALES-VBELN.
WA_SD-ERDAT = WA_SALES-ERDAT.
WA_SD-PSTYV = WA_SALES-PSTYV.
WA_SD-VKAUS = WA_SALES-VKAUS.
WA_SD-SPART = WA_SALES-SPART.
WA_SD-KWMENG = WA_SALES-KWMENG.
WA_SD-PRCTR = WA_SALES-PRCTR.
WA_SD-ERZET = WA_SALES-ERZET.
WA_SD-POSNR = WA_SALES-POSNR.
WA_SD-MATNR = WA_SALES-MATNR.
WA_SD-WERKS = WA_SALES-WERKS.
WA_SD-WEEK = VBAP_WEEK.
READ TABLE IT_DEL INTO WA_DEL WITH KEY VGBEL =
WA_SD-WADAT = WA_DEL-WADAT.
WA_SD-VGBEL = WA_DEL-VGBEL.
WA_SD-VGPOS = WA_DEL-VGPOS.
WA_SD-WEEK1 = LIKP_WEEK.
READ TABLE IT_VBKD INTO WA_VBKD WITH KEY VBELN
WA_SD-BSTKD = WA_VBKD-BSTKD.
WA_SD-BSTDK = WA_VBKD-BSTDK.
READ TABLE IT_VBFA INTO WA_VBFA WITH KEY VBELV
WA_SD-VBELN = WA_VBFA-VBELN.
WA_SD-VBELV = WA_VBFA-VBELV.
WA_SD-ERDAT = WA_VBFA-ERDAT.
READ TABLE IT_OBJK INTO WA_OBJK WITH KEY MATNR
WA_SD-SERNR = WA_OBJK-SERNR.
READ TABLE IT_BKPF INTO WA_BKPF WITH KEY BELNR
WA_SD-GJAHR = WA_BKPF-GJAHR.

WA_SALES-VBELN BINARY SEARCH.

= WA_SALES-VBELN BINARY SEARCH.


= WA_SALES-VBELN BINARY SEARCH.

= WA_SALES-MATNR BINARY SEARCH.


= WA_SALES-VBELN BINARY SEARCH.

WA_SD-BLDAT = WA_BKPF-BLDAT.
WA_SD-BUDAT = WA_BKPF-BUDAT.
WA_SD-MONAT = WA_BKPF-MONAT.
APPEND WA_SD TO IT_SD.
ENDLOOP.

**********FINAL REPORT DISPALY*******************************


LOOP AT IT_SD INTO WA_SD.
WRITE:/ WA_SD-WERKS,
WA_SD-WADAT,
WA_SD-VKAUS,
WA_SD-BSTDK,
WA_SD-BSTKD,
WA_SD-VBELN,
WA_SD-ERZET,
WA_SD-WEEK,
WA_SD-ERDAT+0(4),
WA_SD-VBELN,
WA_SD-SPART,
WA_SD-BLDAT,
WA_SD-GJAHR,
WA_SD-MONAT,
WA_SD-BUDAT,
WA_SD-SPART,
WA_SD-PSTYV,
WA_SD-SERNR,
WA_SD-WEEK1,
WA_SD-WADAT+0(6),
WA_SD-VBELN,
WA_SD-KWMENG,
WA_SD-PRCTR,
WA_SD-ERDAT,
WA_SD-POSNR,
WA_SD-MATNR,
WA_SD-VKAUS,
WA_SD-VGBEL,
WA_SD-VGPOS,
WA_SD-VBELV.
CLEAR it_SD.
ENDLOOP.
**************FINAL ALV DISPALY******************
PERFORM FIELDCAT.
PERFORM LAYOUT.
*FORM DISPLAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= SY-REPID
IS_LAYOUT
= W_LAYOUT
IT_FIELDCAT
= I_FIELDCAT
TABLES

t_outtab
EXCEPTIONS
PROGRAM_ERROR
OTHERS
.

*
*
*

= IT_SD
= 1
= 2

*
IF sy-subrc eq 0.
*
*
ENDIF.
*&---------------------------------------------------------------------*
*&
Form FIELDCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form FIELDCAT .
CLEAR :
WA_FIELDCAT,
I_FIELDCAT[].
PERFORM BUILD_FCAT USING:
"Field Int.Table Column headings
'WERKS ' 'IT_SD' 'WERKS ',
'WADAT ' 'IT_SD' 'WADAT ',
'VKAUS ' 'IT_SD' 'VKAUS ',
'BSTDK' 'IT_SD' 'BSTDK',
'BSTKD' 'IT_SD' 'BSTKD',
'VBELN ' 'IT_SD' 'VBELN ',
'ERZET ' 'IT_SD' 'ERZET ',
'WEEK' 'IT_SD' 'WEEK',
'ERDAT+0(4) ' 'IT_SD' 'ERDAT ',
'VBELN ' 'IT_SD' 'VBELN ',
'SPART ' 'IT_SD' 'SPART ',
'BLDAT' 'IT_SD' 'BLDAT',
'GJAHR' 'IT_SD' 'GJAHR',
'MONAT' 'IT_SD' 'MONAT',
'BUDAT' 'IT_SD' 'BUDAT',
'SPART ' 'IT_SD' 'SPART ',
'PSTYV ' 'IT_SD' 'PSTYV ',
'SERNR' 'IT_SD' 'SERNR',
'WEEK1' 'IT_SD' 'WEEK1',
'WADAT+0(6) ' 'IT_SD' 'WADAT ',
'VBELN' 'IT_SD' 'VBELN',
'KWMENG ' 'IT_SD' 'KWMENG ',
'PRCTR ' 'IT_SD' 'PRCTR ',
'ERDAT' 'IT_SD' 'ERDAT',
'POSNR ' 'IT_SD' 'POSNR ',
'MATNR ' 'IT_SD' 'MATNR ',
'VKAUS ' 'IT_SD' 'VKAUS ',
'VGBEL ' 'IT_SD' 'VGBEL ',
'VGPOS ' 'IT_SD' 'VGPOS ',
'VBELV' 'IT_SD' 'VBELV'.
endform.
" FIELDCAT
FORM LAYOUT.
CLEAR:
W_LAYOUT.
W_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

endform.
form BUILD_FCAT using
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT_M
APPEND WA_FIELDCAT TO
CLEAR WA_FIELDCAT.
endform.

" LAYOUT
L_FIELD L_TAB L_TEXT.
= L_FIELD.
= L_TAB.
= L_TEXT.
I_FIELDCAT.
" BUILD_FCAT

S-ar putea să vă placă și