实现了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例子的更多相关文章

  1. ABAP table control例子

    [转自]http://blog.csdn.net/lhx20/article/details/3039909Table control用于在screen上以表格的形式显示数据,在table contr ...

  2. ABAP 表格控制(Table Control)和步循环

    表格控制(Table Control)和步循环     1.两个标准Demo: SAPMTZ60,SAPMTZ61 2.简介 3.建立Table Control程序的基本流程 4.使用步循环 5.表格 ...

  3. SAP ABAP编程 Table Control动态隐藏列

    在SAP DIALOG设计中,有时候须要动态的隐藏某些列,以下是方法. ***数据定义 CONTROLS: table_control TYPE TABLEVIEW USING SCREEN 0100 ...

  4. ABAP中的Table Control编程

          SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑.       简单来说,Table Control是一组屏幕元素在Screen上的重 ...

  5. ABAP Table Control

    SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑.  简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通 ...

  6. 我教女朋友学编程html系列(5) html中table的用法和例子

    女朋友不是学计算机的,但是现在从事计算机行业,做技术支持,她想学习编程,因此我打算每天教她一点点,日积月累,带她学习编程,如果其他初学者感兴趣,可以跟着学. 为了将table介绍的简单.生动,具有实战 ...

  7. abap table control里面各种属性和事件的写法

    SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通屏 ...

  8. 【ABAP系列】SAP ABAP中ALV使用HTML的例子

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中ALV使用HT ...

  9. ABAP中使用浏览器打开网页

    在SAP ABAP中可以在Screen中嵌入Html control打开网页,也可以通过调用本地的IE浏览器打开. 1.在Screen中嵌入Html control的例子,在系统中有,se38:SAP ...

随机推荐

  1. 架构漫谈:UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

    这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...

  2. cocos2d-x游戏开发系列教程-中国象棋02-main函数和欢迎页面

    之前两个博客讲述了象棋的规格和工程文件之后,我们继续深入的从代码开始学习cocos2dx 首先从程序入口main函数开始 main函数 int APIENTRY _tWinMain(HINSTANCE ...

  3. Study notes for Sparse Coding

    Sparse Coding Sparse coding is a class of unsupervised methods for learning sets of over-complete ba ...

  4. POJ训练计划2299_Ultra-QuickSort(归并排序求逆序数)

    Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 39279   Accepted: 14163 ...

  5. Eclipse一个打开文件夹目录插件——Open In Explorer

    MyEclipse开发的都常用到其中一个"Open In Explorer"的小插件,可以直接在Windows资源管理器中打开选中文件所在的目录,工具虽小,但我们经常需要用到它 由 ...

  6. Route@简单应用

    路由的简单应用(生成URL) 这篇文章讲的核心问题是利用路由系统生成URL但是我们,但是我们不是仅仅生成URL,我们的超链接的href属性中,我们在跳转的时候,都需要URL,我们要将的就是在这些实际情 ...

  7. Python 获取时间戳

    Python 获取时间通过 time 模块 如下代码,是通过获取当前的时间,按照格式输出 Python默认获取当前的时间返回的都是时间的元组,下面是元组的,字符串时间的一个转换输出 # -*- cod ...

  8. .net版Git Server --- bonobo

    官网地址: https://bonobogitserver.com/ Demo: http://demo.bonobogitserver.com/Home/LogOn  登入admin:admin C ...

  9. ASP.NET - 锚点跳转,用于回到顶部

    <a name ="top"></a> <a href ="#top">回到顶部</a> 第一行代码写在顶部,第 ...

  10. Exchange Server 2013传输规则之全新附件限制