SAP R/3 ABAP 開(kāi)發(fā)過(guò)程中一些總結(jié)

作者: 惟湛
1绘面、ST05是用于在開(kāi)發(fā)ABAP程序時(shí)周循,對(duì)應(yīng)事務(wù)碼取得的字段是“數(shù)據(jù)結(jié)構(gòu)”而不是“透明表”的時(shí)候树姨,通過(guò)ST05     的“SQL跟蹤”來(lái)獲得相關(guān)“Select”的語(yǔ)句;一般查看“REC”列耗時(shí)比較多的“Select”語(yǔ)句; 
2傻寂、跟蹤時(shí)如果有涉及到“數(shù)量”這類(lèi)有對(duì)數(shù)據(jù)表進(jìn)行更新或插入操作的,則直接去查Update和Insert的SQL語(yǔ)句携兵; 
3疾掰、在跟蹤后,直接雙擊“對(duì)象名”列的名稱(chēng)徐紧,點(diǎn)選“表格”轉(zhuǎn)到“SE11”的表字段表静檬; 
4、ABAP程序開(kāi)頭的Tables:“數(shù)據(jù)表名”并级,只有在屏幕中有用到的表拂檩,才需要聲明;在程序中用到的表則不需要進(jìn)行在Tables內(nèi)聲名嘲碧; 
5稻励、抓SAP“文本”字段的數(shù)據(jù),要先自定義變量愈涩,然后通過(guò)SE37的函數(shù)“FUNCTION ’ZREAD_TEXT’”取回文本數(shù)據(jù)望抽; 
6、新建的ABAP程序履婉,在測(cè)試運(yùn)行的時(shí)候要先進(jìn)行“激活”煤篙,才能測(cè)試運(yùn)行; 
7毁腿、SE93:把ABAP寫(xiě)好的程序指定一個(gè)事務(wù)碼執(zhí)行辑奈; 
8、abap引號(hào)內(nèi)的字符’’必須要是大寫(xiě)狸棍; 
9身害、ABAP select 里面的語(yǔ)句,不能像mssql有那么豐富的函數(shù)使用草戈,需要導(dǎo)到內(nèi)表后再對(duì)數(shù)據(jù)進(jìn)行操作塌鸯; 
10、’EQ’是單個(gè)數(shù)據(jù)值唐片,’BT’是between區(qū)間的意思丙猬。 
11涨颜、在寫(xiě)select inner join 里面,要注意是否需要加上銷(xiāo)售組織的條件茧球;on 條件1 and 銷(xiāo)售組織條件庭瑰。 
12、SELECTION-SCREEN抢埋,里面有兩個(gè)子項(xiàng)弹灭,PARAMETERS和select-options。 PARAMETERS 一般是用于必輸項(xiàng)的屏幕參數(shù)設(shè)置揪垄,如果這個(gè)參數(shù)不是必輸項(xiàng)的穷吮,就要用select-options。在select ...where條件里饥努,用PARAMETERS的條件語(yǔ)法是“數(shù)據(jù)字段 = 屏幕字段”捡鱼;而select-options的條件語(yǔ)法是“數(shù)據(jù)字段 in 屏幕字段”。 
13酷愧、在where判斷一個(gè)日期型數(shù)據(jù)是空驾诈,不是DEAKT = ’’,也不是DEAKT is initial,而應(yīng)該寫(xiě)成DEAKT = ’00000000’ (8個(gè)0)溶浴。 
14乍迄、一對(duì)多的inner join,如果取出的數(shù)據(jù)有重復(fù)戳葵,前面加上distinct就乓,用法和MSSQL相同。
15拱烁、sy-subrc,指上一個(gè)語(yǔ)句執(zhí)行是否成功生蚁;執(zhí)行成功返回0,執(zhí)行不成功返回非0戏自。用if判斷邦投。
16、如果一個(gè)語(yǔ)句中擅笔,該名稱(chēng)同時(shí)可能代表內(nèi)表或者同名表工作區(qū)志衣,則需要在內(nèi)表名稱(chēng)之后加“[]”指明當(dāng)前操作的是內(nèi)表對(duì)象。不提倡使用帶有表頭行的內(nèi)表猛们,而是應(yīng)該總是聲明結(jié)構(gòu)相同的其他數(shù)據(jù)對(duì)象作為顯示工作區(qū)進(jìn)行內(nèi)表行操作念脯。  

如何調(diào)整ABAP程序的性能(copy)

1、使用where語(yǔ)句  
 不推薦 
    Select * from zflight. 
   Check : zflight-airln = ‘LF’ and zflight-fligh = ‘BW222’. 
   Endselect. 
 推薦 
   Select * from zflight where airln = ‘LF’ and fligh = ‘222’. 
   Endselect. 
2弯淘、使用聚合函數(shù) 
不推薦 
   Maxnu = 0. 
   Select * from zflight where airln = ‘LF’ and cntry = ‘IN’. 
   Check zflight-fligh > maxnu. 
   Maxnu = zflight-fligh. 
   Endselect. 
推薦 
   Select max( fligh ) from zflight into maxnu where airln = ‘LF’ and cntry = ‘IN’.

3绿店、使用視圖代替基本表查詢 
不推薦 
   Select * from zcntry where cntry like ‘IN%’. [Page]
   Select single * from zflight where cntry = zcntry-cntry and airln = ‘LF’. 
   Endselect. 
推薦 
   Select * from zcnfl where cntry like ‘IN%’ and airln = ‘LF’. 
   Endselect.
4、使用INTO table 代替select endselect 
不推薦 
    Refresh: int_fligh. 
    Select * from zflight into int_fligh. 
    Append int_fligh. Clear int_fligh. 
    Endselect. 
推薦 
   Refresh: int_fligh. 
   Select * from zflight into table int_fligh.
5、使用批量修改內(nèi)表代替逐行修改 
不推薦 
  Loop at int_fligh. 
    If int_fligh-flag is initial. 
     Int_fligh-flag = ‘X’. 
    Endif. 
    Modify int_fligh. 
  Endloop. 
推薦 
   Int_fligh-flag = ‘X’. 
   Modify int_fligh transporting flag where flag is initial.

6假勿、使用二分法查詢借嗽,提高查詢內(nèi)表數(shù)據(jù)速度 
不推薦 
  Read table int_fligh with key airln = ‘LF’. 
推薦 
  Read table int_fligh with key airln = ‘LF’ binary search.

7、兩個(gè)內(nèi)表添加使用批量增加代替逐行
不推薦
Loop at int_fligh1.
Append int_fligh1 to int_fligh2.
Endloop.
推薦
Append lines of int_fligh1 to int_fligh2.

8转培、使用table buffering
Use of buffered tables is recommended to improve the performance considerably. The buffer is bypassed while using the following statementsSelect distinct
Select … for update
Order by, group by, having clause
Joins
Use the Bypass buffer addition to the select clause in order to explicitly bypass the buffer while selecting the data.

9恶导、 使用FOR ALL Entries
不推薦
Loop at int_cntry. Select single * from zfligh into int_fligh where cntry = int_cntry-cntry. Append int_fligh. Endloop.
推薦
Select * from zfligh appending table int_fligh
For all entries in int_cntry
Where cntry = int_cntry-cntry.

10、正確地使用where語(yǔ)句浸须,使查詢能使用索引When a base table has multiple indices, the where clause should be in the order of the index, either a primary or a secondary index
To choose an index, the optimizer checks the field names specified in the where clause and then uses an index that has the same order of the fields. One more tip is that if a table begins with MANDT, while an index does not, there is a high possibility that the optimizer might not use that index.

11惨寿、正確地使用MOVE語(yǔ)句

Instead of using the move-corresponding clause it is advisable to use the move statement instead. Attempt should be made to move entire internal table headers in a single shot, rather than moving the fields one by one.

12、正確地使用inner joinLet us take an example of 2 tables, zairln and zflight. The table zairln has the field airln, which is the airline code and the field lnnam, which is the name of the airline. The table zflight has the field airln, the airline code and other fields which hold the details of the flights that an airline operates. [Page]
Since these 2 tables a re logically joined by the airln field, it is advisable to use the inner join.
Select a~airln a~lnnam b~fligh b~cntry into table int_airdet
From zairln as a inner join zflight as b on a~airln = b~airln.
In order to restrict the data as per the selection criteria, a where clause can be added to the above inner join.

13删窒、使用sort by 代替order by

14缤沦、避免使用SELECT DISTINCT語(yǔ)句
使用的 ABAP SORT + DELETE ADJACENT DUPLICATES 代替.

定義內(nèi)表與工作區(qū)最方便的方法

*定義 名為 ITAB 的內(nèi)表, 內(nèi)表結(jié)構(gòu) 參照表 TABLE 。

DATA: ITAB TYPE TABLE OF TABLE.

*定義 名為 WA 的工作區(qū), 其 行結(jié)構(gòu)與 內(nèi)表 ITAB 相同 易稠。

DATA: WA LIKE LINE OF ITAB.


1.使用occurs 0,定義的不再是對(duì)象包蓝,而是internal table
2.使用with header line后綴驶社,定義為internal table的同時(shí)也定義了一個(gè)同名對(duì)象,因此可以用以下語(yǔ)句:
LOOP AT STH.
WRITE: / STH.
ENDLOOP.
3.TYPE后面接結(jié)構(gòu)测萎,LIKE后面接對(duì)象
4.OBLIGATORY為必輸字段
5.DATA SEPARATER . = DATA SEPARATER TYPE C.
6.關(guān)于內(nèi)表的結(jié)構(gòu)描述亡电,它的當(dāng)前記錄數(shù)據(jù)是放在header line中的,Occurs 是分配數(shù)據(jù)緩沖區(qū),大小不重要硅瞧,系統(tǒng)會(huì)自動(dòng)分配份乒。但定義內(nèi)表不用occurs就需要用with header line,occurs語(yǔ)句記得是為了向下兼容。
7.occurs 指明的數(shù)量是有一點(diǎn)學(xué)問(wèn)的.
1.當(dāng)你知道可能每次用Select命中或交換的紀(jì)錄數(shù)xxx時(shí),可指明 occurs xxx.
2.如用occurs 0 聲明時(shí), buffers 由系統(tǒng)自動(dòng)分配.
8.SELECT 在into時(shí)記得一般都要加上table腕唧,不然是into一個(gè)工作區(qū)或辖,即wa,而工作區(qū)要寫(xiě)入內(nèi)表枣接,則需要再append颂暇,所以直接定放內(nèi)表即可,內(nèi)表和工作區(qū)的區(qū)別就在于工作區(qū)就相當(dāng)于表頭但惶,是有一行耳鸯,data定義begin of itab時(shí)不加occurs就是工作區(qū),加了就是內(nèi)表膀曾,occurs *县爬,后面表示系統(tǒng)初始分配給此內(nèi)表多少行,每次滿時(shí)再多分配多少行添谊,我們平常為了節(jié)約內(nèi)存财喳,一般直接用0,with header line是為了定義含表頭的內(nèi)表碉钠,平常occurs就直接帶表頭纲缓,而with header line一般是在itab1 like itab occurs 0 with header line時(shí)用卷拘,這是參照一個(gè)內(nèi)表定義另一內(nèi)表,如果要帶表頭祝高,一定要加with header line栗弟。
你這樣問(wèn)不是辦法,最好不懂時(shí)直接接F1工闺,查到SAP的幫助即可. check是檢查后面的邏緝是否滿足乍赫,不滿足則在上例是跳出form,不的執(zhí)行下面的語(yǔ)句陆蟆。

說(shuō)實(shí)在雷厂,初略的看了一下上面的程序,寫(xiě)得太爛了叠殷,竟然將usr01或usr03透明表中的字段按條件取到一個(gè)表工作區(qū)改鲫,竟然不加single,象這種不加single的select按理說(shuō)應(yīng)該是調(diào)不過(guò)的林束,必須在后面再對(duì)應(yīng)一個(gè)endselect,而這種select加endselect用每次去讀一次透明表像棘,訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù)太多了,換個(gè)好一點(diǎn)程序自己研究吧壶冒。

SAP ABAP PA certification 培訓(xùn)筆記

P (4) 長(zhǎng)度4個(gè)字節(jié)

Xstring (10) 長(zhǎng)度為10個(gè)字節(jié),可以容納20個(gè)數(shù)字

大結(jié)構(gòu)體與小結(jié)構(gòu)體的兼容

Move 大 to 小 大的覆蓋小的 大結(jié)構(gòu)體的剩余部分保持不變

Move 小 to 大 匹配的部分 被小的覆蓋, 其余的字段被初始化

P 類(lèi)型 與 F類(lèi)型的優(yōu)缺點(diǎn)

P:計(jì)算精確,適合商業(yè)結(jié)算,但范圍短

F:儲(chǔ)存范圍大,計(jì)算不精確

P 與 F 類(lèi)型的運(yùn)算方式

F IEEE 用二進(jìn)制數(shù)進(jìn)行運(yùn)算

P 采用半字節(jié)儲(chǔ)存一個(gè)數(shù)字的方式進(jìn)行運(yùn)算

字段 結(jié)構(gòu)體 兼容問(wèn)題

  1. 字段兼容:類(lèi)型和長(zhǎng)度相同

  2. 結(jié)構(gòu)體:字段按順序兼容,并且字段數(shù)相同

  3. 內(nèi)表兼容:行類(lèi)型相同, KEY 兼容,表類(lèi)型相同

如果字符串 move 到一個(gè)比字符串小的結(jié)構(gòu)體 ,

[][][][] ---à [][]

[][]

一個(gè)字段 move 到一個(gè) 內(nèi)表中

Internal table 內(nèi)表.

  1. 靜態(tài)數(shù)據(jù)對(duì)象包括: 簡(jiǎn)單數(shù)據(jù)類(lèi)型(除了string 和xstring 類(lèi)型), 結(jié)構(gòu)體(不包含string 和xstring 類(lèi)型)

  2. 動(dòng)態(tài)數(shù)據(jù)對(duì)象:string , xstring , 包含string 或 xstring 的結(jié)構(gòu)體, 內(nèi)表

一個(gè)結(jié)構(gòu)體是否可以包含STRING 或xstring, 如果可以 結(jié)構(gòu)體可以拓展嗎?

定義一個(gè) 只有一個(gè)字段的 內(nèi)表 字段長(zhǎng)度是c(18),

定義一個(gè)結(jié)構(gòu)體 結(jié)構(gòu)體里 包含三個(gè)字段, 類(lèi)型 隨意, 第二個(gè)類(lèi)型,是另一個(gè)結(jié)構(gòu)體

定義一個(gè)內(nèi)表 內(nèi)表的行類(lèi)型 是第一個(gè)結(jié)構(gòu)體.

再用第二個(gè)結(jié)構(gòu)體定義一個(gè)內(nèi)表 ,利用這個(gè)內(nèi)表 作為行類(lèi)型,做一個(gè)內(nèi)表

內(nèi)表的三個(gè)基本屬性

  1. line type 行類(lèi)型

  2. key definition 鍵類(lèi)型

  3. table kind 表類(lèi)型

  1. 在standard table 中 使用 table key的查找方式為 table scan 全表掃描

  2. 在 sorted table 中使用table key 在遵循; left-aligned 從左至右匹配, no gaps 沒(méi)有間隔,使用”=” 填充字段時(shí), 使用 二分查找法 ,其它情況下 使用 table scan查找

  3. 對(duì)hash表訪問(wèn), 只能通過(guò)key訪問(wèn)單條記錄, 訪問(wèn)的速度不依賴(lài)于表中的數(shù)據(jù)量,而在其余兩種表中,查詢的時(shí)間與表中數(shù)據(jù)量成正比

其它情況是否代表,只是順序不符合left-aligned. 哈希表可以通過(guò)部分的key 進(jìn)行訪問(wèn)嗎?

定義內(nèi)表

  1. 定義一個(gè)局部?jī)?nèi)表類(lèi)型,通過(guò)該類(lèi)型定義內(nèi)表變量

  2. 直接定義字段 直接定義內(nèi)表變量(隱藏了一個(gè)內(nèi)表類(lèi)型)

  3. 通過(guò)全局內(nèi)表類(lèi)型定義內(nèi)表變量

標(biāo)準(zhǔn)的定義內(nèi)表語(yǔ)句

Types or DATA name

TYPE table_kind

OF line_type

WITH key_def

[INITIAL SIZE n.]

Table kind and key. 表類(lèi)型 和 表鍵

注意:在定義standard類(lèi)型的內(nèi)表時(shí),如果使用 WITH DEFAULT KEY. 系統(tǒng)會(huì)自動(dòng)將內(nèi)表中的字符類(lèi)型字段(c,n,d,t,x,string,xstring)組合成table key.

內(nèi)表的key

  1. standard標(biāo)準(zhǔn)表: key 不唯一.

  2. sorted排序表: 可以指定KEY是否唯一

  3. Hash 哈希表: KEY必須是唯一

在內(nèi)表中使用不是結(jié)構(gòu)體類(lèi)型的行類(lèi)型

當(dāng)內(nèi)表的行類(lèi)型只有一列的時(shí)候,需要使用pseudo-compnent 偽列,

用途:設(shè)置一個(gè)按鈕工具欄,用只含有一列的內(nèi)表.

對(duì)內(nèi)表的操作

  1. move對(duì)內(nèi)表的拷貝

  2. clear 將數(shù)據(jù)清空

  3. free 釋放內(nèi)存

  4. compare表之間的操作,比較

  5. sort 排序表

  6. array fetch

遞歸比較

  1. 先對(duì)內(nèi)表之間的行數(shù)進(jìn)行比較

  2. 如果有必有的話,還需要對(duì)行的組件進(jìn)行比較

內(nèi)表之間的比較

用行數(shù)比較, 有必要的話 可以 用內(nèi)容比較

定義兩個(gè)內(nèi)表 兩個(gè) 內(nèi)表不兼容 一個(gè)有3個(gè)字段 一個(gè)有5個(gè)

對(duì)兩個(gè)內(nèi)表進(jìn)行比較.

定義兩個(gè)內(nèi)表, 結(jié)構(gòu)一樣 , 變量不一樣

全做成數(shù)字型字段

第一個(gè) 添加 小數(shù)字

第二個(gè)內(nèi)表 添加大數(shù)字

排序可以指定升序降序.

對(duì)內(nèi)表具體操作

  1. Insert 插入

  2. Read 讀取

  3. Change 修改

  4. Delete 刪除

  5. Insert summated collect. 插入累計(jì)

對(duì)內(nèi)表中的數(shù)據(jù)行進(jìn)行限制條件操作

對(duì)數(shù)據(jù)的訪問(wèn)

一缕题、單條數(shù)據(jù)訪問(wèn)

  1. 通過(guò) table key訪問(wèn)

  2. 通過(guò) line index 訪問(wèn)(對(duì)于line index 類(lèi)型內(nèi)表)

  3. 通過(guò) condition條件訪問(wèn)

二、多條數(shù)據(jù)訪問(wèn)

  1. 通過(guò)condition條件訪問(wèn)

  2. 通過(guò) index interval 通過(guò)行區(qū)間訪問(wèn)

指定訪問(wèn)數(shù)據(jù)的傳輸方式

  1. 使用 結(jié)構(gòu)體 work area 進(jìn)行 copy 對(duì)內(nèi)表數(shù)據(jù)進(jìn)行操作

  2. 定義 field symblo 指針 指向訪問(wèn)數(shù)據(jù),(可以直接訪問(wèn)數(shù)據(jù))

  3. 通過(guò)將內(nèi)表插入內(nèi)表的操作

重要: 不能通過(guò)line index 對(duì)hash 表 進(jìn)行訪問(wèn), 在排序表中插入數(shù)據(jù).除非插入的位置 正好是排序表中規(guī)定的位置,否則會(huì)出現(xiàn) 運(yùn)行期異常(強(qiáng)烈不推薦使用insert往 sorted b表中插入數(shù)據(jù))

Field symbol 指針

作用: 直接對(duì)內(nèi)表進(jìn)行操作,而不用再重新定義結(jié)構(gòu)體對(duì)目標(biāo)內(nèi)表數(shù)據(jù)進(jìn)行拷貝, 增大了效率.

定義指針語(yǔ)法:

Data: var_a TYPE I VALUE 4.

FIELD-SYMBOLS: <fs> TYPE i.

ASSIGN var_a TO <fs>.

<fs> = 77.

重要: 定義的指針名,必須加”<>”

Insert 插入操作

一胖腾、 單條數(shù)據(jù)的插入操作

  1. 標(biāo)準(zhǔn)表: 可以使用 index (推薦) 和 table key 方式插入

  2. 排序表: 可以通過(guò) table key方式插入 , 但也可以用index插入(強(qiáng)烈不推薦, 很有可能出現(xiàn)運(yùn)行錯(cuò)誤)

  3. Hash表: 只能夠用table key 方式插入

二烟零、 多條記錄的插入

  1. 源內(nèi)表為 index table : 則可以指定源內(nèi)表的數(shù)據(jù)范圍,并插入到目標(biāo)內(nèi)表中

  2. 目標(biāo)內(nèi)表為index table: 則可以可以指定目標(biāo)內(nèi)表被插入數(shù)據(jù)的具體index 位置.

具體的語(yǔ)句插入語(yǔ)法:

Insert wa INTO TABLE itab. 單條插入不指定位置

Insert wa INTO itab INDEX n. 單條插入指定插入位置

INSERT LINES OF itab1

[from n1 to n2]

INTO TABLE itab2.

INTO itab2 [ INDEX n]

讀取 內(nèi)表的一條 將數(shù)據(jù) 讀到結(jié)構(gòu)體中

如果系統(tǒng)獨(dú)到行 sy-subrc = 0 . 然后讀取到結(jié)構(gòu)體中,

Sy-tfill 存放總行數(shù)

Sy-tleng 行的長(zhǎng)度

Transporting

指定特定列 傳輸字段 , 傳送部分字段

TRANSPORTING NO Fields 不傳值, 作用 ,看內(nèi)表中 有沒(méi)有 這條數(shù)據(jù)

Camparing

有一個(gè)結(jié)構(gòu)體 和內(nèi)表

C1 C2 C3

Lh 0019 17

Lh 0018 18

通過(guò)comparing 后的值, 可以判斷讀取的值是否符合要求.

現(xiàn)在結(jié)構(gòu)體中需要比較的字段賦值,

先判斷 相應(yīng)字段是否相等

回去做個(gè)練習(xí)

比較成功 sy-subrc = 0

Zmycompare_2009

用一個(gè)結(jié)構(gòu)作為 查詢條件,

到內(nèi)表查詢符合條件的數(shù)據(jù)

With key 可以用 table key 或 普通字段作為條件

使用field symbol

通過(guò)一個(gè)內(nèi)表 定義一個(gè) 結(jié)構(gòu)體 作為 指針

Read table itab [index n / key ] assigning <fs>.

Write: / <fs>-field_1.

直接修改 <fs> 的值 會(huì)怎么樣?

Change 修改內(nèi)表

Transporting 的 傳輸方向

通過(guò) field symbol

直接修改 內(nèi)表

重要: 不能直接指針對(duì)sorted 和 hash表進(jìn)行操作

Delete

Delete table itab key

Key: from wa ()

With table key k1 = f1….

不能用sort 對(duì)排序表進(jìn)行排序

對(duì) sorted 表進(jìn)行 insert modify , 使用不當(dāng) 可能會(huì)出錯(cuò)

HASH表不能通過(guò) index 進(jìn)行操作

Header line

With head line 關(guān)鍵字定義 廢棄用法

Occur + 整數(shù), 10 ,

Occur 0 , 默認(rèn)大小,

Occur 0 with head line 廢棄用法了

重要: 在面向環(huán)境中 不能用帶有 head line 的內(nèi)表

Data: so_carr LIKE RANGE OF carrid.

Loop 內(nèi)表

Where 條件 從起始點(diǎn)二分查找

標(biāo)準(zhǔn)表 可以部分指定順序

From 1 to 5

對(duì)于一個(gè)標(biāo)準(zhǔn)表來(lái)說(shuō), 加上二分查找 是不是 先排序

先把標(biāo)準(zhǔn)表 排序, 然后再二分

必須先手工排序,再進(jìn)行二分查找

sap abap programming---關(guān)于ABAP內(nèi)表(about abap internal table)

  1. 內(nèi)表的類(lèi)型及定義:

(1).ANY TABLE:即任意表類(lèi)型,此種定義方式只能在傳遞參數(shù)的時(shí)候定義咸作。

例如:FORM XXX USING/CHANGING TYPE ANY TABLE .

(2).ANY TABLE包括了兩種類(lèi)型:INDEX TABLE和HASHED TABLE 锨阿。

《1》.INDEX TABLE:包括了STANDARD TABLE和SORTED TABLE

A. STANDARD TABLE:其實(shí)就是一個(gè)線性表,通過(guò)key訪問(wèn)內(nèi)表是線性查找的记罚,也就是說(shuō)群井,隨著表中記錄的增加,對(duì)表的

操作的時(shí)間開(kāi)銷(xiāo)也相應(yīng)的增加毫胜。

定義方法:TYPES/DATA: LIKE/TYPE STANDARD TABLE OF .

B. SORTED TABLE:顧名思義书斜,表中的記錄是按照一定的順序排列的。訪問(wèn)表的主要方式是表中定義的key酵使,如果key不唯

一荐吉,則選擇index最小的那個(gè)。也可以通過(guò)index來(lái)訪問(wèn)排序表口渔,如果你想通過(guò)index插入一條記錄样屠,系統(tǒng)會(huì)自動(dòng)檢查你插入的

位置是否正確仁烹。所以签赃,如果插入的時(shí)間比插入到標(biāo)準(zhǔn)表的時(shí)間會(huì)長(zhǎng)肚医。因此仓手,盡量選擇key來(lái)對(duì)排序表進(jìn)行操作。

定義方法:TYPES/DATA: LIKE/TYPE SORTED TABLE OF .

《2》.HASHED TABLE:對(duì)哈希表只能用你定義的key進(jìn)行操作业踢,而不能使用index進(jìn)行操作栗柒。因此,定義哈希表必須定義unique

key 知举。注意:所有關(guān)于使用index操作表的語(yǔ)句都不能用于操作哈希表瞬沦。例如:sort,loop等雇锡。

定義方法:TYPES/DATA: LIKE/TYPE HASHED TABLE OF .

  1. 內(nèi)表的操作:

(1).創(chuàng)建:

A. 定義一個(gè)結(jié)構(gòu)逛钻,然后type/like這個(gè)結(jié)構(gòu)

例如:

TYPES: BEGIN OF ,
...
i> ...,
...
END OF .

DATA TYPE STANDARD TABLE OF
WITH NON-UNIQUE DEFAULT KEY
INITIAL SIZE
WITH HEADER LINE.

B. type/like系統(tǒng)表或者數(shù)據(jù)庫(kù)表或者結(jié)構(gòu)

DATA TYPE STANDARD TABLE OF <系統(tǒng)表名>
INITIAL SIZE
WITH HEADER LINE.

(2).添加數(shù)據(jù):

A.APPEND:直接向表中添加數(shù)據(jù)

  1. APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING |REFERENCE INTO dref].

  2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.

  3. APPEND [wa TO] itab SORTED BY f [ASSIGNING

B.向表中插入數(shù)據(jù):

  1. INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx] [ASSIGNING |REFERENCE INTO dref].

  2. INSERT [wa INTO|INITIAL LINE INTO] TABLE itab [ASSIGNING |REFERENCE INTO dref].

  3. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO itab2 [INDEX idx3].

  4. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO TABLE itab2.

C.相同字段求和向表里添加:

Basic form

COLLECT [wa INTO] itab.

Extras:

  1. ... ASSIGNING
  2. ... REFERENCE INTO dref
  3. ... SORTED BY f

(3).刪除數(shù)據(jù):

  1. DELETE itab.
  2. DELETE TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn.
  3. DELETE TABLE itab [FROM wa].
  4. DELETE itab INDEX idx.
  5. DELETE itab FROM idx1 TO idx2.
  6. DELETE itab WHERE logexp.
  7. DELETE ADJACENT DUPLICATES FROM itab.

(4).修改數(shù)據(jù):

  1. MODIFY itab [FROM wa] [INDEX idx] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].

  2. MODIFY TABLE itab [FROM wa] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].

  3. MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.
    sap --- ABAP 內(nèi)表(internal table) 標(biāo)題行(header line) 工作區(qū)(work area) 簡(jiǎn)介 OCCURS 0

剛開(kāi)始學(xué)ABAP的時(shí)候,學(xué)到iternal table時(shí),感覺(jué)一陣混亂.
搞不清楚什么是work area,什么是header line,以及occurs是干什么用的.
今天終于差不多搞明白了(我還是太弱啊...BS自己一下)
所以還是記錄下來(lái)..省得自己以后再忘記...

先是用TYPES關(guān)鍵字定義一個(gè)行(row)的類(lèi)型.如下:
TYPES: BEGIN OF line,
field1 TYPE i,
field2 TYPE i,
END OF line.
這里的line,就相當(dāng)于一個(gè)自定義的類(lèi)型,表示一行(row)的字段(field).
這里一行有兩個(gè)字段field1和field2.

然后是聲明一個(gè)work area:
DATA wa TYPE line.
我用C++(還是對(duì)cpp最有好感^^)的概念理解就是,
line是一個(gè)class,而wa是一個(gè)object.

接著是聲明一個(gè)每一行的類(lèi)型是line的internal table:
DATA itab TYPE line OCCURS 0.
我在暫時(shí)把OCCURS作為了區(qū)別工作區(qū)和內(nèi)表的標(biāo)志.
OCCURS應(yīng)該有更深層次的意義,但我目前只能領(lǐng)悟至此...
當(dāng)我們用以上這個(gè)方法來(lái)聲明一個(gè)iternal table時(shí),可以選擇是否有無(wú)header line.
上面這句就是沒(méi)有header line的.改成如下就有了:
DATA itab TYPE line OCCURS 0 WITH HEADER LINE.
有無(wú)header line的區(qū)別就是,header line可以當(dāng)作一個(gè)work area來(lái)使用(參照我之前的一個(gè)日志).
有一下兩種方式操作itab:
1).
wa-field1 = 1.
wa-field2 = 2.
APPEND wa TO itab.
2).
itab-field1 = 1.
itab-field2 = 2.
APPEND itab.
這里wa就是上面那個(gè)已經(jīng)定義的work area.
有header line的時(shí)候,這兩種都可以.
無(wú)header line的時(shí)候,只能用第1種.
第2種里,itab的意義是一個(gè)header line,而不是內(nèi)表.
因?yàn)?DATA itab TYPE line OCCURS 0 WITH HEADER LINE."這樣的聲明,
已經(jīng)隱式聲明了一個(gè)與內(nèi)表同名的header line.
所以O(shè)CCURS用來(lái)聲明內(nèi)表可能造成二義性(ambiguous).
于是,OCCURS被認(rèn)為是old的東西,采用一下方式聲明一個(gè)內(nèi)表比較好:
DATA itab TYPE STANDARD TABLE OF line.

還有一種聲明內(nèi)表的方法:
DATA: BEGIN OF itab OCCURS 0,
field1 TYPE i,
field2 TYPE i,
END OF itab.
這樣的itab就自動(dòng)有了一個(gè)同名的header line.
好像不會(huì)有 WITHOUT HEADER LINE 或者 NOT WITH HEADER LINE 這樣的用法...
如果沒(méi)有OCCURS 0,比如這樣:
DATA: BEGIN OF itab,
field1 TYPE i,
field2 TYPE i,
END OF itab.
那么這個(gè)itab就不是內(nèi)表咯,只是一個(gè)structure,可以作為itab的work area.

寫(xiě)到這里發(fā)現(xiàn),歸根到底就是TYPES和DATA這兩個(gè)關(guān)鍵字的區(qū)別嘛.
還有有無(wú)OCCURS的區(qū)別.

這樣一想,簡(jiǎn)單明了~~

OCCURS 是在3.0以前申明內(nèi)表的關(guān)鍵字。意思是內(nèi)表初始的時(shí)候有多少行∶烫幔現(xiàn)在不提倡使用曙痘。看到了認(rèn)識(shí)就行立肘。

=======================================================
ABAP Work Area & Header Line -

  1. Difference between Work Area and Header Line
    工作區(qū)與標(biāo)題行的不同之處
    原文地址:
    http://www.sap-img.com/abap/difference-between-work-area-and-header-line.htm
    我翻譯下屡江,嘿嘿
    在對(duì)內(nèi)表進(jìn)行一些操作的時(shí)候,比如增加或者取回一條記錄.我們必須暫時(shí)保存這條記錄.
    這條記錄就保存在內(nèi)表的工作區(qū)里(work area).內(nèi)表的工作區(qū)必須和內(nèi)表有相同的結(jié)構(gòu).
    內(nèi)表由主體(body)和一個(gè)可選的標(biāo)題行(head line)組成.
    標(biāo)題行是一個(gè)隱式的(implicit)工作區(qū).在內(nèi)表聲明的時(shí)候,可以選擇有無(wú)標(biāo)題行.
    e.g.
    data: begin of itab occurs 10,
    ab type c,
    cd type i,
    end of itab.
    這樣的內(nèi)表itab,是有標(biāo)題行的.
    data: wa_itab like itab.
    這樣的wa_itab是顯式(explicit)聲明的一個(gè)itab的工作區(qū).
    data: itab1 like itab occurs 10.
    這樣的內(nèi)表itab1,是沒(méi)有標(biāo)題行的.

標(biāo)題行是一個(gè)和內(nèi)表主體有著一樣結(jié)構(gòu)的字段的串,標(biāo)題行只有一行.
所以,標(biāo)題行相當(dāng)于一個(gè)緩沖區(qū)(buffer),用于存放被操作的紀(jì)錄,是內(nèi)表的缺省的工作區(qū).

  1. Using Header Lines as Work Areas
    把標(biāo)題行當(dāng)工作區(qū)來(lái)使用
    原文地址:
    http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb36a1358411d1829f0000e829fbfe/content.htm
    我再翻譯下...
    當(dāng)你在創(chuàng)建一個(gè)內(nèi)表的時(shí)候,你同時(shí)也聲明了一個(gè)具有相同名稱(chēng)的標(biāo)題行(這個(gè)好像很奇特的樣子么...).可以把這個(gè)標(biāo)題行當(dāng)作工作區(qū)來(lái)對(duì)內(nèi)表進(jìn)行操作.
    如果一個(gè)內(nèi)表有標(biāo)題行,則對(duì)其進(jìn)行操作的ABAP語(yǔ)句會(huì)簡(jiǎn)短一些,因?yàn)檫@些語(yǔ)句會(huì)自動(dòng)認(rèn)為標(biāo)題行是一個(gè)隱式的工作區(qū).語(yǔ)句的不同如下表:

Operations without header line

Operations with header line

Operations for all Table Types

INSERT INTO TABLE .

INSERT TABLE ITAB.

COLLECT INTO .

COLLECT .

READ TABLE ... INTO .

READ TABLE ...

MODIFY TABLE FROM ...

MODIFY TABLE ...

MODIFY FROM ...WHERE ...

MODIFY ... WHERE ...

DELETE TABLE FROM .

DELETE TABLE .

LOOP AT ITAB INTO ...

LOOP AT ITAB ...

Operations for Index Tables

APPEND TO .

APPEND .

INSERT INTO ...

INSERT ...

MODIFY FROM ...

MODIFY ...

但是,用隱式的工作區(qū),代碼難以被理解,所以還是用一個(gè)不同名稱(chēng)的工作區(qū)比較好.

sap abap---通過(guò)例子學(xué)習(xí)ABAP--初始化內(nèi)表 清空內(nèi)表

初始化內(nèi)表的作用是清空內(nèi)表所有的數(shù)據(jù)行,將內(nèi)表恢復(fù)到填充或賦值之前的狀態(tài)赛不。初始化內(nèi)表過(guò)程中需要注意之處仍然是初始化無(wú) 表頭行內(nèi)表和有表頭行內(nèi)表的區(qū)別,以及初始化內(nèi)表和表頭行的區(qū)別罢洲。

(1)CLEAR ITAB. 同時(shí)清空表頭和行內(nèi)表的值

(2)CLEAR ITAB. 只清空內(nèi)表本身的值踢故,保留表頭行的值。

(3)REFRESH I TAB 只清空內(nèi)表本身的值惹苗,保留表頭行的值殿较。

(4)FREE ITAB. 只清空內(nèi)表本身的值,保留表頭行的值桩蓉。

DATA: BEGIN OF line,
col1(1) TYPE c,
col2(1) TYPE c,
END OF line.
DATA itab LIKE TABLE OF line WITH HEADER LINE.
line-col1 = 'A'. line-col2 = 'B'.
APPEND line TO itab.
loop at itab.
write : itab-col1.
endloop.
clear itab. "在這里可以嘗試CLEAR ITAB[],FREE ITAB,REFRESH ITAB淋纲,看看效果是不是如上所說(shuō)這樣。
IF itab IS INITIAL.
WRITE 'ITAB is empty'.
ENDIF.

很多程序BUG院究,就是這一類(lèi) 不起眼的東西引起的~


*-------- Clear & Refresh Internal Table. -------------------------


  1. with headerline.
    CLEAR itab. : Clear the headerline of the Internal Table only.
    CLEAR itab[]. : Clear the contents of the Internal Table except the headerline.
    REFRESH itab. : Same as CLEAR itab[].
    REFRESH itab[]. : Same as CLEAR itab[].
  2. without headerline. ( all four commands have same functionality )
    CLEAR itab. : Clear all contents of the Internal Table.
    CLEAR itab[]. : Same as CLEAR itab.
    REFRESH itab. : Same as CLEAR itab.
    REFRESH itab[]. : Same as CLEAR itab.

如何一次性的給內(nèi)表的一列賦值,不用LOOP循環(huán)來(lái)做,比如把第一列都給設(shè)置成空.

CLEAR 對(duì)應(yīng)工作區(qū)清空
MODIFY 內(nèi)表 FROM 內(nèi)表對(duì)應(yīng)工作區(qū)
TRANSPORTING 修改字段
WHERE 修改字段 <> SPACE.

MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond
這句話的意思是凡是內(nèi)表itab中滿足條件cond的記錄都被工作區(qū)wa的數(shù)據(jù)修改洽瞬,修改的字段是f1...f
4月4日
sap abap programming----CALL TRANSACTION USING bdc_tab for Data Transfer

http://help.sap.com/saphelp_sm32/helpdata/en/fa/09715a543b11d1898e0000e8322d00/frameset.htm
DATA: it_bdcdata TYPE TABLE OF bdcdata,
wa_bdcdata TYPE bdcdata.
wa_bdcdata-program = 'SAPLBTCH'.
wa_bdcdata-dynpro = '2170'.
wa_bdcdata-dynbegin = 'X'.
APPEND wa_bdcdata TO it_bdcdata.
CLEAR wa_bdcdata.
wa_bdcdata-fnam = 'BTCH2170-JOBNAME'.
wa_bdcdata-fval = '*'.
APPEND wa_bdcdata TO it_bdcdata.
wa_bdcdata-fnam = 'BTCH2170-USERNAME'.
wa_bdcdata-fval = sy-uname.
APPEND wa_bdcdata TO it_bdcdata.
CALL TRANSACTION 'SM37' USING it_bdcdata.


Submit to executable program via selection options

SUBMIT zrmm0001 VIA SELECTION-SCREEN
AND RETURN
WITH p_matnr = itab-matnr
WITH p_werks = itab-werks
WITH p_lgort = itab-lgort
WITH s_charg = itab-charg
WITH p_num = p_label
WITH p_dest = p_print.


Submit to program which not has selection screen


SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR.
SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR.
CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
sap abap programming----execute--Call Underlying Database Store Procedure in ABAP

摘自sapguys.cn群中Robbin和徐的交流

  1. 配置個(gè)外部DB, T-code為: DB59, DB50N, 測(cè)試連接
  2. 執(zhí)行Native SQL
    eg:
    EXEC SQL.
    EXECUTE PROCEDURE EAI_ETL_CONTROL(IN :XX1,IN :XX2,IN :wa_datet_update,IN :XX3,OUT :YY1)
    ENDEXEC.
    sap ABAP 常用函數(shù)(sap abap function)

RS_VARIANT_VALUES_TECH_DATA

可以返回一個(gè)內(nèi)表, 里面存的是PARAMETER SELECT-OPTION的名字 以及對(duì)應(yīng)的值. 可用于background job中對(duì)vaiant的修改.
函數(shù)名 描述
SD_VBAP_READ_WITH_VBELN 根據(jù)銷(xiāo)售訂單讀取表vbap中的信息
EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“”重新組織
VIEW_MAINTENANCE_CALL 維護(hù)表視圖
函數(shù)名 描述
DY_GET_FOCUS 獲得屏幕焦點(diǎn)
DY_GET_SET_FIELD_VALUE 獲得或者設(shè)置屏幕字段的值
函數(shù)名 描述
F4IF_INT_TABLE_VALUE_REQUEST 顯示檢索help
READ_TEXT 讀取長(zhǎng)文本
CONVERSION_EXIT_CUNIT_OUTPUT 單位轉(zhuǎn)換
SJIS_DBC_TO_SBC 全角轉(zhuǎn)半角
SJIS_SBC_TO_DBC 半角轉(zhuǎn)換為全角
CO_R0_CHECK_DECIMAL_POINT 根據(jù)單位檢查數(shù)據(jù)的小數(shù)位
POSTAL_CODE_CHECK 檢查郵政編碼
函數(shù)名 描述
CONVERSION_EXIT_ALPHA_INPUT 全數(shù)字則在前面補(bǔ)0
CONVERSION_EXIT_ALPHA_INPUT 和上面相反
GET_JOB_RUNTIME_INFO 獲得job相關(guān)信息
TERMINAL_ID_GET 獲得端末id
DATE_CONVERT_TO_FACTORYDATE 把輸入日期轉(zhuǎn)為工廠日歷日期
MESSAGE_TEXT_BUILD 把消息轉(zhuǎn)為文本
函數(shù)名 描述
POPUP_TO_CONFIRM 彈出確認(rèn)窗口
函數(shù)名 描述
CONVERSION_EXIT_MATN1_INPUT 物料號(hào)碼轉(zhuǎn)換函數(shù)
CONVERSION_EXIT_MATN1_OUTPUT 同上相反
CONVERT_TO_LOCAL_CURRENCY 按照指定日期匯率轉(zhuǎn)換金額為指定貨幣類(lèi)型
SSF_FUNCTION_MODULE_NAME 根據(jù)form名取得對(duì)應(yīng)的函數(shù)名(SmartForm)
函數(shù)名 描述
DATE_CHECK_PLAUSIBILITY 日期CHECK
cl_gui_frontend_services=>gui_upload 上傳到服務(wù)器
cl_gui_frontend_services=>gui_download 下載到服本地
SSF_FUNCTION_MODULE_NAME SMARTFORMS輸出報(bào)表時(shí),生成一個(gè)函數(shù)名稱(chēng)业汰,然后CALL這個(gè)名稱(chēng)
函數(shù)名 描述
POPUP_TO_DECIDE_LIST 彈出供選擇窗口
ABAP_DOCU_DOWNLOAD – 以HTML格式下載ABAP文檔伙窃。
ARFC_GET_TID – 以十六進(jìn)制形式返回終端的IP地址。
BAL_
-容納了SAP的應(yīng)用程序日志所有的函數(shù)模塊样漆。
BP_EVENT_RAISE –在 ABAP/4 程序中觸發(fā)一個(gè)事件为障。
BP_JOBLOG_READ –獲得job log的執(zhí)行結(jié)果。
CLOI_PUT_SIGN_IN_FRONT – 將負(fù)號(hào)前置, SAP默認(rèn)將負(fù)號(hào)放在數(shù)字后面鳍怨。
CLPB_EXPORT –從內(nèi)表導(dǎo)入到剪貼板呻右。
CLPB_IMPORT – 從剪貼板導(dǎo)入內(nèi)表。
COMMIT_TEXT -To load long text into SAP 鞋喇。
CONVERSION_EXIT_ALPHA_INPUT - 數(shù)字串前補(bǔ)0
example:
input = 123
output = 0000000000000声滥。。确徙。000000000000123
CONVERSION_EXIT_ALPHA_OUTPUT – 消除數(shù)字串前的0
example:
input = 00000000000123
output = 123
CONVERT_OTF – 將SAP文檔(SAP Script)轉(zhuǎn)換成其他類(lèi)型醒串。
example:
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = FILE_LEN
TABLES
OTF = OTFDATA
LINES = PDFDATA
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
DATE_GET_WEEK – 返回一個(gè)日期所在的周數(shù)。
DATE_CHECK_PLAUSIBILITY – 檢查一個(gè)日期是否是SAP的有效格式鄙皇。
DYNP_VALUES_READ – 讀取SCREEN字段的值芜赌,也可以用來(lái)讀取報(bào)表SELECTION SCREEN。
DYNP_VALUES_UPDATE -更新屏幕字段的值伴逸。
ENQUE_SLEEP –在繼續(xù)處理之前等待一個(gè)指定的時(shí)間缠沈。
ENQUEUE_ESFUNCTION – 鎖定一個(gè)ABAP程序使它不可以被執(zhí)行:
RELID = 'ZZ'
SRTF2 = 0
SRTF = (your report name)
注意不要用SY-REPID來(lái)傳遞你的報(bào)表名字,當(dāng)把SY-REPID作為參數(shù)傳遞給函數(shù)模塊的時(shí)候错蝴,SY-REPID的值實(shí)際上已經(jīng)發(fā)生了變化洲愤。
EPS_GET_FILE_ATTRIBUTES – 獲得文件屬性。
EPS_GET_DIRECTORY_LISTING – 返回一個(gè)本地或網(wǎng)絡(luò)目錄的文件列表顷锰。
F4_DATE - 彈出一個(gè)窗口顯示一個(gè)日歷允許用戶選擇一個(gè)日期柬赐。
F4IF_SHLP_EXIT_EXAMPLE – F4接口模塊。
FILENAME_GET – 彈出一個(gè)文件選擇對(duì)話框官紫。
DATA out(60) TYPE c.
CALL FUNCTION 'FILENAME_GET'
EXPORTING
filename = 'c:\1.txt'
title = 'GET FILENAME'
IMPORTING
filename = OUT.
FTP_CONNECT – 打開(kāi)并登陸FTP服務(wù)器的連接肛宋。
FTP_COMMAND – 在FTP服務(wù)器上執(zhí)行一個(gè)命令。
FTP_DISCONNECT –關(guān)閉指向FTP服務(wù)器的連接束世。
FORMAT_MESSAGE - Takes a message id and number, and puts it into a variable酝陈。 Works better than WRITE_MESSAGE, since some messages use $ as a place holder, and WRITE_MESSAGE does not accommodate that, it only replaces the ampersands (&) in the message。
GET_GLOBAL_SYMBOLS – 返回一個(gè)程序的tables, select options, texts, etc 毁涉。甚至包含selection screen的文本定義沉帮。
GET_INCLUDETAB – 獲得一個(gè)程序的INCLUDES列表。
GUI_CREATE_DIRECTORY –在顯示服務(wù)器端創(chuàng)建一個(gè)目錄 贫堰。
GUI_DELETE_FILE – 在顯示服務(wù)器端刪除一個(gè)文件 穆壕。
GUI_DOWNLOAD – 從應(yīng)用服務(wù)器下載內(nèi)表到顯示服務(wù)器。
GUI_EXEC – 調(diào)用一個(gè)文件或程序其屏,取代了WS_EXECUTE粱檀。
GUI_GET_DESKTOP_INFO – 獲得客戶端桌面信息,取代了WS_QUERY漫玄。
GUI_REMOVE_DIRECTORY – 從顯示服務(wù)器刪除一個(gè)目錄 茄蚯。
GUI_RUN – 啟動(dòng)一個(gè)文件或程序 压彭。
GUI_UPLOAD – 從顯示服務(wù)器上傳文件到應(yīng)用服務(wù)器,取代了WS_UPLOAD渗常。
HELP_START – 為一個(gè)字段顯示幫助壮不。 Useful for doing AT SELECTION SCREEN ON VALUE REQUEST for those fields that do not provide F4 help at the DDIC level。
HOLIDAY_GET – 基于Factory Calendar&/ Holiday Calendar提供了一個(gè)節(jié)日表皱碘。
INIT_TEXT –上傳長(zhǎng)文本到SAP询一。
K_WERKS_OF_BUKRS_FIND – 返回一個(gè)特定公司代碼的所有工廠。
LIST_TO_ASCII –將ABAP報(bào)表從 OTF形式轉(zhuǎn)換成ASCII 形式癌椿。
LIST_FROM_MEMORY – Retrieves the output of a report from memory when the report was executed using SUBMIT健蕊。。踢俄。EXPORTING LIST TO MEMORY缩功。 See also WRITE_LIST。
MONTH_NAMES_GET – 獲得所有的月和名字
**** MS_EXCEL_OLE_STANDARD_OLE – 創(chuàng)建一個(gè)文件并自動(dòng)啟動(dòng)Excel 都办。
CONVERT_OTFSPOOLJOB_2_PDF - converts a OTF spool to PDF (i嫡锌。e。 Sap script document)
CONVERT_ABAPSPOOLJOB_2_PDF -convert ABAP spool output to PDF
POPUP_TO_CONFIRM_LOSS_OF_DATA – 彈出一個(gè)對(duì)話框告知用戶有可能丟失數(shù)據(jù)琳钉,詢問(wèn)是否操作繼續(xù)势木。
POPUP_TO_CONFIRM_STEP -彈出一個(gè)對(duì)話框詢問(wèn)用戶是否操作繼續(xù)。
POPUP_TO_CONFIRM_WITH_MESSAGE 可以顯示定制的提示信息的確認(rèn)窗口 類(lèi)似POPUP_TO_CONFIRM_STEP歌懒,只是多三行的文本錯(cuò)誤診斷提示啦桌。
POPUP_TO_CONFIRM_WITH_VALUE 用此函數(shù)可以建立一個(gè)對(duì)話框用于詢問(wèn)用戶是否執(zhí)行某步操作,該操作可能會(huì)丟失數(shù)據(jù)及皂,用戶可以選擇Yes No 或者Cancel甫男。該函數(shù)可以傳入一個(gè)標(biāo)題,兩行的文本(提示問(wèn)題)和一個(gè)對(duì)象值
POPUP_TO_DECIDE 顯示一個(gè)對(duì)話框躲庄,用戶可以兩個(gè)操作中的一個(gè)或者取消〖嘏埃可以傳入三行提示文本
POPUP_TO_DECIDE_WITH_MESSAGE 類(lèi)似POPUP_TO_DECIDE
POPUP_TO_DISPLAY_TEXT 顯示多行信息的窗口
POPUP_TO_SELECT_MONTH –彈出一個(gè)對(duì)話框供選擇月噪窘。
POPUP_WITH_TABLE_DISPLAY -Provide a display of a table for user to select one,
with the value of the table line returned when selected。
PRICING – 獲得定價(jià)條件
PROFILE_GET - 從INI文件讀取一條記錄
PROFILE_SET – 往INI文件寫(xiě)一條記錄
READ_TEXT – 上傳長(zhǎng)文本
REGISTRY_GET – 從注冊(cè)表讀取一條記錄
REGISTRY_SET – 在注冊(cè)表里設(shè)置一條記錄
RFC_ABAP_INSTALL_AND_RUN – 當(dāng)MODE參數(shù)值為‘F’時(shí)運(yùn)行PROGRAM表中的程序'.
RH_GET_ACTIVE_WF_PLVAR – 獲得激活的HR計(jì)劃
RH_START_EXCEL_WITH_DATA – 啟動(dòng)Excel并用內(nèi)表給文件賦值
RH_STRUC_GET –返回所有相關(guān)的組織信息
RP_CALC_DATE_IN_INTERVAL – 年月日加減
RP_LAST_DAY_OF_MONTHS – 獲得一個(gè)月的最后一天
RPY_DYNPRO_READ – 讀取屏幕
RPY_TRANSACTION_READ – 給定一個(gè)事務(wù)代碼效扫,獲得其程序和屏幕倔监;或給定一個(gè)程序和屏幕獲得事務(wù)代碼
RS_COVERPAGE_SELECTIONS – 獲得一個(gè)報(bào)表的選擇參數(shù)列表。
RS_REFRESH_FROM_SELECTOPTIONS –獲得當(dāng)前選擇屏幕的內(nèi)容
RS_SEND_MAIL_FOR_SPOOLLIST – 在程序中給SAP office 發(fā)送消息
RS_VARIANT_CONTENTS – 獲得一個(gè)變式的內(nèi)容
RZL_SLEEP – 將當(dāng)前程序掛起
RZL_SUBMIT – 提交一個(gè)遠(yuǎn)程報(bào)表
RZL_READ_DIR_LOCAL – 讀取應(yīng)用服務(wù)器的目錄
RZL_READ_DIR – 如果服務(wù)器名字左部為空菌仁,從本地讀取目錄浩习,否則讀取遠(yuǎn)程服務(wù)器的目錄
RZL_READ_FILE – 如果為給定服務(wù)器名字則讀取本地文件,否則讀取遠(yuǎn)程服務(wù)器文件济丘。
RZL_WRITE_FILE_LOCAL - 將內(nèi)表保存到顯示服務(wù)器(not PC). 不使用OPEN DATASET因此避免了授權(quán)檢查谱秽。
SAPGUI_PROGRESS_INDICATOR – 顯示一個(gè)進(jìn)度條
SAVE_TEXT – 上傳長(zhǎng)文本
SCROLLING_IN_TABLE –當(dāng)編寫(xiě)模塊池的時(shí)候可以用它來(lái)處理滾動(dòng)
SD_DATETIME_DIFFERENCE – 兩日期作差
SO_NEW_DOCUMENT_ATT_SEND_API1 - 將文檔作為郵件的一部分發(fā)送
SO_SPLIT_FILE_AND_PATH – 將一個(gè)包含路徑的全文件名分割為文件名和路徑
SO_SPOOL_READ – 根據(jù)SPOOL號(hào)獲得printer spool
SO_WIND_SPOOL_LIST – 根據(jù)用戶瀏覽printer spool號(hào)
SX_OBJECT_CONVERT_OTF_PDF – 從OTF轉(zhuǎn)換為PDF (SAP 腳本轉(zhuǎn)換)
SX_OBJECT_CONVERT_OTF_PRT – 從OTF轉(zhuǎn)換為打印機(jī)格式(SAP 腳本轉(zhuǎn)換)
SX_OBJECT_CONVERT_OTF_RAW – 從OTF轉(zhuǎn)換為ASCII(SAP 腳本轉(zhuǎn)換)
SXPG_CALL_SYSTEM - 檢查用戶是否有執(zhí)行某個(gè)命令的權(quán)限
SXPG_COMMAND_LIST_GET – 獲得一個(gè)包含所有定義的外部OS命令的列表.
SXPG_COMMAND_DEFINITION_GET – 從R/3系統(tǒng)數(shù)據(jù)庫(kù)讀取單個(gè)外部OS命令的定義
SXPG_COMMAND_CHECK - 檢查用戶是否有執(zhí)行某個(gè)命令的權(quán)限
SXPG_COMMAND_EXECUTE -檢查用戶是否有執(zhí)行某個(gè)命令的權(quán)限洽蛀,擁有授權(quán)則執(zhí)行命令
TERMINAL_ID_GET –返回終端ID
TH_DELETE_USER – 剔除一個(gè)用戶,效果同SM04
TH_ENVIRONMENT – 獲得UNIX環(huán)境
TH_POPUP –在特定用戶屏幕上顯示一個(gè)系統(tǒng)消息
TH_REMOTE_TRANSACTION – 在遠(yuǎn)程服務(wù)器上運(yùn)行事務(wù)代碼
TH_USER_INFO – 獲得當(dāng)前用戶的信息 (會(huì)話疟赊,登陸的工作臺(tái)等)
TH_USER_LIST –顯示登陸到應(yīng)用服務(wù)器的用戶列表
UNIT_CONVERSION_SIMPLE –衡量單位轉(zhuǎn)換
UPLOAD –上傳文件到顯示服務(wù)器
UPLOAD_FILES – 上傳一個(gè)或多個(gè)文件
WRITE_LIST –顯示一個(gè)列表對(duì)象
WS_DOWNLOAD –將內(nèi)表下載到顯示服務(wù)器
WS_EXCEL –啟動(dòng)EXCEL
WS_EXECUTE –執(zhí)行一個(gè)程序
WS_FILE_DELETE – 刪除一個(gè)文件
WS_FILENAME_GET –調(diào)用文件選擇對(duì)話框
WS_MSG –顯示一個(gè)對(duì)話框顯示在線消息
WS_UPLOAD – 從顯示服務(wù)器上傳文件到內(nèi)表
WS_VOLUME_GET –獲得終端設(shè)備標(biāo)簽
WWW_LIST_TO_HTML – 運(yùn)行一個(gè)報(bào)表之后郊供,調(diào)用這個(gè)方法將列表輸出轉(zhuǎn)換成HTML
SD_VBAP_READ_WITH_VBELN 根據(jù)銷(xiāo)售訂單讀取表vbap中的信息
EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新組織
VIEW_MAINTENANCE_CALL 維護(hù)表視圖
DY_GET_FOCUS 獲得屏幕焦點(diǎn)
DY_GET_SET_FIELD_VALUE 獲得或者設(shè)置屏幕字段的值
F4IF_INT_TABLE_VALUE_REQUEST 顯示檢索help
CONVERSION_EXIT_CUNIT_OUTPUT 單位轉(zhuǎn)換
SJIS_DBC_TO_SBC 全角轉(zhuǎn)半角
SJIS_SBC_TO_DBC 半角轉(zhuǎn)換為全角
CO_R0_CHECK_DECIMAL_POINT 根據(jù)單位檢查數(shù)據(jù)的小數(shù)位
POSTAL_CODE_CHECK 檢查郵政編碼 GET_JOB_RUNTIME_INFO 獲得job相關(guān)信息
TERMINAL_ID_GET 獲得終端
idDATE_CONVERT_TO_FACTORYDATE 把輸入日期轉(zhuǎn)為工廠日歷日期
MESSAGE_TEXT_BUILD 把消息轉(zhuǎn)為文本
CONVERT_TO_LOCAL_CURRENCY 按照指定日期匯率轉(zhuǎn)換金額為指定貨幣類(lèi)型
SSF_FUNCTION_MODULE_NAME 根據(jù)form名取得對(duì)應(yīng)的函數(shù)名(SmartForm)
DATE_CHECK_PLAUSIBILITY 檢查日期合法性
CHECKcl_gui_frontend_services=>gui_upload 上傳到服務(wù)器
cl_gui_frontend_services=>gui_download 下載到本地
SSF_FUNCTION_MODULE_NAME SMARTFORMS輸出報(bào)表時(shí),生成一個(gè)函數(shù)名稱(chēng)近哟,然后CALL這個(gè)名
通過(guò)這個(gè)日期得出那天是星期幾
DAY_IN_WEEK
用來(lái)得到將來(lái)/過(guò)去的日期的
RP_CALC_DATE_IN_INTERVAL
日期的加減
BKK_ADD_MONTH_TO_DATE
一組有用的用戶交互窗口函數(shù)
POPUP_TO_CONFIRM_LOSS_OF_DATA 顯示有YES/NO的彈出窗口驮审,提示用戶未保存的數(shù)據(jù)將丟失
POPUP_TO_CONFIRM_STEP 提示是否確認(rèn)操作的彈出窗口
POPUP_TO_CONFIRM_WITH_MESSAGE 可以顯示定制的提示信息的確認(rèn)窗口
POPUP_TO_CONFIRM_WITH_VALUE 顯示確認(rèn)用戶對(duì)某個(gè)特定對(duì)象的操作的彈出窗口
POPUP_TO_DECIDE 將待確認(rèn)選項(xiàng)以單選按鈕的方式顯示的彈出窗口
POPUP_TO_DECIDE_WITH_MESSAGE 帶消息的確認(rèn)窗口
POPUP_TO_DISPLAY_TEXT 顯示多行信息的窗口
POPUP_TO_SELECT_MONTH 月份選擇窗口
POPUP_WITH_TABLE_DISPLAY 有表格對(duì)象的確認(rèn)窗口
一組操縱客戶端文件系統(tǒng)的函數(shù)
GUI_CREATE_DIRECTORY 在PC上建立文件目錄
GUI_DELETE_FILE 刪除PC上的文件
GUI_DOWNLOAD 文件下載函數(shù)
GUI_EXEC 執(zhí)行PC上的程序,或者打開(kāi)文件
GUI_GET_DESKTOP_INFO 得到PC客戶端的系統(tǒng)信息吉执,比如操作系統(tǒng)等
GUI_REMOVE_DIRECTORY 刪除PC目錄
GUI_RUN 運(yùn)行PC程序(ShellExecute)
GUI_UPLOAD 從PC上傳程序
判斷某天是否是假日
HOLIDAY_CHECK_AND_GET_INFO
ABAP_DOCU_DOWNLOAD
Download ABAP documentation in HTML format.
GET_CURRENT_YEAR
得到當(dāng)前的財(cái)政年(fiscal year)
察看某日期的屬性疯淫,包括該日期是星期幾,第幾天(周2=2)戳玫,是不是公共假期等熙掺,需要輸入國(guó)家日歷。
DAY_ATTRIBUTES_GET
Return useful information about a day. Will tell you the day of the week as a word (Tuesday), the day of the week (2 would be Tuedsay), whether the day is a holiday, and more.(provided by Francois Henrotte)?
CLPB_IMPORT :從剪貼板導(dǎo)入internal table
CLPB_EXPORT : 從internal table輸入到剪貼板
示例程序:GRCLPB_1

sap abap programming---關(guān)于ABAP程序執(zhí)行效率和優(yōu)化(z)

程序的效率是每個(gè)程序員都應(yīng)該重視的,無(wú)論是采用的哪一種語(yǔ)言進(jìn)行開(kāi)發(fā).
在我做過(guò)的一個(gè)項(xiàng)目中量九,一個(gè)幾萬(wàn)條數(shù)據(jù)的運(yùn)行适掰,在沒(méi)有考慮效率,對(duì)代碼沒(méi)有進(jìn)行優(yōu)化前的運(yùn)行時(shí)間是7個(gè)小時(shí)荠列,當(dāng)對(duì)代碼進(jìn)行一系列的優(yōu)化修改后类浪,運(yùn)行的時(shí)間就只剩一個(gè)小時(shí),由此可見(jiàn)肌似,代碼的優(yōu)化是多么的重要费就。
那么,我們?cè)趯?xiě)ABAP程序時(shí)川队,怎樣的語(yǔ)句才能提高到效率呢力细,下面是我總結(jié)到的幾點(diǎn):
1、抽取數(shù)據(jù)時(shí)固额,避免使用SELECT *, 盡量使用SELECT A B INTO TABLE ITAB這樣的語(yǔ)句眠蚂。
2、不要使用SELECT...ENDSELECT語(yǔ)句斗躏。
3逝慧、盡量避免在LOOP中訪問(wèn)數(shù)據(jù)庫(kù)∽牟冢可以在之前先把數(shù)據(jù)取到內(nèi)表笛臣,在LOOP中用READ TABLE WITH KEY ... BINARY SEARCH.進(jìn)行讀取對(duì)應(yīng)的數(shù)據(jù)。
4隧饼、用SORT代替ORDER BY沈堡。
5、避免使用嵌套的循環(huán)燕雁。
6诞丽、盡量不要使用JOIN進(jìn)行多表連接鲸拥。把一個(gè)表的數(shù)據(jù)先取到內(nèi)表,然后使用FOR ALL ENTRIES語(yǔ)句再進(jìn)行抽取率拒。
7崩泡、使用二分查找法。
READ TABLE的之前使用SORT TABLE BY對(duì)內(nèi)表進(jìn)行排序, 然后使用READ TABLE WITH KEY ...BINARY SEARCH.
8猬膨、避免使用SELECT DISTINCT語(yǔ)句角撞。在抽取數(shù)據(jù)到內(nèi)表后用DELETE ADJACENT DUPLICATES語(yǔ)句來(lái)消除重復(fù)行。
9勃痴、盡量加多WHERE語(yǔ)句進(jìn)行條件抽取谒所。
以上,說(shuō)的還不全沛申,會(huì)進(jìn)行不斷更新劣领。
另外,可以通過(guò)TCODE:ST05 SE30 進(jìn)行程序和SQL語(yǔ)句性能和效率的分析
sap 在ABAP 中 MOVE ... TO 和 WRITE ... TO 的區(qū)別

WRITE ... TO 把源的格式 附值到目標(biāo)铁材。

MOVE ... TO 直接把源的值附到目標(biāo)尖淘。

示例:

data: gv_char1(20) type c,
gv_char2(20) type c,
dec1(10) type p decimals 2 value '22345.89'.

start-of-selection.

  • date *
    write:/ 'date variable'.
    write sy-datum to gv_char1.
    write:/ 'write to', gv_char1.
    move sy-datum to gv_char2.
    write:/ 'move to', gv_char2.
    skip 1.
  • decimal *
    write:/ 'decimal variable'.
    write dec1 to gv_char1.
    write:/ 'write to', gv_char1.
    move dec1 to gv_char2.
    write:/'move to', gv_char2.

Start of Content Area
Assigning Values with MOVE

To assign the value of a data object source to a variable destination, use the following statement:

MOVE source TO destination.

or the equivalent statement

destination = source.

The content of source remains unchanged, source does not therefore have to be a variable - it can also be a literal, a text symbol, or a constant. You must always specify decimal points with a period (.), regardless of the user’s personal settings.

Multiple assignments

f4 = f3 = f2 = f1.

are also possible. ABAP processes them from right to left as follows:

MOVE f1 TO f2.
MOVE f2 TO f3.
MOVE f3 TO f4.

In the MOVE statement (or when you assign one value to another with the equal sign), it is not possible to specify the field names dynamically as the contents of other fields. If you need to do this, you must use field symbols .

The source and target fields can be of different data types. The result of the value assignment depends on whether these data types are compatible and whether a type conversion can be performed. If there is no conversion rule between the data types in question, no assignment can be made.

Example

DATA: t(10) TYPE c,
number TYPE p DECIMALS 2,
count TYPE i.

t = 1111.
MOVE '5.75' TO number.
count = number.

Following these assignments, the fields t, number and count have the values ‘1111 ’, 5.75, and 6 respectively. When you assign the number literal 1111 to T, it is converted into a character field with length 10. When you assign number to count , the decimal number is rounded to an integer (as long as the program attribute Fixed pt. arithmetic has been set).
Assigning Values Between Components of Structures

The rules for value assignments between data objects also apply to structures. With the command

DATA: struct1 TYPE structure,
struct2 TYPE structure.
struct1 = struct2.

two structures of the same type can be assigned to one another without difficulty. Here, the entire source structure is seen as a unit and copied to the source structure. It is then possible to access the components individually again. If the structures in question are not compatible, see the conversion rules for structures.

In practice, however, you will often only need to assign certain components of a structure to be certain components of another structure. ABAP has a special statement for this purpose:

MOVE-CORRESPONDING sourcestruct TO destinationstruct.

This statement assigns the contents of the components of structure sourcestruct to the components of the destinationstruct structure that have identical names.

When it is executed, it is broken down into a set of MOVEstatements, one for each pair of fields with identical names, as follows:

MOVE sourcestruct-comp1 TO destinationstruct-comp1.

MOVE sourcestruct-comp2 TO destinationstruct-comp2.

...

Any necessary type conversions are performed individually.

Example

DATA: BEGIN OF address,
firstname(20) TYPE c VALUE 'Fred',
surname(20) TYPE c VALUE 'Flintstone',
initials(4) TYPE c VALUE 'FF',
street(20) TYPE c VALUE 'Cave Avenue',
number TYPE i VALUE '11',
postcode(5) TYPE n VALUE '98765',
city(20) TYPE c VALUE 'Bedrock',
END OF address.

DATA: BEGIN OF name,
surname(20) TYPE c,
firstname(20) TYPE c,
initials(4) TYPE c,
title(10) TYPE c VALUE 'Mister',
END OF name.

MOVE-CORRESPONDING address TO name.

In this example, the values of name-surname, name-firstname and name-initials are set to 'Flintstone’, ‘Fred’, and 'FF'. name-title always has the value ‘Mister’.

This graphic is explained in the accompanying text
sap ABAP--關(guān)于Data Reference的使用---FIELD-SYMBOLS

Data References(只能指向abap定義的基本數(shù)據(jù)或者基本數(shù)據(jù)組合體)

1、定義數(shù)據(jù)參考變量(Data References)

DATA dref TYPE REF TO DATA.(指向任意類(lèi)型著觉,但在創(chuàng)建時(shí)必須指定對(duì)象類(lèi)型)

DATA dref TYPE REF TO DATA_TYPE.

或者

TYPES t_dref TYPE REF TO DATA.

DATA dref TYPE t_dref.

在完成地址變量定義時(shí)村生,變量沒(méi)有指向任何對(duì)象,此時(shí)你不可引用饼丘。只有在變量賦值后在引用趁桃。地址變量的賦值有兩種方法:

CREATE DATA

GET REFERENCE OF dobj INTO dref.

2、動(dòng)態(tài)創(chuàng)建數(shù)據(jù)參考的內(nèi)存空間(CREATE DATA)

CREATE DATA dref {TYPE type}|{LIKE dobj}這種語(yǔ)句創(chuàng)建的對(duì)象沒(méi)有名稱(chēng)肄鸽,只有地址變量指向該內(nèi)存變量卫病;在申明參考變量時(shí),未指定類(lèi)型則必須加{TYPE type}|{LIKE dobj}說(shuō)明典徘。

有時(shí)需要?jiǎng)討B(tài)創(chuàng)建動(dòng)態(tài)類(lèi)型數(shù)據(jù)對(duì)象蟀苛,語(yǔ)法如下

CREATE DATA dref TYPE (name).

3、將數(shù)據(jù)地址賦值給數(shù)據(jù)參考變量(GET REFERENCE)

GET REFERENCE OF dobj INTO dref.

4逮诲、訪問(wèn)數(shù)據(jù)參考變量指定的數(shù)據(jù)

訪問(wèn)數(shù)據(jù)參考變量指定的數(shù)據(jù)有兩種情況:

  1. 對(duì)于使用DATA dref TYPE REF TO DATA_TYPE來(lái)聲明的數(shù)據(jù)參考變量帜平,程序可以直接通過(guò)->*運(yùn)算符直接訪問(wèn)數(shù)據(jù);

代碼樣例

types: begin of STRUC_1,
A type I,
B type ref to SFLIGHT,
C type P,
end of STRUC_1.
data: S1 type STRUC_1.
types: begin of STRUC_2,
X(10) type C,
Y type ref to STRUC_1,
Z type I,
end of STRUC_2.
data: S2 type STRUC_2,
R2 type ref to STRUC_2.
if S1-A > 10.
create data S1-B.
S1-B->CARRID = 'LH'.
S1-B->PAYMENTSUM = 1000.
endif.

S2-Y->A = 100.
S2-Y->*-A = 200. "Same as S2-Y->A
S2-Y->B->FLDATE = SY-DATUM.

  1. 對(duì)于使用DATA dref TYPE REF TO DATA來(lái)聲明的數(shù)據(jù)參考變量汛骂,程序如果要訪問(wèn)數(shù)據(jù)參考變量指定的數(shù)據(jù)罕模,你首先要將數(shù)據(jù)參考變量賦值給一個(gè)字段符號(hào)(Field sysbol)(是不能直接通過(guò)數(shù)據(jù)參考變量來(lái)訪問(wèn)的).如果數(shù)據(jù)參考變量為初始化狀態(tài)评腺, sy-subrc就返回4帘瞭。

ASSIGN dref->* TO <fs> [CASTING ...].

代碼樣例

DATA: numref TYPE REF TO DATA,
number TYPE I VALUE 123.
FIELD-SYMBOLS: <fs> TYPE ANY.
GET REFERENCE OF number INTO numref.
ASSIGN numref->* TO <fs>.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蒿讥,隨后出現(xiàn)的幾起案子蝶念,更是在濱河造成了極大的恐慌抛腕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媒殉,死亡現(xiàn)場(chǎng)離奇詭異担敌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)廷蓉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)全封,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人桃犬,你說(shuō)我怎么就攤上這事刹悴。” “怎么了攒暇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵土匀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我形用,道長(zhǎng)就轧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任田度,我火速辦了婚禮妒御,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘每币。我一直安慰自己携丁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布兰怠。 她就那樣靜靜地躺著梦鉴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揭保。 梳的紋絲不亂的頭發(fā)上肥橙,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音秸侣,去河邊找鬼存筏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛味榛,可吹牛的內(nèi)容都是我干的椭坚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼搏色,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼善茎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起频轿,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤垂涯,失蹤者是張志新(化名)和其女友劉穎烁焙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體耕赘,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骄蝇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了操骡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九火。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖册招,靈堂內(nèi)的尸體忽然破棺而出吃既,到底是詐尸還是另有隱情,我是刑警寧澤跨细,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布鹦倚,位于F島的核電站,受9級(jí)特大地震影響冀惭,放射性物質(zhì)發(fā)生泄漏震叙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一散休、第九天 我趴在偏房一處隱蔽的房頂上張望媒楼。 院中可真熱鬧,春花似錦戚丸、人聲如沸划址。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)夺颤。三九已至,卻和暖如春胁勺,著一層夾襖步出監(jiān)牢的瞬間世澜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工署穗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寥裂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓案疲,卻偏偏與公主長(zhǎng)得像封恰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子褐啡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,509評(píng)論 0 23
  • 緬懷著過(guò)去又憧憬著未來(lái) 每個(gè)人都會(huì)在某一天诺舔,遇到自己的一生所愛(ài),在那之前,不管他遇到了什么人混萝,發(fā)生了什么事,經(jīng)歷過(guò)...
    巷子里的貓耳閱讀 261評(píng)論 0 0
  • 下載簡(jiǎn)書(shū)快一周了萍恕,我已經(jīng)深深的喜歡上了她逸嘀,我像一個(gè)淘金者上下翻掏著奇珍異寶,我不僅愛(ài)看文章允粤,也愛(ài)看評(píng)論崭倘,不像...
    吹風(fēng)的少年閱讀 295評(píng)論 0 0
  • 《那些我在股市里踩過(guò)的坑》系列文章短時(shí)間內(nèi)就算結(jié)束了,感覺(jué)自己有很多東西還是沒(méi)有表達(dá)出來(lái)类垫。主要是寫(xiě)作太倉(cāng)促司光,沒(méi)有針...
    濤光揚(yáng)慧閱讀 1,076評(píng)論 0 3
  • 我現(xiàn)在正是一個(gè)剛要踏入大學(xué)們的準(zhǔn)大學(xué)生售躁。其實(shí)現(xiàn)在有一種很直接的觀念就是大學(xué)選的專(zhuān)業(yè)就是為了以后找工作準(zhǔn)備的坞淮。但是...
    epinghong閱讀 265評(píng)論 2 1