Вычислить длину структуры itab в байтах

Внутренний размер таблицы (ej для dso) ограничен 4030 байтами. У меня есть список инфообъектов, и я хотел бы рассчитать, превысит ли их количество этот лимит. Как я могу преобразовать их тип данных в байтах?

Пример:

CHAR 4 -> xxx byte
DAT    -> xxx byte
FLTP   -> xxx byte
...

Большое спасибо!

1 ответ

Вы должны заменить ls_bkpf с реальной структурой (строка внутренней таблицы), которую вы используете в своей программе, иначе я надеюсь, что это поможет. lv_length будет содержать общий размер полей в байтах.

  DATA: ls_bkpf TYPE bkpf.
  FIELD-SYMBOLS: <lv_field> TYPE any.
  DATA: lo_typedesc TYPE REF TO cl_abap_typedescr.
  DATA: lv_length TYPE i.

  DO.
    ASSIGN COMPONENT sy-index
           OF STRUCTURE ls_bkpf
           TO <lv_field>.
    IF sy-subrc EQ 0.
      lo_typedesc = cl_abap_elemdescr=>describe_by_data( <lv_field> ).
      ADD lo_typedesc->length TO lv_length.
    ELSE.
      EXIT.
    ENDIF.
  ENDDO.
Другие вопросы по тегам