SAP-DYNPRO之面向对象ALV示例
2015-06-12 21:00
302 查看
运行效果:
步骤:
新建工具条([b]工具条名称:STATUS_BAR):[/b]
子程序调用代码如下:
ZTEST_SY03_A01 子程序代码:
100屏幕逻辑流:
屏幕201:
屏幕201逻辑流:
屏幕202逻辑流:
ZTEST_SY03_L01 子程序代码:
ZTEST_SY03_O01 子程序代码:
注:(1). 向导自动生成代码未列出;
(2). CSDN博客的插入代码功能不支持ABAP语言,故选了JAVA语言替代,关键字无法高亮显示;
(3). 如有疏漏之处,还请不吝赐教!
参考资料:《SAP实用程序开发进阶》,唐嘉、彭功涛、方玉凤 编著,兵器工业出版社;
步骤:
新建工具条([b]工具条名称:STATUS_BAR):[/b]
子程序调用代码如下:
REPORT ZTEST_SY03. " 数据定义 INCLUDE ZTEST_SY03_A01. " 分页 INCLUDE ZTEST_SY03_L01. " 数据表格 INCLUDE ZTEST_SY03_T01. " PBO INCLUDE ZTEST_SY03_O01. " PAI INCLUDE ZTEST_SY03_I01. "子FORM INCLUDE ZTEST_SY03_F01.
ZTEST_SY03_A01 子程序代码:
TABLES: spfli. " 结构体 DATA: gs_spfli TYPE spfli, gs_sflight TYPE sflight. DATA: BEGIN OF gs_scarr, sel TYPE char1. INCLUDE STRUCTURE scarr. DATA: END OF gs_scarr. " 內表 DATA: gt_spfli LIKE TABLE OF gs_spfli, gt_sflight LIKE TABLE OF gs_sflight, gt_scarr LIKE TABLE OF gs_scarr. DATA: g_container1 TYPE scrfname VALUE 'CUS01', " 重新定义本地容器名 g_container2 TYPE scrfname VALUE 'CUS02'. " 重新定义本地容器名 DATA: grid1 TYPE REF TO cl_gui_alv_grid, " 声明ALV对象 grid2 TYPE REF TO cl_gui_alv_grid. " 声明ALV对象 DATA: g_custom_container1 TYPE REF TO cl_gui_custom_container," 声明容器对象 g_custom_container2 TYPE REF TO cl_gui_custom_container." 声明容器对象 "查询屏幕 SELECTION-SCREEN BEGIN OF SCREEN 9000 AS SUBSCREEN. SELECTION-SCREEN BEGIN OF BLOCK 10 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_carrid FOR spfli-carrid, s_connid FOR spfli-connid. SELECTION-SCREEN END OF BLOCK 10. SELECTION-SCREEN END OF SCREEN 9000. START-OF-SELECTION. PERFORM get_data. CALL SCREEN 100.新建屏幕100(在100屏幕上面新建两个子屏幕):
100屏幕逻辑流:
PROCESS BEFORE OUTPUT. MODULE status_0100. CALL SUBSCREEN: sub01 INCLUDING sy-repid '9000', sub02 INCLUDING sy-repid '0200'. PROCESS AFTER INPUT. CALL SUBSCREEN sub01. CALL SUBSCREEN sub02. MODULE user_command_0100.屏幕200(在屏幕200上面创建标签):
屏幕201:
屏幕201逻辑流:
PROCESS BEFORE OUTPUT. MODULE set_alv_display_0201. PROCESS AFTER INPUT.屏幕202:
屏幕202逻辑流:
PROCESS BEFORE OUTPUT. MODULE set_alv_display_0202. PROCESS AFTER INPUT.屏幕203:
ZTEST_SY03_L01 子程序代码:
MODULE set_alv_display_0201 OUTPUT. PERFORM alvshow USING '1' g_container1 g_custom_container1 grid1 gt_spfli. ENDMODULE. MODULE set_alv_display_0202 OUTPUT. PERFORM alvshow USING '2' g_container2 g_custom_container2 grid2 gt_sflight. ENDMODULE.
ZTEST_SY03_O01 子程序代码:
MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_BAR'. ENDMODULE.ZTEST_SY03_I01 子程序代码:
MODULE user_command_0100 INPUT. CASE sy-ucomm. WHEN 'EXIT'. " 退出 LEAVE PROGRAM. WHEN 'EXEC'. " 查询数据 CLEAR: gt_spfli[],gt_sflight[],gt_scarr[]. " 重新查询数据 SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_spfli FROM spfli WHERE carrid IN s_carrid AND connid IN s_connid. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_sflight FROM sflight WHERE carrid IN s_carrid AND connid IN s_connid. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_scarr FROM scarr WHERE carrid IN s_carrid. ENDCASE. ENDMODULE.ZTEST_SY03_F01 子程序代码:
FORM get_data. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_spfli FROM spfli. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_sflight FROM sflight. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_scarr FROM scarr. ENDFORM. *&---------------------------------------------------------------------* *& Form alvshow *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->F_CONTAINER text * -->F_DATA text *----------------------------------------------------------------------* FORM alvshow USING sign TYPE char1 p_container TYPE scrfname p_parent TYPE REF TO cl_gui_custom_container p_grid TYPE REF TO cl_gui_alv_grid p_data TYPE STANDARD TABLE. DATA:li_exclude TYPE STANDARD TABLE OF ui_func. DATA: l_layout TYPE lvc_s_layo."样式 DATA: fieldcat TYPE lvc_t_fcat. " ALV显示字段 IF p_grid IS INITIAL. l_layout-cwidth_opt = 'X'.""列宽自动优化 l_layout-zebra = 'X'. l_layout-smalltitle = 'X'. PERFORM get_fieldcat USING sign CHANGING fieldcat. " 实例化容器对象 CREATE OBJECT p_parent EXPORTING container_name = p_container. " 实例化ALV对象 CREATE OBJECT p_grid EXPORTING i_parent = p_parent. "调用ALV显示的方法 CALL METHOD p_grid->set_table_for_first_display EXPORTING * i_structure_name = 'SPFLI' is_layout = l_layout CHANGING it_outtab = p_data[] " ALV显示內表 it_fieldcatalog = fieldcat[]. " ALV显示字段 ELSE. CALL METHOD p_grid->refresh_table_display. ENDIF. ENDFORM. "alvshow *&---------------------------------------------------------------------* *& Form GET_FIELDCAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_SIGN text * <--P_P_FIELDCAT text *----------------------------------------------------------------------* FORM get_fieldcat USING p_sign TYPE char1 CHANGING p_fieldcat TYPE STANDARD TABLE. CASE: p_sign. WHEN '1'. PERFORM get_fieldcat_1 CHANGING p_fieldcat. WHEN '2'. PERFORM get_fieldcat_2 CHANGING p_fieldcat. WHEN OTHERS. ENDCASE. ENDFORM. " GET_FIELDCAT *&---------------------------------------------------------------------* *& Form GET_FIELDCAT_1 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_PC_FIELDCAT text *----------------------------------------------------------------------* FORM get_fieldcat_1 CHANGING p_pc_fieldcat TYPE STANDARD TABLE. DATA: fcat TYPE lvc_s_fcat. DEFINE add_fcat. clear fcat. fcat-fieldname = &1. " 字段名 fcat-coltext = &2. " 显示字段文本 append fcat to p_pc_fieldcat. END-OF-DEFINITION. add_fcat 'CARRID' '航线代码'. add_fcat 'CONNID' '航班连接Id'. add_fcat 'COUNTRYFR' '起飞国家'. add_fcat 'CITYFROM' '起飞城市'. add_fcat 'AIRPFROM' '起飞机场'. add_fcat 'COUNTRYTO' '目标国家'. add_fcat 'CITYTO' '目标城市'. add_fcat 'AIRPTO' '目标机场'. add_fcat 'FLTIME' '航班时间'. add_fcat 'DEPTIME' '启程时间'. add_fcat 'ARRTIME' '到达时间'. add_fcat 'DISTANCE' '距离'. ENDFORM. " GET_FIELDCAT_1 *&---------------------------------------------------------------------* *& Form get_fieldcat_2 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_PC_FIELDCAT text *----------------------------------------------------------------------* FORM get_fieldcat_2 CHANGING p_pc_fieldcat TYPE STANDARD TABLE. DATA: fcat TYPE lvc_s_fcat. DEFINE add_fcat. clear fcat. fcat-fieldname = &1. " 字段名 fcat-coltext = &2. " 显示字段文本 append fcat to p_pc_fieldcat. END-OF-DEFINITION. add_fcat 'CARRID' '航线代码'. add_fcat 'CONNID' '航班连接Id'. add_fcat 'FLDATE' '航班日期'. add_fcat 'PRICE' '航空运费'. add_fcat 'CURRENCY' '航班的本地货币'. add_fcat 'PLANETYPE' '飞机类型'. add_fcat 'SEATSMAX' '最大容量'. add_fcat 'SEATSOCC' '占据的座位'. ENDFORM. "get_fieldcat_2
注:(1). 向导自动生成代码未列出;
(2). CSDN博客的插入代码功能不支持ABAP语言,故选了JAVA语言替代,关键字无法高亮显示;
(3). 如有疏漏之处,还请不吝赐教!
参考资料:《SAP实用程序开发进阶》,唐嘉、彭功涛、方玉凤 编著,兵器工业出版社;
相关文章推荐
- Marquee 跑马效果
- MSMQ实现自定义序列化存储
- 远程Windows2008桌面时 没声音 声音组件显示没安装
- Populating Next Right Pointers in Each Node II
- 点圆的关系---3
- zerglurker的C语言教程008——循环语句详解
- 单链表的基本运算
- 点圆的关系---2
- Mac常用命令快捷键
- 通过历史记录简化操作(很少用)
- 三维坐标系的旋转矩阵
- Bootstrap居中方法
- Markdown大赛二等奖
- Task 6.4 冲刺Two之站立会议8
- Visual studio 2010 远程调试C#程序
- 网络请求
- C++中的explicit
- 快速排序及优化(Java版)
- 词向量概况
- 后缀数组模板 SuffixArray