【发布时间】:2015-10-06 10:58:50
【问题描述】:
我需要将 'MM/DD/YYYY' 格式的日期转换为表示它是一年中的哪一天的数字。即 '01/01/YYYY'=1 和 '12/31/YYYY'=365。 ABAP 中是否有任何内置函数可以执行此操作?我试过谷歌搜索,但找不到任何功能
【问题讨论】:
标签: abap
我需要将 'MM/DD/YYYY' 格式的日期转换为表示它是一年中的哪一天的数字。即 '01/01/YYYY'=1 和 '12/31/YYYY'=365。 ABAP 中是否有任何内置函数可以执行此操作?我试过谷歌搜索,但找不到任何功能
【问题讨论】:
标签: abap
这里有一行代码:
DATA(g_day) = p_date - CONV d( p_date(4) && '0101' ) + 1.
【讨论】:
绝对没有必要依赖系统中可能存在或不存在的任何功能模块。只需使用基本的内置语言元素:
DATA: l_my_date TYPE d, " note that the data type D is YYYYMMDD
l_jan_01 TYPE d, " This will be jan 1 of the needed year
l_day TYPE i.
l_my_date = ...whatever...
l_jan_01 = l_my_date.
l_jan_01+4 = '0101'. " or any other means to get the first day of the year.
l_day = l_my_date - l_jan_01 + 1.
【讨论】:
l_jan_01 设置为'19700101'。然后将l_my_date(4) 移动到l_jan_01(4)。
您可以使用这个功能模块:HR_AUPBS_MONTH_DAY。
你必须传递一个初始日期和一个结束日期,它会返回中间的天数(这是你想要的):
CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING BEG_DA = P_BEGDA " Here you should put the first day of the year
END_DA = P_ENDDA " Here you put the date
IMPORTING NO_CAL_DAY = P_CAL_DAY. " This is what you want
【讨论】: