Skip to Content
0
Former Member
Nov 24, 2006 at 07:27 AM

Classical Report

24 Views

Hi,

I'm pasting my code below:

Actually I'm calculating Variance by the function module 'SD_DATETIME_DIFFERENCE' but it is giving correct output if records taken individually & in loop it is taking the last value in header for all the records in loop.pls rectify my prob.

SELECT MBLNR MJAHR BUDAT1 ETIME FROM ZGEXIT INTO TABLE ITAB

WHERE MBLNR in IMBLNR and MJAHR = IMJAHR and BUDAT1 IN S_BUDAT .

IF SY-SUBRC = 0.

SELECT MBLNR MJAHR WERKS LGORT FROM MSEG

INTO CORRESPONDING FIELDS OF table ITAB1

for all entries in ITAB

WHERE MBLNR = ITAB-MBLNR AND MJAHR = ITAB-MJAHR.

SELECT MBLNR MJAHR BUDAT OIB_BLTIME FROM MKPF INTO CORRESPONDING

FIELDS OF table ITAB2 for all entries in itab

WHERE MBLNR = ITAB-MBLNR

AND MJAHR = ITAB-MJAHR.

ENDIF.

SORT ITAB1 BY MBLNR MJAHR.

SORT ITAB2 BY MBLNR MJAHR.

LOOP AT ITAB. " WHERE MBLNR = IMBLNR OR BUDAT1 IN S_BUDAT.

READ TABLE ITAB1 WITH KEY MBLNR = ITAB-MBLNR

MJAHR = ITAB-MJAHR BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING ITAB1 TO ITAB.

ENDIF.

READ TABLE ITAB2 WITH KEY MBLNR = ITAB-MBLNR

MJAHR = ITAB-MJAHR BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING ITAB2 TO ITAB.

ENDIF.

MODIFY ITAB TRANSPORTING WERKS LGORT BUDAT OIB_BLTIME.

CALL FUNCTION 'SD_DATETIME_DIFFERENCE'

EXPORTING

DATE1 = ITAB-BUDAT

TIME1 = ITAB-OIB_BLTIME

DATE2 = ITAB-BUDAT1

TIME2 = ITAB-ETIME

IMPORTING

DATEDIFF = ZDATE

TIMEDIFF = ZTIME

  • EARLIEST =

EXCEPTIONS

INVALID_DATETIME = 1

OTHERS = 2

.

VARIANCE = ( ZDATE * 24 ) + ZTIME.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

MODIFY ITAB TRANSPORTING VARIANCE WHERE MBLNR in IMBLNR and

MJAHR = IMJAHR and BUDAT1 IN S_BUDAT.

ENDIF.

CLEAR: ITAB, ITAB1, ITAB2.

ENDLOOP.

Helpful answers will be rewarded.

Regards,

Sipra