首页 abap练习培训笔记

abap练习培训笔记

举报
开通vip

abap练习培训笔记F1 F4帮助按钮   CLIENT代表虚拟的组织,并分为两种 1.       CLIENT-SPECIFIC / CLIENT-DEPENDENT 2.       CROSS-CLIENT / CLIENT-INDEPENDENT   CUSTOMIZING 分为两部分 1.       CLIENT-SPECIFIC 配置 2.       CROSS-CLIENT 配置   REPOSITORY OBJECTS仓库对象全是CROSS-CLIENT的   ASAP ROADMAP(SAP 配置路线图) 1....

abap练习培训笔记
F1 F4帮助按钮   CLIENT代表虚拟的组织,并分为两种 1.       CLIENT-SPECIFIC / CLIENT-DEPENDENT 2.       CROSS-CLIENT / CLIENT-INDEPENDENT   CUSTOMIZING 分为两部分 1.       CLIENT-SPECIFIC 配置 2.       CROSS-CLIENT 配置   REPOSITORY OBJECTS仓库对象全是CROSS-CLIENT的   ASAP ROADMAP(SAP 配置路线图) 1.       BASIS模块先对上线系统进行配置 2.       各模块顾问(例如MM ,SD)进行配置 3.       当需要开发额外功能的时候,ABAP人员进行开发   开发三种方式 1.CUSTOMER DEVELOPMENT  独立的开发  (推荐使用) 2.EXTENSION             加强的开发  (不推荐使用) 3.MODIFICATIONS          修改的开发  (强烈不推荐使用,可能对日后升级造成困难)   SCREEN功能: 用户可以通过屏幕输入数据库查询条件,并将数据打印出来(列表)并显示给用户   BUFFER: 每个应用服务器APPLICATION SERVER 都有一个大的SHARED MEMORY 而对于每一个 WORK PROCESS 都拥有一个 LOCAL BUFFER, 在LOCAL BUFFER 中可以存放一些 不经常改变的数据对象,或是只读的对象   SAP GUI的基本方式 1.       SAP GUI FOR WINDOWS (优点:操作数据速度较快  缺点:不跨平台,而且需要安装客户端) 2.       SAP GUI FOR JAVA (优点:可以跨平台 缺点:操作速度较FOR WINDOWS 略慢) 3.       SAP GUI FOR HTML (优点:0 安装 , 查看少量数据较方便   缺点:对网络传输 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 较高,速度较慢)   SAP BASIS DATABASE LAYER(数据库层) 在LOCAL BUFFER拥有一个TABLE BUFFER 可以将不经常改变的表放入到TABLE BUFFER中     系统之间的通信 多个DISPATCHER 由 MESSAGE SERVER 进行通信管理 多个系统之间由GATEWAY进行通信管理 INSTANCE实例间不能直接通信  要通过DISPATHER和MS进行通信   占有释放 ABAP与数据库的连接 ABAP不需要自己连接数据库,这不同于JAVA语言 每个工作进程启动后 就已经连接到数据库上了   长事务运行: 当有用户占用多个进程并且执行LONG-RUNNING ABAP PROGRAM(长运行时间程序例:死循环程序)时,其余用户只能使用剩余的少量进程,这会导致多数用户成为等待状态,速度会非常慢, 解决方法:通过BASIS人员对占用多个进程的用户 进行操作或删除,释放线程,缓解运行压力       BACKGROUND PROCESSING(后台进程)  特点:用户不能手动控制 例如:系统晚12点自动盘点 1.       分别配两个服务器 DIALOG SERVER 和 BACKGROUND PROCESSING SERVER 2.       DS 中的DWP在数据库中SCHEDULING TABLE(日程表)中插入JOB,设置后台线程任务 3.       BPS 中的 DWP定期(默认:60 S)循环查询SCHEDULING TABLE表,当发现有新的后台任务后,将任务转给 BPS 中的BWP 4.       BWP 根据任务 对数据库进行操作   打印机制 Printing SWP-打印进程 可以配置也可以不配置 但需要配置一个DWP 1.       用户通过点击打印按钮发送打印请求 (数据为可识别的编码方式) 2.       DWP 将打印请求放入到Spool Request-打印队列(可以是Database / File System)  (数据为可识别的编码方式) 3.       SWP 每隔一段时间就会到队列中寻找打印任务,当找到新的打印任务时,便执行打印任务. 4.       打印任务可以发送给本地Operating System Spool(操作系统打印线程)进行打印,也可以通过网络在远程打印机上进行打印(例:老总办公室的打印机可以远程接受远程打印报表)(此时数据是不可识别的2进制代码)     Lock Admistration 加锁机制 EWP 可以配也可以不配  必须配DWP如果配置该服务器就叫做加锁服务器 操作: 1.       使用Su3操作用户主数据(此时系统已经把数据库的用户主数据锁住了) 2.       新开一个session  再使用SU3 此时无法进入并修改用户数据,因为主数据已经被加锁 ewp锁住的是表在内存中所对应的对象 用户可以自己定义锁 锁的类型: Shared lock共享锁(read lock)        同时读读兼容        同时 读写或写写不兼容 Exclusive lock独占锁        只要用户独占 不允许任何操作(增删改查) 注:如果锁对象被激活,系统将会自动生成两个function module 加锁方法 和解锁 Enqueue(加锁)  dequeue(解锁)   Dialog server 必须要依附于能加锁的服务器进行加锁 要通过领导 加锁是给内存中的表的对象加锁,通过锁内存锁数据库 目的是锁数据库     Multiplexing  多路复用 原理:有线电视利用有线电视传输间隙进行网络传输 DWP的处理流程 用户在点击按钮的时候,可能执行一个或多个ABAP程序,可能有一个或多个请求 程序之间可能有串联关系, 当第一个程序完成后 会带动第二个程序运行,但是这个程序也需要放到队列中并等待空闲线程. 只有当所有的程序或请求都执行完毕后,才能够出现效果 PBO  : process before output PAI   : process After input   Abap screen 在弹出的时间点之前之后分别要触发两个事件    PBO  和PAI 处理一个事件,需要添加相应的代码加以实现 事件的触发机制  trigger 为事件所写的代码块叫做 event block 注:同一个程序  屏幕编号不能重复   一个屏幕前后的PBO PAI 不一定能在同一个DWP中,由于时间的关系, 系统可能会把它们分到不同的DWP中. 但给用户的感觉却是流畅的.   Enterprise Structure:企业架构 在逻辑上的大小顺序: Client > company code > plant > Sales Organization > Division > Storage Locations   client(集团)代表企业 企业的分支机构都拥有公司的编码 下属工厂进行生产 销售组织 子机构 仓库   注:系统上线之前 要把所有组织机构 全都要配置到R/3中     Customer master 客户主数据 采购冰箱  general data 公共数据 financial accounting data  财务 信息 g/l   总账     数据库的转换 Sap中成品半成品 都算是物料 Message Type 分三种类型: 1.       immediately 创建订单的时候 立即创建发票 2.       on request 有需求时创建发票 3.       next selection run or at a specified time 在指定时间里 创建发票     Message Type消息的类型包括: 在屏幕上看到发票 在打印机 传真一个发票 Email 传发票 Edi 电子数据交换     Business Workflow 工作流 Employee 员工  Supervisor 上级/长官 场景: 1.       员工需要预约  在电脑上填写预约申请 2.       通过工作流处理 上司电脑上接到预约申请 并做出决定 是否批准 3.       批准后 工作流结束 4.       如果没有批准 被拒绝的预约申请消息会被传送到员工手中,并需要进一步决策,是否需要重新修改申请表,或者是不修改申请表,直接结束工作流 5.       如果重新修改申请表,上级则再一次得到申请表,如果批准,则工作流结束 Business Scenario 工作场景 利用场景解释工作流     Abap program process  ----Main Business Scenario Sap abap 必须要有业务场景 飞机场的业务模型Sap flight date model Departure city 起飞城市 Departure airport  起飞机场   Destination airport 目的机场 Destination city 目的城市   帮助旅行代理或旅行社订票的基本需求: 在特定的时间到指定的地点 处理特定的航班订票 附加的信息 Price 价格 Capacity 容量 非常重要:航班模型的表: SCARR 航空公司表 SPFLI 航线表 SFLIGHT 航班表(订票时所需要的表)   以上表的关系是树形关系 一个航空公司对应多个航线,而一个航线对应多个航班   Client/Sever Architecture Work process 可以执行ABAPprogram   应用服务器一分为二: 1.       一部分可以执行JAVA程序 2.       另一部分是ABAP程序   Black box 黑盒  对于gui和用户来说相当于一个黑匣子   View for the User 用户视图 screen标准屏幕:standard screen  dynpro  dynimic :功能  用户输入 ,为了插入数据库,  selection screen选择屏幕: 功能:接受用户输入的查询的条件 对数据库进行查询(一般情况下) List列表功能:将数据显示给用户(重要:每个ABAP程序员 必须 要掌握)     Interaction Between Server Layers 在服务器中两层之间的交互 ABAP程序启动时要到WP中执行程序  同一个 程序 分成不同块 Start of screen   Abap 所有的 repository 全都在数据库中储存 程序的背景  context 定义选择屏幕时,所添加的屏幕字段,是根据数据字典中的字段定义的 所以定义前要从repository中去查看需要哪一种类型的字段   屏幕 内存 以及硬盘上的字段变量都对应相同的 但是储存的位置不同 在程序中,可以把内存中的变量当作数据库条件使用,使用where语句进行数据库操作 然后 数据库将结果集返回给ABAP 程序, 最后返回给列表屏幕   程序 可以 将内存变量当作 条件 重要:在新版本中Development classes  属于变化了 package 包     Abap运行过程需要使用repository (储存在数据库中)  仓库都跨client 依赖分两部分 配置表 应用表   Repository 结构 Repository(仓库) 包含 application components(应用组件) 和 package (包) Package(包) 中包含 Repository Objects(仓库对象)   重要:创建的仓库对象必须放到一个包中   管理对象的系统就是 Information System信息系统   Object navigator  IDE 集成开发环境   Abap dictionary  se11   维护 Class builder    Se24  面向对象开发 (Abap语言刚开始是面向过程 后来也支持面向对象开发) Function builder  se37全局方法 Abap editor      Se41  在修改sap 自己的程序时 Screen painter     Se80 中的主要构成   Navigation area Repository broswer Transport orgnization 非常重要 Context menu  弹出菜单   Sap 仓库对象分成两部分 系统标准对象     用户对象 Sap namespace     customer namespace(必须用Y或者Z开头) 重要:只要是自己创建的 必须要(Z Y 开头)     组织有效开发 Sap 三系统架构图 3-system landscape 1.DEV 开发系统 2.TST/QAS 测试系统 3.PRD 生产系统   优点: 三个系统 可以降低企业风险   开发  测试  生产 DEV ---  TST/QAS |  (需要盖章)  PRD 组织步骤: 1.       配置或程序开发完毕后 需要发送至测试服务器进行测试 2.       测试完毕后 需要盖章 然后发送至生产系统 ,此时生产系统停止运作 3.       配置完毕后 生产系统重新启动 运作   相邻两系统需要从左到右进行传输(开发/配置)(transportation) 配置的传输包括模块的配置: MM PP SD等. 优点:开发的组织有利于传输   Sap 传输请求 Change Request变更请求 = Transportation Request传输请求 请求的创建是为了传输 开发请求 workbench change request请求   所有开发 以及配置的东西 必须放到 request(容器)中 Change request 进行传输 相当于  project Change request 下可以装package 不是每一个对象都需要设置request 比如不参与传输的对象Local project,可以不参与传输 创建project的时候点击SAVE便创建了全局对象(需要设置request 以用于传输),点击local object 可以创建本地对象(因为不需要传输 所以 不需要设置request)   Project 项目的三个重要标准 1.       项目本身 2.       开发项目的人员 3.       项目开发的时间 当项目开发人员完成所有任务后,项目负责人便可以 release project (释放工程),然后才能够向下一个系统进行传输     Change request (变更请求)的命名 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 前三个字母是系统的标识(DEV ,TST/QAS, PRD) +K9+5位数字     老师的要求的命名规范: Z开头 + project name + 3个数字(用户号)   Abap中的包不可以重名   创建project的时候需要选择相应项目经理的request   激活:一个仓库对象 有激活和非激活概念  课前预习练习: 海尔需要二次开发 项目经理BOB需要做哪些事 首先需要开发change request –CR   习题1:当ABAP Interpreter在解释ABAP程序的时候发现一个 OPEN SQL语句 它会将OPEN SQL发送给Database 答案:错 原因: 当ABAP interpreter 遇到OPEN SQL的时候,它首先会把它交给 Database Interface 进行处理, 然后查看local buffer 中是否存在需要的数据, 如果没有所需数据 , 才会进入数据库进行查询   习题2: Database Interface 总是从 数据库中调取数据 答案: 错 原因: 当local buffer 中有所需数据时, 只需要从中获取就可以了,不用进入数据库进行查询       ABAP语言的特征 1.       Open SQL 是ABAP 语言的一部分,是嵌在ABAP语言中的,它不同于JAVA,SQL 并不是JAVA的组成部分 2.       Abap的基本特点:早期是完全面向过程的,而后发展为支持面向对象,它不是完全面向对象的语言,它是一种混合的模式               面向过程:  一个方法不属于一个类或一个对象               面向对象:  方法一定属于一个类或一个对象 3.       Platform-independent 指的是可以跨数据库平台,Abap platform 指的是datebase 4.       ABAP语言是基于会话的.主要面向business application-商务应用,一个有意义的ABAP程序一定要操作数据库,然而ABAP不能对底层进行操作. 5.       Downwards compatible向下兼容: 过去的老语法现在仍然支持               例如:在定义一个内表的时候 可以加addtion (with head line) ,在新一代的ABAP编         程中不建议定义with head line 而是使用采用其他方式,但是这种语法仍然支持   ABAP的基本语法 1.       ABAP 程序是由若干语句构成的 2.       第一个单词必须是 ABAP的keyword关键字 3.       用英文的句号”.”关闭ABAP语句 4.       两个单词之间用空格分隔. 5.       可以缩进 6.       多条语句可以写在一行(不建议),相反一条语句也可以写在多行 7.       ABAP 大小写不敏感 注:放在单引号中的(字符串)是大小写敏感的   Addition-附属语句(相当于英语中的从句)可以加强语句功能   Pretty painter : 功能:可以设置语句缩进和关键字大小写.   Comments 注释 开头为asterisk (*)的语句为注释语句 ,注释行运行的时候会被忽略   Chained statement 链语句 在使用相同关键字时,为了方便编程,可以使用链语句. 重要:虽然链语句的代码量相对较小,但它的功能只是为了方便编程人员编写代码,链语句并不能提高程序本身的性能, 因为编译链语句时,系统并不是当成一句执行的,而是单独的进行编译的,效果和写若干个单独语句是一样的. 例: write: wa_scarr-carrid,               wa_scarr-carrname,               wa_scarr-url.   写法:关键字后使用Colon(冒号),每一个单独语句用comma(逗号)分隔     Return value返回值 Sy-subrc :Sy是结构体变量,属于全局变量.Sy-subrc 中的rc return code 功能:存放系统当前状态    Sy-subrc = 0 : 表示刚才执行的语句执行成功了 如果不为0 则表示执行不成功     Inactive and Active Development Objects激活概念:   1.       建立程序 2.       取消 with top incl (如果一个程序中需要引用其他程序,需要这个选项) 3.       TYPE 选项中需要指定        excutable Program (相当于带main函数的java类 ), 到处可以运行        module pool包含dynpro 屏幕.不能直接启动,需要打包TCODE 或放入菜单中运行.        include 是其他程序调用运行的         subroutine 是子程序 放局部程序          function group        interface 相当于java中的接口  . 4.       逻辑数据库 选项 5.       程序所建立时的系统名称 选项   F1帮助: 将鼠标放到关键字中 按F1然后会出现帮助.选择instrcution 指令便能提供详细的帮助说明 在帮助说明中. “[]” 扩起来的都是 optional 可选的Mantatory 强制的     激活的概念: 对于一个对象来说,有两种状态: active(激活)和inactive(非激活) 然而对象的版本却有多个: 当一个被编辑的对象为inactive 时,保存后,它便是一个临时的版本. Active 的优点: 避免使正在编辑中或出现BUG的程序被发布. 当要激活一个出现语法错误的程序时,系统会自动提示存在语法错误.用户可以修改程序之后激活,也可以强行激活程序       认证考试技巧:如果一道题 的提干非常的绝对,例如出现must,have to ,any time等词,这种题的答案大部分 是错误的.     创建 transaction code 当需要把ABAP程序打包成TCODE时,按照以下步骤进行操作 1.       激活需要打包的ABAP program 2.       右键程序create--Transaction 3.       输入相应TCODE 4.       输入short text 5.       选择第二个选项 6.       输入需要打包的程序名 7.       选择可以执行该TCODE 的GUI 注意:TCODE 也属于一个仓库对象也可以传输 授权机制:只有当basis管理员授权后,才能够使用TCODE   Package 包的 建立 注意:包也属于仓库对象,也需要传输 1.       输入包名,建立相应的包 2.       Transport layer 配置传输层 3.       设置包的类型   重要:包的类型 Main package 主包 特点:只能包含包 Not a main package 普通包 特点:普通包可以包含包 也可以包含repository object对象   重要:包一旦创建完毕,就不能再修改包的类型了   当F1帮助不足以满足需求的时候 ,  可以采用help 中的 SAP library 寻求帮助     程序的拷贝: 1.       右键程序 COPY 程序 2.       修改COPY后的程序名 3.       将所有选项选中(可以copy 包括screen 一系列的东西) 4.       选择程序存放的包       注意:仓库中的数据字典是用来存放数据结构的  而数据字典中不存放程序   管理信息系统 1.       先分析客观世界存在的实体 2.       分析出实体之间的关系 3.       把客观实体的关系抽象出概念模型 4.       (一般系统只是直接生成物理表) 在ABAP中,先把概念模型放入字典库 ,创建透明表(Transparent table) 5.       透明表 和数据库表进行一一映射   透明表 Transparent table 透明表是字典库中的对象,是物理表的描述 理解:透明表就是物理表的表结构 透明表描述物理表 有哪些字段 长度 类型 主键 外键   重点: 在建立透明表 并激活后,系统就会在数据库建立一个唯一同名的物理表与之相对应   Flight Data Model 机场数据模型 一个航空公司 对应 多条航线 一条航线 对应多个航班 一个航班 又可以被旅行机构定出多张票   一个航线 包含两个机场 一个机场对应多个航线   不是每个城市都有机场   任何一个城市都是0个或N个机场   对于乘客来说  逻辑上有多个机场 机场也对应多个城市   场景:鞍山没有机场,但是大连沈阳有机场,相当于鞍山有两个逻辑机场     将模型转化成透明表 Scarr---Airline (航空公司表) mandt字段 (client id) 所代表记录可以标识是哪特定client 的记录,所以凡是表的第一个主键字段是mandt(data element 是s_mandt) ,就标识该表 一定是 client-specify 的数据   重要:在两张表之间, 字段多的那张表 依赖 于字段少的那张表(由于多字段表中 有外键字段 )   主外键 主键: 一个表的概念 在某一张表  某一个字段或某几个联合字段能够区别于任何一个字段 外键: 两个表的概念 主键表和外键表   外键表中的单个字段或者多个联合字段 是主键表的主键, 则称这写字段是该外键表的外键 主外键关系:主键表有约束外键表的行为 Scenario 场景 学生表(主键表)   成绩表(外键表) 当学生被开除后, 在成绩表中插入该学生成绩的时候 就会有插入异常       Transparent Table透明表的定义 透明表的定义有两种方法: 1.       像传统表一样 直接通过类型定义字段 2.       通过三层结构进行定义(推荐)   透明表的三层结构定义 1.       定义透明表 2.       根据Domain 建立相应 Data element 3.       根据Data element 定义相应字段   Data Element 功能: 可以定义字段的类型 Data Element分为两部分 1.       语义上的特点—描述它的作用  , 语义上的特点会被定义在字典库的对象中 2.       描述字段技术上的特点-----传统的数据类型, 长度 以及取值范围 . 技术上的特点 要通过引用字典库的对象 domain 来定义     Domain 表示一个域, 可以有长度,和范围   重点: 可以用data element 来定义 透明表字段,结构体字段以及内存变量的类型, 但是 Domain 则不可以,它的只能够靠DE 间接使用     透明表只是一个表结构不能够包含数据 物理表可以存放原数据   通过se11 可以对字典库数据对象进行维护 不要对 sap的系统表 进行change 或是 create   在结构体中每个字段 叫做 component Component type 就是字段类型   Data object一般可以理解为内存变量,但它不仅仅是内存变量,它还包含:变量 常量文字    例: I = 200   200也叫data object 可以使用全局结构体 定义 data object   数据类型TYPE 1.       系统原有的数据类型 2.       用户自己定义的数据类型   通过keyword  Tables也可以定义一个结构类型, 后面跟一个透明表的名   在字典库中的 结构体用来负责定义内存变量,而透明表可以代替结构体直接定义内存变量   透明表与结构体的共同点与不同点 相同点: 1.       它们都是多个字段的集合 2.       字段都可以使用Data element来定义 3.       它们都可以定义内存变量或内存数据对象   不同点: 1.       透明表除了能够定义内存结构体之外,它的主要作用是定义物理表的表结构.而对于结构体来说,结构体的作用是描述内存结构的 2.       透明表主要描述的是硬盘上物理表,也可以描述内存变量,而结构体只能描述内存变量.因此.由于透明表与物理表结构相同且不可分解,所以,透明表是不可以嵌套的. 但结构体是可以嵌套的(嵌套结构体,或者internal table内表) 3.       结构体没有主外键,而透明表有主外键     结构体的构成可以一分为二  1.       flat structure 扁平结构体 2.       complex structure 复合结构体   当透明表取代结构体 定义内存变量的时候,那此时的透明表一定是Flat structure ,而且定义出的内存变量也是flat structure   重要:透明表只能是扁平的: 当一个透明表是client-specify 的时候, 它的第一个字段一定是 MANDT . 所以它创建的数据对象的第一个字段也是  MANDT, 因为数据对象的字段数与透明表的字段数一样多. 而且定义出的数据对象 也一定是Flat structure   Transparent Table 透明表, field 字段, Data element 和domain 都是对象   采用parameters 定义变量 Parameters pa_carr type spfli-carrid. 1.       系统分配内存 2.       变量自动会被ABAP运行环境解释成selection screen   注:如果是单纯的 Data 定义 变量,只能够分配内存,而不能够创建selection screen   Parameters 和 Data 的共同点与不同点 共同点:都是内存变量 不同点:data 是纯内存变量,Parameters 还赠送一个屏幕     F1 与 F4 帮助 F1:当采用字典库中并有Data element 的字段时, 可以使用f1帮助, 它可以显示出DE语义上的特点 F4:需要单独制作(字典库对象)search help 功能:显示出可选值     Data type数据类型 数据类型分为两种: 1.       数据库中自带的类型 2.       字典库中的对象类型   数据类型可以定义哪些变量 1.       定义内存变量 2.       可以定义ABAP subroutine 子程序的参数 3.       在Abap object-oriented面向对象中 定义类中的属性和方法 4.       在function mudual 中定义参数   ABAP中的各种对象 1.       ABAP dictionary object        Structure 结构体        Internal table 内表        Repository Program type 仓库中的程序类型 2.       data object内存中的对象,需要分配内存的对象 3.       object-oriented 面向对象 中的类所创建的instance实例对象   ABAP中定义变量使用的三种类型: 1.       ABAP predefined standard type 天生自带的类型 2.       用户自定义的数据类型(局部类型) 3.       数据字典中的类型(全局类型) 注意:数据类型不占内存,只有定义后的变量才占内存,domain不能用来定义变量   注:教材中的黄皮书代表字典库global data types   ABAP predefined standard type ABAP自带类型 一.   Complete type 完全类型(不需要指定长度) d(日期): YYYYMMDD 例如”20071028” t(时间): HHMMSS i(整形):4bytes f(浮点型): 8bytes string(字符串):   注:区别c类型,前者可拓展后者为定长 xstring(16进制字符串):16进制字符串 例如’0000ff’   二.   Incomplete 不完全类型(需要指定长度,如果不指定,长度为缺省值) p(用数字表示的字符串):  data p1(10) type p value ‘3.14’. c(字符串):   data c1(8) type c. 缺省为 c1(1) 用一个字符 表示boolean 默认x代表true n(数字字符串):本质上是字符串,代表的是数字只能使用十进制数字, “.”和”-” x(十六进制字符串):必须指定长度的16进制的字符串 相当与xString   特别注意: P 为压缩类型, 当声明长度为3时,它所占的内存为 3*2 = 6 bytes 每个数字占用1个byte, 然而正负号以及小数点需要占用1byte.假设P类型长度为n,则该类型所能容纳的数字个数为 n*2 – 1 个.     Local types 自定义类型定义 使用types keyword关键字 定义 local types 只能在本程序内部使用 例: Types type_name(10) type c. Data do_name type type_name.   使用DATA定义内存变量: 1.       可以使用type选择类型 例:Data do_name type type_name. 2.       可以使用like关键字 根据变量声明变量. 3.       赋初值可以使用 value 关键字 例data m_i type I value 17. 重要:用 like定义变量 只能拷贝目标变量类型,而不拷贝值     题目: Given:    Tables spfli. which of the following statements are correct? choose the correct answers:   A. this statement difines a transparent table B. this statement difines a table which type is a transparent table named 'spfli' C. spfli-carrid = 'AA'. may be a correct usage D. it  defines a data object. E. spfli is a transparent table's name , and it's also a struture data object whose data type is a transparent table of spfli as well     答案cde E. spfli is a transparent table's name , and it's also a struture data object whose data type is a transparent table of spfli as well:  spfli 是一个透明表, 用他定义了一个同名的结构体类型的数据对象     which of the following statements concerning the usage of PARAMETERS are correct? choose the correct answers: A. PARAMETERS pa_carr   TYPE  spfli-connid. B. PARAMETERS mypa_carrid   TYPE  spfli-connid default '0017'. C. PARAMETERS myid   TYPE  spfli-connid value '0016'. D. data   myid  type spfli-connid.    PARAMETERS myid1   like myid . E. PARAMETERS myid   TYPE  spfli-connid value '0016'. F. PARAMETERS myid1   type spfli-connid default '0018'.   答案:A D F   B. PARAMETERS mypa_carrid,  mypa_carrid不能超过8个字符 Fixed data objects(固定数据对象) Literal:文字  例:”hello world” Constant: 常量 使用constants 可以定义ABAP常量, 注: 常量第一次被赋值后,就不能再更改   Data object(数据对象)包括 变量 literal文字 constant常量     Value assignments(赋值) 早期赋值:使用关键字 move A to B 进行赋值 (类似于汇编语言) 新赋值: A = B 注: “=” 左右要各有一个空格 注:常量在定义期间就需要赋值.   Calculation (计算) 早期运算: 使用关键字 compute 新运算: 不使用关键字compute   Sbc400focc是数据字典中的结构体,表示占坐率. Arithmetic expression nested 可以互相嵌套   重点: “/” 与 div 区别: 1.“/” 运算后结果被四舍五入 2.Div 运算后的结果可以取整但不四舍五入   Strlen方法可以计算字符串长度  length = strlen ( cityfrom ) Conditional branching(条件分支) 分支语句包括: 单分支,多分支. 单分支:if 多分支:case  注: case后要跟变量, 跟常量没有意义. 注意: 分支语句中的每一条语句必须以”.”作为语句结束,并使用endif / endcase 作为分支语句结束.     If三种句式 If c1        St1 Endif   If c2        St2 Endif   ……n 执行结果最少为0 最多为1 If c1  St1 Elseif c2  Str2 …n Endif. 执行结果最少为0 最多为1 If c1  St1 Elseif c2  St2 …n Else …… Endif. 有且只有1个结果执行 老师包名:ZBC400_200 ZBC400_200_01 – 08 老师的包 Loops(循环) 循环一共分5种 Do [ n times ] […].        Stat. Enddo.   Do.        Stat.               If        Endif. Enddo.   While(logical_expression).        S1. Endwhile.   Loop at …        Stat. Endloop.   Select …        Stat. Endselect.   loop counter :sy-index (计数器) Sy-index 是全局结构体变量 注:只适用do 和while循环,不适用于select 和loop循环   注意:在abap程序中没有boolean类型, C(1) 可以用来判断正误,‘X’ 代表正确   循环退出关键字 Exit:退出循环 Check:后面跟条件,当满足条件时,退出循环   注:在非easy access 中需要使用/h + tcode 来结束当前屏幕进入目标屏幕. Dialog messages(会话消息) Messaga( 消息 ) 作用: 给用户提示消息,可以弹出窗口,也可以显示在状态栏中(由message type 控制)   Message tnnn ( message_class )[ with v1 [ v2 ] ….]        Tnnn: 消息类型 nnn是三位消息的编号        Message class: 消息类型(理解为消息的包)        中括号中作用 传送变量   Type 类型          S:status message 程序不中断 显示在状态栏          I:information 程序先中断在执行 模态窗口显示          W:warming ----context dependent状态条显示          E:error ---context dependent  状态条显示          A:termination   模态窗口显示             X short dump  把堆栈倒出来便于调试.   modal模态 弹出对话框以后,该窗口会占据所有的焦点(不能点其它窗口).而在非模态中,可以随意切换窗口.   几种中断的区别: interruption中断(计算机中断),但不结束程序 termination, 终止 结束程序 abort 退出程序,异常退出 exit 退出循环   带参数传递的消息 每次执行程序的时候 可以传递参数 在message 编辑界面中的 text 栏里 加 &1-&n ,也可以加多个,用空格隔开 ABAP Debugger   作用:跟踪内存变量的变化 右键点击程序execute – debugging 进入调试界面 Abap调试工具分为老版本和新版本 版本切换切换debugger – switch to classical debugger 转换版本   Single step 执行单步 Return 如果进入一个子程序 , 直接返回 Run 直接到下一个断点 用鼠标双击语句 设定断点 双击变量或结构体 可以查看值   半路杀入法 在进入一个selection screen中后 在command film 中 输入 /h 再运行 就是debug状态   Structure 结构体 定义结构体主要有两种类型 1.         来自于全局字典库 a)         Tables spfli. 定义了一个与透明表同名的结构体变量. b)        Data sa type spfli. 通过透明表定义了一个名为sa的结构体变量 2.         来自于用户定义的 局部结构体类型: Types: begin of  st_XXX…...         …        End of st_XXX. 根据局部结构体类型定义结构体. Data wa_XXX type st_XXX.   Addressing structure components.(结构体的访问) 结构体-字段名 Wa_scarr-carrid. 结构体类型的字段是 类型 结构体变量的字段是 变量   结构体字段同名拷贝 Move-corresponding wa_flight to wa_focc. move:当两个结构体 结构和类型 完全相同时拷贝才会不出现问题. Move-corresponding : 同名字段拷贝, 拷贝两个结构体的交集 (同名同类型的字段).   Move-corresponding机制: 双循环, 先取第一个结构体中第一个字段,然后到另一个结构体找同名字段进行匹配   Internal tables 内表(重中之重) 内表:Internal memory table 内存中的表   信息系统的三层结构 1.         计算机屏幕 2.         内存 3.         数据库表   注意:在ABAP语言中不提供二维数组,内表相当于二维数组, 它是一个表示内存的二维数据结构(m行*n列). 与传统二维数组的区别,二维数组的m*n 在编译期就已经确定多少个房间了,而内表的行数量是可以动态拓展的.   内表可以与以下几项进行数据交换 屏幕 磁盘文件 数据库表 打印机(只能将数据传递给打印机, 而不能反传)   Attibutes of internal tables. 一、Line type 内表行类型 1.         确定行类型 就是确定行中的 字段 和 字段类型 2.         用结构体 或 透明表 可以作为内表的 行类型 3.         内表可以当成数组. 4.         采用只有一个字段的结构体 或 一个不可再分的类型作为行类型,此内表就相当于一个数组 二、Key definition.键定义(和主键很像) 1)        Table key 表键 2)        Table key:unique(唯一) / non-unique(不唯一,区别数据库) 3)        Components :构成键的字段,顺序敏感 , 顺序不同  table key也就不一样   三、Data access type 数据访问类型 1.         Index access根据行号访问 2.         Key access 根据table key访问 内表的类型 一共有三种内表类型 1.         Standard table       访问: index access(推荐) , key access        Table key: non-unique 2.         Sorted table        天生就有排序的功能,插入数据后就会按照 table key排序        访问: index access , key access(推荐)        Table key: unique / non-unique 3.         Hashed table        访问: only key access        Table key :unique.        Sorded table , 推荐使用 table key 访问,天生排序 自动按照二分法 查找 Full scan 全表扫描 Binary search 二分法 对排序后的线性结构,先折半, Hash table 不能通过索引访问        Table key unique   Index tables 线性 Hashed table 相当于一个筐.   内表的定义 定义内表 1)        通过字典库的内表类型定义内表变量 2)        采用局部内表类型定义内表变量   Tables <结构体>/<透明表>. 创建与<结构体>/<透明表>同名的结构体   通过Se11可以查看字典库中的内表和透明表   对内表的操作 对内表操作,需要先建立一个结构体 使用结构体对内表的数据进行操作     在一个排序内表中 例如行号分别是 a,b,c,d,e  当插入一个 table key 为d的数据时 系统会将该条记录自动插入到c数据后面     change修改:  modify table itab from wa [] 先将数据放到一个结构体的 然后 将结构体覆盖回去   Collect 操作语句: COLLECT wa INTO itab table key 后面的字段需要都是数字类型的字段,  这样可以进行累加   Collect 语句流程: 1.       非table key字段必须全是数字 2.       当使用该语句进行插入时,如果结构体的table key字段和内表中的table key字段相同,系统将会把结构体中 非table key字段中的数值累加到内表的相应字段中. 3.       如果table key字段没有对应, collect 操作将相当于 append,将数据追加到内表的末尾   对内表多行记录的读取  Loop at itab into wa .        对wa进行处理  Endloop.   Delete itab   Insert lines of itab2 . Into itab1 .   Append lines of itab2 to itab1.     注:对于标准表来说 insert如果没指定位置就相当于append     Sort 排序 Sort itab . 对标准表有实际意义 Condition : by f1 ascending / descending     1.     
本文档为【abap练习培训笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_522921
暂无简介~
格式:doc
大小:183KB
软件:Word
页数:82
分类:互联网
上传时间:2011-10-12
浏览量:38