>안녕하세요.
>
>저도 질문하나 하도록 할께요... ^^
>
>보통 SELECT-OPTION 에서
>
>[ ] TO [ ] [x]<--- 다중입력 아이콘.
>
>이렇게 화면을 구성하게되는데요.
>
>머 첫화면에서 하는거야 자동 지원되니 문제가 없구요.
>
>SELECT 화면이 아닌 다른 화면에서 INPUT 값 옆에 동일하게 [x] 다중입력 아이콘을 만들어서
>
>동일하게 사용을 하려고 합니다.
>
>알고 계신 방법있으시면 알려주세요 ^^
>
>
가끔 모듈풀 프로그램에서 Selection-screen 에서처럼 from ~ to 값을 조건으로 사용하고자 할때
Screen에 만들어주기가 좀 모호할때가 있습니다.
그때는 지금 예제처럼 selection-screen 으로 서브스크린을 만들어 모듈풀 프로그램에 삽입하여
사용하면 편할 것 같아서 팁으로 만들어 봤습니다.
서브스크린은 SELECTION-SCREEN 사용법과 동일하게 사용하시면 됩니다.
예를들면, Enter 와 같은 이벤트로 화면 필드 점검을 하시려면 at selection-screen으로 하시면 됩니다.
[Source code] :
REPORT ztest.
TABLES vbap.
DATA : g_okcode TYPE syucomm,
g_vbeln LIKE vbak-vbeln, "" Screen field
g_subscreen TYPE sydynnr. "" SubScreen number
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS :
so_posnr FOR vbap-posnr.
SELECTION-SCREEN END OF SCREEN 101.
AT SELECTION-SCREEN.
MESSAGE s001(cj) WITH 'Subscreen checked...!!'.
INITIALIZATION.
g_subscreen = '0101'.
START-OF-SELECTION.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'PF100'.
SET TITLEBAR 'T100'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE TO SCREEN 0.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE g_okcode.
WHEN 'EXEC'.
MESSAGE s001(cj) WITH 'Executed...!'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
[Screen 100] :
[Flow-logic]
PROCESS BEFORE OUTPUT.
MODULE status_0100.
CALL SUBSCREEN subscreen101 INCLUDING sy-repid g_subscreen.
*
PROCESS AFTER INPUT.
MODULE exit AT EXIT-COMMAND.
CALL SUBSCREEN subscreen101.
MODULE user_command_0100.
[Gui-Status PF100]:
EXEC -> Excute (F8)
BACK -> at exit command
댓글 3
-
썬바바
2008.03.28 22:22
-
썬바바
2008.03.28 22:45
CALL FUNCTION 'COMPLEX_SELECTIONS_DIALO
EXPORTING
title = 'range setting'
TEXT =
SIGNED = 'X'
lower_case = ' '
NO_INTERVAL_CHECK = ' '
JUST_DISPLAY = ' '
JUST_INCL = ' '
EXCLUDED_OPTIONS =
DESCRIPTION =
HELP_FIELD =
SEARCH_HELP =
TABLES
range = lgort
EXCEPTIONS
no_range_tab = 1
cancelled = 2
internal_error = 3
OTHERS = 4
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBE
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3
ENDIF.
이렇게 해주고 lgort를 range형태로 설정해서 값을 넘겨주면 될것같네요
-
초보아밥퍼
2008.03.28 22:52
네 맞습니다. 펑션을 실행만 시켜보니까 창이 안뜨길래...
패턴으로 펑션 보았더니 RANGE 테이블의 값만 넣어주면 되더라고요 ^^
답변감사드립니다.
이것은 Report가 되네요..정식적인 모듈 풀이 아니라..즉 이것을 모듈 풀에서 Include 의 TOP에서 써주면 됩니다.
*&---------------------------------------------------------------------*
* Define Screen *
*&---------------------------------------------------------------------*
SET EXTENDED CHECK OFF.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS WINDOW.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_kunnr FOR za01-kunnr,
s_matnr FOR za01-matnr,
s_ekgrp FOR za01-ekgrp,
s_lifnr FOR za01-lifnr.
SELECTION-SCREEN END OF BLOCK bl1.
SELECTION-SCREEN END OF SCREEN 200.