目录
一、增加表头
1、基本表头
2、动态文本表头
二、设置单击、双击
三、设置颜色
四、ALV的布局管理
一、增加表头
1、基本表头
先创建子程序,对表头内表进行赋值(表头内表SLIS T LISTHEADER)使用函数创建表头 (REUSE_ALV_COMMENTARY_WRITE)修改ALV调用函数向I_CALLBACK_TOP_OF_PAGE进行传值,传子程序名称或在EVENT表中增加TOP OF PAGE事件。代码示例如下:
FORM FM_TOP_OF_PAGE .
DATA LT_HEADER TYPE SLIS_T_LISTHEADER .
DATA LS_HEADER TYPE SLIS_LISTHEADER .CLEAR LS_HEADER .
LS_HEADER-TYP = 'H' ."HEADER
LS_HEADER-INFO = '学生信息表单' .
APPEND LS_HEADER TO LT_HEADER .CLEAR LS_HEADER .
LS_HEADER-TYP = 'S' ."SELECTION
LS_HEADER-KEY = '当前日期' .
LS_HEADER-INFO = SY-DATUM .
APPEND LS_HEADER TO LT_HEADER .CLEAR LS_HEADER .
LS_HEADER-TYP = 'A' ."ACTION
LS_HEADER-INFO = '可查看学校信息' .
APPEND LS_HEADER TO LT_HEADER .CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'EXPORTINGit_list_commentary = LT_HEADER
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =.
ENDFORM .
2、动态文本表头
可以使用超链接等方式增加内容较为复杂的表头增加子程序,传入参数参照(CL_DD_DOCUMENT ),使用方法实现增加表头内容修改ALV调用函数,向I_CALLBACK_HTML_TOP_O_ PAGE传值子程序名称可以使用事务代码SE24查看类CL_DD_DOCUMENT,以及定义的属性及方法。代码示例如下:
FORM TOP_OF_PAGE2 USINGPR_DOCUMENT TYPE REF TO CL_DD_DOCUMENTCALL METHOD PR_DOCUMENT->ADD TEXTEXPORTINGTEXT = 'HTML TOP OF PAGE'SAP_STYLE =CL DD DOCUMENT=>HEADING .CALL METHOD PR_DOCUMENT->NEW_LINE .CALL METHOD PR_DOCUMENT->ADD_TEXTEXPORTINGTEXT = 'LINK'SAP_STYLE=CL_DD_DOCUENT=>successCALL METHOD PR_DOCUMENT->ADD_GAPEXPORTINGWIDTH = 5CALL METHOD PR_DOCUMENT->ADD_LINKEXPORTINGNAME =163URL = "http://www.baidu.com/"TEXT = 'BAIDU'.
ENDFORM .
二、设置单击、双击
单击的功能代码为 &IC1 需要先对字段设置为热点(Hotspot),通过结构SLIS SELFIELD(点击的当前行信息),进行字段和值的判断。注意:单击双击使用同一功能代码,注意按钮功能顺序等判断条件。
FORM FM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMMRS_SELFIELD TYPE SLIS_SELFIELD .CASE R_UCOMM .WHEN '&IC1' . "单击 一般 针对的是某一个单元格;双击一般是对一行;一般写单击在前CASE RS_SELFIELD-FIELDNAME .WHEN 'ZCODE'.SET PARAMETER ID 'LIF' FIELD RS_SELFIELD-VALUE .CALL TRANSACTION 'FK03' .WHEN OTHERS ."双击READ TABLE GT_STUDENT INTO GS_STUDENT INDEX RS_SELFIELD-TABINDEX .PERFORM DISPLAY_ALV_SCHOOL USING GS_STUDENT-ZSCHOOL.ENDCASE .WHEN 'CALLSF' .PERFORM CALL_SMARTFORMS .ENDCASE .
ENDFORM .
三、设置颜色
颜色值的设置:C+X(颜色:1~7)X(是否加重:1/0)X(是否反色1/0)
设置列颜色:在FIELDCAT中设置EMPHASIZE字段
设置行颜色:在内表中增加一个字段,CHAR类型,长度为4,例:COLOR字段
在获取数据时,对颜色字段进行赋值,例:GSMARD-COLOR='C300' ,设置layout,将INFO FIELDNAME字段,赋值为内表中颜色字段名称。
设置单元格颜色:在内表中增加一个字段,LVCT SCOL类型内表,例:COLOR字段
在获取数据时,对颜色内表进行赋值,FNAME:字段名;COLOR颜色字段三个数字;NOKEYCOL是否覆盖关键字颜色,设置layout,将COLTAB FIELDNAME字段,赋值为内表中颜色字段名称。
四、ALV的布局管理
ALV中,若想保存布局,要添加I_SAVE参数,I_SAVE定义为C数据类型,值如下:
' ' = 不能保存布局
'X' =布局只能被保存为标准布局,不能够指定用户
'U' =只能指定用户布局
'N' =既能选择标准布局,也可选择指定用户布局
为了进一步管理布局,则需要加入IS_VARIANT参数,其数据结构参考DISVARIANT。
设置字段:REPORT=SY-REPID . "程序名称
VARIANT为布局保存格式
有三个有用函数供调用保存的格式布局,分别为:
REUSE ALV VARIANT DEFAULT GET 读取默认的布局
REUSE ALV VARIANT EXISTENCE 检测指定布局是否存在
REUSE ALV VARIANT F4 显示布局格式选择对话窗
当排序、筛选等也设置时,以布局管理参数设置优先;当用户设置布局参数默认值时,以布局参数传值优先。