




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAP ABAP语法示例调试1调试密钥跳过L F8后面的所有断点,程序运行完成2外部、会话、调试断点调试断点-在debug中输入断点后,程序将远程消失会话断点-在程序运行之前通过会话断点按钮停止点在同一登录会话的其他窗口中有效,并且在用户注销后消失外部断点-在程序运行之前通过外部断点按钮运行的断点。用户注销并重新登录后有效,但仅对同一用户有效Select选择从intowheregroup byhavingorder by。GROUP BY:用于将数据集压缩为单行,以选择最终结果。HAVING:用于限制ORDER BY子句数据项组的选择条件。ORDER BY:用于限制行排序。SELECT完整语法结构。示例:在上例中,在期间JR01的20170503至20170510中,按销售订单以升序查询销售订单大于50的单据的订单编号、创建日期、创建者、类型和总销售。需要强调的是,如果要使用SUM、MAX、MIN等函数,则必须通过GROUP BY对其他字段进行分组。需要继续使用函数的条件筛选时,可以使用关键字HAVING。ORDER BY关键字决定查询结果的排序方式,ASCENDING为升序,DESCENDING为降序。1 SELECT SINGLE单行数据:选择SELECT SINGLE INTO FROM.如果系统找到与指定条件完全匹配的行,则SY-SUBRC返回0,否则返回4。通常,在SELECT之后使用“*”符号(而不是表示所有字段),如果指定了多个数据对象,则必须将对象放在括号中并用逗号分隔,并且其顺序必须与SELECT子句中指定的表字段的顺序匹配。这是结构上的非内部表格。示例:TABLES:sflight。DATA:sumTYPEiVALUE0。selectsinglesum(seats OCC)into sumfromsflightwherecarrid=LH。WRITE:/sum。以上实现的是航线为LH的座位总数。区分以下代码时,上面的代码仅导出一行,下面的代码输出多行:2 SELECT/ENDSELECT周期通过SELECT/ENDSELECT循环从数据库中读取多行。SELECT DISTINCT.ENDSELECT。注意:使用DISTINCT自动删除重复行。SY-DBCNT(系统字段)是每个循环的数量。示例:使用Distinct实现的效果与使用select single一样,建议使用select single语句。3单个选择.INTO一次选择一个内部表中的数据。So | appendingcorresponding fields oftable itab。在这种情况下,不需要使用ENDSELECT语句,因为SELECT不会启动循环。如果Itab不为空,则SELECT语句将使用读取的数据复盖内容,并且不使用APPENDING代替INTO复盖内部表,如果结构不相同,则可以使用CORRESPONDING FIELDS选项匹配同名区域。SQL编写注意事项-性能实例1直接内部表操作优先请勿在尽可能频繁地重复的循环语句中使用诸如Updateinsertdeletemodify之类的操作。也就是说,不能通过工作内部表尽可能地通过工作区直接实现。示例:2 select into table比select好.appendtable.end select指定内部表格的值时,请选取.appendtable.使用select . into . table代替end select。尽可能用内部表操作替换数据库的操作。示例:DATA: BEGIN OF it_mara OCCURS 0、Matnr LIKE mara-matnr、Maktx LIKE makt-maktx、END OF it_mara。第一句话:选择matnrINTO it_mara来自Mara。APPEND it_mara。ENDSelect。第二句话(高性能):选择matnrINTO TABLE it_mara来自Mara。使用3 for all entries不建议使用Loop at int_cntryselect single * from ZF ligh into int _ f ligh where cntry=int _ cntry-cntry。Append int _ f ligh。Endloop。受到推荐select * from ZF ligh appending table int _ f lighFor all entries in int_cntryWhere cntry=int_cntry-cntry。内部表可用于存档多个数据。OPEN SQL可以将内部表数据用作查询条件,从而更容易地筛选查询数据。相关语法如下:Select from for all entried in where.请注意,在FOR ALL ENTRIED IN itab之前,itab表是否为空,如果为空,则不执行查询,否则将查询所有非协调限制数据。范例1:CHECKLT_MKPFISNOTINITIAL。*IFP_MATNRISNOTINITIAL。selectmblnrzeilemjahrbwartwerksmatnrmagehkgfrommsegintocorrespondingfieldoftablet _ msegFORALLENTRIESINLT_MKPFWHEREMBLNR=LT_MKPF-MBLNRAndMJAHR=LT_MKPF-MJAHRAndWERKSINP_WERKSANDMATNRINP_MATNRANDBWARTINP_BWART。*ENDIF。范例2:DATA: BEGIN OF it_mara OCCURS 0、Matnr LIKE mara-matnr、Maktx LIKE makt-maktx、END OF it_mara。DATA: BEGIN OF it_makt OCCURS 0、Matnr LIKE mara-matnr、Maktx LIKE makt-maktx、END OF it_makt。第一句话:(需要定义it_mara)select matnr into table it _ Mara from Mara。LOOP AT it_mara。select single maktx into it _ Mara-makt中的maktwhere matnr=it _ Mara-matnr and spras=sy-langu。Modify it _ Mara transporting maktx。*仅修改maktx字段ENDLOOP。第二个词组(需要定义it _ Mara mait _ makt): high performaceselect matnr into table it _ Mara from Mara。select matnr maktx into table it _ makt from maktFOR ALL ENTRIES IN it_marawhere matnr=it _ Mara-matnr and spras=sy-langu。4 where.in.对于具有OR条件等判断的语句,请尽可能改用IN。5 where条件尽量不要在L Where语句中使用。以模糊的条件(如“”)进行查询。使用L CHECK语句替换为where语句,而不要对table执行条件查询。合并6 Join语句在多个表数据查询中,应尽量使用联接语句,并选择数据量最小的表作为基表,以避免对两个以上的表进行相关联接查询。7 select single查询单个语句时,如果可能,请使用select single语句,然后使用select.不要使用end select语句。8 Up to n rows使用Up to n rows语法实现对数据前n项的查询。9 Select字段尽可能具体代替Select *选择f1 f2 .使用字段。10利用函数充分利用系统提供的标准函数,如Max、min、avg、sum、count。示例(使用max聚合函数):不建议使用Maxnu=0。select * from ZF light where air ln= lf and cntry= in 。Check zflight-fligh maxnu。Maxnu=zflight-fligh。Endselect。受到推荐select max(f ligh)from ZF light into max nu where air ln= lf and cntry= in 。使用INTO table代替11 select endselect不建议使用Refresh: int_fligh。select * from ZF light into int _ f ligh。Appendint _ fligh.clear int _ f ligh。Endselect。受到推荐Refresh: int_fligh。select * from ZF light into table int _ f ligh。桌子1 RANGE TABLERange Table是与Selection Table(由SIGN、OPTION、LOW和HIGH字段组成)匹配的SAP R/3系统标准内部表的一种类型。可以通过TYPE RANGE OF语句或RANGES关键字定义Range Table。1) type range of.data rtab type range of type | like range of dobj INITIAL SIZE nWITH HEADER LINEVALUE IS INITIALREAD-ONLY。示例:2) RANGES语法:RANGES rtab FOR dobj OCCURS n。示例:在两个内部表之间分配L Itab1=itab2示例:Tables:zcustom,scustom。datat 1 _ zcfustometypestandardtabofzcfustomewithheagline。datat 2 _ zcfustomelikestandardtablesofzcfustomewithrerline。select * fromscustomintcorrespondingfieldoftablet 1 _ zcustom。T2_zcustom=t1_zcustom。l append lines of itab 2 to itab 1(itab 2 to itab 1)Itab2 to itab1也可以通过LOOP语句在内部表之间循环来实现。范例1:Loopatt1_zcustom。Appendt1_zcustomtot2_zcustom。或appendlinesoft 1 _ zcustomtot 2 _ zcustom。Endloop。虽然上述LOOP循环可以逐行添加内部表,但是建议使用批量增量,而不是逐行添加。不建议使用Loop at int_fligh1。Append int_fligh1 to int_fligh2。Endloop。受到推荐append lines of int _ f ligh 1 to int _ f ligh 2。范例2:data : begin of it _ makt/it _ Mara occurs 0、.ENDOF it_makt/it_mara。selectmatnrmmaktxfommaktinttablerit _ maktwherespras=sy-langu。Appendlinesofit _ makttoit _ mara。-是的-是的TABLES:MARA。datalt _ maralikestandardtableofmarawithheadline。datalt 2 _ maraliketabl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年保安考试问卷及答案
- 2025年安全生产主要负责人考试题及答案
- 2025年大学秘书考试试题及答案
- 光博会展览搭建施工方案
- 混凝土工地施工方案范本
- 2025员工的合同协议范本
- 2025年制劳务合同期限将至
- 退股谈判方案范本
- 土工膜铺设专项施工方案
- 儿童保健家长试题及答案
- 2025年杭州上城区总工会公开招聘工会社会工作者9人笔试参考题库附答案解析
- 2025年互联网+特殊教育行业研究报告及未来发展趋势预测
- 医院信息安全保密培训课件
- 文化人类学课件完整版
- 碳达峰碳中和产业发展调研报告
- 《海洋学》第二章 地球及海洋概观
- GH/T 1091-2014代用茶
- GB/T 12642-2013工业机器人性能规范及其试验方法
- ESG专题研究报告
- 【初中历史】商鞅变法优秀课件31-川教版
- 食品质量与安全管理概述课件
评论
0/150
提交评论