'REUSE_ALV_GRID_DISPLAY' function을 써서 grid를 보여 주는데
data가 변경될 경우 grid의 내용을 Refresh 시키고 싶은데
어떻게 하면 되는지 모르겠네요...
grid의 표준 toolbar에 나오는 refresh 버튼은 안 먹히는 것 같고...
submit을 이용해서 해당 프로그램을 호출해서 refresh되는걸 보여주려고 하니 화면이 너무 껌뻑거리고...
submit을 사용하지 않고 해당 grid에 변경된 data를 refresh 시켜주는 방법을 알고 계신분
좀 가르쳐 주세요.
감사합니다.
댓글 6
-
SkyDream
2008.01.09 17:26
-
SAP폐인
2008.01.09 18:50
음.. col_stable이랑 row_stable필드는 어떤 이유로 사용하는 건가요?
저는 refresh필드 하나만 값을 던져주어도 refresh는 되던데요
-
SkyDream
2008.01.09 19:45
col_stable이랑 row_stable필드를 'X'로 해 줄경우 grid data가 refresh 될때
현재 화면에 보이는 위치(row, col)를 그대로 유지시켜 줍니다.
'X'로 주지 않을 경우에는 refresh 되면서 display 되는 위치가 맨 위로 이동됩니다.
-
SAP폐인
2008.01.09 23:03
그런데 Case문 바깥에다가 refresh관련 값을 주는건 어떻습니까? 어차피 User command를 한 번에 여러개를 타는 것도 아니고 스크린에 표시한다고 해도 Case~Endcase문이 끝나고 바로 refresh시키는게 When 구절 밑에 각각 넣는 것보다는 나을 것 같습니다만 다른 분들은 어떻게 생각하시는지요?
-
뱅가니
2008.01.10 02:18
흠 그렇군요 -
SkyDream
2008.01.10 16:50
급하게 테스트 하느라 임시 코딩을 올려 놓은겁니다.
원래는 FORM REFRESH_DATA 안에 아래 코딩을 포함시키게 좋겠죠.^^
rs-refresh = 'X'.
rs-col_stable = 'X'.
rs-row_stable = 'X'.
해결했습니다.
혹시 필요하신분들 참고하시라고.. 해결한 내용을 남깁니다.
user command 'EXCL' 와 'INCL'를 이용해서 data를 변경하고 grid data가 refresh 되도록 한 예입니다.
아래 형식으로 grid display를 했을 경우,
DATA: lv_repid LIKE SY-REPID.
lv_repid = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = lv_repid
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = FIELDCAT
IS_LAYOUT = GS_LAYOUT
I_SAVE = 'A'
IT_EVENTS = GT_EVENTS[]
IT_SORT = GT_SORT[]
TABLES
T_OUTTAB = GT_OUTTAB.
user command를 처리하는 아래 Form문에서 파라미터 RS의
refresh, col_stable, row_stable을 'X'로 설정해 주면 됩니다.
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS TYPE SLIS_SELFIELD.
CASE RF_UCOMM.
WHEN 'EXCL'.
PERFORM EXCLUDE.
PERFORM REFRESH_DATA.
rs-refresh = 'X'.
rs-col_stable = 'X'.
rs-row_stable = 'X'.
WHEN 'INCL'.
PERFORM INCLUDE.
PERFORM REFRESH_DATA.
rs-refresh = 'X'.
rs-col_stable = 'X'.
rs-row_stable = 'X'.
ENDCASE.
ENDFORM.