文章分类 -  ABAP-SAP-Database

摘要:ABAP-数据库操作OPENSQLSELECT总结OPEN SQL 是使用ABAP语言操作数据库的一种语句,由于OPEN SQL操作的数据库表是已经在ABAP数据字典中创建的,所以使用OPEN SQL操作数据库不用关心系统使用的数据库类型。语句用法SELECT:SELECTresultFROMsourceINTO|APPENDINGtarget[[FOR ALL ENTRIES IN itab] WHEREsql_cond][GROUP BYgroup] [HAVINGgroup_cond][ORDER BYsort_key]....[ENDSELECT].1.result:选择的结果。确定要 阅读全文
posted @ 2012-01-31 16:35 VerySky 阅读(16114) 评论(0) 推荐(0)
摘要:ABAP程序优化心得http://blog.csdn.net/lbxp521/article/details/6710887影响ABAP程序的运行效率主要是在程序中大量数据的取得,如果取数不得方法,很影响报表的运行效率,所有优化ABAP程序主要是优化数据取数的方法。下面这几点可以有效的提高取数的效率,从而来提高程序的运行效率。1. 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础 阅读全文
posted @ 2011-12-28 09:40 VerySky 阅读(3805) 评论(0) 推荐(2)
摘要:原文地址:ABAP程序运行效率作者:香樟木程序的效率是每个程序员都应该重视的,无论您是采用哪一种语言进行开发. 程序有时候越短,并不一定越快,有时候程序很多代码,但不一定会很慢. 性能是一把双刃剑, 获得时间效率的同时, 牺牲的是空间的开销. 这里提供一些建议以提高你的程序运行速度和减低系统荷载。首先是尽量减少I/O操作,类似对硬盘的读写的I/O操作是最耗费时间的, 比如读写数据库。以下是减少I/O操作的例子:1, 减少数据库DB的读写操作, 当使用VIEW视图的时候, 当被视图join的table有数据更新操作的时候, 同时系统也会更新到这个view里面, 使得它们之间的数据一样, 所以使用 阅读全文
posted @ 2011-12-06 09:28 VerySky 阅读(526) 评论(0) 推荐(0)
摘要:在ABAP中用for all entries in代替inner join取数据一般都会用到多个表,inner join是非常常用的操作,但因为比较耗数据库资源,所以很多时间不推荐。大家也知道,SAP这东西,应用服务器可以扩展为多个,但数据库服务器只有一个,所以必须少消耗DB资源。据boss说,一般多对多或关联很多表(例如3个以上)时就不用inner join(前者是因为难搞清关系,不太清晰),应改成for all entries in。header-item或多对一关系就可以inner join(即另一张表的where语句上所有的key都唯一确定了)。下面给个例子(老师写的代码,稍微改动了一 阅读全文
posted @ 2011-12-05 18:16 VerySky 阅读(4313) 评论(0) 推荐(0)
摘要:数据表:STPO_API02描述_zh;BOM 项目的 API 结构: 所有字段描述_en:API Structure for BOM Item: All Fields表类别(Category):INTTAB-结构(Structure)表字段信息:字段位置Position字段名FIELD字段描述-ZH DESC字段描述-EN DESC激活状态Status字段类型DataType字段长度Length包含的表名NAME数据元素 Data Element备注0001.INCLUDENo Description-triggerNo Description-triggerA000000STPO_API0 阅读全文
posted @ 2011-10-26 13:40 VerySky 阅读(7435) 评论(0) 推荐(0)
摘要:【转http://blog.pconline.com.cn/article/265316.html】ABAP数据库操作(学习SAP程序设计的整理-数据库)1、abap语言使用的数据库语言:open sql ,Native sql(特定数据库自身sql)2、使用OPen SQL注意的原则:a、尽可能减少满足条件的数据条目数量。b、减少数据的传输量,以减少网络流量。c、减少访问的数据库表量。d、减少查询难度,可以通过整理选择标准来实现。e、减少数据库负载。3、使用Nativesql有两个前提:a、知道使用数据库的类型。b、了解该数据库的SQL语法。4、ABAP的数据定义由数据字典创建。5、提取数据 阅读全文
posted @ 2011-10-19 18:06 VerySky 阅读(6314) 评论(0) 推荐(1)
摘要:SAP删除数据表中的数据SAP中删除数据库表中数据的方法有很多,今天给它来个小结。方法一:ABAP语言中OPEN SQL 有从数据库中删除记录的语句。故可采用此方法来编写程序删除数据表中的记录。此方法不够直接,存在风险,对有些不易取到的数据,可能不太有效。方法二:使用事务码-SE16N;输入自己要修改的表名,回车,然后输入事务码-&sap_edit来激活编辑状态。回车,点击运行,即可进行修改。此方法好像不能修改主键,所以使用范围比较小。方法三:使用事务码-SE16;使用事务码SE38打开程序LSETBF01,查找字符‘SHOW’设置断点。使用事务码SE16打开要修改的数据表。输入事务码 阅读全文
posted @ 2011-10-08 22:54 VerySky 阅读(4210) 评论(0) 推荐(0)
摘要:select * from Awhere id in(select id from B)以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录.它的查询过程类似于以下过程List resultSet=[];Array A=(select * from A);Array B=(select id from B);for(int i=0;i<A.length;i++) { for(int j=0;j<B.length;j++) { if(A[i].id== 阅读全文
posted @ 2011-09-19 16:06 VerySky 阅读(470) 评论(0) 推荐(0)
摘要:FOR ALL ENTRIES IN itab WHERE cond使用注意事项:* Suppost FTAB is filled as follows:** CARRID CONNID* --------------* LH 2415* SQ 0026* LH 04001.SELECT CARRID CONNID PRICEFROM SFLIGHTINTO TABLE IT_PRICEFOR ALL ENTRIES IN IT_SFLIGHTWHERE CARRID = IT_SFLIGHT-CARRIDAND CONNID = IT_SFLIGHT-CONNID'.在 WHERE 阅读全文
posted @ 2011-09-19 10:52 VerySky 阅读(2580) 评论(0) 推荐(0)
摘要:Select语句中使用FOR ALL ENTRIES IN需要注意的问题(转帖)一、Select语句中使用FOR ALL ENTRIES IN需要注意的问题在ABAP编程中,使用for all entries in 是必不可少的语句,相信大家都使用过,例如:data: begin of ig_bseg occurs 0, werks like bseg-werks, belnr like bseg-belnr, gjahr like bseg-gjahr, dmbtr like bseg-dmbtr, end of ig_mseg.if not ig_bkpf[] is initial. se 阅读全文
posted @ 2011-09-18 02:13 VerySky 阅读(527) 评论(0) 推荐(0)
摘要:【转】SQL查询优化 LEFT JOIN和INNER JOINSQL查询优化 LEFT JOIN和INNER JOIN1,连接了八个数据库表,而且全部使用LEFT JOIN,如下所示:Resource_Resources ALEFT JOIN Resource_Clients B ON A.ResourceId = B.ResourceIdLEFT JOIN Resource_Files C on B.ClientId=C.ClientIdLEFT JOIN Resource_ClientsModels D ON B.ClientId = D.ClientIdLEFT JOIN Mobile_ 阅读全文
posted @ 2011-09-18 01:55 VerySky 阅读(25338) 评论(0) 推荐(3)
摘要:INNER / LEFT / RIGHT / CROSS / FULL JOIN通用测试表-- 学生表CREATE TABLE student ( SNO INT, SNAME VARCHAR(10), ICNO INT);-- 食堂IC卡表CREATE TABLE IC ( ICNO INT, ICNAME VARCHAR(10), ICMoney INT);INSERT INTO student SELECT 1, '张三', 1 UNION ALL SELECT 2, '李四', 2 UNION ALL SELECT 3, '王五', NU 阅读全文
posted @ 2011-09-18 01:54 VerySky 阅读(344) 评论(0) 推荐(0)
摘要:1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。2 .无论怎么连接,都可以用join子句,但是连接同一个表的时候,注意要定义别名,否则产生错误!a>inner join:理解为“有效连接”,两张表中都有的数据才会显示left join:理解为“有左显示”,比如on a.field=b. 阅读全文
posted @ 2011-09-18 01:54 VerySky 阅读(13244) 评论(2) 推荐(3)
摘要:善用SE30分析优化abap代码(转载一流的窝 )首先需要使用T-CODE:SE30对程序执行时间分析,找出程序慢的部份,执行完程序可以区分三个阶段的执行时间:ABAP、Database、System,这三个部份对效能的优先级为Database -> System -> ABAP要依序排除程序这些部份的问题。SE30使用方法:点左上提示技巧,可以查看SAP所提供的一些效率比较。输入事务代码、程序名称、功能模块名称,点Execute,执行程序,执行完程序以后,点击左下角Analyze,可以查看程序执行效率,根据图形对程序的执行进行分析,点左上角,可以查看详细的每条语句的执行效率,可以 阅读全文
posted @ 2011-09-18 01:32 VerySky 阅读(1581) 评论(0) 推荐(0)
摘要:SAP删除数据表中的数据SAP中删除数据库表中数据的方法有很多,今天给它来个小结。方法一:ABAP语言中OPEN SQL 有从数据库中删除记录的语句。故可采用此方法来编写程序删除数据表中的记录。此方法不够直接,存在风险,对有些不易取到的数据,可能不太有效。方法二:使用事务码-SE16N;输入自己要修改的表名,回车,然后输入事务码-&sap_edit来激活编辑状态。回车,点击运行,即可进行修改。此方法好像不能修改主键,所以使用范围比较小。方法三:使用事务码-SE16;使用事务码SE38打开程序LSETBF01,查找字符‘SHOW’设置断点。使用事务码SE16打开要修改的数据表。输入事务码 阅读全文
posted @ 2011-09-16 11:19 VerySky 阅读(936) 评论(0) 推荐(0)
摘要:在SAP BW中使用ABAP文章提到一些优化查询的方法,记录一下前言本文的目的是讲述如何在BW中使用ABAP编程。在每一个项目中,正确使用ABAP编程会对正确的业务建模起到积极作用。在设计和蓝图阶段,一个核心的功能流程是类比于如何在BW中完成类似于R3中的业务流程。SAP提供了多种路径来实施这样的业务流程。本文就会讲述哪里、如何在BW中进行ABAP编程。同时,也会给出一些基本的SAP推荐,对于如何改善ABAP代码的执行。文中的例子会包括R3数据源的变换,创建通用的R3数据抽取器。在BW中,大部分对象都是内部关联的,我们可以在多个目标数据中共享数据。因此,我们需要知道我们是如何处理数据、更新记录 阅读全文
posted @ 2011-09-14 09:18 VerySky 阅读(1510) 评论(0) 推荐(1)
摘要:在应用程序里更新数据库在应用程序里更新数据库http://blog.chinaunix.net/u2/66669/showart_1790849.html一,直接更新如果是在屏幕程序里执行的数据库更新,你必须把所有的数据库更新动作绑在一起在一个屏幕(一般是最后一个屏幕)里进行处理。因为屏幕之间切换(分散在各个屏幕可能会造成数据的不一致性)时会触发隐式的数据提交动作,只有这样做才能保证数据库的改变符合all or nothing的原则。如果是在应用程序中进行的数据库更新,程序要设置和解开锁。一般步骤:1,锁定数据2,读取数据3,在数据库中更新数据4,解开锁定的数据虽然说程序退出的时候会自动解开程 阅读全文
posted @ 2011-09-08 14:53 VerySky 阅读(648) 评论(0) 推荐(0)
摘要:使用特殊的技术更新数据库(ABAP)一,过程1,DIALOG程序获得用户要更新的数据,并把它写到一个特殊的LOG TABLE,表内的条目属于同一个请求类型,包含了稍后将要写到数据库的数据。一个DIALOG程序可以写多条数据到LOG TABLE。写进LOG TABLE里的条目属于同一个LUW,意思就是它们要么都被执行,要么都不被执行。2,DIALOG程序关闭LUW(将LOG TABLE的条目打包),并通知系统基本程序有一个包的数据需要更新。3,系统基本程序从LOG TABLE读取这个LUW的需要更新的数据,并把这些数据提供给系统更新程序。4,系统更新程序接受传输给它的数据,并更新数据库。5,如果 阅读全文
posted @ 2011-09-08 14:50 VerySky 阅读(5533) 评论(1) 推荐(1)
摘要:1、使用where语句 不推荐Select * from zflight.Check : zflight-airln = ‘LF’ and zflight-fligh = ‘BW222’.Endselect.推荐Select * from zflight where airln = ‘LF’ and fligh = ‘BW222’.Endselect.2、使用聚合函数不推荐Maxnu = 0.Select * from zflight where airln = ‘LF’ and cntry = ‘IN’.Check zflight-fligh > maxnu.Maxnu = zflig 阅读全文
posted @ 2011-09-07 10:31 VerySky 阅读(4965) 评论(0) 推荐(0)
摘要:如何建立新的表并在SM30里面维护1.以建立ADDON表为例,se11首先进入数据字典定义,输入要建立的表名:点击create,填写信息:点Field字段进入,选择predefined type按钮,如果是系统的变量,直接写就可以了保存,选择相应的开发包生成request。2.在Techincal setting里面根据需求维护相关信息。保存并激活3.在table maintenance generator中也需要维护。填写如下讯息:(&NC&一般选择。Funtion group可以自己建立,一般z开头的4码)然后是下面的一些维护信息,根据需求自己添加即可填写无误后点击左上角类 阅读全文
posted @ 2011-08-21 23:15 VerySky 阅读(7015) 评论(0) 推荐(0)