zoukankan      html  css  js  c++  java
  • 计算两个日期之间的工作日

    兰大顾的。。。

    FUNCTION zget_workdays.
    *"----------------------------------------------------------------------
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(I_DATE1) LIKE  SY-DATUM
    *"     VALUE(I_DATE2) LIKE  SY-DATUM
    *"  EXPORTING
    *"     VALUE(E_DAYS) TYPE  I
    *"----------------------------------------------------------------------
      DATA: week1   TYPE scal-week,
            monday1 TYPE sy-datum,
            sunday1 TYPE sy-datum,
            week2   TYPE scal-week,
            monday2 TYPE sy-datum,
            sunday2 TYPE sy-datum,
            days1    TYPE i,
            days2    TYPE i,
            wotnr1   TYPE p,
            wotnr2   TYPE p.
    
      CHECK i_date2 GE i_date1.
    
      CALL FUNCTION 'DAY_IN_WEEK'
        EXPORTING
          datum = i_date1
        IMPORTING
          wotnr = wotnr1.
    
      CALL FUNCTION 'DAY_IN_WEEK'
        EXPORTING
          datum = i_date2
        IMPORTING
          wotnr = wotnr2.
    
      "计算开始日期所在周
      CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
        EXPORTING
          date   = i_date1
        IMPORTING
          week   = week1
          monday = monday1
          sunday = sunday1.
    
      "计算结束日期所在周
      CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
        EXPORTING
          date   = i_date2
        IMPORTING
          week   = week2
          monday = monday2
          sunday = sunday2.
    
      IF week1 EQ week2.
        IF wotnr1 GE 5.
          e_days = 0.
          EXIT.
        ELSE.
          IF wotnr2 LE 5.
            e_days = i_date2 - i_date1 .
          ELSEIF wotnr2 EQ 6.
            e_days = i_date2 - i_date1 - 1.
          ELSEIF wotnr2 EQ 7.
            e_days = i_date2 - i_date1 - 2.
          ENDIF.
        ENDIF.
      ELSE.
        IF wotnr1 gt 5.
          days1 = 0.
        ELSE.
          days1 = sunday1 - 2 - i_date1 + 1.
        ENDIF.
    
        IF wotnr2 GT 5 .
          days2 = 4.
        ELSE.
          days2 = i_date2 - monday2.
        ENDIF.
    
        e_days = ( week2 - week1 - 1 ) * 5 + days1 + days2.
    
      ENDIF.
    
    
    ENDFUNCTION.
  • 相关阅读:
    小毛病,大问题
    [zz]Libvirt 虚拟化库剖析
    libvirt XML 学习笔记
    Ubuntu 10.04下使用 libvirt 创建KVM虚拟机
    [zz]使用libvirt管理kvm虚拟机(更新中)
    [zz]LXC:Linux 容器工具
    一些比较好的URL
    [zz]Libvirt XML学习笔记
    [zz]一些KVM xml 例子
    [zz]kvm环境使用libvirt创建虚拟机
  • 原文地址:https://www.cnblogs.com/sapSB/p/7047732.html
Copyright © 2011-2022 走看看