ABAP点滴记录.docx
- 文档编号:9341074
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:26.02KB
ABAP点滴记录.docx
《ABAP点滴记录.docx》由会员分享,可在线阅读,更多相关《ABAP点滴记录.docx(16页珍藏版)》请在冰豆网上搜索。
ABAP点滴记录
SAPABAP点滴记录
文章分类:
JavaEye
SAPABAP点滴记录 PostBy:
2009-6-211:
16:
45
*****************************************************************************************
系统字段篇——STRUCT:
SYST(2007.09.24
*****************************************************************************************
SY-SUBRC:
语句执行后的返回值,0表示成功
SY-DATUM:
当前服务器日期
SY-UZEIT:
当前服务器时间
SY-ULINE:
255长度的水平线
SY-VLINE:
垂直线
SY-INDEX:
循环说执行的次数
SY-TABIX:
内表循环的次数
SY-DYNNR:
当前Screen号
SY-MANDT:
当前登录的Client号
SY-STEPL:
返回当前操作的屏幕行号(TableControl)
SY-LOOPC:
当前表格控件在屏幕中的总行数(TableControl)
SY-UCOMM:
PAI所出发的功能代码
SY-DYNNR:
当前屏幕号
SY-MSGID:
MessageClass
SY-MSGNR:
MessageNumber
SY-MSGTY:
MessageType
SY-MSGV1~4:
MessageVariant
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
*****************************************************************************************
1.在PAI中,ok_code需要及时赋值给另外一个变量,并立即clear,随后对新的那个变量来case
2.屏幕调用
(1)SETSCREENnext_screen_number:
指定当前屏幕的后续屏幕,在PAI中静态指定的后续屏幕将暂时被覆盖
(2)CALLSCREENscreen_number:
挂起当前屏幕,进入新的屏幕或事务(即插入新的屏幕流)。
CALLTRANSACTIONtcode 在新的屏幕中,通过LEAVESCREENTOSCREEN0即可返回挂起的屏幕序列上
(3)LEAVESCREEN:
未完成当前屏幕控制流就要转入后续屏幕
(4)LEAVETOSCREENscreen_number:
未完成当前屏幕即进入指定的屏幕或事务
LEAVETOTRANSACTIONtcode
(5)SETSCREEN0,LEAVESCREEN或LEAVETOSCREEN0:
终止当前屏幕
3.MODULEmodule_nameATEXIT-COMMAND:
只能在PAI中使用,会由于以"/E"开头或者E型的function而触发(一般就是Back、Exit、Cancel)
4.FIELDfield_nameMODULEmodule_name:
可以对field执行所指定的module
5.TableControl的数据源如果来自多张表则可以自定义一个workarea
6.要让TableControl能够拥有行选择的能力,可以在导航中指定,需要workarea中有一个没有被选择显示的列
*****************************************************************************************
报表
(1)——系统报表篇(2007.10.08)
*****************************************************************************************
1.报表类型:
SAP核心系统及定制过程中已经存在的报表
使用ABAP开发的报表
使用其他系统工具(如SQPQuery)开发的报表
2.QuickViewer——SQVI:
提供形式不固定的Adhoc报表(非日常性的业务报表),是SAP提供给用户的最终系统中的一个简易报表生成工具
(1)每个系统用户只能定义自己的QuickViews,其他系统用户不能共享该列表。
因为它不是SAP传输系统中的一个组件
3.SAPQuery——SQ01:
较为复杂,涉及到用户组和功能区域。
(1)开始查询后,SAP系统内部将根据Queryies中定义的列表字段自动生成一个内部程序,该程序读取数据源,处理并输出数据
(2)SAPQuery具有管理功能,主要指数据源和用户组的分配,即设定功能区域和用户组,并将功能区域分配给各个用户组。
其中功能区域代表查询数据源,即数据库表和其中的字段,往往参照逻辑数据库生成;而一个系统用户如果需要创建Queries,则该用户必须隶属于至少某一个由系统管理员预设定的用户组,并可以使用属于该用户组的功能区域。
一个SAP系统用户可以使多个用户组的成员,功能区域和用户组是多对多的关系。
Queries总是隶属于特定的用户组中特定的功能区域生成的,因而只有该用户组内部用户才能访问其中的Queries。
如果某用户被分配置多个用户组,则该用户可以在用户组之间切换。
因为Queries总是与相应的功能区域相关,所以,如果两个用户组都包含同一个功能区域而且某授权用户同时属于这两个用户组,这该用户可以将其中的Queries从一个用户组拷贝至另外一个用户组。
(3)SAPQuery可以生成多种类型的列表:
基本列表:
可以为单行或多行,多行的基本类表还可以进行压缩
统计列表、排序列表:
要求列表中至少包含一个数值字段,且数据行数可能被压缩
局部列表:
一个Query中包含多个局部列表,而在打印过程中可以单独打印
(4)不能有用户提供执行设计生成交互式列表,但在列表过程中提供一些标准的交互功能:
如将生成列表传递至系统内部或外部的其他工具(Excel、ABCAnalysis等),并以图形的形式或者以交互表格的形式显示列表。
4.QuickViewer和SAPQuery的区别
(1)SAPQuery可以创建基本、统计和排序等格式的列表;而QuckViewer只能创建基本列表,不包含统计、排序等交互性
(2)SAPQuery可以被多个用户共享,需要进行用户组和功能区域的设置,并可以在系统间传输;而QuickViewer是具有用户相关性的
*****************************************************************************************
报表
(2)——报表设计概述篇(2007.10.10)
*****************************************************************************************
1.报表事件:
INITIALIZATION:
程序初始化,类似于C#中的窗体构造函数
START-OF-SELECTION:
选择开始事件(默认事件),在选择屏幕的处理结束后触发
END-OF-SELECTION:
选择结束事件,在所有逻辑数据库处理结束后触发,一般用于输出列表
2.选择屏幕事件(在INITIALIZATION和START-OF-SELECTION之间触发):
ATSELECTION-SCREENOUTPUT:
选择屏幕的PBO事件
ATSELECTION-SCREEN...:
选择屏幕的PAI事件,有多个附加项
3.逻辑数据库事件(在START-OF-SELECTION事件结束以后触发,用于选择并整理数据):
GETnode...选择逻辑数据库中当前级别数据中的数据
GETnodeLATE选择逻辑数据库中上一级别数据源中的数据
4.列表事件(在所有报表过程事件和选择屏幕事件结束之后,开始触发列表事件)
TOP-OF-PAGE:
页眉,每个新页面开始时触发
END-OF-PAGE:
页脚,当前页面结束前触发
AT-LINE-COMMAND:
行选择控制,当用户选择某列表行时触发
AT-USER-COMMAND:
用户交互控制
5.一般报表的触发过程:
(1)1型程序开始时,LOAD-OF-PROGRAM触发,运行时环境将为该程序在应用服务器中分配程序上下文以及相关内存区域存储内表数据对象,接下来的程序流程将由ABAP运行时环境控制(ABAP处理器)
(2)INITIALIZATION事件触发
(3)如果有选择屏幕,则在每次屏幕输出之前触发ATSELECTION-SCREENOUTPUT,运行时环境将选择屏幕发送至显示服务器
如果用户在选择屏幕中输入某些值后执行某些功能,系统将触发ATSELECTION-SCREEN事件,为用户提示消息信息等。
整个过程由屏幕处理器和ABAP处理器交互处理,系统自动在其中进行切换
(4)当用户按下Execute按钮后,系统回收对程序的控制,触发START-OF-SELECTION
(5)如果有逻辑数据库,则触发GET和GETLATE。
(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)PARAMETERSnameTYPE|LIKEtype|dobj参数变量长度不超过8个字符
参数格式:
DEFAULTvalue:
默认值,INITIALIZATION事件前填充,因此只有在此事件前已经确定的值才能作为默认值
OBLIGATORY:
设置为必须项
LOWCASE:
将参数设置为小写进行传递
VISIBLELENGTHlen:
设置可见显示长度,但可以输入超过所显示的长度的值
MATCHCODEOBJECTs_help:
分配查询帮助。
s_help必须在数据字典中已经定义
VALUECHECK:
值检查。
检查用户输入值是否符合该字段的约束表(CheckTable,一定要有)。
NO-DISPLAY:
隐藏显示。
在SUBMIT调用过程中,可以通过该字段传递参数或在自定义选择屏幕被调用之前,对该字段赋值。
但该字段已经不是屏幕字段,即使使用MODIFYSCREEN修改其属性,也不能在屏幕中显示
MODIFIDkey:
MEMORYIDpid:
使用内存默认值。
从SAP内存(用户相关的共有内存)中给参数字段分配默认值,SPA/GPA参数是SAP将屏幕元素填充初始数据的一种通用基本技术。
其中pid是公用的SAP内存ID,最多20字节,可以使用SET/GET来设定和读取
ASCHECKBOX:
复选框。
不可使用附加选项TYPE和LIKE,参数是长度为1的C类型,值为'X'(选中)或''(未选中)
RADIOBUTTONGROUPradi:
单选按钮组,参数是长度为1的C类型,radi组名长度最大为4
(3)SELECT-OPTIONSseltabFORf变量格式为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(NOTBETWEEN)
C:
F类型的LOW字段,定义下界
D:
F类型的HIGH字段,定义上界
参数格式:
除PARAMETER的参数外,还有一些其他的参数
NO-EXTENSION:
限定单行数据,移除多选按钮
NOINTERVALS:
单值选择,但用户仍然可以通过多选按钮来选择多值
DEFAULTg[TOh][OPTIONop][SIGNs]:
设定默认值,但只可指定一次
(4)其他屏幕元素
SELECTION-SCREENSKIP[n]:
空n行(0 SELECTION-SCREENULINE[[/]pos(len)][MODIFIDkey]: 给一行或行中的一部分加下划线。 pos可以使用POS_LOW和POS_HIGH这两个系统常量之一,分别代表SELECT-OPTIONS语句的from和to在屏幕上的位置,最后一个选项把下划线分配给某个修改组key,该修改组可以用在ATSELECTION-SCREENOUTPUT事件中用于修改屏幕属性。 SELECTION-SCREENCOMMENT[/]pos(len)comm[FORFIELDf][MODIFIDkey]: comm不需要声明,但需要在ATSELECTION-SCREENOUTPUT中指定其中的值;如果使用了FORFIELDf,这用户在该元素f的注释上请求帮助(F1)时,系统会显示字段 f的帮助文本。 (5)组合选择屏幕元素(暂略,P277,屏幕块、位置等) 2.屏幕事件 (1)ATSELECTION-SCREENOUTPUT: 选择屏幕PBO事件,每次选择屏幕被调用之前触发,每次屏幕调用都会执行 (2)ATSELECTION-SCREEN: 选择屏幕PAI事件,检查用户数据正确性和全部字段一致性,发生错误所有元素可重新输入 (3)ATSELECTION-SCREENONfield: 针对某字段的PAI事件。 若发生错误,该字段可重新输入,其他元素成灰色 (4)ATSELECTION-SCREENONBLOCKblock: 针对某元素区域的PAI事件。 域内任一元素发生错误,重新输入域内所有元素,域外元素成灰色 (5)ATSELECTION-SCREENONRADIOBUTTONGROUPradi: 单选按钮整体检查,不可单独使用ONfield (6)ATSELECTION-SCREENON[ENDOF]seltab: 使用多行选择对话框时触发,ONseltab用于用户逐行输入后的检查,而ONENDOFseltab用于整个表输入结束后各行的检查。 (7)ATSELECTION-SCREENON[HELP|VALUE]-REQUESTFORfield: POH和POV事件,定义F1和F4 3.屏幕的PAI事件如果没有发生任何错误,将执行后续事件,如F8、打印、保存变量等。 ***************************************************************************************** 报表(4)——标准列表篇(2007.10.11) ***************************************************************************************** 1.输出语句: WRITE[AT/pos(len)]f[ 2.输出符号: WRITEsome_nameAS[SYMBOL|ICON|LINE|CHECKBOX]. 之前需要使用INCLUDE 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[/][ 5.空行: SKIP[n]. SETBLANKLINES[ON|OFF].WRITE/''. 6.输出位置: (暂略,P291) 7.输出格式: (暂略,颜色等,P291) 8.页面格式: (暂略,标题、页面长宽、页眉页脚、固定栏、跳行等,P292) ***************************************************************************************** 报表(5)——交互式列表篇(2007.10.11) ***************************************************************************************** 1.TOP-OF-PAGE|END-OF-PAGEDURINGLINE-SELECTION.列表被选择时输出页眉和页脚 2.ATLINE-SELECTION和ATUSER-COMMAND 3.不能再次级列表中使用GET或GET...LATE这样的其他事件块 4.HIDEf.被选中的行将被存储至全局区域(hidearea),可以通过对Hide区域的检查来判断用户时候选择了正确的行。 ***************************************************************************************** 报表(6)——保存篇(2007.10.11) ***************************************************************************************** 1.在报表输出屏幕,依次List->Save->Office|Reprottree|File... 也可通过System->List->Save在任何位置进行列表保存 2.列表可以保存在SAPoffice、工作菜单、本机 3.文件保存格式 Unconverted: ASCII文档 Spreadsheet: MSExcel文档 RichTextFormat: RTF文档 HTML: 网页文档 ***************************************************************************************** 报表(7)——格式化报表基本概念篇(2007.10.15) ***************************************************************************************** 1.格式化报表基本步骤: (1)通过SAP的格式生成工具定义Form格式 (2)创建ABAP程序负责整理输出过程中所需数据,该程序称为数据提取程序 (3)在程序内调用定义好的格式,产生具体文本内容。 如果需要打印的数据集不止一份,该调用可以循环进行,实现批量输出;或者以内表的形式Form接口直接传递批量数据,通过例如发送给许多客户相同格式但不同数据信息的订单 (4)将每一分文档通过Form的格式化功能一特定形式打印输出。 2.页面是窗口的画板,窗口是具体文字的容器,具体的数据及文本应放置于窗口中,而不能直接在页面中输出。 每个版式都包括一个起始页面及其任一数量的后续页面,版式的不同页面中包含不同的输出区域,即页面窗口 3.窗口是格式化文档中文本或者INCLUDE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP 点滴 记录