随笔分类 - ABAP
SAP ABAP 性能优化技巧 — 缓存表
摘要:推荐使用缓存表因为它可以显著提高程序速度。但是使用以下语句的时候缓存表会被跳过: Select distinct Select … for update Order by, group by, having字段 Joins 在 select 命令后面使用 bypass buffer 附加语句可以明确跳过缓存表。
阅读全文
posted @ 2009-08-03 19:29
levin
SAP ABAP 性能优化技巧 — 向内表添加纪录
摘要:与其使用一般的 loop-endloop 方法来实现向内表添加多条记录,不如使用 append 命令的变体将一个内表的所有记录一次性添加入另一个内表。要注意的是两个内表的结构定义必须完全一样。 不推荐使用: Loop at int_fligh1. Append int_fligh1 to int_fligh2. Endloop. 推荐使用: ...
阅读全文
posted @ 2009-08-03 19:28
levin
SAP ABAP 性能优化技巧 — 使用二分查找(Binary Search)选项
摘要:READ命令使用顺序查找数据表,这会降低处理速度。取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度。 在使用binary search之前必须首先将内表排序,否则有可能找不到记录,因为二分查找反复将查找区间对半划分,如果要查找的值小于查找区间的中间位置的数据项值,则查找区间将缩小到前半个区间,否则查找将局限于后半区间。要了解更多的关于二分查找算法介...
阅读全文
posted @ 2009-08-03 19:28
levin
SAP ABAP 性能优化技巧 – 修改一组纪录
摘要:修改一个内表的多行纪录 使用modify命令的不同形式加快这种操作的处理速度。 不建议使用: Loop at int_fligh. If int_fligh-flag is initial. Int_fligh-flag = ‘X’. Endif. Modify int_fligh. Endloop. ...
阅读全文
posted @ 2009-08-03 19:27
levin
SAP ABAP 性能优化技巧 –- “into table” 语句
摘要:使用select 命令的 into table语句 与其一行一行的读取数据添加入内表,不如一次性取出所有数据行。 不建议使用: Refresh: int_fligh. Select * from zflight into int_fligh. Append int_fligh. Clear int_fligh. Endselect. ...
阅读全文
posted @ 2009-08-03 19:27
levin
SAP ABAP 性能优化技巧 – 视图取代基本表
摘要:使用视图取代基本表 很多时候 ABAP 程序员需要使用基本表和嵌套的选择。其实我们应该查看一下是否有SAP已经提供的这些基本表的某些视图可供使用,以便直接获得想要的数据,而不用特别编写代码来获取。 不建议使用: Select * from zcntry where cntry like ‘IN%’. Select single ...
阅读全文
posted @ 2009-08-03 19:26
levin
SAP ABAP 性能优化技巧 — 集合函数
摘要:可以使用ABAP提供的集合函数取代ABAP代码来获得最大或最小值。 不建议使用: Maxnu = 0. Select * from zflight where airln = ‘LF’ and cntry = ‘IN’. Check zflight-fligh > maxnu. Max...
阅读全文
posted @ 2009-08-03 19:25
levin
简单话内表(internal table)(转)
摘要:内表是一个运行状态下存在的实例,它在程序开始运行时才生成,在程序结束运行时被销毁。 内表包含两个部分,可有可无的标题行(HeaderLine),和必需的表身。进出内表的值都必须通过标题行。 程序例子: * 声明 data: begin of itab occurs 0, x type c, y type i, end of itab. * 初始化标题行 headerline itab-x = ...
阅读全文
posted @ 2009-08-03 19:23
levin
SAP ABAP 性能优化技巧 — 选择条件(转)
摘要:在从数据库中读取数据时最好直接在select语句中加入选择条件,从而直接限制筛选出符合条件的数据,而不建议读出所有的数据然后用ABAP代码来过滤筛选。 例如,不建议使用: Select * from zflight. Check : zflight-airln = ‘LF’ and zflight-fligh = ‘BW222...
阅读全文
posted @ 2009-08-03 19:22
levin
How to add button to ALV toolbar
摘要:Add Button to ALV Toolbar with REUSE_ALV_LIST_DISPLAY How to add button to ALV toolbar using REUSE_ALV_LIST_DISPLAY? In the program which calls ALV using REUSE_ALV_LIST_DISPLAY, I have to add a new ...
阅读全文
posted @ 2009-07-02 17:22
levin
ABAP "FOR ALL ENTRIES IN" 使用指南
摘要:ABAP "FOR ALL ENTRIES IN" 使用指南 在ABAP开发中,对于不能使用join的聚集表或者需要使用SELECT 的内表,我们一般使用for all entries in 语句将该表与内表串联,查询出需要的数据,例如: BSEG聚集表为例,如下:SELECT bseg~kunnr bseg~lifnr bseg~belnrINTO TABLE itab_bsegFROM bse...
阅读全文
posted @ 2009-07-02 12:01
levin
ABAP Performance Examples (转)
摘要:一、 SQL Interface
1. Select ... Where vs. Select + Check
用Select … Where语句效率比Select + Check语句要高,例如:
SELECT * FROM SBOOK INTO SBOOK_WA
WHERE CARRID = 'LH' AND
CONNID = '0400'.
ENDSELECT.
阅读全文
posted @ 2009-07-02 11:41
levin
ABAP字符串操作(转)
摘要:ABAP對字串的操作方法與其他語言的操作有較大差別,以下是較常用的對字串操作的方法: 1. 字串的連接:CONCATENATE DATA: t1 TYPE c LENGTH 10 VALUE 'We', t2 TYPE c LENGTH 10 VALUE 'have', t3 TYPE c LENGTH 10 VALUE 'all', t4 TYPE c LENGTH 10 VALUE 'the...
阅读全文
posted @ 2009-07-02 11:21
levin
For all entries使用中注意的问题(转)
摘要:1.SELECT CARRID CONNID FLDATE PRICE FROM SFLIGHT INTO TABLE GT_tab FOR ALL ENTRIES IN GT_SFLIGHT WHERE CARRID = GT_SFLIGHT-CARRID AND CONNID = GT_SFLIGHT-CONNID.在 WHERE 条件中,GT_SFLIGHT-CARRID和GT_SFLIGH...
阅读全文
posted @ 2009-06-19 16:08
levin
BAPI_ACC_GL_POSTING_REV_POST(转)
摘要:Parameters p_belnr like bkpf-belnr default '0100000236'. *Get last SA type document posted to build document key CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING NR_RANGE_NR = '01' OBJECT = 'RF_BELEG' QUANTI...
阅读全文
posted @ 2009-06-05 23:11
levin
快速读取BSEG表数据(转)
摘要:The FI-GL table BSEG, which is one of our biggest PR1 tables, is anexample of a clustered table. At the database-level, there is no tablecalled BSEG, but instead RFBLG is being used for the BSEG data....
阅读全文
posted @ 2009-05-31 13:47
levin
如何在字符串中加入回车换行,tab字符(关于字符串处理) (转)
摘要:在编写SAP程序时,程序员经常需要将常字符串进行分割,在字符串中加入回车换行或TAB字符,在其他语言可以使用$13$10的ASCII码进行插入.而在abap里却出错,为了解决此问题,请使用sap的类CL_ABAP_CHAR_UTILITIES.CL_ABAP_CHAR_UTILITIES中有字符常量:如:CR_LF,HORIZONTAL_TAB,NEWLINE等等.下面给出字符串中加入回车换行的示...
阅读全文
posted @ 2009-05-13 10:36
levin
SAP ALV标准范例程序介绍(转)
摘要:下面介绍几个学习ALV的SAP自带标准程序实例1. BALVSD06 : Output flights (simple version + save)这是该系列范例最简单的一个,建议以此入门。使用的Function Modules :REUSE_ALV_LIST_DISPLAY : 此FM非常重要,用来显示simple interactive list。大家要熟练掌握该FM的输入参数名称和作用,对...
阅读全文
posted @ 2009-05-08 15:35
levin
使用动态内表——ALV输出(转)
摘要:最近开发在执海关合同维护系统时,对进口料件的汇总,由于栏位显示与出口成品的品种多少相关,所以显示的栏位是不确定的,为此研究了一番。同样,在报关时,不管是对出口成品还是进口料件报关,栏位显示都与出口成品品种或进口料件品种相关。在同一行上显示所有的出口成品或进口料件,对于操作人员来说都是一件易操作的表现。程序设计要注意事项:第一、 每一张合同中出口成品品种数量的多少确定;第二、 每一种或每类出口成品共...
阅读全文
posted @ 2009-05-08 12:03
levin
alv 字段目录 [Field catalog]
摘要:1.字段目录 [Field catalog] 字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等. 常用的控制字段如下:(下面的示例将说明这些字段的使用,参考STRUCTURE LVC_S_FCAT)2 ROW_POS ALV 控制: 输出行 (内部使用) 3 COL_POS ALV 控制: 输出列 列的位置,第几列,例如1,2,…...
阅读全文
posted @ 2009-05-08 11:48
levin