20170316 ABAP注意点

1.debug 时在MODIFY db from table 后数据便提交了:

一般情况下,更新数据库需要commit,但debug会自动commit,程序结束也会自动commit。

2.使用at new, at first, at last, at end of的时候要注意:loop的时候不能加条件;at和endat之间不能使用loop into的working area。

使用At end of...ENDAT. 时要谨慎,容易出错;

使用 AT NEW f. 和 .AT END OF f 时需要注意:

1,f 必须是内表的第一个字段。

2,内表中f 之后的字段的值都会变成 *。

例:

REPORT Z_TEST.

DATA: BEGIN OF TH_LIFNR, 
LIFNR TYPE LFA1-LIFNR, 
ITEM TYPE C, 
END OF TH_LIFNR.

DATA: TD_LIFNR LIKE TABLE OF TH_LIFNR.

SELECT LIFNR FROM EKKO 
INTO TABLE TD_LIFNR 
WHERE EBELN > 4500006374 
AND EBELN < 4500006390.

SORT TD_LIFNR ASCENDING BY LIFNR.

LOOP AT TD_LIFNR INTO TH_LIFNR. 
AT NEW LIFNR. 
WRITE:/10 TH_LIFNR-LIFNR. 
WRITE:/ 'The next is new lifnr.'. 
ENDAT. 
ENDLOOP.

3.关于内部表示和外部表示:调用BAPI和Update DB的时候,要使用内部形式

(物料号有前导零的时候被认为是内部形式;单位一般也有内部形式外部形式之分)。在se11浏览数据的时候,显示数据的画面是使用内部形式,当detail overview的时候,则是外部形式。

4.使用binary search之前,需要sort,并且sort by ascending(系统默认的顺序也是ascending)。而且read table with key的顺序同sort的顺序相同,否则出错,常会找不到纪录。Delete adjacent duplicates之前一定要sort。

原文地址:https://www.cnblogs.com/rainysblog/p/6566077.html