Dynamic Table 구성
참고소스 1.
[#M_더보기|접기|
DATA: go_dref TYPE REF TO data.
DATA: go_dy_line TYPE REF TO data.
FIELD-SYMBOLS: <gt_table> TYPE STANDARD TABLE,
<gs_table> TYPE ANY.
IF g_zpmty = ‘1’. ” 업적.
CREATE DATA go_dref TYPE STANDARD TABLE OF zhrt2101.
ELSEIF g_zpmty = ‘2’. ” 역량.
CREATE DATA go_dref TYPE STANDARD TABLE OF zhrt2108.
ENDIF.
ASSIGN go_dref->* TO <gt_table>.
CREATE DATA go_dy_line LIKE LINE OF <gt_table>.
ASSIGN go_dy_line->* TO <gs_table>.
_M#]
참고소스 2.
[#M_더보기|접기|
* Data 선언
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE
<dyn_wa>,
<dyn_field>.
DATA: lo_dy_table TYPE REF TO data,
lo_dy_line TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat.
DATA: idetails TYPE abap_compdescr_tab,
xdetails TYPE abap_compdescr.
DATA: ref_table_des TYPE REF TO cl_abap_structdescr.
DATA: lv_field(100).
DATA: lv_where(100).
DATA: lv_f_langu TYPE dd03l-fieldname
* 테이블 구조 가져오기
CLEAR: idetails, idetails[], ifc, ifc[].
ref_table_des ?=
cl_abap_typedescr=>describe_by_name( lt_3150-tablename ).
idetails[] = ref_table_des->components[].
LOOP AT idetails INTO xdetails.
CLEAR xfc.
xfc-fieldname = xdetails-name .
xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length.
xfc-decimals = xdetails-decimals.
APPEND xfc TO ifc.
ENDLOOP.
* 다이나믹 인터널 테이블 생성, FS에 할당.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ifc
IMPORTING
ep_table = lo_dy_table.
ASSIGN lo_dy_table->* TO <dyn_table>.
* Workarea 생성 및 FS 할당
CREATE DATA lo_dy_line LIKE LINE OF <dyn_table>.
ASSIGN lo_dy_line->* TO <dyn_w
LOOP AT <dyn_table> INTO <dyn_wa>.
ASSIGN COMPONENT 1 OF STRUCTURE <dyn_wa> TO <dyn_field>.
CHECK lt_0080-code = <dyn_field>.
ASSIGN COMPONENT 2 OF STRUCTURE <dyn_wa> TO <dyn_field>.
lt_0080-code_text = <dyn_field>.
lt_0080-langu = sy-langu.
ENDLOOP
_M#]
참고 사이트 : http://goo.gl/aw0Vis