`

ABAP中的Table Control编程(1)

阅读更多
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑。
简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通屏幕元素的区别。
如果我们对一个Table Control定义其内表为itab,工作区域为wa。那么在PBO中,系统将逐一取itab的某行到wa,然后将wa的内容转换成屏幕元素,即Table Control的一行,如此反复。
换句话说,Table Control的每一行是跟wa交互的,与itab没有直接的关联。
反过来在PAI中,系统将根据Table Control的录入情况,逐行取数据到wa(前提是该行的内容不为空),然后我们即可根据wa的内容往itab修改或添加一行记录。

1. 如何设置TC的行数
如果我们定义了TC的名称为tc_0100,则TC向导将生成如下一行代码:
    CONTROLS: tc_0100 TYPE TABLEVIEW USING SCREEN 0100.
调试可知,tc_0100是个Deep Structure,拥有很多属性,它实现了对表格控件的所有属性的封装。
这里我们先介绍属性:lines。lines代表该表控件一共有多少行可供用户查看或输入。
如果是查看状态,则一般可为其赋值LINES( itab )。如果是编辑状态,为了允许用户添加条目,则必须大于itab的行数。
而如果TC的该属性小于内表行数呢?则只有内表中的前面几行可以显示,后面的内容将不会出现在SCREEN中,当然实际中我们不会这么操作。

2. 如何设置TC中某单元格编辑与否
对于普通的屏幕元素,我们都很清楚,用LOOP AT SCREEN可以实现。对于TC,当然也是一样的。
TC向导会生成如下的Screen Flow Logic:
  LOOP AT itab INTO wa WITH CONTROL tc_0100 CURSOR tc_0100-current_line.
    MODULE tc_0100_change_field_attr.
  ENDLOOP.
这是什么意思呢?事实上,如果我们设置了tc_0100-lines = 50,那么该Module将被执行50次。
所以,只要在tc_0100_change_field_attr中添加LOOP AT SCREEN即可,如下:

MODULE tc_0100_change_field_attr OUTPUT.
  LOOP AT SCREEN.
    CASE screen-name.
      WHEN 'ITAB-KEYFELD'.
        IF tc_0100-current_line > db_num.
          screen-input = '1'.
        ELSE.
          screen-input = '0'.
        ENDIF.
      WHEN OTHERS.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.
ENDMODULE.

3. 如何更新我们内表的数据
上面已经说过,在PAI处理过程中,系统将根据逐行读取TC的数据,填充到wa中,而我们的itab与屏幕元素其实没有直接的关联,所以简单而言,可以如下编写代码:
  MODULE tc_0100_modify INPUT.
    IF tc_0100-current_line <= LINES( itab ).
      MODIFY itab FROM wa INDEX tc_0100-current_line.
    ELSE.
      APPEND wa TO itab.
    ENDIF.
  ENDMODULE.

前面说过,如果tc_0100-lines = 50,那么Module tc_0100_change_field_attr将被执行50次。
那么这里的Module tc_0100_modify 是不是也是50次呢?答案是<=50次,这是因为,如果TC中某行完全为空的话,系统是不可能调用tc_0100_modify的,换句话说,此时TC中的该行将视同不存在。

原文地址:http://blogold.chinaunix.net/u2/86821/showart_2010820.html

分享到:
评论

相关推荐

    ABAP中的Table_Control编程

    ### ABAP中的Table_Control编程详解 #### 一、Table Control概念及作用 在SAP的ABAP编程环境中,Table Control(简称TC)是一种极其重要的屏幕控件,被广泛应用于多种场景下,尤其适用于处理和展示多行数据。通过...

    ABAP中的Table Control编程

    ABAP中的Table Control编程 Table Control是SAP系统中Screen中的一个常用控件,可以实现对多行数据的编辑。它是一组屏幕元素在Screen上的重复出现,这与普通屏幕元素的区别。Table Control的每一行是跟工作区域wa...

    第07章 表控制Table Control设计.rar_ABAP实战_Table_表控制Table Control设计

    在ABAP编程中,表控制(Table Control)是一种强大的用户界面元素,用于显示和编辑数据库或内存中的数据。本章将深入探讨如何设计和使用表控制,包括通过向导创建和非向导式方法,以及如何实现数据表的维护和内表...

    从实例学Abap编程

    01_ABAP开发环境和总体介绍.pdf 02_创建HELLO WORLD程序.pdf 03_ABAP语法示例.pdf 04_数据字典和数据表的读取.pdf 05_标准列表和选择屏幕.pdf 06_实战屏幕SCREEN设计.pdf ...14_从实例学SAP ABAP编程13-19章.pdf

    实战SAP程序开发——从实例学SAP ABAP编程

    在SAP系统中,ABAP(Advanced Business Application Programming)是一种重要的编程语言,用于开发企业级的应用程序。本书《实战SAP程序开发——从实例学SAP ABAP编程》的前12章,深入浅出地介绍了SAP ABAP的基础...

    从实例学SAP ABAP编程.7z

    Table Control是ABAP中的表格显示控件,用于动态显示数据。学习如何创建和配置Table Control,包括列定义、行处理、事件处理等,以及如何与后台数据进行交互。 5. **屏幕SCREEN设计.pdf**: 屏幕设计是SAP UI的...

    SAP Table Control Example

    在SAP系统中,表控件(Table Control)是一种用于在用户界面中展示数据的高级技术,它在ABAP编程环境中扮演着重要角色。表控件不仅提供了类似于桌面应用程序的表格视图,还具备一系列增强的功能,使得数据的呈现更加...

    从实例学SAP_ABAP编程_清晰扫描版

    ### SAP_ABAP编程知识点概述 #### 一、ABAP开发环境 ABAP(Advanced Business Application Programming),即高级商业应用编程语言,是SAP系统的主要编程语言。本章节介绍了三种主要的ABAP开发环境: 1. **SAP正式...

    ABAP源代码-初学者参考 abap source codes.rar

    2. **S_TABLE_CONTROL.txt**:这可能是一个关于ABAP中的表格控制(Table Control)的示例,用于显示和编辑表格数据。表格控制允许用户在GUI上与表格交互,包括排序、过滤和选择。学习点可能包括:使用TABLE CONTROL...

    绝版-实战SAP程序开发—从实例学SAP ABAP编程.zip

    深入探讨SAP ABAP中的Form编程,包括内部表处理、逻辑控制和与屏幕交互,是SAP报表开发的重要部分。 10. **第十三章 程序权限设定**: 讲解如何在SAP系统中进行权限分配和安全管理,确保程序符合企业的安全策略,...

    \实战SAP程序开发——从实例学SAP ABAP编程7-12章

    这六个章节围绕SAP系统中ABAP编程的核心技术展开,包括表控制、Tree Control、Smart Forms、ALV控件以及Form设计和数据表查找等关键点。以下是各章节详细的知识点: 第七章:表控制(Table Control)设计 1. 表控制...

    sap abap编程基础知识

    SAP ABAP(Advanced Business Application Programming)是SAP R/3系统中的主要开发工具,它是一种第四代编程语言(4GL),与Visual Basic和JAVA有相似之处,但与传统的C、PASCAL等第三代语言在结构上有显著差异。...

    table control Dialog Programming

    在IT开发领域,特别是在ABAP(Advanced Business Application Programming)环境下进行SAP GUI应用开发时,表格控件(Table Control)是一种非常重要的用户界面元素。它允许开发者以结构化的方式展示数据,并支持...

    实战ABAP程序开发

    1. **第一章 ABAP开发环境和总体介绍**:这部分内容会引导初学者了解ABAP的开发环境,包括SE80事务码的使用,如何创建和管理源代码,以及如何在SAP系统中调试和测试程序。理解开发环境是学习任何编程语言的第一步,...

    ABAP ALV面向对象方法

    随着面向对象编程在ABAP中的引入,ALV也得到了增强,支持更高级的功能和更简洁的代码编写方式。本文档旨在全面介绍ALV面向对象的写法,为读者提供一个深入理解ABAP面向对象方法的基础。 #### 重要概念与术语 1. **...

    ABAP源代码参考(适合初学者)

    2. **S_TABLE_CONTROL.txt**:表控制是ABAP中的一个重要概念,用于在用户界面中显示和编辑表格数据,包括排序、过滤和分页等功能。 3. **S_GUI_CONTROLS.txt**:GUI(图形用户界面)控件是指在SAP应用中显示的交互...

    abap小结.docx

    SAP ABAP(Advanced Business Application Programming)是SAP系统中的一种编程语言,用于开发业务应用程序。以下是对文档中提到的知识点的详细解释: 1. **系统字段篇** - `SY-SUBRC`:执行语句后的返回值,0...

    ABAP面试大全.doc

    DIALOG 是 ABAP 中一个重要的概念,包括 DIALOG 中的几个事件、TABLE CONTROL 中实现选中一行或多行的效果、DIALOG 开发的常用控件等。DIALOG 是 ABAP 中一个基本概念,用于控制用户界面。 BDC BDC 是 ABAP 中一个...

    abap实例教材pdf文档,最清晰的版本

    ABAP(Advanced Business Application Programming)是SAP公司的编程语言,主要应用于开发SAP R/3系统中的业务逻辑。本教程是一份详细的ABAP实例教材,包含多个关键领域的深入讲解,如SMARTFORMS、BDC(Batch Data ...

Global site tag (gtag.js) - Google Analytics