Вычислить длину структуры 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.