SAP 系统函数使用:RH_GET_DATE_DAYNAME

函数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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值