文字列をバイトで切る

lv_len = cl_abap_list_utilities⇒dynamic_output_length ( lv_matnr_text)

lv_matnr_textバイト数はlv_len格納する

方法②

FORM f_text_split  USING    iv_input  TYPE any
                            iv_len    TYPE i    ”切るバイト数
                   CHANGING cv_output TYPE any.

   DATA:
     lv_char TYPE string,
     lv_len  TYPE i,
     lv_st3  type i,
     lv_str  TYPE i.

  CHECK:
    iv_input IS NOT INITIAL AND
    iv_len IS NOT INITIAL.

    lv_str = strlen( iv_input ).

    DO.
    IF lv_str >= sy-index.
      lv_char = iv_input+0(sy-index).
      CALL METHOD cl_abap_list_utilities=>dynamic_output_length
        EXPORTING
          field = lv_char
        RECEIVING
          len   = lv_len.
      IF lv_len >= iv_len.
        "文字バイト数と分割数同じ場合
        if lv_len = iv_len.
          cv_output = lv_char.

        ELSE.
          "文字バイト数が分割数より大きい場合
          lv_st3 = sy-index - 1.
          lv_char = iv_input+0(lv_st3).
          cv_output = lv_char.

         ENDIF.
        EXIT.
      ENDIF.
    ELSE.
      cv_output = iv_input.

      EXIT.
    ENDIF.
  ENDDO.

  

  

原文地址:https://www.cnblogs.com/yjyongil/p/10494134.html