06-ALV

开发ALV的基本流程

开发ALV的基本流程

第1步:声明变量

定义ALV所要用到的类型池:TYPE-POOLS: SLIS

针对ALV的控制信息数据(Layout & Fieldcat)

第2步:定义内表

存放自定义数据文件的数据,以及在ALV中显示

第3步:读取数据

读取数据存放至Internal Table

第4步:ALV格式控制

建立ALV显示样式(layout)和显示字段清单(Field Catalogs)

第5步:定义事件

建立事件清单(Event Catalogs)

第6步:显示ALV

调用ALV Function Module

第7步:用户事件

定义User按键处理事件

第一步:声明变量

数据变量(Data Area)定义

声明类型组SLIS

TYPE-POOLS: slis.

DATA:

fieldcat TYPE slis_t_fieldcat_alv, “字段清单内表

fieldcat_ln LIKE LINE OF fieldcat, “字段清单工作区

layout TYPE slis_layout_alv, “ALV格式

sortcat TYPE slis_t_sortinfo_alv, “ALV排序字段清单内表

sortcat_ln LIKE LINE OF sortcat,

eventcat TYPE slis_t_event, “ALV事件

eventcat_ln LIKE LINE OF eventcat.”ALV事件工作区

DATA: col_pos TYPE i.

第二步:定义内表

DATA: BEGIN OF ivbap OCCURS 0,

vbeln LIKE vbap-vbeln,

matnr LIKE vbap-matnr,

matkl LIKE vbap-matkl,

END OF ivbap.

第三步:读取数据

SELECT vbeln posnr matnr matkl kwmeng vrkme

INTO CORRESPONDING FIELDS OF TABLE ivbap

FROM vbap

WHERE vbeln NE space.

第四步:ALV格式控制

ALV格式控制

layout-zebra = ‘X’. ”呈现颜色交替

layout-detail_popup = ‘X’. "是否弹出详细信息窗口

layout-f2code = ‘&ETA’. "设置触发弹出详细信息窗口的功能码,这里是双击

layout-no_vline = ‘X’. "这个用来设置列间隔线

layout-colwidth_optimize = ‘X’. "优化列宽选项是否设置

layout-detail_initial_lines = ‘X’.

layout-detail_titlebar = ‘详细内容’."设置弹出窗口的标题栏

字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等

ADD 1 TO col_pos.

fieldcat_ln-ref_tabname = ‘VBAP’.

fieldcat_ln-fieldname = ‘VBELN’.

fieldcat_ln-key = ‘X’.

fieldcat_ln-do_sum = space.

fieldcat_ln-col_pos = col_pos.

fieldcat_ln-no_out = space.

fieldcat_ln-qfieldname = space.

fieldcat_ln-hotspot = ‘X’.

APPEND fieldcat_ln TO fieldcat.

在这里插入图片描述

在这里插入图片描述

第五步:定义事件

建立事件清单(Event Catalogs)

需定义事件块,否则出错

eventcat_ln-name = ‘TOP_OF_PAGE’

eventcat_ln-form = ‘PAGE_HEADER’.

APPEND eventcat_ln TO eventcat.

事件块:

FORM PAGE_HEADER.

ENDFORM.

第六步:显示ALV

ALV显示

DATA: pgm LIKE sy-repid.

pgm = sy-repid.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’

EXPORTING

i_callback_program = pgm

i_callback_pf_status_set = ‘SET_STATUS’

i_callback_user_command = ‘USER_COMMAND’

is_layout = layout

it_fieldcat = fieldcat[]

it_sort = sortcat[]

i_save = ‘A’

”it_event = eventcat[]

TABLES

t_outtab = ivbap

EXCEPTIONS

program_error = 1

OTHERS = 2.

第七步:用户事件

USER-COMMAND子例程

FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

READ TABLE ivbap INDEX selfield-tabindex.

CHECK sy-subrc = 0.

CASE ucomm.

WHEN ‘&IC1’.

CASE selfield-sel_tab_field.

WHEN ‘IVBAP-VBELN’.

SET PARAMETER ID ‘AUN’ FIELD ivbap-vbeln.

CALL TRANSACTION ‘VA03’ AND SKIP FIRST SCREEN.

WHEN ‘IVBAP-MATNR’.

SET PARAMETER ID ‘MAT’ FIELD ivbap-matnr.

CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.

ENDCASE.

ENDCASE.

ENDFORM.

ID ‘AUN’ FIELD ivbap-vbeln.

CALL TRANSACTION ‘VA03’ AND SKIP FIRST SCREEN.

WHEN ‘IVBAP-MATNR’.

SET PARAMETER ID ‘MAT’ FIELD ivbap-matnr.

CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.

ENDCASE.

ENDCASE.

ENDFORM.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值