SAP ABAP 点滴记录
转自:http://www.cnblogs.com/wolly/archive/2010/11/19/1881838.html
*****************************************************************************************
系统字段篇——STRUCT:SYST(2007.09.24<U...>2007.10.11)
*****************************************************************************************
SY-SUBRC:语句执行后的返回值,0表示成功
SY-DATUM:当前服务器日期
SY-UZEIT:当前服务器时间
SY-ULINE:255长度的水平线
SY-VLINE:垂直线
SY-INDEX:循环说执行的次数
SY-TABIX:内表循环的次数
SY-DYNNR:当前Screen号
SY-MANDT:当前登录的Client号
SY-STEPL:返回当前操作的屏幕行号(Table Control)
SY-LOOPC:当前表格控件在屏幕中的总行数(Table Control)
SY-UCOMM:PAI所出发的功能代码
SY-DYNNR:当前屏幕号
SY-MSGID:Message Class
SY-MSGNR:Message Number
SY-MSGTY:Message Type
SY-MSGV1~4:Message Variant
SY-LINCT:REPROT语句中设定的LINE-COUNT
SY-LINSZ:REPROT语句中设定的LINE-SIZE
SY-SROWS:当前窗口的列表行数
SY-SCOLS:当前窗口的列表栏目数
SY-PAGNO:当前页的页码
SY-LINNO:当前选定行的行号
SY-COLNO:当前选定列的列号
SY-LSIND:当前列表索引,第一级列表为1
SY-LILLI:选择某行时光标行位置
SY-CUROW:选择某行时光标列位置
*****************************************************************************************
Dynpro篇——SE80(2007.09.25<U...>2007.10.08)
*****************************************************************************************
1. 在PAI中,ok_code需要及时赋值给另外一个变量,并立即clear,随后对新的那个变量来case
2. 屏幕调用
(1) SET SCREEN next_screen_number: 指定当前屏幕的后续屏幕,在PAI中静态指定的后续屏幕将暂时被覆盖
(2) CALL SCREEN screen_number:挂起当前屏幕,进入新的屏幕或事务(即插入新的屏幕流)。
CALL TRANSACTION tcode 在新的屏幕中,通过LEAVE SCREEN TO SCREEN 0即可返回挂起的屏幕序列上
(3) LEAVE SCREEN:未完成当前屏幕控制流就要转入后续屏幕
(4) LEAVE TO SCREEN screen_number:未完成当前屏幕即进入指定的屏幕或事务
LEAVE TO TRANSACTION tcode
(5) SET SCREEN 0, LEAVE SCREEN或LEAVE TO SCREEN 0:终止当前屏幕
3. MODULE module_name AT EXIT-COMMAND:只能在PAI中使用,会由于以"/E"开头或者E型的function而触发(一般就是Back、Exit、Cancel)
4. FIELD field_name MODULE module_name:可以对field执行所指定的module
5. Table Control的数据源如果来自多张表则可以自定义一个work area
6. 要让Table Control能够拥有行选择的能力,可以在导航中指定,需要work area中有一个没有被选择显示的列
*****************************************************************************************
报表(1)——系统报表篇(2007.10.08)
*****************************************************************************************
1. 报表类型:SAP核心系统及定制过程中已经存在的报表
使用ABAP开发的报表
使用其他系统工具(如SQP Query)开发的报表
2. Quick Viewer——SQVI:提供形式不固定的Adhoc报表(非日常性的业务报表),是SAP提供给用户的最终系统中的一个简易报表生成工具
(1) 每个系统用户只能定义自己的QuickViews,其他系统用户不能共享该列表。因为它不是SAP传输系统中的一个组件
3. SAP Query——SQ01:较为复杂,涉及到用户组和功能区域。
(1) 开始查询后,SAP系统内部将根据Queryies中定义的列表字段自动生成一个内部程序,该程序读取数据源,处理并输出数据
(2) SAP Query具有管理功能,主要指数据源和用户组的分配,即设定功能区域和用户组,并将功能区域分配给各个用户组。其中功能区域代表查询数据源,即数据库表和其中的字段,往往参照逻辑数据库生成;而一个系统用户如果需要创建Queries,则该用户必须隶属于至少某一个由系统管理员预设定的用户组,并可以使用属于该用户组的功能区域。一个SAP系统用户可以使多个用户组的成员,功能区域和用户组是多对多的关系。Queries总是隶属于特定的用户组中特定的功能区域生成的,因而只有该用户组内部用户才能访问其中的Queries。
如果某用户被分配置多个用户组,则该用户可以在用户组之间切换。因为Queries总是与相应的功能区域相关,所以,如果两个用户组都包含同一个功能区域而且某授权用户同时属于这两个用户组,这该用户可以将其中的Queries从一个用户组拷贝至另外一个用户组。
(3) SAP Query可以生成多种类型的列表:
基本列表:可以为单行或多行,多行的基本类表还可以进行压缩
统计列表、排序列表:要求列表中至少包含一个数值字段,且数据行数可能被压缩
局部列表:一个Query中包含多个局部列表,而在打印过程中可以单独打印
(4) 不能有用户提供执行设计生成交互式列表,但在列表过程中提供一些标准的交互功能:如将生成列表传递至系统内部或外部的其他工具(Excel、ABC Analysis等),并以图形的形式或者以交互表格的形式显示列表。
4. Quick Viewer和SAP Query的区别
(1) SAP Query可以创建基本、统计和排序等格式的列表;而QuckViewer只能创建基本列表,不包含统计、排序等交互性
(2) SAP Query可以被多个用户共享,需要进行用户组和功能区域的设置,并可以在系统间传输;而QuickViewer是具有用户相关性的
*****************************************************************************************
报表(2)——报表设计概述篇(2007.10.10)
*****************************************************************************************
1. 报表事件:
INITIALIZATION:程序初始化,类似于C#中的窗体构造函数
START-OF-SELECTION:选择开始事件(默认事件),在选择屏幕的处理结束后触发
END-OF-SELECTION:选择结束事件,在所有逻辑数据库处理结束后触发,一般用于输出列表
2. 选择屏幕事件(在INITIALIZATION和START-OF-SELECTION之间触发):
AT SELECTION-SCREEN OUTPUT:选择屏幕的PBO事件
AT SELECTION-SCREEN ... :选择屏幕的PAI事件,有多个附加项
3. 逻辑数据库事件(在START-OF-SELECTION事件结束以后触发,用于选择并整理数据):
GET node ... 选择逻辑数据库中当前级别数据中的数据
GET node LATE 选择逻辑数据库中上一级别数据源中的数据
4. 列表事件(在所有报表过程事件和选择屏幕事件结束之后,开始触发列表事件)
TOP-OF-PAGE:页眉,每个新页面开始时触发
END-OF-PAGE:页脚,当前页面结束前触发
AT-LINE-COMMAND:行选择控制,当用户选择某列表行时触发
AT-USER-COMMAND:用户交互控制
5. 一般报表的触发过程:
(1) 1型程序开始时,LOAD-OF-PROGRAM触发,运行时环境将为该程序在应用服务器中分配程序上下文以及相关内存区域存储内表数据对象,接下来的程序流程将由ABAP运行时环境控制(ABAP处理器)
(2) INITIALIZATION事件触发
(3) 如果有选择屏幕,则在每次屏幕输出之前触发AT SELECTION-SCREEN OUTPUT,运行时环境将选择屏幕发送至显示服务器
如果用户在选择屏幕中输入某些值后执行某些功能,系统将触发AT SELECTION-SCREEN事件,为用户提示消息信息等。
整个过程由屏幕处理器和ABAP处理器交互处理,系统自动在其中进行切换
(4) 当用户按下Execute按钮后,系统回收对程序的控制,触发START-OF-SELECTION
(5) 如果有逻辑数据库,则触发GET和GET LATE。
(6) 最后将触发END-OF-SELECTION事件,此后系统运行时环境将控制交给显示服务器
(7) 列表输出过程中将触发TOP-OF-PAGE和END-OF-PAGE。当用户点击Back返回选择屏幕时,LOAD-OF-PROGRAM和INITIALIZATION不会触发
(8) 如果列表存在交互事件,则会在满足交互条件的时候触发。
6. 事件块的终止(以下语句除STOP外若存在于循环中,则仅跳出该循环)
(1) STOP. 终止当前事件块并跳转至END-OF-SELECTION;若在END-OF-SELECTION中有STOP则直接退出。
(2) EXIT. 离开所有事件块并转到列表输出页面(即EXIT之前已经被输出的内容)
(3) CHECK. 如果CHECK条件为假,则转到下一个事件块
*****************************************************************************************
报表(3)——选择屏幕篇(2007.10.10<!Q!>)
*****************************************************************************************
1. 屏幕参数
(1) INITIALIZATION事件处理之后,屏幕布局将被发送至显示服务器,初始化的值将被传送至同名字段
(2) PARAMETERS name TYPE|LIKE type|dobj 参数变量长度不超过8个字符
参数格式:
DEFAULT value:默认值,INITIALIZATION事件前填充,因此只有在此事件前已经确定的值才能作为默认值
OBLIGATORY:设置为必须项
LOW CASE:将参数设置为小写进行传递
VISIBLE LENGTH len:设置可见显示长度,但可以输入超过所显示的长度的值
MATCHCODE OBJECT s_help:分配查询帮助。s_help必须在数据字典中已经定义
VALUE CHECK:值检查。检查用户输入值是否符合该字段的约束表(Check Table,一定要有)。
NO-DISPLAY:隐藏显示。在SUBMIT调用过程中,可以通过该字段传递参数或在自定义选择屏幕被调用之前,对该字段赋值。但该字段已经不是屏幕字段,即使使用MODIFY SCREEN修改其属性,也不能在屏幕中显示
MODIF ID key:
MEMORY ID pid:使用内存默认值。从SAP内存(用户相关的共有内存)中给参数字段分配默认值,SPA/GPA参数是SAP将屏幕元素填充初始数据的一种通用基本技术。其中pid是公用的SAP内存ID,最多20字节,可以使用SET/GET来设定和读取
AS CHECKBOX:复选框。不可使用附加选项TYPE和LIKE,参数是长度为1的C类型,值为'X'(选中)或' '(未选中)
RADIOBUTTON GROUP radi:单选按钮组,参数是长度为1的C类型,radi组名长度最大为4
(3) SELECT-OPTIONS seltab FOR f 变量格式为ABBC(*)D(*)
A:长度为1的C类型的SIGN字段,值为I(Include)或者E(Exclude)
B:长度为2的C类型的OPTION字段,如果没有HIGH字段,值为EQ、NE、GT、LE、LT、CP和NP,后两者只有使用了通配符(*,+)才有效;如果有HIGH字段,则可使用BT(BETWEEN)和NB(NOT BETWEEN)
C:F类型的LOW字段,定义下界
D:F类型的HIGH字段,定义上界
参数格式:除PARAMETER的参数外,还有一些其他的参数
NO-EXTENSION:限定单行数据,移除多选按钮
NO INTERVALS:单值选择,但用户仍然可以通过多选按钮来选择多值
DEFAULT g [TO h] [OPTION op] [SIGN s]:设定默认值,但只可指定一次
(4) 其他屏幕元素
SELECTION-SCREEN SKIP [n]:空n行(0<n<10)
SELECTION-SCREEN ULINE [[/]pos(len)] [MODIF ID key]:给一行或行中的一部分加下划线。pos可以使用POS_LOW和POS_HIGH这两个系统常量之一,分别代表SELECT-OPTIONS语句的from和to在屏幕上的位置,最后一个选项把下划线分配给某个修改组key,该修改组可以用在AT SELECTION-SCREEN OUTPUT事件中用于修改屏幕属性。
SELECTION-SCREEN COMMENT[/]pos(len) comm [FOR FIELD f] [MODIF ID key]:comm不需要声明,但需要在AT SELECTION-SCREEN OUTPUT中指定其中的值;如果使用了FOR FIELD f,这用户在该元素f的注释上请求帮助(F1)时,系统会显示字段
f的帮助文本。
(5) 组合选择屏幕元素(暂略,P277,屏幕块、位置等)
2. 屏幕事件
(1) AT SELECTION-SCREEN OUTPUT:选择屏幕PBO事件,每次选择屏幕被调用之前触发,每次屏幕调用都会执行
(2) AT SELECTION-SCREEN:选择屏幕PAI事件,检查用户数据正确性和全部字段一致性,发生错误所有元素可重新输入
(3) AT SELECTION-SCREEN ON field:针对某字段的PAI事件。若发生错误,该字段可重新输入,其他元素成灰色
(4) AT SELECTION-SCREEN ON BLOCK block:针对某元素区域的PAI事件。域内任一元素发生错误,重新输入域内所有元素,域外元素成灰色
(5) AT SELECTION-SCREEN ON RADIOBUTTON GROUP radi:单选按钮整体检查,不可单独使用ON field
(6) AT SELECTION-SCREEN ON [END OF] seltab:使用多行选择对话框时触发,ON seltab用于用户逐行输入后的检查,而ON END OF seltab用于整个表输入结束后各行的检查。
(7) AT SELECTION-SCREEN ON [HELP|VALUE]-REQUEST FOR field:POH和POV事件,定义F1和F4
3. 屏幕的PAI事件如果没有发生任何错误,将执行后续事件,如F8、打印、保存变量等。
*****************************************************************************************
报表(4)——标准列表篇(2007.10.11)
*****************************************************************************************
1. 输出语句:WRITE [AT /pos(len)] f [<options>].
2. 输出符号:WRITE some_name AS [SYMBOL | ICON | LINE | CHECKBOX].
之前需要使用INCLUDE <list>或者INCLUDE <symbol> INCLUDE <icon>
3. 查找Symbol或Icon:patter->write->F4(symbol或icon)
4. 线:
ULINE [AT /pos(len)]. <=> WRITE [AT /pos(len)] SY-ULINE.
WRITE [AT /pos(len)] '----'.
WRITE [AT [/][<pos>]] SY-VLINE. <=> WRITE [AT [/][<pos>]] '|'.
5. 空行:
SKIP [n].
SET BLANK LINES [ON|OFF]. WRITE / ' '.
6. 输出位置:(暂略,P291)
7. 输出格式:(暂略,颜色等,P291)
8. 页面格式:(暂略,标题、页面长宽、页眉页脚、固定栏、跳行等,P292)
*****************************************************************************************
报表(5)——交互式列表篇(2007.10.11)
*****************************************************************************************
1. TOP-OF-PAGE | END-OF-PAGE DURING LINE-SELECTION. 列表被选择时输出页眉和页脚
2. AT LINE-SELECTION和AT USER-COMMAND
3. 不能再次级列表中使用GET或GET...LATE这样的其他事件块
4. HIDE f. 被选中的行将被存储至全局区域(hide area),可以通过对Hide区域的检查来判断用户时候选择了正确的行。
*****************************************************************************************
报表(6)——保存篇(2007.10.11)
*****************************************************************************************
1. 在报表输出屏幕,依次List->Save->Office | Reprot tree | File ...
也可通过System->List->Save在任何位置进行列表保存
2. 列表可以保存在SAPoffice、工作菜单、本机
3. 文件保存格式
Unconverted:ASCII文档
Spreadsheet:MS Excel文档
Rich Text Format:RTF文档
HTML:网页文档
*****************************************************************************************
报表(7)——格式化报表基本概念篇(2007.10.15)
*****************************************************************************************
1. 格式化报表基本步骤:
(1) 通过SAP的格式生成工具定义Form格式
(2) 创建ABAP程序负责整理输出过程中所需数据,该程序称为数据提取程序
(3) 在程序内调用定义好的格式,产生具体文本内容。如果需要打印的数据集不止一份,该调用可以循环进行,实现批量输出;或者以内表的形式Form接口直接传递批量数据,通过例如发送给许多客户相同格式但不同数据信息的订单
(4) 将每一分文档通过Form的格式化功能一特定形式打印输出。
2. 页面是窗口的画板,窗口是具体文字的容器,具体的数据及文本应放置于窗口中,而不能直接在页面中输出。每个版式都包括一个起始页面及其任一数量的后续页面,版式的不同页面中包含不同的输出区域,即页面窗口
3. 窗口是格式化文档中文本和数据的输出区域,有主窗口和子窗口两种类型。一个定义好的窗口不隶属于某页面,因而可以放在格式文档的任意页中。每一个格式文档中均含有一个主窗口,即正文数据的主要输出窗口,该窗口如果需要的文本过多,当前页面无法容纳,其他文本将在后续页面中输出,也会自动触发分页符。
·并非每一个页面都需要包含该窗口
·每一个格式文档中只能含有一个主窗口
·所有页面中的主窗口必须具有相同的宽度,但高度可以不同
·一个不包含主窗口的页面不可以调用其本身作为后续页面,因为这将触发无限循环,在这种情况下,系统将在处理三页后自动结束。
·在除主窗口外的其他窗口中,数据和文本在预设定好的区域内输出,如果将这些窗口放置在多个页面中,其显示的内容是相同的。如果数据或文本内容超出了窗口区域,则将被截断而无法全部显示
5. 文本和数据是窗口输出的具体内容,定位在页窗口中进行显示。
·如果输出内容在设计Form时已经可以确定,这可直接在Form中输入文字
·如果输出数据只能在运行时确定,则需要使用符号作为占位符等方式现在格式中进行说明,应用格式调用时用从程序传递进来的实际数据信息进行替代。
6. 段落字符体例,类似于网页设计中的CSS,可以标准化该段落和相关字体,应用于所有类似格式的不同页面。
·段落格式——控制整个段落,每一段文本内容都必须属于某个段落格式。整个Form应该有一个默认的段落格式
·字符格式——控制段落中具体文字的字体和字号等性质,字符格式不能控制整个段落,但是可以用于格式化段落内部的具体文本块。
*****************************************************************************************
报表(8)——SAPscript篇——SE71、SE72、SO10(2007.10.11<U...>2007.10.11)
*****************************************************************************************
1. SAPscript是SP开发的文字处理系统,由五大部件构成:
·一个以行为单位的文本编辑器。在格式创建过程中,如果需要给某个页窗口添加文本,则系统将自动进入该编辑器
·打印布局中的体例和格式设定
·一个作为中心输出处理模块的设计器。用于准备文本向打印装置输出,并同时格式化信息应用于文本,这些信息来自Styles和Forms工具中的设定。该设计器位于系统内部,用户不可见。
·程序接口,将SAPscript组件与SAP应用程序整合,并在程序中对格式输出进行进一步的控制
·一些存储文本、体例和格式的数据库表
2. 在元素的创建过程中,应该按照从基本元素到复杂元素逐步进行,即设定字体和段落->窗口->将窗口添加到页面。
3. 字符格式命名规则:
·字符格式名称最多只能包含两个字符
·首字母必须是字幕,第二个字符可为字幕、数字或空格,不能为其他特殊符号
*****************************************************************************************
报表(9)——Smart Forms篇——SMARTFORMS(2007.10.11<U...>2007.10.11)
*****************************************************************************************
1. Smart Forms与SAPscript类似,其输出媒介可以是Internet页、打印机、传真或e-mail等。还附带了核心的商业处理过程等(P399)
2. Smart Forms与SAPscript存在接口,可以在Smart Forms中引用SAPscript也可以进行格式转换。设计过程包括版面逻辑和逻辑设计两部分。相比SAPscript,Smart Forms新特征:
·允许使用简易的图形化工具对格式和格式逻辑进行修改
·具有相当完整的流程控制机制,因此应用数据的提取和格式的逻辑处理是相对独立的。Form激活时,将生成一个功能模块,在运行期间,程序通过该模块的参数接口调用格式,并传递输出的数据。
·设计可以通过图形化的工具进行,而且其输出逻辑通过一个属性体系结构显示。
·系统在处理Form过程中提供创建XML输出的功能,从而实现了Web publishing
·可以插入静态或动态表格,表格功能包括循环读取单元内容、触发标题行和总计时间以及数据排序等功能
·可以检查某个节点或者整个Form时候存在错误;数据流程分析功能检查所有的字段在输出时是否已经有确定的值
·可以在Form的输出文档中加入背景图片
·提供标准的国家相关的邮政地址输出功能
3. Smart Forms格式化并输出步骤:
(1) 提取应用数据
(2) 应以Form格式及相关数据接口
(3) 将数据传递到Form中,并批量输出
4. 一个Form需要定义一或多个页面以及一个处理从程序中传递过来的数据接口,每个页面中可以包含窗口、标准地址和图片等。(P428)
*****************************************************************************************
后台处理篇——SM36、37(2007.10.11)
*****************************************************************************************
1. 后台处理中,R/3可以自动运行1类型的报表程序(自定义屏幕除外)或外部程序。
2. 后台处理步骤:
(1) 用户通过规划后台处理系统中的作业,通知R/3系统所需要进行的工作。设定事件、程序、变式、打印等。
(2) 到达指定时间后,后台处理系统将启动作业并运行指定的程序
(3) 稍后,用户可以检查工作是否完成,显示跟踪该作业执行的日志,查看后台作业的状态。
3. 优点:
(1) 可实现并行,不影响用户操作
(2) 可定期自动重复作业,节省人力
(3) 晚上执行可降低系统负载
4. 在ABAP中提交作业,将列表发送至Spool(假脱机)系统
(1) 通过功能模块JOB_SUBMIT将程序直接发送至后台
(2) 使用SUBMIT语句中的VIA JOB附加项,WITH附加项则可以提交选择屏幕参数或USING SELECTION-SET可指定变式,同时,必须指定AND RETURN选项
SUBMIT rep ... USER user VIA JOB job NUMBER n [... WITH p1 = f1... | USING SELECTION-SET vari] ... AND RETURN
5. 已经规划的作业在释放之前不能运行。
6. 显示作业状态——SM37
*****************************************************************************************
打印篇(2007.10.11)
*****************************************************************************************
1. 只有通过WRITE语句生成的列表才能够被SAP的Spool系统进行打印,ALV打印时也会被转换成传统列表
2. (具体的打印配置见P319~320)
3. 程序控制打印请求设定,
(1)下列语句将生成的列表直接发送到Spool系统进行打印处理,并不在屏幕上显示
NEW-PAGE PRINT ON [NEW-SECTION] [params | PARAMETERS pripar] [ARCHIVE PARAMETERS arcpar] [NO DIALOG].
PARAMETERS:参数变量,需符合PRI_PARAMS数据字典
ARCHIVE PARAMETERS:参数变量,需符合ARC_PARAMS数据字典,只有列表被存储于SAP ArchiveLink时才能使用
(可使用GET_PRINT_PARAMETERS功能模块来设定上述参数)
NO DIALOG:不显示打印机配置画面
(2) 下列语句取消对Spool的输出,重新在屏幕上输出页面
NEW-PAGE PRINT OFF
4. 检查打印状态(System->Service->Output Controller)
输出控制器用来检查输出请求
·发送输出请求时没有标记Output Immediately字段,则输出控制器重新发出答应请求之前,系统不会将输出请求发送到打印机
·检查输出请求的状态,查看是否已经打印
*****************************************************************************************
Message篇——SE91(2007.10.08)
*****************************************************************************************
1. SAP消息存放于T100表中,包含SPRSL(语言代码)、ARBGB(消息类)、MSGNR(三位的消息序号)、TEXT(文本,最长72个字符)
2. 消息格式:
(1) MESSAGE <t>num(id). 若REPORT rep MESSAGE-ID id已经指定了消息类,则message可以省略id项;
(2) MESSAGE ID id TYPE c NUMBER num [WITH f1 ... f4].
(3) MESSAGE ... [WITH f1 ... f4].
INTO msgtext 和 DISPLAY LIKE c选项对于以上3个都有效
(4) MESSAGE msgtext TYPE c
RAISING exception 对于以上4个都有效,只可用于function或者method中
3. 消息变量
SY-MSGID 消息类
SY-MSGNR 消息号
SY-MSGTY 消息类型
SY-MSGV1 ... SY-MSGV4 消息参数
4. 消息类型
PBO PAI
(1) I 型:与S型一致 弹出对话框,关闭后继续
(2) S 型:同PAI 在状态栏显示消息,并同时执行后续语句
(3) E 型:程序中止并显示对话框 当前屏幕被终止,并再次跳过PBO被输出
确认后退出 只有在FIELD和CHAIN语句中的字段可以被重新输入
(4) W型:程序不被终止,类似S型 不退出该消息屏幕,确认该消息屏幕后系统执行消息语句后的代码
(5) A 型:同PAI 以对话框形式出现,确认后程序中止,回到调用点
(6) X 型:同PAI 消息不显示,以short dump(运行时错误)形式中止,基本不用
*****************************************************************************************
逻辑数据库(LDB)篇——SE36(2007.10.10<!Q!>2007.10.11)
*****************************************************************************************
1. 除去OPEN SQL和NATIVE SQL,LDB提供了第三种方法来从数据库提取数据。注:LDB不是用来存储数据的数据库,仅仅是一种方式。
2. 同传统的SQL读取相比,优点:
(1) 预设定的选择屏幕(这有什么用?)
(2) 在使用逻辑数据库的程序中,开发人员可以忽略具体的数据表之间通过外部关键字设定的关系,而是使用GET事件按照节点层次逐级获取数据
(3) 提高筛选效率并在数据筛选的同时进行用户数据库访问权限检查
(4) 逻辑数据库的维护和设定可以独立于程序进行,如果数据源发生变化,也可以直接修改逻辑数据库,无需对所有程序进行修改
3. 结构
(1) 子对象(LDB节点)
·表(T类型节点),数据库表,节点名称需为数据库表明,其名称须符合节点名要求(14字节以内),不能为纵深结构
·DDIC类型(S类型节点),是数据字典中的结构类型或者表类型,类型和节点名称不需要一致,且可以为纵深结构
·类型组(C类型节点),节点类型在类型注重定义,其名称必须为Type group字段值。一般情况下,应参照DDIC类型生成,以便其他使用逻辑数据库的应用可以访问该节点(如 SAP Query)
·动态节点(A类型节点),这种节点没有固定类型,只有在运行时才被确定
(2) 选集和数据库程序(不懂,P283)
4. 事件
(1) GET
·需要在程序属性中进行指定LDB名称,将其链接至程序
·NODES node:逻辑库节点在程序防伪之前需要声明
声明之后,系统将创建一个与该节点同名且结构相同的工作区,并通过GET事件循环对该事件进行填充
·GET事件在逻辑数据库程序从数据库表中读取了一行数据时被触发:GET node | table [FIELDS f1 f2 ... ]
触发事件后,表工作区中提供了该行数据,在处理快内部程序代码中,可对数据库表的当前行进行处理。FIELDS选项则可以指定从逻辑数据库读取的表字段(同时还必须读取表关键字)。
·GET ... LATE事件在某表格循环结束,返回上一层数据库表格时触发:GET node | table LATE [FIELDS f1 f2 ...],可以实现该节数据库节点中的数据总计功能
·就效率来说,不要使用FIELDS选项指定需要的字段,以改善程序的性能
·如果程序没有指定所有的逻辑节点,这执行到指定的最低一节节点后将返回上一级节点,其下方的所有节点中的数据将无法被选出
(2) 中止LDB事件
LDB是一个循环数据库的过程,在GET事件中可以随时对当前处理的数据进行检查,如果不满足这可以中止当前数据或者整个事件
(3) 无条件中止LDB事件
·转向END-OF-SELECTION:STOP
·转向输出屏幕:EXIT
·转向当前节点的下一行:REJECT
·转向dbtab节点的下一行:REJECT dbtab
(4) 条件中止LDB事件
CHECK xxxx
CHECK SELECT-OPTIONS.(完全不懂这玩意干嘛的)
*****************************************************************************************
ABAP范例程序篇(2007.09.26)
*****************************************************************************************
1、在SE38环境下的程序名输入栏输入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,好好看看,你会学到很多ABAP功能的实现方法。
2、运行“ABAPDOCU”T-cdoe,你可以看到ABAP DOCUMENT及示例程序。
3、在SE38环境下的程序名输入栏输入'BCALV*'后按F4,你可以查到很多ALV示例程序,慢慢看吧。