SAP ABAP 开发ALV的基本流程(ALV资料二)

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

第二步:定义ALV所要显示的数据对应的内表数据类型及内表数据对象;

第三步:定义一些显示ALV时所要使用到的变量,例如:

Data: w_repid like sy-repid, “ABAP程序,我们一般取当前程序

w_callback_ucomm type slis_formname, "字符型,功能

w_print type slis_print_alv, "类型组

w_layout type slis_layout_alv, "类型组

w_html_top_of_page type slis_formname, "字符型

w_fieldcat_alv like line of i_fieldcat_alv, “从上面的数据结构类型引用过来的

w_excluding like line of i_excluding, “同上

w_events like line of i_events, “同上

w_event_exit like line of i_event_exit, “同上

w_list_comments like line of i_list_comments.“同上

第四步:定义选择屏幕 ;

第五步:声明各个选择屏幕事件块,例如:

定义initialization部分,在这个部分往往要指定w_repid的值,w_repid = sy-repid。

定义start-of-selection部分,在这通常会调用各种子程序,以下以标准ALV显示为例:

1)调用一个子程序(通常命名为frm_get_dataXXX(X代表任意自定义字母)),用于获取ALV所要显示的数据 ;例如:

FORM frm_get_data.

… … “其它处理逻辑

SELECT lifnr "供应商账号

ktokk "账号组

name1 "名称1

name2 "名称2

INTO CORRESPONDING FIELDS OF TABLE it_main

FROM zmmjyht003

WHERE (l_where)

.

… … “其它处理逻辑

ENDFORM.

2)调用一个子程序(通常命名为frm_alv_layout_build),用于设置ALV所要显示的样式 ;

例如:

FORM frm_alv_layout_build.

g_layout-zebra = 'X'.

g_layout-colwidth_optimize = 'X'. "列数据最优化显示

g_layout-box_fieldname = 'SELFLAG'. "表示ALV行项目选中的字段

ENDFORM.

3)调用一个子程序(通常命名为frm_alv_set_columns),用于完成ALV所要显示的列的相关设置 ;

例如:

FORM frm_alv_set_columns.

REFRESH g_fieldcat_alv.

PERFORM frm_set_l_fieldcat USING 1 'LIFNR' '供应商账号'.

ENDFORM.

FORM frm_set_l_fieldcat USING p_pos p_name p_text.

DATA: l_fieldcat TYPE slis_fieldcat_alv.

l_fieldcat-col_pos = p_pos.

l_fieldcat-fieldname = p_name.

l_fieldcat-seltext_l = p_text.

APPEND l_fieldcat TO g_fieldcat_alv.

ENDFORM.

4)调用显示ALV的函数,例如:REUSE_ALV_GRID_DISPLAY ;

FORM frm_alv_display_data.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_pf_status_set = 'FRM_STATUS_ALV'

i_callback_user_command = 'FRM_USER_COMMAND_ALV'

is_layout = g_layout

it_fieldcat = g_fieldcat_alv[]

TABLES

t_outtab = it_main

EXCEPTIONS

program_error = 1

OTHERS = 2

.

ENDFORM.

如果ALV所要展示的列过多时,建议先在数据字典系统中创建相应的结构,这样可免去对输出列表头信息的繁琐编辑处理,代码行也会缩短。只要将上面函数中的it_fieldcat参数替换成i_structure_name,如:I_STRUCTURE_NAME = 'TY_OUT_FILE',注意:此处的TY_OUT_FILE结构必须是数据字典中已经存在的对象

以上步骤,详见“示例程序”部分:示例一(标准ALV)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值