最近看到论坛上有个问题,在实际SAP与外部系统传递数据时,监控内表数据字节大小的问题,下面写了个小程序,可能存在误差,但不大。误差可能在数字型累加其最大字节上。
REPORT ZLC_TABLE_SIZE.
DATA: BEGIN OF WA_DATA,
MATNR TYPE MARD-MATNR,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT,
LABST TYPE MARD-LABST,
END OF WA_DATA.
DATA: IT_DATA LIKE TABLE OF WA_DATA.
DATA: WK_LENGTH TYPE I,
WK_TOTAL TYPE I.
DATA: WK_TYPE TYPE C.
FIELD-SYMBOLS:<FS_FIELD> TYPE ANY,
<FS_DATA> LIKE WA_DATA.
SELECT MATNR
WERKS
LGORT
LABST
INTO TABLE IT_DATA
UP TO 10 ROWS
FROM MARD.
LOOP AT IT_DATA ASSIGNING <FS_DATA>.
DO 4 TIMES.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE <FS_DATA> TO <FS_FIELD>.
DESCRIBE FIELD <FS_FIELD> TYPE WK_TYPE.
IF WK_TYPE = 'C'
OR WK_TYPE = 'N'
OR WK_TYPE = 'D'
OR WK_TYPE = 'T'.
WK_LENGTH = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( <FS_FIELD> ).
ELSE.
DESCRIBE FIELD <FS_FIELD> LENGTH WK_LENGTH IN BYTE MODE.
ENDIF.
WK_TOTAL = WK_LENGTH + WK_TOTAL.
ENDDO.
ENDLOOP.