SAP DUMP CX_SY_CONVERSION_NO_NUMBER

这篇博客讨论了一个ABAP应用程序中遇到的问题,即'2,021.04'中的逗号无法被解析为数字导致程序终止。错误源于ABAP不接受逗号作为数字分隔符。解决方案是遵循ABAP对整数和浮点数的正确表示方式,如使用'E'表示科学计数法或移除逗号。如果你的程序或修改过的SAP程序中出现类似错误,可以尝试修正错误语法。

Short Text 短文本

“2,021.04” cannot be interpreted as a number
“2,021.04” 不能被解释为一个数字

What happened 发生了什么

Error in the ABAP application program
ABAP应用程序错误

The current ABAP program had to be terminated because it found a statement that could not be executed
当前ABAP程序因为发现一条无法被执行的语句而终止

其实就是因为"2,021.04"里的金额分隔符逗号无法被ABAP解析
In fact, it is for the comma of "2,021.04" cannot be analyzed by ABAP

How To Correct The Error 如何更正此错误

Integers are represented in ABAP by a sequence of digits which can be preceded by a sign
整数在ABAP中以一系列带有符号的数字表示

Floating point numbers can be displayed in one of the following ways in
ABAP:

  • [Sign][Mantissa]E[Sign][Exponent]
    • -12E+34, +12E-34, 12E34
  • [Sign][Integer part].[Fractional part]
    • 12.34
SAPCX_SY_ARITHMETIC_OVERFLOW错误通常是由于金额累加出现溢出导致的。在处理小币种问题时,可能会因为数值超出了系统所能处理的范围而触发该错误。例如,在一个report处理小币种问题时就出现了dumpCX_SY_ARITHMETIC_OVERFLOW) [^1]。 另外,在SAP报表中,当大量查询数据时,若总成本的计算(总成本 = 数量 * 标准成本)出现该错误,可能是大量数据中混杂着假的成本,且总成本参考的数据元素如mbew表中的stprs(标准价格)也可能存在问题 [^3]。 对于该错误的解决方案,在ABAP开发中,需要进行异常处理。在平时的ABAP开发里,对于这种可能出现的异常,通常可以像处理其他异常一样进行捕获。例如对于数据库异常和RFC通信错误的处理方式可以作为参考,通过`TRY...CATCH`语句块来捕获异常并进行相应处理。以下是数据库异常处理示例代码: ```abap DATA: lcx_error TYPE REF TO cx_root. "cx_sy_sql_error . "cx_sy_open_sql_db. DATA i_tab LIKE TABLE OF spfli WITH HEADER LINE. DATA err_text TYPE c LENGTH 1000. TRY. INSERT spfli FROM TABLE i_tab. CATCH cx_sy_open_sql_db INTO lcx_error. err_text = lcx_error->get_text( ). "得到错误信息 sy-subrc = 4. "改变系统变量 ENDTRY. IF sy-subrc <> 0. WRITE: '数据更新失败!'. WRITE err_text. ROLLBACK WORK. ELSE. WRITE: '数据更新成功!'. COMMIT WORK. ENDIF. ``` 对于RFC异常处理示例代码如下: ```abap TRY. CALL FUNCTION 'Z_DAQ_CALL_JCO' DESTINATION 'ZJCOSERVER_DAQ' EXPORTING pv_empid = l_empid IMPORTING pv_rlt = l_rlt TABLES it_spfli = i_tab EXCEPTIONS system_failure = 1 MESSAGE err_text communication_failure = 2 MESSAGE err_text. ENDTRY. IF SY-SUBRC <> 0. WRITE: / '调用***失败!' , err_text. ENDIF. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值