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

随机推荐

  1. 【SpringBoot】服务器端主动推送SSE技术讲解

    =====================16.高级篇幅之SpringBoot2.0服务器端主动推送SSE技术讲解 ============================ 1.服务端推送常用技术介绍 ...

  2. 在C#中如何判断线程当前所处的状态

    在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象.   ThreadState 为线程定义了一组所有可能的执行状态.一旦线程被创建,它就至少 ...

  3. java:try...catch...finally

    try...catch...finally 规则: 可以没有 finally 块 如果没有 catch 块,则必须跟一个 finally 块 当在 try 块或 catch 块中遇到 return 语 ...

  4. Java_EE面试题

    Java_EE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.什么是Servlet? Servlet是用来处理客户端请求并产生动态网页内容的Java类.Servlet主要是用来处理或者是存储 ...

  5. centos 7 su jenkins 切换不过去

    root切换到jenkins用户: passwd jenkins:设置jenkins用户密码 su jenkins : 切换不过去, 查看passwd文件 cat /etc/passwd 找到:jen ...

  6. HTTP Request & Response

    Request & Response header details can be found here The request method indicates the method to b ...

  7. Ubuntu 14.10 下DokuWiki安装

    环境说明: Ubuntu 14.10 64位 1 下载DokuWiki:http://download.dokuwiki.org/ 2 解压到 /var/www/html下面 3 如果没有安装Apac ...

  8. CSS存在形式的引用

    撰写个css文件 直接引用css文件样式的内容.本质是将css文件拿过来

  9. day28元类与异常查找

    元类与异常处理1. 什么是异常处理    异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常    没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止    异常包含三个部分: ...

  10. 什么是Java序列化,如何实现java序列化

      简要解释: 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是为了解决在对对象流进行读写操作时所 ...