数值溢出[314] AMDP程序

2020-08-18 16:06发布

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

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


专家们,

HANA DB版本1.0

BW版本7.4 SP16

Q1)请使用BW转换中用AMDP程序编写的以下案例陈述来阐明数值溢出问题。

FIELD3 NVARCHAR(4)-值003

FIELD2 DECIMAL(10,2)-0

FIELD4整数-0

案例

当FIELD1 = 2时(FIELD2 * FIELD3)/FIELD4

以字段5结尾;

此代码给出314数值溢出错误,而不是除以0。当我用值替换下面的代码时,它也给出314错误

案例

当FIELD1 ='2'时(0 * FIELD3)/0

以字段5结尾;

如果我在计算中将FIELD3的直接值设为003,则表示被零除.FIELD3发生了某些事情。

请说明为什么代码会如此显示

Q2)在上面的代码中,如何显式获取field5的数据类型? 我们知道,case语句的结果是值将进入FIELD5,但是请展示一种借助脚本代码或任何其他方式识别数据类型的方法。

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

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


专家们,

HANA DB版本1.0

BW版本7.4 SP16

Q1)请使用BW转换中用AMDP程序编写的以下案例陈述来阐明数值溢出问题。

FIELD3 NVARCHAR(4)-值003

FIELD2 DECIMAL(10,2)-0

FIELD4整数-0

案例

当FIELD1 = 2时(FIELD2 * FIELD3)/FIELD4

以字段5结尾;

此代码给出314数值溢出错误,而不是除以0。当我用值替换下面的代码时,它也给出314错误

案例

当FIELD1 ='2'时(0 * FIELD3)/0

以字段5结尾;

如果我在计算中将FIELD3的直接值设为003,则表示被零除.FIELD3发生了某些事情。

请说明为什么代码会如此显示

Q2)在上面的代码中,如何显式获取field5的数据类型? 我们知道,case语句的结果是值将进入FIELD5,但是请展示一种借助脚本代码或任何其他方式识别数据类型的方法。

付费偷看设置
发送
4条回答
落灬小鱼
1楼-- · 2020-08-18 16:52

您好 ABAP初学者

第一季度。 请先阅读并理解错误消息。 它将帮助您自己解决问题。 显然,您不能将正在执行的除以零。

第二季度。 关于输出参数,请查看文档: https://help。 sap.com/doc/abapdocu_750_index_htm/7.50/zh-CN/abenamdp_hdb_sqlscript.htm

关于,
Mateusz
能不能别闹
2楼-- · 2020-08-18 16:58

请增加 您的Field5-因为FIELD2 * FIELD3的乘积要求保留在Field5中。

因此增加它。 DECIMAL(18,2)

此致

Venkat

Climb_Ma
3楼-- · 2020-08-18 17:08

Hi

a)这是一个明确的消息,说明您是 试图除以零-这将引发转储/错误。 因此,您应该按以下方式更改案例说明

 CASE
   当(FIELD1 = 2 AND FIELD4> 0)然后(FIELD2 * FIELD3)/FIELD4 ELSE 0
 结束于现场5;
 

b)关于Field5的数据类型,它应该与Field2相同-因为您要在Field2上乘以某个值-因此输出将与Field2相同。 在这种情况下,它应该为DECIMAL(10,2)。 但是,如果Field3是大数字,则可能必须将小数长度增加为示例DECIMAL(12,2)

问候,

Venkat

空代码
4楼-- · 2020-08-18 17:11

您好,Venkat, Mateusz Adamus

感谢您的答复。

a)错误应该是被零除,但是为什么它会显示数字溢出。

所以想知道为什么会出现数字溢出错误消息?

一周热门 更多>