ABAP

Working day function

clode 2023. 2. 21. 17:50
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
반응형