*&---------------------------------------------------------------------*
*& Report ZKJ_ALV_TEST_02
*&
*&---------------------------------------------------------------------*
*& Function实现ALV Table 二:ALV的弹出窗口形式
*&
*&---------------------------------------------------------------------*
REPORT ZKJ_ALV_TEST_02.
*ALV除了可以显示列表在当前窗口,也可以用弹出窗口的形式显示列表。设
*置弹出窗口显示列表需要设置REUSE_ALV_GRID_DISPLAY四个参数:
*i_screen_start_column 弹出窗口的左边距
*i_screen_start_line 弹出窗口的上边距
*i_screen_end_column 到弹出窗口显示结束的左边距
*i_screen_end_line 到弹出窗口显示结束的上边距
*通过这四个参数可以设置弹出窗口的显示大小和位置。
TYPE-POOLS:SLIS.
SELECTION-SCREEN PUSHBUTTON 2(20) BTN USER-COMMAND PUSH.
INITIALIZATION.
BTN = 'Open new window'.
AT SELECTION-SCREEN.
PERFORM F_MAIN.
*&---------------------------------------------------------------------*
*& Form F_MAIN
*&---------------------------------------------------------------------*
* ALV display
*----------------------------------------------------------------------*
FORM F_MAIN .
DATA:
TD_SPFLI TYPE TABLE OF SPFLI,
TD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
PERFORM GET_DATA TABLES TD_SPFLI.
PERFORM SET_CATALOG CHANGING TD_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = TD_FIELDCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
I_SCREEN_START_COLUMN = 10
I_SCREEN_START_LINE = 1
I_SCREEN_END_COLUMN = 100
I_SCREEN_END_LINE = 25
* I_HTML_HEIGHT_TOP = 100
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = TD_SPFLI
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
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. " F_MAIN
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* Get the data for output
*----------------------------------------------------------------------*
* -->PTD_SPFLI data internal table
*----------------------------------------------------------------------*
FORM GET_DATA TABLES PTD_SPFLI STRUCTURE SPFLI.
SELECT * FROM SPFLI INTO TABLE PTD_SPFLI.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form SET_CATALOG
*&---------------------------------------------------------------------*
* set fieldcatalog for alv output
*----------------------------------------------------------------------*
FORM SET_CATALOG CHANGING PTD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA:
LTH_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
"MACRO
DEFINE ADD_FIELD.
CLEAR: LTH_FIELDCAT.
LTH_FIELDCAT-COL_POS = &1.
LTH_FIELDCAT-FIELDNAME = &2.
LTH_FIELDCAT-SELTEXT_L = &3.
APPEND LTH_FIELDCAT TO PTD_FIELDCAT.
END-OF-DEFINITION.
"add field catalog
ADD_FIELD 1 'MANDT' 'Client'.
ADD_FIELD 2 'CARRID' 'Airline Code'.
ADD_FIELD 3 'CONNID' 'Fight Number'.
ADD_FIELD 4 'COUNTRYFR' 'Country From'.
ADD_FIELD 5 'CITYFROM' 'City From'.
ADD_FIELD 6 'AIRPFROM' 'Airpart From'.
ADD_FIELD 7 'COUNTRYTO' 'Country To'.
ADD_FIELD 8 'CITYTO' 'City To'.
ADD_FIELD 9 'AIRPTO' 'Airpart To'.
ADD_FIELD 10 'FLTIME' 'Fly Time'.
ADD_FIELD 11 'DEPTIME' 'Dept Time'.
ADD_FIELD 12 'ARRTIME' 'Arrive Time'.
ADD_FIELD 13 'DISTANCE' 'Distance'.
ADD_FIELD 14 'DISTID' 'Mass unit of distance'.
ADD_FIELD 15 'FLTYPE' 'Flight type'.
ADD_FIELD 16 'PERIOD' 'Arrival n day(s) later'.
ENDFORM. " SET_CATALOG
【参照:http://blog.csdn.net/lhx20/archive/2008/09/19/2950243.aspx】