개발을 하다 보면 동적으로 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 |