1000번에서 프로그램을 만들고,
실행하는 순간 스탠다드 test화면인 500번으로 결과가 뜹니다.
결과화면에서 저장 버튼을 만들고(활성화하고) 버튼을 누르면 조회된 내역이
임의의 테이블에 저장되도록 만들어야 하는데
500번에 스탠다드라 수정이 안됩니다.
검색을 해보니 방법이 있는 것 같긴한데, 자세하지 않아서
500번화면과 동일하도록 100번 화면을 만들고 수정하려고 하는데...
이 프로그래을 실행하는 때에만 저장버튼이 생기고 저장 기능을 넣도록
스탠다드 화면을 수정할 수 있나요?
form alv_write 부분입니다.
DATA: pgm LIKE sy-repid.
pgm = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = pgm
is_layout = layoutcat
it_fieldcat = fieldcat
it_sort = sortcat
i_save = 'U'
TABLES
t_outtab = gt_list2[]
EXCEPTIONS
program_error = 1
OTHERS = 2
나온 화면에서 시스템-상태로 500번 화면을 보면
펑션그룹 SLVC_FULLSCREEN 에 있는 500번 화면이네요..
(첫화면에서 F8눌러서 실행되는 버튼의 when 'ONLI'은 어딘가에 숨어있고요..)
초보라.. 설명도 잘 못하겠네요..ㅜㅜ
그리고 100번을 만든다고 한건, 위에 펑션나온 부분을 지우고 평범한 alv 화면을 만들어서 수정한다는 말이었습니다.
댓글 7
-
정군
2009.04.10 03:04
-
보나
2009.04.10 03:18
결과가 ALV로 뿌려지는건가요?
ALV 펑션이용시 자동으로 뿌려지는 화면이 500번이긴한데;;
정확한 상황을 알려주시야 할 것 같습니다.
-
정군
2009.04.10 03:20
아. ALV가 500번이죠.. 대략 그림이 이해가 ㅎㅎ -
보나
2009.04.10 03:23
역시 ALV 네요;;;
-
정군
2009.04.10 03:30
조금 기다려보시죠. alv 전문가들이 많으셔서... 금방올라올 겁니다.
저장 버튼만 하는 거라면, gui에 버튼을 만들거나, 표준에 있는 버튼을 빼거나 넣도록 설정만 할 수도 있습니다.
-
SAYA
2009.04.10 17:21
PF_STATUS_SET , USER_COMMAND 이벤트를 등록해서 사용하세요. -
SD_꽃미남
2009.04.11 01:40
아래 함수를 호출하시면 REUSE_ALV 로 화면에 Display 한 ALV 의 이벤트 값을
gt_event 변수로 저장할수 있습니다
저장한후 gt_event 에서 SET_PF_STATUS 와, USER_COMMAND PERFORM 을 변경하시면
변경한 SET_PF_STATUS 와 USER_COMMAND PERFORM 을 타게 됩니다
DATA : ls_event TYPE slis_alv_event.
DATA : gt_events TYPE slis_t_event.
* STANDARD event 변수를 저장
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_lis_type = 1
IMPORTING
et_events = gt_events.
* PF_STATUS_SET FORM 변경
PERFORM modify_gt_events TABLES gt_events
USING : slis_ev_pf_status_set c_pss_pf1000.
* USER_COMMAND FORM 변경
PERFORM modify_gt_events TABLES gt_events
USING : slis_ev_user_command c_uc_pf1000.
*---------------------------------------------------------------------*
* FORM modify_gt_events *
*---------------------------------------------------------------------*
FORM modify_gt_events TABLES p_events_t LIKE gt_events
USING p_form p_value.
DATA: ls_event TYPE slis_alv_event.
READ TABLE p_events_t WITH KEY name = p_form
INTO ls_event.
IF sy-subrc EQ 0.
MOVE p_value TO ls_event-form.
MODIFY p_events_t FROM ls_event INDEX sy-tabix.
ENDIF.
ENDFORM. " modify_gt_events
※ 참고 : slis_ev_pf_status_set type slis_formname value 'PF_STATUS_SET',
slis_ev_user_command type slis_formname value 'USER_COMMAND'.
CONSTANTS : c_pss_pf1000 TYPE slis_formname VALUE 'SET_PF1000',
c_uc_pf1000 TYPE slis_formname 'EXEC_USER_COMM',
*---------------------------------------------------------------------*
* FORM set_pf1000 *
*---------------------------------------------------------------------*
FORM set_pf1000 USING p_rt_extab TYPE slis_t_extab.
* PF1000 STATUS 는 생성을 해야함
SET PF-STATUS 'PF1000'.
ENDFORM.
*---------------------------------------------------------------------*
* FORM exec_user_comm *
*---------------------------------------------------------------------*
FORM exec_user_comm USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
CASE ucomm.
ENDCASE.
ENDFORM.
질문이 너무 난해하네요;;;
좀 정리를 해주시는게 나을 듯 합니다.
스탠다드 test 화면은 뭔지?? 일단 이해가 안가구요.
뭔가 스탠다드 프로그램 중에서 500번 스크린으로 연결을 해두신거 같은데...
1000번에서 500번을 콜할때 데이터를 어떻게 전달하신 건지?
import 정도 생각할 수 있는데...
아니면 아주 500번 스크린이 있는 걸 완벽하게 이해하고 짜신거거나..(그럼 이런 질문이;;)
500을 복사해서 100을 만들고 그걸 수정하겠다시는거면, 그냥 100에 원하시는데로 바꾸면 되구요.
질문을 정재해 주시는게 어떨까요?