可以根据下拉框的选项,动态显示选择屏幕
code:
*&---------------------------------------------------------------------*
*& Report ZLM_SCREEN_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZLM_SCREEN_001
.
*&---------------------------------------------------------------------*
*& Purpose - Dynamic Selection Screen using the Tabbed Selected Screen
*& Author - Naimesh Patel
*& URL -
*&---------------------------------------------------------------------*
*
CLASS lcl_main
DEFINITION
.
PUBLIC
SECTION
.
TYPES
:
BEGIN
OF ty_vrm_values
,
KEY
TYPE char40
,
text
TYPE char80
,
END
OF ty_vrm_values
.
TYPES
: tt_vrm_values
TYPE
STANDARD
TABLE
OF ty_vrm_values
WITH
DEFAULT
KEY
.
TYPES
:
BEGIN
OF ty_config
,
KEY
TYPE char10
,
desc
TYPE char50
,
dynnr
TYPE sy
-dynnr
,
END
OF ty_config
.
DATA
: t_config
TYPE
STANDARD
TABLE
OF ty_config
.
METHODS
:
get_vrm_values
RETURNING
VALUE
(rt_values
)
TYPE tt_vrm_values
,
get_dynnr
IMPORTING iv_objtype
TYPE char10
RETURNING
VALUE
(rv_dynnr
)
TYPE sy
-dynnr
.
ENDCLASS .
"lcl_main DEFINITION
*
DATA : t_objtypes
TYPE lcl_main
=>tt_vrm_values
.
DATA : o_main
TYPE
REF
TO lcl_main
.
*
DATA : v_vbeln
TYPE vbak
-vbeln
,
v_erdat
TYPE vbak
-erdat
,
v_vkorg
TYPE vbak
-vkorg
,
v_vtweg
TYPE vbak
-vtweg
,
v_spart
TYPE vbak
-spart
.
* Object type Selector
PARAMETER : p_objtyp
TYPE char10
AS LISTBOX
VISIBLE
LENGTH
30
USER-COMMAND v_obj
.
*
* TABBED Selection screen for displaying the screen
SELECTION-SCREEN :
BEGIN
OF TABBED
BLOCK mytab
FOR
7
LINES
,
TAB
(
20
) seltab
USER-COMMAND push1
,
END
OF
BLOCK mytab
.
*
* Default screen
SELECTION-SCREEN
BEGIN
OF
SCREEN
100
AS SUBSCREEN
.
SELECTION-SCREEN
END
OF
SCREEN
100
.
*
* for SO
SELECTION-SCREEN
BEGIN
OF
SCREEN
200
AS SUBSCREEN
.
SELECT-OPTIONS : so_vbeln
FOR v_vbeln
,
so_erdat
FOR v_erdat
,
so_vkorg
FOR v_vkorg
,
so_vtweg
FOR v_vtweg
,
so_spart
FOR v_spart
.
SELECTION-SCREEN
END
OF
SCREEN
200
.
*
* for Billing
SELECTION-SCREEN
BEGIN
OF
SCREEN
300
AS SUBSCREEN
.
SELECT-OPTIONS : bi_vbeln
FOR v_vbeln
,
bi_erdat
FOR v_erdat
,
bi_vkorg
FOR v_vkorg
,
bi_vtweg
FOR v_vtweg
,
bi_spart
FOR v_spart
.
SELECTION-SCREEN
END
OF
SCREEN
300
.
*
INITIALIZATION .
CREATE OBJECT
o_main
.
t_objtypes
= o_main
->get_vrm_values
(
)
.
CALL
FUNCTION
'VRM_SET_VALUES'
EXPORTING
ID
=
'P_OBJTYP'
VALUES
= t_objtypes
.
*
mytab
-dynnr
= o_main
->get_dynnr
( p_objtyp
)
.
mytab
-prog
= sy
-repid
.
mytab
-activetab
=
'PUSH1'
.
*
seltab
=
'Selection Criteria'
.
*
* dynamic text for objec type
%_p_objtyp_%_app_%
-
text
=
'Object Type'
.
*
*
AT
SELECTION-SCREEN
OUTPUT
.
* Set the selection screen based on the object type
mytab
-dynnr
= o_main
->get_dynnr
( p_objtyp
)
.
*
*
START-OF-SELECTION .
*
*
CLASS lcl_main
IMPLEMENTATION
.
METHOD get_vrm_values
.
DATA
: ls_config
LIKE
LINE
OF me
->t_config
.
* ---- Config entries, in real time it comes from table
*
ls_config
-
KEY
=
". " Default
ls_config
-desc
=
".
ls_config
-dynnr
=
'0100'
.
APPEND ls_config
TO me
->t_config
.
*
ls_config
-
KEY
=
'ORDER'
.
ls_config
-desc
=
'Sales Order'
.
ls_config
-dynnr
=
'0200'
.
APPEND ls_config
TO me
->t_config
.
*
ls_config
-
KEY
=
'BILLING'
.
ls_config
-desc
=
'Billing Document'
.
ls_config
-dynnr
=
'0300'
.
APPEND ls_config
TO me
->t_config
.
*
* vrm set values
DATA
: ls_vrm
LIKE
LINE
OF rt_values
.
LOOP
AT me
->t_config
INTO ls_config
.
ls_vrm
-
KEY
= ls_config
-
KEY
.
ls_vrm
-
text
= ls_config
-desc
.
APPEND ls_vrm
TO rt_values
.
ENDLOOP
.
ENDMETHOD
.
"get_vrm_values
METHOD get_dynnr
.
* get the screen number
DATA
: ls_config
LIKE
LINE
OF me
->t_config
.
READ
TABLE me
->t_config
INTO ls_config
WITH
KEY
KEY
= iv_objtype
.
IF sy
-subrc
EQ
0
.
rv_dynnr
= ls_config
-dynnr
.
ELSE
.
* fallback - if default is not maintained in config
rv_dynnr
=
'0100'
.
ENDIF
.
ENDMETHOD
.
"get_dynnr
ENDCLASS .
"lcl_main IMPLEMENTATION
*&
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
*&---------------------------------------------------------------------*
*&
*&
*&
*&---------------------------------------------------------------------*
*
CLASS
ENDCLASS .
*
DATA :
DATA :
*
DATA :
*
PARAMETER :
*
*
SELECTION-SCREEN :
*
*
SELECTION-SCREEN
SELECTION-SCREEN
*
*
SELECTION-SCREEN
SELECT-OPTIONS :
SELECTION-SCREEN
*
*
SELECTION-SCREEN
SELECT-OPTIONS :
SELECTION-SCREEN
*
INITIALIZATION .
*
*
*
*
*
*
AT
*
*
*
START-OF-SELECTION .
*
*
CLASS
*
*
*
*
*
*
*
*
ENDCLASS .