두가지 질문이 있습니다.
첫째, ALV를 이용하여 보고서를 만들고 있는데
selection 화면의 상단에 나오는 타이틀과 ALV 보고서 상단에 나오는 타이틀을 세팅하는
방법을 알고 싶습니다.
SET TITLEBAR '001'. 로 하였지만 한군데만 적용이 됩니다.
둘째, ALV를 조회하고 더블클릭하여 상세화면으로 넘어간 뒤 데이터를 수정하면
자동적으로 본화면으로 돌아오게 되어 있는데 이때 상세화면에서 변경한
정보가 본화면에 표현이 안되고 있습니다.
어떤 이벤트 다음에 조회하는 form을 불러와야 하나요?
댓글 8
-
버미!
2010.06.04 04:15
-
모포
2010.06.04 05:00
첫번째 질문은 selection title이 아닌 selection 위쪽에 글자 크게 나와있는 제목과 ALV 제목을 말씀드린거구요.
두번째 질문에 관해 다시 추가 질문드리자면, 상세화면이라는게 user_command 부분에서 call transaction 하여 다른 트랜잭션으로
갔다가 거기서 수정을 하니 자동으로 본화면으로 돌아오더군요. 그런데 본화면으로 돌아 왔을때 수정한 데이터가 적용이 안되어있습니다.
-
버미!
2010.06.04 16:56
1. 헙...Title Bar가 Selection title 이 아니던가요? ALV Title인데.(큰 글씨)
2. 상세화면이 다른 세션이라면 Export/Import 기능 이용하시면 됩니다.
-. ALV User Command에서 Call 트랜잭션 한다음 콜된 트랜잭션에서 작업을 한 후 변경된 내용을 Export 합니다.
본화면으로 돌아오게되면 Import 하여 수정된 데이타를 ALV에 적용한 후 Refresh 하면 됩니다.
-
버미!
2010.06.04 17:36
selection 화면의 상단에 나오는 타이틀은 Top of page 설정하면 되고
ALV 보고서 상단에 나오는 타이틀은 Set title bar 이용하면 됩니다.
-
맑은하늘
2010.06.04 18:00
1. selection-screen 에 타이틀을 alv 타이틀과 같이 하시려면 ALV 와 같은 titlebar 를
initialization. 이나 at selection-screen output. 이벤트에 설정하시면 될 거예요.
initilization.
set titlebar '001'.
2. reuse 펑션을 사용하여 alv 를 구현하셨다면 상세조회 이벤트 맨 끝에 selfield-refresh = 'X'. 로 하시고
cl_gui_alv_grid 를 사용하셨다면 AlvGrid->refresh_table_display( ) 메쏘드를 실행하시면 될겁니다.
-
모포
2010.06.04 18:52
reuse를 사용하였기에 아래와같이 했으나 반응이 없습니다.
FORM user_command USING pi_ucomm LIKE sy-ucomm
pi_selfield TYPE slis_selfield.
DATA: ls_data LIKE LINE OF gt_data.
CASE pi_ucomm.
WHEN '&IC1'. " SAP standard code for double-clicking
READ TABLE gt_data INTO ls_data INDEX pi_selfield-tabindex.
IF pi_selfield-fieldname = 'MATNR'.
SET PARAMETER ID 'MAT' FIELD ls_data-MATNR.
SET PARAMETER ID 'BUK' FIELD ls_data-BUKRS.
SET PARAMETER ID 'WRK' FIELD ls_data-WERKS.
SET PARAMETER ID 'MXX' FIELD 'K'.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ELSEIF pi_selfield-fieldname = 'CHARG'.
SET PARAMETER ID 'MAT' FIELD ls_data-MATNR.
SET PARAMETER ID 'CHA' FIELD ls_data-CHARG.
SET PARAMETER ID 'WRK' FIELD ls_data-WERKS.
SET PARAMETER ID 'LAG' FIELD ls_data-LGORT.
CALL TRANSACTION 'MSC2N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
pi_selfield-refresh = 'X'.
ENDFORM. -
맑은하늘
2010.06.04 19:01
흠.. 프로그램에서 STD 변경후 변경된 내역을 다시 읽어와야 할 것 같네요. ^^
refresh 전에 변경된 내역을 읽어오는 기능이 추가되어야 할 것 같습니다.
-
모포
2010.06.04 20:32
맑은하늘님 감사합니다...
말씀대로 했더니 갱신된 데이터가 나오긴 하는데 back으로 가면 ALV가 하나더 숨어있더군요.
먼저 지우고 나서 display 해줘야할것 같은데 어떻게 하는지 모르겠습니다.
1. Title bar의 title에 &을 입력하고 조건에 따라 SET TITLEBAR 'Title Name' WITH '보고서 타이틀'. 하시면 되고
2. ALV(Itab : gt_list라 가정)에서 더블클릭시 ALV User Command를 타게 되는 데 상세화면에서 데이타 수정하고, 뭐하고 한다음
gt_list에 수정을 합니다. 그리고 selfield-refresh = 'X'. 해주면 됩니다.