This function receive a list of date and through all rows in the the
table.
If there are some date in overlapping a flag in the return table marked
by 'Y', other 'N'.
FUNCTION zcheck_overlapping_date.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(ET_OVERLAP_DATE) TYPE ZOVERLAP_DATE_TYPE OPTIONAL
*" EXPORTING
*" REFERENCE(IT_OVERLAP_DATE) TYPE ZOVERLAP_DATE_TYPE
*"----------------------------------------------------------------------
DATA: lt_overlap_date TYPE zoverlap_date_type.
DATA: ls_overlap_date TYPE zoverlap_date.
DATA: ls_overlap_date_c TYPE zoverlap_date.
DATA: lv_overlapping.
DATA: lv_tabix TYPE sy-tabix.
**
lt_overlap_date[] = et_overlap_date[].
**
SORT et_overlap_date BY datefrom dateto.
DELETE lt_overlap_date INDEX 1.
LOOP AT et_overlap_date INTO ls_overlap_date.
lv_tabix = sy-tabix.
ls_overlap_date-overlap = 'N'.
LOOP AT lt_overlap_date INTO ls_overlap_date_c.
CLEAR: lv_overlapping.
CALL FUNCTION 'ISP_CHECK_DATES_OVERLAP'
EXPORTING
datbis1 = ls_overlap_date-dateto
datbis2 = ls_overlap_date_c-dateto
datvon1 = ls_overlap_date-datefrom
datvon2 = ls_overlap_date_c-datefrom
IMPORTING
overlapping = lv_overlapping
EXCEPTIONS
intervall1_not_valid = 1
intervall2_not_valid = 2
OTHERS = 3.
IF lv_overlapping = 'J'. " Overlapping found
ls_overlap_date-overlap = 'Y'.
EXIT.
ELSE.
ls_overlap_date-overlap = 'N'.
ENDIF.
ENDLOOP.
APPEND: ls_overlap_date TO it_overlap_date.
DELETE lt_overlap_date INDEX 1.
ENDLOOP.
**
ENDFUNCTION.
Define TT ZOVERLAP_DATE_TYPE
Define ST ZOVERLAP_DATE
DATEFROM 1 Types DATUM
DATETO 1 Types DATUM
OVERLAP 1 Types INDICATOR
FM Test Run
DATEFROM DATETO O
01.09.2013 05.09.2013
06.09.2013 10.09.2013
10.09.2013 15.09.2013
11.09.2013 18.09.2013
21.09.2013 30.09.2013
20.09.2013 31.12.2013
Result:
DATEFROM DATETO O
01.09.2013 05.09.2013 N
06.09.2013 10.09.2013 Y
10.09.2013 15.09.2013 Y
11.09.2013 18.09.2013 N
20.09.2013 31.12.2013 Y
21.09.2013 30.09.2013 N
No comments:
Post a Comment