![SAP基础知识学习整理_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/26/f6e25b98-1e3a-47ef-b65b-3d0c6c26eb64/f6e25b98-1e3a-47ef-b65b-3d0c6c26eb641.gif)
![SAP基础知识学习整理_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/26/f6e25b98-1e3a-47ef-b65b-3d0c6c26eb64/f6e25b98-1e3a-47ef-b65b-3d0c6c26eb642.gif)
![SAP基础知识学习整理_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/26/f6e25b98-1e3a-47ef-b65b-3d0c6c26eb64/f6e25b98-1e3a-47ef-b65b-3d0c6c26eb643.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据类型C :字符串D :日期型 格式为 YYYYMMDD 例: '1999/12/03' F : 浮点数 长度为 8I :整数N :数值组成的字符串 如: 011, '302'P : PACKED数 用于小数点数值 女口: 12.00542T : 时间 格式为: HHMMSS 如: '14:03:00'X : 16进制数 如: '1A03'变数宣告DATA <F> <Length> <type> <value>decimals<F> 变数名称<length>
2、<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宣告常數)、STAT
3、ICS臨時變數宣 告).exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.STATICS 敘述宣告的變數僅在目前的程式中使用 , 結束後會自動釋放語法:STATICS <c> <length> <type> <value> <decimals>系統專用變數說明系統內部專門創建了 SYST這個STRUCTUR里面的欄位存放系統變數,常用的系 統變數有 :SY-SUBRC : 系統執行某指令后 , 表示執行成功与否的變數 ,'0' 表示成功SY-UNAME
4、當前使用者登入 SAP的 USERNAME;SY-DATUM:當前系統日期;SY-UZEIT: 當前系統時間 ;SY-TCODE:當前執行程式的 Transaction codeSY-INDEX :當前LOOPS環過的次數SY-TABIX: 當前處理的是 internal table 的第几筆SY-TMAXL: Internal table 的總筆數SY-SROWS屏幕總行數;SY-SCOLS:屏幕總列數;SY-MANDT: CLIENT NUMBERSY-VLINE: 畫豎線SY-ULINE: 畫橫線TYPE 敘述用來指定資料型態或宣告自定資料型態Example:TYPES: BEGIN O
5、F MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 敘述跟TYPE敘述使用格式相同,如DATA TRANSCODE LIKE SY-TCODE.不同的是LIKE用在已有值的資料項,如系統變數,而TYPE敘述則是用 在指定資料型態。输出一. WRITE 語句ABAP/4用來在屏幕上輸出資料的指令是 WRITE指令,例如:WRITE: 'USER NAME IS:', SY-UNAME.二. 指定屏幕輸出位置 指定輸出位置的語句格式為 :WRITE: AT / <pos
6、> (<len>)資料項 <par>其中: / : 在下一行輸出<pos>: 指定輸出的行號 ;(<len>): 指定輸出位數 ( 長度)<par>: 指定顯示格式參數 , 參數有 :LEFT-JUSTIFIED 資料靠左對齊CENTERE資料靠中間對齊RIGHT-JUSTIFIED 資料靠右對齊UNDER vg>正對在資料項vg>的下面顯示NO-GAP緊接著顯示,不留空格USING EDIT MASK <m>:使用內嵌子元顯示,如12:03:20USING NO EDIT MASK不使用內嵌子元NO-Z
7、ERO:數字前面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/MMMM/DD/YYYY:DD/MM/YYYYYYYY/MM/DD:YYYY/DD/MM:例如 1: WRITE: /10(6) 'ABCDEFGHIJK'.輸出結果為 : ABCDEF例如 2: D
8、ATA: 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,030ABCDEF例如 3: DATA: LEN TYPE I VALUE 10,POS TYPE I VALUE 11,TEXT(10) VALUE '1234567890'WRITE &
9、#39;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.WRI
10、TE / 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.COUNTE
11、R = COUNTER + 1.ADD 1 TO COUNTER.在此,三条 运算语句进 行相同算术 运算输出屏幕上 的线和空行用下列语法 ,可以在输 出屏幕上生 成水平线: 语法ULINE AT /<pos>(<len>).它等同于WRITE AT /<pos>(<len>) SY-ULINE.AT 后的格式规 范,与在 在屏幕上定 位 WRITE 输出 ( 页 28) 中为 WRITE 语 句说明的 格式规范完 全一样。如果没有格 式规范,系 统则开始新 的一行,并 用水平线填 充该行。否 则, 只按指 定输出水平 线。生成水平线 的另一种方
12、 法,是在 WRITE 语句中键入 恰当数量的 连字符,如 下所示:WRITE AT /<pos>(<len>) '.'.垂直线用下列语法 ,可以在输 出屏幕上生 成垂直线: 语法WRITE AT /<pos> SY-VLINE.或WRITE AT /<pos> '|'.空行用下列语法 ,可以在输 出屏幕上生 成空行: 语法SKIP <n>.该语句从当 前行开始, 在输出屏幕 上生成 <n> 个空行。如 果没有指定 <n> 的值,就输 出一个空行 。要将输出定 位在屏幕的 指定行
13、上, 请使用: 语法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. 要查看
14、系統所提供有那些符號及圖示 , 可選擇 'EDIT' 下的 'Insert Statement', 選擇'Write',接下來選擇要查看的群組,如SYMB0或ICON,接下來按 'Display' 即可 .一. Internal Table的宣告ABAP/4中的Internal Table 是一种Data Structure,類似于其他語言中的STRUTUR它可以由几個不同類型的欄位(field) 組成,用來表示具有不同屬性的 某一事物 , 單獨一筆資料表示某個事物 , 多筆資料表示具有相同屬性的多個事物Internal tabl
15、e 的定義有以下几种格式 : 格式一. 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 T
16、YPE 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 <wo
17、rk 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: B
18、EGIN 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,
19、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-COLUMN、1 TAB2-COLUMN® TAB2-CO
20、LUMN等定位表格工作区域 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_TYP,E 其行包含首 先创建的基 本类型I字段。然后,通过引用VECTOR_TYPEj建数据对象VECTOR通过使用WI
21、TH HEADERLINE 选项还创建 表格工作区 域 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
22、 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,COL
23、1 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 T
24、IMES.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 A
25、T 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 LINECOLLECT旨令也是將元素加入Internal table中,与APP
26、END勺區別是: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
27、-COL2 = 80. COLLECT ITAB.此時, internal table中放的是 2筆數据, 分別為:ITAB-COL1 ITAB-COL2'ABC' 90'XYZ' 20INSERT LINE 將元素插入在指定的 internal table 位置之前 .格式: INSERT <wa> INTO INITIAL LINE INTO <itab> INDEX <idx> 或者 : INSERTLINES OF<itab1> FROM<n1> TO<n2> INTO <it
28、ab2> INDEX<idx> 其中:<wa>即work area,工作區中的元素.INITIAL LINE INTO : 插入一筆初始化的記錄 .<itab>: internal tableINDEX <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 *
29、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 202 100 200 " 插入的元素3 20 404 30 60插入另一 Internal Table 元素
30、 語法:INSERT LINES OF <itab1> FROM <n1> TO <n2> TO <itab2> INDEX <idx>將<itab1>的元素插入至<itab2>中,位置在<idx>之前,可選取自<n 1>至<n2> 的範圍Example:APPEND LINES OF ITAB TO JTAB INDEX 3.將ITAB所有元素插入JTAB中,位置在第三個元素之前 讀取 internal table格式一:LOOP AT <itab> INTO
31、<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>舉例. ( 格式二)DAT
32、A: 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
33、 = 3ITAB-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-SUBR(傳回0,找不到則傳回4, <itab> 必須宣告有work area修改
34、 internal table 中的值格式: MODIFY <itab> FROM <wa>INDEX <idx>TRANSPORTINGvf1>vf2> WHERE vconditions>舉例一. 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 bi
35、rthday = '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>其中:vorder way> 有 DESCENDIN和 ASCENDING, Default
36、為 ASCENDING.<f1>: 為指定排序的欄位 .Example:SORT ITAB DESCENDING BY COL2.將ITAB根據COL2欄位遞減排序 确定内表属 性如果在处理 过程中想知 道内表一共 包含多少行 ,或者想知 道定义的 OCCURS 参数的大小,请使用DESCRIBE语句,用法如下:语法DESCRIBE TABLE vitab> LINES vlin> OCCURS vocc>.如果使用 LINES 参数,则将 填充行的数 量写入变量 vlin> 。如果使用 OCCURS 参数,则将 行的初始号 写入变量 <occ>
37、 。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 O
38、CC.WRITE: / LIN, OCC. 其输出为: 0 101.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 tableREFRESH <itab>.清空<itab> 中的值.使用在沒有 HEADER LINE的
39、 InternalTable 中 , 清除所有元素CLEAF<itab>. 清空<itab> 的 Header Line.使用在有 HEADERJNE 的 InternalTable 中 , 清除所有元素FREE <itab>.釋放記憶体空間.釋放(Release) Internal Table所佔的記憶體空間,用在REFRES和 CLEAR旨令之後将值重置为 默认值 可以用 CLEAR 语句重置任 何数据对象 值,如下所 示: 语法CLEAR <f>.exp:DATA NUMBER TYPE I VALUE '10'.WRITE
40、 NUMBER.CLEAR NUMBER.WRITE / NUMBER. 输出为:100CLEAR语句将字段NUMBER勺内容从10重置为默认 值0添加字段 顺序并将结 果赋给另一 个字段语法ADD <n1> THEN <n2> UNTIL <nz> GIVING <m>.如果 <n1>、 <n2>、 .、 <nz> 是在内存中 相同类型和 长度勺等距 字段序列, 则进行求和 计算并将结 果赋给 <m>添加字段 顺序并将结 果添加到另 一个字段勺 内容中 语法ADD <n1> THEN
41、<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 SER
42、IES-N1 THEN SERIES-N2 UNTIL SERIES-N5 GIVING SUM. WRITE SUM.ADD SERIES-N2 THEN SERIES-N3 UNTIL SERIES-N6 TO SUM. WRITE / SUM.输出如下:150350在此,将N1到N5组件内容求 和并将其值 赋给字段SUM然 后,将N2到N6 组件求 和并将其添 加到 SUM 的值中。屏幕輸入命令在ABAP/4中要從螢幕輸入變量,使用的命令是PARAMETER及SELECTION-OPTIONS:1. PARAMETER:輸入一個變量或欄位內容2. SELECTION-OPTIONS使用條
43、件篩選畫面來輸入數据PARAMETER指 令基本的輸入命令,類似如BASIC的INPUT命令,但無法使用F格式(浮點數) 語法 :PARAMETERS <p> DEFAULT <f> LOWER CASEOBLIGATORY AS CHECKBOXRADIOBUTTON GROUP <rad>Example:PARAMETERS: NAME(8),AGE TYPE I,BIRTH TYPE D.執行結果 :在日期的輸入格式上為 MM/DD/YY , MM/DD/YYYY, MMDD或YMMDDYYYY如輸入020165表 1965 年02 月01 日, 與0
44、2/01/65 的輸入是一樣的 , 日期輸入範圍為 西元 1950年至 2049年1. DEFAULT設定輸入的預設值Example:PARAMETERS: COMPANY(20) DEFAULT 'DELTA',BIRTH TYPE D DEFAULT '19650201'.2. LOWER CASEABAP/4預設是將字串輸入值自動轉換為大寫,加上此參數會將輸入的資料轉成 小寫,3. OBLIGATORY強制要求輸入 , 螢幕上會出現一個 ? , 使用者必須要輸入才可 .4. AS CHECKBOX 輸入CHECKBO的格式Example:PARAMETER
45、S: 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 * FRO
46、M SPLFI WHERE CARRID BETWEEN LOW AND HIGH.ENDSELECT.SELECTION-OPTIONSSELECTION-OPTIONSt入的值實際上是放在 internal table 中的,該 Internal table有四個欄位,分別是:SIGN,OPTION,LOW,HIGH.條件篩選檢查條件輸入畫 面指令,輸入條件後可配合SELECTS令自TABLE讀取符合條件的資料,直接執 行或放入 Internal Table 中, 條件有四個參數 :1. SIGN:I: 表篩選條件符合的資料E: 表篩選條件不符合的資料2. OPTION: 比較的條件符號E
47、Q(等於),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:SE
48、LECT-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 SPFL
49、I-CONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO. ENDSELECT.2. 使用CHEC參數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.
50、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-CI
51、TYFROM, SPFLI-CITYTO.ENDSELECT.3. 使用IFIN敘述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-SCREEN1. 產生空白列 語法:SELECTION-SCREEN SKIP <n>Example:SELECTION-SCREEN SKIP 2. 產生兩列空
52、白列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. 同一列中輸入數個資料項 語法:SELECT
53、ION-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格輸入NAM內容,40格輸入BIRTH的內容5. 繪出 BLOCK PANEL語法:SELECTION-SCREEN BEGIN OF BLOCK
54、 <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語法我們在編寫A
55、BAP4程式的時候,經常需要從TABLE中根据某些條件讀取數据,.讀 取數据最常用的方法就是通過SQL語法實現的.ABAP/4中可以利用SQL語法創建或讀取 TABLE,SQLL語法分為DDL(DATA DEFINE LANGUAG語言和 DML(DATAIULTIPULATIOLIANGUAG語言,DDL語言是指數据定 義語言,例如CREAT等, DML語言是數据操作語言,例如SELECTJNSERT等語句. SQL語句有OPEN5QL語句和NATIVESQL語句.OPENBQL語句不是標准SQL語句, 是ABAP/4語言,利用OPEN SQ語句能在Databases和Comma nd之間產
56、生一個 BUFFERS以它有一個語言轉換的過程.而NATIVESQL語句則是標准的SQL語句,它直接針對Databases操作.OPEN SQLSELECTS句語法格式 :SELECT <result> INTO <target> FROM <source> WHERE <condition>GROUP BY <fields> ORDER BY <sort order>其中 : <result> 指定要抓取的欄位<target> 將讀取的記錄存放在 work area 中<source>
57、指定從那個TABLE中讀取資料<condition> 抓取資料的條件<fields> 指定按那些欄位分組<sort order> 排序的欄位及方式相關的系統變量 :SY-SUBRC = 0 表示讀取數据成功<> 0 表示未找到符合條件的記錄SY-DBLNT: 被處理過的記錄的筆數 .相關的命令 :EXIT. 退出循環 .CHECK <logistic statement>. 如果邏輯表達式成立 , 則繼續執行 , 否則, 開 始下一次循環 .利用循環方式讀取所有記錄SELECT.ENDSELEC是循環方式讀取記錄的例如:TABLES
58、MARD.SELECT DISTINCT * FROM MARD WHERE MATNR = '3520421700'. <Statements>.ENDSELECT.(從MAR中抓取所有料號=3520421700的資料)讀取一筆資料Example:TABLES SPFLI.SELECT SINGLE * FROM SPFLIWHERE PLANT ='CHUNGLI' AND TEL='4526174'.WRITE: / SPFLI-COMPANY,SPFLI-PLANT,SPFLI-TEL. 將讀取的記錄放在 work area
59、中, 并且加入 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 &
60、lt;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 LABSTINTO CORRESPONDING FIELDS OF ITABFROM MARDWHERE MATNR = '3520421700'.APPEND ITAB.CLEAR ITAB.ENDSELECT. (將讀取的結果放在 Internal table ITAB 中)DATA: BEGIN OF WA,LINE(240),END OF WA.DATA NAME(10).NAME = 'SPF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度建筑智能化系统工程设备采购合同
- 代理月结合同范例
- 2025年度企业品牌形象托管与重塑合同
- 中介公司转让合同范例
- 高中学校工作计划范文
- 四川2024年12月四川省营山县下半年公开考核招考34名事业单位工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 缴纳五险申请书
- 期房房屋买卖合同范本
- 轮候查封申请书
- 2025年度企业并购重组顾问服务合同
- 初中生物校本课程纲要
- 阳光分级阅读 Letters for Mr James 课件
- 卖花生混声合唱简谱
- 占道作业交通安全设施设置技术要求
- 数学方法在物理中的应用
- 《肝豆状核变性》课件
- 小学体积单位换算练习100道及答案
- 体育教学小组合作
- 分布式储能系统的成本效益评估
- 心肺复苏指南
- 《智能物联网导论》AIoT导论-第2章课件
评论
0/150
提交评论