首页 第三章 ABAP语法示例

第三章 ABAP语法示例

举报
开通vip

第三章 ABAP语法示例 第三章 ABAP语法示例 3.1 FIELD-SYMBOLS FIELD-SYMBOLS是字段符号,类似于 FOXPRO的宏,FOXPRO能把一段程序存入一 个字符串中,再通过某种方式使该字符串运行。SAP 的 FIELD-SYMBOLS,把一个结构定 义分配给字段符号,通过字段符号来引用结构中的成员。 【例 3.1】 REPORT YTEST001. DATA:BEGIN OF MAN, NAME(30) TYPE C, HIGH TYPE P DECIM...

第三章 ABAP语法示例
第三章 ABAP语法示例 3.1 FIELD-SYMBOLS FIELD-SYMBOLS是字段符号,类似于 FOXPRO的宏,FOXPRO能把一段程序存入一 个字符串中,再通过某种方式使该字符串运行。SAP 的 FIELD-SYMBOLS,把一个结构定 义分配给字段符号,通过字段符号来引用结构中的成员。 【例 3.1】 REPORT YTEST001. DATA:BEGIN OF MAN, NAME(30) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. FIELD-SYMBOLS LIKE MAN. DATA MAN1 LIKE MAN. MAN1-NAME = '张林'. MAN1-HIGH = '1.78'. MAN1-WEIGHT = 140. ASSIGN MAN1 TO . WRITE: / -NAME, -HIGH, -WEIGHT. 输出结果如图 3-1所示。 图 3-1 3.2 字符串处理 3.2.1 合并字符串 【例 3.2】 REPORT YTEST001. DATA: C1(2) TYPE C, C2(2) TYPE C, C3(2) TYPE C, C4(2) TYPE C, C5(20) TYPE C, C9(2) TYPE C. C1 = 'AB'. C2 = 'CD'. C3 = 'EF'. C4 = 'GH'. C9 = '+'. CONCATENATE C1 C2 C3 C4 INTO C5. WRITE C5. CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED BY C9. WRITE / C5. 输出结果如图 3-2所示。 图 3-2 本例中,先将字符串 C1、C2、C3、C4合并到字符串 C5,再将字符串 C1、C2、C3、C4用 间隔符字符串 C9合并到字符串 C5。 3.2.2 拆分字符串 【例 3.3】 REPORT YTEST001. DATA: C1(2) TYPE C, C2(2) TYPE C, C3(2) TYPE C, C4(2) TYPE C, C5(20) TYPE C VALUE '11 * 22 * 33 * 44', C9(2) TYPE C. C9 = '*'. WRITE C5. SPLIT C5 AT C9 INTO C1 C2 C3 C4. WRITE: / C1, C2, C3, C4. 输出结果如图 3-3所示。 图 3-3 3.3 内表带有标题行 【例 3.4】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE TABLE OF MAN WITH HEADER LINE, MAN2 LIKE TABLE OF MAN. MAN-NAME = '张参'. MAN-HIGH = '1.68'. MAN-WEIGHT = 120. APPEND MAN TO MAN1. MAN-NAME = '刘志'. MAN-HIGH = '1.78'. MAN-WEIGHT = 160. APPEND MAN TO MAN1. MOVE MAN1[] TO MAN2. LOOP AT MAN2 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP. LOOP AT MAN1. WRITE: / MAN1-NAME,MAN1-HIGH,MAN1-WEIGHT. ENDLOOP. 本例中内表MAN1有表头,内表MAN2无表头,输出结果一样,如图 3-4所示。 图 3-4 3.4 内表排序 【例 3.5】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE HASHED TABLE OF MAN WITH UNIQUE KEY NAME. MAN-NAME = '张参'. MAN-HIGH = '1.68'. MAN-WEIGHT = 120. INSERT MAN INTO TABLE MAN1. MAN-NAME = '刘志'. MAN-HIGH = '1.78'. MAN-WEIGHT = 160. INSERT MAN INTO TABLE MAN1. MAN-NAME = '朱强'. MAN-HIGH = '1.72'. MAN-WEIGHT = 130. INSERT MAN INTO TABLE MAN1.. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP. SORT MAN1 DESCENDING BY WEIGHT ASCENDING. SKIP. ULINE. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT. ENDLOOP. 输出结果如图 3-5所示。 图 3-5 3.5 修改内表数据 【例 3.6】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE HASHED TABLE OF MAN WITH UNIQUE KEY NAME. MAN-NAME = '张参'. MAN-HIGH = '1.68'. MAN-WEIGHT = 120. INSERT MAN INTO TABLE MAN1. MAN-NAME = '刘志'. MAN-HIGH = '1.78'. MAN-WEIGHT = 160. INSERT MAN INTO TABLE MAN1. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP. MAN-NAME = '张参'. MAN-HIGH = '2.22'. MAN-WEIGHT = 220. MODIFY TABLE MAN1 FROM MAN. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT. ENDLOOP. 本例根据关键字修改内表,输出结果如图 3-6所示。 图 3-6 3.6 删除内表记录 【例 3.7】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE HASHED TABLE OF MAN WITH UNIQUE KEY NAME. MAN-NAME = '张参'. MAN-HIGH = '1.68'. MAN-WEIGHT = 120. INSERT MAN INTO TABLE MAN1. MAN-NAME = '刘志'. MAN-HIGH = '1.78'. MAN-WEIGHT = 160. INSERT MAN INTO TABLE MAN1. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP. DELETE MAN1 WHERE NAME = '张参'. SKIP. ULINE. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT. ENDLOOP. 输出结果如图 3-7所示。 图 3-7 3.7 使用索引插入内表行 【例 3.8】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE TABLE OF MAN. MAN-NAME = '张参'. MAN-HIGH = '1.68'. MAN-WEIGHT = 120. INSERT MAN INTO TABLE MAN1. MAN-NAME = '刘志'. MAN-HIGH = '1.78'. MAN-WEIGHT = 160. INSERT MAN INTO TABLE MAN1. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP. MAN-NAME = '李志'. MAN-HIGH = '1.58'. MAN-WEIGHT = 110. INSERT MAN INTO MAN1 INDEX 2. ULINE. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT. ENDLOOP. 输出结果如图 3-8所示。 图 3-8 3.8 格式化输出 【例 3.9】 REPORT YTEST001. DATA WA LIKE SPFLI. WRITE: /. WRITE: 10'航班承运人',40'航班连接',60'国家代码',80'起飞城市',100'起飞机场'. SELECT * INTO WA FROM SPFLI. WRITE: / WA-CARRID UNDER '航班承运人', WA-CONNID UNDER '航班连接', WA-COUNTRYFR UNDER '国家代码', WA-CITYFROM UNDER '起飞城市', WA-AIRPFROM UNDER '起飞机场'. ENDSELECT. 本例通过 UNDER定位输出位置,输出结果如图 3-9所示。 图 3-9 3.9 内部数据存为文件 【例 3.10】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE TABLE OF MAN. DATA: NAME TYPE RLGRAP-FILENAME, TYPA TYPE RLGRAP-FILETYPE. MAN-NAME = '张参'. MAN-HIGH = '1.68'. MAN-WEIGHT = 120. INSERT MAN INTO TABLE MAN1. MAN-NAME = '刘志'. MAN-HIGH = '1.78'. MAN-WEIGHT = 160. INSERT MAN INTO TABLE MAN1. MAN-NAME = '李志'. MAN-HIGH = '1.58'. MAN-WEIGHT = 110. INSERT MAN INTO MAN1 INDEX 2. NAME = 'C:\TEMP\TESTA.TXT'. TYPA = 'DAT'. CALL FUNCTION 'DOWNLOAD' EXPORTING CODEPAGE = 'TESTA' FILENAME = NAME FILETYPE = TYPA ITEM = '文件测试' TABLES DATA_TAB = MAN1 EXCEPTIONS INVALID_FILESIZE = 1 INVALID_TABLE_WIDTH = 2 INVALID_TYPE = 3 NO_BATCH = 4 UNKNOWN_ERROR = 5 GUI_REFUSE_FILETRANSFER = 6 OTHERS = 7. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. 打开运行实例存储文件,有以下内容: 张参 1,68 120,00 李志 1,58 110,00 刘志 1,78 160,00 3.10 直接存入文件 【例 3.10】 REPORT YTEST001. DATA: BEGIN OF MAN, NAME(20) TYPE C, HIGH TYPE P DECIMALS 2, WEIGHT TYPE P DECIMALS 2, END OF MAN. DATA: MAN1 LIKE TABLE OF MAN. CALL FUNCTION 'UPLOAD' EXPORTING CODEPAGE = 'TEST' FILENAME = 'C:\TEMP\TESTA.TXT' FILETYPE = 'DAT' ITEM = '读放文件' TABLES DATA_TAB = MAN1 EXCEPTIONS CONVERSION_ERROR = 1 INVALID_TABLE_WIDTH = 2 INVALID_TYPE = 3 NO_BATCH = 4 UNKNOWN_ERROR = 5 GUI_REFUSE_FILETRANSFER = 6 OTHERS = 7. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. LOOP AT MAN1 INTO MAN. WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP. 输出结果如图 3-10所示。 图 3-10 3.12 不使用提示框提示直接读入文件 在例 3.11中,程序运行时弹出输入读入文件名的提示框(如图 3-10示),将程序中“CALL FUNCTION ‘UPLOAD’”改为“CALL FUNCTION ‘WS——UPLOAD’”,程序运行时将 不再提示直接读入文件。 图 3-11 3.13 列表输出 WRITE 语法 WRITE AT [/] [] [()] 文本 “/”: 下一行 “pos”: 列 “(len)”:长度 【例 3.10】 REPORT YTEST001. DATA: STR1(10) TYPE C VALUE 'AABBCCDDEE'. WRITE '接着的字符串____________将被替换.'. WRITE AT 14(10) STR1. 输出结果如图 3-11 所示。 图 3-12 第三章 ABAP语法示例 3.1 FIELD-SYMBOLS 3.2 字符串处理 3.2.1 合并字符串 3.2.2 拆分字符串 3.3 内表带有标题行 3.4 内表排序 3.5 修改内表数据 3.6 删除内表记录 3.7 使用索引插入内表行 3.8 格式化输出 3.9 内部数据存为文件 3.10 直接存入文件 3.12 不使用提示框提示直接读入文件 3.13 列表输出
本文档为【第三章 ABAP语法示例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_144099
暂无简介~
格式:pdf
大小:165KB
软件:PDF阅读器
页数:12
分类:互联网
上传时间:2011-12-31
浏览量:21