ABAP的常用知识点
ABAP基础重要知识学习点

ABAP基础重要知识学习点ABAP(Advanced Business Application Programming)是一种高级商务应用程序编程语言,主要用于SAP软件的开发和定制。
在学习ABAP的过程中,有一些基础的重要知识点需要掌握。
1. ABAP语法:了解ABAP语言的基本语法规则是学习ABAP的第一步。
学习如何声明变量、定义函数和方法、控制语句以及数据类型等基础知识,能够帮助开发人员编写有效的ABAP代码。
2. ABAP数据字典:ABAP数据字典是用于管理数据和定义数据库对象的工具。
掌握如何创建表格、视图、数据元素和数据类型等数据字典对象,能够帮助开发人员有效地存储和管理数据。
3. ABAP程序设计:学习如何设计和编写ABAP程序是成为一名合格ABAP开发人员的关键。
了解程序的模块化设计和封装原则,掌握ABAP的面向对象编程概念,能够开发出可重用和可维护的ABAP程序。
4. ABAP调试和错误处理:调试是开发中解决问题的重要工具。
学习如何使用ABAP调试器来跟踪代码的执行,并通过断点和监视表达式来诊断问题。
同时,掌握如何处理ABAP程序中的错误和异常情况,能够提高程序的可靠性和稳定性。
5. ABAP性能优化:在开发过程中,优化ABAP程序的性能是一个重要的考虑因素。
学习如何使用ABAP运行时分析工具来分析程序的性能瓶颈,并针对性地进行性能优化,能够提高程序的执行效率和响应速度。
6. ABAP Web Dynpro:ABAP Web Dynpro是一种用于开发SAP Web应用程序的框架。
学习如何使用ABAP Web Dynpro来设计和开发用户友好的Web界面,包括表格、输入字段和按钮等交互元素,能够满足用户对于功能和界面的需求。
总的来说,掌握ABAP的基础重要知识点是成为一名合格的ABAP开发人员的基础。
通过系统地学习和实践,可以逐步提升自己的编程能力,并为SAP软件的开发和定制提供有力的支持。
ABAP入门知识最全总结新人小白必备学习资料

SAP系统与ABAP关系
01
SAP系统是一款广泛应用于企业 资源计划(ERP)、供应链管理 (SCM)、客户关系管理 (CRM)等领域的软件产品。
02
ABAP是SAP系统的开发语言, 用于编写SAP系统中的业务逻辑、 数据处理和报表生成等功能。
调试日志
在调试过程中,可以开启调试日 志功能,记录程序执行过程中的 详细信息和操作步骤。这对于复 杂问题的排查和分析非常有帮助。
08
实战案例分析与经验分 享
案例一:简单报表开发实例
报表需求分析与设计
明确报表目的、数据源和输出格式,设计报 表布局和字段。
ABAP报表开发流程
创建报表程序,定义数据源和选择条件,编 写报表逻辑和输出处理。
根据实际需求设置报表的输出格式, 如PDF、Excel、Word等。
格式调整
调整报表的页面设置、边距、字体、 颜色等,确保报表输出的美观和易读 性。
报表性能优化策略
数据源优化
优化数据库查询语句,减少数据冗余和提高查询 效率。
报表缓存
合理利用报表缓存机制,减少重复计算和数据库 访问次数。
分页处理
对于大量数据的报表,采用分页处理技术,提高 报表加载速度和用户体验。
Eclipse与SAP系统连接
配置Eclipse连接参数,连接到SAP系统,实现ABAP代码的上传、下载和执行等操作。
其他辅助工具推荐
SAP Notepad
一款轻量级的文本编辑器,支持ABAP语法高亮显示和代 码折叠等功能,适合编写简单的ABAP程序。
ABAP Doc
ABAP学习笔记

ABAP笔记1. ABAP(Advanced Business Application Programming):是一种易于访问数据库的高级开发语言。
它以开发报表为主,主要用于开发符合项目及运维人员要求的CBO(Customer Bolt On,客户自己追加开发的)程序。
之所以说它是一种高级语言,是因为ABAP语言不仅能从数据库中取出简单的数据,而且首次出现了程序和数据库逻辑清晰结合的上层数据库结构(LDB).2.SAP方法论(流程):项目准备(要件定义)、蓝图设计(基本设计和详细设计)、系统实现(实施开发,运用ABAP语言)、最后准备(程序测试和数据导入)、上线支持(运维和人员培训)。
3.SAP经典三层架构:一台数据库服务器(RDBMS)、一台或多台应用软件服务器以及任意数量的呈现服务器(前端客户)。
(1)呈现服务器:展示在屏幕上,所有的系统反馈以及操作指令都在展示层上呈现。
指令发给应用服务器。
(2)应用服务器:所有的业务层都在应用服务器上,是SAP程序实际执行的应用层,是ABAP的操作基础。
(3)数据库:应用服务器产生的数据都存储在关系数据库中。
系统在程序开始后,会把所有程序上下文(即相关应用环境)从知识库中读到应用服务器上。
包括:存储变量和复杂对象的内存区,用户会话的屏幕信息,ABAP程序块等。
4.ABAP常用工具:ALV、smartform、dialog、5.SAP界面简洁:菜单栏、标准工具栏(有命令域、后退、保存)、标题、应用工具栏(各种功能按钮)。
6.查找某一个T-CODE的路径的事务代码:SEARCH_SAP_MENU7.SE80对象导航器,可以查询/创建package/程序/本地对象等,SE38编辑/修改程序、程序属性等,SE91消息维护与查询,8.SAP每完成一步都会有消息提示,在系统中消息有四个要素:语言代码、消息类、消息序列号、消息文本。
程序中消息类型共有6种:A(异常,终止当前事务)、E(错误,需要重新输入正确的内容才可进行后续操作)、I(信息提示框,回车后可以继续处理)、S(成功,)、W(警告,可更改内容或者直接回车)、X(系统错误,荡机时出现)。
一些ABAP编程的知识点整理

一些ABAP编程的知识点整理【设置SAP打印机SET_PRINT_PARAMETERS】根据画面输入的打印机名称,在打印窗口弹出后,把打印设备自动设置为打印机名称参数对应的打印设备*&---------------------------------------------------------------------**& Form FRM_SET_PRINT_PARAMETERS*&---------------------------------------------------------------------** 報嶞偺僷儔儊乕僞偺愝掕*----------------------------------------------------------------------*FORM. FRM_SET_PRINT_PARAMETERS.DATA: LC_PDEST TYPE PRI_PARAMS-PDEST,LSTR_TSP03L TYPE TSP03L.* 在TSP03L设备表中找到打印机名称画面参数P_PRTID对应的打印设备PADEST* SELECT SINGLE ** INTO LSTR_TSP03L* FROM TSP03L* WHERE LNAME = P_PRTID.* IF SY-SUBRC EQ 0.* LC_PDEST = LSTR_TSP03L-PADEST.* ENDIF.* 把取道的打印设备PADEST设置到打印窗口项目中CALL FUNCTION 'SET_PRINT_PARAMETERS'EXPORTINGDESTINATION = LC_PDESTIMMEDIATELY = CNS_X.ENDFORM. "FRM_SET_PRINT_PARAMETERS【把内表以CSV文件格式输出】* 通过文件保存对话框得到需要保存文件的全路径LC_FULLPATH CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG* EXPORTINGCHANGINGFILENAME = LC_FILENAMEPATH = LC_PATHFULLPATH = LC_FULLPATHEXCEPTIONSCNTL_ERROR = 1ERROR_NO_GUI = 2NOT_SUPPORTED_BY_GUI = 3others = 4.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.IF LC_FILENAME IS NOT INITIAL.* 这个function是关键所在,可以把一个内表的一行的所有字段用‘;’分割,然后整合成一个string放到目标内表中LITAB_CON_LIST3CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'EXPORTINGI_FIELD_SEPERATOR = CNS_COMMATABLESI_TAB_SAP_DATA = GITAB_LIST3CHANGINGI_TAB_CONVERTED_DATA = LITAB_CON_LIST3EXCEPTIONSCONVERSION_FAILED = 1OTHERS = 2.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.* 可在此目标内表的头部加上必要的headerCONCATENATE TEXT-009 "姩掕壢栚TEXT-010 "姩掕壢栚柤TEXT-011 "婡擻椞堟柤TEXT-012 "慜寧孞墇TEXT-013 "庁曽嬥妟TEXT-014 "戄曽嬥妟TEXT-015 "梻寧孞墇INTO LC_HEADERSEPARATED BY CNS_COMMA.INSERT LC_HEADER INTO LITAB_CON_LIST3 INDEX 1.* 拿到全路径之后,直接download就okCALL FUNCTION 'GUI_DOWNLOAD'EXPORTINGFILENAME = LC_FULLPATHTABLESDATA_TAB = LITAB_CON_LIST3.ENDFORM. " FRM_FILE_DOWNLOAD【如何动态指派数字字段名assign】比如有12个字段,HSL01,HSL02,HSL03,HSL04,HSL05一直到HSL12如果我在选择画面上指定要累加04~08之间的字段,那assign就可以派上用场了由于和指针的作用类同,所以下面就叫它指针1.定义指针FIELD-SYMBOLS TYPE FAGLFLEXT-HSL01.2.使用方法:定义另一个lc_p指针数据,通过do循环的sy-index 进行一条条遍历这里比较重要的是要严格控制好选择画面上low值和high值对lc_p指针的界限DO.IF S_MONAT-HIGH IS NOT INITIAL.LC_P = S_MONAT-LOW + SY-INDEX - 1.IF LC_P > S_MONAT-HIGH.EXIT.ENDIF.ELSE.LC_P = S_MONAT-LOW.IF SY-INDEX = 2.EXIT.ENDIF.ENDIF.WRITE LC_P TO LC_NUM.PERFORM. FRM_CONVERT_ALPHA_INPUT CHANGING LC_NUM.CONCATENATE LC_NAME LC_NUM INTO LC_FIELD.ASSIGN (LC_FIELD) TO .IF LSTR_DATA3-DRCRK = CNS_S.LC_SSUM = LC_SSUM + .IF LSTR_DATA3-DRCRK = CNS_H.= * ( -1 ) .LC_HSUM = LC_HSUM + .ENDIF.CLEAR LC_FIELD.ENDDO.【range table 的最新定义方法】跟旧版本的ECC的range定义方法不同,现在改用如下的定义方法:R_RACCT2 TYPE RANGE OF CHAR2,R_RACCT3 TYPE RANGE OF CHAR3,R_RACCT31 TYPE RANGE OF CHAR3,LSTR_RACCT2 LIKE LINE OF R_RACCT2,LSTR_RACCT3 LIKE LINE OF R_RACCT3,LSTR_RACCT31 LIKE LINE OF R_RACCT31.* 儗儞僕42乣49LSTR_RACCT2-SIGN = CNS_I.LSTR_RACCT2-OPTION = CNS_BT.LSTR_RACCT2-LOW = CNS_42.LSTR_RACCT2-HIGH = CNS_49.APPEND LSTR_RACCT2 TO R_RACCT2.* 儗儞僕000乣512LSTR_RACCT3-SIGN = CNS_I.LSTR_RACCT3-OPTION = CNS_BT.LSTR_RACCT3-LOW = CNS_000.LSTR_RACCT3-HIGH = CNS_512.APPEND LSTR_RACCT3 TO R_RACCT3.* 儗儞僕522乣999LSTR_RACCT31-SIGN = CNS_I.LSTR_RACCT31-OPTION = CNS_BT.LSTR_RACCT31-LOW = CNS_522.LSTR_RACCT31-HIGH = CNS_999.APPEND LSTR_RACCT31 TO R_RACCT31.【如何在标准一览画面上加上自己的系统按钮】可以在top-of-page或者start-of-selection事件中定义:SET PF-STATUS 'ZS01'.这里的'ZS01'是自己定义的,双击它进去后就别有洞天了,可以自己定义系统按钮已经各种快捷键如果要选择标准的一览出力画面,首先进入菜单:補足->テンプレート调整在弹出的窗口中选择“一览ステータス”基本的关于一览的系统按钮都有了然后自己添加需要的按钮,在GUI模块中,找一个空白的输入框中输入该按钮的parameter ID,这个ID是在程序中用到的。
abap开发知识点

ABAP开发知识点ABAP(Advanced Business Application Programming)是SAP系统中的编程语言,主要用于开发和定制SAP应用程序。
在本文中,我们将介绍ABAP开发的一些重要知识点。
一、ABAP语言基础1.数据类型:ABAP支持多种数据类型,包括整数、浮点数、字符型、日期型等。
了解不同数据类型的使用方法和限制是编写高效代码的关键。
2.变量和常量:在ABAP中,我们可以使用DATA语句定义变量,并使用CONSTANTS语句定义常量。
熟悉变量和常量的使用方式可以提高代码的可读性和维护性。
3.控制结构:ABAP提供了多种控制结构,如IF语句、CASE语句和循环语句等。
掌握这些控制结构的使用方法可以实现条件判断和循环操作。
二、ABAP面向对象编程1.类和对象:ABAP支持面向对象编程,可以定义类和对象。
了解类的概念和对象的创建方式可以提高代码的可重用性和可维护性。
2.成员方法和属性:在ABAP类中,我们可以定义成员方法和属性。
掌握这些概念的使用方法可以实现类的封装和功能扩展。
3.继承和多态:ABAP支持继承和多态的特性。
熟悉这些特性的使用方式可以简化代码的编写,提高代码的可扩展性。
三、ABAP数据库访问1.数据库表的定义和操作:ABAP可以创建和操作数据库表。
了解数据库表的定义和操作方式可以实现数据的存储和检索。
2.SQL语句的使用:在ABAP中,我们可以使用SQL语句进行数据库操作。
熟悉SQL语句的使用方式可以实现复杂的数据查询和更新。
3.事务处理:ABAP支持事务处理的机制,可以保证对数据库的操作的一致性和完整性。
了解事务处理的使用方式可以避免数据错误和数据丢失。
四、ABAP调试和错误处理1.调试技巧:ABAP提供了调试工具,可以帮助我们查找和修复代码中的错误。
掌握调试技巧可以快速定位问题,并提高代码的质量。
2.异常处理:在ABAP中,我们可以使用TRY…CATCH语句来处理异常。
abap 主要知识点

abap 主要知识点ABAP(Advanced Business Application Programming)是一种用于开发企业级业务应用程序的编程语言,主要应用于SAP业务软件系统中。
ABAP主要用于实现和定制SAP ERP、SAP S/4HANA等企业资源规划系统。
以下是ABAP主要知识点:1.基本语法:ABAP的基本语法包括数据类型、变量、常量、运算符、流程控制、函数、过程、模块等。
2.数据结构:ABAP中常用的数据结构有数组、表格、链表、树形结构等。
3.界面设计:ABAP可用于设计用户界面,包括对话框、菜单、报表等。
4.数据库操作:ABAP支持对数据库的CRUD(创建、读取、更新、删除)操作,主要包括SQL语句、数据定义、数据存取等。
5.报表设计:ABAP具有强大的报表设计功能,可以创建各种复杂程度的报表,如分组报表、多级报表、交叉报表等。
6.常用ABAP组件:ABAP中有一些常用的组件,如逻辑块(ALV)、数据字典(DDIC)、报表框架(BDC)、界面事件(BEL)、用户自定义函数(FC)等。
7.企业对象组件(EPC):EPC是ABAP的一种企业级组件,用于实现业务过程的自动化。
8.工作流:ABAP支持工作流编程,可以实现业务流程的建模、调度和监控。
9.对象化编程:ABAP支持面向对象的编程,可以实现代码的复用和模块化。
10.接口技术:ABAP接口用于实现与其他系统(如HR、CRM等)的集成。
主要包括BAPI、BDC、IDoc等。
11.性能优化:ABAP程序的性能优化是开发者关注的重要议题,包括SQL优化、代码优化、内存管理等。
12.ABAP开发工具:常用的ABAP开发工具包括ABAP Workbench、SE80/SE81、SAP NetWeaver Developer Studio 等。
13.脚本语言:ABAP脚本语言(Scripting)用于实现与ABAP程序的交互和自动化。
ABAP 开发必背知识点

简称
描述
备注
Internal
Table
内表处理
CATT
计算机辅助测试工具
SCAT
BDC
批量数据处理程序
SHDB等
List
数据列表,报表输出使用
Selection
数据选择
Screen
屏幕设计
SE51
Menu
菜单绘制器
SE41
Form
单据打印
SE71
SmartForms
单据打印
SmartForms
SCC1
集团拷贝
SCC4
显示集团
SE09
运输组织者,查询传输请求
SE11
数据字典
SE16
数据浏览器
SE32
文本元素设定
程序或类,单击修改进入文本维护界面
SE36
逻辑数据器
SE37
函数据模块
SE38
ABAP编辑器
SE41
菜单制作器
SE51
屏幕制作器
SE55
生成表维护程序
4常用TCODE及描述2
TCODE
0
-231-1~231-1
P
8
1-16
0
根据长度和小数点位置而定
3常用TCODE及描述1
TCODE
描述ቤተ መጻሕፍቲ ባይዱ
备注
ABAPDOCU
ABAP文档和范例
BAPI
BAPI浏览器
CMOD/SMOD
系统增加
LSMW
数据导入工具
数据导入
PFCG
权限管理
SA38
程序执行
SCAT
计算机辅助测试工具,测试,数据导入等
ABAP基础知识整理

ABAP开发分为RICEF-WReport开发、Interface开发、Conversion 转换开发、Enhancement开发、Form开发、Workflow工作流开发。
Table: SE111. 建议Field中先定义Data element 不建议先定义field2. 特殊DataType:CLNT:Data element/Domain有MANDTCURR:小数位设定CUKY:Currency:Domain like WAERSDATS:日期 YYYYMMDD Domain like DATUMTIMS:时区管理 hhmmss Domain like UZEIT3. Delivery class A和CA - Application table 业务数据不会经常修改物料供应商客户C - Customizing table 会产生Transport RequestData browser/table view maint.Not allowed 和allowed区别4. Sigh 金额有关打钩支持正负号5. Lowercase 大小写区分6. Value range 取值限制男、女Single val。
单个取值Intervals 一段取值7. Text table 用在master table8. Append structure 只能用在一个地方Include structure 能用多次9. 创建表的时候:设置Technical Setting10. 设置Enhancement category for table missing:Extras - Enhancement category11. Table Maintenance Generator:se11->unitilies->table maintenance generator12. Fixed values——屏幕输入时检查Report:SE381. Tool bar:where-used list 这个程序被什么地方调用过2. Utility-more utility -edit pattern 用户、时间、用途等格式3. 不想让别的公司看到报表1.权限检查 2.select option4. Like [table]-[field] 后加search help,检查field-data element-..5. Type [data element] 后加search help,检查data element-…6. Goto - Text element - selection texts Dictionary打钩则p_name显示为nameLong7. 屏幕分块 Selection-screen begin of block 名字(四位)WITH FRAME TITLE text-002.8. file exist检查的message放在At selection screen 中Select-options 默认参数:1. MEMORY ID 就是在SAP内定义的一段内存区域,方便你从里边读出数据或者往里边写入数据你这里使用的MEMORY ID最明显的现象就是:你在选择画面上输入一个值后,该PARAMETER/SELECT-OPTIONS会将其设为默认值,当你退出程序再进入时,你会发现该PARAMETER/SELECT-OPTIONS保留了你上一次输入的值。
1.ABAP_Basic_Knowledge(基础知识)

ABAP基本语法主要内容:数据类型文本元素的概念和使用程序逻辑控制函数调用和返回目标:通过本次的学习,能够掌握ABAP 各种数据的声明,文本元素的使用,程序的逻辑控制语法,和功能函数的调用方法。
ABAP/4 中的数据类型使用数据时,了解数据类型是否兹容是很重要的。
在各方面,数据类型D、F、I 和T 都是预定义的,但数据类型C、N、P 和X 可以有附加说明。
例如,可以在程序中定义大小。
变量的定义:DATA指令用于变量的定义。
DATA <f> [<length>] <type> [<value>] [<decimals>]<f>: 变量名称, 最长30个字符, 不可含有+ . , : ( ) 等字符<length><type>: 数据型态及长度<value>: 初值<decimals>: 小数位数例:DATA NAME(10)TYPE C VALUE ‘MAX’.定义了一个长度为10位的字符串,初始值为MAX后面跟了7个空格。
DATA COUNT TYPE I.DATA NUM(6) TYPE N.DATA NDATE TYPE D.注:VALUE在定义变量的时候使用,作用为所定义的变量赋于用户指定的初始值。
常数定义:使用CONSTANTS 指令。
如:定义PI 是一个小数点5位的值 3.14159,CONSTANTS PI TYPE P DECIMALS 5 VALUE ‘3.14159’.结构定义和自定义数据类型定义:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.TABLES 语句利用TABLES 语句,可以创建称为表工作区的数据对象。
表工作区是参考ABAP/4 词典对象的字段串。
ABAP知识点

事件流(6个):INITIALIZATION(初始化)AT SELECTION-SCREEN(屏幕跳出前)START-OF-SELECTION(取数据)END-OF-SELECTION(展示数据)TOP-OF-PAGE(普通报表输出页头)END-OF-PAGE(普通报表输出页尾)1. 引用类型z_ref数据对象myref在程序中的声明方式:DATA myref TYPE z_ref.CREATE DATA myref TYPE z_ref.2. 参照数据字典中的表类型生成内表对象或结构体:DATA mytable TYPE z_table,”数据字典表类型,声明内表.myline TYPE LINE OF z_table.”表类型的行结构,声明结构体.3. 取系统日期:SY-DATUM,4. 取系统时间:SY-UZEIT.05. 系统字段定位:SY-FDPOS.字符比较结果为真时,此字段将给出偏移量信息.6. 系统字段SY-FDPOS给出字符的位置信息.(P109)7. 系统字段SY-INDEX记录循环语句中的循环次数8. 操作内表行结束后系统字段SY-TABIX返回该行索引.对于所有行操作,如果操作成功,系统变量SY-SUBRC返回0,否则返回非0值.9. 系统用户名:SY-UNAME.10. SY-HOST?屏幕序号:sy-dynnr.11. OK代码:SY-UCOMM或SYST-UCOMM12. 屏幕组ID:SY-DYNGR.13. 常量声明:CONSTANT const(len) TYPE type|LIKE dobj [DECIMALS dec] [VALUE val].14. 确定数据对象属性:DESCRIBE FIELD f [LENGTH l] [TYPE t [CONPONENTS n]] [OUTPUT-LENGTH o] [DECIMALS d] [EDIT MASK m] [HELP-ID h].15. 数据赋值:MOVE source TO destination.或destination = source.16. 设定初始值:CLEAR F.17. 检查字段是否为初始值:f IS INITIAL….18. 检查字段是否被分配:fs IS ASSIGNED…..19. 检查过程中的参数是否被实参填充:p IS [SUPPLIED|REQUESTED]….20. 检查数据对象的值是否属于某范围之间:f1 BETWEEN f2 AND f3…..21. 检查数据对象f的内容是否遵从某个选择表的逻辑条件:f in seltab….22. WRITE: /10 g,”在10个空格后输出变量g/(8) time using edit mask ‘__:__:__’.”输出的变量time保持8位的长度.23. 将光标移动到下一行:SKIP.24. 强制结束循环:EXIT,STOP或REJECT.25. 循环的中止:CONTINUE无条件中止当前循环并开始下一轮循环,CHECK条件为真时循环,为假时结束本次循环并开始下一轮循环,EXIT无条件中止并退出整个循环.26. 将字符串左移:SHIFT string.27. 连接字符串:CONCATENATE s1 s2 …..sn INTO s_dest [SEPARATED BY sep].如果结果出现被截断的情况,将SY-SUBRC返回4,否则返回0.符号&用于在字字符串换行时的连接.28. 根据分隔符sep拆分字符串:SPLIT s_source AT sep INTO s1 s2 ……sn.使用内表操作可以避免被截断的情况:SPLIT s_source AT sep INTO TABLE itab.此语句根据子串数目生成n行的内表.29. 循环输出内表的每一行数据:LOOP AT itab INTO text.ENDLOOP.30. 替换字段内容:REPLACE str1 WITH str2 INTO s_dest [LENGTH len]. 字段SY-SUBRC的返回值为0时表示己成功替换.31. 确定字段长度:[COMPUTE] n = STRLEN( str ).32. 删除字符串中的多余空格:CONDENSE33. 字符转换,如将ABC转换为abc:TRANSLATE34. 创建一个可以排序的格式:CONVERT TEXT.35. 用一个字符串覆盖另一个字符串:OVERLAY36. WRITE TO赋值时将忽略数据对象的类型,而将其视为字符类型数据.37. 字符串比较中的换码字符:#,用于转换比较时使用的通配符:*或+.及进行区分大小写,空格的比较,如#A表示比较大写的A.38. 定位操作子串:strName[+0][(1)].39. 字段符号,数据引用:动态数据对象.40. 子过程定义:FORM subroutine_name USING parameters1parameters2…. ….ENDFO RM.41. 子程序调用:PERFORM subroutine_name USING actual_parameters1 p2…. (其中USING可换成CHANGING)42. ULINE.输出下划线.43. 错误查看:ST2244. 程序打包release:SE01:找到对应的程序,点开后点上面小汽车,再选中上面的后再点小汽车.点check.程序修改后需要重新打包.45. 制作T-CODE:SE93,TCODE应按顺序编号:ZMF+流水号,我的程序名46. 创建table:t-code:se11,attributes:Delivery class:C.开发类别:ZFI,当自定义Field type时,名称需为Z+…..格式.->设置技术属性(Technical Setting):Logical storage parameters中Data class:APPL1,Size category:4à创建function group:SE80,创建好后将创建的TABLE 挂接到function grouph上去:用se11查出table,点utilites->table maintenance generator:Authorization groups:&NC&,Function group中填刚才创建的功能组名称->one step->overview screen中必须填未使用的number,此处screen number与table是一一对应的关系,也可让点系统上面的按钮:find screen number来自动搜索适合的scr.Number.->create,成功后,找到对应的function group中的screen number双击即可看到生成的代码.需要修改域名可在function group中的element list或layout中.-->se93创建t-code,start object选transaction with parameters(parameter transaction)->default values for->transantion:SM30->Default Values->name of screenfield:viewname\update,value:table name\X.47. field-sign:,field—option:,field-low:表示选择条件中起始值48. 在where子句中如果只有一个表的话,可以不用指定表名.49. 获取用户IP地址及用户名:call function 'TH_USER_INFO' " Get user IP,hostnameimportinghostaddr = iporg”转化前的IP地址terminal = host”计算机名exceptionsothers = 1."Conv.IP addr to format 'xxx.xxx.xxx.xxx'call function 'ZGJ_IPADR2STRING' "Conv.IP addrexportingipadr = iporg”转化前的IP地址importingstring = ipdec.”转化后的最终需要的IP地址50.删除内表中数据完全相同的行,只保留一行: delete adjacent duplicates from itab1 COMPARING <f1> <f2> / COMPARING ALL FIELDS.51. spro:后台设定52. 输出选择框write:/ itab1-flag as checkbox第四章 ABAP基础4.1.5 程序运行1.程序内部调用,如下表:例:REPORT z_calling_program.START-OF-PROGRAM.WRITE ‘This program calls another program.’.”此内容在输出界面看不到SUBMIT z_simple_program.”上面的输出被此程序覆盖.如果改用SUBMIT AND RETURN来调用则可以输出以上内容.2.结束程序:LEAVE PROGRAM.可在任意点强制结束当前运行的程序.4.1.6 内存管理SAP程序同一个用户和系统可进行最多6个SAPGUI主会话.4.2.1 数据定义TYPES:BEGIN OF t_staff,S_no(3) type n,Name(20),END OF t_staff.DATA staff TYPE t_staff.上例中定义了一个结构类型t_staff,并根据其声明了一个结构体对象staff.数据类型中的扁平结构与纵深结构:扁平类型:运行时长度固定的类型.纵深类型:运行时长度可峦的类型.4.2.2 ABAP内置基本数据类型:注意:1.其中C,N,T,D,I,F,P,X为定长类型,即在运行期间长度不能改变.2.类型T,D,I,F的数据存储长度是固定的,不能指定参照其生成的数据对象占用的内存字节数.3.基于类型C,N,P,X生成的数据对象需要在声明时指定其长度.否则取默认值.4.如果在声明一个数据对象时未指明其数据类型,则该数据默认为C类型.5.类型I的数值范围:-231到231-1的整数.如果运算时出现非整型结果则进行四舍五入取值.而不是截断小数.6.类型P用于声明小数字固定的压缩数,其占据内存字节数和数值范围取决于定义时指定的整个数据的大小和小数点后位数,如果不指定小数字,则将其视为I类型数据.有效大小可以是从1~16字节的任意值,小数点后最多允许14个数字.7,类型F为浮点数,浮点意思是数字在内存中以字节形式表示,数值范围:1*10-307到1*10308,因系统将F类型转换为二进制数,所以可能出现舍入误差,若用户要求较高精度且数值较大时,应使用P类型数据.8.长度可峦的内置类型String, XString是通过引用实际动态的数据对象的固定内存地址来操作.4.2.3 程序内部数据定义参照自定义类型或内置类型生成数据的语法格式:TYPES|DATA …TYPE l_type…参照程序中已经声明的数据对象生成新数据语法:TYPES|DATA …LIKE dobj…3.结构类型和结构体参照结构类型生成的数据对象称为结构体.TYPES|DATA:BEGIN OF structure.k1[TYPE type |LIKE dobj]…,k2[TYPE type |LIKE dobj]…,…k n[TYPE type |LIKE dobj]…,END OF structure.参照生成:参照结构生成:TYPES|DATA structure TYPE str_type |LIKE str_dobj... 参照数据库表生成:TYPES|DATA structure TYPE dbtab.4.表类型和内表表类型的对象称为内表.4.2.4 数据字典中的类型l 数据元素(Data elements),相当于ABAP中的基本类型和引用类型. l 结构(Structures),由数据元素字段构成,对应ABAP中的结构类型.l 表类型(Table types),对应ABAP中的表类型.数据字典中的数据类型与ABAP中的中数据类型对应关系:4.2.5 程序中的数据对象1.文字对象当字符文字长度超过编辑器的一行时,可以使用”&”进行连接,避免因换行而产生的多余空格,如:long = ‘This is ‘&‘a long sentence’.如果需要输出“’”,则需要在前面多加一个“’”转回愿意.2.有名称的数据对象常量声明:CONSTANT: const(len) TYPE|LIKE dobj [DECIMALS dec] VALUE val.结构体常量声明(每个组件必须指定初始值):CONSTANT:BEGIN OF structure,str1 TYPE|LIKE dobj [DECIMALS dec] VALUE val,str2 TYPE|LIKE dobj [DECIMALS dec] VALUE val,...,strn TYPE|LIKE dobj [DECIMALS dec] VALUE val,END OF structure.3.系统数据对象(见附表)4.查明数据对象属性DESCRIBE FIELD f LENGTH len.此语句将字段f的长度写入变量len.l LENGTH:确定数据对象长度.l TYPE: 确定数据对象类型.l OUTPUT-LENGTH:确定实际输出长度.l DECIMALS:确定P类型小数位长.l EDIT MASK:确定在数据字典中定义转换例程.l HELP-ID:确定在数据字典中定义的F1帮助信息.4.3 基本数据操作4.3.1数据赋值l MOVE source TO incept.等介于:incept = source.l CLEAR dobj.将数据对象dobj还原为初始值.l 结构体间赋值:struct2 = struct1.(组件结构相同).l MOVE-CORRESPONDING struct1 TO struct2.(部分组件结构相同).4.3.2类型转换(见附表).4.3.3数值运算1.算术运算两个结构体的同名字段之间可以整体进行算术运算:ADD-CORRESPONDING struct1 TO struct2.SUBTRACT-CORRESPONDING struct1 FROM struct2.MULTIPLY-CORRESPONDING struct2 BY struct1.DIVIDE-CORRESPONDING struct2 BY struct1.以上将对两个结构体中的同名字段进行相应运算(非数值类型数据会引起错误).2.数学函数任意类型参数的函数列表:注意:函数名与左括号间不能有空格,括号与参数间必须有空格. F类型参数的函数列表(其它类型参数将首先被转换为F类型).4.3.4数据输出输出格式化选项:注:用户主记录System->User profile->Own data(SU01).4.3.5逻辑表达式通用逻辑表达式列表:3.IS操作符l ...f IS INITIAL...:检查字段f是否为初始值.l ...fs IS ASSIGNED...:检查字段符号是否被分配.l ...p IS [SUPPLIED|REQUESTED]...:检查过程中的参数是否被实参填充.4.BETWEEN操作符l ...f1 BETWEEN f2 AND f3...:检查数据对象的值是否属于特定范围之间. 5.IN操作符(P110)l ...f IN seltab...:检查一个数据对象的内容是否遵从某个选择表的逻辑条件.6.组合逻辑表达式l AND:与.l OR:或.l NOT:非.注:括号与操作数间至少要有一个空格,如:IF ( c > n ) AND ( c < f ).4.4结构控制程序代码分三种结构:l 顺序结构:语句逐行执行.l 分支结构:根据不同的条件执行不同语句块.l 循环结构:反复执行某个语句.4.4.1分支控制1.IF/ENDIF结构:IF <condition1>.<statement block>ELSEIF <condition2>.<statement block>......ELSE.<statement block>ENDIF.注:可嵌套.2.CASE/ENDCASE结构:CASE f.WHEN f11 [OR f12 OR ...].<statement block>......[WHEN OTHERS.]<statement block>ENDCASE.其中,f为变量,f ij可以是变量或者固定值.4.4.2循环控制1.无条件循环DO [n TIMES].<statement block>ENDDO.说明:n为循环次数,可以是文字或变量,如果没有限定n值,则必须用EXIT,STOP或REJECT 等语句强制结束循环.DO循环可嵌套,SY-INDEX为当前循环次数.2.条件循环WHILE <condition>.<statement block>ENDWHILE.注:可嵌套,其它同上.3.循环中止l CONTINUE:无条件中止当前本轮循环,开始下一轮循环.l CHECK:条件中止当前本轮循环(条件为假时), 开始下一轮循环.l EXIT:无条件完全中止当前循环,继续循环结束语句(ENDDO,ENDWHILE等)后面的代码,如果在嵌套循环中,系统仅退出当前循环.4.5处理字符数据4.5.1字符数据1.连接字符串CONCATENATE s1 s2 ... sn INTO s_dest [SEPARATED BY sep].注:所有字符串操作将忽略s1....sn中的尾部空格(如需保留空格,可使用指定偏移量).如果出现截断情况,将SY-SUBRC设为4,否则返回0.2.拆分字符串SPLIT s_source AT sep INTO s1 s2 ... sn.如果所有子串足够长且不必截断任何部分,则将SY-SUBRC设为0,否则返回4,如果源字符串能够拆分的子串多过指定的数目,则源子串最后的剩余部分包括其后的分隔符都将写入最后一个子串,要避免这种情况,需要使用内表进行操作:SPLIT s_source AT sep INTO TABLE itab.在该形式中,根据子串数目生成n行的内表.例如:DATA:text type string,itab TYPE TABLE OF string.text = ‘ABAP is a programming language’.SPLIT text AT space INTO TABLE itab.LOOP AT itab INTO text.WRITE / text.ENDLOOP.3.查找子串模式SEARCH c FOR str.在字段c中查找字符串str.如果找到,则将SY-SUBRC返回0,SY-FDPOS返回字段c中该字符串的位置(从左算起的字节偏移量),否则SY-SUBRC返回4,查找模式有以下几种:l str 搜索str并忽略尾部空格.l .str. 搜索str,但不忽略尾部空格.l *str 搜索以str结尾的单词.l str* 搜索以str开始的单词.REPORT z_string_search.DATA string(30) TYPE c VALUE 'This is a testing sentence.'.WRITE: / 'searched','sy-subrc','sy-fdpos'.SEARCH string FOR 'X'.WRITE: / 'X', sy-subrc UNDER 'sy-subrc',sy-fdpos UNDER 'sy-fdpos'.SEARCH string FOR 'itt '.WRITE: / 'itt ', sy-subrc UNDER 'sy-subrc',sy-fdpos UNDER 'sy-fdpos'.SEARCH string FOR '.e .'.WRITE: / '.e .', sy-subrc UNDER 'sy-subrc',sy-fdpos UNDER 'sy-fdpos'.SEARCH string FOR '*e '.WRITE: / '*e ', sy-subrc UNDER 'sy-subrc',sy-fdpos UNDER 'sy-fdpos'.SEARCH string FOR 's* '.WRITE: / 's* ', sy-subrc UNDER 'sy-subrc',sy-fdpos UNDER 'sy-fdpos'.输出结果如下:searched sy-subrc sy-fdposX 4 0itt 4 0.e . 4 0*e 0 18s* 0 184.替换字段内容.REPLACE str1 WITH str2 INTO s_dest [LENGTH len].搜索s_dest中前len个字符中的子串str1,用str2来替换它,如果成功,SY-SUBRC返回0,否则还回非0值.REPORT z_replace.DATA name TYPE string.name = 'Michael-Cheong'.WHILE sy-subrc = 0.REPLACE '-' WITH ' ' INTO name.ENDWHILE.WRITE / name.输出结果: Michael Cheong5.确定字段长度n = STRLEN( str ).函数将str作为字符数据类型处理,不考虑其实际类型,也不进行转换.计算其首字符到最后一个非空字符的长度,不包括结尾空格.6.其它操作语句l SHIT:将字符串整体或子串进行位移.l CONDENSE:删除字符串中的多余空格.l TRANSLATE:字符转换,如将ABC转换为abc.l CONVERT TEXT:创建一个可以排序的格式.l OVERLAY:用一个字符串覆盖另一个字符串.4.5.2字符数据比较(用于判断两个字符串之间的包含关系):注:CO,CN,CA,NA比较时区分大小写,且尾部空格也在比较范围之内,CS,NS,CP,NP比较时忽略尾部空格且不区分大小写,比较结束后,如果结果为真,SY-FDPOS将给出s2在s1中的偏移量信息.模式表示可以使用通配符,”*”用于替代任何字符串,”+”用于替代单个字符.换码字符使用:l 指定大小写(如#A,#b).l 通配符”*”(输入#*),将其转回原义.l 通配符”+”(输入#+),将其转回原义.l 换码符本身”#”(输入##),将其转回原义.l 字符串结尾空格(输入#__),指定比较结尾空格.4.5.3定位操作子串str[+position][(len)].从字符串str中的position位开始取出长度为len的子串.可动态指定偏移量及长度的情况(即position及len可为变量):l 用MOVE语句或赋值运算符给字段赋值时.l 用WRITE TO语句向字段写入值时.l 用ASSIGN将字段分配给字段符号时.l 用PERFORM将数据传送给子程序时.off = 6.len = 2.date+off(len) = ‘01’.4.6使用内表types定义的并不是结构体对象,只是结构类型,不能作为工作区,当定义的内表没有表头行(工作区)时,必须为其定义一个结构体作为工作区,否则无法使用此内表.如果没有给内表定义工作区,则在定义内表时必须声明表头行(with header line).DATA:BEGIN OF line, "work area(structure)结构类型且结构体对象num TYPE i,sqr TYPE i,END OF line,"无表头行内表,内表定义都使用data关键词.itab TYPE(LIKE) STANDARD TABLE OF line WITH KEY table_line.DATA DIRTAB LIKE CDIR OCCURS 10 WITH HEADER LINE.定义标准内表DO 5 TIMES.line-num = sy-index.line-sqr = sy-index ** 2.APPEND line TO itab.ENDDO.LOOP AT itab INTO line.WRITE:/ line-num,line-sqr.ENDLOOP.CLEAR itab.注:1.TYPES与DATA区别:TYPES是用来定义某种类(型)的,需(用DATA语句)实例化以后才可以使用,而DATA是用来定义数据对象(实例变量)的,对于用DATA直接定义的结构体对象(不参照其它结构类型),其同时也是一个结构类型.2.TYPE与LIKE区别:TYPE后面跟随的只能是某种类(型),而LIKE后面可以跟随类型或实例对象,参照结构体对象生成内表时只能用LIKE,不能用TYPE,因为结构体对象不是类型,只是一种实例对象,参照结构类型生成内表时可以用LIKE也可以用TYPE.其中通过LIKE定义的内表直接拥有参照结构类型的元素结构,而通过TYPE定义的内表只能间接拥有被参照结构类型的元素结构,结构类型不能作为内表的工作区,只有结构体对象才可以.内表定义语法:1.标准表:可指定或不指定关键词,可重复.逻辑索引,操作数据时数据内存位置不峦,系统只重排数据行的索引值.DATA itab TYPE|LIKE [STANDARD] TABLE OF structure [WITH KEY comp1 ...compn(DEFAULT KEY) WITH HEADER LINE INITIAL SIZE n].2.排序表:可指定唯一或不唯一的关键词,也可不指定,逻辑索引,按关键词升序存储.DATA itab TYPE|LIKE SORTED TABLE OF structure [WITH NON-UNIQUE(UNIQUE) KEY comp1 ... compn(DEFAULT KEY) WITH HEADER LINE INITIAL SIZE n].3.哈希表:必须指定唯一关键词.无索引DATA itab TYPE|LIKE HASHED TABLE OF structure WITH UNIQUE KEY comp1 ... compn(DEFAULT KEY) [WITH HEADER LINE INITIAL SIZE n].注:如果n值为0或不指定的话,程序会为内表对象分配8KB大小内存,所以,如果内表比较小,不要把该值设为0,以避免内存浪费.旧版标准表定义语法:DATA itab TYPE|LIKE [STANDARD] TABLE OF structure OCCURS n.或者DATA:BEGIN OF itab OCCURS n,...,fi...,END OF itab.4.6.2操作内表行注:CLEAR itab[].表示操作的是内表对象.而CLEAR itab.当itab有表头行时表示操作表头行,如无表头行时表示操作内表对象.当一个操作语句结束后,SY-TABIX返回该行的索引值,对于所有行操作,如果访问成功,SY-SUBRC返回0,否则返回非0值.4.插入行—INSERTl INSERT structure INTO itab INDEX idx.无表头行索引表,itab的行数应大于或等于idx-1.否则失败l INSERT itab INDEX idx.有表头行索引表.l 对于哈希表,系统按关键词将新行插入特定位置.l INSERT structure INTO|INITIAL LINE INTO TABLE itab.此语句对于标准表来说与append效果相同,对于排序表来说,插入的行不可以打乱按照关键词排序的顺序,否则插入不成功,对于哈希表来说,插入过程中系统按照关键词对行进行定位.INITIAL关键词是用于向内表中插入结构中各类型的初始值的.l INSERT LINES OF itab1 [FROM n1] [TO n2] INTO [TABLE] itab2 [INDEX idx].将内表中部分或全部数据行整体插入到另一内表中,指定行数时itab1,itab2必须为索引表,指定TABLE关键词时,itab2可以是任意内表.此方式比其它方式快20倍左右.5.附加行—APPEND(只能操作索引表)APPEND [structure TO|INITIAL LINE TO] itab.APPEND LINES OF itab1 [FORM n1] [TO n2] TO itab2.6.聚集附加—COLLECTCOLLECT line INTO itab.对于需要附加的数据,如果在内表中存在关键词内容与其相同的数据行,则此语句将需要附加的数据累加到内表中的这一行上,而不会另外再添加一行,操作成功后,SY-TABIX返回被处理过的行的索引.注:关键词以外的所有字段必须是数字类型7.读取行—READ(可用于任何类型内表)l READ TABLE itab [INTO wa|ASSIGNING <fs>] INDEX idx.通过索引读取内表中的单行数据. ASSIGNING表表示指派给字段符号.l READ TABLE itab FROM structure [INTO wa|ASSIGNING <fs>].读取与结构相同的工作区中的关键词内容全部相同的内表数据.l READ TABLE itab WITH TABLE KEY field1 = v1 ... field2 = v2 [INTO wa|ASSIGNING <fs>].指定所有关键词值,并读取相等时内表行.l READ TABLE itab WITH KEY field1 = v1 ... field2 = v2 [INTO wa|ASSIGNING <fs>].读取内表中字段fieldn(不一定是表关键词段)与值vn相同时的内表行.8.修改行—MODIFYl MODIFY itab [FROM wa] [INDEX idx] [TRANSPORTING f1 f2 ...].如果内表包含的行数少于idx,则不更改任何行.l MODIFY TABLE itab FROM wa [TRANSPORTING f1 f2 ...].根据工作区wa中关键词修改内表行, TRANSPORTING表示修改指定字段值.l MODIFY itab FROM wa TRANSPORTING f1 f2 ... WHERE condition.修改符合WHERE 子句中条件的内表中的指定字段值.9.删除行—DELETEl DELETE itab INDEX idx.根据索引删除内表行.l DELETE TABLE itab FROM wa.根据工作区关键词删除行.l DELETE TABLE itab WITH TABLE KEY field1 = v1 ... field2 = v2.根据指定关键词值删除行.l DELETE itab [FROM n1] [TO n2] [WHERE <condition>].10.循环处理--LOOPLOOP AT itab [INTO wa] [FROM n1] [TO n2] [WHERE condition].<statement block>.ENDLOOP.4.6.3操作整个内表1.排序SORT itab [ASCENDING|DESCENDING] [AS TEXT] [STABLE][BY f1 [ASCENDING|DESCENDING] [AS TEXT]......f1 [ASCENDING|DESCENDING] [AS TEXT]]说明:l ASCENDING|DESCENDING:升序或降序.默认升序.l AS TEXT:根据当前语言按字母顺序排序字符字段,否则按字符平台相关内部编码进行排序.l STABLE:保持排序前后不需要改变的数据行的相对顺序.2.控制级操作(用于总计,缩进,格式控制等)AT FIRST|LAST|NEW f|END OF f.<statement block>ENDAT.说明:l FIRST:当循环为内表的第一行时,执行语句块中语句.在工作区中,系统用*填充所有关键词内容.l LAST: 当循环为内表的最后一行时,执行语句块中语句. 在工作区中,系统用*填充所有关键词内容.l NEW f:字段f前面(即左边)的全部字段内容之一不同于上一行时, 执行语句块中语句.在工作区中,系统用*填充f后面所有关键词内容.l END OF f:如果下一行行组中的任何字段内容不同于上一行, 执行语句块中语句.在工作区中,系统用*填充f后面所有关键词内容.注:在控制级操作期间,在工作区中,对于非标准关键词段,将全部进行初始化,在执行完控制操作后(即ENDAT语句后)工作区中的数据将全部还原到进入控制级操作语句前(即进入AT前)状态.3.初始化内表l CLEAR itab.:带表头行时只清空表头行,不带表头行时清空整个内表.l CLEAR itab[].:只清空整个内表对象数据.不清空表头行.l REFRESH itab或REFRESH itab[].:只清空整个内表对象数据.不清空表头行.l FREE itab.或FREE itab[].:只清空整个内表对象数据.不清空表头行,同时释放内存.l ......itab IS INITIAL....:检查内表是否为空.4.整体复制内表l MOVE itab1 TO itab2.:如果两表都存在表头行,则此语句只复制了表头行.l MOVE itab1[] TO itab2[].:指定表体复制.l MOVE itab1[] TO itab2.:表itab2无表头行时才成立.l itab2 = itab1.同上1l itab2[] = itab1[].同上2l itab2 = itab1[].同上35.比较内表大小... itab1 <operator> itab2...:其中<operator>可以为=,<>,><,>=,<=,>,<等.4.6.4Extract Datasetsl FIELD-GROUP fg.行结构分配.l INSERT f1 f2 ... INTO fg.生成字段组fg的具体字段结构.l EXTRACT fg.将字段组填充给EXTRACT.l SORT.排序.l LOOP. <statement block> ENDLOOP.循环输出EXTRACT.4.7动态数据对象4.7.1字段符号l FIELD-SYMBOLS <fs> [TYPE type|LIKE dobj].声明字段符号.l ASSIGN f TO <fs>.静态分配数据对象给字段符号.l ASSIGN f[+i] [(j)] TO <fs>.指定偏移量和长度.l ASSIGN (f) TO <fs>.动态分配,先找到字段f的内容,然后将该内容分配给<fs>.4.7.2数据引用TYPES t_dref TYPE REF TO DATA.DATA dref TYPE REF TO DATA.4.8模块化技术4.8.2子程序1.定义:FORM subr [[USING [VALUE(p1)]... ] [TYPE t|LIKE f]...] [TYPE ANY][CHANGING [VALUE(p1)] ... ] [TYPE t|LIKE f]...] [TYPE ANY]. <subr codes>ENDFORM.注:l VALUE参数表未示值传递,此方式在子程序调用后实参的值不会被改变.l 无VALUE参数时表示引用传递,会改变实参的值.l USING与CHANGING无任何区别.l 位于两个子程序间的代码不属于任何事件块.l 参数传递时不存在类型转换,要求必须兼容.2.调用:PERFORM subr [USING p1 ... pn] [CHANGING pi ... pj].4.8.3功能模块(p153)4.8.5源代码复用1.包含程序包含程序是单纯的代码复用,不是可执行程序,不能单独运行,必须被其它程序调用,包含程序不能调用自身.INCLUDE incl.包含程序调用,此语句必须独占一行.2.宏:(语句块中最多只能包含9个占位符&1...&9).例:DATA:result TYPE i,int1 TYPE i VALUE 1,int2 TYPE i VALUE 2.DEFINE operation.result = &1 &2 &3.output &1 &2 &3 result.END-OF-DEFINITION.DEFINE output.write: / 'The result of &1 &2 &3 is',&4.END-OF-DEFINITION.operation 1 + 2.operation int2 - int1.4.9.1静态错误检查1.语法检查:用Check键.2.扩展语法检查(SLIN):在ABAP初台界面输出程序名后,选择Program->Check->Extended Syntax Check.àStandard.4.9.2运行时错误控制1.可捕捉的错误CATCH SYSTEM-EXCEPTIONS exc1 = rc1 ... excn = rcn....ENDCATCH.其中exci表示一个单一可捕捉错误或者一个ERROR类,rci则代表一个数字.如果其中错误之一在CATCH和ENDCATCH语句之间出现,程序就不会中止,而是直接跳至ENDCATCH 后,把系统指定的错误代码rci赋给字段SY-SUBRC.此语句可嵌套.例如:DATA:result1 TYPE p DECIMALS 3,number TYPE i VALUE 11.CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5.DO.number = number - 1.result1 = 1 / number.WRITE: / number,result1.ENDDO.ENDCATCH.IF sy-subrc = 5.WRITE / 'division by zero!'.ENDIF.2.不可捕捉的错误(通过ST22查看,在SAP系统中保存14天,可通过Keep功能保存更长时间).第六章数据库操作6.2.1表字段在数据字典中,每创建一个数据库表后,都将同时生成一个同名的结构化数据类型.6.2.2外部关键词外部关键词内容必须在其对应的约束表(check table)中存在,否则无法插入.6.2.3技术设定1.数据类型(data class):l APPL0(Master data),较少需要被修改的系统数据表,如员工个人信息.l APPL1(Transaction data),需要经常被修改的数据表,如产品库存量表.l APPL2(Organization and customizing),系统定制数据表,在系统安装后很少需要修改,如国家代码等.2.数量级别:0 0 to 6,6001 6,600 to 26,0002 26,000 to 100,0003 100,000 to 420,0004 420,000 to 34,000,0003.缓冲(Buffering)机制如果在缓冲设定中选择了Buffering switched on项,则需要设定其缓冲类型(有Full,Single-record和Generic三种).缓冲机制的意义在于首次查询时将数据表中的数据放入应用服务器缓冲区,以提高后续查询效率,要注意最好不要对经常需要的数据库表设置该机制,对于经常读取但很少更新或者通常只有在60秒后才可能被其他应用服务器程序修改的数据库表,开启缓冲机制可以上百倍地提高效率.4.Log data changes用于设定表中的数据修改时是否在系统日志中记录.6.2.4索引一个数据库表可以包含一个主索引(Primary Index)和多个附属索引(Secondary Indexes).主索引只包含表关键词和指向整个数据条目的指针,由系统自动生成并在添加数据库条目时进行维护.索引中的数据已经排序.6.3.1SELECT语句SELECT <result> FROM <source> INTO <target>[WHERE <condition>] [GROUP BY <fields>][HAVING <cond>] [ORDER BY <fields>].l HAVING子句用于限定ORDER BY子句中数据条目组的选择条件1.选择单行数据:l SELECT SINGLE * FROM tab INTO wa_tab WHERE <condition>.选择单行全部数据.l SELECT SINGLE field1 ... fieldn FROM tab INTO(wa_field1,...,wa_fieldn) WHERE <condition>.选择单行指定字段数据到指定工作区字段.l SELECT SINGLE *|field1 ... fieldn FROM tab INTO CORRESPONDING FIELDS OF wa_tab WHERE <condition>.将选择的值放入工作区中对应的字段中.6.3.3选择多行数据1.循环选择(DISTINCT去掉结果重复的行):SELECT [DISTINCT] ... .<statement block>ENDSELET.系统字段SY-DBCNT给读取的行计数.2.选择至内表:SELECT ... INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE itab.其中INTO选项将复盖itab中的数据,如果不想复盖只想追加则用APPENDING.3.指定选择包大小(一次选择到内表的行数):SELECT * FROM tab INTO|APPENDING TABLE wa_tab PACKAGE SIZE n.<statement block>ENDSELET.6.3.4指定查询条件1.比较运算符:=,<,>,<>,<=,>=.2.范围限定运算符:WHERE ... f [NOT] BETWEEN g1 AND g2 ....3.字符比较运算符:WHERE ... f [NOT] LIKE g [ESCAPE h]...其中g中通配符”_”用于替代单个字符,”%”用于替代任意字符串. ESCAPE选项举例如下:SELECT ... WHERE city LIKE ‘edit#_%’ ESCAPE ‘#’.选择所有以”edit_”开始的城市.4.检查列表值:WHERE ... f [NOT] IN (g1,...gn)...5.检查空值: WHERE ... f IS [NOT] NULL...注:这里的NULL值不等同于初始值INITIAL6.检查选择表.l WHERE ... f [NOT] IN seltab...其中seltab为选择表,如选择屏幕中用户填充数据.l SELECT ... WHERE ( code = ‘01’ OR code = ‘02’ ) AND NOT (country =‘usa’ ).:AND,OR,NOT可以按照任意顺序组合.l SELECT ... WHERE <condition> AND (itab).内表itab仅包含一个类型为C的字段,且最大长度为72.字段中内容不能使用变量.这种方式查询效率很低.6.3.5多表结合查询1.SELECT语句嵌套DATA:wa_carrid TYPE spfli-carrid,。
很全abap入门知识

很全abap入门知识ABAP入门知识1.ST05是用于在开发ABAP程序时,对应事务码取得的字段是“数据结构”而不是“透明表”的时候,通过ST05的“SQL跟踪”来获得相关“Select”的语句;一般查看“REC”列耗时比较多的“Select”语句;2.跟踪时如果有涉及到“数量”这类有对数据表进行更新或插入操作的,则直接去查Update和Insert的SQL语句;3.在跟踪后,直接双击“对象名”列的名称,点选“表格字段”转到“SE11”的表字段表;4.ABAP程序开头的Tables:“数据表名”,只有在屏幕中有用到的表,才需要声明;在程序中用到的表则不需要进行在Tables内声名;5.抓SAP“文本”字段的数据,要先自定义变量,然后通过SE37的函数“FUNCTION ?ZREAD_TEXT?”取回文本数据;6.新建的ABAP程序,在测试运行的时候要先进行“激活”,才能测试运行;7.SE93:把ABAP写好的程序指定一个事务码执行;8.abap引号内的字符??必须要是大写;9.ABAP select 里面的语句,不能像mssql有那么丰富的函数使用,需要导到内表后再对数据进行操作;10.?EQ?是单个数据值,?BT?是between区间的意思。
11.在写select inner join 里面,要注意是否需要加上销售组织的条件;on 条件1 and 销售组织条件。
12.SELECTION-SCREEN,里面有两个子项,PARAMETERS和select-options。
PARAMETERS 一般是用于必输项的屏幕参数设置,如果这个参数不是必输项的,就要用select-options。
在select ...where条件里,用PARAMETERS的条件语法是“数据字段 = 屏幕字段”;而select-options的条件语法是“数据字段 in 屏幕字段”。
13.在where判断一个日期型数据是空,不是DEAKT = ??,也不是DEAKT isinitial,而应该写成DEAKT = ?00000000? (8个0)。
ABAP学习总结

ABAP的学习总结开发学习人:高宜飞一、ABAP的开发基础1、事务代码SE38:ABAP编辑器创建ABAP的程序,A——X基本都已经被sap自带的程序所占用,我们的开发一般用Y或Z开头。
这里可以通过程序的名字,来进行对程序的查询,修改以及开发。
Title用于描写这个程序的名称,一般我们与程序名相同。
一般开发类都是由项目经理来制定的,没有开发类的话,一般在本地开发机来进行代码的编写。
如果保存在开发类里面的话,要创建请求号,请求号的标准为ABAP:程序名字+日期+开发人+具体描述SE93:查询创建事务代码Program and screen (dialog transaction):用于对话程序Program and selection screen (report transaction) : 用于报表SE11:创建查询数据表,一般开发中在110中进行技术设置——保存——激活Fields:设置字段设置数据元素,数据元素必须以Z开头,然后双击设置维护域,继续双击设置的维护域名SE10:查询,传输组织者SHDB批量创建程序后期开发很重要2、事件ABAP是一种事件语言,程序驱动语言。
INITIALIZATION 选择屏幕前对变量进行初始化赋值。
AT SELECTION-SCREEN 对选择屏幕的数据输入进行检查。
START-OF-SELETION 选择屏幕处理完后数据处理。
TOP-OF-PAGE 列表显示启动新页、页头的输出。
AT LINE-SELECTION 用户双击选中某行触发事件。
SET-PF-STATUS 设置自定义菜单。
AT USER-COMMAND 当用户功能键时,触发该事件。
3、消息E :错误消息W :发送警告消息I :发送信息消息A :发送异常终止消息S :发送成功消息4、系统常量SY-SUBRC:代表判断执行结果如果返回的数字是0以外的都是有问题判断执行的结果。
SY-UNAME:代表当前的登陆者。
abap 开发知识点

abap 开发知识点ABAP 开发知识点ABAP (Advanced Business Application Programming) 是SAP 公司开发的一种高级业务应用编程语言,主要用于 SAP 系统的开发和定制。
在ABAP 开发中,有一些重要的知识点需要掌握,下面将会分别介绍。
1. 数据类型在ABAP 中,有许多不同的数据类型,包括整型、浮点型、字符型、日期型等。
在声明变量时,需要指定变量的数据类型,以确保变量能够存储正确的数据。
例如,声明一个整型变量可以使用以下代码:DATA: lv_num TYPE i.其中,lv_num 是变量名称,TYPE i 表示变量的数据类型为整型。
2. 数据对象在ABAP 中,数据对象是指在程序中使用的数据元素,包括变量、常量、字段符号等。
可以通过DATA 关键字声明变量,在程序中使用。
在ABAP 中,还有一种特殊的数据对象叫做内部表。
内部表类似于数据库中的表格,可以存储多行数据。
在ABAP 中,可以通过以下方式定义一个内部表:DATA: lt_data TYPE TABLE OF ty_data.其中,lt_data 是内部表名称,ty_data 是内部表的行结构。
3. 函数和方法在ABAP 中,函数和方法都是用于执行特定任务的代码块。
函数是独立的代码块,可以在程序中任何地方调用;而方法是与对象相关联的代码块,必须通过对象调用。
在 ABAP 中,可以通过 FUNCTION 和 METHOD 关键字定义函数和方法,例如:FUNCTION z_test_function.* 函数代码ENDFUNCTION.METHOD z_test_method.* 方法代码ENDMETHOD.4. ABAP 程序结构在ABAP 中,程序结构包括了程序头、变量定义、主体代码和结束语句。
程序头包括了程序名称、类型和描述等信息;变量定义用于声明程序中使用的变量;主体代码包含了程序的主要逻辑;结束语句用于结束程序的执行。
ABAP学习总结

ABAP学习总结1.ABAP语法ULINE. ----画一条横线SY-VLINE 画竖线SKIP. 跳一行系统变量如下:Internal table(内表)内表数据类型: Structure , 数据库表, 用户自定义数据类型.定义内表:Structure : DATA ITAB TYPE (STANDARD) TABLE OF YTEST_TAB.数据库表: DATA ITAB TYPE TABLE OF SFLIGHT.自定义数据类型: TYPES: BEGIN OF 1_TYPE,NAME(50) TYPE C,AGE TYPE I,END OF 1_TYPE.DATA ITAB TYPE TABLE OF 1_TYPE.表头行:在定义内表的时候,后面加上”WITH HEADER LINE”,则同时定义了该内表的同名工作区,该定义被称作表头行,例如:注: APPEND 与INSERT 区别: APPEND插入内表最后一行, INSERT 可以插入指定位置.数据字典:数据字段(TABLE FIELD), 域(DOMAIN), 数据元素(DATA ELEMENT).数据字段:数据表中的字段.域: 描述一个字段类型和长度等信息.数据元素: 描述一个字段的用途.数据字段→域→数据元素. ()收索帮助)SELECT :对数据结构: 当从数据库表中查询出的数据,放入数据结构中时,要有ENDSELECT, 例如: SELECT * FROM SPFLI UP TO 5 ROWS INTO A_SPFLI.WRITE : / A_SPFLI-CONNID,A_SPFLI-CARRID,A_SPFLI-CITYFROM, A_SPFLI-CITYTO.ENDSELECT.对内表 : 当从数据库表中查询出的数据, 放入内表中时,可有可无 ENDSELECT,例如:SELECT * FROM SPFLI UP TO 5 ROWS INTO TABLE TA_SPFLI.*从数据库表中读数据到内表中,直接从内表输出*如果TA_SPFLI没有定义HEADER LINE,这儿会报错的LOOP AT TA_SPFLI.WRITE : / TA_SPFLI-CONNID,TA_SPFLI-CARRID,TA_SPFLI-CITYFROM,TA_SPFLI-CITYTO.ENDLOOP.UP TO 5 ROWS : 读取前5行,不再继续往下读PACKAGE SIZE 5 : 以5行为一组,继续往下读.例如:*以每次读取5条记录,直到读取完所有数据SELECT * INTO TABLE WA_SPFLI FROM SPFLI PACKAGE SIZE 5.*输出内表内的数据LOOP AT WA_SPFLI.WRITE : / WA_SPFLI-CARRID,WA_SPFLI-CITYFROM,WA_SPFLI-CITYTO.ENDLOOP.*输出5条后输出一条线ULINE.ENDSELECT.(内链接)ULINE.WRITE / '内连接'.ULINE.*定义结构DATA : BEGIN OF ARCD,CARRID TYPE SPFLI-CARRID,CONNID TYPE SPFLI-CONNID,FLDATE TYPE SFLIGHT-FLDATE,END OF ARCD.*定义工作区DATA ARCD1 LIKE ARCD.*关联数据表,读取前10条记录,写入工作区,并输出SELECT SPFLI~CARRID SPFLI~CONNID SFLIGHT~FLDATE INTO ARCD1 FROM SPFLI INNER JOIN SFLIGHT ON SPFLI~CARRID = SFLIGHT~CARRID AND SPFLI~CONNID = SFLIGHT~CONNID UP TO 20 ROWS.WRITE : / ARCD1-CARRID,ARCD1-CONNID,ARCD1-FLDATE.ENDSELECT.列表颜色设置:例如:*----------标准列表输出SKIP.ULINE.FORMAT COLOR COL_GROUP.WRITE / '前景和背景颜色设置'.FORMAT COLOR OFF.*数据库表SPFLI相关TABLES SPFLI.SKIP.*输出表头,背景灰绿FORMAT COLOR COL_HEADING.ULINE AT /(91).WRITE : / SY-VLINE,(15) '航线承办人',SY-VLINE,(15) '航班连接',SY-VLINE, (15) '国家代码',SY-VLINE,(15) '起飞城市',SY-VLINE,(15) '起飞机场',SY-VLINE.ULINE AT /(91).FORMAT COLOR OFF.*SY-VLINE是画竖线,ULINE是画横线*输出内容,关键字为'DL'红色SELECT * FROM SPFLI UP TO 10 ROWS.IF SPFLI-CARRID = 'DL'.FORMAT COLOR COL_NEGATIVE INVERSE OFF."背景色,红色ELSEIF SPFLI-CARRID = 'AZ'.FORMAT COLOR COL_NEGATIVE INVERSE ON."前景色,红色ELSE.FORMAT COLOR OFF INVERSE OFF.ENDIF.WRITE : / SY-VLINE,(15) SPFLI-CARRID,SY-VLINE,(15) SPFLI-CONNID,SY-VLINE,(15) SPFLI-COUNTRYTO,SY-VLINE,(15)SPFLI-CITYFROM,SY-VLINE,(15)SPFLI-AIRPFROM,SY-VLINE.ULINE AT /(91).ENDSELECT.从服务器上下载指定人的源码: se38 - >Z_DOWNLOAD_DOC -> 执行- > 输入要下载人的用户名和保存路径- > 执行即可将指定人的所有源码下载下来SAP: System , Applications and Products in Data Processing . 即数据处理的系统应用和产品.ERP巨人: --- SAP公司创立于1972 年, 其总部设在德国南部的小城walldorf.ERP(Enterprise Resource Planning , 企业资源计划) 是建立在现代企业的先进管理思想基础之上, 利用信息技术为企业提供决策, 计划, 控制和业务评估的全方位的系统的解决平台.企业流: 物流, 资金流, 信息流.SAP基本结构: 数据库, 应用层和显示层.R/3 ( R 意为实时处理, Realtime).SAP模块:生产计划控制(PP) , 物料管理(MM) , 销售与分销(SD) , 财务会计(FI), 管理会计(CO), 人力资源(HR), 设备管理(PM), 项目管理(PS), 固定资产管理(AM), 资料管理(BW) , 售后服务管理(SM), 工作流管理(WF), 质量管理(QM), 基本系统组件(BC). . .SAP系统开发人员主要接触对象:Basis系统和开发平台及ABAP系统设计语言.ABAP(Advanced Business Application Programming).处理块(Processing Blocks) 是ABAP程序的主要结构单元, 定义了程序在不同状态下执行的具体功能, 在程序编译运行过程中, 每一个块都是一个独立的实体.数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的, 其他所有语句则都必须隶属于某个处理块.程序类型数据元素: 是构成结构和表等复杂类型的基本组件. 域: 则定义数据元素的技术属性, 具有包括数据字典中的基本内置数据类型,长度和小数位.所有数据元素都必须属于一个域.内表排序使用SORT语句.确定数据对象属性:DATA: text(8) TYPE c VALUE ‘abcdefgh’ , len TYPE i.DESCRIBE FIELD text LENGTH len.WRITE: text , ‘has length’ , len .其输出为: abcdefgh has length 8.MOVE 字段TO 字段=> 赋值.MOVE source TO destination. destination = source.可以使用MOVE-CORRESPONDING 语句在两个结构体中所有同名组件赋值, 而目标结构体中其他字段的值不变.MOVE-CORRESPONDING add_company TO company .字段符号:系统不直接为字段符号本身保留内存空间, 而是将其指向一个数据对象.声明字段符号: FIELD-SYMBOLS <fs> TYPE D.分配数据对象: 静态分配: ASSIGN f TO <fs> .动态分配: ASSIGN (f) TO <fs> .动态分配不是将字段f分配给字段符号<fs> , 而是先找到字段f 的内容, 再将该内容作为一个新的数据对象名称分配给<fs> . 例:FIELD-SYMBOLS: <fs> .DATA: str(20) TYPE c VALUE ‘Output String’ .Name(20) TYPE c VALUE ‘str’ .*Static assignmentASSIGN name TO<fs> .WRITE: / <fs>.*Dynamic assignmentASSIGH (name) TO <fs> .WRITE: / <fs>.输出结果为:StrOutput StringREAD语句只能应用于内表数据对象.静态数据对象: STATICS , 与DATA , TYPES 格式一样.宏的定义: DEFINE name .<statement>.END-OF-DEFINITION.SE24 -> 定义全局类SE37 -> 定义FUNCTION .访问类成员: oref -> attr . 属性或方法.Oref => attr . 静态属性或方法.继承: CLASS c1 DEFINITION INHERITING FROM ……………………ENDCLASS. <类的定义>CLASS c1 IMPLEMENTATION.………ENDCLASS. <类的实现>抽象类: CLASS c1 DEFINITION ABSTRACT.……….ENDCLASS.最终类; CLASS c1 DEFINITION FINAL .……….ENDCLASS.接口: INTERFACE intf .DATA …..CLASS-DATA……(静态属性).METHOD……ENDINTERFACE.实现接口:CLASS class DEFINITION . <类定义>PUBLIC SECTION.…….INTERFACES: intf1, intf2……ENDCLASS.CLASS class IMPLEMENTATION.……METHOD intf1~imeth1. (实现接口方法)…….ENDMETHOD.…….ENDCLASS.DATA object TYPE REF TO class.创建对象:CREATE OBJECT object .通过内表将多条数据插入数据库表:INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.其中accepting duplicate keys 选项的效果是: 如果出现关键字相同条目, 系统将SY-SUBRC返回4 , 并跳过该条目, 并更新所有其他条目.UPDATE:单行: UPDATE dbtab FROM wa . (工作区).多行: UPDATE target FROM TABLE itab . (内表).MODIFY: 相当于INSERT 和UPDATE 语句结合.添加或更新单行: MODIFY dbtab FROM wa.添加或更新多行: MODIFY dbtab FROM TABLE itab.DELETE:单行: DELETE dbtab FROM wa.多行: DELETE dbtab FROM TABLE itab.SY-DBCNT 返回实际已删除的行数.一般性的报表时间触发过程如下:1.LOAD-OF-PROGRAM.2.INITIALIZATION.3.AT SELECTION-SCREEN OUTPUT. AT SELECTION-SCREEN. 4.START-OF-SELECTION5.GET 和GET LATE6.END-OF-SELECTION7.TOP-OF-PAGE END-OF-PAGE8.AT LINE-SELECTION AT-USER-COMMANDRFC: (Remote Function Call , 远程功能调用).RFM: 可以提供给其他系统进行远程调用的程序模块是支持RFC 的功能模块, 即RFM(Remote-Enabled Function Module). 支持远程调用的功能模块.RFC模式:1.同步RFC2.异步RFC3.事务性RFC4.队列RFC5.并行RFC模块条件调用:单字段: FIELD field MODULE mod ON INPUT/REQUEST. INPUT: 当field中包含非初始值时, 才调用ABAP模块mod; 如果用户将字段值由其他改回初始值, 也不能触发mod. REQUEST: 只有用户在该字段中输入值时(包括空值和原值) , 才调用ABAP模块mod.组合字段:CHAIN.FIELD: f1 , f2 , …MODULE mod1 ON CHAIN-INPUT/CHAIN-REQUEST.FIELD: g1 , g2 , ……MODULE mod2 ON CHAIN-INPUT/CHAIN-REQUEST.……ENDCHAIN.当fi 之一满足条件时, mod1被调用, 当fi或gi满足条件时, mod2被调用.锁:问题一:锁对象(Lock Object)和 FM(Function Module),激活Lock Object时,产生的 FM 的名字是什么?答案:首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。
ABAP基础知识(完整版)-自学

ABAP基础知识(完整版)-上SAP ABAP / 4 基础知识学习数据类型C :字符串D :日期型格式为YYYYMMDD 例:'1999/12/03'F : 浮点数长度为8I :整数N :数值组成的字符串如:011,'302'P : PACKED数用于小数点数值如:12.00542T : 时间格式为:HHMMSS 如:'14:03:00'X : 16进制数如:'1A03'*-------------------------------------------------------------------------------------*变量声明DATA <F> [<Length>] <type> [<value>][decimals]<F> 变量名称<length><type> 变量类型及长度<value> 初值<decimals> 小数位数exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE 'DELTA'.S_DATE TYPE D VALUE '19991203'.exp:DATA : BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE DECIMALS 2,END OF PERSON.另外,有关DATA声明的指令还有: CONSTANTS(声明常数)、STATICS(临时变量声明).exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.STATICS 关键字声明的变量仅在目前的程序中使用, 结束后会自动释放语法:STATICS <c> [<length>] <type> [<value>] [<decimals>]系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的栏位存放系统变量,常用的系统变量有: SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,'0'表示成功SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction codeSY-INDEX: 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线TYPE 关键字用来指定资料型态或声明自定资料型态Example:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 关键字跟TYPE关键字使用格式相同, 如DATA TRANSCODE LIKE SY-TCODE.不同的是LIKE 用在已有值的资料项, 如系统变量, 而TYPE关键字则是用在指定资料型态。
ABAP知识总结

一.SAP在企业中的策略On premise(前提)(知识库—资源流程)完全面向对象的概念,通过面向服务的架构,解决核心业务。
On demand 通过创新进行功能的扩展并集成在业务的整个流程里。
On device(产品策略)通过扩展消费者的需求,以提供满足消费者的策略,扩展SAP 的功能。
这三项完美结合,能确保数据的联系性和流程的完整结合。
并通过多层应用对流程进行管理。
二.Sap 提供各种产品类型给不同规模的公司。
三.Sap business suite 提供适应不同企业需求的解决方案,还拥有大量针对特定行业的功能。
Sap netweaver 的知识库:核心应用(ERP/SRM/SCM)——工业应用——补充应用——SAP 应用的增强包四.Applications 和components不同的应用可以包含相同的组件。
Components(sap ECC= sap central component)五.逐步释放给广大用户使用:Beta 测试版——释放给用户(restricted)——无限制的释放给用户六.业务的生命周期(维护策略):主流维护(从限制到非限制)——扩展的维护——客户自定义的维护七.Sap netweaver的层次和主要功能:应用架构三个维度,三个集成:共三层人的集成(多渠道—portal门户和collaboration协作)——信息集成(主数据、知识、业务)——流程集成第四层:这三种集成的应用平台为java和abap数据库和系统DB、OS八.1、Sap netweaver 应用服务提供了:多级架构;可靠的运行环境(java和abap);很高的扩展性;操作系统和数据库独立;方便扩展环境;支持多种协议;对执行企业流程有高的安全标准。
、2、外部系统:表现层(支持多种用户接口,GUI 和browser )应用层(支持多种操作系统)数据库层(支持多种数据库)3、应用层——dispatcher,通过分发器对表现层直接进行控制通过ICM(内部通讯)控制九、/n 退出当前/nxxxx直接访问xxxx/n打开overview of sessions/oxxxx打开一个新的页面并访问xxxx/nend 关闭窗口,有提示信息/nex 直接关闭/i 删除当前窗口十、AS(应用服务器)中ABAP Processes:三种1.B/S Message server(MS):处理信息在位于AS ABAP的分布式的触发器之间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAP常用知识点SAP Basis学习2009-07-12 10:49:30 阅读249 评论0 字号:大中小包括:{系统变量|TCODE|消息类型|数据类型|变量声明|Internal Table} KEY: 1.常用系统变量2.常用TCODE3.消息类型4.数据类型5.变量声明6.Internal Table1.常用系统变量SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,’0’表示成功SY-DBLNT: 被处理过的记录的笔数SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DA TUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction codeSY-INDEX : 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: 當前系統編號(CLIENT NUMBER)SY-VLINE: 画竖线SY-ULINE: 画横线SY-PAGNO: 当前页号SY-LINSZ: 当前报表宽度SY-LINCT: 当前报表长度SPACE: 空字符串SY-LSIND: 列表索引页SY-LISTI: 上一个列表的索引SY-LILLI: 绝对列表中选定行的行号SY-CUROW: 屏幕上的行SY-CUCOL: 光标列SY-CPAGE: 列表的当前显示页SY-STARO:真实行号SY-LISEL: 选择行的内容,长度为255SY-LINNO: 当前行2.常用TCODEABAPDOCU ABAP文档和范例BAPI BAPI浏览器CMOD/SMOD 系统增强LSMW 数据导入工具PFCG 权限管理SA38 程序执行SCA T 计算机辅助测试工具,测试、数据导入等SCC1 集团拷贝SCC4 显示集团SE09 运输组织者,查询传输请求SE10 请求传输SE11 数据字典SE16 数据浏览器SE32 文本元素设定SE36 逻辑数据器SE37 函数模块SE38 ABAP编辑器SE41 菜单制作器SE51 屏幕制作器SE55 生成表维护程序SE71 FORM设计SE78 FORM、SmartFORMS使用图片上载SE80 对象浏览器SE90 对象浏览器SE91 消息设定SE93 维护事务代码SHDB 批输入事务SM04 显示在线用户SM30 维护表视图SM35 进程监控SM50 超时用户SMARTFORMS SmartForms设计SNUM 编号对象维护SO10 标准文本,设定Form使用的TIFF图片等SPAD 假脱机管理SQ01 Query查询制作ST05 SQL跟踪SU20 授权字段SU21 授权对象WE21 IDOC处理中的端口3.消息类型E 错误W 警告I 信息A 异常终止S 成功X 退出4.数据类型C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: ‘M’;D: 日期, 格式为YYYYMMDD, 最大是’9999/12/31’,例:’1999/12/03’.F: 浮点数, 长度为8, 例如: 4.285714285714286E-01I: 整数范围:-2^31 ~ 2^31-1N: 数值组成的字符串: 011, ‘302’.P: packed 数,用于小数点数值,例如: 12.00542;T: 时间, 格式为HHMMSS,例如: ’14:03:00’, ’21:30:39’.X: 16进制数, 例如‘1A03’.5.变量声明变量宣告包含name, length, type, structure等,语法如下:DA TA <F> [<length>] <type> [<value>] [<decimals>]其中: <f> :变量名称,最长30个字符,不可含有+ , . , : ( ) 等字符;<length><type>:变量类型及长度;<value>:初值<decimals>:小数字数6.Internal Table一. Internal Table 的宣告ABAP/4中的Internal Table是一种Data Structure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔数据表示某个事物,多笔数据表示具有相同属性的多个事物.例如:为了存取或记录某班的同学资料,我们创建如下的internal table:DA TA: BEGIN OF STUDENT OCCURS 20,STD_ID TYPE N,NAME(10) TYPE C,AGE TYPE I,BIRTH TYPE D,SCORE TYPE P DECIMALS 2,END OF STUDENT.此时我们已经创建了名叫STUDENT的internal table,并且为它预先申请了能够存放20笔资料的Buffer(当然,如果存取资料不止20笔,程序执行时,会自动申请系统Buffer)Internal table 的定义有以下几种格式:格式一. DATA: BEGIN OF <internal table> OCCURS <n>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <internal table>.格式二. TYPES: BEGIN OF <work area>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <work area>.TYPES <internal table> TYPE <work area> OCCURS <n>. 格式三. DA TA: BEGIN OF <work area>.INCLUDE STRUCTURE <table name>.DATA: END OF <work area>.DATA: <internal table> LIKE <work area> OCCURS <n>.二. APPEND LINE格式: APPEND [<work area> TO ] <internal table>.举例一. (使用work area)DA TA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,END OF LINE.DA TA ITAB LIKE LINE OCCURS 10.DO 2 TIMES.LINE-COL1 = SY-INDEX.LINE-COL2 = SY-INDEX ** 2.APPEND LINE TO ITAB.ENDDO.LOOP AT ITAB INTO LINE.WRITE: / LINE-COL1, LINE-COL2.ENDLOOP.执行结果为:1 12 4举例二. (不使用work area)DATA: BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 2 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX ** 2.APPEND ITAB.ENDDO.LOOP AT ITAB.WRITE: / ITAB-COL1, ITAB-COL2.ENDLOOP.执行结果与举例一相同.举例三. (加入另一个Internal table的元素)格式: APPEND LINES OF <itab1> [FROM <n1> ] [TO <n2>] TO <itab2>.将<itab1>的元素加入至<itab2>中,可选取自<n1>至<n2>的范围.APPEND LINES OF ITAB TO JTAB.三. COLLECT LINECOLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.格式: COLLECT [<work area> INTO ] <itab>DA TA: BEGIN OF ITAB OCCURS 3,COL1(3) TYPE C,COL2 TYPE I,END OF ITAB.ITAB-COL1 = ‘ABC’. ITAB-COL2 = 10.COLLECT ITAB.ITAB-COL1 = ‘XYZ’. ITAB-COL2 = 20.COLLECT ITAB.ITAB-COL1 = ‘ABC’. ITAB-COL2 = 80.COLLECT ITAB.此时, internal table中放的是2笔数据, 分别为:ITAB-COL1 ITAB-COL2‘ABC’ 90‘XYZ’ 20四. INSERT LINE将元素插入在指定的internal table位置之前.格式: INSERT [<wa> INTO] [INITIAL LINE INTO ] <itab> [INDEX <idx>]或者: INSERT LINES OF <itab1> [FROM <n1> TO <n2>] INTO <itab2> INDEX <idx>其中: <wa>即work area,工作区中的元素.[INITIAL LINE INTO] :插入一笔初始化的记录.<itab>: internal table[INDEX <idx>]: internal table 的记录号.(新加入的元素放在此记录前面)五. 读取internal table格式一:LOOP AT <itab> [INTO <wa>][FROM <n1> TO <n2>][WHERE <conditions>]<statement>ENDLOOP.格式二:READ TABLE <itab> [INTO <wa>] [INDEX <idx> / WITH KEY <conditions>]举例. (格式二)DA TA: BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 10 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX * 2.APPEND ITAB.ENDDO.READ TABLE ITAB INDEX 3.(或者: READ TABLE ITAB WITH KEY COL1 = 3.)WRITE: / ‘ITAB-COL1 = ‘, ITAB-COL1, ‘ITAB-COL2 = ‘, ITAB-COL2.执行结果同样是:ITAB-COL1 = 3ITAB-COL2 = 6.六. 修改internal table 中的值格式: MODIFY <itab> [FROM <wa>][INDEX <idx>][TRANSPORTING <f1><f2>…][WHERE <conditions>]举例一. READ TABLE ITAB INDEX 3.LINE-COL1 = 29.MODIFY ITAB FROM LINE TRANSPORTING COL1.将第三笔记录的COL1字段的值修改为29.举例二. T_SALARY –salary = 50.MODIFY T_SALARY TRANSPORTING salary WHERE birthday = ‘1999/12/06’.七. DELETE internal table中的字段格式: DELETE <itab> INDEX <idx>.或: DELETE <itab>[FROM <n1> TO <n2>] [WHERE <conditions>]八. Internal table 排序SORT <itab> [<order way>][BY <f1><f2>…]其中:<order way> 有DESCENDING 和ASCENDING, Default 为ASCENDING.<f1>: 为指定排序的字段.九. 加总SUM.总和计算存放与work area中,但只能在LOOP 中使用.例: LOOP AT ITAB INTO LINE.SUM.ENDLOOP.WRITE: / LINE-COL1, LINE-COL2.十. 初始化internal tableREFRESH <itab>. 清空<itab>中的值.CLEAR <itab>. 清空<itab>的Header Line.FREE <itab>. 释放记忆体空间.。