日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ABAP语法完整版

發布時間:2025/3/21 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP语法完整版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SAP ABAP / 4 基礎知識學習??

數據類型

C :字符串

D :日期型格式為 YYYYMMDD? 例:'1999/12/03'

F : 浮點數長度為8

I :整數

N :數值組成的字符串 如:011,'302'

P : PACKED數用于小數點數值? 如:12.00542

T : 時間格式為:HHMMSS 如:'14:03:00'

X : 16進制數 如:'1A03'

*-------------------------------------------------------------------------------------*

變量聲明

DATA <F> [<Length>] <type> [<value>][decimals]

???? <F> 變量名稱

???? <length><type> 變量類型及長度

???? <value> 初值

???? <decimals> 小數位數

????

exp:

?? DATA : COUNTER? TYPE P DECIMALS 3.

????????? NAME(10) TYPE C VALUE 'DELTA'.

????????? S_DATE?? TYPE D VALUE '19991203'.

exp:

?? DATA : BEGIN OF PERSON,

??????????? NAME(10) TYPE C,

??????????? AGE????? TYPE I,

??????????? WEIGHT?? TYPE DECIMALS 2,

????????? END OF PERSON.

另外,有關DATA聲明的指令還有: CONSTANTS(聲明常數)、STATICS(臨時變量聲明).

exp:

CONSTANTS? PI? TYPE? P? DECIMALS? 5? VALUE? '3.14159'.

STATICS 關鍵字

聲明的變量僅在目前的程序中使用, 結束后會自動釋放

語法:?

??????? STATICS <c> [<length>] <type> [<value>] [<decimals>]

系統專用變量說明

?? 系統內部專門創建了SYST這個STRUCTURE,里面的欄位存放系統變量,常用的系統變量有:

?? SY-SUBRC:? 系統執行某指令后,表示執行成功與否的變量,'0'表示成功

?? SY-UNAME:? 當前使用者登入SAP的USERNAME;

?? SY-DATUM:? 當前系統日期;

?? SY-UZEIT:? 當前系統時間;

?? SY-TCODE:? 當前執行程序的Transaction code

?? SY-INDEX:? 當前LOOP循環過的次數

?? SY-TABIX:? 當前處理的是internal table 的第幾筆

?? SY-TMAXL:? Internal table的總筆數

?? SY-SROWS:? 屏幕總行數;

?? SY-SCOLS:? 屏幕總列數;

?? SY-MANDT:? CLIENT NUMBER

?? SY-VLINE:? 畫豎線

?? SY-ULINE:? 畫橫線

??

TYPE 關鍵字

? 用來指定資料型態或聲明自定資料型態

? Example:

??????? TYPES:? BEGIN? OF? MYLIST,

?????????????????? NAME(10)? TYPE? C,

?????????????????? NUMBER?? TYPE? I,

??????????????? END? OF? MYLIST.

??????? DATA? LIST? TYPE? MYLIST.

LIKE 關鍵字

?? 跟TYPE關鍵字使用格式相同, 如

?? DATA? TRANSCODE? LIKE? SY-TCODE.

?? 不同的是 LIKE 用在已有值的資料項, 如系統變量, 而TYPE關鍵字則是用在指定資料型態。

TABLES 關鍵字

用來聲明 Table Work Area 的數據, 對應至 ABAP/4 資料文件(Dictionary Object), 由SQL 指令加載所需數據

語法:

TABLES <dbtab>

Example:

TABLES: SPFL.

SELECT * FROM SPFL.

WRITE: SPFL-MANDT, SPFL-CARRID,SPFL-CONNECTION.

ENDSELECT.

從ABAP/4 Dictionary 的 SPFL 檔載入MANDT,CARRID,CONNECTION 三個字段至SPFL 此Table Work Area

??

*-------------------------------------------------------------------------------------*

輸出

一. WRITE 語句

ABAP/4用來在屏幕上輸出資料的指令是WRITE指令,例如:

???? WRITE: 'USER NAME IS:', SY-UNAME.

二. 指定屏幕輸出位置

指定輸出位置的語句格式為:

????? WRITE: [AT] [ / ] [<pos>] [(<len>)] 資料項 [<par>]

其中: / : 在下一行輸出

<pos>: 指定輸出的行號;

(<len>):指定輸出位數(長度)

<par>: 指定顯示格式參數,參數有:

????????? LEFT-JUSTIFIED? 資料*左對齊

????????? CENTERED??????? 資料*中間對齊

????????? RIGHT-JUSTIFIED 資料*右對齊

????????? UNDER <g>?????? 正對在資料項<g>的下面顯示

????????? NO-GAP????????? 緊接著顯示,不留空格

????????? USING EDIT MASK <m>: 使用內嵌子元顯示, 如 12:03:20

????????? USING NO EDIT MASK: 不使用內嵌子元

????????? NO-ZER????????? 數字前面 0 的部分不顯示

????????? NO-SIGN:??????? 不顯示正負號

????????? DECIMALS <d>:?? 顯示 <d> 位小數

????????? EXPOENT <e>:??? F(浮點數)指數的值

????????? ROUND <r>:????? 四舍五入至小數點后<r>位

????????? CURRENCY <c>:?? 幣別顯示

????????? DD/MM/YY :????? 日期顯示格式

????????? MM/DD/YY:??????

????????? YY/MM/DD:

????????? YY/DD/MM

????????? MM/DD/YYYY:

????????? DD/MM/YYYY

????????? YYYY/MM/DD:

????????? YYYY/DD/MM:

例如1: WRITE: /10(6) 'ABCDEFGHIJK'.

輸出結果為:??????? ABCDEF

例如2: DATA: X TYPE I VALUE '11:20:30',

???????????? A(5)? TYPE C VALUE 'AB? CDE'.

????? WRITE: / X USING EDIT MASK '__:__:__'.

????? WRITE: / X USING EDIT MASK '$___,___'.

????? WRITE: / Y NO-GAP.

輸出結果為:

??????? 11:20:30

??????? $112,030

??????? ABCDEF

例如3: DATA: LEN TYPE I VALUE 10,

?????? POS TYPE I VALUE 11,

?????? TEXT(10)?? VALUE '1234567890'

?????? WRITE 'The text ------------ appears in the text.'.

?????? WRITE AT POS(LEN) TEXT.

WRITE TO 語句的基本 形式

要將值(文字)或源字段內容寫入目標字段,可以使用 WRITE TO 語句:

語法

WRITE <F1> TO <F2> [<option>].

DATA: NUMBER TYPE F VALUE '4.3',

????? TEXT(10),

????? FLOAT TYPE F,

????? PACK? TYPE P DECIMALS 1.

WRITE NUMBER.

WRITE NUMBER TO TEXT EXPONENT 2.

WRITE / TEXT.

WRITE NUMBER TO FLOAT.

WRITE / FLOAT.

WRITE NUMBER TO PACK.

WRITE / PACK.

MOVE NUMBER TO PACK.

WRITE / PACK.

exp:

DATA: NAME(10)?? VALUE 'SOURCE',

????? SOURCE(10) VALUE 'Antony',

????? TARGET(10).

...

WRITE (NAME) TO TARGET.

WRITE: TARGET.

exp :

DATA: COUNTER TYPE I.

COMPUTE COUNTER = COUNTER + 1.

COUNTER = COUNTER + 1.

ADD 1 TO COUNTER.

在此,三條運算語句進行相同算術運算

輸出屏幕上的線和空行

用下列語法,可以在輸出屏幕上生成水平線:

語法

ULINE [AT [/][<pos>][(<len>)]].

它等同于

WRITE [AT [/][<pos>][(<len>)]] SY-ULINE.

AT 后的格式規范,與在在屏幕上定位 WRITE 輸出(頁 28)中為 WRITE 語句說明的格式規范完全一樣。

如果沒有格式規范,系統則開始新的一行,并用水平線填充該行。否則,只按指定輸出水平線。

生成水平線的另一種方法,是在 WRITE 語句中鍵入恰當數量的連字符,如下所示:

WRITE [AT [/][<pos>][(<len>)]] '-----...'.

垂直線

用下列語法 ,可以在輸出屏幕上生成垂直線:

語法

WRITE [AT [/][<pos>]] SY-VLINE.

WRITE [AT [/][<pos>]] '|'.

空行

用下列語法 ,可以在輸出屏幕上生成空行:

語法

SKIP [<n>].

該語句從當前行開始,在輸出屏幕上生成 <n> 個空行。如果沒有指定 <n> 的值,就輸出一個空行 。

要將輸出定位在屏幕的指定行上,請使用:

語法

SKIP TO LINE <n>.

該語句允許將輸出位置向上或向下移動。

???????

四. 顯示圖示:

語法: WRITE: <symbol-name> AS SYMBOL.

???? WRITE: <icon-name>? AS ICON.

例如: INCLUDE? <SYMBOL>.

???? INCLUDE? <ICON>.

WRITE: / 'Phone symbol:', SYM_PHONE AS SYMBOL.

WRITE: / 'Alarm Icon:', ICON_VOICE_OUTPUT AS ICON.

要查看系統所提供有那些符號及圖示,可選擇'EDIT'下的'Insert Statement',選擇'Write',接下來選擇要查看的群組,如SYMBOL 或ICON, 接下來按'Display'即可.

*-------------------------------------------------------------------------------------*

一. Internal Table 的聲明

ABAP/4中的Internal Table是一種Data Structure,類似于其他語言中的STRUTURE,它可以由幾個不同類型的欄位(field)組成,用來表示具有不同屬性的某一事物,單獨一筆資料表示某個事物,多筆資料表示具有相同屬性的多個事物.

Internal table 的定義有以下幾種格式:

格式一.?? DATA: BEGIN OF <internal table>? OCCURS? <n>,

?????????????????? <field 1>? TYPE <type1>,

????????????????? [<field 2>? TYPE <type 2>,

?????????????????? <field 3>? TYPE <type 3>,

??????????????????? …????????????????? ]

??????????????? END OF? <internal table>.

???? 語法:

?????????? DATA? <f>? <type>? OCCURS? <n>? [WITH? HEADER? LINE]

?????????? Example:

?????????????????? DATA? VECTOR? TYPE? I? OCCURS? 10? WITH? HEADER? LINE.

??????????????????

格式二.?? TYPES: BEGIN OF <work area>,

???????????????????? <field 1>? TYPE <type1>,

??????????????????? [<field 2>? TYPE <type 2>,

???????????????????? <field 3>? TYPE <type 3>,

??????????????????? …????????????????? ]

???????????????? END OF <work area>.

????????? TYPES <internal table> TYPE <work area> OCCURS <n>.

?????????

格式三.?? DATA: BEGIN OF <work area>.

????????????????? INCLUDE STRUCTURE <table name>.

????????? DATA: END OF <work area>.

????????? DATA: <internal table> LIKE <work area> OCCURS <n>.

exp:

?????????

TYPES VECTOR TYPE I OCCURS 10.

TYPES: BEGIN OF LINE,

???????? COLUMN1 TYPE I,

???????? COLUMN2 TYPE I,

???????? COLUMN3 TYPE I,

?????? END OF LINE.

TYPES ITAB TYPE LINE OCCURS 10.

TYPES: BEGIN OF DEEPLINE,

????????? TABLE1 TYPE VECTOR,

????????? TABLE2 TYPE ITAB,

?????? END OF DEEPLINE.

TYPES DEEPTABLE TYPE DEEPLINE OCCURS 10.

本示例創建與上例相同的內表數據類型(VECTOR 和 ITAB)。然后創建數據類型 DEEPLINE 作為字段串,包含這些內表作為組件。通過該字段串,數據類型 DEEPTABLE 被創建為內表。因此該內表的元素本身就是內表。

exp :

TYPES: BEGIN OF LINE,

???????? COLUMN1 TYPE I,

???????? COLUMN2 TYPE I,

???????? COLUMN3 TYPE I,

?????? END OF LINE.

TYPES ITAB TYPE LINE OCCURS 10.

DATA TAB1 TYPE ITAB.

DATA TAB2 LIKE TAB1 WITH HEADER LINE.

同創建內表數據類型(頁 99)中所示,該示例創建數據類型 ITAB 作為內表。通過使用 DATA 語句的 TYPE 參數引用 ITAB,使數據對象 TAB1 與 ITAB 結構相同。通過使用 DATA 語句的 LIKE 參數引用 TAB1,使數據對象 TAB2 結構相同。創建的 TAB2 帶表頭行。因此,可以在程序中使用 TAB2-COLUMN1、TAB2-COLUMN2 和 TAB2-COLUMN3 等定位表格工作區域 TAB2。

exp :

DATA FLIGHT_TAB LIKE SFLIGHT OCCURS 10.

本示例創建數據對象 FLIGHT_TAB, 其結構與數據庫表格 SFLIGHT 相同。

本示例介紹 如何采用兩種不同的步驟創建同一內表。

TYPES VECTOR_TYPE TYPE I OCCURS 10.

DATA VECTOR TYPE VECTOR_TYPE WITH HEADER LINE.

在此創建一個內表數據類型 VECTOR_TYPE,其行包含首先創建的基本類型 I 字段。然后,通過引用 VECTOR_TYPE 創建數據對象 VECTOR。通過使用 WITH HEADER LINE 選項還創建表格工作區域 VECTOR。在這種情況下,表格工作區域包含一種類型 I 字段,可以通過名稱 VECTOR 定位。

DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.

在這種情況下,通過直接在 DATA 語句中使用 OCCURS 選項創建完全一樣的數據類型 VECTOR。

*-------------------------------------------------------------------------------------*

1. TYPES type.

2. TYPES type(len).

3. TYPES: BEGIN OF structype? ...

????????? END OF structype.

4. TYPES itabtype {TYPE tabkind OF linetype LIKE tabkind OF lineobj}

???????? [WITH [UNIQUE|NON-UNIQUE] keydef] [INITIAL SIZE n].

5. TYPES itabtype TYPE RANGE OF type.

?? TYPES itabtype LIKE RANGE OF f.

6. TYPES itabtype {TYPE linetype|LIKE lineobj} OCCURS n.

*-------------------------------------------------------------------------------------*

?????????

APPEND LINE

格式:APPEND <work area> TO <internal table>

舉例一:(使用WORK AREA)

DATA : BEGIN OF LINE,

???????????? COL1 TYPE I,

???????????? COL2 TYPE I,

?????? END OF LINE.

DATA ITAB LIKE LINE OCCURS 10.

DO 2 TIMES.

?? LINE-COL1 = SY-INDEX.

?? LINE-COL2 = SY-INDEX ** 2.

?? APPEND LINE TO ITAB.

ENDDO.

LOOP AT ITAB INTO LINE.

???? WRITE : / LINE-COL1,LINE-COL2.

ENDLOOP.

舉例二 (不使用WORK AREA)

DATA : BEGIN OF ITAB OCCURS 10,

???????????? COL1 TYPE I,

???????????? COL2 TYPE I,

?????? END OF ITAB.

DO 2 TIMES.

?? ITAB-COL1 = SY-INDEX.

?? ITAB-COL2 = SY-INDEX ** 2.

?? APPEND ITAB.

ENDDO.

LOOP AT ITAB.

???? WRITE : / ITAB-COL1,ITAB-COL2.

ENDLOOP.

exp:

DATA: BEGIN OF ITAB OCCURS 10,

??????? COL1 TYPE C,

??????? COL2 TYPE I,

????? END OF ITAB.

DO 3 TIMES.

? APPEND INITIAL LINE TO ITAB.

? ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX ** 2.

? APPEND ITAB.

ENDDO.

LOOP AT ITAB.

? WRITE: / ITAB-COL1, ITAB-COL2.

ENDLOOP.

舉例三. (加入另一個Internal table的元素)

?????? 格式: APPEND LINES OF <itab1> [FROM <n1> ] [TO <n2>] TO <itab2>.

?????? 將<itab1>的元素加入至<itab2>中,可選取自<n1>至<n2>的范圍.

?????? APPEND LINES OF ITAB TO JTAB.

COLLECT LINE

COLLECT 指令也是將元素加入Internal table中,與APPEND 的區別是: COLLECT指令在非數值欄位相同的情況下,將數值欄位匯總.

格式:? COLLECT [<work area> INTO ] <itab>

DATA: BEGIN OF ITAB OCCURS 3,

???????????? COL1(3)? TYPE C,

???????????? COL2???? TYPE I,

?????? END OF ITAB.

?????? ITAB-COL1 = 'ABC'.??? ITAB-COL2 = 10.

?????? COLLECT? ITAB.

?????? ITAB-COL1 = 'XYZ'.??? ITAB-COL2 = 20.

?????? COLLECT? ITAB.

?????? ITAB-COL1 = 'ABC'.??? ITAB-COL2 = 80.

?????? COLLECT? ITAB.

此時, internal table中放的是2筆數據, 分別為:

?????? ITAB-COL1??????? ITAB-COL2

??????? 'ABC'?????????????? 90

??????? 'XYZ'?????????????? 20

*-------------------------------------------------------------------------------------*

INSERT LINE

將元素插入在指定的internal table位置之前.

格式: INSERT [<wa> INTO] [INITIAL LINE INTO ] <itab> [INDEX <idx>]

或者: INSERT LINES OF <itab1> [FROM <n1> TO <n2>] INTO <itab2> INDEX <idx>

其中: <wa>即work area,工作區中的元素.

[INITIAL LINE INTO] :插入一筆初始化的記錄.

<itab>: internal table

[INDEX <idx>]: internal table 的記錄號.(新加入的元素放在此記錄前面)

???????? Example:

????????????????? DATA:? BEGIN? OF? LINE,

?????????????????????????? COL1? TYPE? I,

?????????????????????????? COL2? TYPE? I,

?????????????????????????? END? OF? LINE.

????????????????? DATA? ITAB? LIKE? LINE? OCCURS? 10.

????????????????? DO? 3? TIMES.

???????????????????? LINE-COL1 = SY-INDEX *10.

???????????????????? LINE-COL2 = SY-INDEX *20.

???????????????????? APPEND? LINE? INTO? ITAB.

????????????????? ENDDO.

????????????????? LINE-COL1=100.

????????????????? LINE-COL2=200.

????????????????? INSERT? LINE? INTO? ITAB? INDEX? 2.? "插入在位置2之前

????????????????? LOOP? AT? ITAB? INTO? LINE.

??????????????????? WRITE:? /? SY-TABIX,LINE-COL1,LINE-COL2. "SY-TABIX為Table位置

???????????????? ENDLOOP.

???????????????? 執行結果:

??????????????????????????? 1??????? 10?????? 20

??????????????????????????? 2?????? 100????? 200? "插入的元素

??????????????????????????? 3??????? 20?????? 40

??????????????????????????? 4??????? 30?????? 60

插入另一Internal Table元素

?? 語法:

???????? INSERT? LINES? OF? <itab1>? [FROM <n1> TO <n2>]? TO? <itab2>? INDEX <idx>

??????? 將<itab1>的元素插入至<itab2>中, 位置在 <idx>之前, 可選取自<n1>至<n2>的范圍

???????? Example:

????????????????? APPEND? LINES? OF? ITAB? TO? JTAB? INDEX? 3.

????????????????? 將ITAB所有元素插入JTAB中, 位置在第三個元素之前

*-------------------------------------------------------------------------------------*

讀取internal table

格式一:

LOOP AT <itab> [INTO <wa>][FROM <n1> TO <n2>][WHERE <conditions>]

?????? <statement>

ENDLOOP.

???????? Example:

????????????????? LOOP? AT? ITAB? INTO? LINE? WHERE? COL1 >100.

???????????????????? WRITE:? /? SY-TABIX,LINE-COL1.

????????????????? ENDLOOP.

????????????????? 僅讀取 COL1 > 100 的元素

格式二:

READ TABLE <itab> [INTO <wa>] [INDEX <idx> / WITH KEY <conditions>]

舉例. (格式二)

DATA: BEGIN OF ITAB OCCURS 10,

???????????? COL1 TYPE I,

???????????? COL2 TYPE I,

????? END OF ITAB.

????? DO 10 TIMES.

????????? ITAB-COL1 = SY-INDEX.

????????? ITAB-COL2 = SY-INDEX * 2.

????????? APPEND ITAB.

ENDDO.

READ TABLE ITAB INDEX 3.

(或者: READ TABLE? ITAB WITH KEY COL1 = 3.)

WRITE: / 'ITAB-COL1 = ', ITAB-COL1, 'ITAB-COL2 = ', ITAB-COL2.

執行結果同樣是:

ITAB-COL1 = 3

ITAB-COL2 = 6.

???????? Example:

?????????????????? READ? TABLE? ITAB? INTO? LINE? INDEX? 5

?????????????????? 讀取 ITAB的第5個元素資料, 放入 LINE的欄位中

根據欄位內容尋找

?? 語法:

????????? READ? TABLE? <itab>? INTO? <wa>

????????? Example:

????????????????? ITAB-COL1 = 'ABC'.

????????????????? READ? TABLE? ITAB? INTO? LINE.

????????????????? 找出ITAB 中 COL1 欄位內容是 ABC 的元素, 找到的值放入 LINE 中

????????????????? 若找到 SY-SUBRC傳回0, 找不到則傳回 4, <itab>必須聲明有 work area

*-------------------------------------------------------------------------------------*

修改internal table 中的值

格式: MODIFY <itab> [FROM <wa>][INDEX <idx>][TRANSPORTING <f1><f2>…][WHERE <conditions>]

舉例一. READ TABLE ITAB INDEX 3.

?????? LINE-COL1 = 29.

?????? MODIFY ITAB FROM LINE TRANSPORTING COL1.

?????? 將第三筆記錄的COL1欄位的值修改為29.

舉例二. T_SALARY - salary = 50.

?????? MODIFY T_SALARY TRANSPORTING salary WHERE birthday = '1999/12/06'.

??????

DELETE internal table中的欄位

格式: DELETE <itab> INDEX <idx>.

或:?? DELETE <itab>[FROM <n1> TO <n2>] [WHERE <conditions>]

Internal table 排序?

SORT <itab> [<order way>][BY <f1><f2>…]

其中:<order way> 有DESCENDING 和ASCENDING, Default 為ASCENDING.

???? <f1>: 為指定排序的欄位.

??????? Example:

???????????????? SORT? ITAB? DESCENDING? BY? COL2.

???????????????? 將 ITAB 根據 COL2欄位遞減排序

*-------------------------------------------------------------------------------------*

確定內表屬性

如果在處理過程中想知道內表一共包含多少行,或者想知道定義的 OCCURS 參數的大小,請使用 DESCRIBE 語句,用法如下:

語法

DESCRIBE TABLE <itab> [LINES <lin>] [OCCURS <occ>].

如果使用 LINES 參數,則將填充行的數量寫入變量 <lin>。如果使用 OCCURS 參數,則將行的初始號寫入變量 <occ>。

DATA: BEGIN OF LINE,

???????? COL1 TYPE I,

???????? COL2 TYPE I,

????? END OF LINE.

DATA ITAB LIKE LINE OCCURS 10.

DATA: LIN TYPE I, OCC TYPE I.

DESCRIBE TABLE ITAB LINES LIN OCCURS OCC.

WRITE: / LIN, OCC.

DO 1000 TIMES.

?? LINE-COL1 = SY-INDEX.

?? LINE-COL2 = SY-INDEX ** 2.

?? APPEND LINE TO ITAB.

ENDDO.

DESCRIBE TABLE ITAB LINES LIN OCCURS OCC.

WRITE: / LIN, OCC.

其輸出為:

???????? 0???????? 10

???? 1.000???????? 10

在此創建內表 ITAB。在填充表格前后執行 DESCRIBE 語句。更改當前行號,但無法更改初始行號。

*-------------------------------------------------------------------------------------*

加總

SUM.

總和計算存放與work area中,但只能在LOOP 中使用.

例: LOOP AT ITAB INTO LINE.

???????? SUM.

?? ENDLOOP.

?? WRITE: / LINE-COL1, LINE-COL2.

?? LINE-COL1 和 LINE-COL2 存數值總和初始化internal table

REFRESH <itab>.? 清空<itab>中的值.使用在沒有 HEADER LINE 的 Internal Table中, 清除所有元素

CLEAR?? <itab>.? 清空<itab>的Header Line.使用在有 HEADER LINE 的 Internal Table中, 清除所有元素

FREE??? <itab>.? 釋放內存空間.釋放(Release) Internal Table所占的內存空間, 用在 REFRESH和 CLEAR指令之后

將值重置為 默認值

可以用 CLEAR 語句重置任何數據對象值,如下所示:

語法

CLEAR <f>.

exp:

DATA NUMBER TYPE I VALUE '10'.

WRITE NUMBER.

CLEAR NUMBER.

WRITE / NUMBER.

輸出為:

??????? 10

???????? 0

CLEAR 語句將字段 NUMBER 的內容從10 重置為默認值 0。

*-------------------------------------------------------------------------------------*

?? 添加字段順序并將結果賦給另一個字段

語法

ADD <n1> THEN <n2> UNTIL <nz> GIVING <m>.

如果 <n1>、 <n2>、 ... 、 <nz> 是在內存中相同類型和長度的等距字段序列,則進行求和計算并將結果賦給 <m>

?? 添加字段順序并將結果添加到另一個字段的內容中

語法

ADD <n1> THEN <n2> UNTIL <nz> TO <m>.

該語句除了將字段總和添加到 <m> 的舊內容中之外,與上面語句的工作方式相同 。

有關其它相似變體的信息,參見有關 ADD 語句的關鍵字文檔。

DATA: BEGIN OF SERIES,

???????? N1 TYPE I VALUE 10,

???????? N2 TYPE I VALUE 20,

???????? N3 TYPE I VALUE 30,

???????? N4 TYPE I VALUE 40,

???????? N5 TYPE I VALUE 50,

???????? N6 TYPE I VALUE 60,

????? END OF SERIES.

DATA SUM TYPE I.

ADD SERIES-N1 THEN SERIES-N2 UNTIL SERIES-N5 GIVING SUM.

WRITE SUM.

ADD SERIES-N2 THEN SERIES-N3 UNTIL SERIES-N6 TO SUM.

WRITE / SUM.

輸出如下:

?????? 150

?????? 350

在此,將 N1 到 N5 組件內容求和并將其值賦給字段 SUM。然后,將 N2 到 N6 組件求和并將其添加到 SUM 的值中。

*-------------------------------------------------------------------------------------*

?????????

屏幕輸入命令

在ABAP/4中要從屏幕輸入變量, 使用的命令是 PARAMETERS 及SELECTION-OPTIONS:

??? 1. PARAMETER: 輸入一個變量或欄位內容

??? 2. SELECTION-OPTIONS: 使用條件篩選畫面來輸入數據???

PARAMETERS 指令

基本的輸入命令, 類似如BASIC的INPUT命令, 但無法使用F格式(浮點數)

??? 語法:

??????? PARAMETERS? <p>? [DEFAULT <f>]? [LOWER CASE]

?????????????????????????? [OBLIGATORY]? [AS CHECKBOX]

?????????????????????????? [RADIOBUTTON GROUP <rad>]

?????? Example:

??????????? PARAMETERS:? NAME(8),

?????????????????????????? AGE? TYPE? I,

?????????????????????????? BIRTH? TYPE? D.

??????????? 執行結果:????????????

在日期的輸入格式上為 MM/DD/YY , MM/DD/YYYY, MMDDYY或MMDDYYYY , 如輸入 020165 表 1965年02月01日, 與02/01/65的輸入是一樣的, 日期輸入范圍為西元1950年至2049年

1. DEFAULT

設定輸入的預設值

Example:

?? PARAMETERS:? COMPANY(20)? DEFAULT? 'DELTA',

??????????????? BIRTH? TYPE? D? DEFAULT? '19650201'.

2.?? LOWER CASE

???? ABAP/4預設是將字串輸入值自動轉換為大寫, 加上此參數會將輸入的資料轉成小寫,

3.?? OBLIGATORY

強制要求輸入, 屏幕上會出現一個 ? , 使用者必須要輸入才可.

4.?? AS CHECKBOX

輸入 CHECKBOX的格式

Example:

????????? PARAMETERS:? TAX? AS? CHECKBOX? DEFAULT 'X',

?????????????????????? NTD? AS? CHECKBOX.

????????? 執行結果:

???

5.??? RADIOBUTTON GROUP <rad>

????? 輸入 RADIO BUTTON GROUP 的方式

????? Example:

???? PARAMETERS: BOY? RADIOBUTTON GROUP? SEX? DEFAULT 'X',????????

?????????????????? GIRL? RADIOBUTTON GROUP? SEX.

exp :

TABLES SPLFI.

PARAMETERS: LOW? LIKE SPFLI-CARRID,

??????????? HIGH LIKE SPFLI-CARRID.

SELECT * FROM SPLFI WHERE CARRID BETWEEN LOW AND HIGH.

?? ........

ENDSELECT.

*-------------------------------------------------------------------------------------*

??

SELECTION-OPTIONS

?? SELECTION-OPTIONS所輸入的值實際上是放在internal table中的,該Internal table 有四個欄位,分別是:SIGN,OPTION,LOW,HIGH.. 條件篩選檢查條件輸入畫面指令, 輸入條件后可配合SELECT指令自TABLE讀取符合條件的資料, 直接執行或放入 Internal Table中, 條件有四個參數:

1. SIGN:

???? I: 表篩選條件符合的資料

???? E: 表篩選條件不符合的資料

2. OPTION: 比較的條件符號

????????? EQ(等于),NE(不等于),GT(大于),LE(小于),CP(包含),NP(不包含)

3. LOW: 最小值

4. HIGH: 最大值

?? 語法:

????????? SELECTION-OPTIONS? <check-option>? FOR? <table-field>

Example:

????????? TABLES? SPFLI.

????????? SELECT-OPTIONS? AIRLINE? FOR? SPFLI-CONNID.

將條件的輸入值存放入 AIRLINE, 篩選選擇為SPFLI中的CONNID欄位

改變條件輸入格式

1. DEFAULT? <begin>? TO? <end>

設定開始結束范圍輸入預設值

???? Example:

???? SELECT-OPTIONS? AIRLINE? FOR? SPFLI-CONNID DEFAULT? '2042'? TO? '4555'.

2. NO-EXTENSION

設定不要Multi-Option輸入畫面

3. NO? INTERVALS

設定不要區間范圍輸入畫面

4. LOWER CASE

輸入轉換成大寫

5. OBLIGATORY

強制要求輸入

*-------------------------------------------------------------------------------------*

配合 SELECT 命令

?? 條件輸入完后要將符合條件的資料篩選出來, 可配合使用 SELECT 指令

?? 1.使用WHERE <條件式>

Example:

? TABLES? SPFLI.

? SELECT-OPTIONS? AIRLINE? FOR? SPFLI-CONNID.

? SELECT? *? FROM? SPFLI? WHERE? CONNID? IN? AIRLINE.

?????? WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.

? ENDSELECT.

2.使用CHECK參數

Example:

? TABLES? SPFLI.

? SELECT-OPTIONS? AIRLINE? FOR? SPFLI-CONNID.

????? SELECT? *? FROM? SPFLI.

????? CHECK? AIRLINE.

????? WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.

? ENDSELECT.

? *

exp:?

TABLES SPFLI.

SELECT-OPTIONS: S_CARRID FOR SPFLI-CARRID,

??????????????? S_CITYFR FOR SPFLI-CITYFROM,

??????????????? S_CITYTO FOR SPFLI-CITYTO,

??????????????? S_CONNID FOR SPFLI-CONNID.

SELECT * FROM SPFLI.

? CHECK: SPFLI-CARRID IN S_CARRID,

?????? SPFLI-CITYFR IN S_CITYFR,

?????? SPFLI-CITYTO IN S_CITYTO,

?????? SPFLI-CONNID IN S_CONNID.

?? WRITE: / SPFLI-CARRID, SPFLI-CONNID,

????????? SPFLI-CITYFROM, SPFLI-CITYTO.

ENDSELECT.

?

3.使用 IF … IN 關鍵字

???? Example:

???????? SELECT-OPTIONS? AIRLINE? FOR? SPFLI-CONNID.

???????? SELECT? *? FROM? SPFLI.

??????????? IF? SPFLI-CONNID? IN? AIRLINE.

????????????? WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.

??????????????? ENDIF.

???????????? ENDSELECT.

*-------------------------------------------------------------------------------------*

SELECTION-SCREEN

??? 1.產生空白列

語法:

????? SELECTION-SCREEN? SKIP? [<n>]

????????? Example:

?????????????????? SELECTION-SCREEN? SKIP? 2.

?????????????????? 產生兩列空白列

??? 2.產生底線

語法:

????? SELECTION-SCREEN? ULINE? / <pos>(length)

????????? Example:

?????????????????? SELECTION-SCREEN? ULINE? /10(30).

?????????????????? 自第10格開始產生長度30的底線

?? 3.印出備注說明

???? 語法:

????? SELECTION-SCREEN? COMMENT? / <pos>(length)? <name>

????????? Example:

?????????????????? REMARK = 'Pls enter your name'.

?????????????????? SELECTION-SCREEN? COMMENT? /10(30)? REMARK.

??? 4. 同一列中輸入數個資料項

語法:

????? SELECTION-SCREEN? BEGIN? OF? LINE.

???????? ……

????? SELECTION-SCREEN? END? OF? LINE.

????? Example:

????????????? SELECTION-SCREEN? BEGIN? OF? LINE.

????????????????? SELECTION-SCREEN? POSITION 20.

????????????????? PARAMETERS? NAME(10).

????????????????? SELECTION-SCREEN? POSITION 40.

????????????????? PARAMETERS? BIRTH? TYPE? D.

????????????? SELECTION-SCREEN? END? OF? LINE.

????????????? 在20格輸入NAME內容, 40格輸入 BIRTH的內容

??? 5. 繪出BLOCK PANEL

語法:

SELECTION-SCREEN? BEGIN? OF? BLOCK? <block>

????????????????????? [WITH? FRAME? [TITLE? <title>].

????????? …….

SELECTION-SCREEN? END? OF? BLOCK? <block>.

Example:

SELECTION-SCREEN? BEGIN? OF? BLOCK? RADIO????????????????????????? WITH? FRAME .

????????????????? PARAMETER? R1? RADIOBUTTON? GROUP? GR1.

????????????????? PARAMETER? R2? RADIOBUTTON? GROUP? GR1.

????????????????? PARAMETER? R3? RADIOBUTTON? GROUP? GR1.

?????????????? SELECTION-SCREEN? END? OF? BLOCK? RADIO.?

*-------------------------------------------------------------------------------------*

?

SQL語法
???? 我們在編寫ABAP4程序的時候,經常需要從TABLE中根據某些條件讀取數據,讀取數據最常用的方法就是通過SQL語法實現的。ABAP/4中可以利用SQL語法創建或讀取TABLE,SQL語法分為DDL(DATA DEFINE LANGUAGE)語言和DML(DATA MULTIPULATION LANGUAGE)語言,DDL語言是指數據定義語言,例如CREATE等, DML語言是數據操作語言,例如SELECT, INSERT等語句。SQL語句有OPEN SQL語句和NATIVE SQL語句。 OPEN SQL語句不是標準SQL語句,是ABAP/4語言,利用OPEN SQL語句能在Databases 和 Command 之間產生一個BUFFER,所以它有一個語言轉換的過程。而NATIVE SQL語句則是標準的SQL語句, 它直接針對Databases操作。

OPEN SQL

SELECT語句
語法格式:
SELECT <result> [INTO <target>] [FROM <source>] [WHERE <condition>]
?????????????? [GROUP BY <fields>] [ORDER BY <sort order>]
其中: <result>指定要抓取的欄位
????? <target>將讀取的記錄存放在work area中
????? <source>指定從那個TABLE中讀取資料
????? <condition>抓取資料的條件
????? <fields>指定按那些欄位分組
????? <sort order>排序的欄位及方式
相關的系統變量:
???? SY-SUBRC = 0? 表示讀取數據成功
????????????? <> 0 表示未找到符合條件的記錄
???? SY-DBLNT: 被處理過的記錄的筆數.
相關的命令:
???? EXIT. 退出循環.
???? CHECK <logistic statement>.如果邏輯表達式成立,則繼續執行,否則,開始下一次循環。
???
利用循環方式讀取所有記錄
SELECT ….ENDSELECT.是循環方式讀取記錄的。
???? 例如:
TABLES MARD.
SELECT [DISTINCT] * FROM MARD WHERE MATNR = '3520421700'.
??? <Statements>.
ENDSELECT.
(從MARD中抓取所有料號=3520421700的資料)
◆讀取一筆資料
????? Example:
?????????????? TABLES? SPFLI.
?????????????? SELECT? SINGLE? *? FROM? SPFLI????
???????????????????? WHERE? PLANT ='CHUNGLI'? AND? TEL='4526174'.
?????????????? WRITE:? /? SPFLI-COMPANY,SPFLI-PLANT,SPFLI-TEL.
◆將讀取的記錄放在work area中,并且加入Internal table 中.
格式有:
?? ... INTO <work area>
?? ... INTO CORRESPONDING FIELDS OF <work area>
?? ... INTO (f1, ..., fn) 變量組.
?? ... INTO TABLE <internal table>
?? ... INTO CORRESPONDING FIELDS OF TABLE <internal table>
?? ... APPENDING TABLE <internal table>
?? ... APPENDING CORRESPONDING FIELDS OF TABLE <internal table>
舉例一:
TABLES MARD.?
DATA:? BEGIN OF ITAB OCCURS 10,
????????????? MATNR LIKE MARD-MATNR,
????????????? WERKS LIKE MARD-WERKS,
????????????? LGORT LIKE MARD-LGORT,
????????????? LABST LIKE MARD-LABST,
??????? END OF ITAB.
SELECT MATNR WERKS LGORT LABST??
????????????? INTO CORRESPONDING FIELDS OF ITAB?
????????????? FROM MARD
????????????? WHERE MATNR = '3520421700'.
?????? APPEND ITAB.
?????? CLEAR ITAB.
ENDSELECT.
(將讀取的結果放在Internal table ITAB中)

DATA: BEGIN OF WA,?
??????? LINE(240),
????? END OF WA.
DATA NAME(10).
NAME = 'SPFLI'.
SELECT * FROM (NAME) INTO WA.
? WRITE: / WA-LINE.?
ENDSELECT.
數據庫表名稱 SPFLI 被賦給字符字段 NAME。SELECT 語句將所有的行從 SPFLI 中讀到目標區 WA 中。在該示例中,WA 與 SPFLI 的結構并不相同,每一行都將自動地轉換成字符字段.

舉例二.
TABLES MARD.
SELECT MATNR? MTART? MAKTX? INTO (t_matnr, t_mtart, maktx)?
?????????????? FROM MARD
?????????????? WHERE MATNR = '3520421700'.
?????? <Statements>.
ENDSELECT.
(從MARD中抓取料號=3520421700的料號、類型和描述,放在變量t_matnr, t_mtart, maktx中)。

??????? Example:
???????????????? TABLES? SPFLI.
???????????????? DATA? WA? LIKE? TABLES.
???????????????? SELECT? *? FROM? SPFLI? INTO? WA.
??????????????????? WRITE:? /? WA-COMPANY,WA-PLANT.
???????????????? ENDSELECT.
???????????????? 逐筆寫入WA 工作區中
舉例三.
將讀取的資料寫入 Initial Table 中
? 語法:
??????? SELECT? .. INTO? TABLE? <itab>???
??????? Example:
??????? TABLES? SPFLI.
??????? DATA? ITAB? LIKE? SPFLI? OCCURS? 10? WITH? HEADER? LINE.
??????? SELECT? *? FROM? SPFLI? INTO? ITAB.
??????? 一次讀10筆(Initial Table的長度)記錄存入 ITAB 中
????????
??????? SELECT? .. INTO? TABLE? <itab>? PACKAGE? SIZE <n>
??????? 一次讀取 <n> 筆記錄至 <itab>中
??????? Example:
?????????? TABLES? SPFLI.
?????????? DATA? ITAB? LIKE? SPFLI? OCCURS? 10? WITH? HEADER? LINE.
?????????? SELECT? *? FROM? SPFLI? INTO? ITAB? PACKAGE? SIZE? 5.?
?????????? 一次讀取 5 筆記錄

exp :

TABLES SPFLI.
DATA: BEGIN OF WA,
???????? NUMBER TYPE I VALUE 1,
???????? CITYFROM LIKE SPFLI-CITYFROM,
???????? CITYTO?? LIKE SPFLI-CITYTO,
????? END OF WA.
SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF WA.
?? WRITE: / WA-NUMBER, WA-CITYFROM, WA-CITYTO.
ENDSELECT.
輸出如下所 示:

在該示例中,系統只將數據庫表 SPFLI 中選定行的列 CITYFROM 和 CITYTO 傳送到 WA 中。WA 中的組件 NUMBER 保持不變。
*-------------------------------------------------------------------------------------*

按指定的欄位排序
TABLES SBOOK.
SELECT * FROM SBOOK?? WHERE CARRID = 'LH' AND
??????????????????????????? CONNID = '0400' AND
??????????????????????????? FLDATE = '19950228'
??????????????????????????? ORDER BY BOOKID ASCENDING.
?? WRITE: / SBOOK-BOOKID,?? SBOOK-CUSTOMID,
?????????? SBOOK-CUSTTYPE,? SBOOK-SMOKER,
?????????? SBOOK-LUGGWEIGHT, SBOOK-WUNIT,
?????????? SBOOK-INVOICE.
ENDSELECT.
(利用參數ORDER BY所指定的欄位排序)
*-------------------------------------------------------------------------------------*

◆ 抓取數據的條件關鍵字
(1) BETWEEN <g1>? AND? <g2>
例如:? WHERE YEAR BETWEEN 1995 AND 2000.
(2) LIKE <g>
例如:? WHERE NAME LIKE 'MIKE%'.
('%'是通配符號)
(3) IN (<g1>…<gn>)
是<g1>…<gn>里面的任意一個值即可.
例如: WHERE PLANT IN ('CHUNGLI', 'TAOYUAN','LIUTU').
(表示PLANT 只要是'CHUNGLI'或'TAOYUAN'或'LIUTU'都可以).
(4)? ORDER? BY 關鍵字
???? 指定排序的欄位或順序
???? (1). ..ORDER BY PRIMARY KEY.
??????? 根據 PRIMARY KEY 遞增排序
???? (2)…ORDER BY <f1> [DESCENDING] <f2> [DESCENDING]
??????? Example:
????????????????? SELECT * FROM IM ORDER BY PART .
*-------------------------------------------------------------------------------------*

INSERT 語句
◆從work area 加入到Internal Table中
格式: INSERT INTO <database> VALUES <work area>
例如:?
DATA:? BEGIN OF WA,
????????????? CODE(6)? TYPE C,
????????????? NAME(30) TYPE C,
??????? END OF WA.
DATA:? VEN LIKE WA OCCURS 10.

WA-CODE? =? '530120'.
WA-NAME? =? 'XINGDA ELECTRONICS CO.,LTD'.
INSERT INTO VEN VALUES WA .
如果work area的名稱就是internal table的名稱,可以直接寫成:
????? INSERT <internal table>
例如:
DATA:? BEGIN OF WA OCCURS 10,
????????????? CODE(6) TYPE C,
????????????? NAME(30) TYPE C,
??????? END OF WA.

WA-CODE = '530120'.
WA-NAME? =? 'XINGDA ELECTRONICS CO., LTD'.
INSERT WA.
◆從另外一個Internal table中INSERT 資料
格式:
INSERT <itab1> FROM TABLE <itab2> [ACCEPTING DUPLICATE KEY]
將<itab2>中非NULL的資料加入<itab1>中,加上[ACCEPTING DUPLICATE KEY]能限制相同PRIMARY KEY不重復加入.

?? 加入一筆記錄至資料庫

?? 1.自 Work Area 工作區
?? 語法:
??????? INSERT? INTO? <database>? VALUES? <wa>
??????? Example:
???????????????? TABLES? SPFLI.
???????????????? DATA? WA?? LIKE? SPFLI.
???????????????? WA-NO = '34051920'.
???????????????? WA-COMPANY='DELTA'.
???????????????? INSERT? SPFLI? VALUES? WA.
???????????????? 將 ITAB 資料加入 SPFLI中, 也可寫成 INSERT? SPFLI? FROM? ITAB.
???????????
????????????????? SPFLI-NO='34299876'.
????????????????? SPFLI-COMPANY='HP'.
????????????????? INSERT? SPFLI? FROM? SPFLI.
????????????????? 將Work Area? SPFLI中的資料加入資料庫檔案 SPFLI中
????????????????? 因Work Area SPFLI的結構與資料檔 SPFLI一樣, 所以也可
????????????????? 寫成 INSERT? SPFLI.

?? 2.自 Internal Table
???? 語法:
?????????? INSERT? <database>? FROM? TABLE? <itab>? [ACCEPTING DUPLICATE KEY]
?????????? 將 <itab>中非 NULL的資料加入 <database>中, 加上 [ACCEPTING DUPLICATE
?????????? KEY]能檢查不加入有重覆primary key, 若有重覆則 SY-SUBRC 會傳回 4
?????????? Example:
??????????????????? TABLES? SPFLI.
??????????????????? DATA? ITAB? LIKE? SPFLI? OCCURS? 10? WITH? HEADER LINE.
??????????????????? ITAB-NO = '34051920'.
??????????????????? ITAB-COMPANY = 'DELTA'.
??????????????????? APPEND? ITAB.
??????????????????? ….
??????????????????? INSERT? SPFLI? FROM? TABLE? ITAB??
???????????????????????????? ACCEPTING? DUPLICATE? KEY.
*-------------------------------------------------------------------------------------*

UPDATE 指令
?? 異動已存在的記錄內容

1.使用 Primary Key
? 語法:?
??????????? UPDATE? <database>? FROM? <wa>
??????????? Example:
???????????????????? TABLES? SPFLI.
???????????????????? DATA? WA? LIKE? SPFLI.
???????????????????? WA-NO='34051920'.
???????????????????? WA-COMPANY='DELTA'.
??????????????????? UPDATE? SPFLI? FROM? WA.
??????????????????? 如 SPFLI 的 Primary Key是 NO, 則會找到 NO='34051920'的記錄, 將其 COMPANY欄位異動為 DELTA

2.使用條件式
? 語法:
??????? UPDATE? <database>? SET? < f1>=<values>…? WHERE? <condition>
??????? 根據條件式異動符合條件式的記錄
??????? Example:
???????????????? UPDATE? SPFLI? SET? NO ='34051920'
???????????????????????????????????? COMPANY = 'DELTA'
???????????????????????? WHERE? TEL = '4526107'.
*-------------------------------------------------------------------------------------*

3.?? MODIFY 語法
???? MODIFY <internal table> [FROM <work area>].
根據 Primary Key 尋找資料檔中符合的記錄, 若找到則更新異動, 若找不到則新增記錄
語法:
?????? MODIFY? <database>? FROM? <wa>
?????? Example:
??????????????? WA-NO='34051920'.
??????????????? WA-COMPANY='DELTA'.
??????????????? MODIFY? SPFLI? FROM? WA.
?????
4.?? DELETE 語法
???? DELETE <internal table> [FROM <work area>].
?或: DELETE <internal table> [WHERE <conditions>]
?? 刪除資料檔的記錄

1.使用 Primary Key
? 語法:?
??????????? DELETE? <database>? FROM? <wa>
??????????? Example:
???????????????????? TABLES? SPFLI.
???????????????????? DATA? WA? LIKE? SPFLI.
???????????????????? WA-NO='34051920'.
???????????????????? WA-COMPANY='DELTA'.
???????????????????? DELETE? SPFLI? FROM? WA.
???????????????????? 如 SPFLI 的 Primary Key是 NO, 則會找到 NO='34051920'的記錄, 找到后將此筆刪除

2.使用條件式
? 語法:
??????? DELETE? FROM? <database>? WHERE? <condition>
??????? 根據條件式刪除符合條件式的記錄
??????? Example:
???????????????? DELETE? FROM? SPFLI? WHERE? AREA = 'AMERICAN'.
????????????????????????????????????????
*-------------------------------------------------------------------------------------*

5. DATABASE CURSOR
?? Database Cursor是一個資料庫暫存區, 將經SELECT指令讀取的記錄存放至此暫存區, 再由此暫存區放至Work Area中, 可減少資料庫讀取的次數.
1.開啟 Database Cursor
? 語法:
??????? OPEN? CURSOR? <c>? FOR? SELECT …? WHERE <condition>
??????? Example:
??????????????? TABLES? SPFLI.
??????????????? DATA:? WA? LIKE? SPFLI,
??????????????????????? C1? TYPE? CURSOR.
??????????????? OPEN? CURSOR? C1 FOR SELECT? *? FROM? SPFLI?
?????????????????????? WHERE? AREA ='TAIWAN'.
? 2.讀取 Database Cursor的資料存入 Work Area
語法:
????? FETCH? NEXT? CURSOR? <c>? INTO? <wa>
????????? Example:
?????????????????? FETCH? NEXT? CURSOR? C1? INTO? WA.
? 讀取下一筆Cursor位置的資料存入WA, 如果已無資料可讀, SY-SUBRC <>0.?
關閉 Database Cursor
語法:
????? CLOSE? CURSOR? <c>
????? Example:
?????????????? CLOSE? CURSOR? C1.

*-------------------------------------------------------------------------------------*

COMMIT WORK & ROLLBACK WORK
要確定資料成功寫入資料庫,可使用COMMIT WORK指令,如:?
?? COMMIT? WORK.
相反的,如果反悔要復原,可使用 ROLLBACK? WORK, 可復原在上個COMMIT WORK指令之后的資料, 如:
?? ROLLBACK? WORK.
*-------------------------------------------------------------------------------------*
使用NATIVE SQL指令
語法格式:
EXEC SQL [PERFORMING <form>].
???? <statements>
ENDEXEC.
舉例一.
EXEC SQL.
? CREATE TABLE AVERI_CLNT (
???????? CLIENT?? CHAR(3)? NOT NULL,
???????? ARG1???? CHAR(3)? NOT NULL,
???????? ARG2???? CHAR(3)? NOT NULL,
???????? FUNCTION CHAR(10) NOT NULL,
???????? PRIMARY KEY (CLIENT, ARG1, ARG2)
????????????????????????? )
ENDEXEC.
舉例二.
DATA: F1(3), F2(3), F3(3).
F3 = ' 1 '
EXEC SQL.
? SELECT CLIENT, ARG1 INTO :F1, :F2 FROM AVERI_CLNT
???????? WHERE ARG2 = :F3
ENDEXEC

PERFORMING <form name>的使用:
如果NATIVE SQL的SELECT命令執行結果是抓到多筆記錄,我們想要逐筆記錄處理時,就用PERFORMING 參數,這個FORM能被逐次調用。如果想中止調用,就用EXIT FORM SQL結束調用。
例如:
DATA: F1(3), F2(3), F3(3).

F3 = '010'
EXEC SQL PERFORMING WRITE_AVERI_CLNT.
? SELECT CLIENT, ARG1 INTO :F1, :F2 FROM AVERI_CLNT
???????? WHERE ARG2 = :F3
ENDEXEC.
FORM WRITE_AVERI_CLNT.
? WRITE: / F1, F2.
ENDFORM.

???????????????? DATA: BEGIN? OF? WA,
??????????????????????? NAME(8),
??????????????????????? AGE? TYPE? I,
??????????????????????? END?? OF? WA.
???????????????? DATA? F1? TYPE? I.
???????????????? FI = 20.
???????????????? EXEC? SQL? PERFORMING? OUTPUT.
??????????????????? SELECT? NAME,AGE? INTO? :WA? FROM? NAME_TABLE?
???????????????????????????? WHERE? AGE >= :F1.
???????????????? ENDEXEC..
???????????????? FORM? OUTPUT.
?????????????????? WRITE:? /? WA-NAME,WA-AGE.
???????????????? ENDFORM.

注意:
a. NATIVE SQL把TABLE中的MANDT(client)欄位當作一般欄位使用,所以在抓取資料時必須指定特定的Client;
b. NATIVE SQL中的SELECT語句沒有CHECK權限的功能;
c. 在登入SAP R/3系統時,我們已經自動與Database連接,所以在執行NATIVE SQL時并不需要CONNECT語句;
d. 一條NATIVE SQL語句可以以分號;結束,一般情況下是以句號.結束.
e. 某些數據庫系統對TABLE名字和FIELD名字有大小寫區別,要正確書寫.
f. 在NATIVE SQL中,雙引號"不表示注釋.
*-------------------------------------------------------------------------------------*

結果語句

條件述敘
?? 1. IF 述敘
? 語法:
??????? IF? <Condition1>.
????????? <Statement 1 >
??????? ELSEIF? <Condition2>.
????????? <Statement 2>
??????? ELSEIF? <Condition3>.
????????? <Stetement 3>
??????? …..
??????? ELSE.
????????? <else Statement >
??????? ENDIF.
??????? (1).在每個判斷關鍵字之后要加上 .
??????? (2).在巢狀循環之中無法使用 ELSE 關鍵字, ELSE 關鍵字屬 IF 關鍵字
??????? Example:
???????????????? IF? 3 > 8.
?????????????????? WRITE / '3 is less than 8'.
??????????????? ENDIF.
?????????????????

2. CASE 關鍵字
? 語法:
?????? CASE? <變量f>.
???????? WHEN <Value1>.
??????????? <Statement1>
???????? WHEN <Value2>.
??????????? <Statement2>
???????? ….
???????? WHEN OTHERS.
??????????? <others Statement>
?????? ENDCASE.
?????? Example:
???????????????? S = 'A'.?
???????????????? CASE? S.
??????????????????? WHEN? 'X'.
?????????????????????? WRITE / 'String is X'.
??????????????????? WHEN OTHERS.
?????????????????????? WRITE / 'String is not X'.
???????????????? ENDCASE.

循環關鍵字
1.計次循環
? 語法:
?????? DO? [n TIMES]? [VARYING? <f>? FROM? <start>? TO? <end>.
????????? <loop block>
?????? ENDDO.
?????? Example:
??????????????? DO? 2? TIMES.
??????????????????? WRITE /? 'X'.
??????????????? ENDDO.
??????????????? 執行結果:
?????????????????????????? X
?????????????????????????? X
??????????????? DO? VARYING? I? FROM 1? TO? 10.
?????????????????? S = S + I.
??????????????? ENDDO.
??????????????? WRITE: / ,'1+2+3+…+10=',S
??????????????? 執行結果:? 1+2+3+…+10=55
? 2.條件循環
語法:
???? WHILE? <Condition>.
??????? <Statement Block>
???? ENDWHILE
???? Example:
????????????? I = 1.
????????????? S=0.
???????????? WHILE? I <= 10.
??????????????? S = S+I.
??????????????? I=I+1.
???????????? ENDWHILE.
???????????? WRITE: / ' 1+2+3+…+10=',S.
???????????? 執行結果為: 1+2+3+…+10=55

循環控制關鍵字
1. CONTINUE
跳至循環的下一次
Example:
??????? DO? 3? TIMES.
?????????? IF? SY-INDEX = 2.
???????????? CONTINUE.
?????????? WRITE / SY-INDEX.
??????? ENDDO.
??????? 執行結果:?
????????????????? 1
????????????????? 3
2. CHECK <Condition>
CHECK 之后條件成立才繼續往下執行循環
? Example:
?????????? DO? 5? TIMES.
????????????? CHECK? SY-INDEX? BETWEEN? 2? AND? 4.
????????????? WRITE? /? SY-INDEX.
?????????? ENDDO.
?????????? 執行結果:
???????????????????? 2
???????????????????? 3
???????????????????? 4
3. EXIT
跳離循環關鍵字
Example:
???????? DO? 10? TIMES.
??????????? IF? SY-INDEX = 4.
????????????? EXIT.
??????????? ENDIF
??????????? WRITE / SY-INDEX.
???????? ENDDO.
???????? 執行結果:
?????????????????? 1
?????????????????? 2
?????????????????? 3

無窮循環
?? DO .
???? <Statement Block>
?? ENDDO.
?? 無窮循環必須配合 EXIT 關鍵字來執行
*-------------------------------------------------------------------------------------*

搜索字符串

要搜索特定模式的字符串,請使用 SEARCH 語句,用法如下:
語法
SEARCH <c> FOR <str> <options>.
該語句在字段 <c> 中搜索<str> 中的字符串。如果成功,則將 SY-SUBRC 的返回代碼值設置為0并將 SY-FDPOS 設置為字段 <c> 中該字符串的偏移量。否則將 SY-SUBRC 設置為4。
搜索串 <str> 可為下列格 之一:
<str> 目 的
<pattern> 搜索 <pattern>( 任何字符順序)。忽略尾部空格。
.<pattern>. 搜索 <pattern> ,但是不忽略尾部空格 。
*<pattern> 搜索以 <pattern> 結尾的詞。
<pattern>* 搜索以 <pattern> 開始的詞。
單詞之間用空格、逗號、句號、分號、冒號、問號、嘆號、括號、斜杠、加號和等號等分隔 。

DATA STRING(30) VALUE 'This is a little sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.
ULINE /1(26).
SEARCH STRING FOR 'X'.
WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC',
?????????????? SY-FDPOS UNDER 'SY-FDPOS'?
SEARCH STRING FOR 'itt?? '.
WRITE: / 'itt?? ', SY-SUBRC UNDER 'SY-SUBRC',
?????????????????? SY-FDPOS UNDER 'SY-FDPOS'?
SEARCH STRING FOR '.e .'.
WRITE: / '.e .', SY-SUBRC UNDER 'SY-SUBRC',
????????????????? SY-FDPOS UNDER 'SY-FDPOS'.
SEARCH STRING FOR '*e'.
WRITE: / '*e ', SY-SUBRC UNDER 'SY-SUBRC',
??????????????? SY-FDPOS UNDER 'SY-FDPOS'.
SEARCH STRING FOR 's*'.
WRITE: / 's* ', SY-SUBRC UNDER 'SY-SUBRC',
??????????????? SY-FDPOS UNDER 'SY-FDPOS'.
該過程的輸 出如下:
SEARCHED SY-SUBRC SY-FDPOS
X??????????? 4??????? 0
itt????????? 0?????? 11
.e .???????? 0?????? 15
*e?????????? 0?????? 10
s*?????????? 0?????? 17

搜索字符字段 <c> 的各種選項 (<options>)如下
?? ABBREVIATED
在字段 <c> 中搜索包含 <str> 中指定字符串的單詞, 其中字符可能被其它字符隔開。單詞和字符串的第一個字母必須相同 。
?? STARTING AT <n1>
在字段 <c> 中搜索從 <n1> 開始的 <str>。結果 SY-FDPOS 參照相對于 <n1> 的偏移量而不是字段的開始。
?? ENDING AT <n2>?
在字段 <c> 搜索 <str> 直到位置 <n2>。
?? AND MARK
如果找到搜索串,則將搜索串中的所有字符(和使用 ABBREVIATED 時的所有字符)轉換為大寫形式。

DATA: STRING(30) VALUE 'This is a fast first example.',
????? POS TYPE I,
????? OFF TYPE I.
WRITE / STRING.
SEARCH STRING FOR 'ft' ABBREVIATED.
WRITE: / 'SY-FDPOS:', SY-FDPOS.
POS = SY-FDPOS + 2.
SEARCH STRING FOR 'ft' ABBREVIATED STARTING AT POS AND MARK.
WRITE / STRING.
WRITE: / 'SY-FDPOS:', SY-FDPOS.
OFF = POS + SY-FDPOS -1.
WRITE: / 'Off:', OFF.
該過程的輸 出如下:
This is a fast first example.
SY-FDPOS:??? 10
This is a fast FIRST example.
SY-FDPOS:??? 4
Off:??????? 15
請注意,在找到單詞' fast' 之后,為了查找包含' ft'的第二個單詞,必須在偏移量 SY-FDPOS 上加2,然后從位置 POS 開始查找。否則,會再次找到單詞 'fast'。要獲得' first' 相對于字段 STRING 開始的偏移量,從 POS 和 SY-FDPOS 計算。
獲得字符串長度

要決定字符串到最后一個字符而不是 SPACE 的長度,請使用內部函數 STRLEN,用法如下:
語法
[COMPUTE] <n> = STRLEN( <c> ).
STRLEN 將操作數 <c> 作為字符數據類型處理,而不考慮其實際類型。不進行轉換。
關鍵字 COMPUTE 可選。有關內部函數的詳細信息,參見使用數學函數(頁 49) 。

DATA: INT TYPE I,
????? WORD1(20) VALUE '12345'.?
????? WORD2(20).
????? WORD3(20) VALUE '?? 4???????? '.?
INT = STRLEN( WORD1 ). WRITE?? INT.
INT = STRLEN( WORD2 ). WRITE / INT.
INT = STRLEN( WORD3 ). WRITE / INT.
結果分別是 5,0 和 4。
*-------------------------------------------------------------------------------------*

Standard Report?
?? 一個典型的報表程序是由許多的程序區塊(Code Block)所組成,在區塊間最好能加上一些說明以利程序可讀性,一個典型的報表程序格式如下:

*? PROGRAM SOURCE HEADER? : 說明程序名稱及目的
* Program Name:?
* Description:
* Date/Author:?
* Table Update:
* Special Logic:
* Include:
*-------------------------------------------------------------------------------------*
*? MODIFICATION LOG : 程序修改更新記錄?
*-------------------------------------------------------------------------------------*
* ChangeDate Programmer??? Request????? Description
*-------------------------------------------------------------------------------------*
*?????????????????????????????????????? NEW PROGRAM
*-------------------------------------------------------------------------------------*
* REPORT NAME : 聲明程序名稱及報表格式,?
*-------------------------------------------------------------------------------------*
REPORT Z_____
?????? NO STANDARD PAGE HEADING
????????? MESSAGE-ID __??? " 所使用的MESSAGE
????????? LINE-COUNT ___?? " 每頁報表列數
????????? LINE-SIZE? ___.? " 每頁報表寬度

*? TABLE DESCRIPTION : 聲明程序會使用的TABLE

*-------------------------------------------------------------------------------------*
TABLES:?
????????????????
* DATA : 聲明程序所使用的變量及自定型態
*-------------------------------------------------------------------------------------*
TYPES:

DATA:?
?????

*? SELECTION SCREEN / OPTION / PARAMETER : 屏幕輸入報表篩選條件
*-------------------------------------------------------------------------------------*

? SELECTION-SCREEN BEGIN OF BLOCK ____
?????? SELECT-OPTIONS:

? SELECTION-SCREEN END OF BLOCK ___

* INITIALIZATION : 啟動程序開始執行, 如SELECT-OPTION及PARAMETER
*-------------------------------------------------------------------------------------*
INITIALIZATION.

INCLUDE ____.

* AT START SELECTION : 輸入結束后啟動的區塊, 如按下<F8>
*-------------------------------------------------------------------------------------*
START-OF-SELECTION.
? SET PF-STATUS ____.? " 指定報表執行時所用的 GUI-STATUS名稱

? PERFORM READ_DATA.
? PERFORM PROCESS_DATA.
? PERFORM PRINT_DATA.
? PERFORM PRINT_SUMMARY.

* AT USER Commaand : 執行在GUI-STATUS中自定的命令
*-------------------------------------------------------------------------------------*
AT USER_COMMAND.

* AT LINE SELECTION : 由在報表中按下<F2>或Double-Click啟動
*-------------------------------------------------------------------------------------*
AT LINE-SELECTION.


* TOP OF PGAE : 每頁開始列印時執行, 用于定義報表表頭
*-------------------------------------------------------------------------------------*

* END OF PAGE : 報表列印完最后一頁后啟動?
*-------------------------------------------------------------------------------------*
END-OF-PAGE

* END OF SELECTION : 在結束列印資料后啟動, 如可用來印出USER輸入的條件
*-------------------------------------------------------------------------------------*
END-OF-SELECTION.
INCLUDE? _____
* FORM : 撰寫程序中所使用到的副程序
*-------------------------------------------------------------------------------------*
* Read Data : 自TABLE讀取資料放入Internal Table
*-------------------------------------------------------------------------------------*
FORM READ_DATA.
? SELECT * FROM ______
?????????? INTO _______
?????????? WHERE _______.
???? IF SY-SUBRC = 0.

???? ENDIF.
???? APPEND _____.? " 增加Internal Table元素
? ENDSELECT.

ENDFORM.

* Process Data : 處理Internal Table的資料, 如排序及匯總
*-------------------------------------------------------------------------------------*
FORM PROCESS_DATA.

ENDFORM.

* Print Data : 依序輸出 Internal Table的資料
*-------------------------------------------------------------------------------------*
FORM PRINT_DATA.

ENDFORM.

* Print Summary : 印出數值資料加總
*-------------------------------------------------------------------------------------*
FORM PRINT_SUMMARY.

ENDFORM.

* Include Program : 列出所含入的其它程序source code, 如副程序
*-------------------------------------------------------------------------------------*
INCLUDE _____
INCLUDE _____

*-------------------------------------------------------------------------------------*
*
REPORT rep.?
Additions:?
1. ... NO STANDARD PAGE HEADING?
2. ... LINE-SIZE col?
3. ... LINE-COUNT n(m)
??????????? 表單輸出每頁由n行,其中的m行作為頁腳;?
4. ... MESSAGE-ID mid???????? 消息對象
5.? ... DEFINING DATABASE ldb?
?????? 使用邏輯數據庫,自動產生
*
事件塊
INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION
GET
END-OF-SELECTION
TOP-OF-PAGE
END-OF-PAGE
*
事件塊的簡單處理過程:
*
ABAP程序運行的時候,INITIALIZATION首先被調用;
經過初始化的輸入屏幕會顯示在表示服務器;
用戶離開輸入屏幕的時候,START-OF-SELCTION事件會被自動調用;
結果數據會以列表的形式顯示在第二個屏幕上;
*
源代碼中的事件塊順序不影響它們的執行順序
*
事件塊編碼規則(1)
INITIALIZATION
??? 通常在此事件塊中設定輸入屏幕字段的初始值
*
事件塊編碼規則(2)
AT SELECTION-SCREEN
??? 通常在此事件塊中進行用戶輸入數據的合法性檢查,發現錯誤則以消息的形式給出警示,直到用戶輸入正確的數值
例如: AT SELECTION-SCREEN .
??????????????????? IF P_DATE = SPACE .
??????????????????????? MESSAGE E001 .
??????????????????? ENDIF.
??? 效果:如果字段P_DATE為空,則程序會用消息001“日期字段不能為空!”來提示用戶必須輸入一個日期。而且輸入屏幕會等待用戶輸入,知道該字段數值合法
*
事件塊編碼規則(3)
START-OF-SELCTION
??? 通常在此事件中針對業務需求進行系統數據的查詢
例如:
???? start-of-selection .
????????? perform get_data_for_oil .
效果:
???? 在輸入屏幕用戶按下執行按鈕后,子程序get_data_for_oil被執行,在其中獲得業務相關的數據存放到內表或者其它變量,這些數據在END-OF-SELECTION事件塊中被輸出
*
事件塊編碼規則(4)
END-OF-SELCTION
??? 通常在此事件中進行結果清單的輸出
例如:
??? end-of-selection .
???????? write : 23(1) sy-vline,
?????????? 24(20) tab-gas_plan right-justified ,
效果:
??? 數據以清單的形式輸出
*
事件塊編碼規則(5)
GET
??? 從邏輯數據庫中得到數據(較少用)

TOP-OF-PAGE
??? 在此事件塊中設計輸出清單的頁頭
TOP-OF-PAGE
?????????????????? write : /1(240) '汽柴油日出廠情況表' centered .
?????????????????? write : /20(8) '日期:' ,
?????????????????????????????? 29(10) s_date ,
?????????????????????????????? 180(6) '單位:' ,
?????????????????????????????? 190(10) '噸' .
*
事件塊編碼規則(6)
END-OF-PAGE
??? 在此事件中設定輸出清單的頁腳
例如:
??? END-OF-PAGE .
??????? Write : ‘制作人’ ,? p_name .
*-------------------------------------------------------------------------------------*

*
比較所有的字段類型

要比較所有的字段類型,可以在邏輯表達式中使用下列運算符:

<運算符> 含義
EQ?等于
=?等于
NE?不等于
<>?不等于
><?不等于
LT?小于

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?------------------轉自360文檔

轉載于:https://www.cnblogs.com/caizjian/archive/2013/04/15/3022261.html

總結

以上是生活随笔為你收集整理的ABAP语法完整版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久久久久久免费看 | 精品产品国产在线不卡 | 美女av在线免费 | 亚洲一级特黄 | 国产精品无av码在线观看 | 丝袜一区在线 | 亚洲成人精品在线观看 | 一区二区三区在线视频111 | 91麻豆精品国产91久久久更新时间 | 日韩久久久久久久久久久久 | 91免费视频网站在线观看 | 在线观看亚洲 | 成年人在线免费看视频 | av在线看网站 | 欧美日本一二三 | 四虎国产精品成人免费影视 | 免费午夜网站 | 国产亚洲情侣一区二区无 | 欧美精品少妇xxxxx喷水 | 99久久精品国产网站 | 日本中文字幕在线一区 | 香蕉成人在线视频 | 一区二区视频在线观看免费 | 国产精品美女久久久久久久久 | 久久久免费观看视频 | 美女视频久久黄 | 久久精品国产第一区二区三区 | 成人免费一区二区三区在线观看 | 伊人伊成久久人综合网小说 | 视频在线观看91 | 96av视频 | 亚洲精品国产第一综合99久久 | 日本高清xxxx | 亚洲影视九九影院在线观看 | 97超碰资源网 | av大全免费在线观看 | 日韩精品中文字幕在线不卡尤物 | 在线观看成人小视频 | 欧美99热 | 精品久久中文 | 五月婷婷婷婷婷 | www国产在线 | 国产日韩视频在线播放 | 亚洲精品国久久99热 | 国产美女视频一区 | 成人av免费 | 亚洲综合色丁香婷婷六月图片 | 久久久久中文 | 亚洲日韩中文字幕在线播放 | 黄色成年 | 2023亚洲精品国偷拍自产在线 | 91色国产在线 | 江苏妇搡bbbb搡bbbb | 成人一级免费视频 | a一片一级 | 国产第一福利网 | 日韩最新中文字幕 | 青春草免费在线视频 | 国产日韩一区在线 | 91片黄在线观看 | 亚洲观看黄色网 | 91中文字幕在线 | 免费在线观看av电影 | 人人爱夜夜操 | av中文字幕在线免费观看 | 9草在线 | 黄色动态图xx | 天天操夜夜拍 | 一区二区三区手机在线观看 | 精品国产一区二区三区不卡 | 欧美成亚洲 | 黄色三级网站 | 久久久久区 | 2019中文字幕第一页 | 一区二区三区四区影院 | 国产不卡视频在线 | 日产乱码一二三区别免费 | 日韩一区二区三区免费电影 | 日本xxxx裸体xxxx17 | 成人免费视频网站在线观看 | 中文字幕第一页在线播放 | 国产不卡毛片 | 国产精品成久久久久三级 | 五月天.com| 黄色免费大全 | 天天天天色射综合 | 激情五月在线观看 | 国产看片 色 | 午夜国产福利视频 | 国产高清在线免费观看 | 性色xxxxhd | 久久精品日产第一区二区三区乱码 | 顶级欧美色妇4khd | 99久热在线精品视频 | 色在线视频网 | 日本黄色一级电影 | 一本一本久久a久久精品牛牛影视 | 97自拍超碰 | 中文字幕在线观看完整 | 成人亚洲精品国产www | 亚洲精品在线网站 | 91看成人 | 亚洲精品小视频 | 九九九免费视频 | 国产黄色片久久久 | 国产精品嫩草影院99网站 | 在线免费看片 | 激情视频免费在线观看 | 亚洲精品视频网站在线观看 | 波多野结衣电影一区 | 亚洲精品久久久蜜臀下载官网 | 一区二区三区日韩精品 | av中文字幕av | 在线播放你懂 | 亚洲乱码一区 | 中文字幕有码在线播放 | 丁香伊人网 | 中文字幕在线一区二区三区 | 久久亚洲国产精品 | 日日天天狠狠 | 精品在线免费视频 | 国内精品久久久久久 | 国产精品18久久久久久久 | 搡bbbb搡bbb视频| 国产在线观看 | 91桃色国产在线播放 | 91精品国产乱码在线观看 | 亚洲国产精品500在线观看 | 欧美午夜性生活 | 午夜美女网站 | av大片免费看 | 成人午夜黄色 | 欧美亚洲国产一卡 | 天天艹天天爽 | 日日干影院 | 午夜美女wwww | 国产在线 一区二区三区 | 久草在线综合网 | 91精品国产91久久久久久三级 | 国产69久久 | 国产91欧美 | 视频福利在线观看 | 久久人人爽人人爽人人片av免费 | 91大神精品视频在线观看 | 国产一及片 | 9在线观看免费高清完整版在线观看明 | 国产精品美女久久久网av | 婷婷色伊人 | 91精品国产九九九久久久亚洲 | 黄色影院在线免费观看 | 香蕉影视app | 国产资源在线免费观看 | www.伊人网.com| 国产视频亚洲精品 | 久久午夜网 | 婷婷午夜激情 | 久久免视频 | 日韩av一区二区在线播放 | 亚洲日韩中文字幕在线播放 | 91精品国产综合久久久久久久 | 嫩嫩影院理论片 | 国产999视频 | 九九热精品国产 | 91在线产啪| 亚洲夜夜爽| 久久夜色精品国产欧美乱 | 国产资源在线免费观看 | 久久久久综合网 | 久久免费电影网 | 人人射人人插 | 97小视频 | 欧美激情视频久久 | 久久久精华网 | 欧美一进一出抽搐大尺度视频 | 深夜免费福利视频 | 日韩视频1区 | 69av国产| 色播激情五月 | 蜜臀av网站| 国产一级做a | 久久艹欧美 | 在线观看欧美成人 | 中文字幕免费观看视频 | 日韩精品第1页 | 免费观看一级一片 | 国产97超碰| 全久久久久久久久久久电影 | 欧美午夜性生活 | 天天色图 | 欧美精品xx| 国产精品久久 | 欧美成人黄色 | www.五月婷婷| 成人性生交大片免费看中文网站 | 91日韩国产| 午夜视频日本 | 国产高清在线观看av | 2020天天干夜夜爽 | 国产中出在线观看 | 日本精品一区二区三区在线观看 | 久久久综合香蕉尹人综合网 | 欧美日产在线观看 | www.69xx| 久久草在线精品 | 精品女同一区二区三区在线观看 | 久久免费视频网 | 少妇av片 | 最新av电影网站 | 九九久久免费视频 | 91精品国自产在线观看 | 亚洲黄色免费在线看 | 亚洲国内在线 | 国产精品久久久久久久久久ktv | 亚洲成人黄色 | 久草久草久草久草 | 午夜在线免费观看视频 | 国产成人综合在线观看 | 国产亚洲激情视频在线 | 国产精品资源在线 | 在线观看视频你懂得 | 97看片吧 | 99精品欧美一区二区三区黑人哦 | 精品国产午夜 | 激情五月婷婷激情 | 99精品国产亚洲 | a天堂中文在线 | 玖玖玖影院 | 特片网久久 | 在线国产中文 | 国产成人精品久久久久 | 免费在线国产视频 | 91成人黄色| 午夜av在线电影 | 91综合视频在线观看 | 亚洲精品动漫久久久久 | 人人干网 | 在线电影av | 在线中文字幕观看 | a特级毛片| 欧美一级艳片视频免费观看 | 97福利视频| 国产美女免费 | 伊人激情综合 | 最新av免费在线观看 | 久久久久久久久久影视 | 黄色免费观看视频 | 国产亚洲精品久久久久秋 | 91精品在线免费 | 99热99re6国产在线播放 | 色爽网站| 日本三级人妇 | av电影一区二区三区 | 成人国产精品久久久久久亚洲 | 99久久国产免费看 | 亚洲综合导航 | 中文字幕久久精品亚洲乱码 | 麻豆国产网站 | 婷婷色婷婷 | 久久综合久色欧美综合狠狠 | 九色精品免费永久在线 | 精品一区二区在线免费观看 | 国产日韩欧美在线看 | 国产一区在线视频 | 天天撸夜夜操 | 亚洲永久精品在线 | 成人免费视频播放 | 日韩电影一区二区在线 | av在线免费在线 | 国产精品2区 | 日韩av视屏在线观看 | 天天操人人干 | 久久成人国产精品一区二区 | 久久免费一 | 免费黄色网址大全 | 久久久久久久久久久网 | 免费福利小视频 | 91在线中文字幕 | 91激情视频在线观看 | 午夜国产一区 | 中文字幕色综合网 | 操操操操网 | 亚洲人成人在线 | 91精彩视频在线观看 | 97热久久免费频精品99 | 69xxxx欧美 | 国产在线观看你懂得 | 在线97 | 日韩一区二区三区免费电影 | 一区二区三区四区免费视频 | 精品福利视频在线 | 奇米先锋 | 国产a视频免费观看 | 久久爱992xxoo | 婷婷九月激情 | 久久66热这里只有精品 | 欧美污污视频 | 欧美综合久久久 | 日韩免费高清在线观看 | 玖玖在线看 | 91视频-88av| 97成人超碰| 激情综合五月 | 久草在线官网 | 三级在线国产 | 天天射,天天干 | 日韩在线观看你懂的 | 在线成人国产 | 国产91在线免费视频 | 国产精品久久久久久久久久久久午夜 | 国产在线精品一区二区 | 操操操av| 日韩欧美在线中文字幕 | 欧美污在线观看 | 97超碰影视 | 天天操天天射天天舔 | 激情婷婷在线 | 久久爱影视i | 久久99深爱久久99精品 | 91看片淫黄大片91 | 久久久久成人精品亚洲国产 | 国产二区视频在线观看 | 欧美日韩综合在线观看 | 亚州黄色一级 | 精品视频在线免费观看 | 91视频麻豆视频 | 日本高清免费中文字幕 | 国产一区二区在线精品 | 免费a级黄色毛片 | 精品国产免费久久 | 99热99| 国产免费xvideos视频入口 | 国产成人久久久77777 | 成人在线一区二区 | 亚洲免费在线观看视频 | 国产黄色一级片在线 | 色综合夜色一区 | 日韩精品三区四区 | 久久久久久久久久久电影 | 日本激情视频中文字幕 | 国产精品自拍在线 | 久久不射电影院 | 精品亚洲网| 亚洲精品免费在线观看视频 | 免费视频xnxx com | 91香蕉视频好色先生 | 超碰在线中文字幕 | 一区二区三区在线免费观看 | 韩国中文三级 | 天天操天天舔天天爽 | 欧美另类高清 | 国产精品成人av电影 | 精品国产理论 | 色婷婷久久一区二区 | 久香蕉 | 亚洲成人资源在线 | 福利视频入口 | 国产黄色片一级 | 欧美日韩在线视频一区二区 | 99成人免费视频 | 2021国产在线 | 欧洲精品码一区二区三区免费看 | a天堂中文在线 | 福利视频导航网址 | 人人玩人人爽 | 国产成人精品亚洲精品 | 怡红院成人在线 | 婷婷激情5月天 | 日韩中文字幕国产精品 | 亚洲精品高清在线观看 | 在线成人小视频 | 亚洲aⅴ一区二区三区 | 久久成人在线视频 | 国产在线观看午夜 | 日韩精品一区不卡 | 成人av中文字幕在线观看 | av在线精品 | 一区 在线观看 | 婷婷六月在线 | 日韩久久影院 | 亚洲成aⅴ人片久久青草影院 | 在线视频亚洲 | 欧美亚洲免费在线一区 | 99在线精品视频在线观看 | 成人教育av | 婷婷久月 | 综合网色 | 天天拍天天操 | 欧美精品亚洲二区 | 欧美精品久久人人躁人人爽 | 免费在线观看av片 | 国产成人精品a | 久久精品3 | 99久久精品免费看国产四区 | 91豆麻精品91久久久久久 | 亚洲精品视频在线免费播放 | 草久草久 | 亚洲激情 | 婷婷综合五月天 | 少妇bbbb揉bbbb日本 | 欧美精品999 | 久久精品超碰 | 国产亚洲精品久久久久动 | 91免费高清| 97热视频 | 日韩一级精品 | 日本三级不卡 | 亚洲欧美精品在线 | 最近中文字幕完整视频高清1 | 人人干免费 | 色999在线 | 日本中文字幕在线视频 | 国产玖玖精品视频 | 欧美性生交大片免网 | 91av免费在线观看 | 精品美女久久久久久免费 | 中日韩免费视频 | 草久视频在线 | av电影亚洲 | 亚洲狠狠丁香婷婷综合久久久 | 91高清在线 | 天天做天天射 | 玖玖精品在线 | 国产裸体视频bbbbb | 日日躁你夜夜躁你av蜜 | 精品欧美一区二区在线观看 | 日韩一级成人av | 欧洲一区精品 | 天天想夜夜操 | 天天视频色版 | 特级xxxxx欧美 | av综合 日韩| 午夜av大片 | 国产午夜av | 亚洲黄色网络 | 国产在线91在线电影 | 中文字幕黄网 | 国产久草在线观看 | 国产伦理一区二区三区 | www日韩在线观看 | 国产美女搞久久 | 欧美日韩一区二区三区视频 | 欧美成人一区二区 | 深爱激情久久 | 午夜国产福利在线 | 免费av小说 | 黄色成人av网址 | 狠狠艹夜夜干 | 国产精品99久久久久久久久久久久 | 91麻豆精品国产91久久久久久久久 | 中文字幕在线观看免费观看 | 免费情趣视频 | 在线看v片成人 | 婷婷色网 | 91精品国产麻豆 | av在线等 | 免费看一级特黄a大片 | 特级a老妇做爰全过程 | 亚洲欧美经典 | www.久久色 | 国产精品第一页在线观看 | 日韩欧美黄色网址 | 中文字幕在线看视频国产 | 国产专区视频在线观看 | 狠狠的操狠狠的干 | 91久久久久久国产精品 | 欧美精品久久久久久久久免 | 操少妇视频| 91av中文字幕| 中文字幕成人一区 | 亚洲成人黄色 | 精品91在线 | 91黄色在线看 | 91av在线视频播放 | 日韩乱码中文字幕 | 国产va精品免费观看 | 热久久这里只有精品 | 免费福利在线 | 西西444www大胆高清图片 | 网址你懂的在线观看 | 成人av免费 | 毛片在线播放网址 | 婷婷国产视频 | 五月天天天操 | 久久激情综合 | 九九九九热精品免费视频点播观看 | www.五月天婷婷.com | 91麻豆视频 | 色综合天天综合网国产成人网 | 伊人婷婷 | 国产麻豆电影在线观看 | 夜夜操天天干, | 国产又粗又猛又黄视频 | 日日躁夜夜躁xxxxaaaa | 超碰公开在线观看 | av视屏在线播放 | 麻豆视频91 | 国产丝袜一区二区三区 | 中文字幕在线视频一区 | 天天操天天射天天添 | 色播五月激情综合网 | 久久有精品 | 狠狠的干 | 日韩高清不卡在线 | 久久精品欧美一区二区三区麻豆 | 久久精品视频观看 | 高清av免费一区中文字幕 | 国产1级视频 | 天堂av免费在线 | 精品视频在线免费观看 | 国产玖玖在线 | 国产精品理论在线观看 | 在线视频 精品 | 久久国产精品99国产精 | 久久免费精品 | 亚洲精品乱码久久久久久蜜桃欧美 | 激情小说网站亚洲综合网 | 五月天久久婷 | av福利电影 | 91日韩在线专区 | 97人人超| 9999在线 | 欧美精品一区二区蜜臀亚洲 | 五月婷婷av | 亚洲国产三级在线 | 成人免费观看视频大全 | 国产蜜臀av| 久久久999精品视频 国产美女免费观看 | 狠狠干2018 | 久久久久久综合网天天 | 国产三级在线播放 | 91九色蝌蚪国产 | 免费黄色a网站 | 91麻豆传媒 | 亚洲欧美日本一区二区三区 | 在线观看 国产 | 久久综合狠狠综合久久综合88 | 天天干天天做天天操 | 91麻豆精品国产91久久久久久久久 | 奇米影视8888| 丝袜美腿一区 | 中文资源在线官网 | 97超碰影视 | www.久草.com | 欧美成人性战久久 | 91精品一区二区三区蜜臀 | 亚洲精品国产精品国自产观看浪潮 | 人人干,人人爽 | 久久综合九色综合97婷婷女人 | 免费成人在线观看视频 | 草久久av | 国产黄a三级三级三级三级三级 | 亚洲国内精品视频 | 五月婷婷丁香六月 | 丁香六月在线观看 | 久久久午夜精品理论片中文字幕 | 中国精品少妇 | 国产精品女主播一区二区三区 | 2020天天干天天操 | 黄色国产大片 | 精品亚洲欧美一区 | 国产一区视频在线播放 | 久久国产亚洲 | 亚洲欧洲美洲av | 五月激情丁香婷婷 | 伊人成人久久 | 天天碰天天操视频 | 亚洲精品成人网 | 久久久久久久精 | 色播五月激情综合网 | 亚洲高清在线观看视频 | 日韩欧美久久 | 国内综合精品午夜久久资源 | 成人国产一区 | 午夜久久影视 | 青青草国产在线 | 国产a高清| 热re99久久精品国产99热 | 天天综合日日夜夜 | 久久黄色成人 | 91中文字幕网 | av在线电影网站 | 黄色免费观看视频 | 在线视频 区 | 国产精品自产拍在线观看中文 | 99精品免费网 | 国产成人精品亚洲 | 日韩一片| 欧美国产亚洲精品久久久8v | 亚洲精品18日本一区app | 亚洲精品无| 国产精品女同一区二区三区久久夜 | 国产大尺度视频 | 亚洲精品久久久久中文字幕二区 | 日韩精品久久久久 | 国产啊v在线 | 蜜桃视频日本 | 久久五月激情 | 国产免码va在线观看免费 | 天天插天天射 | 综合久久综合久久 | 国产不卡精品视频 | 天天摸日日摸人人看 | 亚洲专区视频在线观看 | 亚洲国产97在线精品一区 | 天天操天天射天天 | 在线观看亚洲成人 | 久久综合狠狠综合 | 精品美女国产在线 | 婷婷久久综合九色综合 | 成人在线视频网 | 成人精品亚洲 | 免费a现在观看 | 少妇啪啪av入口 | 激情综合国产 | 一区二区三区国 | www国产亚洲精品久久网站 | 日本一区二区三区免费看 | 欧美午夜精品久久久久久浪潮 | 国产亚洲一级高清 | 蜜臀av麻豆 | 欧美色精品天天在线观看视频 | 超碰在97 | 97视频免费在线 | 精品国产乱码久久久久 | 成人免费观看视频网站 | 欧美日韩二区三区 | 亚洲精品视频大全 | 三级动态视频在线观看 | 四虎天堂 | 精品久久综合 | 天天看天天干天天操 | 曰韩在线| 五月婷婷另类国产 | 狠狠色噜噜狠狠 | 奇米影视999| 青青射| 久久精品国产v日韩v亚洲 | 一级性视频 | 亚洲精品美女在线观看 | 在线观看日韩免费视频 | 四虎国产精品永久在线国在线 | 一区二区三区视频网站 | 精品亚洲免a | 免费一级特黄毛大片 | 日本黄色免费播放 | 8x成人在线 | 国产高清视频免费在线观看 | 少妇搡bbbb搡bbb搡aa | 精品久久久久久久久久久久 | 黄网av在线 | 五月天亚洲精品 | 人人玩人人添人人 | 麻豆视频免费 | 久久综合亚洲鲁鲁五月久久 | 日韩电影在线观看一区二区 | 综合网中文字幕 | 在线免费精品视频 | 精品久久久久久一区二区里番 | 国偷自产中文字幕亚洲手机在线 | 久久高清片 | 久久久久亚洲a | av网站免费看| 天天天综合 | www.婷婷com | 丁香婷婷久久久综合精品国产 | 色婷婷狠狠操 | 久久手机免费视频 | 久久免费精品一区二区三区 | 欧美99精品 | 97色在线观看免费视频 | 久草91视频 | 午夜精品一区二区三区在线 | 久久第四色 | 一级免费观看 | 国产在线永久 | 日本在线观看一区二区 | 天天摸天天舔天天操 | 天天做天天射 | 亚洲精品看片 | 欧美综合在线观看 | 午夜精品一区二区三区四区 | 成人网大片 | 久章草在线观看 | 欧美一级片免费观看 | 国产高清在线观看av | 成人av网页| 久久国产精品99精国产 | 亚洲精品啊啊啊 | 91成人午夜 | 在线激情影院一区 | 日韩免费| 亚洲久在线 | 色激情在线 | 国产中文字幕网 | 狠狠插狠狠操 | www黄色大片| 免费网址在线播放 | 超碰电影在线观看 | 免费视频a | 黄色国产大片 | www.成人精品 | 日韩91精品 | 日韩免费小视频 | 91在线小视频 | 欧美午夜精品久久久久久浪潮 | 久久久久99精品国产片 | 久久无码精品一区二区三区 | 国产精品久久亚洲 | 色综合久久88色综合天天 | 亚洲va欧美va人人爽春色影视 | 色婷婷成人网 | 国产在线一区二区 | 国产成人亚洲在线观看 | 久久国产精品99久久久久久进口 | 中文字幕亚洲欧美日韩2019 | 97av在线视频 | 午夜黄色一级片 | 日韩欧美网址 | 一区二区三区中文字幕在线观看 | 天躁狠狠躁 | 美女视频永久黄网站免费观看国产 | 中文字幕国产一区 | 国产女v资源在线观看 | 午夜精品久久久久久久99婷婷 | 亚洲国产成人久久 | 久草电影在线 | 91精品视频一区 | 国产精品久久久久四虎 | 日韩视频免费看 | 色播五月激情五月 | 日韩美女高潮 | 精品电影一区二区 | 国产一区福利 | 黄色片网站免费 | 国产视频1区2区3区 久久夜视频 | 国产裸体视频网站 | 8x成人在线 | 玖玖玖在线观看 | 日韩夜夜爽 | 日韩av图片 | 国产99亚洲 | 久久久久免费精品国产 | 日韩电影在线一区 | av中文在线 | 在线观看韩日电影免费 | av免费看看| 久久亚洲国产精品 | 成年人网站免费观看 | 天堂av色婷婷一区二区三区 | 亚洲国产精品电影 | 亚洲精品中文字幕在线 | 免费在线观看一区二区三区 | 欧美激情精品久久久 | 97在线观看免费高清完整版在线观看 | 精品视频中文字幕 | www.狠狠操 | 在线观看网站黄 | 国产美女久久 | 91精彩在线视频 | 亚洲国产精品成人综合 | 黄色大片免费网站 | 免费观看全黄做爰大片国产 | 免费91在线观看 | 91亚洲国产成人久久精品网站 | 中文字幕文字幕一区二区 | 99久久精品国产网站 | 人人爽人人澡人人添人人人人 | 国产精品国产三级国产aⅴ入口 | 99av国产精品欲麻豆 | 天天操天天操天天操天天操 | 久久av高清 | 天天艹天天干天天 | 黄p网站在线观看 | 久久伦理电影 | 天天射天天射天天射 | 色99视频| www亚洲精品 | 免费手机黄色网址 | 中文字幕色综合网 | 欧美成人基地 | 久久综合亚洲鲁鲁五月久久 | 成人免费在线播放视频 | 麻豆系列在线观看 | 日韩高清免费观看 | 久久福利小视频 | 国产美女视频一区 | 精品国产伦一区二区三区观看体验 | 深夜免费小视频 | 精品在线播放 | 玖玖玖在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 九九免费精品视频在线观看 | 成人黄色中文字幕 | 欧美日韩另类在线观看 | 在线观看精品黄av片免费 | 成人一级在线观看 | 成人性生交大片免费看中文网站 | 中文字幕在线观看视频网站 | 国产99久久精品一区二区300 | 国产va饥渴难耐女保洁员在线观看 | 日韩中文字幕免费在线播放 | 91精品久久久久久综合五月天 | 最新在线你懂的 | 久久69av| 在线国产欧美 | 99精品视频免费在线观看 | 日本精品久久 | 日韩三级精品 | 97超碰香蕉 | 国产免费黄视频在线观看 | 91九色性视频 | 日本久久电影 | 日韩在线免费电影 | 91 在线视频 | av三级在线免费观看 | 视频直播国产精品 | 日日夜日日干 | 国产国语在线 | 日本韩国精品一区二区在线观看 | 国产成人一区二区在线观看 | 成人免费视频网 | 麻花天美星空视频 | 天天se天天cao天天干 | 亚洲激情精品 | 精品国产日本 | 欧美a√大片 | 黄色91免费观看 | 91在线免费观看国产 | 天堂网一区二区 | 亚洲一级片免费观看 | 亚洲最新av网址 | 国产精品原创av片国产免费 | 免费观看视频的网站 | 国产精品视频不卡 | 国产在线欧美在线 | 999热视频| 色的网站在线观看 | 国产精品自在线拍国产 | 国产一级不卡视频 | 国产.精品.日韩.另类.中文.在线.播放 | 人人精品久久 | 久久人人爽人人爽人人 | 黄色看片 | 久久a国产 | 91视频午夜| 欧美日韩高清国产 | 国内亚洲精品 | 国产在线观看污片 | 激情久久伊人 | 97视频播放 | 九九热只有精品 | 黄色一级性片 | 国产精品福利午夜在线观看 | 亚洲三级在线免费观看 | 中文字幕黄色网址 | 丁香六月伊人 | 一级特黄aaa大片在线观看 | 欧洲亚洲精品 | 五月天激情视频 | 最新不卡av | 成人在线播放网站 | 在线天堂日本 | www免费在线观看 | 97国产情侣爱久久免费观看 | 久草新在线 | 天天综合色网 | 又爽又黄在线观看 | bbb搡bbb爽爽爽 | 91丨九色丨蝌蚪丨对白 | 热久久这里只有精品 | 久久99久久99免费视频 | 国产精品久久久久久一区二区 | 最新av在线播放 | 狠狠五月天 | 亚洲伦理一区 | 日韩在线观看视频一区二区三区 | 91成年视频 | 中文字幕av全部资源www中文字幕在线观看 | 热re99久久精品国产66热 | 午夜视频免费播放 | 天天操狠狠操网站 | 国产成人资源 | 久久综合狠狠综合 | 2023av在线 | 亚洲 成人 欧美 | 成人国产一区二区 | 色综合天天综合 | 91爱爱免费观看 | 久久精品高清视频 | 91在线入口 | 免费黄色a级毛片 | 91九色蝌蚪视频网站 | 国产色在线 | 日韩中文字幕国产 | 免费成人av在线看 | 天天插视频 | 国产精品毛片久久久 | 亚洲美女视频在线 | 欧美日韩亚洲在线 | 911精品视频 | 国产成人精品一区二区三区网站观看 | 亚洲黄色影院 | 欧美日韩国产网站 | 一二三区视频在线 | 国产1区在线观看 | 成人久久久精品国产乱码一区二区 | 国产美女搞久久 | 成人h动漫在线看 | 国产一级视频免费看 | 欧美一区免费在线观看 | 成人黄色大片 | 亚洲免费av片 | 国产精品99久久久久久小说 | 免费大片av | 探花视频免费观看高清视频 | 久久成人在线视频 | 免费中文字幕视频 | 最新中文字幕视频 | 91天堂在线观看 | 蜜臀av在线一区二区三区 | 成年人免费av网站 | 亚洲精品在线观看不卡 | 国产视频日韩 | 中文字幕一区二区三区精华液 | 在线观看久久久久久 | 久久精品视频在线免费观看 | 91麻豆视频 | 91cn国产在线 | 五月开心激情网 | 欧美日韩精品在线观看视频 | 超碰av在线播放 | 黄色一及电影 | 亚洲波多野结衣 | 91精品国自产拍天天拍 | 五月天久久久久 | 精品一区二区日韩 | 亚洲精品2区 | 成人一级| 亚洲精品视频偷拍 | 中文字幕 91 | 亚洲 欧美 综合 在线 精品 | 一级免费片 | 国产一级特黄毛片在线毛片 | 伊甸园av在线 | 亚洲 欧美 另类人妖 | 丝袜美腿在线视频 | 免费网站污 | 成人免费在线看片 | 91精品国产网站 | 国产一级片免费观看 | 久久久高清 | 久久成人在线 | 亚洲国产wwwccc36天堂 | 日本最新中文字幕 | 一区二区三区四区精品视频 | 五月开心激情网 | 四虎永久精品在线 | 国产精品一区二区免费看 | 久久一视频 | 免费亚洲视频在线观看 | 欧美一二在线 | 高清av影院 | 国产成人三级一区二区在线观看一 | 日韩高清久久 | 在线精品国产 | 日本三级香港三级人妇99 | 久久久久久久久久福利 | 国产精品久久久久久久久久免费看 | 欧美福利网址 | 狠狠躁天天躁 | 中国一级片在线 | 在线视频一二三 | 午夜影院一级 | 日韩在线第一区 | 国产剧情一区二区在线观看 | 日韩在线一级 | 国产亚洲人 | 99久久99热这里只有精品 | 国产精品免费久久久久影院仙踪林 | 一区二区三区 中文字幕 | 久久免费国产电影 | 午夜视频免费在线观看 | 欧美精品久久久久久久久久久 | 国产亚洲精品久久网站 | 2019av在线视频 | 中文字幕第一 | 中国精品少妇 | 黄色www免费| 97av视频在线观看 | 欧美黑人性猛交 | 亚洲最新av在线网址 | 女人高潮特级毛片 | 丝袜网站在线观看 | 久久夜色电影 | 国内精品视频一区二区三区八戒 | 亚洲人成网站精品片在线观看 | 久久精品日本啪啪涩涩 | 国产小视频免费在线网址 |