我在一个AMDP类中有一个sqlscript。我得到了以下语句的转储:
sel1 = select mandt, equnr,
ROW_NUMBER() OVER ( PARTITION BY equnr ORDER BY equnr, idate, itime, mdocm) as rnum,
to_date(idate) as idate,
cast(to_varchar(idate) || to_varchar(itime) as "$ABAP.type( TSTMP_BW_EXTRACT )" ) AS mytimestmp,
LEAD(cast(to_varchar(idate) || to_varchar(itime) as "$ABAP.type( TSTMP_BW_EXTRACT )" )) OVER ( ORDER
BY equnr, idate, itime, MDOCM) timdelta,
to_decimal('0.0',25,6) as mydiff,
VLCOD,
LEAD(vlcod, 1) OVER ( ORDER BY equnr,idate,itime,MDOCM) as nxtVlcod,
TO_DECIMAL('0.0',25,6) as T_PRESS_RUN,
TO_DECIMAL('0.0',25,6) as T_PRESS_DWN,
TO_DECIMAL('0.0',25,6) as T_UPRESS_DWN
from :sel_imrg
where equnr = :v_equnr
and idate between v_date_begin and v_date_end
order by mandt, equnr, idate, itime, MDOCM;
问题似乎是将单独的idate和itime字段转换为时间戳。我尝试过许多不同的时间戳值数据类型,比如上面显示的时间戳和ABAP类型。我还尝试过to_timestamp()、cast()、to_decimal()等。
奇怪的是,几乎完全相同的语句在HANA sidecar中的HANA studio SQL控制台中工作得很好。
转储显示CX_AMDP_EXECUTION_FAILED SQL错误339 "339无效编号异常:无效编号:"TST"."SAPTST"."ZCL_TEST_CLASS=>EXECUTE#stb2#20210405110801":|| l“
系统为HANA 2.00.048.00.1591276203上的S/4 1809 SAP_ABA 75D SP5
我感谢你们所有人能提供的任何帮助。
发布于 2021-04-15 05:31:00
错误消息"[339] (range 3) invalid number exception: invalid number
表示字符串到number数据类型的转换失败。
这意味着,这是关于将数字或字符串转换为date或timestamp数据类型的而不是。
导致隐式转换的一个潜在原因是WHERE子句的这一部分:
where equnr = :v_equnr
如果:v_equnr
是数值数据类型,而equnr
列是字符数据类型,则需要执行隐式类型转换,即字符串equnr
gets类型转换为数值数据类型。当列equnr
包含任何字符时,这将产生OP遇到的错误。
因此,这不仅取决于语句和表结构,还取决于表中的实际数据,这可能是同一语句在另一个系统上工作的原因。
https://stackoverflow.com/questions/67096405
复制相似问题