본문 바로가기
ABAP

Working day function

by clode 2023. 2. 21.
728x90
반응형

시작일과 종료일을 입력하면 시작일과 종료일의 date를 계산하고 계산한 date 수만큼 반복문을 돈다.

반복문을 돌면서 입력된 값이 working day이면 lv_day변수에 1씩 +해주며 working day를 구한다.

 DATA: lv_beg    TYPE sy-datum,
        lv_work   TYPE sy-datum,
        lv_do(4)  TYPE p,
        lv_day(4) TYPE i.

       CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES'
        EXPORTING
          beg_date = gs_disp-begda
          end_date = gs_disp-endda
        IMPORTING
          days     = lv_do. "type p

      CLEAR: lv_day, lv_work.
      lv_beg = gs_disp-begda.

      DO lv_do TIMES.

        CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
          EXPORTING
            correct_option      = '+'
            date                = lv_beg
            factory_calendar_id = 'KR'
          IMPORTING
            date                = lv_work.

        IF lv_beg EQ lv_work.
          lv_day = lv_day + 1.
        ENDIF.

        lv_beg = lv_beg + 1.
      ENDDO.

      CALL METHOD er_data_changed->modify_cell
        EXPORTING
          i_row_id    = ls_mod_cells-row_id
          i_fieldname = 'ZDAY'
          i_value     = lv_day.       

HRVE_GET_TIME_BETWEEN_DATES

시작일과 종료일을 입력하면 day를 반환한다.
이때 반환되는 변수의 타입은 p여야 한다.

DATE_CONVERT_TO_FACTORYDATE

가장 가까운 working day를 출력한다.
옵션을 +로 주면 입력날짜 이후의 가까운 working day를 출력하고
-로 주면 이전의 working day를 출력한다.

728x90
반응형

'ABAP' 카테고리의 다른 글

알고 있으면 유용한 Syntax  (0) 2023.02.21
ALV Drop down list  (0) 2023.02.21
ALV Top-of-Page  (0) 2023.02.21
ALV 특정 Cell EDIT  (0) 2023.02.21
ALV Data changed Event  (0) 2023.02.20

댓글