1、ABAP点滴记录SAP ABAP 点滴记录 文章分类:JavaEye SAP ABAP 点滴记录 Post By:2009-6-2 11:16:45 * 系统字段篇STRUCT:SYST(2007.09.242007.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:返回当前操作
2、的屏幕行号(Table Control) SY-LOOPC:当前表格控件在屏幕中的总行数(Table Control) SY-UCOMM:PAI所出发的功能代码 SY-DYNNR:当前屏幕号 SY-MSGID:Message Class SY-MSGNR:Message Number SY-MSGTY:Message Type SY-MSGV14:Message Variant SY-LINCT:REPROT语句中设定的LINE-COUNT SY-LINSZ:REPROT语句中设定的LINE-SIZE SY-SROWS:当前窗口的列表行数 SY-SCOLS:当前窗口的列表栏目数 SY-PAGN
3、O:当前页的页码 SY-LINNO:当前选定行的行号 SY-COLNO:当前选定列的列号 SY-LSIND:当前列表索引,第一级列表为1 SY-LILLI:选择某行时光标行位置 SY-CUROW:选择某行时光标列位置 * Dynpro篇SE80(2007.09.252007.10.08) * 1. 在PAI中,ok_code需要及时赋值给另外一个变量,并立即clear,随后对新的那个变量来case 2. 屏幕调用 (1) SET SCREEN next_screen_number: 指定当前屏幕的后续屏幕,在PAI中静态指定的后续屏幕将暂时被覆盖 (2) CALL SCREEN screen_
4、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
5、 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核心系统及定制过程中已经存在的报表 使用ABA
6、P开发的报表 使用其他系统工具(如SQP Query)开发的报表 2. Quick ViewerSQVI:提供形式不固定的Adhoc报表(非日常性的业务报表),是SAP提供给用户的最终系统中的一个简易报表生成工具 (1) 每个系统用户只能定义自己的QuickViews,其他系统用户不能共享该列表。因为它不是SAP传输系统中的一个组件 3. SAP QuerySQ01:较为复杂,涉及到用户组和功能区域。 (1) 开始查询后,SAP系统内部将根据Queryies中定义的列表字段自动生成一个内部程序,该程序读取数据源,处理并输出数据 (2) SAP Query具有管理功能,主要指数据源和用户组的分配
7、,即设定功能区域和用户组,并将功能区域分配给各个用户组。其中功能区域代表查询数据源,即数据库表和其中的字段,往往参照逻辑数据库生成;而一个系统用户如果需要创建Queries,则该用户必须隶属于至少某一个由系统管理员预设定的用户组,并可以使用属于该用户组的功能区域。一个SAP系统用户可以使多个用户组的成员,功能区域和用户组是多对多的关系。Queries总是隶属于特定的用户组中特定的功能区域生成的,因而只有该用户组内部用户才能访问其中的Queries。 如果某用户被分配置多个用户组,则该用户可以在用户组之间切换。因为Queries总是与相应的功能区域相关,所以,如果两个用户组都包含同一个功能区域而
8、且某授权用户同时属于这两个用户组,这该用户可以将其中的Queries从一个用户组拷贝至另外一个用户组。 (3) SAP Query可以生成多种类型的列表: 基本列表:可以为单行或多行,多行的基本类表还可以进行压缩 统计列表、排序列表:要求列表中至少包含一个数值字段,且数据行数可能被压缩 局部列表:一个Query中包含多个局部列表,而在打印过程中可以单独打印 (4) 不能有用户提供执行设计生成交互式列表,但在列表过程中提供一些标准的交互功能:如将生成列表传递至系统内部或外部的其他工具(Excel、ABC Analysis等),并以图形的形式或者以交互表格的形式显示列表。 4. Quick Vie
9、wer和SAP Query的区别 (1) SAP Query可以创建基本、统计和排序等格式的列表;而QuckViewer只能创建基本列表,不包含统计、排序等交互性 (2) SAP Query可以被多个用户共享,需要进行用户组和功能区域的设置,并可以在系统间传输;而QuickViewer是具有用户相关性的 * 报表(2)报表设计概述篇(2007.10.10) * 1. 报表事件: INITIALIZATION:程序初始化,类似于C#中的窗体构造函数 START-OF-SELECTION:选择开始事件(默认事件),在选择屏幕的处理结束后触发 END-OF-SELECTION:选择结束事件,在所有逻
10、辑数据库处理结束后触发,一般用于输出列表 2. 选择屏幕事件(在INITIALIZATION和START-OF-SELECTION之间触发): AT SELECTION-SCREEN OUTPUT:选择屏幕的PBO事件 AT SELECTION-SCREEN . :选择屏幕的PAI事件,有多个附加项 3. 逻辑数据库事件(在START-OF-SELECTION事件结束以后触发,用于选择并整理数据): GET node . 选择逻辑数据库中当前级别数据中的数据 GET node LATE 选择逻辑数据库中上一级别数据源中的数据 4. 列表事件(在所有报表过程事件和选择屏幕事件结束之后,开始触发列
11、表事件) 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 OUT
12、PUT,运行时环境将选择屏幕发送至显示服务器 如果用户在选择屏幕中输入某些值后执行某些功能,系统将触发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返回选
13、择屏幕时,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) * 1. 屏幕参数 (1) INITIAL
14、IZATION事件处理之后,屏幕布局将被发送至显示服务器,初始化的值将被传送至同名字段 (2) PARAMETERS name TYPE|LIKE type|dobj 参数变量长度不超过8个字符 参数格式: DEFAULT value:默认值,INITIALIZATION事件前填充,因此只有在此事件前已经确定的值才能作为默认值 OBLIGATORY:设置为必须项 LOW CASE:将参数设置为小写进行传递 VISIBLE LENGTH len:设置可见显示长度,但可以输入超过所显示的长度的值 MATCHCODE OBJECT s_help:分配查询帮助。s_help必须在数据字典中已经定义 V
15、ALUE CHECK:值检查。检查用户输入值是否符合该字段的约束表(Check Table,一定要有)。 NO-DISPLAY:隐藏显示。在SUBMIT调用过程中,可以通过该字段传递参数或在自定义选择屏幕被调用之前,对该字段赋值。但该字段已经不是屏幕字段,即使使用MODIFY SCREEN修改其属性,也不能在屏幕中显示 MODIF ID key: MEMORY ID pid:使用内存默认值。从SAP内存(用户相关的共有内存)中给参数字段分配默认值,SPA/GPA参数是SAP将屏幕元素填充初始数据的一种通用基本技术。其中pid是公用的SAP内存ID,最多20字节,可以使用SET/GET来设定和读
16、取 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(
17、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行(0n10) SELECTION-SCREEN ULINE /pos(len) MODIF ID key:给一行或行中的一部
18、分加下划线。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)时,系统会显示
19、字段 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事
20、件。域内任一元素发生错误,重新输入域内所有元素,域外元素成灰色 (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事
21、件如果没有发生任何错误,将执行后续事件,如F8、打印、保存变量等。 * 报表(4)标准列表篇(2007.10.11) * 1. 输出语句:WRITE AT /pos(len) f . 2. 输出符号:WRITE some_name AS SYMBOL | ICON | LINE | CHECKBOX. 之前需要使用INCLUDE 或者INCLUDE INCLUDE 3. 查找Symbol或Icon:patter-write-F4(symbol或icon) 4. 线: ULINE AT /pos(len). WRITE AT /pos(len) SY-ULINE. WRITE AT /pos(l
22、en) -. WRITE AT / SY-VLINE. WRITE AT / |. 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
23、 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 Te
24、xt Format:RTF文档 HTML:网页文档 * 报表(7)格式化报表基本概念篇(2007.10.15) * 1. 格式化报表基本步骤: (1) 通过SAP的格式生成工具定义Form格式 (2) 创建ABAP程序负责整理输出过程中所需数据,该程序称为数据提取程序 (3) 在程序内调用定义好的格式,产生具体文本内容。如果需要打印的数据集不止一份,该调用可以循环进行,实现批量输出;或者以内表的形式Form接口直接传递批量数据,通过例如发送给许多客户相同格式但不同数据信息的订单 (4) 将每一分文档通过Form的格式化功能一特定形式打印输出。 2. 页面是窗口的画板,窗口是具体文字的容器,具体的数据及文本应放置于窗口中,而不能直接在页面中输出。每个版式都包括一个起始页面及其任一数量的后续页面,版式的不同页面中包含不同的输出区域,即页面窗口 3. 窗口是格式化文档中文本
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1