本帖最后由 bgx5810 于 2010-2-1 17:51 编辑
CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE创建内表
REPORT GREAT_TABLE1.
FIELD-SYMBOLS:
<DYNAMIC_TAB> TYPE STANDARD TABLE,
<DYNAMIC_WA>,
<DYNAMIC_FIELD>.
DATA:
REF_OUT TYPE REF TO DATA,
REF_OUT_WA TYPE REF TO DATA,
FCAT_S TYPE LVC_S_FCAT,
FCAT_T TYPE LVC_T_FCAT.
CLEAR:
FCAT_S.
REFRESH:
FCAT_T.
FCAT_S-FIELDNAME = '编号'.
FCAT_S-DATATYPE = 'C'.
FCAT_S-INTLEN = 18.
APPEND FCAT_S TO FCAT_T.
CLEAR:
FCAT_S.
FCAT_S-FIELDNAME = '商品'.
FCAT_S-REF_TABLE = 'MAKT'.
FCAT_S-REF_FIELD = 'MAKTX'.
APPEND FCAT_S TO FCAT_T.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = FCAT_T
IMPORTING
EP_TABLE = REF_OUT.
ASSIGN REF_OUT->* TO <DYNAMIC_TAB>.
CREATE DATA REF_OUT_WA LIKE LINE OF <DYNAMIC_TAB>.
ASSIGN REF_OUT_WA->* TO <DYNAMIC_WA>.
<DYNAMIC_TAB>就是所创建出来的内表,<DYNAMIC_WA>就是内表中的行。
根据上面的定义,内表一共有两个字段:
一个是“编号”,长度是3位的CHAR型;
一个是“商品”,长度和类型是参照“MAKT”表中的“MAKTX”的。
此方法只能用于普通的内表,如果是含有“DEEP STRUCTURE”结构的内表,这样定义程序在运行时会DUMP,
因为要用第二种方法来定义含有“DEEP STRUCTURE”结构的内表。 |