数据服务:to_date禁止下推

2020-09-21 17:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

使用to_date函数时是否还有其他人遇到过DS(4.2 SP9)无法下推的情况(与注释2212730中记录的相反)? 请找到随附的测试用例:

df- Patient-il-ini-resuffix-to- xml.txt (如果您很好奇我为什么要使用花费数十万瑞士法郎的工具进行如此重命名,请阅读以下内容。对我来说,这简直是不可想象的!)

流程似乎并不太复杂:

将VALID_UNTIL设置为sysdate()支持完全下推(不是我所说的美丽代码,但仍然完全下推)。

插入
   /* +附加*/
     进入
         " IL"。"患者"(
             " T_JOB_ID",
             " T_FLOW_NAME",
             " T_BATCH_ID",
             " FK_01_MPGE_T_RECORD_ID",
             " FK_01_MPSS_T_RECORD_ID",
             " FK_02_MPSS_T_RECORD_ID",
             " PATIENT_ID",
             "生日",
             " F_INTERNAL_EMPLOYEE",
             " VALID_FROM",
             " VALID_UNTIL"
         ) 选择
             $ VG_JOB_ID T_JOB_ID,
             $ I_DATAFLOW_NAME T_FLOW_NAME,
             $ VG_BATCH_ID T_BATCH_ID,
             " MAP_GENDER"。" T_RECORD_ID" FK_01_MPGE_T_RECORD_ID,
             " MAP_SOURCE_SYSTEM_1_1"。" T_RECORD_ID" FK_01_MPSS_T_RECORD_ID,
             " MAP_SOURCE_SYSTEM_1"。" T_RECORD_ID" FK_02_MPSS_T_RECORD_ID,
             " HE#PATIENT"。" PID" PATIENT_ID,
             " HE#PATIENT"。" PATIENTS_BIRTH_DATE" BIRTH_DATE,
             (
                 (
                     (
                         案件
                             什么时候(
                                 " HE#患者"。"分类" = 1
                             )然后0
                             否则1
                         结束
                     )
                 )
             )F_INTERNAL_EMPLOYEE,
             sysdate VALID_FROM,
             sysdate VALID_UNTIL
         从
             (
                 (
                     " LZ"。" HE#PATIENT"" HE#PATIENT"
                 左外部联接" IL"。" MAP_GENDER"" MAP_GENDER"
                     (
                         nvl(" HE#PATIENT"。" PATIENTS_GENDER",'U')=" MAP_GENDER"。" CD_USB_HE"
                     )
                     和(
                         " MAP_GENDER"。" VALID_FROM" <= sysdate
                     )
                     和(
                         " MAP_GENDER"。" VALID_UNTIL"> = sysdate
                     )
                     和(
                         (
                             sysdate> =" MAP_GENDER"。" T_APPROVED_ON"
                         )
                         要么(
                             1 = 1
                         )
                     )
                 )
             左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1_1"
                 (
                     " HE#PATIENT"。" T_SOURCE" =" MAP_SOURCE_SYSTEM_1_1"。" CD_USB_CDWH"
                 )
                 和(
                     " MAP_SOURCE_SYSTEM_1_1"。" VALID_FROM" <= sysdate
                 )
                 和(
                     " MAP_SOURCE_SYSTEM_1_1"。" VALID_UNTIL"> = sysdate
                 )
                 和(
                     (
                         sysdate> =" MAP_SOURCE_SYSTEM_1_1"。" T_APPROVED_ON"
                     )
                     要么(
                         1 = 1
                     )
                 )
             )
         左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1"
             (
                 " HE#PATIENT"。" SOURCE_SYSTEM" =" MAP_SOURCE_SYSTEM_1"。" CD_USB_HE"
             )
             和(
                 " MAP_SOURCE_SYSTEM_1"。" VALID_FROM" <= sysdate
             )
             和(
                 " MAP_SOURCE_SYSTEM_1"。" VALID_UNTIL"> = sysdate
             )
             和(
                 (
                     sysdate> =" MAP_SOURCE_SYSTEM_1"。" T_APPROVED_ON"
                 )
                 要么(
                     1 = 1
                 )
             ); 

将VALID_UNTIL设置为

to_date('9999-12-31 23:59:59.999999999','yyyy-mm-dd hh24:mi:ss.ff')禁止完全下推(BLIMEY!该代码应该是什么?):

  1. DS为什么将映射表中的所有日期都输入到引擎中?
  2. DS为什么将1.转换为字符?

选择
     (
         (
             (
                 案件
                     什么时候(
                         " HE#患者"。"分类" = 1
                     )然后0
                     否则1
                 结束
             )
         )
     ),
     " MAP_GENDER"。" T_RECORD_ID",
     " MAP_SOURCE_SYSTEM_1_1"。" T_RECORD_ID",
     " MAP_SOURCE_SYSTEM_1"。" T_RECORD_ID",
     " HE#患者"。" PID",
     " HE#PATIENT"。" PATIENTS_BIRTH_DATE",
     " HE#PATIENT"。" SOURCE_SYSTEM",
     " MAP_SOURCE_SYSTEM_1"。" CD_USB_HE",
     to_char(" MAP_SOURCE_SYSTEM_1"。" VALID_FROM",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1"。" VALID_UNTIL",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1"。" T_APPROVED_ON",'yyyy.mm.dd hh24:mi:ss.ff'),
     " HE#PATIENT"。" T_SOURCE",
     " MAP_SOURCE_SYSTEM_1_1"。" CD_USB_CDWH",
     to_char(" MAP_SOURCE_SYSTEM_1_1"。" VALID_FROM",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1_1"。" VALID_UNTIL",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1_1"。" T_APPROVED_ON",'yyyy.mm.dd hh24:mi:ss.ff'),
     " HE#PATIENT"。" PATIENTS_GENDER",
     " MAP_GENDER"。" CD_USB_HE",
     to_char(" MAP_GENDER"。" VALID_FROM",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_GENDER"。" VALID_UNTIL",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_GENDER"。" T_APPROVED_ON",'yyyy.mm.dd hh24:mi:ss.ff')
 从
     (
         (
             " LZ"。" HE#PATIENT"" HE#PATIENT"
         左外部联接" IL"。" MAP_GENDER"" MAP_GENDER"
             (
                 nvl(" HE#PATIENT"。" PATIENTS_GENDER",'U')=" MAP_GENDER"。" CD_USB_HE"
             )
             和(
                 " MAP_GENDER"。" VALID_FROM" <= sysdate
             )
             和(
                 " MAP_GENDER"。" VALID_UNTIL"> = sysdate
             )
             和(
                 (
                     sysdate> =" MAP_GENDER"。" T_APPROVED_ON"
                 )
                 要么(
                     1 = 1
                 )
             )
         )
     左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1_1"
         (
             " HE#PATIENT"。" T_SOURCE" =" MAP_SOURCE_SYSTEM_1_1"。" CD_USB_CDWH"
         )
         和(
             " MAP_SOURCE_SYSTEM_1_1"。" VALID_FROM" <= sysdate
         )
         和(
             " MAP_SOURCE_SYSTEM_1_1"。" VALID_UNTIL"> = sysdate
         )
         和(
             (
                 sysdate> =" MAP_SOURCE_SYSTEM_1_1"。" T_APPROVED_ON"
             )
             要么(
                 1 = 1
             )
         )
     )
 左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1"
     (
         " HE#PATIENT"。" SOURCE_SYSTEM" =" MAP_SOURCE_SYSTEM_1"。" CD_USB_HE"
     )
     和(
         " MAP_SOURCE_SYSTEM_1"。" VALID_FROM" <= sysdate
     )
     和(
         " MAP_SOURCE_SYSTEM_1"。" VALID_UNTIL"> = sysdate
     )
     和(
         (
             sysdate> =" MAP_SOURCE_SYSTEM_1"。" T_APPROVED_ON"
         )
         要么(
             1 = 1
         )
     );

 为什么我不能切换到html来摆脱代码?!? 无论如何,重命名测试用例文件背后的故事。 我首先想导入atl文件,但是它被禁止了:

 

 好的,再次导出为xml。 支持xml ...
 
 

 ...我却适合!

 真伤心 (从唐纳德·特朗普复制)

 混淆了这种工具销售商对这种价值数十万瑞士法郎的傲慢!

(17.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

使用to_date函数时是否还有其他人遇到过DS(4.2 SP9)无法下推的情况(与注释2212730中记录的相反)? 请找到随附的测试用例:

df- Patient-il-ini-resuffix-to- xml.txt (如果您很好奇我为什么要使用花费数十万瑞士法郎的工具进行如此重命名,请阅读以下内容。对我来说,这简直是不可想象的!)

流程似乎并不太复杂:

将VALID_UNTIL设置为sysdate()支持完全下推(不是我所说的美丽代码,但仍然完全下推)。

插入
   /* +附加*/
     进入
         " IL"。"患者"(
             " T_JOB_ID",
             " T_FLOW_NAME",
             " T_BATCH_ID",
             " FK_01_MPGE_T_RECORD_ID",
             " FK_01_MPSS_T_RECORD_ID",
             " FK_02_MPSS_T_RECORD_ID",
             " PATIENT_ID",
             "生日",
             " F_INTERNAL_EMPLOYEE",
             " VALID_FROM",
             " VALID_UNTIL"
         ) 选择
             $ VG_JOB_ID T_JOB_ID,
             $ I_DATAFLOW_NAME T_FLOW_NAME,
             $ VG_BATCH_ID T_BATCH_ID,
             " MAP_GENDER"。" T_RECORD_ID" FK_01_MPGE_T_RECORD_ID,
             " MAP_SOURCE_SYSTEM_1_1"。" T_RECORD_ID" FK_01_MPSS_T_RECORD_ID,
             " MAP_SOURCE_SYSTEM_1"。" T_RECORD_ID" FK_02_MPSS_T_RECORD_ID,
             " HE#PATIENT"。" PID" PATIENT_ID,
             " HE#PATIENT"。" PATIENTS_BIRTH_DATE" BIRTH_DATE,
             (
                 (
                     (
                         案件
                             什么时候(
                                 " HE#患者"。"分类" = 1
                             )然后0
                             否则1
                         结束
                     )
                 )
             )F_INTERNAL_EMPLOYEE,
             sysdate VALID_FROM,
             sysdate VALID_UNTIL
         从
             (
                 (
                     " LZ"。" HE#PATIENT"" HE#PATIENT"
                 左外部联接" IL"。" MAP_GENDER"" MAP_GENDER"
                     (
                         nvl(" HE#PATIENT"。" PATIENTS_GENDER",'U')=" MAP_GENDER"。" CD_USB_HE"
                     )
                     和(
                         " MAP_GENDER"。" VALID_FROM" <= sysdate
                     )
                     和(
                         " MAP_GENDER"。" VALID_UNTIL"> = sysdate
                     )
                     和(
                         (
                             sysdate> =" MAP_GENDER"。" T_APPROVED_ON"
                         )
                         要么(
                             1 = 1
                         )
                     )
                 )
             左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1_1"
                 (
                     " HE#PATIENT"。" T_SOURCE" =" MAP_SOURCE_SYSTEM_1_1"。" CD_USB_CDWH"
                 )
                 和(
                     " MAP_SOURCE_SYSTEM_1_1"。" VALID_FROM" <= sysdate
                 )
                 和(
                     " MAP_SOURCE_SYSTEM_1_1"。" VALID_UNTIL"> = sysdate
                 )
                 和(
                     (
                         sysdate> =" MAP_SOURCE_SYSTEM_1_1"。" T_APPROVED_ON"
                     )
                     要么(
                         1 = 1
                     )
                 )
             )
         左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1"
             (
                 " HE#PATIENT"。" SOURCE_SYSTEM" =" MAP_SOURCE_SYSTEM_1"。" CD_USB_HE"
             )
             和(
                 " MAP_SOURCE_SYSTEM_1"。" VALID_FROM" <= sysdate
             )
             和(
                 " MAP_SOURCE_SYSTEM_1"。" VALID_UNTIL"> = sysdate
             )
             和(
                 (
                     sysdate> =" MAP_SOURCE_SYSTEM_1"。" T_APPROVED_ON"
                 )
                 要么(
                     1 = 1
                 )
             ); 

将VALID_UNTIL设置为

to_date('9999-12-31 23:59:59.999999999','yyyy-mm-dd hh24:mi:ss.ff')禁止完全下推(BLIMEY!该代码应该是什么?):

  1. DS为什么将映射表中的所有日期都输入到引擎中?
  2. DS为什么将1.转换为字符?

选择
     (
         (
             (
                 案件
                     什么时候(
                         " HE#患者"。"分类" = 1
                     )然后0
                     否则1
                 结束
             )
         )
     ),
     " MAP_GENDER"。" T_RECORD_ID",
     " MAP_SOURCE_SYSTEM_1_1"。" T_RECORD_ID",
     " MAP_SOURCE_SYSTEM_1"。" T_RECORD_ID",
     " HE#患者"。" PID",
     " HE#PATIENT"。" PATIENTS_BIRTH_DATE",
     " HE#PATIENT"。" SOURCE_SYSTEM",
     " MAP_SOURCE_SYSTEM_1"。" CD_USB_HE",
     to_char(" MAP_SOURCE_SYSTEM_1"。" VALID_FROM",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1"。" VALID_UNTIL",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1"。" T_APPROVED_ON",'yyyy.mm.dd hh24:mi:ss.ff'),
     " HE#PATIENT"。" T_SOURCE",
     " MAP_SOURCE_SYSTEM_1_1"。" CD_USB_CDWH",
     to_char(" MAP_SOURCE_SYSTEM_1_1"。" VALID_FROM",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1_1"。" VALID_UNTIL",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_SOURCE_SYSTEM_1_1"。" T_APPROVED_ON",'yyyy.mm.dd hh24:mi:ss.ff'),
     " HE#PATIENT"。" PATIENTS_GENDER",
     " MAP_GENDER"。" CD_USB_HE",
     to_char(" MAP_GENDER"。" VALID_FROM",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_GENDER"。" VALID_UNTIL",'yyyy.mm.dd hh24:mi:ss.ff'),
     to_char(" MAP_GENDER"。" T_APPROVED_ON",'yyyy.mm.dd hh24:mi:ss.ff')
 从
     (
         (
             " LZ"。" HE#PATIENT"" HE#PATIENT"
         左外部联接" IL"。" MAP_GENDER"" MAP_GENDER"
             (
                 nvl(" HE#PATIENT"。" PATIENTS_GENDER",'U')=" MAP_GENDER"。" CD_USB_HE"
             )
             和(
                 " MAP_GENDER"。" VALID_FROM" <= sysdate
             )
             和(
                 " MAP_GENDER"。" VALID_UNTIL"> = sysdate
             )
             和(
                 (
                     sysdate> =" MAP_GENDER"。" T_APPROVED_ON"
                 )
                 要么(
                     1 = 1
                 )
             )
         )
     左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1_1"
         (
             " HE#PATIENT"。" T_SOURCE" =" MAP_SOURCE_SYSTEM_1_1"。" CD_USB_CDWH"
         )
         和(
             " MAP_SOURCE_SYSTEM_1_1"。" VALID_FROM" <= sysdate
         )
         和(
             " MAP_SOURCE_SYSTEM_1_1"。" VALID_UNTIL"> = sysdate
         )
         和(
             (
                 sysdate> =" MAP_SOURCE_SYSTEM_1_1"。" T_APPROVED_ON"
             )
             要么(
                 1 = 1
             )
         )
     )
 左外部联接" IL"。" MAP_SOURCE_SYSTEM"" MAP_SOURCE_SYSTEM_1"
     (
         " HE#PATIENT"。" SOURCE_SYSTEM" =" MAP_SOURCE_SYSTEM_1"。" CD_USB_HE"
     )
     和(
         " MAP_SOURCE_SYSTEM_1"。" VALID_FROM" <= sysdate
     )
     和(
         " MAP_SOURCE_SYSTEM_1"。" VALID_UNTIL"> = sysdate
     )
     和(
         (
             sysdate> =" MAP_SOURCE_SYSTEM_1"。" T_APPROVED_ON"
         )
         要么(
             1 = 1
         )
     );

 为什么我不能切换到html来摆脱代码?!? 无论如何,重命名测试用例文件背后的故事。 我首先想导入atl文件,但是它被禁止了:

 

 好的,再次导出为xml。 支持xml ...
 
 

 ...我却适合!

 真伤心 (从唐纳德·特朗普复制)

 混淆了这种工具销售商对这种价值数十万瑞士法郎的傲慢!

(17.6 kB)
3条回答
闻人可可
1楼 · 2020-09-21 17:48.采纳回答

to_date仅在目标数据类型为date或datetime时下推。 为MS SQL Server数据库生成的代码:

插入" TGT"("父母","孩子"," DAT1"," DAT2"," DAT3"," TS")

选择" SRC"。"父母"," SRC"。"孩子",转换(datetime2," SRC"。"孩子",112),转换(datetime2,'99991231',112)," SRC"。 " DAT3",空

从" dbo"到" SRC"

无SQL下推to_date与时间戳的组合。

绿领巾童鞋
2楼-- · 2020-09-21 18:01

对于在数据流执行期间没有更改的日期/时间戳,您可以通过设置(全局)日期/时间戳变量来解决此问题,该变量由参数传递给查询。 在查询中使用参数而不是调用函数。

蓋茨
3楼-- · 2020-09-21 18:05

感谢您的回答。 因此,我们坚持不懈地解决问题。

一周热门 更多>