SELECT
ebeln
INTO
CORRESPONDING
FIELDS OF TABLE
lt_ebeln
FROM
ztfc_mm030_his
WHERE
pltyp
=
'Z'
AND
ebeln <>
''
.
IF
s_ebeln[]
IS NOT INITIAL
.
DELETE
lt_ebeln
WHERE
ebeln
NOT IN
s_ebeln
.
ENDIF
.
IF
lt_ebeln[]
IS NOT INITIAL
.
LOOP AT
lt_ebeln
.
CLEAR
ra_ebeln
.
ra_ebeln
-
sign
=
'I'
.
ra_ebeln
-
option
=
'EQ'
.
ra_ebeln
-
low
=
lt_ebeln
-
ebeln
.
APPEND
ra_ebeln
.
ENDLOOP
.
ENDIF
.
*----------------------------------------------------------------------*
* 定義選擇屏幕
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK
bl2
With FRAME TITLE text
-
002
.
PARAMETERS
:
r1
RADIOBUTTON GROUP
rg1
DEFAULT
'X'
USER-COMMAND
chg
,
"大類
r2
RADIOBUTTON GROUP
rg1
.
"中類
SELECTION-SCREEN END OF BLOCK
bl2
.
SELECTION-SCREEN BEGIN OF BLOCK
b1
WITH FRAME TITLE text
-
001
.
SELECT-OPTIONS
:
s_laeda
FOR
ztfc_mm015b
-
laeda
.
PARAMETERS
:
p_klart
LIKE
rmclre
-
klart
AS
LISTBOX VISIBLE LENGTH
15
DEFAULT
'026'
.
SELECT-OPTIONS
:
s_class
FOR
klah
-
class
.
"rmclre-class ."MATCHCODE OBJECT CLASC.
SELECT-OPTIONS
:
s_zbzcat
FOR
ztfc_mm015b
-
zbzcat
,
s_zlifnr
FOR
ztfc_mm015b
-
zlifnr
.
SELECTION-SCREEN END OF BLOCK
b1
.
*----------------------------------------------------------------------*
* 選擇屏幕設置
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
s_class
-
low
.
PERFORM
FRM_GET_KOSTL
.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
s_class
-
high
.
PERFORM
FRM_GET_KOSTL
.
*&代碼實現搜索幫助
FORM
FRM_GET_KOSTL
.
* &定義搜索幫助的條目,有助於用戶選擇
TYPES
:
BEGIN OF
values
,
class LIKE
klah
-
class
,
klart
LIKE
klah
-
klart
,
artxt
LIKE
tclat
-
artxt
,
klagr
LIKE
klah
-
klagr
,
ktext
LIKE
tclgt
-
ktext
,
END OF
values
.
DATA
:
progname
TYPE
sy
-
repid
,
"程序名稱
dynnum
TYPE
sy
-
dynnr
,
"屏幕編號
values_tab
TYPE TABLE OF
values
,
l_klagr
LIKE
klah
-
klagr
.
IF
r1
=
'X'
.
l_klagr
=
'Z040'
.
ELSE
.
l_klagr
=
'Z050'
.
ENDIF
.
SELECT
a
~
class
a
~
klart a
~
klagr b
~
ktext
c
~
artxt
INTO
CORRESPONDING
FIELDS OF TABLE
values_tab
FROM
klah
AS
a
LEFT JOIN
tclgt
AS
b
ON
a
~
klagr
=
b
~
klagr
AND
b
~
spras
=
'1'
LEFT JOIN
tclat
AS c
ON
a
~
klart
=
c
~
klart
AND c
~
spras
=
'1'
WHERE
a
~
klart
=
p_klart
AND
a
~
klagr
=
l_klagr
.
* 賦值,獲取程序名稱和屏幕號
progname
=
sy
-
repid
.
dynnum
=
sy
-
dynnr
.
* 生成指定內容的搜索幫助
CALL FUNCTION
'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
=
'CLASS'
"內表字段
dynpprog
=
progname
dynpnr
=
dynnum
dynprofield
=
'KLAH-CLASS'
"屏幕待輸出字段,須要有前綴字段
value_org
=
'S'
TABLES
value_tab
=
values_tab
"從這個內表中獲取
EXCEPTIONS
parameter_error
=
1
no_values_found
=
2
others
=
3
.
IF
SY
-
SUBRC <>
0
.
MESSAGE ID
SY
-
MSGID
TYPE
SY
-
MSGTY
NUMBER
SY
-
MSGNO
WITH
SY
-
MSGV1 SY
-
MSGV2 SY
-
MSGV3 SY
-
MSGV4
.
ENDIF
.
ENDFORM
.
" FRM_GET_KOSTL
*動態實現ALV的字段,控制可編輯狀態,長度和字段描述等
7. FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .
DATA ls_fcat type lvc_s_fcat .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = pt_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
*--Exception handling
ENDIF.
LOOP AT pt_fieldcat INTO ls_fcat .
CASE pt_fieldcat-fieldname .
WHEN 'CARRID' .
ls_fcat-outpulen = '10' .
ls_fcat-coltext = 'Airline Carrier ID' . "控制字段描述
MODIFY pt_fieldcat FROM ls_fcat .
WHEN 'PAYMENTSUM' .
ls_fcat-no_out = 'X' .
MODIFY pt_fieldcat FROM ls_fcat .
ENDCASE .
ENDLOOP .
ENDFORM .
8. 有時候咱們須要使用到數據的排序.這個能夠經過填充參考結構LVC_T_SORT建立的內表來實現,
這個內表中包含了排序的標準.能夠傳遞給set_table_for_first_display這個方法的IT_SORT參數來初始化一個排序.