ABAP数据字典和数据表的读取

原创 2016年05月31日 16:44:29

       ABAP数据字典的事务代码(TCODE):SE11,数据字典和SAP整个业务应用是整合的。
      本章主要介绍:实例建表,数据表维护程序,添加数据,建立域、数据元素和搜索帮助,逻辑数据库,数据表的读取。

相关概念

       通过本章的学习能清晰地了解ABAP数据字典与实际数据库之间的关系。数据字典对象由数据字段(Table Field)、数据元素(Data Element)、域(Domain)等组成。
     “域”描述一个字段类型和长度等信息,“数据元素”描述一个字段的用途。先定义域,再定义数据元素使用哪个域,最后定义一个表字段使用哪些数据元素。
      表类型:透明表(Transparent Table)、结构(Structure)、附加结构(Append Structure)、存储表(Pooled Table)、簇表(Cluster Table)、视图(Generated View Structure)。
      在ABAP应用中大量使用透明表和结构,其中:“透明表”在数据库中有对应的物理表;“结构”为若干个字段组合,在数据库不存在数据纪录。

实例建表

下面以实例说明透明表的建立。建立城市表、学校表、学生表,表关系都是一对多,数据结构如下:

        (1)城市表:YTJAYCITY,结构如下

字段名 数据类型 允许空值 主/外键 说明
YCT_ID INT NOT NULL (PK) 序号
YCT_NAME CHAR(30) NOT NULL   城市名称
YCT_COUNTRY CHAR(255)     国家名称

        (2)学校表:YTJAYSCHOOL,结构如下

字段名 数据类型 允许空值 主/外键 说明
YCT_ID INT NOT NULL (PK) 序号
YSH_ID INT NOT NULL (PK) 学校序号
YSH_NAME CHAR(30) NOT NULL   学校名称
YSH_ADDR CHAR(255)     地址

        (3)学生表:YTJAYSTUDENT,结构如下

字段名 数据类型 允许空值 主/外键 说明
YCT_ID INT NOT NULL (PK) 城市序号
YSH_ID INT NOT NULL (PK) 学校序号
YSTU_ID INT NOT NULL (PK) 学生序号
YSTU_NAME CHAR(30)     学生名称
YSTU_ADDR CHAR(255)     住址

输入TCODE:SE11,回车

输入数据库表,单击“创建”按钮

在属性页输入短文本、选择类型”A“(应用表),选择“X 允许通过标准表格维护工具维护”

选择“Fields”页面,单击按钮,直接输入数据类型和长度

点击“保存”按钮,弹出“创建对象目录条目”对话框,点击“本地对象”按钮

保存完成之后,点击“技术设置”,定义“数据类”、“大小范畴”

单击“返回”按钮,退回到字段编辑页面,单击激活按钮激活数据表。

然后依次建立YTJAYSCHOOL、YTJAYSTUDENT表。数据表建立完成后,可以登录数据库查阅建立的透明表。

注意:
(1)在SAP中建立的数据表会在数据库中创建;
(2)在数据库中直接建立的表不会在SAP中有数据字典;
(3)在SAP或数据库添加数据都能相互查阅到。
有了这样的概念,完全可以用其他语言读取数据库数据,做报表、开发等工作。

 

相关数据维护程序

由于在刚才建表时,选择了,因此能直接进行数据维护。

输入TCODE:SE16

输入表名

新增数据

点击如下“新增”按钮

输入完成后保存,在连续添加记录后,单击返回按钮回到上一屏

查询数据

点击如下“表内容”按钮

输入查询条件,点击“执行”按钮

查询结果如下:

删除数据

菜单“表条目”下,“全部删除”、“删除”按钮可以删除选中的纪录

修改数据

点击如下“更改”按钮,可以对选中的纪录进行编辑、修改操作

数据批量维护程序的生成及使用

打开表结构维护界面后(SE11),选择菜单“实用程序”-->“表格维护生成器”

输入函数组名称,选择一个权限组,选择维护类型“一步”,单击左上角“查找屏幕号”按钮

选择“建议屏幕号”

处理完成后,单击左上角“新建”按钮

弹出“修改对象目录条目”对话框,点击“保存”按钮,此时左下角如果弹出“请选择包”,则再次点击“保存”按钮

此时单击“本地对象”按钮,此时将会生成环境,有几秒的时间

此时回到主界面,输入“/nSM30”维护数据

输入表/视图名称,单击“维护”按钮

此时弹出对话框,确认

该界面可以对表格数据进行批量维护

建立域、数据元素和搜索帮助

本节介绍建立城市序号和城市名称的域和数据元素,并建立搜索帮助。搜索帮助是SAP系统中最常见的技术之一,是非常重要的。

建立域

 输入TCODE:SE11,选择“域”,输入域名称,单击“创建”按钮

输入域类型、域长度等信息后点击“保存”按钮

点击“本地对象”按钮,然后再点击“激活”按钮

同样方法再建立城市名称域,此处略。

建立数据元素

选择“数据类型”选项,输入名称后,单击“创建”

选择“Data element”类型

选择已经建立的域名

选择“Field Label”页面,输入描述长度和描述,单击“保存”按钮,再点击“本地对象”按钮,最后点击“激活”按钮

同样方法再建立城市名称数据元素,此处略。

修改表结构使用数据元素

选择YTJAYCITY数据表,点击“修改”按钮,进入结构维护界面

单击“数据元素”按钮,选择刚刚建立的数据元素,保存之后,再激活

同样方法再修改学校表

建立搜索帮助

打开数据元素YDAJAY_CITYID,输入“Search Help”名称后,保存

双击“Search Help”名称输入框,启动设计界面,点击“是”按钮

选择“基本索引帮助”

输入描述,选择城市表、城市序号和名称,其中城市序号为输入、输出字段,双击YCT_NAME,建立城市名称参数

返回上一界面,输入参数“YCT_ID”,保存并激活这个数据元素

再用SE16打开城市表,就可以通过“搜索帮助”选择城市

逻辑数据库

逻辑数据库是由具有一定关系的表组成,预选设定了读取数据的方法。

数据库读取

读取数据表是编程中最基本的技能,不同的数据库(Oracle,Sql Server,Sybase,DB2等)提供的SQL语法不完全相同。SAP提供了一套SQL语法(Open SQL),在SAP应用中能通过这一套SQL语法处理SAP支持的数据库。另外,SAP也提供Native SQL(本地的SQL语句),处理数据库本身的SQL语法。SAP的SQL语法和标准的SQL很接近,由SELECT、INSERT、DELETE、UPDATE等常用语法组成。

 

基础的读取数据表例子

将介绍数据库读取的几种方法和步骤:
(1)从数据表直接读取数据至工作区输出
(2)从数据表读取数据至内表,再从内表输出
(3)从内表逐行读取数据至工作区,从工作区输出

REPORT  YTEST20160527.
*定义工作区
DATA A_YTJAYCITY TYPE YTJAYCITY.
*定义内表,请注意有HEADER LINE
DATA TA_YTJAYCITY TYPE TABLE OF YTJAYCITY WITH HEADER LINE.
*分隔线
ULINE.
WRITE / '使用工作区'.
ULINE.
*将数据表逐行转移至工作区,只读首3行
SELECT * INTO CORRESPONDING FIELDS OF A_YTJAYCITY FROM YTJAYCITY UP TO 3 ROWS.
  WRITE: / A_YTJAYCITY-YCT_ID, A_YTJAYCITY-YCT_NAME, A_YTJAYCITY-YCT_COUNTRY.
ENDSELECT.
ULINE.
WRITE / '使用内表'.
ULINE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE TA_YTJAYCITY FROM YTJAYCITY UP TO 3 ROWS.
*从数据表读数据至内表,直接从内表输出
*如果TA_YTJAYCITY没有定义HEADER LINE,会出错
LOOP AT TA_YTJAYCITY.
  WRITE :/ TA_YTJAYCITY-YCT_ID,TA_YTJAYCITY-YCT_NAME,TA_YTJAYCITY-YCT_COUNTRY.
ENDLOOP.
ULINE.
WRITE / '将内表数据转移至工作区'.
ULINE.
LOOP AT TA_YTJAYCITY INTO A_YTJAYCITY.
  WRITE :/ A_YTJAYCITY-YCT_ID, A_YTJAYCITY-YCT_NAME, A_YTJAYCITY-YCT_COUNTRY.
ENDLOOP.


输出结果

使用PACKAGE SIZE读取数据

上面的例子中,使用了UP TO 3 ROWS语法读取前3行,但是不能继续读取数据。
使用PACKAGE SIZE可以一次读入几条记录,下面例子中有ENDSELECT语句,表示读取2条纪录后接着读取2条记录。

REPORT  YTEST20160527.
*定义内表有HEADER LINE
DATA WA_YTJAYCITY TYPE TABLE OF YTJAYCITY WITH HEADER LINE.
*以每次读取2条纪录,直到读取所有数据
SELECT * INTO TABLE WA_YTJAYCITY FROM YTJAYCITY PACKAGE SIZE 2.
*输出内表纪录
  LOOP AT WA_YTJAYCITY.
    WRITE :/ WA_YTJAYCITY-YCT_ID, WA_YTJAYCITY-YCT_NAME, WA_YTJAYCITY-YCT_COUNTRY.
  ENDLOOP.
*输出2条后输出一条横线
  ULINE.
ENDSELECT.

输出结果



内连接和外连接

从两个或两个以上数据表直接读取数据时,需要使用内表连接和外连接语句。

REPORT  YTEST20160527.
*定义结构
DATA:BEGIN OF SCHOOL,
  CITY TYPE YTJAYCITY-YCT_NAME,
  NO TYPE YTJAYSCHOOL-YSH_ID,
  NAME TYPE YTJAYSCHOOL-YSH_NAME,
  ADDRESS TYPE YTJAYSCHOOL-YSH_ADDR,
END OF SCHOOL.
*工作区
DATA SCHOOL1 LIKE SCHOOL.
*关联数据表,读取前3条记录,写入工作区,并输出
SELECT YTJAYCITY~YCT_NAME YTJAYSCHOOL~YSH_ID YTJAYSCHOOL~YSH_NAME YTJAYSCHOOL~YSH_ADDR INTO SCHOOL1
  FROM YTJAYSCHOOL
  INNER JOIN YTJAYCITY ON YTJAYSCHOOL~YCT_ID = YTJAYCITY~YCT_ID
  UP TO 3 ROWS.
  WRITE: / SCHOOL1-CITY, SCHOOL1-NO, SCHOOL1-NAME, SCHOOL1-ADDRESS.
ENDSELECT.

输出结果


版权声明:本文为博主原创文章,未经博主允许不得转载。

SAP 数据字典 -- 数据库表

SAP 数据字典 -- 数据库表

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ABAP数据字典和数据表的读取

ABAP数据字典的事务代码(TCODE):SE11,数据字典和SAP整个业务应用是整合的。       本章主要介绍:实例建表,数据表维护程序,添加数据,建立域、数据元素和搜索帮助,逻辑数据库,数据...

SAP中查找业务应用使用的数据表

在ABAP编程时,很大的工作量是查找模块中使用的是哪个数据表的哪个字段,这是最基础也是最重要的工作之一,本章介绍以下两种方法: (1)透明表可以通过帮助直接查找表和字段 (2)结构通过SQL跟踪(ST...

SAP从视图获得数据

DATA:itab like TABLE OF V023 with header line. CALL FUNCTION 'VIEW_GET_DATA'      EXPORTING    ...

SAP中ABAP简易实现选择屏幕或者普通屏幕的数据显示

SAP 的ABAP编程,有关于普通屏幕的简单案例。把数据从透明表取出放入内表,然后在新建的普通屏幕上显示这些数据的简单过程。...

SAP接口编程-RFC系列07 : 通用的数据库表读取

实现通用的数据库表读取功能。主要说明函数调用后,VBA如何处理这些数据并在Excel中显示。...

SAP ABAP SD常用数据库表

SD常用数据库表 Table Name Description KNA1 客户主数据(一般数据层) KNB1 客户主数据(公司代码层) KNMT Cus...

一套通过c#-sap-rfc 完整处理内表输入输出并将数据保存至SAP自建表中的程序

研究了3天c#接口处理sap接口,给自己提出一个课题:如何把外部程序提取的数据通过内表保存到SAP的数据表中?赶紧测试,效果立现,请看源代码. 具备条件: sap vs2010 ok开始! ...
  • liheao
  • liheao
  • 2016年01月14日 09:31
  • 1445

如何导出SAP的数据表字段和字段描述

如何导出SAP的数据表字段 1. 在command line 输入SE15,回车  2. 然后进入菜单ABAP DictionaryàFieldsàTable Fields.  3....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ABAP数据字典和数据表的读取
举报原因:
原因补充:

(最多只允许输入30个字)