zoukankan      html  css  js  c++  java
  • Working days

    form FRM_GET_WORKING_DAYS
      TABLES pt_days
      CHANGING  pv_duration.
    
    
      DATA:ls_xt001w TYPE t001w,
           lv_sdate TYPE sy-datum,
           lv_edate TYPE sy-datum.
    
    * Get the factory calendar for specific plant
      SELECT SINGLE * FROM t001w INTO ls_xt001w
                         WHERE werks IN s_plant.   " Use your plant
    
    *   Set start date
      CONCATENATE sy-datum+0(6) '01' INTO lv_sdate.
    
    *   End date
      CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
        EXPORTING
          date      = lv_sdate
          days      = 0
          months    = 1
          signum    = '+'
          years     = 0
        IMPORTING
          calc_date = lv_edate
        EXCEPTIONS
          OTHERS    = 2.
    
    * Get working days in between
    
      CALL FUNCTION 'DURATION_DETERMINE'
        EXPORTING
          factory_calendar           = ls_xt001w-fabkl
        IMPORTING
          duration                   = pv_duration     " In days
        CHANGING
          start_date                 = lv_sdate
          end_date                   = lv_edate
        EXCEPTIONS
          factory_calendar_not_found = 1
          date_out_of_calendar_range = 2
          date_not_valid             = 3
          unit_conversion_error      = 4
          si_unit_missing            = 5
          parameters_not_valid       = 6
          OTHERS                     = 7.
    
      WHILE lv_sdate < lv_edate.
        CALL FUNCTION 'DATE_CHECK_WORKINGDAY'
          EXPORTING
            date                             = lv_sdate
            factory_calendar_id              = ls_xt001w-fabkl
            message_type                     = 'I'
         EXCEPTIONS
           DATE_AFTER_RANGE                 = 1
           DATE_BEFORE_RANGE                = 2
           DATE_INVALID                     = 3
           DATE_NO_WORKINGDAY               = 4
           FACTORY_CALENDAR_NOT_FOUND       = 5
           MESSAGE_TYPE_INVALID             = 6
           OTHERS                           = 7
                  .
        IF sy-subrc eq 0.
          append lv_sdate to pt_days.
        ENDIF.
    
      CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
        EXPORTING
          date      = lv_sdate
          days      = 1
          months    = 0
          signum    = '+'
          years     = 0
        IMPORTING
          calc_date = lv_sdate
        EXCEPTIONS
          OTHERS    = 2.
    
      ENDWHILE.
    endform.
    

    We can get working days easily by 'describe table lines ' of pt_days ,this is merely a demo of FM usage,not making an unnecessary move

  • 相关阅读:
    Tomcat
    mybatis xml参数传递详解
    windows zookeeper集群
    @RequestParam和@RequestBody区别
    nginx学习
    先冒泡,再使用vector
    有a,b,c,d 4个球,分别出现的概率是10%,20%,30%,40%,要求编写RunDemo,每调用一次函数RunDemo,就按上面的概率出现球。
    字符串右移
    编写程序输入实现123->321
    计算机网络(一)
  • 原文地址:https://www.cnblogs.com/aurora-cj/p/10422128.html
Copyright © 2011-2022 走看看