alv 컬럼 트리 개발 중인데..
혹시 컬럼 트리 개발 할때 인터널 테이블을 다이나믹 인터널 테이블로 개발 하신 분 계시면 도움 요청입니다.
컬럼을 다이나믹으로 개발 해야 하는데...
해본 건 고정 인터널 테이블만 해봐서..어찌 해야 할지 난감 하네요...
혹시 개발 해보신분 있으면 도와주세요~
댓글 5
-
지의
2007.11.28 22:20
-
hongman
2007.11.28 22:33
필드카달로그 다시 설정한 다음에 아래 메소드 두개 호출해 주시면 되는데요.
set_frontend_fieldcatalog( it_fieldcatalog = gt_fieldcat[] ).
refresh_table_with_stable( i_soft_refresh = abap_true ). -
鵬의 날개
2007.11.28 23:33
어떤 식의 동적 구성인지는 모르겠지만 필드 카탈로그를 조건에 따라 바꿔주는 건 코딩만 늘어날 뿐 효율적이지 않습니다.
CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
상기 메소드를 이용하시면 조건에 따른 테이블을 구성하실수 있습니다.
-
지의
2007.11.28 23:47
set_frontend_fieldcatalog 이후에 컬럼 옵티마이져가 풀려버리던데.. refresh_table_with_stable 이걸 해주면
컬럼 옵티마이저가 재 실행되지 않는다면.. set_optimize(?) 라는 메소드도 또 한번 불러주셔야 할 겁니다.
그리고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 이거 상당히 어렵던데.. 레퍼런스 있으시면 공유 부탁드립니다.
-
e-abap
2007.11.29 00:09
GENERATE 구문으로 인터널 테이블을 동적으로 구성은 해보았습니다.
다음 소스를 참고해보시면 감이 오실거 같은데... 지난번에도 제가 정리를 한번 한다는게 그냥 넘어갔네요.
TYPES: t_sline TYPE edpline,
BEGIN OF t_s,
line TYPE t_sline,
END OF t_s.
DATA: BEGIN OF r OCCURS 200, line TYPE t_sline, END OF r.
DATA: pool_name LIKE sy-repid.
DATA: BEGIN OF syn_msg, l1(72), l2(72), l3(72), END OF syn_msg.
DATA: syn_lin TYPE i, syn_wrd(30).
DATA : l_cnt TYPE c.
CLEAR : r , r[] .
g_fname = '123'.
* l_rep_name = sy-repid.
r = 'REPORT ZQMR0400 MESSAGE-ID ZQM1 NO STANDARD PAGE HEADING.' .
APPEND r .
r = 'FORM create_itab.'.
APPEND r .
r = 'DATA: BEGIN OF GT_DISPLAY2 OCCURS 0.'.
APPEND r .
r = 'DATA: kurztext LIKE QPMT-kurztext.'.
APPEND r .
DO 9 TIMES.
l_cnt = l_cnt + 1.
CONCATENATE 'DATA : C' l_cnt '(30) TYPE C.'
INTO r.
APPEND r .
ENDDO.
r = 'DATA: END OF GT_DISPLAY2.'.
APPEND r .
r = 'ENDFORM .'.
APPEND r .
* GT_DISPLAY2를 글로별 인터널 테이블 구조로 만들기 위해서
* PERFORM ASSIGN_STR USING GT_DISPLAY1.
GENERATE SUBROUTINE POOL r NAME pool_name
MESSAGE syn_msg LINE syn_lin
WORD syn_wrd.
PERFORM create_itab IN PROGRAM (pool_name) .
IF sy-subrc EQ 0.
ENDIF.
PERFORM create_itab IN PROGRAM (sy-repid).
ALV 에서 동적 인터널 테이블을 문의하시는 분들이 많은데 굳이 꼭 이렇게 해야 하는 것이 아니라면
fieldcatalog 에서 컨트롤 해주는 것이 편하고 쉽고 좋습니다..좋은지는 모르겠지만...