美文网首页
ABAP-ALV-GRID

ABAP-ALV-GRID

作者: 矢量演说 | 来源:发表于2020-06-06 21:49 被阅读0次
  • ALV简单实例

ABAP ALV使用实例---sflight航班表及其效果界面
ABAP:ALV List报表
最后页眉设置了一些HTML语句,可以看一下。
ABAP FUNCTION ALV单元格单击/双击事件
不错的例子,但我系统里没数据,看不到效果。

为实现打印入库单时,勾选某个行项目,则同一个单子的行项都要自动勾上。需要用到单击事件。
1.为需要响应单击按钮的列设定:
WA_FIELDCAT-HOTSPOT = 'X'. "单击 其中 WA_FIELDCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV,
2.在ALV事件里响应:

  CASE R_UCOMM.

    WHEN '&IC1'. "单击复选框 勾选(取消)后同一预留号都自动勾选(取消)
      READ TABLE ITAB_TOTAL INDEX R_SEL-tabindex INTO DATA(WA_SEL_TEMP).  "获取单击行
      IF R_SEL-fieldname = 'SEL' AND WA_SEL_TEMP-SEL = ''.
          LOOP AT ITAB_TOTAL ASSIGNING FIELD-SYMBOL(<FS_TEMP>) WHERE RSNUM = WA_SEL_TEMP-RSNUM .
            <FS_TEMP>-SEL = 'X'.
          ENDLOOP.
        ELSEIF R_SEL-fieldname = 'SEL' AND WA_SEL_TEMP-SEL = 'X'.
          LOOP AT ITAB_TOTAL ASSIGNING FIELD-SYMBOL(<FS_TEMP2>) WHERE RSNUM = WA_SEL_TEMP-RSNUM  .
            <FS_TEMP2>-SEL = ''.
          ENDLOOP.
      ENDIF.

3.最后注意响应事件前加GET_GLOBALS_FROM_SLVC_FULLSCR,响应后刷新CALL METHOD REF->REFRESH_TABLE_DISPLAY.

  • 参数解析:

ABAP的ALV参数解析
ALV调用的几个标准函数

  • 自定义双击项目后的事件

ALV双击单元格跳转事件(非OO)

FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

  READ TABLE it_data INDEX selfield-tabindex.
  CHECK sy-subrc = 0.

  CASE ucomm.
      IF selfield-sel_tab_field = '1-EXTRA'.      // 表示单击某一单元格,这里的1表示那个被输出的内表
      WHEN '&IC1'.         // ALV中双击事件代码(我参考的核心代码!!)
        ucomm = '&ETA'.  // 查看明细,即将该行的数据显示在一个DIALOG中(记得在G_IT_LAYOUT-DETAIL_INITIAL_LINES = 'X' 将无数据的列也显示)
        SET PARAMETER ID 'VF' FIELD it_data-faph.
        CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
      ENDIF.
  ENDCASE.

ENDFORM.                    "USER_COMMAND
  • REUSE_ALV_FIELDCATALOG_MERGE

调用REUSE_ALV_FIELDCATALOG_MERGE函数来获取FIELDCAT
内含超出72字符的解决方法。

调用 REUSE_ALV_FIELDCATALOG_MERGE 很容易被忽略的一个问题
定义结构的时候, type后面只能跟基本类型(不是指date element)
其他任何都只能用like,包括想参考 “表名-字段名”,必须使用like。
总之,都用like是没问题的。不然这个函数是获取不到值的。

*定义FIELDCAT与LAYOUT
DATA:FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
    LAYOUT   TYPE SLIS_LAYOUT_ALV,
    W_REPID  LIKE SY-REPID.
DATA:FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA:FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA:FIELDCAT3 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

如上例中,遇到表名-字段名时必须用LIKE
关于缓存的问题:
同时这个函数的buffer 缓存有时候需要多留意,有时候需要退出去一下,清下缓存再进行测试。

这个是SE11+SE37的例子
REUSE_ALV_FIELDCATALOG_MERGE 的自动获取ALV fieldcat

  • 单元格颜色设置

GRID_DISPLAY中单元格颜色

相关文章

  • ABAP-ALV-GRID

    ALV简单实例 ABAP ALV使用实例---sflight航班表及其效果界面ABAP:ALV List报表最后页...

网友评论

      本文标题:ABAP-ALV-GRID

      本文链接:https://www.haomeiwen.com/subject/bptnzhtx.html