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