DATE_CONVERT_TO_FACTORYDATE 根据日期返回工厂日历日期
函数功能说明:
标出工作日的计算方法
输入传输 CORRECT_OPTION = ‘+‘
如果指定的日期不是工作日,返回日期后的第一个工作日。
CORRECT_OPTION = ‘-“
如指定日期并非工作天,返回日期前的第一个工作日。
测试效果:
Case1. 工厂日历标识 CN, 20191207 是周六
结果是 2019.12.07, 则周六是个工作日
函数测试参数为-
得到结果也是 2019.12.07
但是,
咱把工厂日历值改为HK 试一下, 结果是 2019.12.09 周一
函数测试 - 的情况
CN是所有日都认为是工作日了,997 , 666 ???
贴个测试程序代码 ,收工
*&---------------------------------------------------------------------*
*& Report YCX_025
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ycx_025 MESSAGE-ID m7.
PARAMETERS: p_ctid LIKE scal-fcalid,
p_date LIKE bseg-h_budat.
DATA: lv_date LIKE scal-date,
lv_facdate LIKE scal-facdate,
lv_workingday LIKE scal-indicator.
CALL FUNCTION ‘DATE_CONVERT_TO_FACTORYDATE‘
EXPORTING
* correct_option = plus
factory_calendar_id = p_ctid
date = p_date
IMPORTING
date = lv_date
factorydate = lv_facdate
workingday_indicator = lv_workingday
EXCEPTIONS
date_after_range = 01
date_before_range = 02
date_invalid = 03
factory_calendar_not_found = 04
correct_option_invalid = 05
calendar_buffer_not_loadable = 06.
CASE sy-subrc.
WHEN 1.
MESSAGE s523 WITH p_date INTO DATA(lv_msg).
WHEN 2.
MESSAGE s524 WITH p_date INTO lv_msg.
WHEN 3.
MESSAGE s525 WITH p_date INTO lv_msg.
WHEN 4.
MESSAGE s526 WITH p_date INTO lv_msg.
WHEN 5.
MESSAGE s526 WITH p_date INTO lv_msg.
WHEN 6.
MESSAGE s526 WITH p_date INTO lv_msg.
WHEN OTHERS .
WRITE: /‘必须转化为工厂日历日期的日期:‘, lv_date,
/‘指定日历中的工作日数:‘, lv_facdate,
/‘表示某日期是否为工作日的标志:‘, lv_workingday.
ENDCASE.
WRITE: lv_msg.
本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA.
人天可谈,终身售后 有活请联系V信:18925782767(问问题免费,欢迎交流!)
本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA.
人天可谈,终身售后 有活请联系V信:18925782767(问问题免费,欢迎交流!)
你盯着我
不关注
不点赞
不评论
难道是想暗算我 ???
卡忙on,用丘比特的箭暗算我吧!
笔芯准备 I‘m ready!!
来不及解释了,快上车!!!
原文地址:https://www.cnblogs.com/rainysblog/p/11986383.html