개발을 하다 보면 동적으로 Internal Table 을 만들어야 할 때가 있다. 경우에 따라 컬럼의 갯수가 변경되는데 동적으로 테이블을 만들다보면 Deep Structure, 즉 Internal Table 에 Internal Table 이 들어가야 하는 경우가 생긴다. 예를 들면 ALV 에서 각 셀별로 색상을 지정해 줄 수 있는데, 안에 Internal Table 로 셀을 지정해야 하는 경우이다. ( 이 경우를 처리하기 위해 찾아보게 되었다. )
참조 URL : dynamic internal table with deep structure
먼저 전역 Structure 를 생성한다. (SE11 을 이용하여 ZZEXTEND_FIEDCAT 을 생성)
* 전역변수 선언 시작 DATA : gt_fieldcatalog TYPE lvc_t_fcat. DATA : gt_table TYPE REF TO data, gt_line TYPE REF TO data, FIELD-SYMBOLS : <gt> TYPE STANDARD TABLE, <wa> TYPE ANY. * 전역변수 선언 끝 DATA : ls_field TYPE lvc_s_fcat, l_field(10) TYPE c, l_count(2), lines TYPE i. CLEAR : ls_field, lines, lt_field_base[]. ADD 1 TO lines. ls_field-fieldname = 'ACCOUNT'. ls_field-col_pos = lines. ls_field-datatype = 'CHAR'. ls_field-inttype = 'C'. ls_field-intlen = '15'. ls_field-dd_outlen = '20'. ls_field-scrtext_s = 'USER ID'. ls_field-scrtext_m = 'USER ID'. ls_field-scrtext_l = 'USER ID'. ls_field-outputlen = '12'. ls_field-just = 'C'. ls_field-key = 'X'. APPEND ls_field TO gt_fieldcatalog. CLEAR ls_field. ADD 1 TO lines. ls_field-fieldname = 'NAME'. ls_field-col_pos = lines. ls_field-datatype = 'CHAR'. ls_field-inttype = 'C'. ls_field-intlen = '15'. ls_field-dd_outlen = '20'. ls_field-scrtext_s = 'Name'. ls_field-scrtext_m = 'Name'. ls_field-scrtext_l = 'Name'. ls_field-outputlen = '10'. ls_field-just = 'C'. ls_field-key = 'X'. APPEND ls_field TO gt_fieldcatalog. CLEAR ls_field. " ALV Color ADD 1 TO lines. ls_field-fieldname = 'ZCOLOR'. ls_field-inttype = 'C'. ls_field-datatype = 'CHAR'. ls_field-ref_field = 'COLOR'. " ZZEXTEND_FIELDCAT FIELD 명 ls_field-ref_table = 'ZZEXTEND_FIELDCAT'. ls_field-tabname = 'ZZEXTEND_FIELDCAT'. APPEND ls_field TO gt_fieldcatalog. CLEAR ls_field. CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_fieldcatalog[] IMPORTING ep_table = gt_table. ASSIGN gt_table->* TO <gt> . CREATE DATA gt_line LIKE LINE OF <gt>. ASSIGN gt_line->* TO <wa>.
- 끗 -
반응형
'SAP > ABAP' 카테고리의 다른 글
ABAP File Upload (0) | 2014.06.16 |
---|---|
ABAP 소스 비교 프로그램 (0) | 2014.05.14 |
Collect 의 사용 (0) | 2014.04.23 |
ABAP Progress Indicator (0) | 2014.04.15 |
레코드 생성,수정 사용자 Standard Field (0) | 2014.04.14 |
Screen 에서 상단 Title 을 변경 시키고 싶을 때 (0) | 2014.03.11 |
ABAP Sample 프로그램을 공부하자 (0) | 2014.01.21 |
ALV Grid에서 Material Number 에서 0 제거 (0) | 2014.01.14 |
테스트/운영 서버에 CR 반영할 때 여러개 동시 반영 (2) | 2014.01.14 |
SAP 로그인 후 특정 T-code 수행 (0) | 2013.09.05 |