ALV를 Function (
REUSE_ALV_GRID_DISPLAY )으로 한번 구현해 보았는데요,
뿌려준후 가령 결과 필드에 성공 이라는 메시지를 ALV Display용 인터널테이블에 Modify 한 후,
재 자신 ALV로 다시 Refresh 하고 싶은데, class 로는 해보았으나, Function 으로 구현해 본 적이 없어.
어떤 Function 을 호출 해야 하는지 난감하네요..
고수님의 답변 기다릴께요..
댓글 4
-
gus
2009.06.23 02:39
-
Giant
2009.06.23 03:01
gus님께서 쓰신 내용이 좋은 방법이네요. 감사합니다.
저도 테스트 해보니까 좋습니다. (아래의 소스를 참조 하세요)
*&---------------------------------------------------------------------*
*& Report ZCUI_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZCUI_TEST.
TYPE-POOLS : SLIS.
DATA : I_SFLIGHT TYPE TABLE OF SFLIGHT.
START-OF-SELECTION.
SELECT * UP TO 10 ROWS
FROM SFLIGHT
INTO TABLE I_SFLIGHT
WHERE CARRID NE SPACE.
CHECK SY-SUBRC EQ 0.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZCUI_TEST'
I_CALLBACK_USER_COMMAND = 'SUB_CALL_BACK'
I_STRUCTURE_NAME = 'SFLIGHT'
TABLES
T_OUTTAB = I_SFLIGHT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& Form SUB_CALL_BACK
*&---------------------------------------------------------------------*
* CALL BACK ROUTINE FOR ALV
*----------------------------------------------------------------------*
FORM SUB_CALL_BACK USING I_FCODE TYPE sy-ucomm
IS_selfield TYPE slis_selfield.
FIELD-SYMBOLS : <FS_SFLIGHT> TYPE SFLIGHT.
LOOP AT I_SFLIGHT ASSIGNING <FS_SFLIGHT>.
<FS_SFLIGHT>-PRICE = '19830308'.
ENDLOOP.
IS_SELFIELD-REFRESH = 'X'.
ENDFORM. " SUB_CALL_BACK -
부산갈매기
2009.06.23 04:13
답변 정말 고맙습니다. 근데 저는 BDC 수행 성공 후 성공 메시지를 인터널테이블에 저장후 ALV 에 다시 뿌려주고 싶거든요..
이벤트 실행없이 BDC 성공메시지 READ 후 REFRESH 가 되면 좋겠는데요.. 어찌 하나요?
참고로 SUB_CALL_BACK 호출하는 예제도 부탁합니다.
-
부산갈매기
2009.06.23 18:47
금일 오전에 테스트 해보니 User_command 부분에서 해당 코딩을 적용하여 해결하였습니다.
도와주신 두분 정말 고맙습니다. 복 받으실꺼예요^^
참고하세요...REFRESH 해주시면 됩니다..
FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
CASE P_UCOMM.
WHEN 'AAA'.
PERFORM DATA_SUCC. " 필드에 성공 이라는 메시지를 ALV Display용 인터널테이블에 Modify
P_SELFIELD-REFRESH = 'X'.
ENDCASE.
ENDFORM. "user_command