在ABAP中读取字符串中的字符

aya*_*a82 0 sap abap

如何读取ABAP中字符串中的每个字符?例如,我想读取字符串"a7m4d0"中的每个字符.之后我想验证每个字符是字符还是数字.任何提示或想法?

vla*_*ean 8

DATA: smth TYPE string VALUE `qwert1yua22sd123bnm,`,
      index TYPE i,
      length TYPE i,
      char  TYPE c,
      num   TYPE i.

length = STRLEN( smth ).

WHILE index < length.
  char = smth+index(1).
  TRY .
      num = char.
      WRITE: / num,'was a number'.
    CATCH cx_sy_conversion_no_number.
      WRITE: / char,'was no number'.
  ENDTRY.
  ADD 1 TO index.
ENDWHILE.
Run Code Online (Sandbox Code Playgroud)

这是你解决的问题:P


Gui*_*ume 7

有点复杂,在最近的 740 ABAP 服务器上。:)

DATA: lv_text  TYPE string  VALUE `a7m4d0`.

DO strlen( lv_text ) TIMES.
  DATA(lv_single) = substring( val = lv_text off = sy-index - 1 len = 1 ) && ` is ` &&
                    COND string( WHEN substring( val = lv_text off = sy-index - 1 len = 1 ) CO '0123456789' THEN 'Numeric'
                                 ELSE                                                                             'Character' ).
  WRITE : / lv_single.
ENDDO.
Run Code Online (Sandbox Code Playgroud)