2020-08-21 22:00发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在HANA侧车中,我具有标量功能... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在HANA侧车中,我具有标量功能,因此我可以根据存储在桌上的任何出生日期轻松获得下一个生日。 处理方面,例如2月29日on年出生的人。
但是,有没有人有任何可重用的方式在CDS视图中执行此操作,而又不求助于在HANA本身内部开发对象(即使这可能是一个不错的选择-我更愿意将所有内容保留在ABAP域中)?
或者,人们做了什么工作以确保与员工编号一起使用时的最佳绩效,以便不为所有员工计算下一个生日。
感谢约翰·帕特森(John Patterson)向我指向日历日期查找表SCAL_TT_DATE的方向-如果您不与120岁以上的人打交道,那应该没事。
总之,我 创建了2个视图来帮助解决此问题,并将在关联中使用该视图来获取周年纪念日。
第一个"前"视图是为我们提供可以使用的日期范围(忽略默认的"填充" 并命名,因为我仍在掌握最有效的方法):
@ AbapCatalog.sqlViewName:'ZIPREANNIV' @ AbapCatalog.compiler.compareFilter:是 @ AbapCatalog.preserveKey:是 @ AccessControl.authorizationCheck:#检查 @ EndUserText.label:'AnnivesaryDatesPre' 将视图ZIPreAnnivesaryDates定义为从scal_tt_date选择为_SourceDate 将[1..1]与scal_tt_date关联为_Today 于_Today.calendardate = $ session.system_date { 关键日历日期为OriginalDate, 将(concat(concat(_conday(_Today.calendaryear,calendarmonth),calendarday)作为abap.dats)转换为AnniversaryDateThisYear, dats_is_valid(cast(concat(concat(concat(_Today.calendaryear,calendarmonth),calendarday)as abap.dats))作为AnniversaryDateThisYearValid, 演员表(concat(concat(left(cast(cast(cast(_Today.calendaryear as abap.int4)+ 1 as abap.char(12)),4),calendarmonth),calendarday)as abap.dats)as AnniversaryDateNextYear, dats_is_valid(cast(concat(concat(concat(left(cast(cast(_Today.calendaryear as abap.int4)+ 1 as abap.char(12)),4),calendarmonth),calendarday)as abap.dats))作为AnniversaryDateNextYearValid, 铸件 当calendarday ='29'和calendarmonth ='02'时 concat(concat(_Today.calendaryear,calendarmonth),'28') 其他 '' 以abap.dats结尾)作为AnniversaryDateThisYearLY, 铸件 当calendarday ='29'和calendarmonth ='02'时 concat(concat(left(cast(cast(cast(_Today.calendaryear as abap.int4)+ 1 as abap.char(12)),4),calendarmonth),'28') 其他 '' 以abap.dats结尾)为AnniversaryDateNextYearLY }
这将为我们提供一个表格,其键为原始生日或开始日期等。
旁注-我讨厌我不能将1加到 NUMC在这里,必须先转换为INT4,然后转换为CHAR12,然后剥离8个字符以将其连接到CHAR4。
对于每个值,它将提供5个值。
AnniversaryDateThisYear,AnniversaryDateThisYearValid,AnniversaryDateNextYear,AnniversaryDateNextYearValid以及万一它是2月29日:AnniversaryDateThisYearLY和AnniversaryDateNextYearLY
然后它是一个简单的辅助视图,它为我们提供了一个周年纪念日。 sqlViewName:'ZIANNIVERSARY' @ AbapCatalog.compiler.compareFilter:是 @ AbapCatalog.preserveKey:是 @ AccessControl.authorizationCheck:#检查 @ EndUserText.label:'AnniversaryDates' 将视图ZIAnniversaryDates定义为从ZIPreAnnivesaryDates中选择{ 键OriginalDate 案件 当AnniversaryDateThisYearValid = 1且AnniversaryDateThisYear> $ session.system_date时 今年周年纪念日 当AnniversaryDateThisYearLY> $ session.system_date时 今年周年纪念日 当AnniversaryDateNextYearValid = 1时 下一年的周年纪念日 其他 下一年的周年纪念日 结束为AnniversaryDate }
因此,我们希望HANA CDS足够聪明,只可以针对相关日期进行计算,但是在ADT测试中需要51毫秒的时间,因此我想我现在可以接受。
有人对此有更好的主意吗?
最多设置5个标签!
感谢约翰·帕特森(John Patterson)向我指向日历日期查找表SCAL_TT_DATE的方向-如果您不与120岁以上的人打交道,那应该没事。
总之,我 创建了2个视图来帮助解决此问题,并将在关联中使用该视图来获取周年纪念日。
第一个"前"视图是为我们提供可以使用的日期范围(忽略默认的"填充" 并命名,因为我仍在掌握最有效的方法):
这将为我们提供一个表格,其键为原始生日或开始日期等。
旁注-我讨厌我不能将1加到 NUMC在这里,必须先转换为INT4,然后转换为CHAR12,然后剥离8个字符以将其连接到CHAR4。
对于每个值,它将提供5个值。
AnniversaryDateThisYear,AnniversaryDateThisYearValid,AnniversaryDateNextYear,AnniversaryDateNextYearValid以及万一它是2月29日:AnniversaryDateThisYearLY和AnniversaryDateNextYearLY
然后它是一个简单的辅助视图,它为我们提供了一个周年纪念日。 sqlViewName:'ZIANNIVERSARY' @ AbapCatalog.compiler.compareFilter:是 @ AbapCatalog.preserveKey:是 @ AccessControl.authorizationCheck:#检查 @ EndUserText.label:'AnniversaryDates' 将视图ZIAnniversaryDates定义为从ZIPreAnnivesaryDates中选择{ 键OriginalDate 案件 当AnniversaryDateThisYearValid = 1且AnniversaryDateThisYear> $ session.system_date时 今年周年纪念日 当AnniversaryDateThisYearLY> $ session.system_date时 今年周年纪念日 当AnniversaryDateNextYearValid = 1时 下一年的周年纪念日 其他 下一年的周年纪念日 结束为AnniversaryDate }
因此,我们希望HANA CDS足够聪明,只可以针对相关日期进行计算,但是在ADT测试中需要51毫秒的时间,因此我想我现在可以接受。
有人对此有更好的主意吗?
一周热门 更多>