开源的数据库 *** 作都离不开INSERT、UPDATE、MODIFY和DELETE语句。其中当SY-DBCNT返回为0,则表示 *** 作成功,此外还将返回实际 *** 作的数据行数。需要指明的是Open SQL本身并不进行 *** 作权限的检查,若需要进行设定,则要在系统中创建授权对象。
一.INSERT语句
Open SQL中的INSERT语句用于向数据库中插入新条目。
1.插入单行数据:dbtab是内表,wa是工作区。
INSERT INTO dbtab VALUES wa.
INSERT INTO dbtab FROM wa.
内表:Internal memory table 内存中的表,是外设(屏幕、磁盘,打印机等)和数据库表数据交换的中介。
wa为工作区,是与数据库具有相同结构的数据对象,一般直接基于数据库结构声明。该语句也可以将数据插入视图中,首先该视图所有字段必须来自同一个数据库表,而且在数据字典中的maintenance status属性必须设定为read and change
注:如果相同表关键字的数据条目已经存在,则不能重新插入,只能对非关键字进行更改(UPDATE,MODIFY)
2.插入多行数据:datab是内表,itab是表
INSERT dbtab FROM TABLES itab.
其中itab是内表,包含希望插入的数据条目。
注:内表应与数据库的行结构一致。
所有条目成功插入,则SY-SUBRC返回0
使用ACCEPTING DUPLICATE可避免该错误。
INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.
ACCEPTING DUPLICATE的效果是:若出现关键字相同,返回4,并跳过其再更新所有的其他。
二.UPDATE语句
1.更新单行数据:
UPDATE dbtab SET f1=g1 ... fn=gn WHERE <fix_key>.
f表组建字段名,g为新设定的值,WHERE为确保只更新单行。
注:除f=g外还可 f=f+g、f=f-g
通过工作区更改单行数据:
UPDATE dbtab FROM wa.
2.更新多行数据:
UPDATE dbtab SET f1=g1 ... fi=gi [WHERE <conditions>].
也可以使用SET和WHERE子句同时更新多行数据值;此外不需要在WHERE中限定所有表关键字,该语句本身将更新所有满足条件的数据条目,若不是用WHERE子句,则将更新当前数据集团中的所有数据行。
注:如果至少有一行数据被更新SY-BUBRC返回0,否则返回4。
还可通过内表来更新多行数据:
UPDATE target FROM TABLE itab.
三.MODIFY语句
MODIFY语句是SAP的Open SQL中专有语句,该语句相当于INSERT和UPDATE语句的结合。引入期的原因是当更新数据库 *** 作时,并不确知数据库中是否遗憾相应的数据行。
1.添加或更新单行:
MODIFY dbtab FROM wa.
注: *** 作后SY-SUBRC恒为0;SY-DBCNT为1
2.添加或更新多行:
MODIFY dbtab FROM TABLE itab.
内表itab将覆盖数据库表中具有相同主关键字的条目。
注:SY-SUBRC恒为0;SY-DBCNT返回行数
四.DELETE语句
1.删除单行数据:
DELETE FROM dbtab WHERE <fix_key>.
或 DELETE dbtab FROM wa.
其中WHERE必须指明全部表关键字段的值;wa为工作区,若不去dbtab匹配 *** 作将失败。
2.删除多行数据:
DELETE FROM dbtab WHERE <condition>.
DELETE dbtab[CLIENT SPECIFIED] FROM TABLE itab.
注:返回值同MODIFY
3.删除多行数据:
两种形式:1).通过内表删除多行数据条目的过程中将内表置为空;2).使用WHERE FIELD LIKE '%'。
资料来源:网页链接
要看是什么表,表属性里有控制的,有的允许直接写数据,有的不允许,需要通过制定事务去维护。如果是有很多关联的表,直接写表会导致数据出错的,一般不建议。如果是自定义的表,可以试试用SE16+debug的非常规方式去改。1)SE16,输入需要编辑的表格,回车继续;
2)在显示表数据清单的屏幕,在Tcode栏中输入‘/h’,回车,激活调试;
3)双击需要修改的列(若添加,任意行即可),进入调试窗口;
4) 在程序 SAPLSETB / LSETBF01 的第25行的if处设置断点
fresh exclude_tab.
if code = 'SHOW'.
F8执行,在断点处,将code的值改为“EDIT”(当然也可以改为“INSR”、“DELE”)
终于知道如何查看数据源来源了,之前困扰了很久,一直想知道SAP BW中DATASOURCE是如何获取数据。事实上DATASOURCE都是根据数据结构(ExtractStruct.)所定义的字段获取字段。但Structure是SAP本身构建表或视图或其他等结构的基础,本身并不会有数据存储(其实有点类似Oracle中的表结构【仅仅只有表结构,没有数据】)。所以DATASOURCE是通过其他方法,按所对应的Structure来提取数据。所以想知道DATASOURCE是怎么获取数据的,其实可以通过RSA2这个T-CODE进入(注意对应的客户端,可以选中数据源右击“在源系统中显示数据源”转到对应的客户端),然后输入需要显示的DATASOURCE NAME,点击"提取"页面,就可以看到该DATASOURCE得"提取方法"、"提取器"、以及"提取结构"。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)