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

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.

输出结果

时间: 2024-10-10 09:27:22

ABAP数据字典和数据表的读取的相关文章

ABAP数据表的操作

这几天对于数据标的操作表较多,自己从网上找资料和自己动手操作总结了一些数据表的增删改查操作,希望对一些初学者有所帮助,仅供参考. 开源的数据库操作都离不开INSERT.UPDATE.MODIFY和DELETE语句.其中当SY-DBCNT返回为0,则表示操作成功,此外还将返回实际操作的数据行数.需要指明的是Open SQL本身并不进行操作权限的检查,若需要进行设定,则要在系统中创建授权对象. 一.INSERT语句Open SQL中的INSERT语句用于向数据库中插入新条目.1.插入单行数据:dbt

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

PHP生成MySQL数据字典 数据表结构

<?php /** * 生成mysql数据字典 */ // 配置数据库 $database = array(); $database['DB_HOST'] = '127.0.0.1'; $database['DB_NAME'] = 'cqhshop'; $database['DB_USER'] = 'root'; $database['DB_PWD'] = '123456'; $mysql_conn = @mysql_connect("{$database['DB_HOST']}"

ABAP 数据字典中的参考表和参考字段的作用

     ABAP数据字典中的参考表和参考字段的作用 大家最初在SE11中创建表和结构的时候都会遇到一个问题,如果设定了某个字段为QUAN或者CURR类型,也就是数量或金额的时候,总会要求输入一个参考表... 大家最初在 SE11 中创建表和结构的时候都会遇到一个问题,如果设定了某个字段为 QUAN 或者 CURR 类型,也就是数量或金额的时候,总会要求输入一个参考表和参考字段,它是做什么用的呢? 这要从数字的本质说起,大家都知道一句话“数字会说话”,但是,商业数字不是代数,一个没有没有单位的商

R语言读取Hive数据表

R通过RJDBC包连接Hive 目前Hive集群主要在济阳,我们的权限是可以通过跳板机来访问 HiveServer, 将Hive 中的批量数据读入R环境,并进行后续的模型和算法运算. 1. 登录跳板机后需要首先在Linux下进行配置 从root权限切换到bzsys用户,才能够通过验证读取Hive.首先需要配置Hadoop的临时环境变量CLASSPATH路径 su bzsys export CLASSPATH=$CLASSPATH:/etc/hadoop/conf 2. 下载并安装RJDBC包 L

R语言读取MySQL数据表

1.R中安装RODBC包 install.packages("RODBC") 2.在Windows系统下安装MySQL的ODBC驱动 注意区分32位和64位版本: http://dev.mysql.com/downloads/connector/odbc 3.ODBC的系统配置 在Windows操作系统下:控制面板->管理工具->数据源(ODBC)->双击->添加->选中mysql ODBC driver一项 填写:data source name 一项填

ABAP根据输入的表名动态生成上传TXT数据的代码

开发技术: 1.文本文件上载技术 2.动态程序代码生成技术 3.ABAP动态程序执行技术 4.TXT文本文件对应用Table字段编辑技术 注意事项: 文件文件编辑过程中时间日期格式为 20060201 120000 表示 2006.02.01 12:00:00 文本文件中不能包含除字符,数字之外的其他特殊符号.假如Table中对应的字段数据为空时,在编辑数据时也对应该列为空. 程序代码:如下 *&--------------------------------------------------

ABAP根据输入的表名动态生成上传EXCEL数据的代码

开发技术: 1.文本文件上载技术 2.动态程序代码生成技术 3.ABAP动态程序执行技术 4.TXT文本文件对应用Table字段编辑技术 注意事项: 文件文件编辑过程中时间日期格式为 20060201 120000 表示 2006.02.01 12:00:00 文本文件中不能包含除字符,数字之外的其他特殊符号.假如Table中对应的字段数据为空时,在编辑数据时也对应该列为空. EXCEL 文件必须带表头. 程序代码:如下 *&-----------------------------------

python openpyxl模块实现excel的读取,新表创建及原数据表追加新数据

当实际工作需要把excel表的数据读取出来,或者把一些统计数据写入excel表中时,一个设计丰富,文档便于寻找的模块就会显得特别的有吸引力,本文对openpyxl模块的一些常见用法做一些记录,方便工作中查询(好记性不如烂笔头) author:he    qq:760863706    python:3.5    date:2018-9-14 1:安装openpyxl pip install openpyxl 1 2:excel表读取数据(.xlsx) import openpyxlfilepat