Hi Phani,
Below is code i am using.
**************************************************************************************************************
SORT source_package STABLE BY rt_serial /bic/zdateopen ASCENDING.
gt_source_package[] = source_package[].
LOOP AT gt_source_package ASSIGNING <fs_result>.
lv_tabix1 = sy-tabix.
lv_tabix2 = sy-tabix + 1.
CLEAR : lv_match.
AT NEW ship_to.
lv_ship_to = <fs_result>-ship_to.
ENDAT.
SELECT SINGLE timesec FROM zam_time INTO lv_timesec.
READ TABLE gt_source_package INTO gw_source_package INDEX lv_tabix2.
IF sy-subrc = 0.
IF ( lv_ship_to = gw_source_package-ship_to ).
IF <fs_result>-/bic/zdatclose EQ gw_source_package-/bic/zdateopen .
IF <fs_result>-/bic/ztimclose LT gw_source_package-/bic/ztimeopen.
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = <fs_result>-/bic/zdatclose
im_date2 = gw_source_package-/bic/zdateopen
im_time1 = <fs_result>-/bic/ztimclose
im_time2 = gw_source_package-/bic/ztimeopen
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result>-/bic/zentryno
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result>-/bic/zentrymat
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package-/bic/ztimeopen = <fs_result>-/bic/ztimeopen.
gw_source_package-/bic/zdateopen = <fs_result>-/bic/zdateopen.
gw_source_package-rt_serial = gw_source_package-rt_serial.
gw_source_package-/bic/zbillbltm = gw_source_package-/bic/zbillbltm + <fs_result>-/bic/zbillbltm.
gw_source_package-/bic/zadjdiff = gw_source_package-/bic/zadjdiff + <fs_result>-/bic/zadjdiff.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package INDEX lv_tabix2 FROM gw_source_package
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package FROM gw_source_package TRANSPORTING /bic/ztotalhr.
ENDIF.
ELSEIF <fs_result>-/bic/ztimclose GT gw_source_package-/bic/ztimeopen.
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = <fs_result>-/bic/zdatclose
im_date2 = gw_source_package-/bic/zdateopen
im_time1 = gw_source_package-/bic/ztimeopen
im_time2 = <fs_result>-/bic/ztimclose
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result>-/bic/zentryno
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result>-/bic/zentrymat
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package-/bic/ztimeopen = <fs_result>-/bic/ztimeopen.
gw_source_package-/bic/zdateopen = <fs_result>-/bic/zdateopen.
gw_source_package-rt_serial = gw_source_package-rt_serial.
gw_source_package-/bic/zbillbltm = gw_source_package-/bic/zbillbltm + <fs_result>-/bic/zbillbltm.
gw_source_package-/bic/zadjdiff = gw_source_package-/bic/zadjdiff + <fs_result>-/bic/zadjdiff.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package INDEX lv_tabix2 FROM gw_source_package
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package FROM gw_source_package TRANSPORTING /bic/ztotalhr.
ENDIF.
ENDIF.
ELSEIF <fs_result>-/bic/zdatclose GT gw_source_package-/bic/zdateopen .
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = gw_source_package-/bic/zdateopen
im_date2 = <fs_result>-/bic/zdatclose
im_time1 = gw_source_package-/bic/ztimeopen
im_time2 = <fs_result>-/bic/ztimclose
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result>-/bic/zentryno
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result>-/bic/zentrymat
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package-/bic/ztimeopen = <fs_result>-/bic/ztimeopen.
gw_source_package-/bic/zdateopen = <fs_result>-/bic/zdateopen.
gw_source_package-rt_serial = gw_source_package-rt_serial.
gw_source_package-/bic/zbillbltm = gw_source_package-/bic/zbillbltm + <fs_result>-/bic/zbillbltm.
gw_source_package-/bic/zadjdiff = gw_source_package-/bic/zadjdiff + <fs_result>-/bic/zadjdiff.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package INDEX lv_tabix2 FROM gw_source_package
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package FROM gw_source_package TRANSPORTING /bic/ztotalhr.
ENDIF.
ELSEIF gw_source_package-/bic/zdateopen GT <fs_result>-/bic/zdatclose .
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = <fs_result>-/bic/zdatclose
im_date2 = gw_source_package-/bic/zdateopen
im_time1 = <fs_result>-/bic/ztimclose
im_time2 = gw_source_package-/bic/ztimeopen
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result>-/bic/zentryno
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result>-/bic/zentrymat
','
gw_source_package-/bic/zentryno
INTO gw_source_package-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package-/bic/ztimeopen = <fs_result>-/bic/ztimeopen.
gw_source_package-/bic/zdateopen = <fs_result>-/bic/zdateopen.
gw_source_package-rt_serial = gw_source_package-rt_serial.
gw_source_package-/bic/zbillbltm = gw_source_package-/bic/zbillbltm + <fs_result>-/bic/zbillbltm.
gw_source_package-/bic/zadjdiff = gw_source_package-/bic/zadjdiff + <fs_result>-/bic/zadjdiff.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package INDEX lv_tabix2 FROM gw_source_package
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package FROM gw_source_package TRANSPORTING /bic/ztotalhr.
ENDIF.
ENDIF.
ELSE.
READ TABLE gt_source_package INTO gw_source_package INDEX lv_tabix1.
CLEAR gw_source_package-/bic/ztotalhr.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package FROM gw_source_package TRANSPORTING /bic/ztotalhr.
ENDIF.
ELSE.
READ TABLE gt_source_package INTO gw_source_package INDEX lv_tabix1.
IF sy-subrc = 0.
gw_source_package-/bic/ztotalhr = gw_source_package-/bic/zbillbltm - gw_source_package-/bic/zadjdiff .
MODIFY gt_source_package FROM gw_source_package TRANSPORTING /bic/ztotalhr.
ENDIF.
ENDIF.
CLEAR : lv_days , lv_time , lv_timesec,gw_source_package.
ENDLOOP.
DELETE gt_source_package WHERE c_x = 'X'.
SORT gt_source_package BY /bic/zdateopen
/bic/ztimeopen ASCENDING.
***************
gt_source_package1[] = gt_source_package[].
LOOP AT gt_source_package1 ASSIGNING <fs_result1>.
lv_tabix3 = sy-tabix.
lv_tabix4 = sy-tabix + 1.
AT NEW ship_to.
lv_ship_to = <fs_result1>-ship_to.
ENDAT.
SELECT SINGLE timesec FROM zam_time INTO lv_timesec.
READ TABLE gt_source_package1 INTO gw_source_package1 INDEX lv_tabix4.
IF sy-subrc = 0.
IF ( lv_ship_to = gw_source_package1-ship_to ).
***********
IF <fs_result1>-/bic/zdatclose EQ gw_source_package1-/bic/zdateopen .
IF <fs_result1>-/bic/ztimclose LT gw_source_package1-/bic/ztimeopen.
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = <fs_result1>-/bic/zdatclose
im_date2 = gw_source_package1-/bic/zdateopen
im_time1 = <fs_result1>-/bic/ztimclose
im_time2 = gw_source_package1-/bic/ztimeopen
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result1>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result1>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result1>-/bic/zentryno
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result1>-/bic/zentrymat
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package1-/bic/ztimeopen = <fs_result1>-/bic/ztimeopen.
gw_source_package1-/bic/zdateopen = <fs_result1>-/bic/zdateopen.
gw_source_package1-rt_serial = gw_source_package1-rt_serial.
gw_source_package1-/bic/zbillbltm = gw_source_package1-/bic/zbillbltm + <fs_result1>-/bic/zbillbltm.
gw_source_package1-/bic/zadjdiff = gw_source_package1-/bic/zadjdiff + <fs_result1>-/bic/zadjdiff.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 INDEX lv_tabix4 FROM gw_source_package1
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 FROM gw_source_package1 TRANSPORTING /bic/ztotalhr.
ENDIF.
ELSEIF <fs_result1>-/bic/ztimclose GT gw_source_package1-/bic/ztimeopen.
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = <fs_result1>-/bic/zdatclose
im_date2 = gw_source_package1-/bic/zdateopen
im_time1 = gw_source_package1-/bic/ztimeopen
im_time2 = <fs_result1>-/bic/ztimclose
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result1>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result1>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result1>-/bic/zentryno
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result1>-/bic/zentrymat
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package1-/bic/ztimeopen = <fs_result1>-/bic/ztimeopen.
gw_source_package1-/bic/zdateopen = <fs_result1>-/bic/zdateopen.
gw_source_package1-rt_serial = gw_source_package1-rt_serial.
gw_source_package1-/bic/zbillbltm = gw_source_package1-/bic/zbillbltm + <fs_result1>-/bic/zbillbltm.
gw_source_package1-/bic/zadjdiff = gw_source_package1-/bic/zadjdiff + <fs_result1>-/bic/zadjdiff.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 INDEX lv_tabix4 FROM gw_source_package1
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 FROM gw_source_package1 TRANSPORTING /bic/ztotalhr.
ENDIF.
ENDIF.
ELSEIF <fs_result1>-/bic/zdatclose GT gw_source_package1-/bic/zdateopen .
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = gw_source_package1-/bic/zdateopen
im_date2 = <fs_result1>-/bic/zdatclose
im_time1 = gw_source_package1-/bic/ztimeopen
im_time2 = <fs_result1>-/bic/ztimclose
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result1>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result1>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result1>-/bic/zentryno
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result1>-/bic/zentrymat
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package1-/bic/ztimeopen = <fs_result1>-/bic/ztimeopen.
gw_source_package1-/bic/zdateopen = <fs_result1>-/bic/zdateopen.
gw_source_package1-rt_serial = gw_source_package1-rt_serial.
gw_source_package1-/bic/zbillbltm = gw_source_package1-/bic/zbillbltm + <fs_result1>-/bic/zbillbltm.
gw_source_package1-/bic/zadjdiff = gw_source_package1-/bic/zadjdiff + <fs_result1>-/bic/zadjdiff.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 INDEX lv_tabix4 FROM gw_source_package1
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 FROM gw_source_package1 TRANSPORTING /bic/ztotalhr.
ENDIF.
ELSEIF gw_source_package1-/bic/zdateopen GT <fs_result1>-/bic/zdatclose .
CALL FUNCTION 'SCOV_TIME_DIFF'
EXPORTING
im_date1 = <fs_result1>-/bic/zdatclose
im_date2 = gw_source_package1-/bic/zdateopen
im_time1 = <fs_result1>-/bic/ztimclose
im_time2 = gw_source_package1-/bic/ztimeopen
IMPORTING
ex_days = lv_days
ex_time = lv_time
EXCEPTIONS
start_larger_than_end = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
IF lv_time LE lv_timesec."'00:01:00'.
<fs_result1>-c_x = 'X'.
*******Logic for Entr no concatenation*******
IF <fs_result1>-/bic/zentrymat IS INITIAL.
CONCATENATE <fs_result1>-/bic/zentryno
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ELSE.
CONCATENATE <fs_result1>-/bic/zentrymat
','
gw_source_package1-/bic/zentryno
INTO gw_source_package1-/bic/zentrymat.
ENDIF.
*******Logic for Entr no concatenation*******
gw_source_package1-/bic/ztimeopen = <fs_result1>-/bic/ztimeopen.
gw_source_package1-/bic/zdateopen = <fs_result1>-/bic/zdateopen.
gw_source_package1-rt_serial = gw_source_package1-rt_serial.
gw_source_package1-/bic/zbillbltm = gw_source_package1-/bic/zbillbltm + <fs_result1>-/bic/zbillbltm.
gw_source_package1-/bic/zadjdiff = gw_source_package1-/bic/zadjdiff + <fs_result1>-/bic/zadjdiff.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 INDEX lv_tabix4 FROM gw_source_package1
TRANSPORTING /bic/zentrymat
/bic/ztimeopen
/bic/zdateopen
rt_serial
/bic/zbillbltm
/bic/zadjdiff
/bic/ztotalhr
c_x.
ELSE.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 FROM gw_source_package1 TRANSPORTING /bic/ztotalhr.
ENDIF.
ENDIF.
ELSE.
READ TABLE gt_source_package1 INTO gw_source_package1 INDEX lv_tabix3.
CLEAR gw_source_package-/bic/ztotalhr.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 FROM gw_source_package1 TRANSPORTING /bic/ztotalhr.
ENDIF.
ELSE.
READ TABLE gt_source_package1 INTO gw_source_package1 INDEX lv_tabix3.
IF sy-subrc = 0.
gw_source_package1-/bic/ztotalhr = gw_source_package1-/bic/zbillbltm - gw_source_package1-/bic/zadjdiff .
MODIFY gt_source_package1 FROM gw_source_package1 TRANSPORTING /bic/ztotalhr.
ENDIF.
ENDIF.
CLEAR : lv_days , lv_time , lv_timesec,gw_source_package1.
ENDLOOP.
*******Moving values to Source_package*******
DELETE gt_source_package1 WHERE c_x = 'X'.
REFRESH source_package.
source_package[] = gt_source_package1[] .
**************************************************************************************************************
Anil.