You need to enable JavaScript to run this app. 通过Excel OData访问ABAP CDS报'STRING_SIZE_TOO_LARGE'错误咨询
优惠活动
大模型
产品
解决方案
定价
更多

通过Excel OData访问ABAP CDS报'STRING_SIZE_TOO_LARGE'错误咨询

问题根因

  1. STRING_SIZE_TOO_LARGE 报错核心原因:你新增的UTCDATETIME字段由DATS_TIMS_TO_TSTMP函数生成,默认返回abap.dec(15,0)类型,CDS暴露为OData服务时,若未显式指定类型注解,SAP网关会将该DEC类型时间戳默认映射为超长字符串,Excel OData解析器对字符串长度有严格校验,超过阈值就触发报错;浏览器OData客户端对字符串长度容错性更高,所以访问正常。
  2. 本机额外报property does not exist 原因:你本机Excel缓存了旧版本的OData元数据(EDMX),旧元数据中没有新增的UTCdatetime字段,加载时无法匹配到对应属性。
    另外你提供的CDS代码存在语法疏漏:ZTV_I_AH_02视图的定义末尾缺少闭合大括号},请先修正避免服务发布异常。

修复步骤

  • 显式指定UTCDATETIME字段的OData映射类型,避免默认生成超长字符串,修改ZTV_I_AH_02视图的对应字段定义:
define view ZTV_I_AH_02
  as select from ZTV_I_AH_01
{
  key poid_id,
  key timestamp,
  key ChangedBy,
      ChangedFrom,
      ChangedTo,
      FieldChanged_code,
      CaseId,
      timestamp_date,
      ChangedDate,
      ChangedTime_ts,
      // 新增以下3行注解
      @EndUserText.label: 'UTC时间戳'
      @Semantics.systemDateTime.utcTimestamp: true
      @OData.propertyType: 'Edm.DateTimeOffset'
      DATS_TIMS_TO_TSTMP(timestamp_date, ChangedTime_ts,abap_system_timezone( $session.client,'NULL' ),
                       $session.client,
                       'NULL' ) as UTCTDATETIME,
      time_char,
      time_char2,
      case
      when HOURS_1 < '12' then 'AM'
      else 'PM'
      end as SCHEDULED
} // 补全缺失的闭合大括号
  • 清理SAP网关端的元数据缓存:事务码输入/IWFND/CACHE_CLEANUP,选择对应OData服务的系统别名,执行全量缓存清理。
  • 清理Excel端缓存:所有测试设备操作路径为「数据>获取数据>查询选项>数据加载>清除缓存」,本机需要额外删除旧的OData连接,重新新建连接加载数据。
  • 验证服务元数据:浏览器访问OData服务的$metadata路径,确认UTCdatetime字段的类型已经映射为Edm.DateTimeOffset,且长度属性符合预期。

内容的提问来源于stack exchange,提问作者Arun Kamath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 06:36:07