ABAP开发基础基础内表select语句问题.pptx

上传人:莉*** 文档编号:87537576 上传时间:2023-04-16 格式:PPTX 页数:61 大小:777.64KB
返回 下载 相关 举报
ABAP开发基础基础内表select语句问题.pptx_第1页
第1页 / 共61页
ABAP开发基础基础内表select语句问题.pptx_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《ABAP开发基础基础内表select语句问题.pptx》由会员分享,可在线阅读,更多相关《ABAP开发基础基础内表select语句问题.pptx(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单销售订单reportreport第1页/共61页最简单的Report(1)一个经典的入门例子通常在程序执行前,需要做以下三件事:1、对所写的代码进行语法检查,避免明显的语法错误。2、保存程序;在程序激活过程中,SAP也会自动对程序进行保存3、激活程序;在SAP中没有激活的程序是不能进行最终使用的。上例最终运行结果如下:第2页/共61页最简单的Report(2)report在ABAP程序中,以report或者program指令开头的程序才

2、能直接运行;其他指令的程序均不可以直接运行。Report程序里,程序的属性类型那需选择“可执行程序”第3页/共61页一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单销售订单reportreport第4页/共61页基本数据类型在ABAP中,基本的数据类型有八种字符型:lC(文本字符)lN(数字文本字符)lT(时间类型)lD(日期类型)数字类型:lI(整数类型)lF(浮点类型)lP(压缩数)lX(十六进制)另,ABAP还提供对字符串的支持,数据类型为string。第5页/共61页基本数据

3、类型列表数据类型默认大小有效大小初始值说明示例C1165535SPACE文本字符文本字符(串串)NAMEN116553500.0数字文本数字文本0123T66000000时间时间(HHMMSS)193000D8800000000日期日期(YYYYMMDD)20080808I440整型(整数)整型(整数)99F880浮点数浮点数5E+4P810压缩数压缩数99.99X1165535X0十六进制十六进制3Astring1无限定无限定SPACE字符串字符串(长度可变)(长度可变)AString第6页/共61页定义变量(1)定义字段 DATACOLTYPEC.定义行(工作区)DATA:BEGINOFW

4、A,COLTYPEC,ENDOFWA.定义内表DATA:BEGINOFITABOCCURS0,COLTYPEC,ENDOFITAB.第7页/共61页定义变量(2)ABAP中对变量的定义有两种方式:DATA根据内置类型声明基本类型数据对象。TYPES根据内置类型自定义基本数据类型。第8页/共61页定义变量(3)TYPESnumTYPEi.DATAnum1TYPEnum.第9页/共61页算术运算ABAP中,基本的算术运算有这么几种。(+、-、*、/、DIV、MOD、*)前四种运算意义明确,不再做过多累述。现在,来看看后三种运算。DIV整除除法时,如果除不尽,只取商的整数部分。MOD取余除法时,如果

5、除不尽,只取商的余数部分。*乘方*是做乘法运算;*则是乘方(即幂运算)。例:6 DIV 4=1;6 MOD 4=2.1 *2=2;1 *2=1.第10页/共61页字符数据处理(1)1)concatenate将两个字符串合并成一个字符串。2)split将一个字符串拆分成多个字符串。3)search在字符内查找指定字符串4)replace用其他字符串在字符内替换指定字符串。5)strlen用于确定字符实际长度。6)condense用于清除字符内多余的空格。PS:字符串:字符串string也也是字符的一种。和其是字符的一种。和其他字符类型的区别在他字符类型的区别在于,于,string在定义时,在定义

6、时,不需要指定字符长度不需要指定字符长度,其字符长度会随着,其字符长度会随着存放数据长度的增加存放数据长度的增加自动扩展。自动扩展。第11页/共61页字符数据处理(2)第12页/共61页结构语句分支控制IFELSEIFELSEENDIFCASEfWHENf1WHENf2ENDCASE循环控制DOnTIMESENDDOWHILEENDWHILE第13页/共61页一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单销售订单reportreport第14页/共61页内表(1)除了数据库表格,还

7、可以创建仅在程序运行时间内存在的内表。ABAP/4提供了针对内表的不同操作。例如,可以搜索、附加、插入或删除行。内表中的行数并不固定。根据需求,系统可实时增加内表的大小。例如,如果想将某个数据库表格读入内表,不必事先知道数据库表格的大小。第15页/共61页内表(2)内表的另一种用处是根据程序需要重新组织数据库表格的内容。例如,可以从一个或多个大客户表格特定的数据中将与创建电话清单有关的数据读入内表中。然后可在程序运行期间直接访问该清单,而不用每次调用时都执行耗时的数据库查询。第16页/共61页内表的操作:插入APPENDDATA:BEGINOFITABOCCURS0,COL1TYPEI,COL

8、2TYPEI,ENDOFITAB.ITAB-COL1=1.ITAB-COL2=2.APPENDITAB.INSERTDATALINELIKEITAB.LINE-COL1=3.LINE-COL2=4.INSERTLINEINTOITABINDEX1.数据只能附于内表最后一行数据可以插入内表任意位置第17页/共61页内表的操作:修改MODIFYLOOPAT ITABWHERECOL1=1.ITAB-COL1=5.MODIFYITAB.ENDLOOP.MODIFY前MODIFY后第18页/共61页内表的操作:循环读取LOOP使用LOOP语句逐行读取内表。要将内表逐行读入工作区域,可以使用LOOP语句

9、编一个循环。语法如下所示:LOOPAT INTOFROMTOWHERE.ENDLOOP.第19页/共61页内表的操作:删除DELETEDELETEitabWHEREcol1=1.删除前删除后第20页/共61页内表的操作:COLLECTCOLLECT 聚集附加操作时,系统将检查工作区中的标准关键字段值与已存在于内表中的数据行是否相(所有非数字字段)。如果不同,COLLECT语句的作用与APPEND语句相似,将新行附加至内表末尾;如果存在相同表关键字值的行,COLLECT语句不附加新行,而是将工作区中数字字段的内容累加到已有数据行中。LH04003.9DL169924.5LH04005.7LH04

10、0236.5DL169924.5LH04005.7LH040236.5LH04003.9CARRCONNUMSATZCARRCONNUMSATZAPPENDTOCOLLECTTO9.6第21页/共61页内表的操作:SUMSUM该语句只能在LOOP/ENDLOOP块内部使用。如果在AT/ENDAT块中使用SUM,则系统计算当前行组内部所有行的数字字段之和并将其写入目标区域中相应的字段;如果在AT/ENDAT块之外使用SUM语句,则系统计算所有循环过程中(已循环和将要循环的)内表行的数字字段之和并将其写入工作区域中相应的字段。所以,在AT/ENDAT块之外使用SUM语句一般是无意义的。第22页/共

11、61页内表的操作:ATATlevelENDAT.该语句只能在LOOP语句内使用,其中行条件level有下列选项:FIRST当前循环为内表的第一行,即当第一次循环操作时,系统会执行控制块语句LAST当循环为内表最后一行。NEWf行组的开头,行组指的是字段f和f前面(即左边)的全部字段,如果行组中的内容不同于上一行,执行语句块中的内容。ENDOFf行组的结尾,如果下一行行组中的任何字段内容不同于上一行,执行语句块中的内容。第23页/共61页一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单

12、销售订单reportreport第24页/共61页Select语句SELECTSELECTresultFROMsourceINTO|APPENDINGtargetFORALLENTRIESINitabWHEREsql_condGROUPBYgroupHAVINGgroup_condORDERBYsort_key.第25页/共61页数据选取(1)SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFTABLEseatsWHEREcarridBETWEENAAANDDLGROUPBYconnidcarridseatsoccHAV

13、INGcarridBETWEENAAANDDLORDERBYseatsocc.数据选取字段数据选取字段数据库表数据库表内表或工作区内表或工作区数据选取范围及输出格式数据选取范围及输出格式第26页/共61页数据选取(2)CARRIDCONNIDSEATSOCCCARRIDCONNIDSEATSOCCSEATSOCCCONNIDCARRIDCARRIDCONNIDSEATSOCCSELECTcarridconnidseatsoccFROMsflightINTOTABLEseatsSELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDS

14、OFTABLEseats数据库表内表第27页/共61页select single的使用COL1 COL2A1A2A3TABLEselectsingle选择第一个满足条件的值selectsinglecol2intoWAfromTABLEwherecol1=A.结果:COL2值为1。第28页/共61页表关联JOIN如果要选取相关联的两个或以上的表内的数据,则需要使用到JOIN。SELECTaaufnrbdfreiINTOCORRESPONDINGFIELDSOFTABLEitabFROMafkoASaJOINafpoASbONaaufnr=baufnr.第29页/共61页selectendsele

15、ct SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFTABLEseatsWHEREcarridBETWEENAAANDDLGROUPBYconnidcarridseatsoccHAVINGcarridBETWEENAAANDDLORDERBYseatsocc.SELECTcarridconnidseatsoccFROMsflightINTOCORRESPONDINGFIELDSOFseatsWHEREcarridBETWEENAAANDDLGROUPBYconnidcarridseatsoccHAVINGcarrid

16、BETWEENAAANDDLORDERBYseatsocc.APPENDseats.ENDSELECT.第30页/共61页一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单销售订单reportreport第31页/共61页字段查询(转账表)1事务代码:QS24显示主检验特性场景:需要用到字段主检验特性,却不知道主检验特性数据的存放处。第32页/共61页字段查询(转账表)2在主检验特性栏位按下F1第33页/共61页字段查询(转账表)3 QPMK是转账表,技术信息里表名和字段名称组合起来就

17、是主文件检验特性的存储位置。第34页/共61页字段查询(转账表)4第35页/共61页字段查询(结构)1这是通过QA33查询到的一笔检验批结果记录。假设,现在需要字段“检验的”的数据。第36页/共61页字段查询(结构)2 虽然,在技术信息的表名上写着QAQEE,实际上,QAQEE是一个结构。第37页/共61页字段查询(结构)3 如何确定结构中的字段存储的表?可以通过该字段的数据元素引用处来进行查询。第38页/共61页字段查询(结构)4 通过所用处清单来查找出现过数据元素QANZWERTG4的全部转账表。第39页/共61页字段查询(结构)5 通过所用处清单,还可以查找数据元素在更广泛的范围内的应用

18、。第40页/共61页字段查询(结构)6 查找结果,数据元素QANZWERTG4在两个表内有被引用。第41页/共61页字段查询(结构)7可以看到QAMR是转账表第42页/共61页一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单销售订单reportreport第43页/共61页输出控制:WRITEWRITE语句在屏幕上输出数据的基本ABAP语句是WRITE。在屏幕上,输出通常是左对齐的。如果使用几个WRITE语句,输出字段就一个接一个显示,输出之间由列分开(如一个空格)。如果当前行没有足

19、够空间,则开始新行。第44页/共61页对齐格式(1)输出屏幕上的数据字段格式,依赖数据类型。预定义数据类型的输出格式数据类型输出长度定位C字段长度左对齐D8左对齐F22右对齐I11右对齐N字段长度左对齐P2*字段长度(1)右对齐T6左对齐X2*字段长度左对齐数字数据类型F、I和P是右对齐的,左边用空格填充。如果有足够的空间,也输出千位分隔符。如果类型P字段包含小数位,则默认输出长度增加一位。对数据类型D,日期的内部格式与输出格式不同。当输出数据使用WRITE语句时,系统自动以用户主记录中指定的格式(例如,DD/MM/YYYY),输出数据类型D。第45页/共61页对齐格式(2)REPORTSAP

20、MTEST.DATANUMBERTYPEPVALUE-1234567.89DECIMALS2.WRITE:Number,NUMBER,ispacked.输出如下:Number1,234,567.89-ispacked字段NUMBER总长为13,即,9位数字(包括小数点)、前导负号和作为分隔符的两个逗号。因为类型P字段的字段长度为8,所以NUMBER字段的输出长度为2*8+1=17。剩余的位置用四个空格填充。这意味着,在文字Number和数字自身之间有五个空格。第46页/共61页定位输出:列在屏幕上定位WRITE输出如下所示,通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:

21、语法语法WRITEAT/().此处斜线/表示新的一行是最长为三位数字的数字或变量,表示在屏幕上的位置是最长为三位数字的数字或变量,表示输出长度如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT第47页/共61页定位输出:行SKIP语法SKIPn|TOLINEline.SKIPN以当前行为基,向下跳转N行。若N无指定,则默认值为1。SKIPTOLINEline跳转至指定行。第48页/共61页格式化选项对WRITE语句,可以使用不同的格式化选项。语法WRITE.所有数据类型的格式化选项选项用途LEFT-JUSTIFIED输出左对齐。CENTERED输出居中。RIGHT-JUSTIFIED

22、输出右对齐。UNDER输出直接开始于字段下。NO-GAP忽略字段后的空格。USINGEDITMASK指定格式模板。USINGNOEDITMASK 撤消对ABAP/4词典中指定的格式模板的激活。NO-ZERO如果字段仅包含零,则用空格代替它们。对类型C和N字段,将自动代替前导零。COLOR输出字段填充颜色。第49页/共61页ABAP屏幕输出DATA:G(5)VALUEHello,F(5)VALUEDolly.WRITE:G,F.HelloDollyWRITE:/10G,Hello/FUNDERG.DollyWRITE:/GNO-GAP,F.HelloDollyDATATIMETYPETVALUE

23、154633.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.235W

24、RITE:SY-DATUM,06/27/1995/SY-DATUMYYMMDD.950627第50页/共61页初始化数据语法CLEAR.该语句将数据对象的内容初始化,可以用CLEAR语句重置任何数据对象值。REFRESHitab.该语句将内表中的数据重置为初始值。第51页/共61页选择屏幕的制作PARAMETERSCOL(11)TYPECdefaultHelloWorld.WRITE:10 输出:,16 COL.第52页/共61页选择屏幕(1)选择屏幕的制作,有两种方式parametersselect-optionsparameters:输入的参数值是单值select-options:输入的参

25、数值是多值,也可以是一个范围第53页/共61页选择屏幕(2)TABLESafko.PARAMETERSaufnr2LIKEafko-aufnr.SELECT-OPTIONSaufnr1FORafko-aufnr.第54页/共61页一个简单的例子一个简单的例子ABAPABAP基础基础内表的应用内表的应用selectselect数据选取数据选取数据库表查询数据库表查询输入输出输入输出销售订单销售订单reportreport第55页/共61页输入屏幕TABLES:vbak.PARAMETERSvbelnLIKEvbak-vbeln.第56页/共61页定义变量定义表头DATA:BEGINOFwa_he

26、ad,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_it

27、em.定义行数计数器DATAlineTYPEi.第57页/共61页数据选取选取表头数据SELECTSINGLEvbelnaudatkunnrINTO(wa_head-vbeln,wa_head-audat,wa_head-kunnr)FROMvbakWHEREvbeln=vbeln.SELECTSINGLEname1INTOwa_head-name1FROMkna1WHEREkunnr=wa_head-kunnr.选取行项目数据SELECTvbelnposnrmatnrarktxkwmengmeinsnetwrwaerkINTOCORRESPONDINGFIELDSOFTABLEit_item

28、FROMvbapWHEREvbeln=vbeln.第58页/共61页屏幕输出DESCRIBETABLE it_itemLINESline.获取内表行数,设置行计数器输出表头WRITE66销售订单CENTERED.WRITE:/30.WRITE:/30,32销售凭证号:,44wa_head-vbelnNO-ZERO,88凭证日期:,98wa_head-audat,108.WRITE:/30.WRITE:/30,32售达方:,40wa_head-kunnrRIGHT-JUSTIFIEDNO-ZERO,50wa_head-name1,108.WRITE:/30.输出行项目SKIP2.WRITE:/8

29、.WRITE:/8,10行项目,18,20物料号,38,40物料描述,80,96数量,100,102单位,106,122净价,128,130币制,134.LOOPAT it_itemWHEREvbeln=wa_head-vbeln.IFline0.WRITE:/8.line=line-1.ENDIF.WRITE:/8,10it_item-posnrNO-ZERO,18,20it_item-matnr,38,40it_item-arktx(20),80,82it_item-kwmengDECIMALS2,100,102it_item-meins,106,108it_item-netwrDECIMALS2,128,130it_item-waerk,134.ENDLOOP.WRITE:/8.第59页/共61页销售表单第60页/共61页谢谢大家观赏!第61页/共61页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com