ABAP 中 Table Control例子
实现了Table Control的主要的一些功能,可以作为例子参考,实现的功能有是否可编辑切换,选择某一条记录点击按钮显示详细信息,新增记录,删除记录,选择所有记录,选择光标所有记录,取消选择所有,排序,行选择栏位,列不可编辑,固定列,Table Control标题,分页功能,根据输入A字段的值显示B字段的值,某字段的值如果等于XXX就不可编辑等功能。相信这些功能已经可以满足大部份的开发了。
主程序代码:
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
DATA: l_field TYPE char50,
l_line TYPE i.
TYPES: BEGIN OF ty_spfli,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
mask(1),
END OF ty_spfli.
DATA g_lines TYPE i.
DATA sp2 TYPE TABLE OF ty_spfli WITH HEADER LINE.
DATA sp1 TYPE ty_spfli.
SELECT * INTO CORRESPONDING FIELDS OF TABLE sp2 FROM spfli.
CONTROLS content TYPE TABLEVIEW USING SCREEN 100.
content-top_line = 1.
content-lines = LINES( sp2 ).
CALL SCREEN 100.
LOOP AT sp2.
WRITE: / sp2-carrid,sp2-connid,sp2-countryfr,sp2-cityfrom.
ENDLOOP.
*----------------------------------------------------------------------*
* MODULE status_0100 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STA'.
ENDMODULE. "status_0100 OUTPUT
*----------------------------------------------------------------------*
* MODULE user_command_0100 INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'SWITH'.
PERFORM f_switch.
WHEN 'SORT_UP'.
PERFORM f_sort USING 'UP'.
WHEN 'SORT_DOWN'.
PERFORM f_sort USING 'DOWN'.
WHEN 'DETAIL'.
PERFORM f_detail.
WHEN 'P--'.
PERFORM f_page USING save_ok.
WHEN 'P-'.
PERFORM f_page USING save_ok.
WHEN 'P+'.
PERFORM f_page USING save_ok.
WHEN 'P++'.
PERFORM f_page USING save_ok.
WHEN 'SELECT'.
PERFORM f_select USING 'SELECT'.
WHEN 'BLOCK'.
PERFORM f_select USING 'BLOCK'.
WHEN 'DESELECT'.
PERFORM f_select USING 'DESELECT'.
WHEN 'INSERT'.
PERFORM f_row USING 'INSERT'.
WHEN 'DELETE'.
PERFORM f_row USING 'DELETE'.
ENDCASE.
ENDMODULE. "user_command_0100 INPUT
*----------------------------------------------------------------------*
* MODULE filltab OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE filltab OUTPUT.
READ TABLE sp2 INTO sp1 INDEX content-current_line.
ENDMODULE. "filltab OUTPUT
*----------------------------------------------------------------------*
* MODULE readtab INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE readtab INPUT.
g_lines = sy-loopc.
MODIFY sp2 FROM sp1 INDEX content-current_line.
ENDMODULE. "readtab INPUT
*----------------------------------------------------------------------*
* MODULE chang_val INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE chang_val INPUT.
DATA lwa_cols LIKE LINE OF content-cols.
LOOP AT content-cols INTO lwa_cols.
IF lwa_cols-screen-name = 'SP1-COUNTRYFR'
AND sp1-countryfr = 'AA'.
sp1-cityfrom = 'SDSDSD'.
MODIFY sp2 FROM sp1 INDEX content-current_line.
ENDIF.
ENDLOOP.
ENDMODULE. "chang_val INPUT
*----------------------------------------------------------------------*
* MODULE get_cursor INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE get_cursor INPUT.
GET CURSOR FIELD l_field LINE l_line.
ENDMODULE. "get_cursor INPUT
*----------------------------------------------------------------------*
* MODULE set_cursor OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE set_cursor OUTPUT.
SET CURSOR FIELD l_field LINE l_line.
ENDMODULE. "set_cursor OUTPUT
*----------------------------------------------------------------------*
* MODULE SET_EDITABLE
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE set_editable OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'SP1-CITYFROM'.
IF sp1-cityfrom = 'SDSDSD'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
ENDMODULE. "SET_EDITABLE
*&---------------------------------------------------------------------*
*& Form f_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CODE text
*----------------------------------------------------------------------*
FORM f_page USING code TYPE sy-ucomm.
DATA: i TYPE i,
j TYPE i.
CASE code.
WHEN 'P--'.
content-top_line = 1.
WHEN 'P-'.
content-top_line = content-top_line - g_lines.
IF content-top_line <= 0.
content-top_line = 1.
ENDIF.
WHEN 'P+'.
i = content-top_line + g_lines.
j = content-lines - g_lines + 1.
IF j <= 0.
j = 1.
ENDIF.
IF i <= j.
content-top_line = i.
ELSE.
content-top_line = j.
ENDIF.
WHEN 'P++'.
content-top_line = content-lines - g_lines + 1.
IF content-top_line <= 0.
content-top_line = 1.
ENDIF.
ENDCASE.
ENDFORM. "f_page
*&---------------------------------------------------------------------*
*& Form f_switch
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_switch.
DATA lwa_cols LIKE LINE OF content-cols.
LOOP AT content-cols INTO lwa_cols WHERE index > 2.
IF lwa_cols-screen-input = 0.
lwa_cols-screen-input = 1.
ELSE.
lwa_cols-screen-input = 0.
ENDIF.
MODIFY content-cols FROM lwa_cols INDEX sy-tabix.
ENDLOOP.
ENDFORM. "f_switch
*&---------------------------------------------------------------------*
*& Form F_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CODE text
*----------------------------------------------------------------------*
FORM f_sort USING code.
DATA: str1 TYPE string,
str2 TYPE string,
lwa_cols LIKE LINE OF content-cols.
READ TABLE content-cols INTO lwa_cols WITH KEY selected = 'X'.
IF sy-subrc = 0.
SPLIT lwa_cols-screen-name AT '-' INTO str1 str2.
IF code = 'UP'.
SORT sp2 STABLE BY (str2) ASCENDING.
ELSEIF code = 'DOWN'.
SORT sp2 STABLE BY (str2) DESCENDING.
ENDIF.
lwa_cols-selected = ''.
MODIFY content-cols FROM lwa_cols TRANSPORTING selected WHERE selected = 'X'.
ENDIF.
ENDFORM. "F_SORT
*&---------------------------------------------------------------------*
*& Form f_detail
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_detail.
READ TABLE sp2 INTO sp1 WITH KEY mask = 'X'.
IF sy-subrc = 0 AND sp1-mask = 'X'.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
textline1 = sp1-carrid
textline2 = sp1-connid.
ENDIF.
ENDFORM. "f_detail
*&---------------------------------------------------------------------*
*& Form f_select
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CODE text
*----------------------------------------------------------------------*
FORM f_select USING code.
CASE code.
WHEN 'SELECT'.
sp1-mask = 'X'.
MODIFY sp2 FROM sp1 TRANSPORTING mask WHERE mask IS INITIAL.
WHEN 'BLOCK'.
sp1-mask = 'X'.
MODIFY sp2 FROM sp1 INDEX l_line TRANSPORTING mask.
WHEN 'DESELECT'.
sp1-mask = ''.
MODIFY sp2 FROM sp1 TRANSPORTING mask WHERE mask = 'X'.
ENDCASE.
ENDFORM. "f_select
*&---------------------------------------------------------------------*
*& Form F_ROW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CODE text
*----------------------------------------------------------------------*
FORM f_row USING code.
DATA lwa_cols LIKE LINE OF content-cols.
DATA: l_int TYPE i,
lt_cols LIKE TABLE OF l_int.
CASE code.
WHEN 'INSERT'.
INSERT INITIAL LINE INTO sp2 INDEX l_line.
WHEN 'DELETE'.
DELETE sp2 WHERE mask = 'X'.
ENDCASE.
ENDFORM. "F_ROW
屏幕100的代码:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
LOOP WITH CONTROL content.
MODULE filltab.
MODULE set_editable.
ENDLOOP.
MODULE set_cursor.
PROCESS AFTER INPUT.
LOOP WITH CONTROL content.
MODULE readtab.
MODULE chang_val.
ENDLOOP.
MODULE get_cursor.
MODULE user_command_0100.
ABAP 中 Table Control例子的更多相关文章
- ABAP table control例子
[转自]http://blog.csdn.net/lhx20/article/details/3039909Table control用于在screen上以表格的形式显示数据,在table contr ...
- ABAP 表格控制(Table Control)和步循环
表格控制(Table Control)和步循环 1.两个标准Demo: SAPMTZ60,SAPMTZ61 2.简介 3.建立Table Control程序的基本流程 4.使用步循环 5.表格 ...
- SAP ABAP编程 Table Control动态隐藏列
在SAP DIALOG设计中,有时候须要动态的隐藏某些列,以下是方法. ***数据定义 CONTROLS: table_control TYPE TABLEVIEW USING SCREEN 0100 ...
- ABAP中的Table Control编程
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重 ...
- ABAP Table Control
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通 ...
- 我教女朋友学编程html系列(5) html中table的用法和例子
女朋友不是学计算机的,但是现在从事计算机行业,做技术支持,她想学习编程,因此我打算每天教她一点点,日积月累,带她学习编程,如果其他初学者感兴趣,可以跟着学. 为了将table介绍的简单.生动,具有实战 ...
- abap table control里面各种属性和事件的写法
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通屏 ...
- 【ABAP系列】SAP ABAP中ALV使用HTML的例子
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中ALV使用HT ...
- ABAP中使用浏览器打开网页
在SAP ABAP中可以在Screen中嵌入Html control打开网页,也可以通过调用本地的IE浏览器打开. 1.在Screen中嵌入Html control的例子,在系统中有,se38:SAP ...
随机推荐
- 在mac os 中安装 autoconf and automake
转载地址:http://www.mattvsworld.com/blog/2010/02/install-the-latest-autoconf-and-automake-on-mac-os-10-6 ...
- QThread 与 QObject的关系(QObject可以用于多线程,可以发送信号调用存在于其他线程的slot函数,但GUI类不可重入)
QThread 继承 QObject..它可以发送started和finished信号,也提供了一些slot函数. QObject.可以用于多线程,可以发送信号调用存在于其他线程的slot函数,也可以 ...
- asp.net 生成、解析条形码和二维码
原文 asp.net 生成.解析条形码和二维码 一.条形码 一维码,俗称条形码,广泛的用于电子工业等行业.比如我们常见的书籍背面就会有条形码,通过扫描枪等设备扫描就可以获得书籍的ISBN(Intern ...
- Robot Framework与Web界面自动化测试学习笔记:如何判断单选框的选中状态
单选按钮是个常见的html元素,在网页中往往提供一组单选按钮来做选项. 这样在自动化测试用例中需要判断当前选中的按钮是否与预期的一直. 可以这样来操作: ${value} Get Element ...
- AT&T汇编
AT&T汇编和8086汇编语言虽然两者很相似,但是还是不能根据8086的语法规则来读AT&T汇编的吧,所以还是要看看AT&T汇编的语法规则,因为在读内核代码时,跟硬件打交道的部 ...
- poj 1182食物链(并查集)
算法思路:把那些确定了相对关系的节点放在同一棵树里(可以同时存在多棵树,单独每棵树中节点的相对关系确定),每个节点对应的 v[] 值记录他与根节点的关系( 0:同类: 1:根吃他: 2:他吃根 ).当 ...
- 根据IP地址获得地理位置
///<summary> /// 提供从纯真IP数据库搜索IP信息的方法: ///</summary> public class IPSelect { FileStream i ...
- dedecms的安装以及为他配置虚拟主机
一.概念: 1.CMS是:Content Manage System 内容管理系统 内容包括:商品,文章,软件,视频 2.当前市面上常用的CMS有哪些? DedeCMS: 织梦 中小型公司 ...
- JVM性能监控与优化笔记(CPU)
基础 对于CPU层面的监控主要以下几个点: 是否系统态CPU的占用率高 CPU运行队列中待运行的任务数 是否CPU停滞多,每时钟指令数(IPC)少(高级点,对于计算密集型的应用需要关注) 系统态CPU ...
- kali之ARP欺骗获取图片流
其实很简单,就两步: 1. 后接三个参数: 网卡:eth0 网关:10.0.0.1 攻击目标:10.0.0.128 2.启动监听 会弹出一个框 里面就会显示攻击目标通过浏览器访问的页面上的 ...