ABAP学习练习 变量的创建及内表的操作
来源:互联网 发布:商品抢购软件 编辑:程序博客网 时间:2024/06/06 03:53
*&---------------------------------------------------------------------**& Report ZWXS_HTKJ_TEST_01*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ZWXS_HTKJ_TEST_01 MESSAGE-ID ZWXS_MESSAGE .WRITE 'hello' .MESSAGE S000 .* 数据类型* 变量* 创建变量 参照标准类型DATA GV_CHAR TYPE C LENGTH 10 VALUE 'CHAR类型'. "参考标准类型声明变量,DATA GV_NUMC TYPE N LENGTH 10 VALUE '123' .DATA GV_DEC TYPE P LENGTH 10 DECIMALS 2 VALUE '3.14' .DATA GV_INT TYPE I VALUE 10 .DATA GV_DATE1 TYPE D VALUE '20171121' .DATA GV_DATE2 TYPE D VALUE '19940705' .DATA GV_DATE3 LIKE GV_DATE2 . "参考对象创建对象DATA GV_TIME1 TYPE T VALUE '151901' .DATA GV_TIME2 TYPE T VALUE '180000' .WRITE : / 'CHAR类型:' NO-GAP, GV_CHAR , / '数值类型:' NO-GAP,GV_NUMC NO-ZERO, "去掉前导零 / '小数类型:' NO-GAP ,GV_DEC .GV_INT = GV_DATE1 - GV_DATE2 . "日期相减WRITE : / '日期相减:', GV_INT .GV_DEC = GV_TIME1 - GV_TIME2 .WRITE : / '时间相减;' , GV_DEC . "时间相减WRITE : / GV_DATE1+0(4) . "截取字符 第0位开始截取4位WRITE : / GV_DATE2+4(*) . "第4位开始 ,截取所有* 赋值GV_DATE1 = GV_DATE2 .MOVE GV_DATE2 TO GV_DATE1 .WRITE GV_DATE2 TO GV_DATE1 . "WRITE辅助不能是 I 类型 和 P 类型WRITE / GV_DATE1 .* 创建变量 参照全局类型 即数据字典中创建的类型DATA GV_SEX TYPE ZSTUSEX . " 参考 data elementGV_SEX = '男' .write / gv_sex .DATA GV_WEIGHT TYPE ZSTUDENT_WXS-ZSTUWEIGH . " 参考字段创建变量GV_WEIGHT = '60' .WRITE / GV_WEIGHT .* 在程序中声明局部类型TYPES GTY_CHAR01 TYPE C LENGTH 20 .DATA GV_CHAR01 TYPE GTY_CHAR01 VALUE '参考局部类型创建变量' .WRITE / GV_CHAR01 .* 参考结构体类型 创建结构体变量DATA GS_SCHOOL TYPE ZSCHOOL_WXS_STR_01 . " 参考全局类型的结构体 创建变量GS_SCHOOL-ZSCHOOL = '101' .GS_SCHOOL-ZSNAME = '清华大学' .GS_SCHOOL-ZADD = '北京 中国' .WRITE : / GS_SCHOOL .WRITE : / GS_SCHOOL-ZSCHOOL , GS_SCHOOL-ZSNAME , GS_SCHOOL-ZADD .DATA GS_SCHOOL2 TYPE ZSCHOOL_WXS_STR_01 .MOVE-CORRESPONDING GS_SCHOOL TO GS_SCHOOL2 . "对应赋值WRITE: / GS_SCHOOL2-ZSCHOOL , GS_SCHOOL2-ZSNAME , GS_SCHOOL2-ZADD .* 结构体* 在程序中声明结构体类型TYPES : BEGIN OF GTY_SCHOOL3_S , ZSCHOOL TYPE ZSCHOOL_WXS_TEST-ZSCHOOL , ZSNAME TYPE ZSCHOOL_WXS_TEST-ZSNAME , ZADD TYPE ZSCHOOL_WXS_TEST-ZADD , END OF GTY_SCHOOL3_S .DATA GS_SCHOOL3 TYPE GTY_SCHOOL3_S .GS_SCHOOL3-ZSCHOOL = '102' .GS_SCHOOL3-ZSNAME = '北京大学'.GS_SCHOOL3-ZADD = '北京 中国' .WRITE : / GS_SCHOOL3-ZSCHOOL , GS_SCHOOL3-ZSNAME , GS_SCHOOL3-ZADD .MOVE-CORRESPONDING GS_SCHOOL TO GS_SCHOOL3 .WRITE : / GS_SCHOOL3 .TYPES BEGIN OF GTY_SCHOOL_A . "结构体中 INCLUDE STRUCTURE 结构体 ,平级关系 INCLUDE STRUCTURE ZSCHOOL_WXS_STR_01 .TYPES FLAG TYPE C LENGTH 1 .TYPES END OF GTY_SCHOOL_A .TYPES : BEGIN OF GTY_SCHOOL_B . INCLUDE STRUCTURE ZSCHOOL_WXS_STR_01 .TYPES: FLAG TYPE C LENGTH 1 , END OF GTY_SCHOOL_B .DATA : BEGIN OF GTY_SCHOOL3_C , ZSCHOOL TYPE ZSCHOOL_WXS_TEST-ZSCHOOL , ZSNAME TYPE ZSCHOOL_WXS_TEST-ZSNAME , ZADD TYPE ZSCHOOL_WXS_TEST-ZADD , END OF GTY_SCHOOL3_C .TABLES BSEG . " 声明一个跟数据库表完全相同的结构体类型DATA GT_BSEG TYPE TABLE OF BSEG . "参照该结构体类型声明 内表对象*内表 INTERNAL TABLETYPES GTY_SCHOOL_T TYPE TABLE OF ZSCHOOL_WXS_STR_01 . "参照结构体声明内表类型TYPES GTY_SCHOOL_T2 TYPE ZSCHOOL_WXS_TTY_01 . "参照数据字典 TABLE TYPE 声明内表类型DATA GT_SCHOOL TYPE GTY_SCHOOL_T .DATA GT_SCHOOL_1 TYPE TABLE OF GTY_SCHOOL3_S INITIAL SIZE 0 .DATA : BEGIN OF GT_SCHOOL3_C OCCURS 0 , "声明的内表 默认带有表头行 ZSCHOOL TYPE ZSCHOOL_WXS_TEST-ZSCHOOL , ZSNAME TYPE ZSCHOOL_WXS_TEST-ZSNAME , ZADD TYPE ZSCHOOL_WXS_TEST-ZADD , END OF GT_SCHOOL3_C .* 对内表的操作GS_SCHOOL-ZSCHOOL = '103' .GS_SCHOOL-ZSNAME = '复旦大学' .GS_SCHOOL-ZADD = '浙江 中国' .APPEND GS_SCHOOL TO GT_SCHOOL .GS_SCHOOL-ZSCHOOL = '104' .GS_SCHOOL-ZSNAME = '西安交通大学' .GS_SCHOOL-ZADD = '西安 陕西 中国' .APPEND GS_SCHOOL TO GT_SCHOOL .DATA GT_SCHOOL_4 TYPE TABLE OF ZSCHOOL_WXS_STR_01 WITH HEADER LINE . "参照 结构体类型 声明的 就有表头行的内表对象CLEAR GT_SCHOOL_4 .GT_SCHOOL_4-ZSCHOOL = '105' .GT_SCHOOL_4-ZSNAME = '106' .APPEND GT_SCHOOL_4 .DATA GS_SCHOOL_5 LIKE LINE OF GT_SCHOOL_4 . "参照内表声明结构体* 常量CONSTANTS C_CHAR TYPE C LENGTH 10 VALUE '这是个常量' .WRITE / C_CHAR .* 系统定义的数据对象IF SY-SUBRC = 0 . "返回当前代码执行状态 , 0 success .ENDIF .WRITE : / SY-TCODE , "返回当前 TCODE . / SY-DATUM , "返回当前 日期 . / SY-UZEIT , "返回当前 时间 . / SY-COLNO , "返回当前列表中的列 / SY-LINNO . "返回当前行* 内表的相关操作* 内表的类型DATA GT_SCHOOL_STANDARD TYPE STANDARD TABLE OF ZSCHOOL_WXS_STR_01 . "标准表DATA GT_SCHOOL_SORTED TYPE SORTED TABLE OF ZSCHOOL_WXS_STR_01 WITH UNIQUE KEY ZSCHOOL ZSNAME . " 排序表 ,按照关键字排序 ,关键字可以是多个也可以是一个, 关键字唯一DATA GT_SCHOOL_SORTED2 TYPE SORTED TABLE OF ZSCHOOL_WXS_STR_01 WITH NON-UNIQUE KEY ZSCHOOL . "关键字 不唯一DATA GT_SCHOOL_HASHED TYPE HASHED TABLE OF ZSCHOOL_WXS_STR_01 WITH UNIQUE KEY ZSCHOOL ZSNAME . "哈希表 , 关键字必须唯一
INTNAL TABL
*&---------------------------------------------------------------------**& Report ZWXS_HTKJ_TEST_02*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ZWXS_HTKJ_TEST_02 MESSAGE-ID ZWXS_MESSAGE .WRITE '变量的创建及内表的操作' .MESSAGE S002 .CONSTANTS C_CON TYPE C LENGTH 3 VALUE 'SAP' . "常量WRITE / C_CON .TYPES GS_SCHOOL_STR TYPE ZSCHOOL_WXS_STR_01 . " 参照数据库中的结构 创建结构体类型DATA GS_SCHOOL TYPE GS_SCHOOL_STR .TYPES GTY_SCHOOL_T TYPE STANDARD TABLE OF ZSCHOOL_WXS_TTY_01 . " 参照数据库的表创建 内表 无表头行DATA GT_SCHOOL TYPE GTY_SCHOOL_T .TYPES GTY_SCHOOL_T2 TYPE TABLE OF ZSCHOOL_WXS_TEST . "参照数据库表 创建内表DATA GTY_SCHOOL2 TYPE GTY_SCHOOL_T2 .DATA GTY_STUDENT_T TYPE STANDARD TABLE OF ZSTUDENT_WXS WITH HEADER LINE . "参照数据库表创建 内表 带表头行TYPES : BEGIN OF GS_STRUCTURE_STR , "创建结构体 ZCODE TYPE ZSTUDENT_WXS-ZSTUCODE , ZNAME TYPE ZSTUDENT_WXS-ZSTUNAME , SEX TYPE ZSTUDENT_WXS-ZSTUSEX , ZSCHOOL TYPE ZSTUDENT_WXS-ZSCHOOL , ZSNAME TYPE ZSCHOOL_WXS_TEST-ZSNAME , END OF GS_STRUCTURE_STR . DATA GS_STRUCTYRE TYPE GS_STRUCTURE_STR .
内表的操作
*&---------------------------------------------------------------------**& Report ZWXS_HTKJ_TEST_03*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ZWXS_HTKJ_TEST_03 MESSAGE-ID ZWXS_MESSAGE.CONSTANTS C_CON TYPE C LENGTH 3 VALUE 'SAP' .TYPES : BEGIN OF GTY_TOTAL , ZCODE TYPE ZSTUDENT_WXS-ZSTUCODE , ZNAME TYPE ZSTUDENT_WXS-ZSTUNAME , ZSEX TYPE ZSTUDENT_WXS-ZSTUSEX , ZSCHOOL TYPE ZSTUDENT_WXS-ZSCHOOL , ZSNAME TYPE ZSCHOOL_WXS_TEST-ZSNAME , END OF GTY_TOTAL .DATA GT_TOTAL TYPE STANDARD TABLE OF GTY_TOTAL .DATA GS_TOTAL TYPE GTY_TOTAL .DATA GT_SCHOOL_ZZZ TYPE STANDARD TABLE OF ZSCHOOL_WXS_TEST .DATA GS_SCHOOL_ZZZ TYPE ZSCHOOL_WXS_TEST .DATA GT_SCHOOL LIKE GT_SCHOOL_ZZZ .DATA GS_SCHOOL LIKE GS_SCHOOL_ZZZ .DATA GT_SCHOOL_HASHED TYPE HASHED TABLE OF ZSCHOOL_WXS_TEST WITH UNIQUE KEY ZSNAME .DATA GT_STUDENT_ZZZ TYPE TABLE OF ZSTUDENT_WXS WITH HEADER LINE .MESSAGE S003 .*内表数据的插入 APPEND 不能是HASHED表APPEND GS_SCHOOL_ZZZ TO GT_SCHOOL_ZZZ . "无表头行 内表APPEND GT_STUDENT_ZZZ . "有表头行内表APPEND INITIAL LINE TO GT_SCHOOL_ZZZ . "添加空行APPEND LINES OF GT_SCHOOL_ZZZ TO GT_SCHOOL . " GT_SCHOOL_ZZZ 添加至 GT_SCHOOLAPPEND LINES OF GT_SCHOOL_ZZZ FROM 1 TO 3 TO GT_SCHOOL . " 内表GT_SCHOOL_ZZZ的第一至三行 添加至 内表 GT_SCHOOL*内表数据的插入 INSERTINSERT GS_SCHOOL_ZZZ INTO GT_SCHOOL_ZZZ INDEX 2 . "将结构 插入至 内表 第2行INSERT GS_SCHOOL_ZZZ INTO TABLE GT_SCHOOL_HASHED . " 根据关键字 插入内表INSERT LINES OF GT_SCHOOL_ZZZ INTO GT_SCHOOL INDEX 3 . " 将GT_SCHOOL_ZZZ 添加至 GT_SCHOOLINSERT LINES OF GT_SCHOOL_ZZZ FROM 1 TO 3 INTO GT_SCHOOL INDEX 3 . "将内表GT_SCHOOL_ZZZ的一至三行添加至内表GT_SCHOOL,从第三行开始。INSERT LINES OF GT_SCHOOL_ZZZ INTO TABLE GT_SCHOOL . "按照关键字插入 。* 内表的数据插入 COLLECT 聚集附加TYPES : BEGIN OF GTY_COLLECT , NAME TYPE C LENGTH 8 , AGE TYPE I , END OF GTY_COLLECT .DATA GT_COLLECT TYPE TABLE OF GTY_COLLECT .DATA GS_COLLECT TYPE GTY_COLLECT .GS_COLLECT-NAME = '甲' .GS_COLLECT-AGE = 10 .COLLECT GS_COLLECT INTO GT_COLLECT .GS_COLLECT-NAME = '甲' .GS_COLLECT-AGE = 10 .COLLECT GS_COLLECT INTO GT_COLLECT .GS_COLLECT-NAME = '甲' .GS_COLLECT-AGE = 10 .COLLECT GS_COLLECT INTO GT_COLLECT .GS_COLLECT-NAME = '甲' .GS_COLLECT-AGE = 10 .COLLECT GS_COLLECT INTO GT_COLLECT .GS_COLLECT-NAME = '乙' .GS_COLLECT-AGE = 7 .COLLECT GS_COLLECT INTO GT_COLLECT .GS_COLLECT-NAME = '乙' .GS_COLLECT-AGE = 7 .COLLECT GS_COLLECT INTO GT_COLLECT .GS_COLLECT-NAME = '乙' .GS_COLLECT-AGE = 7 .COLLECT GS_COLLECT INTO GT_COLLECT .LOOP AT GT_COLLECT INTO GS_COLLECT . "LOOP 循环语句 WRITE : / GS_COLLECT-NAME , GS_COLLECT-AGE .ENDLOOP .*内表的修改 MODIFYCLEAR GS_SCHOOL .GS_SCHOOL-ZSCHOOL = '201' .GS_SCHOOL-ZSNAME = '哈弗大学' .MODIFY GT_SCHOOL FROM GS_SCHOOL INDEX 1 .MODIFY TABLE GT_SCHOOL_HASHED FROM GS_SCHOOL . "HASHED 表修改*索引表的修改LOOP AT GT_SCHOOL INTO GS_SCHOOL . IF GS_SCHOOL-ZSCHOOL = '101' . GS_SCHOOL-ZSNAME = '南京大学' . MODIFY GT_SCHOOL FROM GS_SCHOOL INDEX SY-TABIX . ENDIF .ENDLOOP .* 哈希表的修改LOOP AT GT_SCHOOL_HASHED INTO GS_SCHOOL . IF GS_SCHOOL-ZSCHOOL = '102' . GS_SCHOOL-ZADD = 'CHINA' . MODIFY TABLE GT_SCHOOL_HASHED FROM GS_SCHOOL TRANSPORTING ZADD . ENDIF .ENDLOOP .*内表的读取READ TABLE GT_SCHOOL INTO GS_SCHOOL INDEX 1 .READ TABLE GT_SCHOOL INTO GS_SCHOOL WITH KEY ZSNAME = '北大' ZADD = '中国' .IF SY-SUBRC = 0 . " 读取满足条件的第一条 WRITE / '读取成功' .ENDIF .CLEAR GT_SCHOOL[] .GS_SCHOOL-ZSCHOOL = '101' .GS_SCHOOL-ZSNAME = '北大' .GS_SCHOOL-ZADD = 'CHINA' .APPEND GS_SCHOOL TO GT_SCHOOL .GS_SCHOOL-ZSCHOOL = '102' .GS_SCHOOL-ZSNAME = '北大' .GS_SCHOOL-ZADD = 'CHINA' .APPEND GS_SCHOOL TO GT_SCHOOL .GS_SCHOOL-ZSCHOOL = '103' .GS_SCHOOL-ZSNAME = '北大' .GS_SCHOOL-ZADD = 'CHINA' .APPEND GS_SCHOOL TO GT_SCHOOL .GS_SCHOOL-ZSCHOOL = '104' .GS_SCHOOL-ZSNAME = '北大' .GS_SCHOOL-ZADD = 'CHINA' .APPEND GS_SCHOOL TO GT_SCHOOL .READ TABLE GT_SCHOOL INTO GS_SCHOOL WITH KEY ZSNAME = '北大' ZADD = 'CHINA' .IF SY-SUBRC = 0 . WRITE : / 'READ 读取成功 !' . WRITE : / 'READ 读取结果 :' , GS_SCHOOL-ZSCHOOL .ENDIF .LOOP AT GT_SCHOOL INTO GS_SCHOOL WHERE ZSNAME = '北大' AND ZADD = 'CHINA' . WRITE : / '循环读取结果:' , GS_SCHOOL-ZSCHOOL .ENDLOOP .* 内表的删除 DELETEDELETE GT_SCHOOL INDEX 1 .DELETE TABLE GT_SCHOOL_HASHED FROM GS_SCHOOL . "根据关键字删除*删除临近的重复行 ,留下第一行SORT GT_SCHOOL BY ZSCHOOL ZSNAME .DELETE ADJACENT DUPLICATES FROM GT_SCHOOL COMPARING ZSCHOOL ZSNAME .* 清空CLEAR : GS_SCHOOL , GT_STUDENT_ZZZ . "清空表头行CLEAR GT_STUDENT_ZZZ[] . "清空表体REFRESH GT_STUDENT_ZZZ . " 总是清空表体FREE GT_STUDENT_ZZZ . " 释放内存空间
阅读全文
0 0
- ABAP学习练习 变量的创建及内表的操作
- ABAP-内表的创建
- ABAP内表有关的系统变量
- ABAP内表有关的系统变量
- abap内表的操作_例子
- abap内表的操作汇总
- ABAP 内表总结-2 整体内表的操作
- ABAP 内表总结-2 整体内表的操作
- ABAP内表(internal table)有关的系统变量
- ABAP内表(internal table)有关的系统变量
- ABAP中创建动态内表的三种方法
- ABAP内表操作
- ABAP内表操作
- ABAP~ 内表操作
- ABAP--动态创建局部类型的变量
- ABAP--动态创建局部类型的变量
- ABAP内表的表头
- [转帖]ABAP实践学习-内表的常用处理
- 利用神经网络内部表征可视化class-specific image regions区域
- MySQL函数大全及用法示例
- 解析题
- C++ windows boost 编译
- svn--8.工具的使用
- ABAP学习练习 变量的创建及内表的操作
- 面试感悟:3年工作经验java程序员应有的技能
- aidl的使用
- CI发送到邮箱功能(支持发送附件)
- 区块链领域投资看涨 利好区块链创业团队
- vs中利用openmp进行并行运算
- 常用的adb指令
- java使用pdfbox把PDF转成html
- java数组实现去重且不改变原先顺序