Bootstrap

SAP-ABAP开发-FUNCTION 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'
  EXPORTING
    it_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 USING
                PR_DOCUMENT TYPE REF TO CL_DD_DOCUMENT
    CALL METHOD PR_DOCUMENT->ADD TEXT
    EXPORTING
        TEXT = 'HTML TOP OF PAGE'
        SAP_STYLE =CL DD DOCUMENT=>HEADING .
        CALL METHOD PR_DOCUMENT->NEW_LINE .
    CALL METHOD PR_DOCUMENT->ADD_TEXT
    EXPORTING
    TEXT = 'LINK'
    SAP_STYLE=CL_DD_DOCUENT=>success
    CALL METHOD PR_DOCUMENT->ADD_GAP
    EXPORTING
    WIDTH = 5
    CALL METHOD PR_DOCUMENT->ADD_LINK
    EXPORTING
    NAME =163
    URL = "http://www.baidu.com/"
    TEXT = 'BAIDU'.
ENDFORM .

二、设置单击、双击

单击的功能代码为 &IC1 需要先对字段设置为热点(Hotspot),通过结构SLIS SELFIELD(点击的当前行信息),进行字段和值的判断。注意:单击双击使用同一功能代码,注意按钮功能顺序等判断条件。

FORM FM_USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                            RS_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 显示布局格式选择对话窗
当排序、筛选等也设置时,以布局管理参数设置优先;当用户设置布局参数默认值时,以布局参数传值优先。

;