sap 判断字串是否为数字

本文介绍了一种ABAP程序中判断字符串是否为数字的方法,并通过调用NUMERIC_CHECK函数进行补零操作。此外,还展示了如何使用TRY-CATCH结构来捕获并处理系统异常。

 

判断字串是否为数字并输出补零

FM:NUMERIC_CHECK

两种输出结果:NUMC 、CHAR

L_SAKNR = I_FICHERO-LINEA+L_POS(10).

    CALL FUNCTION 'NUMERIC_CHECK'

         EXPORTING

              STRING_IN = L_SAKNR

         IMPORTING

              HTYPE     = L_TIPO.

    IF L_SAKNR > '0000000000' AND L_SAKNR <= '9999999999'

       AND L_TIPO = 'NUMC'.

      V_SAKNR = L_SAKNR.

 

补获系统异常方法:

 

REPORT  ZSDR014.
DATA:A TYPE I,
     B TYPE LENGTH 20,
     ERROR TYPE REF TO CX_ROOT,
     MESSAGE TYPE STRING.
B = '8.050'.

TRY .
    A = B.
    MESSAGE '无异常情况' TYPE 'E'.
  CATCH CX_SY_CONVERSION_NO_NUMBER INTO ERROR.

MESSAGE = ERROR->GET_LONGTEXT( ).
 MESSAGE MESSAGE TYPE 'E'.
ENDTRY.

### 判断变量是否为字符串类型的几种方法 在 C++ 中,可以通过多种方式来判断一个变量是否属于 `std::string` 类型。以下是几种常用的方法: #### 使用 typeid 运算符 可以利用 `typeid` 来获取并比较类型信息对象 (type_info),从而确定给定表达式的实际运行时类型。 ```cpp #include <iostream> #include <typeinfo> if(typeid(variable) == typeid(std::string)){ std::cout << "variable is a string." << std::endl; } ``` 此方法适用于已知具体类型的场景[^1]。 #### 动态类型检查(针对指针或引用) 对于多态类的对象或者基类指向派生类的情况,则可借助 RTTI 特性中的 `dynamic_cast<>` 或者 `type_index`. 然而,这通常不用于基本数据结构如标准库容器内的元素检测上[^2]. #### 编译期断言与模板元编程 通过 SFINAE 技术实现编译期间的静态特性查询,这种方法更为复杂但也更高效安全: ```cpp template<typename T> constexpr bool is_string_v = false; template<> constexpr bool is_string_v<std::string> = true; // Usage: static_assert(is_string_v<decltype(myVar)>,"Not a string!"); ``` 上述代码定义了一个特化版本的模板参数用来匹配特定类型,并允许程序员编写依赖于这些属性的逻辑而无需担心运行效率损失. #### 序列化/反序列化的辅助手段 当处理来自外部源的数据流时,有时会采用自描述性强的方式存储数据格式说明,比如 JSON/XML 等标记语言;读取过程中自然能够识别字段对应的原始编码形式.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值