获得内表结构信息

我写了一段代码:

TYPE-POOLSabap.
TABLESsflight.
TYPESBEGIN OF ty_sflight,
      carrid TYPE s_carrid,
      connid TYPE s_conn_id,
      fldate TYPE sy-datum,
      price TYPE s_price,
      END OF ty_sflight.
DATAgt_sflight TYPE STANDARD TABLE OF ty_sflight.
datags_sflight type ty_sflight.
DATAgo_strucdes TYPE REF TO cl_abap_structdescr.
DATAgt_components TYPE abap_compdescr_tab WITH HEADER LINE.
START-OF-SELECTION.
  SELECT carrid
         connid
         fldate
         price
    INTO CORRESPONDING FIELDS OF TABLE gt_sflight
    UP TO 10 ROWS
    FROM sflight.

  go_strucdes ?= cl_abap_typedescr=>describe_by_datags_sflight ).
  gt_components[] go_strucdes->components[].
  LOOP AT gt_components.
    WRITE:/ gt_components-name,
            gt_components-type_kind,
            gt_components-length.
  ENDLOOP.
 

 

如下几点要说明一下:

1.这里是调用describe_by_data方法获取内表信息,传入的是一个structure并非内表本身。

2.我们可以通过describe_by_name方法获取abap dictionary的表结构信息,传入一个表名或者structure名。

3.对于前两点,获取的长度和本身会不一致,这是unicode的原因,办法是在其基础上除以2。

你可能感兴趣的:(获得内表结构信息)