运行时的字段大小小于DDIC定义

2020-08-26 05:07发布

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

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


大家好,我这里的情况很奇怪。

"我的数据元素"定义为8位小数和3位小数。 该数据元素用在表格字段中,并且该表格用作SE24中class属性的引用类型。

但是在运行时,基于表的类属性的字段大小小于ddic定义,因此有时会由于大小溢出而发生转储。 运行时的字段大小为5而不是8。

为什么运行时的字段大小与ddic定义不同? 怎么处理呢? 我不能只更改数据元素的大小,因为它会影响其他程序。

数据元素定义

表定义

class属性

运行时大小

(24.6 kB)

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

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


大家好,我这里的情况很奇怪。

"我的数据元素"定义为8位小数和3位小数。 该数据元素用在表格字段中,并且该表格用作SE24中class属性的引用类型。

但是在运行时,基于表的类属性的字段大小小于ddic定义,因此有时会由于大小溢出而发生转储。 运行时的字段大小为5而不是8。

为什么运行时的字段大小与ddic定义不同? 怎么处理呢? 我不能只更改数据元素的大小,因为它会影响其他程序。

数据元素定义

表定义

class属性

运行时大小

(24.6 kB)
付费偷看设置
发送
11条回答
软件心理学工程师
1楼-- · 2020-08-26 05:41

您做出了错误的假设。

DDIC和ABAP之间没有不连贯性:

  • 在DDIC中,打包字段是使用数字( 8)包括小数点后的数字。
  • 在程序中,打包字段使用字节数(5个字节对应于8或9位数字)表示,包括小数点后的数字。/li>

如果DDIC打包字段的位数为偶数(8),则其输出长度相同,但是ABAP程序仍然可以再存储一位数字(9),因此将 最终将导致存储此多余数字的数据库错误,并且由于输出长度而无法显示该多余数字。

因此,对于DDIC压缩字段,请始终使用奇数个数字(CURR,

注意:溢出的短转储可能是由其他原因引起的,如果需要更多支持,请发布短转储(附加的TXT ZIP文件)。

木偶小白
2楼-- · 2020-08-26 05:56
< p>转储消息为" ORA-01438:值大于指定的精度"。 我已附上转储详细信息:

转储详细信息

CJones
3楼-- · 2020-08-26 05:45

创建并使用 新的中间字段ZDE_NEGO_PORCENTUAL_LG比您当前的字段ZDE_NEGO_PORCENTUAL大。

插入IF语句:

如果ZDE_NEGO_PORCENTUAL_LG> 99,999.999。 "例如

写道:/ZDE_NEGO_PORCENTUAL_LG。 "例如

MESSAGE ...'ZDE_NEGO_PORCENTUAL_LG太大'。 "例如

ENDIF。

My梦
4楼-- · 2020-08-26 05:42

更新:我可以模拟转储,只需在小数点前插入6位数字即可。 这就是在生产环境中发生的情况:计算出的值在小数点前六位。

歪着头看世界
5楼-- · 2020-08-26 05:51

1。 添加TRY-CATCH ...,RAISING ...(以检测潜在问题:例如字符或字符串或值太大,意外将其移动或计算为ZDE_NEGO_PORCENTUAL字段)

2。 创造。 填充并显示新的(较大的)中间字段的值:

ZDE_NEGO_PORCENTUAL_CHAR(例如:CHAR40)

ZDE_NEGO_PORCENTUAL_LG(例如:DEC,长度17,十进制6)

3。 在SAP Development System中:创建临时软中断,以查看实际值(以查看值是否为CHAR或太大等),然后填充以下字段:ZDE_NEGO_PORCENTUAL,ZDE_NEGO_PORCENTUAL_LG,ZDE_NEGO_PORCENTUAL_CHAR

4。 终止前ZDE_NEGO_PORCENTUAL字段中的实际值是多少?

5。 语句在哪里计算(或移至)ZDE_NEGO_PORCENTUAL?

消息

" ORA-01438:值大于此列允许的指定精度

"原因:插入或更新记录时,输入的数字值超出了为列定义的精度

"操作:输入一个符合数字列精度的值,或者将MODIFY选项与ALTER TABLE命令一起使用以扩展精度。"

参考

http://www.dba-oracle.com/t_ora_01438_value_forr_than_specified_precision_ 。/p>

渐行渐远_HoldOn
6楼-- · 2020-08-26 05:41

嗨,

您的域名声明

长度指定,字符数= 8

小数位= 3。

这意味着总长度为8,其中3保留给小数部分,5保留为整数

例如 99999.999

长度不包含'。' 对于输出长度

一周热门 更多>