《SAP基础知识学习资料整理7692.docx》由会员分享,可在线阅读,更多相关《SAP基础知识学习资料整理7692.docx(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据类型C :字符串D :日期型 格式为 YYYYMMDD 例:1999/12/03F : 浮点数 长度为8I :整数N :数值组成的字符串 如:011,302P : PACKED数 用于小数点数值 如:12.00542T : 时间 格式为:HHMMSS 如:14:03:00X : 16进制数 如:1A03*-*变数宣告DATA decimals 变数名称 变数类型 及 长度 初值 小数位数exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE DELTA.S_DATE TYPE D VALUE 19991203.exp:DATA
2、: 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 系統專用變數說明系統內部專門創建了SYST這個STRUCTURE,里面的欄位存放系統變數,常用的系統變數有:SY-SUBRC : 系統執行某指
3、令后,表示執行成功与否的變數,0 表示成功SY-UNAME: 當前使用者登入SAP的USERNAME;SY-DATUM: 當前系統日期;SY-UZEIT: 當前系統時間;SY-TCODE: 當前執行程式的Transaction codeSY-INDEX : 當前LOOP循環過的次數SY-TABIX: 當前處理的是internal table 的第几筆SY-TMAXL: Internal table的總筆數SY-SROWS: 屏幕總行數;SY-SCOLS: 屏幕總列數;SY-MANDT: CLIENT NUMBERSY-VLINE: 畫豎線SY-ULINE: 畫橫線TYPE 敘述用來指定資料型態
4、或宣告自定資料型態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敘述則是用在指定資料型態。*-*输出一. WRITTE 語句AABAP/44用來在屏幕幕上輸出資料料的指令是WWRITE指指令,例如:WRITEE: USSER NAAME ISS:, SSY-UNAAME.二. 指定
5、屏幕幕輸出位置指指定輸出位置置的語句格式式為:WRIITE: AT / () 資料料項 其其中: / : 在下一一行輸出: 指定輸出的的行號;():指定輸出出位數(長度度): 指定定顯示格式參參數,參數有有:LEFTT-JUSTTIFIEDD 資料靠左左對齊CENNTEREDD 資料靠中中間對齊RIIGHT-JJUSTIFFIED 資資料靠右對齊齊UNDERR 正對在資料料項的的下面顯示NNO-GAPP 緊接著顯顯示,不留空空格USINNG EDIIT MASSK : 使用內內嵌子元顯示示, 如 112:03:20USIING NOO EDITT MASKK: 不使用用內嵌子元NNO-ZERR
6、O: 數字字前面 0 的部分不顯顯示NO-SSIGN: 不顯示正負負號DECIIMALS : 顯示 位小數數EXPOEENT : F(浮點數)指指數的值ROOUND : 四四舍五入至小小數點后位CURRRENCYY : 幣別顯示示DD/MMM/YY : 日期顯示示格式MM/DD/YYY: YY/MM/DDD: YY/DD/MMMMM/DDD/YYYYY:DD/MMM/YYYYYYYYYY/MM/DDD:YYYYY/DD/MM:例如如1: WRRITE: /10(66) ABBCDEFGGHIJK.輸出結果果為: ABBCDEF例例如2: DDATA: X TYPPE I VVALUE 11:2
7、20:30,A(5) TYPEE C VAALUE AB CDDE.WRRITE: / X UUSING EDIT MASK _:_:_.WRITTE: / X USIING EDDIT MAASK $_,_.WWRITE: / Y NO-GAAP.輸出結結果為:111:20:330$1122,030AABCDEFF例如3: DAATA: LLEN TYYPE I VALUEE 10,PPOS TYYPE I VALUEE 11,TTEXT(110) VAALUE 123455678900WRITTE Thhe texxt - appeaars inn the text.WRIITE ATT
8、POS(LEN) TEXT.WRITE TTO 语句的的基本 形式式要将值(文文 字)或源源字 段内容容写入 目标标字段, 可可以使用 WWRITE TO 语句句:语法WRITTE TO .DATA: NNUMBERR TYPEE F VAALUE 4.3,TEXT(10),FFLOAT TYPE F,PACCK TYPPE P DDECIMAALS 1.WRITEE NUMBBER.WRRITE NNUMBERR TO TTEXT EEXPONEENT 2.WRITEE / TEEXT.WRRITE NNUMBERR TO FFLOAT.WRITEE / FLLOAT.WWRITE NUMB
9、EER TO PACK.WRITEE / PAACK.MOOVE NUUMBER TO PAACK.WRRITE / PACKK.exp:DATTA: NAAME(100) VALLUE SSOURCEE,SOUURCE(110) VAALUE Antonny,TAARGET(10).WRIITE (NNAME) TO TAARGET.WRITEE: TARRGET.exp :DAATA: CCOUNTEER TYPPE I.CCOMPUTTE COUUNTER = COUUNTER + 1.CCOUNTEER = CCOUNTEER + 11.ADD 1 TO COUNTTER.在此此,三条
10、 运运算语句进 行相同算术术 运算输出屏幕上 的的线和空行用下列语法 ,可可以在输 出出屏幕上生 成水平线:语法ULINNE ATT /().它等同同于WRITTE ATT /() SY-ULINEE.AT 后后的格式规 范,与在 在屏幕上定定 位 WRRITE 输输出 (页 28) 中中为 WRIITE 语句句说明的 格格式规范完 全一样。如如果没有格 式规范,系系 统则开始始新 的一行行,并 用水水平线填 充充该行。否 则,只按指指 定输出水水平 线。生生成水平线 的另一种方方 法,是在在 WRITTE 语句中中键入 恰当当数量的 连连字符,如 下所示:WWRITE AT /() -.垂直
11、线用下列列语法 ,可可以在输 出出屏幕上生 成垂直线:语法WRITTE ATT / SYY-VLINNE.或WRITEE AT / |.空行用下列语语法 ,可以以在输 出屏屏幕上生 成成空行:语法法SKIP .该语句从从当 前行开开始, 在输输出屏幕 上上生成 个空行行。如 果没没有指定 的值值,就输 出出一个空行 。要将输出出定 位在屏屏幕的 指定定行上, 请请使用:语法法SKIP TO LIINE .该语句句允许 将输输出位置 向向上或向下 移动。四. 顯示圖示示:語法: WRITEE: AS SSYMBOLL.WRITTE: AS ICCON.例如如: INCCLUDE .IINCLUD
12、DE .WWRITE: / PPhone symbool:, SYM_PPHONE AS SYYMBOL.WRITEE: / Alarmm Iconn:, IICON_VVOICE_OUTPUUT AS ICON.要查看系統統所提供有那那些符號及圖圖示,可選擇擇EDITT下的IInsertt Stattementt,選擇Writee,接下來來選擇要查看看的群組,如如SYMBOOL 或ICCON, 接接下來按DDisplaay即可.*-*一. Inteernal Tablee 的宣告AABAP/44中的Intternall Tablle是一种DData SStructture,類類似于其他語語言
13、中的STTRUTURRE,它可以以由几個不同同類型的欄位位(fielld)組成,用來表示具具有不同屬性性的某一事物物,單獨一筆筆資料表示某某個事物,多多筆資料表示示具有相同屬屬性的多個事事物.Internaal tabble 的定定義有以下几几种格式:格格式一. DDATA: BEGINN OF OCCUURS , TYPPE , TYPEE , TYPE , ENDD OF .語法:DATTA OCCCURS WITH HEADEER LINNEExaample:DATA VECTOOR TYPPE I OOCCURSS 10 WWITH HHEADERR LINEE.格式二. TYPEES
14、: BEEGIN OOF , TTYPE , TYYPE , TYPPE , ENDD OF .TYPEES TTYPE OCCUURS .格式三三. DATTA: BEEGIN OOF .IINCLUDDE STRRUCTURRE .DATA: END OF .DATA: LIIKE OCCURRS .exp:TYPPES VEECTOR TYPE I OCCCURS 110.TYPPES: BBEGIN OF LIINE,COOLUMN11 TYPEE I,COOLUMN22 TYPEE I,COOLUMN33 TYPEE I,ENND OF LINE.TYPESS ITABB TYPEE
15、 LINEE OCCUURS 100.TYPEES: BEEGIN OOF DEEEPLINEE,TABLLE1 TYYPE VEECTOR,TABLEE2 TYPPE ITAAB,ENDD OF DDEEPLIINE.TYYPES DDEEPTAABLE TTYPE DDEEPLIINE OCCCURS 10.本示示例创建 与与上例相同 的内表数据据 类型(VVECTORR 和 ITTAB) 。然然后创建 数数据类型 DDEEPLIINE 作为为字段串 ,包包含这些 内内表作为组 件。通过该该 字段串,数数 据类型 DEEPTTABLE 被创建为内内 表。因此此该 内表的的元素 本身身就是内
16、 表表。exp :TYPEES: BEEGIN OOF LINNE,COLLUMN1 TYPE I,COLLUMN2 TYPE I,COLLUMN3 TYPE I,ENDD OF LLINE.TTYPES ITAB TYPE LINE OCCURRS 10.DATA TAB1 TYPE ITAB.DATA TAB2 LIKE TAB1 WITH HEADEER LINNE.同 创创建内表数 据类型 (页 99) 中所示,该该 示例创建建数 据类型型 ITABB 作为内表表。 通过使使用 DATTA 语句的的 TYPEE 参数引用用 ITABB, 使数据据对象 TAAB1 与 ITAB 结构相同
17、。 通过使用 DATA 语句的 LLIKE 参参数引用 TTAB1, 使数据对象象 TAB22 结构相同同。 创建的的 TAB22 带表头行行。 因此,可可以 在程序序中使 用 TAB2-COLUMMN1、 TTAB2-CCOLUMNN2 和 TTAB2-CCOLUMNN3 等定位位表格 工作作区域 TAAB2。exxp :DATA FLLIGHT_TAB LLIKE SSFLIGHHT OCCCURS 110.本示例例创建 数据据对象 FLLIGHT_TAB, 其结构与数数 据库表格格 SFLIIGHT 相相同。本示例例介绍 如何何采用两 种种不同的步 骤创建同一一 内表。TTYPES VE
18、CTOOR_TYPPE TYPPE I OOCCURSS 10.DDATA VVECTORR TYPEE VECTTOR_TYYPE WIITH HEEADER LINE.在 此创建建一 个内表表数据 类型型 VECTTOR_TYYPE, 其其行包含首 先创建的基基 本类型 I 字段。然然后 ,通过过引用 VEECTOR_TYPE 创建数据对对 象 VEECTOR。 通过使用 WITH HEADEER LINNE 选项还还创建 表格格工作区 域域 VECTTOR。 在在这种情况 下,表格工工 作区域包包含 一种类类型 I 字字段,可以 通过名称 VECTOOR 定位。DATA VECTOR T
19、YPE 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 lineobjWITH UNIQUE|NON-UNIQUE keydef INITIAL SIZE n. 5. TYPES itab
20、type TYPE RANGE OF type.TYPES itabtype LIKE RANGE OF f. 6. TYPES itabtype TYPE linetype|LIKE lineobj OCCURS n. *-*APPENND LINNE 格式:APPENND TTO 举例一:(使用用WORK AREA)DATA : BEGGIN OFF LINEE,COL11 TYPEE I,COOL2 TYYPE I,END OOF LINNE.DATTA ITAAB LIKKE LINNE OCCCURS 110.DO 2 TIMMES.LIINE-COOL1 = SY-INNDEX.L
21、LINE-CCOL2 = SY-IINDEX * 2.APPENND LINNE TO ITAB.ENDDOO.LOOPP AT IITAB IINTO LLINE.WWRITE : / LLINE-CCOL1,LLINE-CCOL2.EENDLOOOP.举例二 (不使使用WORKK AREAA)DATAA : BEEGIN OOF ITAAB OCCCURS 110,COLL1 TYPPE I,CCOL2 TTYPE II,END OF ITTAB.DOO 2 TIIMES.IITAB-CCOL1 = SY-IINDEX.ITAB-COL2 = SY-INDEXX * 22.APPEEND
22、ITTAB.ENNDDO.LLOOP AAT ITAAB.WRIITE : / ITAAB-COLL1,ITAAB-COLL2.ENDDLOOP.exp:DATA: BBEGIN OF ITTAB OCCCURS 10,COOL1 TYYPE C,COL2 TYPE I,ENDD OF IITAB.DDO 3 TTIMES.APPENND INIITIAL LINE TO ITTAB.ITTAB-COOL1 = SY-INNDEX. ITAB-COL2 = SY-INDEXX * 22.APPEEND ITTAB.ENNDDO.LLOOP AAT ITAAB.WRIITE: / ITABB-C
23、OL11, ITAAB-COLL2.ENDDLOOP.舉例三. (加加入另一個IInternnal taable的元元素)格式: APPEEND LIINES OOF FROMM TTO TOO .將將的元素素加入至中,可選取取自至的范圍.AAPPENDD LINEES OF ITAB TO JTTAB.COLLECTT LINEECOLLEECT 指令令也是將元素素加入Intternall tablle中,与AAPPENDD 的區別是是: COLLLECT指指令在非數值值欄位相同的的情況下,將將數值欄位匯匯總.格式: COLLLECT INTTO DATA: BEGIIN OF ITAB O
24、CCURRS 3,CCOL1(33) TYPPE C,CCOL2 TTYPE II,END OF ITTAB.ITTAB-COOL1 = ABC. ITAAB-COLL2 = 110.COLLLECT ITAB.ITAB-COL1 = XYYZ. IITAB-CCOL2 = 20.CCOLLECCT ITAAB.ITAAB-COLL1 = ABC. ITABB-COL22 = 800.COLLLECT IITAB.此此時, innternaal tabble中放的的是2筆數据据, 分別為為:ITABB-COL11 ITABB-COL22ABC 90XXYZ 220*-*INSERT LINE將
25、將元素插入在在指定的innternaal tabble位置之之前.格式: INSEERT IINTO INITTIAL LLINE IINTO IINDEX 或者: INSERRT LINNES OFF FROM TO IINTO INDDEX 其中中: 即worrk areea,工作區區中的元素.INITTIAL LLINE IINTO :插入一筆筆初始化的記記錄.: interrnal ttableINDEXX : iinternnal taable 的的記錄號.(新加入的元元素放在此記記錄前面)Examplee:DATAA: BEGGIN OFF LINEE,COL11 TYPEE I,
26、COOL2 TYYPE I,END OOF LINNE.DATTA ITAAB LIKKE LINNE OCCCURS 110.DO 3 TIMMES.LIINE-COOL1 = SY-INNDEX *10.LIINE-COOL2 = SY-INNDEX *20.APPPEND LINE INTO ITAB.ENDDOO.LINEE-COL11=100.LINE-COL2=200.IINSERTT LINEE INTOO ITABB INDEEX 2. 插入在位位置2之前LLOOP AAT ITAAB INTTO LINNE.WRIITE: / SY-TTABIX,LINE-COL1,LINE
27、-COL2. SY-TABIXX為Tablle位置ENNDLOOPP. 執行結結果:1 110 2022 100 200 插入的元素素3 20 404 330 60插插入另一Innternaal Tabble元素語語法:INSSERT LLINES OF FROOM TO TO INDDEX 將的元素插插入至中中, 位置在在 之前, 可選取自至的範範圍Exammple:AAPPENDD LINEES OF ITAB TO JTTAB INNDEX 33.將ITAAB所有元素素插入JTAAB中, 位位置在第三個個元素之前*-*讀取innternaal tabble格式一一: LOOOP AT I
28、NNTO FFROM TTO WHHERE ENNDLOOPP.Examplee:LOOPP AT IITAB IINTO LLINE WWHERE COL1 100.WRITEE: / SSY-TABBIX,LIINE-COOL1.ENNDLOOPP.僅讀取 COL1 1000 的元素格式二:REAAD TABBLE INTOO INNDEX / WITTH KEYY 舉舉例. (格格式二)DAATA: BBEGIN OF ITTAB OCCCURS 10,COOL1 TYYPE I,COL2 TYPE I,ENDD OF IITAB.DDO 10 TIMESS.ITABB-COL11 =
29、SYY-INDEEX.ITAAB-COLL2 = SSY-INDDEX * 2.APPPEND IITAB.EENDDO.READ TABLEE ITABB INDEEX 3.(或者: RREAD TTABLE ITAB WITH KEY CCOL1 = 3.)WWRITE: / IITAB-CCOL1 = , IITAB-CCOL1, ITABB-COL22 = , ITABB-COL22.執行結果果同樣是: ITAB-COL1 = 3ITTAB-COOL2 = 6.Examplee:READD TABLLE ITAAB INTTO LINNE INDDEX 5讀讀取 ITAAB的第5個個元
30、素資料, 放入 LLINE的欄欄位中根據欄位內容尋尋找語法:REAAD TABBLE INTO EExamplle:ITAAB-COLL1 = ABC.READ TABLEE ITABB INTOO LINEE.找出ITTAB 中 COL1 欄位內容是是 ABC 的元素, 找到的值放放入 LINNE 中若找找到 SY-SUBRCC傳回0, 找不到則傳傳回 4, 必須宣告告有 worrk areea*-*修改interrnal ttable 中的值格式式: MODDIFY FROOM INNDEX TRANNSPORTTING WHEREE 舉舉例一. RREAD TTABLE ITAB IND
31、EXX 3.LIINE-COOL1 = 29.MOODIFY ITAB FROM LINE TRANSSPORTIING COOL1.將第第三筆記錄的的COL1欄欄位的值修改改為29.舉舉例二. TT_SALAARY - salarry = 550.MODDIFY TT_SALAARY TRRANSPOORTINGG salaary WHHERE bbirthdday = 19999/12/006.DEELETE interrnal ttable中中的欄位格式式: DELLETE INDEEX .或: DELEETE FROM TO WHEREE Internaal tabble 排序序 SO
32、RTT BY 其中: 有DESCCENDINNG 和ASSCENDIING, DDefaullt 為ASSCENDIING.: 為為指定排序的的欄位.Exxamplee: SORRT ITAAB DESSCENDIING BYY COL22.將 ITTAB 根據據 COL22欄位遞減排排序*-*确定定内表属 性性如果在处理理 过程中想想知 道内表表一共 包含含多少行 ,或或者想知 道道定义的 OOCCURSS 参数的大大小 ,请使使用 DESSCRIBEE 语句,用用法 如下:语法DESCCRIBE TABLEE LLINES OCCCURS .如果使使用 LINNES 参数数,则将 填填充行
33、的数 量写入变量量 。 如果果使用 OCCCURS 参数,则将将 行的初始始号 写入变变量 。DAATA: BBEGIN OF LIINE,COOL1 TYYPE I,COL2 TYPE I,ENDD OF LLINE.DDATA IITAB LLIKE LLINE OOCCURSS 10.DDATA: LIN TTYPE II, OCCC TYPEE I.DEESCRIBBE TABBLE ITTAB LIINES LLIN OCCCURS OCC.WWRITE: / LIIN, OCCC.DO 1000 TIMESS.LINEE-COL11 = SYY-INDEEX.LINNE-COLL2
34、 = SSY-INDDEX * 2.APPPEND LINE TO ITTAB.ENNDDO.DDESCRIIBE TAABLE IITAB LLINES LIN OOCCURSS OCC.WRITEE: / LLIN, OOCC.其输输出为:0 101.0000 100在此创建内内 表 ITTAB。 在在填充表格 前后执行 DESCRRIBE 语语句。更改 当前行号, 但无法更改改 初始行号号。*-*加總總SUM.總和和計算存放与与work area中中,但只能在在LOOP 中使用.例例: LOOOP AT ITAB INTO LINE.SUM.ENNDLOOPP.WRITTE: / LIN
35、E-COL1, LINEE-COL22.LINEE-COL11 和 LIINE-COOL2 存數數值總和初始始化inteernal tableeREFRESHH . 清清空中的值值.使用在沒沒有 HEAADER LLINE 的的 Inteernal Tablee中, 清除除所有元素CCLEAR . 清空空的Heaader LLine.使使用在有 HHEADERR LINEE 的 Innternaal Tabble中, 清除所有元元素FREEE . 釋釋放記憶体空空間.釋放(Releaase) IInternnal Taable所佔佔的記憶體空空間, 用在在 REFRRESH和 CLEARR指令
36、之後将值重置为 默默认值可以用 CLEEAR 语句句重置任 何何数据对象 值,如下所所 示:语法法CLEARR .exp:DATTA NUMMBER TTYPE II VALUUE 100.WRIITE NUUMBER.CLEARR NUMBBER.WRRITE / NUMBBER.输出出为:100CLEARR 语句将字字段 NUMMBER 的的内容从100 重置为默默认 值 00。*-*添加字段 顺序序并将结 果果赋给另一 个字段语法法ADD TTHEN UUNTIL GIVINNG .如果 、 、 . 、 是在内存中中 相同类型型和 长度的的等距 字段段序列, 则则进行求和 计算并将结结 果赋给 添添加字段 顺顺序并将结 果添加到另另 一个字段段的 内容中中语法ADD THEN UNTILL TO .该语语句除了 将将字段总和 添加到 的旧旧内容中 之之外,与上 面语句的工工 作方式相相同 。有关关其它相 似似变体的信 息,参见有有 关 ADDD 语句的的关键 字文文档。DATTA: BEEGIN OOF SERRIES,NN1 TYPPE I VVALUE 10,N22 TYPEE I VAALUE 220,N3 TYPE I V