计算Itab结构的长度(以字节为单位)

时间:2018-07-13 08:31:30

标签: database oracle sap abap

内部表的大小(例如dso的e.j.)限制为4030个字节。我有一个信息对象列表,谁想计算它们的数量是否会超过此限制。如何将其数据类型转换为字节?

示例:

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

非常感谢!

1 个答案:

答案 0 :(得分: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.