02 June 2014

Overlapping date

This function allows you to check between date if there is overlapping in a list of date.



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