具有动态长度的字符变量



有没有办法用动态计算的长度来声明char变量(或者字符串)?这个编码说明了我想要什么:

DATA: len TYPE i,
      a   TYPE i,
      b   TYPE i.
len = a + b.
DATA: var(len) TYPE с.

不要提出带有CREATE DATA和/或字段符号的解决方案:我已经尝试过了,但它们不适用于我的情况。这种声明的目的是添加前导零和/或将其他逻辑应用于该字符串。因此字符串必须严格声明为

有什么建议吗?

Dezmond,很久以前了,但我想这就是你的问题的解决方案:

DATA:
lo_len TYPE REF TO data.
FIELD-SYMBOLS:
          <lv_len> TYPE any.
lv_length = 10.
CREATE DATA lo_len TYPE c LENGTH lv_length.
    ASSIGN lo_len->* TO <lv_len>.

干杯,Gunter

据我所知,这样的动态数据声明是不可能的。我做变量前导零的方法是覆盖子类中的"add_leading_zeros"方法,将字符串移动到正确类型的变量,添加零并将其移回主类。。。

您还可以指定一个方法来接受您的字符串和数据类型的名称。。。使用RTTS获取该类型的长度,并使用它添加零。

在您施加的限制下(除了"相信我"之外,没有指定任何可以理解的原因),这是不可能的。尝试这个也是完全没有意义的。要么在编译时知道长度,要么不知道。如果您需要将长度视为一个变量,那么尝试动态生成数据类型是没有意义的。使用字符串并手动处理前导零。没那么难。

编辑1:将SHIFT、OVERLAY和TRANSLATE与STRING变量一起使用是完全可能的,至少在最近的版本中是这样。

编辑2:如果您需要复杂的模式,请使用正则表达式-报告DEMO_REGEX_TOY,ABAP文档应该为您提供足够的信息。

相关内容

  • 没有找到相关文章

最新更新