ABAP学习练习 变量的创建及内表的操作
2017-11-28 10:41
274 查看
*&---------------------------------------------------------------------* *& 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 element GV_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 TABLE TYPES 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_SCHOOL APPEND LINES OF GT_SCHOOL_ZZZ FROM 1 TO 3 TO GT_SCHOOL . " 内表GT_SCHOOL_ZZZ的第一至三行 添加至 内表 GT_SCHOOL *内表数据的插入 INSERT INSERT 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_SCHOOL INSERT 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 . *内表的修改 MODIFY CLEAR 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 . * 内表的删除 DELETE DELETE 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 . " 释放内存空间
相关文章推荐
- OAF学习笔记-9-创建的操作
- python学习第五章操作列表部分课后练习自己尝试的代码
- 【日常小坑】关于python3操作数据库实用占位符传入引用变量问题,做个Mark(python学习第一天)
- Java基础学习总结(88)——线程创建与终止、互斥、通信、本地变量
- Maven学习记录之maven基本操作命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse中创建maven工程:
- C/C++学习(九)循环双链表的操作之创建,插入、删除
- ABAP--动态创建类型和变量的使用程序样例
- 线程的基本操作,创建线程,结束线程,新线程跟原线程共享变量
- Linux Shell 学习笔记3:环境变量的操作及相关命令
- MFC学习笔记——CDialog(创建对话框类和添加控件变量)
- OAF学习笔记-9-创建的操作
- PHP菜鸟学习之路-php学习笔记变量与运算符练习
- Java基础学习总结(88)——线程创建与终止、互斥、通信、本地变量
- C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)
- ABAP--动态创建类型和变量的使用程序样例
- OAF学习笔记-9-创建的操作
- DropDownList操作;ListBox操作;动态创建控件;Response.Write("欢迎学习ASP.NET''!");
- R语言学习1--基本操作及创建数据集
- 浅入Git学习②--Git操作之创建与修改
- STL学习之set与multiset操作练习