ALV에서 DISPLAY 관련한 질문입니다.
필드를 추가 하려고 했는데요
field_catalog handling
하는 부분이 따로 있는건가요??
댓글 4
-
안규
2009.02.11 20:25
-
activeman
2009.02.11 20:30
네..따로 있습니다..
함수로 된 ALV일 경우,
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BYPASSING_BUFFER = 'X'
I_CALLBACK_PROGRAM = LV_REPID
IT_EVENTS = GT_EVENTS[]
IT_FIELDCAT = GT_FIELDCAT[] ===> 이부분이 사용되는 필드에 대한 값을 저장한 인터널테이블입니다. "GT_FIELDCAT"검색
IS_LAYOUT = GS_LAYOUT
IT_SORT = GT_SORT[]
TABLES
T_OUTTAB = IT_TAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
CLASS 일 경우
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = GS_LAYOUT1
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT1 ===> 이것이 필드값을 저장한 인터널테이블 입니다.
IT_SORT = GT_SORT1
IT_OUTTAB = IT_TABM[].
소스에서 필드 관련 인터널테이블 검색하셔서(GT_FIELDCAT)
아래와 같이 변경하시면 됩니다..
즐밥하세요..
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = GV_REPID
I_INTERNAL_TABNAME = 'IT_TAB'
I_INCLNAME = GV_REPID
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
DELETE GT_FIELDCAT WHERE FIELDNAME = 'MARK'.
FIELD-SYMBOLS: <FS> TYPE SLIS_FIELDCAT_ALV.
LOOP AT GT_FIELDCAT ASSIGNING <FS>.
CASE <FS>-FIELDNAME.
WHEN 'LIGHT'.
<FS>-REPTEXT_DDIC = '@EB@'.
<FS>-SELTEXT_L = '@EB@'.
<FS>-SELTEXT_M = '@EB@'.
<FS>-SELTEXT_S = '@EB@'.
<FS>-DDICTXT = 'M'.
WHEN 'MATUP'.
<FS>-KEY = 'X'.
<FS>-HOTSPOT = 'X'.
WHEN 'MAKUP'. "자재내역
<FS>-KEY = 'X'.
WHEN 'MATNR'.
<FS>-KEY = 'X'.
<FS>-HOTSPOT = 'X'.
WHEN 'MAKTX'. "자재내역
<FS>-KEY = 'X'.
ENDLOOP.
-
카츠
2009.02.11 21:12
메일로 펑션 이용한 간단한 소스 보내드렸어요 참고하세요 -
쭈니
2009.02.12 20:10
답변 달아주신분들 모두감사드립니다.
제가 찾고 있던 구문은
activemen님께서 올려주신 function이었네요.
카츠님 메일로 보내셨다고 했는데..
naver.com으로 보내주신건가요??
다시 한번 보내주실수있음 좋겠네요..
보통 ALV 는 밑의 메소드를 사용하여 뿌려줄텐데요
it_fieldcatalog = gt_fcat.
gt_fcat 을 정의해주시면 되는 겁니다.
CALL METHOD gv_grid_2->set_table_for_first_display
EXPORTING
i_save = 'A'
is_layout = layout_lvc
* it_toolbar_excluding = gt_toolbar[]
CHANGING
it_outtab = gt_order[]
it_fieldcatalog = gt_fcat.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.