form ALV_FIELDCAT .
DATA: L_TABIX LIKE SY-TABIX.
REFRESH GT_ALV_FIELDCAT.
CLEAR: GT_ALV_FIELDCAT.
SET PARAMETER ID 'ALVBUFFER' FIELD SY-DATUM.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* I_BYPASSING_BUFFER = 'X'
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'GT_LIST'
* I_STRUCTURE_NAME = 'ZSDX_COMMISION_S'
* i_client_never_display = 'X'
I_INCLNAME = 'ZSDX_R005TOP'
CHANGING
CT_FIELDCAT = GT_ALV_FIELDCAT[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
LOOP AT GT_ALV_FIELDCAT INTO GS_ALV_FIELDCAT.
L_TABIX = SY-TABIX.
CASE GS_ALV_FIELDCAT-FIELDNAME.
WHEN 'DEPT_CD'.
GS_ALV_FIELDCAT-SELTEXT_L = '부서코드'.
GS_ALV_FIELDCAT-OUTPUTLEN = 20.
WHEN 'DEPT_NM'.
GS_ALV_FIELDCAT-SELTEXT_L = '부서명'.
GS_ALV_FIELDCAT-OUTPUTLEN = 10.
....
..
.
GT_LIST 에서 여러게의 필드가 있습니다.
근데 필드 카탈로그를 이용하여 기술한
필드만 출력하고 싶은데...
어떤 명령어를 사용해야 하나요?
NO_OUT, NO_SIGH, TECH
이 비슷한 걸 이용해서 했던거 같은데
토통 찾아봐도 못찼겠네요ㅠ
댓글 4
-
버미!
2010.10.05 19:47
-
rudtnfkrn
2010.10.06 00:02
책을 가지고있어서 저도 내용은 아는데
제가 생각한데로 안되네요...
그리고 NO_TECH가 아니고 TECH입니다!
-
유리선율
2010.10.06 02:20
기본 적으로 전부 출력되게 되어 있네요.
특정 필드를 제외 시키시려면, 아래와 같이 하시면 되고요.
LOOP AT GT_ALV_FIELDCAT INTO GS_ALV_FIELDCAT.
L_TABIX = SY-TABIX.
CASE GS_ALV_FIELDCAT-FIELDNAME.
WHEN 'DEPT_CD'.
GS_ALV_FIELDCAT-NO_OUT = 'X'.
..
순서를 바꿔, 기본적으로 전체 출력 제외로 설정하신 다음, 특정 필드만 출력하시고자 한다면..
'전체 필드 출력 제외
LOOP AT GT_ALV_FIELDCAT INTO GS_ALV_FIELDCAT.
GS_ALV_FIELDCAT-NO_OUT = 'X'
....
'특정 필드만 출력
LOOP AT GT_ALV_FIELDCAT INTO GS_ALV_FIELDCAT.
L_TABIX = SY-TABIX.
CASE GS_ALV_FIELDCAT-FIELDNAME.
WHEN 'DEPT_CD'.
GS_ALV_FIELDCAT-NO_OUT = ''.
....
-
rudtnfkrn
2010.10.06 18:59
인터널 테이블 구조로 받아오니까
필드카테고리에 컬럼을 일일이 정의 하지 않아도
ALV에 출력이 되거든요
아무리 찾아 보아도
결국에는 특정컬럼을 안보이게 하려고 하면
컬럼을 명시해준다음 GS_ALV_FIELDCAT-NO_OUT = 'X'
해줘야 되는군요 ^^;
컬럼이 많아서 다 써주기가 귀찮아서 다른방법을 찾아 보고 있었는데
결국에는 노가다 했습니다 ㅎㅎ
답변 감사 합니다!
no_out : 화면에서만 안보이고 레이아웃 변경에서 추가/삭제 할수 있다
no_sign : 금액 및 수량 필드에 대해 부호를 표시한다
no_tech : 화면 및 레이아웃에서 완존 삭제한다.
참고하세요..