DEC数据类型不在ABAP中溢出,但在SQL中溢出

2020-08-19 02:01发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我遇到了一个不寻常的情况...

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

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


嗨,

我遇到了一个不寻常的情况,我有一个数据库表,其中一列的数据类型为DEC(长度6个小数3)

使用相同的代码,我为DEC字段创建了一个报告程序和参数。

 REPORT ydec_test。

 表ydec_test。

 参数:p1类型ydec_test-seqno强制性,
             p2类型ydec_test-dec63强制性。

 ydec_test-seqno = p1。
 ydec_test-dec63 = p2。
 ydec_test-dec63 = ydec_test-dec63 * 10."此处应溢出,DEC63> 999.999

 尝试。
     从ydec_test修改ydec_test。
     写:'完成'。
   捕获cx_sy_open_sql_db INTO DATA(lo_ref)。
     写:/lo_ref-> get_text()。
 ENDTRY。

我可以在选择屏幕中输入的最大值是" 999.999"

当我执行报告时,我应该在将值乘以10时得到溢出异常,结果将变为" 9999.990"。 这很奇怪,因为该字段在小数点前不应有4位数字。 修改数据库表时,出现溢出异常。

数据库返回了SQL代码314。错误文本:数字溢出:无法将值转换为DECIMAL(6,3):type_code = 5,index = 1

我想在计算值时不对DB执行操作时进行错误处理。 任何人都可以提出为什么系统会以这种方式运行。 为什么字段长度在ABAP中不同而在DB中不同?

谢谢,
Nooruddin Bohra

(39.0 kB)
8条回答
SAP德到
2020-08-19 02:46

能否请您尝试以下两个步骤之一

选项1

数据v_temp类型 zdec63。
 v_temp = ydec_test-dec63 * 10。
 p_char = v_temp。
 尝试。
   ydec_test-dec63 = p_char。
 捕捉CX_SY_CONVERSION_OVERFLOW。
   写:/"溢出"。
 ENDTRY。

选项2

数据v_temp类型zdec63。
 v_temp = ydec_test-dec63 * 10。
 如果v_temp <= 999.99。
        从ydec_test修改ydec_test。
     写:'完成'。
 其他。
  您的异常处理
 万一。  

一周热门 更多>