ALV标题头的显示
2010-01-27 14:51
204 查看
REPORT ZEASYALVTEST MESSAGE-ID ZEASYMESSAGE.
TABLES : SPFLI.
SELECT-OPTIONS : S_CARR FOR SPFLI-CARRID,
S_CONN FOR SPFLI-CONNID.
DATA : IT_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.
DATA : ALV_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.
*&------------------------------------*
*&-- DECLARE DATA FOR ALV
*&-----------------------------------*
TYPE-POOLS: slis.
DATA : g_variant LIKE disvariant,
g_save(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant.
**-------------------------------------*
DATA : G_REPID LIKE SY-REPID.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gt_events TYPE slis_t_event ,
gt_list_top_of_page TYPE slis_t_listheader,
gs_print TYPE slis_print_alv,
gs_layout TYPE slis_layout_alv .
G_REPID = SY-REPID.
SELECT * INTO TABLE IT_SPFLI
FROM SPFLI
WHERE CARRID IN S_CARR
AND CONNID IN S_CONN.
CHECK IT_SPFLI[] IS NOT INITIAL.
ALV_SPFLI[] = IT_SPFLI[].
PERFORM DISPLAYALV.
*&---------------------------------------------------------------------*
*& Form DISPLAYALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAYALV .
*-- PREPARE ALV DATA
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
*-- LAYOUT SETTING
PERFORM PREPARE_ALV_FIELD USING GT_FIELDCAT[].
*-- ALV DISPLAY
PERFORM CALL_REUSE_ALV_GRID_DISPLAY.
ENDFORM. " DISPLAYALV
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS[] text
*----------------------------------------------------------------------*
FORM EVENTTAB_BUILD USING PT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = PT_EVENTS.
READ TABLE PT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
LS_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY PT_EVENTS FROM LS_EVENT INDEX SY-TABIX.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELD USING P_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_LINE TYPE SLIS_FIELDCAT_ALV.
DATA: dat type d,
datt(10).
*-- DEFINE MARCO
DEFINE APPEND_ALV_FIELD.
CLEAR LS_LINE.
LS_LINE-FIELDNAME = &1.
LS_LINE-TABNAME = &2.
LS_LINE-REPTEXT_DDIC = &3.
LS_LINE-SELTEXT_L = &3.
LS_LINE-SELTEXT_M = &3.
LS_LINE-SELTEXT_S = &3.
LS_LINE-QFIELDNAME = &4.
LS_LINE-QTABNAME = &5.
LS_LINE-NO_OUT = &6.
LS_LINE-NO_ZERO = &7.
LS_LINE-OUTPUTLEN = &8.
LS_LINE-lzero = &9. "输出前导0.
APPEND LS_LINE TO P_FIELDCAT.
END-OF-DEFINITION.
APPEND_ALV_FIELD: 'CARRID' 'ALV_SPFLI' '航线承运人ID' "DN
'' ''
'O' 'X' '' ''.
APPEND_ALV_FIELD: 'CONNID' 'ALV_SPFLI' '航班连接 Id' "MBLNO
'' ''
'O' 'X' '' 'X'.
APPEND_ALV_FIELD: 'CITYFROM' 'ALV_SPFLI' '起飞城市' "HBLNO
'' ''
'O' 'X' '' ''.
APPEND_ALV_FIELD: 'CITYTO' 'ALV_SPFLI' '目标城市' "SENDTIMES SELLERNAME
'' ''
'O' 'X' '' ''.
APPEND_ALV_FIELD: 'DISTANCE' 'ALV_SPFLI' '距离' "
'' ''
'O' 'X' '' ''.
ENDFORM. " PREPARE_ALV_FIELD
*&---------------------------------------------------------------------*
*& Form CALL_REUSE_ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_REUSE_ALV_GRID_DISPLAY .
gs_layout-f2code = 'DISPLAY'.
gs_print-no_print_listinfos = 'X'.
gs_layout-colwidth_optimize = 'X'. "列宽度自动根据内容优化
* gs_layout-f2code = '&ETA'. "double check弹出详细信息
* gs_layout-zebra = 'X'. "清单条纹显示
gs_layout-no_vline = ''. "是否显示列间隔线
gs_layout-box_fieldname = ''. "是否显示checkbox
gs_layout-confirmation_prompt = ''. "推出清单是否提示
gs_layout-detail_titlebar = '详细信息'."详细清单的标题
gs_layout-DETAIL_POPUP = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID "SY-CPROG
I_BACKGROUND_ID = 'ALV_BACKGROUND'
* i_buffer_active = 'X'
* I_CALLBACK_PF_STATUS_SET = 'ALV_PF_STATUS'
* I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = GT_LIST_TOP_OF_PAGE[]
IT_FIELDCAT = GT_FIELDCAT[]
IT_EVENTS = GT_EVENTS[]
I_STRUCTURE_NAME = 'ALV_SPFLI'
I_SAVE = 'A'
IS_LAYOUT = GS_LAYOUT
IS_PRINT = GS_PRINT
TABLES
T_OUTTAB = ALV_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. " CALL_REUSE_ALV_GRID_DISPLAY
************************************************************************************
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST_TOP_OF_PAGE[] text
*----------------------------------------------------------------------*
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
*
* LIST HEADING LINE: TYPE H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = '航班时刻表'.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
* STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = '输出时间'. "TEXT-101.
LS_LINE-INFO = SY-DATUM. "TEXT-102.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
LS_LINE-KEY = '查询者'. "TEXT-103.
LS_LINE-INFO = 'EASY'. "TEXT-104.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
* ACTION LINE: TYPE A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = '详细信息'. "TEXT-105.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM. " COMMENT_BUILD
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'EASYPICTURE'
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
REPORT 中没有任何的PERFORM TOP_OF_PAGE 调用,但是这是必须存在的,CALL_REUSE_ALV_GRID_DISPLAY 函数参数 I_CALLBACK_PROGRAM 会回调这个子函数。
表头中的图片显示可参考http://seaflying.bokee.com/26982.html,简单说在OAER 中载入图片,函数中调用图片的名字就OK了!
TABLES : SPFLI.
SELECT-OPTIONS : S_CARR FOR SPFLI-CARRID,
S_CONN FOR SPFLI-CONNID.
DATA : IT_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.
DATA : ALV_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.
*&------------------------------------*
*&-- DECLARE DATA FOR ALV
*&-----------------------------------*
TYPE-POOLS: slis.
DATA : g_variant LIKE disvariant,
g_save(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant.
**-------------------------------------*
DATA : G_REPID LIKE SY-REPID.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gt_events TYPE slis_t_event ,
gt_list_top_of_page TYPE slis_t_listheader,
gs_print TYPE slis_print_alv,
gs_layout TYPE slis_layout_alv .
G_REPID = SY-REPID.
SELECT * INTO TABLE IT_SPFLI
FROM SPFLI
WHERE CARRID IN S_CARR
AND CONNID IN S_CONN.
CHECK IT_SPFLI[] IS NOT INITIAL.
ALV_SPFLI[] = IT_SPFLI[].
PERFORM DISPLAYALV.
*&---------------------------------------------------------------------*
*& Form DISPLAYALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAYALV .
*-- PREPARE ALV DATA
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
*-- LAYOUT SETTING
PERFORM PREPARE_ALV_FIELD USING GT_FIELDCAT[].
*-- ALV DISPLAY
PERFORM CALL_REUSE_ALV_GRID_DISPLAY.
ENDFORM. " DISPLAYALV
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS[] text
*----------------------------------------------------------------------*
FORM EVENTTAB_BUILD USING PT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = PT_EVENTS.
READ TABLE PT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
LS_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY PT_EVENTS FROM LS_EVENT INDEX SY-TABIX.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELD USING P_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_LINE TYPE SLIS_FIELDCAT_ALV.
DATA: dat type d,
datt(10).
*-- DEFINE MARCO
DEFINE APPEND_ALV_FIELD.
CLEAR LS_LINE.
LS_LINE-FIELDNAME = &1.
LS_LINE-TABNAME = &2.
LS_LINE-REPTEXT_DDIC = &3.
LS_LINE-SELTEXT_L = &3.
LS_LINE-SELTEXT_M = &3.
LS_LINE-SELTEXT_S = &3.
LS_LINE-QFIELDNAME = &4.
LS_LINE-QTABNAME = &5.
LS_LINE-NO_OUT = &6.
LS_LINE-NO_ZERO = &7.
LS_LINE-OUTPUTLEN = &8.
LS_LINE-lzero = &9. "输出前导0.
APPEND LS_LINE TO P_FIELDCAT.
END-OF-DEFINITION.
APPEND_ALV_FIELD: 'CARRID' 'ALV_SPFLI' '航线承运人ID' "DN
'' ''
'O' 'X' '' ''.
APPEND_ALV_FIELD: 'CONNID' 'ALV_SPFLI' '航班连接 Id' "MBLNO
'' ''
'O' 'X' '' 'X'.
APPEND_ALV_FIELD: 'CITYFROM' 'ALV_SPFLI' '起飞城市' "HBLNO
'' ''
'O' 'X' '' ''.
APPEND_ALV_FIELD: 'CITYTO' 'ALV_SPFLI' '目标城市' "SENDTIMES SELLERNAME
'' ''
'O' 'X' '' ''.
APPEND_ALV_FIELD: 'DISTANCE' 'ALV_SPFLI' '距离' "
'' ''
'O' 'X' '' ''.
ENDFORM. " PREPARE_ALV_FIELD
*&---------------------------------------------------------------------*
*& Form CALL_REUSE_ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_REUSE_ALV_GRID_DISPLAY .
gs_layout-f2code = 'DISPLAY'.
gs_print-no_print_listinfos = 'X'.
gs_layout-colwidth_optimize = 'X'. "列宽度自动根据内容优化
* gs_layout-f2code = '&ETA'. "double check弹出详细信息
* gs_layout-zebra = 'X'. "清单条纹显示
gs_layout-no_vline = ''. "是否显示列间隔线
gs_layout-box_fieldname = ''. "是否显示checkbox
gs_layout-confirmation_prompt = ''. "推出清单是否提示
gs_layout-detail_titlebar = '详细信息'."详细清单的标题
gs_layout-DETAIL_POPUP = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID "SY-CPROG
I_BACKGROUND_ID = 'ALV_BACKGROUND'
* i_buffer_active = 'X'
* I_CALLBACK_PF_STATUS_SET = 'ALV_PF_STATUS'
* I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = GT_LIST_TOP_OF_PAGE[]
IT_FIELDCAT = GT_FIELDCAT[]
IT_EVENTS = GT_EVENTS[]
I_STRUCTURE_NAME = 'ALV_SPFLI'
I_SAVE = 'A'
IS_LAYOUT = GS_LAYOUT
IS_PRINT = GS_PRINT
TABLES
T_OUTTAB = ALV_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. " CALL_REUSE_ALV_GRID_DISPLAY
************************************************************************************
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST_TOP_OF_PAGE[] text
*----------------------------------------------------------------------*
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
*
* LIST HEADING LINE: TYPE H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = '航班时刻表'.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
* STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = '输出时间'. "TEXT-101.
LS_LINE-INFO = SY-DATUM. "TEXT-102.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
LS_LINE-KEY = '查询者'. "TEXT-103.
LS_LINE-INFO = 'EASY'. "TEXT-104.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
* ACTION LINE: TYPE A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = '详细信息'. "TEXT-105.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM. " COMMENT_BUILD
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'EASYPICTURE'
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
REPORT 中没有任何的PERFORM TOP_OF_PAGE 调用,但是这是必须存在的,CALL_REUSE_ALV_GRID_DISPLAY 函数参数 I_CALLBACK_PROGRAM 会回调这个子函数。
表头中的图片显示可参考http://seaflying.bokee.com/26982.html,简单说在OAER 中载入图片,函数中调用图片的名字就OK了!
相关文章推荐
- 【Excle数据透视表】如何让字段标题不显示“求和项”
- ubuntu 14.04下chrome显示标题乱码问题
- iOS调用系统相册、相机 显示中文标题
- 通过xml文件与代码去除通知栏和标题全屏显示
- 如何解决Win7任务栏预览不见了鼠标移动到任务栏只显示标题的问题
- android设置不显示标题
- 增加一个fulltitle标签,让你的title=""显示完整标题
- Android开发中如何设置不显示标题和设置全屏
- 安卓去掉标题的方法和全屏显示代码
- 如何在多个页中显示行标题和列标题 (Reporting Services)
- 鼠标停留在文章标题上显示全部标题方法
- 【转载】alv 动态显示列
- 动态内表 动态ALV显示
- 2009.10月15ASP中新闻标题太长时,省略号显示过长内容
- WEB dynpro alv显示
- js显示滚动标题
- Android实现标题显示隐藏功能
- 在ALV表格中双击某一行记录后,显示明细记录
- gridview为空时不能显示标题头(小技巧)
- 在屏幕上显示一个带标题的窗口,并添加一个按钮