函数
RH_GET_DATE_DAYNAME的功能是根据输入的日期和语言,返回该日期对应的星期几的名称和编号,以及该日期是否是工作日。
该函数的输入参数有三个:
LANGU TYPE SYST-LANGU:表示要返回的星期几的名称的语言,必须是有效的语言代码,如EN表示英语,ZH表示中文。
DATE TYPE SYST-DATUM:表示要查询的日期,必须是有效的日期格式(YYYYMMDD)。
CALID TYPE P1027-CALID:表示要查询的工厂日历的ID,用于判断该日期是否是工作日,可以为空。
该函数的输出参数有三个:
DAYNR TYPE HRVSCHED-DAYNR:表示该日期对应的星期几的编号,从1到7分别表示周一到周日。
DAYTXT TYPE HRVSCHED-DAYTXT:表示该日期对应的星期几的名称,根据输入的语言返回相应的文本,如EN返回Monday,ZH返回星期一。
DAYFREE TYPE HRVSCHED-NODAY:表示该日期是否是工作日,如果是,返回空,如果不是,返回X。
该函数的异常处理有四个:
NO_LANGU:表示没有输入语言代码,会触发一个异常。
NO_DATE:表示没有输入日期,会触发一个异常。
NO_DAYTXT_FOR_LANGU:表示输入的语言代码没有对应的星期几的名称,会触发一个异常。
INVALID_DATE:表示输入的日期无效,会触发一个异常。
以下为程序样例:
REPORT Y_XF_TEST_136.
DATA: lv_langu TYPE syst-langu, " 定义一个语言变量
lv_date TYPE syst-datum, " 定义一个日期变量
lv_calid TYPE p1027-calid, " 定义一个工厂日历ID变量
lv_daynr TYPE hrvsched-daynr, " 定义一个星期几编号变量
lv_daytxt TYPE hrvsched-daytxt, " 定义一个星期几名称变量
lv_dayfree TYPE hrvsched-noday. " 定义一个工作日标志变量
lv_langu = '1'. " 给语言变量赋值为中文
lv_date = '20231231'. " 给日期变量赋值为2023年12月31日
lv_calid = 'CN'. " 给工厂日历ID变量赋值为中国
CALL FUNCTION 'RH_GET_DATE_DAYNAME' " 调用函数
EXPORTING
langu = lv_langu " 传入语言代码
date = lv_date " 传入日期
calid = lv_calid " 传入工厂日历ID
IMPORTING
daynr = lv_daynr " 返回星期几编号
daytxt = lv_daytxt " 返回星期几名称
dayfree = lv_dayfree " 返回工作日标志
EXCEPTIONS
no_langu = 1
no_date = 2
no_daytxt_for_langu = 3
invalid_date = 4
others = 5.
IF sy-subrc EQ 0. " 检查返回码是否为0,表示没有异常
WRITE: / 'The day of the week is:', lv_daynr, lv_daytxt. " 输出星期几的编号和名称,应为7星期日
IF lv_dayfree IS INITIAL. " 检查工作日标志是否为空
WRITE: / 'The day is a working day.'. " 输出工作日信息,应为是工作日
ELSE.
WRITE: / 'The day is not a working day.'. " 输出工作日信息,应为不是工作日
ENDIF.
ELSE. " 如果有异常
WRITE: / 'Error occurred.'. " 输出错误信息
ENDIF.