一看到512^17 MOD 2773这种表达式, 我们就会立刻碰到一个很现实的问题, 传统的type i根本扛不住。ABAP 官方文档给出的i类型范围是-2147483648到+2147483647, 后来的int8虽然把范围扩大到了±9.22e18级别, 但它依旧只是有限长度整数, 并不是任意精度。另一条常见路线是type p, 它适合定点十进制, 单个值最多 31 位有效数字, 中间计算会用到 31 位甚至 63 位辅助精度, 可它也不是专门为任意长度整数设计的。连 ABAP 的数字字面量本身, 官方也限定在最多 31 位数字以内。正因为这些硬边界都摆在那里, 用字符串加分段存储去实现大整数, 就成了一条非常自然的路。(SAP Help Portal)这套实现最有意思的地方, 不在于它多么优雅, 而在于它把小学里手算加减乘除的套路, 直接搬进了 ABAP 对象里。代码定义了一个本地类lcl_bignum, 它没有把大数塞进某个数据库类型或者浮点类型里, 而是老老实实保留了三份信息, 一份字符串形式, 一份整数内表形式