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
*"----------------------------------------------------------------------
  DATAlt_overlap_date      TYPE zoverlap_date_type.
  DATAls_overlap_date      TYPE zoverlap_date.
  DATAls_overlap_date_c    TYPE zoverlap_date.
  DATAlv_overlapping.
  DATAlv_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.
      CLEARlv_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.
    APPENDls_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