table control的修改/排序/删除功能实现实例
2013-05-25 15:41
274 查看
文章转自 /article/2397540.html
本实例仿照SAP DEMO而写 DEMO名称是:demo_dynpro_tabcont_loop_at,自动动手写一次的目的是把将该程序的注释写明白一点,希望本文对刚入门的博友在理解table control有一点帮助,依然很恶心这编辑器不能很方便的插入图片。
主程序:
*声明table control里面表控件使用的结构
TABLES demo_conn.
*声明table control
CONTROLS sflight TYPE TABLEVIEW
USING SCREEN 100.
*定义control cols表的行工作区
DATA col LIKE LINE
OF sflight-cols.
*定义一个整型变量用来存储内表行数
DATA fill TYPE i.
*定义内表用来填充control的table
DATA itab TYPE STANDARD
TABLE OF demo_conn.
*定义OK_CODE 存储ftcode
DATA ok_code TYPE sy-ucomm.
DATA ok_save TYPE sy-ucomm.
*---------------------------------------------------------*
*Event blocks *
*---------------------------------------------------------*
*start-of-selection event---------------------------------
START-OF-SELECTION.
*获取数据
SELECT *
FROM spfli
INTO CORRESPONDING FIELDS
OF TABLE itab.
*取得内表行数
DESCRIBE TABLE itab
LINES fill.
*初始化table control的行数
sflight-lines = fill.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* 设置菜单 工具 栏
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_001'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module MODIFY_CT INPUT
*&---------------------------------------------------------------------*
* 更新内表
*----------------------------------------------------------------------*
MODULE modify_ct INPUT.
MODIFY itab FROM demo_conn
INDEX sflight-current_line.
ENDMODULE. " MODIFY_CT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* 处理那些按钮事件
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
ok_save = ok_code.
CLEAR ok_code.
CASE ok_save.
WHEN 'CHANGE'.
*当点击修改按钮,此时要需要修改control cols的input属性(cols包含所有列相关信息)
LOOP AT sflight-cols
INTO col WHERE index
GT 2.
IF col-screen-input EQ
'1'.
col-screen-input = '0'.
modify sflight-cols from
col index sy-tabix.
ELSEIF col-screen-input EQ
'0'.
col-screen-input = '1'.
modify sflight-cols from
col index sy-tabix.
ELSE.
ENDIF.
ENDLOOP.
*当点击sort_down按钮,此时需要对内表针对选中的地列进行排序
WHEN 'SORT_DOWN'.
READ TABLE sflight-cols
INTO col WITH KEY
selected = 'X'.
IF sy-subrc = 0.
SORT itab BY (col-screen-name+10) DESCENDING.
col-selected = ''.
MODIFY sflight-cols FROM
col INDEX sy-tabix.
ENDIF.
*当点击sort_up按钮。。。。 。。。
WHEN 'SORT_UP'.
READ TABLE sflight-cols
INTO col WITH KEY
selected = 'X'.
IF sy-subrc = 0.
SORT itab BY (col-screen-name+10) ASCENDING.
col-selected = ''.
MODIFY sflight-cols FROM
col INDEX sy-tabix.
ENDIF.
*当点击删除按钮,此时需要更新内表
WHEN 'DELETE'.
READ TABLE sflight-cols
INTO col WITH KEY
screen-input = '1'.
IF sy-subrc = 0.
LOOP AT itab
INTO demo_conn WHERE mark =
'X'.
DELETE itab INDEX
sy-tabix.
ENDLOOP.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module READ_DATA OUTPUT
*&---------------------------------------------------------------------*
* 读取内表数据
*----------------------------------------------------------------------*
MODULE read_data OUTPUT.
READ TABLE itab
INTO demo_conn INDEX sflight-current_line.
ENDMODULE. " READ_DATA OUTPUT
*&---------------------------------------------------------------------*
*& Module CANCEL INPUT
*&---------------------------------------------------------------------*
* 强制退出
*----------------------------------------------------------------------*
MODULE cancel INPUT.
LE***E PROGRAM.
ENDMODULE. " CANCEL INPUT
屏幕逻辑流:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
LOOP WITH CONTROL
sflight.
MODULE read_data.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE cancel AT EXIT-COMMAND.
LOOP WITH CONTROL
sflight.
MODULE modify_ct.
ENDLOOP.
MODULE user_command_0100.
本实例仿照SAP DEMO而写 DEMO名称是:demo_dynpro_tabcont_loop_at,自动动手写一次的目的是把将该程序的注释写明白一点,希望本文对刚入门的博友在理解table control有一点帮助,依然很恶心这编辑器不能很方便的插入图片。
主程序:
*声明table control里面表控件使用的结构
TABLES demo_conn.
*声明table control
CONTROLS sflight TYPE TABLEVIEW
USING SCREEN 100.
*定义control cols表的行工作区
DATA col LIKE LINE
OF sflight-cols.
*定义一个整型变量用来存储内表行数
DATA fill TYPE i.
*定义内表用来填充control的table
DATA itab TYPE STANDARD
TABLE OF demo_conn.
*定义OK_CODE 存储ftcode
DATA ok_code TYPE sy-ucomm.
DATA ok_save TYPE sy-ucomm.
*---------------------------------------------------------*
*Event blocks *
*---------------------------------------------------------*
*start-of-selection event---------------------------------
START-OF-SELECTION.
*获取数据
SELECT *
FROM spfli
INTO CORRESPONDING FIELDS
OF TABLE itab.
*取得内表行数
DESCRIBE TABLE itab
LINES fill.
*初始化table control的行数
sflight-lines = fill.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* 设置菜单 工具 栏
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_001'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module MODIFY_CT INPUT
*&---------------------------------------------------------------------*
* 更新内表
*----------------------------------------------------------------------*
MODULE modify_ct INPUT.
MODIFY itab FROM demo_conn
INDEX sflight-current_line.
ENDMODULE. " MODIFY_CT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* 处理那些按钮事件
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
ok_save = ok_code.
CLEAR ok_code.
CASE ok_save.
WHEN 'CHANGE'.
*当点击修改按钮,此时要需要修改control cols的input属性(cols包含所有列相关信息)
LOOP AT sflight-cols
INTO col WHERE index
GT 2.
IF col-screen-input EQ
'1'.
col-screen-input = '0'.
modify sflight-cols from
col index sy-tabix.
ELSEIF col-screen-input EQ
'0'.
col-screen-input = '1'.
modify sflight-cols from
col index sy-tabix.
ELSE.
ENDIF.
ENDLOOP.
*当点击sort_down按钮,此时需要对内表针对选中的地列进行排序
WHEN 'SORT_DOWN'.
READ TABLE sflight-cols
INTO col WITH KEY
selected = 'X'.
IF sy-subrc = 0.
SORT itab BY (col-screen-name+10) DESCENDING.
col-selected = ''.
MODIFY sflight-cols FROM
col INDEX sy-tabix.
ENDIF.
*当点击sort_up按钮。。。。 。。。
WHEN 'SORT_UP'.
READ TABLE sflight-cols
INTO col WITH KEY
selected = 'X'.
IF sy-subrc = 0.
SORT itab BY (col-screen-name+10) ASCENDING.
col-selected = ''.
MODIFY sflight-cols FROM
col INDEX sy-tabix.
ENDIF.
*当点击删除按钮,此时需要更新内表
WHEN 'DELETE'.
READ TABLE sflight-cols
INTO col WITH KEY
screen-input = '1'.
IF sy-subrc = 0.
LOOP AT itab
INTO demo_conn WHERE mark =
'X'.
DELETE itab INDEX
sy-tabix.
ENDLOOP.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module READ_DATA OUTPUT
*&---------------------------------------------------------------------*
* 读取内表数据
*----------------------------------------------------------------------*
MODULE read_data OUTPUT.
READ TABLE itab
INTO demo_conn INDEX sflight-current_line.
ENDMODULE. " READ_DATA OUTPUT
*&---------------------------------------------------------------------*
*& Module CANCEL INPUT
*&---------------------------------------------------------------------*
* 强制退出
*----------------------------------------------------------------------*
MODULE cancel INPUT.
LE***E PROGRAM.
ENDMODULE. " CANCEL INPUT
屏幕逻辑流:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
LOOP WITH CONTROL
sflight.
MODULE read_data.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE cancel AT EXIT-COMMAND.
LOOP WITH CONTROL
sflight.
MODULE modify_ct.
ENDLOOP.
MODULE user_command_0100.
相关文章推荐
- table control的修改/排序/删除功能实现实例
- table control的修改/排序/删除功能实现实例
- table control的修改/排序/删除功能实现实例
- 用C语言模拟实现一个通讯录,要求实现其添加、删除、修改、查找、显示和排序联系人信息的功能
- java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能
- java IO实现电脑搜索、删除功能的实例
- JS实现动态表格的添加,修改,删除功能(推荐)
- 双向循环链表简单的插入、删除、修改以及查找功能的实现
- js 简单实现表单数据的增添,单项删改,多项删除,修改以及全选功能
- datagrid的修改和删除功能的实现
- 手工实现GridView排序、删除、编辑、新增数据功能
- mybatis学习笔记-实现添加修改删除用户功能
- 同学录--利用二叉树存储结构实现建立、查找、新增、修改、删除等功能
- 封装链表库实现单链表:增加,删除,查询,修改,排序,逆转
- Android常用实例——实现修改用户头像功能
- JQuery实现带排序功能的权限选择实例
- c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)
- 实例:汽车(实现邮箱模样的删除功能)
- [Extjs6]随记 创建store 实现添加、修改、删除功能
- 使用javascript操作多选列表框,实现动态增加删除,左右移动,上下排序移动等功能。