免费预览已结束,剩余56页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAPECC6.0-ABAP2020年5月23日,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,最简单的Report(1),一个经典的入门例子,通常在程序执行前,需要做以下三件事:1、对所写的代码进行语法检查,避免明显的语法错误。2、保存程序;在程序激活过程中,SAP也会自动对程序进行保存3、激活程序;在SAP中没有激活的程序是不能进行最终使用的。上例最终运行结果如下:,最简单的Report(2),report在ABAP程序中,以report或者program指令开头的程序才能直接运行;其他指令的程序均不可以直接运行。,Report程序里,程序的属性类型那需选择“可执行程序”,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,基本数据类型,在ABAP中,基本的数据类型有八种字符型:C(文本字符)N(数字文本字符)T(时间类型)D(日期类型)数字类型:I(整数类型)F(浮点类型)P(压缩数)X(十六进制)另,ABAP还提供对字符串的支持,数据类型为string。,基本数据类型列表,定义变量(1),定义字段DATACOLTYPEC.定义行(工作区)DATA:BEGINOFWA,COLTYPEC,ENDOFWA.定义内表DATA:BEGINOFITABOCCURS0,COLTYPEC,ENDOFITAB.,定义变量(2),ABAP中对变量的定义有两种方式:DATA根据内置类型声明基本类型数据对象。TYPES根据内置类型自定义基本数据类型。,定义变量(3),TYPESnumTYPEi.DATAnum1TYPEnum.,算术运算,ABAP中,基本的算术运算有这么几种。(+、-、*、/、DIV、MOD、*)前四种运算意义明确,不再做过多累述。现在,来看看后三种运算。DIV整除除法时,如果除不尽,只取商的整数部分。MOD取余除法时,如果除不尽,只取商的余数部分。*乘方*是做乘法运算;*则是乘方(即幂运算)。例:6DIV4=1;6MOD4=2.1*2=2;1*2=1.,字符数据处理(1),1)concatenate将两个字符串合并成一个字符串。2)split将一个字符串拆分成多个字符串。3)search在字符内查找指定字符串4)replace用其他字符串在字符内替换指定字符串。5)strlen用于确定字符实际长度。6)condense用于清除字符内多余的空格。,PS:字符串string也是字符的一种。和其他字符类型的区别在于,string在定义时,不需要指定字符长度,其字符长度会随着存放数据长度的增加自动扩展。,字符数据处理(2),结构语句,分支控制IFELSEIFELSEENDIFCASEfWHENf1WHENf2ENDCASE循环控制DOnTIMESENDDOWHILEENDWHILE,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,内表(1),除了数据库表格,还可以创建仅在程序运行时间内存在的内表。ABAP/4提供了针对内表的不同操作。例如,可以搜索、附加、插入或删除行。内表中的行数并不固定。根据需求,系统可实时增加内表的大小。例如,如果想将某个数据库表格读入内表,不必事先知道数据库表格的大小。,内表(2),内表的另一种用处是根据程序需要重新组织数据库表格的内容。例如,可以从一个或多个大客户表格特定的数据中将与创建电话清单有关的数据读入内表中。然后可在程序运行期间直接访问该清单,而不用每次调用时都执行耗时的数据库查询。,内表的操作:插入,APPENDDATA:BEGINOFITABOCCURS0,COL1TYPEI,COL2TYPEI,ENDOFITAB.ITAB-COL1=1.ITAB-COL2=2.APPENDITAB.INSERTDATALINELIKEITAB.LINE-COL1=3.LINE-COL2=4.INSERTLINEINTOITABINDEX1.,数据只能附于内表最后一行,数据可以插入内表任意位置,内表的操作:修改,MODIFYLOOPATITABWHERECOL1=1.ITAB-COL1=5.MODIFYITAB.ENDLOOP.,MODIFY前,MODIFY后,内表的操作:循环读取,LOOP使用LOOP语句逐行读取内表。要将内表逐行读入工作区域,可以使用LOOP语句编一个循环。语法如下所示:LOOPATINTOFROMTOWHERE.ENDLOOP.,内表的操作:删除,DELETEDELETEitabWHEREcol1=1.,删除前,删除后,内表的操作:COLLECT,COLLECT聚集附加操作时,系统将检查工作区中的标准关键字段值与已存在于内表中的数据行是否相(所有非数字字段)。如果不同,COLLECT语句的作用与APPEND语句相似,将新行附加至内表末尾;如果存在相同表关键字值的行,COLLECT语句不附加新行,而是将工作区中数字字段的内容累加到已有数据行中。,CARRCONNUMSATZ,CARRCONNUMSATZ,APPENDTO,COLLECTTO,9.6,内表的操作:SUM,SUM该语句只能在LOOP/ENDLOOP块内部使用。如果在AT/ENDAT块中使用SUM,则系统计算当前行组内部所有行的数字字段之和并将其写入目标区域中相应的字段;如果在AT/ENDAT块之外使用SUM语句,则系统计算所有循环过程中(已循环和将要循环的)内表行的数字字段之和并将其写入工作区域中相应的字段。所以,在AT/ENDAT块之外使用SUM语句一般是无意义的。,内表的操作:AT,ATlevelENDAT.该语句只能在LOOP语句内使用,其中行条件level有下列选项:FIRST当前循环为内表的第一行,即当第一次循环操作时,系统会执行控制块语句LAST当循环为内表最后一行。NEWf行组的开头,行组指的是字段f和f前面(即左边)的全部字段,如果行组中的内容不同于上一行,执行语句块中的内容。ENDOFf行组的结尾,如果下一行行组中的任何字段内容不同于上一行,执行语句块中的内容。,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,Select语句,SELECTSELECTresultFROMsourceINTO|APPENDINGtargetFORALLENTRIESINitabWHEREsql_condGROUPBYgroupHAVINGgroup_condORDERBYsort_key.,数据选取(1),SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFTABLEseatsWHEREcarridBETWEENAAANDDLGROUPBYconnidcarridseatsoccHAVINGcarridBETWEENAAANDDLORDERBYseatsocc.,数据选取字段,数据库表,内表或工作区,数据选取范围及输出格式,数据选取(2),SELECTcarridconnidseatsoccFROMsflightINTOTABLEseats,SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFTABLEseats,数据库表,内表,selectsingle的使用,TABLE,selectsingle选择第一个满足条件的值selectsinglecol2intoWAfromTABLEwherecol1=A.结果:COL2值为1。,表关联,JOIN如果要选取相关联的两个或以上的表内的数据,则需要使用到JOIN。SELECTaaufnrbdfreiINTOCORRESPONDINGFIELDSOFTABLEitabFROMafkoASaJOINafpoASbONaaufnr=baufnr.,selectendselect,SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFTABLEseatsWHEREcarridBETWEENAAANDDLGROUPBYconnidcarridseatsoccHAVINGcarridBETWEENAAANDDLORDERBYseatsocc.,SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFseatsWHEREcarridBETWEENAAANDDLGROUPBYconnidcarridseatsoccHAVINGcarridBETWEENAAANDDLORDERBYseatsocc.APPENDseats.ENDSELECT.,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,字段查询(转账表)1,事务代码:QS24显示主检验特性场景:需要用到字段主检验特性,却不知道主检验特性数据的存放处。,字段查询(转账表)2,在主检验特性栏位按下F1,字段查询(转账表)3,QPMK是转账表,技术信息里表名和字段名称组合起来就是主文件检验特性的存储位置。,字段查询(转账表)4,字段查询(结构)1,这是通过QA33查询到的一笔检验批结果记录。假设,现在需要字段“检验的”的数据。,字段查询(结构)2,虽然,在技术信息的表名上写着QAQEE,实际上,QAQEE是一个结构。,字段查询(结构)3,如何确定结构中的字段存储的表?可以通过该字段的数据元素引用处来进行查询。,字段查询(结构)4,通过所用处清单来查找出现过数据元素QANZWERTG4的全部转账表。,字段查询(结构)5,通过所用处清单,还可以查找数据元素在更广泛的范围内的应用。,字段查询(结构)6,查找结果,数据元素QANZWERTG4在两个表内有被引用。,字段查询(结构)7,可以看到QAMR是转账表,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,输出控制:WRITE,WRITE语句在屏幕上输出数据的基本ABAP语句是WRITE。在屏幕上,输出通常是左对齐的。如果使用几个WRITE语句,输出字段就一个接一个显示,输出之间由列分开(如一个空格)。如果当前行没有足够空间,则开始新行。,对齐格式(1),输出屏幕上的数据字段格式,依赖数据类型。预定义数据类型的输出格式数据类型输出长度定位C字段长度左对齐D8左对齐F22右对齐I11右对齐N字段长度左对齐P2*字段长度(1)右对齐T6左对齐X2*字段长度左对齐数字数据类型F、I和P是右对齐的,左边用空格填充。如果有足够的空间,也输出千位分隔符。如果类型P字段包含小数位,则默认输出长度增加一位。对数据类型D,日期的内部格式与输出格式不同。当输出数据使用WRITE语句时,系统自动以用户主记录中指定的格式(例如,DD/MM/YYYY),输出数据类型D。,对齐格式(2),REPORTSAPMTEST.DATANUMBERTYPEPVALUE-1234567.89DECIMALS2.WRITE:Number,NUMBER,ispacked.输出如下:Number1,234,567.89-ispacked字段NUMBER总长为13,即,9位数字(包括小数点)、前导负号和作为分隔符的两个逗号。因为类型P字段的字段长度为8,所以NUMBER字段的输出长度为2*8+1=17。剩余的位置用四个空格填充。这意味着,在文字Number和数字自身之间有五个空格。,定位输出:列,在屏幕上定位WRITE输出如下所示,通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:语法WRITEAT/().此处斜线/表示新的一行是最长为三位数字的数字或变量,表示在屏幕上的位置是最长为三位数字的数字或变量,表示输出长度如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT,定位输出:行,SKIP语法SKIPn|TOLINEline.SKIPN以当前行为基,向下跳转N行。若N无指定,则默认值为1。SKIPTOLINEline跳转至指定行。,格式化选项,对WRITE语句,可以使用不同的格式化选项。语法WRITE.所有数据类型的格式化选项选项用途LEFT-JUSTIFIED输出左对齐。CENTERED输出居中。RIGHT-JUSTIFIED输出右对齐。UNDER输出直接开始于字段下。NO-GAP忽略字段后的空格。USINGEDITMASK指定格式模板。USINGNOEDITMASK撤消对ABAP/4词典中指定的格式模板的激活。NO-ZERO如果字段仅包含零,则用空格代替它们。对类型C和N字段,将自动代替前导零。COLOR输出字段填充颜色。,ABAP屏幕输出,DATA:G(5)VALUEHello,F(5)VALUEDolly.WRITE:G,F.HelloDollyWRITE:/10G,Hello/FUNDERG.DollyWRITE:/GNO-GAP,F.HelloDollyDATATIMETYPETVALUE154633.WRITE:TIME,154633/(8)TIMEUSINGEDITMASK_:_:_.15:46:33WRITE:000123,000123/000123NO-ZERO.123DATAFLOATTYPEFVALUE123456789.0.WRITEFLOATEXPONENT3.1.23E+08DATAPACKTYPEPVALUE123.456DECIMALS3.WRITEPACKDECIMALS2.123.46WRITE:/PACKROUND-2,12,345.60/PACKROUND-1,1,234.56/PACKROUND1,12.346/PACKROUND2.1.235WRITE:SY-DATUM,06/27/1995/SY-DATUMYYMMDD.950627,初始化数据,语法CLEAR.该语句将数据对象的内容初始化,可以用CLEAR语句重置任何数据对象值。REFRESHitab.该语句将内表中的数据重置为初始值。,选择屏幕的制作,PARAMETERSCOL(11)TYPECdefaultHelloWorld.WRITE:10输出:,16COL.,选择屏幕(1),选择屏幕的制作,有两种方式parametersselect-optionsparameters:输入的参数值是单值select-options:输入的参数值是多值,也可以是一个范围,选择屏幕(2),TABLESafko.PARAMETERSaufnr2LIKEafko-aufnr.SELECT-OPTIONSaufnr1FORafko-aufnr.,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report,输入屏幕,TABLES:vbak.PARAMETERSvbelnLIKEvbak-vbeln.,定义变量,定义表头DATA:BEGINOFwa_head,vbelnLIKEvbak-vbeln,audatLIKEvbak-audat,kunnrLIKEvbak-kunnr,name1LIKEkna1-name1,ENDOFwa_head.定义行项目DATA:BEGINOFit_itemOCCURS0,vbelnLIKEvbap-vbeln,posnrLIKEvbap-posnr,matnrLIKEvbap-matnr,arktxLIKEvbap-arktx,kwmengLIKEvbap-kwmeng,meinsLIKEvbap-meins,netwrLIKEvbap-netwr,waerkLIKEvbap-waerk,ENDOFit_item.定义行数计数器DATAlineTYPEi.,数据选取,选取表头数据SELECTSINGLEvbelnaudatkunnrINTO(wa_head-vbeln,wa_head-audat,wa_head-kunnr)FROMvbakWHEREvbeln=vbeln.SELECTSINGLEname1INTOwa_head-name1FROMkna1WHEREkun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高生物细胞呼吸和光合作用专家讲座
- 2025年北辰面试题及答案
- 农业类教师笔试题及答案
- 农村中医笔试题及答案
- 脑病医院笔试题及答案
- 2025年工业水电智慧管理平台构建
- 2025年光学涡旋光束产生实验相位调制方法
- 基于大数据分析的高中化学个性化学习资源整合与适配研究教学研究课题报告
- 3.1外周神经系统概述(课件)-《药物学基础》同步教学(江苏大学出版社)
- 《金融产品创新与商业银行风险管理协同发展的风险防范策略研究》教学研究课题报告
- 2025初一英语期末复习知识点总结
- 十五五规划建议专题测试及答案
- 选举大会活动方案
- 心内科护士年度工作总结
- 百万医疗保险活动方案
- 2025-2026学年人教版九年级物理《电阻的测量》教学设计
- DB2101∕T 0006-2018 聚丙烯纤维混凝土生产与应用技术规程
- 淤地坝安全管理培训课件
- 初中重点化学方程式每日一练小纸条【答案】
- 大一英语期末考试及答案
- 铝板外墙施工课件
评论
0/150
提交评论