摘要: CALLFUNCTION'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM=g_repid i_callback_user_command='USER_CALLBACK' I_STRUCTURE_NAME='T_OUTPUT' I_GRID_TITLE='DocumentList' is_layout=gs_layout is_variant... 阅读全文
posted @ 2009-08-03 21:58 levin 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 在ALV调用t-code时,如何知道屏幕参数ID?1.选中参数输入框,按F12.点击<technical information>3.<Field Data>-><Parameter ID> 阅读全文
posted @ 2009-08-03 21:52 levin 阅读(477) 评论(0) 推荐(0) 编辑
摘要: SY-SUBRC 执行状态 SY-DATUM 服务器日期 SY-UZEIT 服务器时间 SY-INDEX 循环的次数(DO While)SY-TABIX 当前处理的内表的IndexSY-LINSZ 当前报表宽度 SY-UNAME 用户名 SY-TCODE 当前的事务代码 SY-LANGU 当前登录语言SY-BATCH 后台的程序运行SY-DYNNR 当前屏幕的编号SY-LINCT 当前报表长度 S... 阅读全文
posted @ 2009-08-03 21:04 levin 阅读(441) 评论(0) 推荐(0) 编辑
摘要: SY-TABIX – 内表当前行的索引号。SY-TABIX 的值可以被以下命令修改,但是只适用于索引表(index table)。对于哈希表(Hashed table),这个系统变量的值为空或0。 APPEND 将 SY-TABIX 的值置为表最后一行的索引号,也就是说它将等于内表的行数。COLLECT 将 SY-TABIX 的值置为现有或刚刚插入的行的索引号。如果内表为哈希(hash... 阅读全文
posted @ 2009-08-03 19:47 levin 阅读(713) 评论(0) 推荐(0) 编辑
摘要: ABAP对字符串有很多隐形的操作,有时更方便程序员,有时又比较容易使人困惑。 比如在比较字符串的值时,ABAP会自动忽视有效字符后面的空格,而如果在字符前面有空格,则会影响比较的结果。 比如: ‘X’ 和 ‘X__’ 比较的结果是相等;而’X'和’__X’比较的结果则是不相等。 (这里下划线__代表空格) 运行下面... 阅读全文
posted @ 2009-08-03 19:47 levin 阅读(1520) 评论(0) 推荐(0) 编辑
摘要: Business requirment经常要求某个ID的值只能包含26个字母和10个数字字符,这就要求ABAP程序能够检查相应变量内容,辨别特殊字符。sap-img上的一个例子提供了这样的功能: REPORT ZCHECK_ALPHA_NUMERIC. * Declare the variable * For Length data: serial_length type i. * For Al... 阅读全文
posted @ 2009-08-03 19:45 levin 阅读(1881) 评论(0) 推荐(0) 编辑
摘要: SAP ABAP 性能优化技巧 — 选择条件简单话内表(internal table)SAP ABAP 性能优化技巧 — 集合函数SAP ABAP 性能优化技巧 – 视图取代基本表SAP ABAP 性能优化技巧 – 修改一组纪录SAP ABAP 性能优化技巧 — 向内表添加纪录SAP ABAP 性能优化技巧 — 使用二分查找(... 阅读全文
posted @ 2009-08-03 19:35 levin 阅读(698) 评论(0) 推荐(1) 编辑
摘要: 以下是SAP提供的各种对ABAP对象进行性能分析的工具: 运行实时分析 transaction SE30 这个 transaction 可以给出对一个ABAP程序的所有分析,包括数据库和非数据库处理操作。 SQL 追踪 transaction ST05 追踪列表有很多行不是关于 SELECT 语句的,因为... 阅读全文
posted @ 2009-08-03 19:33 levin 阅读(4800) 评论(0) 推荐(0) 编辑
摘要: order by 命令是在数据库服务器上执行的,而 sort 语句是在应用服务器上执行的。因此,与其在select语句中使用order by命令,不如将数据先读取到内表中然后使用sort命令来将结果排序,因为应用服务器上的执行速度要比数据库服务器快。 阅读全文
posted @ 2009-08-03 19:33 levin 阅读(1725) 评论(0) 推荐(0) 编辑
摘要: 当多个 SAP 表在逻辑上关联的时候,总是建议使用右关联 inner join 来从中读取数据。这会降低网络的负载。 以两个表为例:zairln 和 zflight。表 zairln 有字段 airln 存储了航空公司的代码,和字段 lnnam 存储了航空公司的名称。表 zflight 有航空公司代码字段 airln, 以及其他字段存储了航空公司运行的航班的详细信息。 ... 阅读全文
posted @ 2009-08-03 19:32 levin 阅读(2589) 评论(0) 推荐(0) 编辑
摘要: 建议使用move语句取代 move-corresponding 语句, 因为move-corresponding的执行速度很慢。应该尽量一次性搬移内表的整条记录,而不是一个字段一个字段的取值。move-corresponding会需要这个字段的比较域名,因此速度会很慢。 阅读全文
posted @ 2009-08-03 19:32 levin 阅读(1098) 评论(0) 推荐(0) 编辑
摘要: 当一个基本表有多个索引的时候, where 语句中的字段顺序应该与索引的顺序一致,无论第一索引还是第二索引。 在选择一个索引的时候,优化机会检查where语句中字段名,然后选择一个与这些字段名排列顺序一致的索引。 另外一个提示就是如果一个表是以 客户端编号MANDT 开始的,而索引不是的话,则优化机很有可能不会使用那个索引。 在某些情况下,建议查看是否有新的索引可以加速程序的运行。这在访问财务表的... 阅读全文
posted @ 2009-08-03 19:31 levin 阅读(1418) 评论(0) 推荐(0) 编辑
摘要: 在select语句后面的where附加项中可以使用左关联,这会极大的提高程序速度,但同时也有一些局限,如下: 重复项会被从结果数据集中自动删除,因此要注意在select语句中需要给出详细的唯一关键字组合。 如果 For All Entries IN 字段修饰的内表是空表的话,源表的所有行都会被选入目标表中。因此在使用前一定要首先检查第一个表是否为空,这一点很重要... 阅读全文
posted @ 2009-08-03 19:30 levin 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: 推荐使用缓存表因为它可以显著提高程序速度。但是使用以下语句的时候缓存表会被跳过: Select distinct Select … for update Order by, group by, having字段 Joins 在 select 命令后面使用 bypass buffer 附加语句可以明确跳过缓存表。 阅读全文
posted @ 2009-08-03 19:29 levin 阅读(943) 评论(0) 推荐(0) 编辑
摘要: 与其使用一般的 loop-endloop 方法来实现向内表添加多条记录,不如使用 append 命令的变体将一个内表的所有记录一次性添加入另一个内表。要注意的是两个内表的结构定义必须完全一样。 不推荐使用: Loop at int_fligh1. Append int_fligh1 to int_fligh2. Endloop. 推荐使用: ... 阅读全文
posted @ 2009-08-03 19:28 levin 阅读(815) 评论(0) 推荐(0) 编辑
摘要: READ命令使用顺序查找数据表,这会降低处理速度。取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度。 在使用binary search之前必须首先将内表排序,否则有可能找不到记录,因为二分查找反复将查找区间对半划分,如果要查找的值小于查找区间的中间位置的数据项值,则查找区间将缩小到前半个区间,否则查找将局限于后半区间。要了解更多的关于二分查找算法介... 阅读全文
posted @ 2009-08-03 19:28 levin 阅读(1409) 评论(0) 推荐(0) 编辑
摘要: 修改一个内表的多行纪录 使用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 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 使用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 阅读(692) 评论(0) 推荐(0) 编辑
摘要: 使用视图取代基本表 很多时候 ABAP 程序员需要使用基本表和嵌套的选择。其实我们应该查看一下是否有SAP已经提供的这些基本表的某些视图可供使用,以便直接获得想要的数据,而不用特别编写代码来获取。 不建议使用: Select * from zcntry where cntry like ‘IN%’. Select single ... 阅读全文
posted @ 2009-08-03 19:26 levin 阅读(1423) 评论(0) 推荐(0) 编辑
摘要: 可以使用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 阅读(604) 评论(0) 推荐(0) 编辑