1、插入内表行:

*插入内表行:
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. ULINE. man-name = '钱华'. man-high = '2.22'. man-weight = 220. INSERT man INTO man1 INDEX 3. LOOP AT man1 INTO man. WRITE: / man-name,man-high,man-weight. ENDLOOP. ULINE. man-name = '钱华'. man-high = '2.22'. man-weight = 220. INSERT man INTO man1 INDEX 1. LOOP AT man1 INTO man. WRITE: / man-name,man-high,man-weight. ENDLOOP.

2、读取文件

2.1、使用upload函数

*读放文件
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 = 'd:\temp\testa.txt' filetype = 'dat' 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. LOOP AT man1 INTO man. WRITE: / man-name,man-high,man-weight. ENDLOOP.

2.2、使用WS_UPLOAD函数

*读取文件
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 'WS_UPLOAD'EXPORTINGcodepage                = 'test'filename                = 'd:\temp\testa.txt'filetype                = 'DAT'TABLESdata_tab                = man1EXCEPTIONSinvalid_filesize        = 1invalid_table_width     = 2invalid_type            = 3no_batch                = 4unknown_error           = 5gui_refuse_filetransfer = 6OTHERS                  = 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.

2.3、使用GUI_UPLOAD函数

*直接读取文件
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 'GUI_UPLOAD'EXPORTINGfilename                      = 'd:\temp\testa.txt'FILETYPE                      = 'DAT'
*   HAS_FIELD_SEPARATOR           = ' '
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
  tablesdata_tab                      = man1
* CHANGING
*   ISSCANPERFORMED               = ' '
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2
*   NO_BATCH                      = 3
*   GUI_REFUSE_FILETRANSFER       = 4
*   INVALID_TYPE                  = 5
*   NO_AUTHORITY                  = 6
*   UNKNOWN_ERROR                 = 7
*   BAD_DATA_FORMAT               = 8
*   HEADER_NOT_ALLOWED            = 9
*   SEPARATOR_NOT_ALLOWED         = 10
*   HEADER_TOO_LONG               = 11
*   UNKNOWN_DP_ERROR              = 12
*   ACCESS_DENIED                 = 13
*   DP_OUT_OF_MEMORY              = 14
*   DISK_FULL                     = 15
*   DP_TIMEOUT                    = 16
*   OTHERS                        = 17
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.LOOP AT man1 INTO man.WRITE: / man-name,man-high,man-weight.
ENDLOOP.

2.4、读取文件小例子

DATA file_table TYPE file_table. "引用FILE_TABLE对象DATA: lt_file_names TYPE filetable,
lwa_file_name LIKE LINE OF lt_file_names,
lv_subrc TYPE i.SELECT-OPTIONS: i_file FOR file_table NO INTERVALS.AT SELECTION-SCREEN ON VALUE-REQUEST FOR i_file-low.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
*    WINDOW_TITLE            =
*    DEFAULT_EXTENSION     =
*    DEFAULT_FILENAME        =
*    FILE_FILTER             =
initial_directory       = 'd:\temp'
multiselection          = 'X'
CHANGINGfile_table                      = lt_file_names[]rc                                 = lv_subrc  "打开文件的数量
*    USER_ACTION             =
EXCEPTIONSfile_open_dialog_failed = 1cntl_error                        = 2error_no_gui                    = 3
OTHERS                                 = 4.
IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.i_file-sign = 'I'.
i_file-option = 'EQ'.LOOP AT lt_file_names INTO lwa_file_name.i_file-low = lwa_file_name.APPEND i_file.
ENDLOOP.START-OF-SELECTION.WRITE:'打开文件的数量:',lv_subrc LEFT-JUSTIFIED.WRITE: / '打开文件的数量:',LINES( i_file ) LEFT-JUSTIFIED.
LOOP AT i_file.WRITE: / i_file-low.
ENDLOOP.

3、保存文件

*保存文件
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 = '2.22'. man-weight = 220. INSERT man INTO man1 INDEX 2. name = 'd:\temp\testad.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.

4、格式化输出

DATA wa LIKE spfli.
WRITE:/.WRITE:10'航班承运人',40'航班连接',60'国家代码',80'起飞城市',100'起飞机场'.

5、内表排序

*内表排序
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 = '2.22'. man-weight = 220. INSERT man INTO table man1. LOOP AT man1 INTO man. WRITE: / man-name,man-high,man-weight. ENDLOOP. ULINE. sort man1 ascending by weight descending . skip. uline. LOOP AT man1 INTO man. WRITE: / man-name,man-high,man-weight. ENDLOOP.

6、消息

*消息
*--开始
*DATA: msg1(20) TYPE c VALUE '测试'. *DATA: msg2(20) TYPE c VALUE 'ABAP'. *DATA: msg3(20) TYPE c VALUE '消息!'. * *MESSAGE i006(ymess) WITH msg1 msg2 msg3. * *data:BEGIN OF man, * name(30) TYPE c, * high TYPE p DECIMALS 2, * weight TYPE p DECIMALS 2, *END OF man. * *FIELD-SYMBOLS <fsa> LIKE man. *DATA man1 LIKE man. * *man-name = '雨荷'. *man-high = '1.78'. *man-weight = 140. * *ASSIGN man TO <fsa>. *WRITE:/ <fsa>-name, * man-high, *<fsa>-weight. *--结束 *--开始 *DATA: msg1(20) TYPE c VALUE '测试'. *DATA: msg2(20) TYPE c VALUE 'ABAP'. *DATA: msg3(20) TYPE c VALUE '消息!'. * *MESSAGE i001(00) WITH msg1 msg2 msg3. * * *DATA: c1(2) TYPE c, * c2(2) TYPE c, * c3(2) TYPE c, * c4(2) TYPE c, * c5(20) TYPE c VALUE '91* 12*23*344445', * c9(2) TYPE c. * *c9 = '* '. *WRITE: / . *WRITE c5. *SPLIT c5 AT c9 INTO c1 c2 c3 c4 . *WRITE: / c1,c2,c3,c4. *--结束 *--开始 *DATA: msg1(20) TYPE c VALUE '测试'. *DATA: msg2(20) TYPE c VALUE 'ABAP'. *DATA: msg3(20) TYPE c VALUE '消息!'. * *MESSAGE i001(00) WITH msg1 msg2 msg3. * * *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. * * * WRITE: / man-name,man-high,man-weight. * * *LOOP AT man1. *write: / man1-name,man1-high,man1-weight. *ENDLOOP. *--结束

7、读取数据表

**读取数据表
*定义工作区
DATA a_spfli TYPE spfli.
*定义内表,请注意有Header line
DATA ta_spfli TYPE TABLE OF spfli WITH HEADER LINE.
*分隔线
ULINE.
WRITE / '使用工作区'.
ULINE.
* 将数据表逐行转移至工作区,只读前5行
SELECT * INTO CORRESPONDING FIELDS OFa_spfli FROM spfli UP TO 5 ROWS.WRITE: / a_spfli-connid,a_spfli-carrid,a_spfli-cityfrom,a_spfli-cityto.
ENDSELECT.ULINE.
WRITE / '使用内表'.
ULINE.
SELECT * INTO CORRESPONDING FIELDS OFTABLE ta_spfli FROM spfli UP TO 5 ROWS.
*从数据表读数据至内表,直接从内表输出
*如果TA_SPFLI没有定义Header line,会出错
LOOP AT ta_spfli.WRITE: / a_spfli-connid,a_spfli-carrid,a_spfli-cityfrom,a_spfli-cityto.
ENDLOOP.
ULINE.
WRITE / '将内表数据转移至工作区'.
ULINE.
LOOP AT ta_spfli INTO a_spfli.WRITE: / a_spfli-connid,a_spfli-carrid,a_spfli-cityfrom,a_spfli-cityto.
ENDLOOP.

8、内连接和外连接

*内连接和外连接
*定义结构
DATA: BEGIN  OF   arcd,carrid TYPE spfli-carrid,connid TYPE spfli-connid,fldate TYPE sflight-fldate,END OF arcd.
*工作区
DATA arcd1 LIKE arcd.
*关联数据表,读取前10条记录,写入工作区,并输出
SELECT spfli~carrid spfli~connid sflight~fldate INTO arcd1 FROM spfliINNER JOIN sflight ON spfli~carrid = sflight~carridAND spfli~connid = sflight~connid UP TO 10 ROWS.WRITE: / arcd1-carrid,arcd1-connid,arcd1-fldate.
ENDSELECT.

9、使用package size 读取数据

**使用package size 读取数据
*定义内表,请注意有Header line
DATA wa_spfli TYPE TABLE OF spfli WITH HEADER LINE.
*分隔线
ULINE.
* 以每次读取5条记录,直到读取所有数据
SELECT * INTO TABLE wa_spfli FROM spfli PACKAGE SIZE 5.
*输出内表记录LOOP AT wa_spfli.WRITE: / wa_spfli-connid,wa_spfli-carrid,wa_spfli-cityfrom,wa_spfli-cityto.ENDLOOP.
*输出5条记录后输出一条横线ULINE.
ENDSELECT.

10、交互式列表

**交互式列表
START-OF-SELECTION.WRITE:'初如列表,sy-lsind = ' ,sy-lsind.AT LINE-SELECTION.IF sy-lsind = 1.WRITE: '第二列表,sy-lsind =',sy-lsind.ENDIF.AT LINE-SELECTION.IF sy-lsind = 2.WRITE: '第三列表,sy-lsind =',sy-lsind.ENDIF.

11、列表颜色

**列表颜色
*数据库表spfli相关
TABLES spfli.
SKIP.*输出表头,背景灰蓝
FORMAT COLOR COL_HEADING.
ULINE AT /(91).WRITE: / sy-vline,(15) '航线承运人', sy-vline , (15) '航班连接', sy-vline,(15) '国家代码', sy-vline,(15) '起飞城市', sy-vline,(15) '起飞机场',sy-vline.
ULINE AT /(91).
FORMAT COLOR OFF.
*输出内容,输出关键值为‘LH’为红色
SELECT * FROM spfli.IF spfli-carrid = 'LH'.FORMAT COLOR COL_NEGATIVE.ELSE.FORMAT COLOR OFF.ENDIF.WRITE: / sy-vline,(15) spfli-carrid,sy-vline,(15) spfli-connid,sy-vline,(15) spfli-countryto, sy-vline,(15) spfli-cityfrom,sy-vline,(15)spfli-airpfrom,sy-vline.ULINE AT /(91).
ENDSELECT.

12、输出热点

**输出热点
start-of-selection.write '请按'.format hotspot on color 5 inverse on.write '热点'.format hotspot off color off.
at line-selection.write 'welcome!'.

13、为列表定义工具条和菜单

*为列表定义工具条和菜单
START-OF-SELECTION.
* 设置已使用的状态条SET PF-STATUS 'STA1'.WRITE:'测试工具条按钮 '.AT USER-COMMAND.
*当单击按钮时输出CASE sy-ucomm.WHEN '&NFO'.WRITE: '已选择!'.WHEN 'E'.leave to screen 0.when others.WRITE '1111'.ENDCASE.

14、在弹出式窗口中显示列表

*在弹出式窗口中显示列表
START-OF-SELECTION.
* 设置已使用的状态条SET PF-STATUS 'STA1'.WRITE:'测试工具条按钮 '.AT USER-COMMAND.
*当单击按钮时输出CASE sy-ucomm.WHEN '&NFO'.WRITE: '已选择!'.WHEN 'E'.leave to screen 0.when others.IF sy-lsind = 1.SET PF-STATUS 'STA1'.
*定义子窗口并输出WINDOW STARTING AT 10 10 ENDING AT 30 20.WRITE '在子窗口输出!'.WRITE: '请注意!'.ENDIF.ENDCASE.

15、隐藏字段技术

**隐藏字段技术
*数据库表spfli相关
TABLES: spfli, sflight.START-OF-SELECTION.SKIP.
*输出ULINE AT /(91).WRITE: / sy-vline,(15) '航线承运人', sy-vline , (15) '航班连接', sy-vline,(15) '国家代码', sy-vline,(15) '起飞城市', sy-vline,(15) '起飞机场',sy-vline.ULINE AT /(91).*输出SELECT * FROM spfli
*    WHERE carrid = 'UA' AND connid = 3504
    .WRITE: / sy-vline,(15) spfli-carrid,sy-vline,(15) spfli-connid,sy-vline,(15) spfli-countryto,sy-vline,(15) spfli-cityfrom,sy-vline,(15) spfli-airpfrom, sy-vline.
*隐藏关键字HIDE: spfli-carrid,spfli-connid.ULINE AT /(91).ENDSELECT.AT LINE-SELECTION.
*只输出第一页IF sy-lsind = 1.write : / 'spfli-carrid:',spfli-carrid.write : / 'spfli-connid:',spfli-connid.ULINE AT /(91).WRITE: / sy-vline,(15) '航线承运人', sy-vline , (15) '航班连接', sy-vline,(15) '国家代码', sy-vline,(15) '起飞城市', sy-vline,(15) '起飞机场',sy-vline.ULINE AT /(91).
*根据隐藏字段读取并打印从表SELECT * FROM sflightWHERE carrid = spfli-carrid AND connid = spfli-connid.WRITE: / sy-vline,(15) spfli-carrid,sy-vline,(15) spfli-connid,sy-vline,(15) spfli-countryto,sy-vline,(15) spfli-cityfrom,sy-vline,(15) spfli-airpfrom, sy-vline.ULINE AT /(91).ENDSELECT.ENDIF.

16、使用hide技术从列表读取行

**使用hide技术从列表读取行
*数据库表spfli相关
TABLES: spfli.
DATA: sela(1) TYPE c,num    TYPE i VALUE 0.START-OF-SELECTION.SKIP.
*输出ULINE AT /(95).WRITE: / sy-vline,'',sy-vline,(15) '航线承运人', sy-vline , (15)'航班连接', sy-vline,(15) '国家代码', sy-vline,(15)'起飞城市', sy-vline,(15) '起飞机场',sy-vline.ULINE AT /(95).*输出SELECT * FROM spfli.WRITE: / sy-vline,sela AS CHECKBOX,sy-vline,(15) spfli-carrid,sy-vline,(15) spfli-connid,sy-vline,(15) spfli-countryto,sy-vline,(15) spfli-cityfrom,sy-vline,(15) spfli-airpfrom,sy-vline.
* 隐藏关键字HIDE: spfli-carrid,spfli-connid,spfli-countryto,spfli-cityfrom,spfli-airpfrom.ULINE AT /(95).
* 隐藏选择框,使表格行不会选择HIDE sela.num = num + 1.ENDSELECT.END-OF-SELECTION.
*  num1 = sy-lsind - 1.AT LINE-SELECTION.WRITE :  'sy-lsind:',sy-lsind.WRITE :  'num:',num.
*只输出第一页IF sy-lsind = 1.DO num TIMES.
* 读取行READ LINE sy-index FIELD VALUE sela.
* 如果checked,输出隐含字段IF sela = 'X'.WRITE: / spfli-carrid,spfli-connid,spfli-countryto,spfli-cityfrom,spfli-airpfrom.ENDIF.ENDDO.ENDIF.

转载于:https://www.cnblogs.com/miaosj/p/10384232.html

ABAP:从例子学习ABAP相关推荐

  1. ABAP初学者如何系统地学习ABAP编程?

    有很多 ABAP 的从业人员,在各种社交媒体平台上,向我询问过这个问题. 先说说我自己的实际情况.我是2007年硕士毕业加入 SAP 成都研究院的,本科和研究生做的项目,一直是用 C/C++ 开发.进 ...

  2. 什么是 SAP ABAP? 类型、ABAP 完整形式和含义

    转载地址:https://www.guru99.com/what-is-abap.html ABAP 是一种由 SAP 创建的高级编程语言,可帮助大型企业定制 SAP ERP. ABAP 可以帮助定制 ...

  3. SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析

    SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析 所在项目客户的一家工厂上线已经超过半年,其业务部门提出一个使用了半年的RF枪程序,突然不能使用了.程序直接Dump ...

  4. 数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇

    HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打 ...

  5. Liferay例子学习,如何部署简单的jsp portlet

    http://blog.chinaunix.net/space.php?uid=9195812&do=blog&id=2006478 Liferay例子学习 (2007-07-23 1 ...

  6. 在ABAP XSLT中调用ABAP类的方法

    本文介绍在ABAP XSLT中调用ABAP类的方法. 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  7. 【ABAP系列】SAP ABAP模块-任意report作为附件以邮件形式发送

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP模块-任意rep ...

  8. 质量属性效用树例子_数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇

    HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打 ...

  9. 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 取两个内表的交 ...

最新文章

  1. 低功耗蓝牙开发权威指南 pdf_新手入门神器!物联网低功耗蓝牙开发板,免费申请...
  2. Steeltoe 2.4新增代码生成工具、全新入门指南等,助力.NET微服务开发
  3. 功能Java示例 第7部分–将失败也视为数据
  4. 如何调整反光镜和座椅的位置 为您支招
  5. (递归3)最大公约数
  6. 【opencv 学习】仿射变换(图像的旋转、缩放、平移)
  7. linux常用命令-文件处理命令
  8. 杭电1874畅通工程续
  9. 在一个函数中把值放到Cookies中比较是否相等
  10. 并发教程--JAVA5中 计数信号量(Counting Semaphore)例子
  11. 清华紫光输入法linux,清华紫光输入法
  12. Speedoffice(Excel)怎么把边框线条加粗
  13. python操作浏览器滚动条_python selenium webdriver处理浏览器滚动条
  14. WinMerge使用
  15. 小程序开发API之mDNS
  16. Linux下异步IO(libaio)的使用以及性能
  17. ESP8266模块三种低功耗睡眠模式
  18. HTML页面如何布局
  19. 因缺思厅Qpython爱之初体验
  20. 十大跨平台移动应用开发工具

热门文章

  1. Linux Shell 中 > 和 >> 的异同点和应用场景
  2. 深入::first-letter的研究
  3. python整数因子_Python:通过非整数因子下采样2D numpy数组
  4. python迷宫最短路径_python实现最短路径的实例方法
  5. 保存到本地_手把手教你将微信表情包保存到本地
  6. Dubbo中的监控和管理
  7. 项目实战-药品采购系统-day01
  8. 解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)
  9. BZOJ 4241 分块
  10. struts2.0标签库