DIALOG开发中的ALV
2013-11-10 20:29
218 查看
第一步:alv需要的内表
TYPES: BEGIN OF ty_alv,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
meins TYPE meins,
box TYPE c,
END OF ty_alv.
DATA: it_alv TYPE STANDARD TABLE OF ty_alv,"定义内表
wa_alv TYPE ty_alv. "定义与内表结构相同的工作区
第二步:定义alv框架变量
DATA: i_fieldcat_alv TYPE STANDARD TABLE OF lvc_s_fcat, “定义内表存放alv field 的信息
w_fieldcat_alv TYPE lvc_s_fcat. "定义工作区
DATA: grid TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
g_container TYPE scrfname VALUE 'ABC'.
第三步:从数据库表中取出所需的数据放入内表 it_alv
为了提高程序可读性,创建form get_data
FORM get_data .
SELECT
vbeln
posnr
matnr
kwmeng
meins
INTO TABLE it_alv FROM vbap WHERE vbeln IN s_vbeln.
ENDFORM.
第四步:创建alv架构,也就是给alv添加与内表相应的字段以及字段的描述
FORM fieldcat_build .
w_fieldcat_alv-fieldname = 'VBELN'. ”这里我们需要注意 w_fieldcat_alv-fieldname = 'VBELN'.必须是大写的,小写alv是不会显示数据的。
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Sale Order No'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'POSNR'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Item'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'MATNR'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Material'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'KWMENG'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Quantity'.
w_fieldcat_alv-edit = 'X'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'MEINS'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Unit'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-scrtext_s = 'CheckBox'.
w_fieldcat_alv-checkbox = 'X'.
w_fieldcat_alv-edit = 'X'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
ENDFORM.
第五步:调用form get_data 和 FORM fieldcat_build .(点击screen 9001里的某个按钮call screen 9002 并在9002中显示出alv)
MODULE user_command_9001 INPUT.
save_code = ok_code.
CLEAR ok_code.
CASE save_code.
WHEN 'GO'.
PERFORM get_data.
PERFORM fieldcat_build.
CALL SCREEN 9002.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
第六步:创建放alv的容器custom control
比如在screen 9002里创建custom control 在界面的左边找到custom control 拖过来。
NAME:ABC这里name 很重要,要和我们之前定义的grid
关联。
第七步:创建MODULE ALV_SHOW
MODULE ALV_SHOW 语句应该写在screen 9002 的flow logic 里面的 PBO 下面。
如下代码
PROCESS BEFORE OUTPUT.
MODULE STATUS_9002.
MODULE ALV_SHOW.
然后双击ALV_SHOW 在main program 中创建 MODULE alv_show OUTPUT.
MODULE alv_show OUTPUT.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container.
CREATE OBJECT grid
EXPORTING
i_parent = g_custom_container.
CALL METHOD grid->set_table_for_first_display
CHANGING
it_outtab = it_alv
it_fieldcatalog = i_fieldcat_alv.
ELSE.
CALL METHOD grid->refresh_table_display.
ENDIF.
ENDMODULE.
TYPES: BEGIN OF ty_alv,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
meins TYPE meins,
box TYPE c,
END OF ty_alv.
DATA: it_alv TYPE STANDARD TABLE OF ty_alv,"定义内表
wa_alv TYPE ty_alv. "定义与内表结构相同的工作区
第二步:定义alv框架变量
DATA: i_fieldcat_alv TYPE STANDARD TABLE OF lvc_s_fcat, “定义内表存放alv field 的信息
w_fieldcat_alv TYPE lvc_s_fcat. "定义工作区
DATA: grid TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
g_container TYPE scrfname VALUE 'ABC'.
第三步:从数据库表中取出所需的数据放入内表 it_alv
为了提高程序可读性,创建form get_data
FORM get_data .
SELECT
vbeln
posnr
matnr
kwmeng
meins
INTO TABLE it_alv FROM vbap WHERE vbeln IN s_vbeln.
ENDFORM.
第四步:创建alv架构,也就是给alv添加与内表相应的字段以及字段的描述
FORM fieldcat_build .
w_fieldcat_alv-fieldname = 'VBELN'. ”这里我们需要注意 w_fieldcat_alv-fieldname = 'VBELN'.必须是大写的,小写alv是不会显示数据的。
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Sale Order No'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'POSNR'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Item'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'MATNR'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Material'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'KWMENG'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Quantity'.
w_fieldcat_alv-edit = 'X'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-fieldname = 'MEINS'.
w_fieldcat_alv-ref_table = 'VBAP'.
w_fieldcat_alv-scrtext_s = 'Unit'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
w_fieldcat_alv-scrtext_s = 'CheckBox'.
w_fieldcat_alv-checkbox = 'X'.
w_fieldcat_alv-edit = 'X'.
APPEND w_fieldcat_alv TO i_fieldcat_alv.
CLEAR w_fieldcat_alv.
ENDFORM.
第五步:调用form get_data 和 FORM fieldcat_build .(点击screen 9001里的某个按钮call screen 9002 并在9002中显示出alv)
MODULE user_command_9001 INPUT.
save_code = ok_code.
CLEAR ok_code.
CASE save_code.
WHEN 'GO'.
PERFORM get_data.
PERFORM fieldcat_build.
CALL SCREEN 9002.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
第六步:创建放alv的容器custom control
比如在screen 9002里创建custom control 在界面的左边找到custom control 拖过来。
NAME:ABC这里name 很重要,要和我们之前定义的grid
关联。
第七步:创建MODULE ALV_SHOW
MODULE ALV_SHOW 语句应该写在screen 9002 的flow logic 里面的 PBO 下面。
如下代码
PROCESS BEFORE OUTPUT.
MODULE STATUS_9002.
MODULE ALV_SHOW.
然后双击ALV_SHOW 在main program 中创建 MODULE alv_show OUTPUT.
MODULE alv_show OUTPUT.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container.
CREATE OBJECT grid
EXPORTING
i_parent = g_custom_container.
CALL METHOD grid->set_table_for_first_display
CHANGING
it_outtab = it_alv
it_fieldcatalog = i_fieldcat_alv.
ELSE.
CALL METHOD grid->refresh_table_display.
ENDIF.
ENDMODULE.
相关文章推荐
- [LeetCode] Best Time to Buy and Sell Stock
- Java中的对象池技术
- CF 136B Ternary Logic
- FZU 2138 && FOJ11月赛G题 容斥
- 死锁活锁饥饿
- C语言打印统计单词长度的直方图<The C Programming Language>课后习题
- __asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法(一)
- C++ primer读书笔记——5.12 类型转换
- 新手入门 acm 输入输出练习
- 网页视频插件
- FZU 2135 && FOJ11月赛E题
- oracle学习笔记-1
- HTML文本框 圆角显示 样式设置方法
- 文思海辉大厦介绍-摘自网络
- Ajax的简介
- Mac OS X v10.5.8安装Weblogic 12.1
- FZU 2135 && FOJ11月赛D题 模拟题
- 可执行文件的包含信息
- Oracle学习笔记 之 sqlplus 用法
- java中ThreadLocal类的使用