当前位置: 首页 > article >正文

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)。


http://www.kler.cn/news/160684.html

相关文章:

  • 前端实现手机短信验证码倒计时效果
  • 【PyTorch】模型选择、欠拟合和过拟合
  • Linux命令之ps
  • QT+Unity3D 超详细(将unity3D与QT进行连接,并实现信息传递)
  • SpringSecurity6 | 默认用户生成(下)
  • Linux设置Docker自动创建Nginx容器脚本
  • IDEA如何配置Git 遇到问题的解决
  • Java 敏感信息脱敏类
  • 【开源项目】Windows串口通信组件 -- Com.Gitusme.IO.Ports.SerialPort
  • 【c语言指针详解】指针的高级应用
  • 被动式安全扫描器
  • WebGL笔记:矩阵平移的数学原理和实现
  • 内衣洗衣机和手洗哪个干净?高性价比内衣洗衣机推荐
  • 【C语言】用户空间使用非缓存内存
  • 【Flink on k8s】- 3 - Kubernetes 中的关键概念
  • composer配置国内镜像
  • MySQL:update set的坑
  • HXDSP2441-Demo板
  • 智能优化算法应用:基于卷尾猴算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 外包干了2个多月,技术明显有退步了。。。。。
  • 第十五期长江沙龙:小蜘蛛,大生态落地大坪大融城
  • 开源软件license介绍与检测
  • 本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ
  • 大模型的RPA应用 | 代理流程自动化(APA),开启智能自动化新纪元
  • 大数据-hive
  • 什么是https加密协议,相比http的好处在哪?
  • Spark RDD惰性计算的自主优化
  • UI自动化Selenium 数据驱动读取Excel
  • java面试题-ArrayList 和 LinkedList 的区别是什么
  • WebStorm:Mac/Win上强大的JavaScript开发工具