版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAP系统ABAP开发培训InformationClassification:InternalABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
2abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)ABAP/4是英文AdvancedBusinessApplicationProgramming的缩写,是SAPR/3商用系统的应用程序开发工具ABAP/4是所有SAPR/3应用的基础,也是进行SAPR/3二次开发的最主要的工具,是我们对SAPR/3系统进行应用分析、二次开发的主要方式ABAP语言与开发平台介绍
3abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)用途:ABAP是SAP特有的用于数据查询,功能增强,画面交互,系统互连等的
有效开发工具从而有效提高工作效率ABAP语言与开发平台介绍4abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)ABAP开发对象:AbapEditorDictionaryMenuPainterScreen PainterFunctionBuilderEtc.ABAP语言与开发平台介绍5abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)ABAP语言与开发平台介绍基本语法介绍ABAP报表开发Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
6abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)Abap常用Tcode:se38se80se11se16
等等。7abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)基本语法介绍8abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)基本语法介绍9abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)程序名一般以‘Y’或‘Z’开头,在整个系统中唯一基本语法介绍10abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)属性设定:可执行,包含,模块池基本语法介绍11abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)分配对象及类,练习程序一般都保存为本地对象基本语法介绍abaptraining_ABAP培训基本语法介绍代码书写规则一条完整的代码以.分隔。多条代码可以写在同一行。一条代码可以分为多行编写。以“对其后的代码进行注释以*对整行的代码进行注释关鍵字与关键字或变量都以空格分隔简单示例基本语法介绍datav1[(l)][typet][decimalsd][value‘xxx'].v1 是变量名。
(l) 是变量的长度。
t 是数据类型。
d 是小数位。‘xxx’ 是缺省值。datanum(10)typepdecimals3value'1.12'.
以上定义了一个10位长度3位小数缺省值为1.12数字变量。abaptraining_ABAP培训定义变量基本语法介绍数据类型描述缺省长度最大长度可用字符缺省值c字符165535任意字符空白n数字文本1655350-90d日期8(固定)-0-9t时间6(固定)-0-9000000x十六进制数1655350–9和A-Fabaptraining_ABAP培训基本语法介绍数据类型描述缺省长度最大长度最大小数位缺省值i整数4(固定)-00p十进制数816140f浮点数8815*0.1abaptraining_ABAP培训基本语法介绍abaptraining_ABAP培训输入参数在程序运行之前,往往需要输入某些参数,例如查询的日期、查询的城市等。在ABAP/4中,你不需要自己来编写输入参数的界面,你只需要定义要作为参数的变量,系统将自动提供输入界面。要让一个变量成为可输入的参数,只需在定义变量时把data改为parameters即可。基本语法介绍abaptraining_ABAP培训输入参数的格式(1):parametersp1likev1......[default'xxx'][obligatory][lowercase][ascheckbox][radiobuttongroupg].default:指定缺省值;
obligatory:设置必输项;
lowercase:转换成小写,默认会把输入的字符转为大写;ascheckbox:设置成checkbox;radiobuttongroup:设置成radiobutton;示例:
parameters:p1(20)typecdefault'A'.
以上代码指定了一个缺省值为A的长度为20的字符串。基本语法介绍abaptraining_ABAP培训输入参数的格式(2):select-options:<seltab>
for<f>
DEFAULT<g>[TO<h>] [OBLIGATORY][NOINTERVALS]...该语句创建选择表<seltab>,该表与数据库表的列<f>或内部字段<f>相连接。该数据库表必须在程序中用TABLES语句声明。名称<seltab>最多可以包含8个字符。选择表<seltab>由报表用户在选择屏幕中填充。在程序中,可以修改选择表的行或往里面添加更多的行。DEFAULT<g>[TO<h>]:用来设置默认的LOW值与HIGH值。OBLIGATORY:设置成必输项。NOINTERVALS:设置成只有LOW选项的单值。
基本语法介绍abaptraining_ABAP培训分块语句的格式:SELECTION-SCREENBEGINOFBLOCK<block>[WITHFRAME[TITLE<title>]]....SELECTION-SCREENENDOFBLOCK<block>.必须为每个块定义名称<block>名。可以嵌套块。如果增加WITHFRAME选项,在块的周围将画外框。最多可以嵌套5层带外框的不同块。可以使用TITLE选项给每个外框增加标题。
基本语法介绍abaptraining_ABAP培训在屏幕上产生空行:SELECTION-SCREENSKIP[<n>].该语句产生<n>个空行,其中<n>的值可以是1到9。要产生单个空行,可以省略<n>。使用SKIP也只可以产生空行,如:
SKIP2.
跳两行输出
SKIPTOLINE20.跳转到20行输出基本语法介绍abaptraining_ABAP培训在屏幕上画一条直线:SELECTION-SCREENULINE[[/]<pos(len)>].该语句创建下划线。如果不使用格式选项<pos(len)>,则在当前行下面创建新行。如果使用格式选项<pos(len)>,下划线将从当前行的位置<pos>处开始,连续<len>个字符。[/]请求换行。使用ULINEAT也可以画直线,如:
ULINEAT/1(10).从第1位输出一条长度为10的横线基本语法介绍abaptraining_ABAP培训
内表是ABAP/4中非常特殊和重要的一种变量,它是一个数据库表,但又与一般的数据表不同,这个数据表只存在内存中,当你的程序结束的时候,它也跟着同时结束。内表是按行进行访问的,所以必须使用某个工作区域作为与表格互相传输数据的接口。内表分为带表头行和不带表头行两类,如果创建带表头行的内表,系统自动创建与内表行数据类型相同的工作区域,该工作区域称为表头行或表格工作区域。不带表头行的内表没有可以隐式使用的表头行或表格工作区域。要访问没有表头行的内表,必须在ABAP程序中指定和内表类型相同的工作区域。对于带表头行的内表,内表本身和表格工作区域同名。如果在语句中使用该名称,系统将其解释为表格工作区域,而不是表格本身。但在某些语句中,可以在名称之后输入方括号,定址内表而不是表格工作区域,如下所示:<name>[]。内部表基本语法介绍abaptraining_ABAP培训内表的定义和工作区域的定义基本上是一样的,差别只是内表需要指定记录的条数,而工作区域不需要指定。内表的定义方法一:
data:beginof<内表名>
occursn,
f1[(l)][typet][decimalsd][value'xxx'],
f2[(l)][typet][decimalsd][value'xxx'],
...
endof内表名.n为该内表的起始记录条数,不过当内表的记录数超过了该数值后,内表会自动增加这个数目,定义该数值只是为了系统的效率考虑,如果n为0,则系统会在一开始就分配8KB的默认空间。基本语法介绍abaptraining_ABAP培训内表的定义方法二:
data:beginofItaboccursn.
includestructure<结构或数据库表>.
data:f1[(l)][typet][decimalsd][value'xxx'].
data:endofitab.使用这种方式定义的内表包含<结构或数据库表>的所有字段,但也可以增加<结构或数据库表>里没有的字段,如f1字段。基本语法介绍abaptraining_ABAP培训内表的定义方法三:data:itablike<结构或数据库表>occursn[withheaderline].使用这种方式定义的内表跟<结构或数据库表>里的字段是一样的,如果不带参数withheaderline的话,定义的内表是没有表头行的。示例:
data:it1likest1occurs10."st1为一结构
data:it2liket000occurs0."t000为一数据表基本语法介绍abaptraining_ABAP培训ABAP主要语句赋值语句(=、Move)条件语句(if…else…endif、case、while)内表循环语句(loopat…endloop、DO)读取内表的单行数据(ReadTable)内表排序操作(Sort)数据库或内表操作语句(Select、Insert、Modify、Update、Append,Delete)输出语句(Write)基本语法介绍abaptraining_ABAP培训付值语句为变量进行付值的格式为变量=要付的值.
例如total=10.如果要付值的对象是字符,则需要用‘括起来。例如mess=‘thisisatest!’.如果字符串中包括‘号,用’’进行付值。例如mess=‘thisisa‘’test’’!’.语句将会输出thisa‘test’!进行计算并把结果存入变量的格式为变量A=变量B操作符变量C
例如b=10,c=5
则语句a=b+c.将把b和c相加,并把结果付与a,则a=15。基本语法介绍abaptraining_ABAP培训常用运算操作+加法运算-减法运算*乘法运算/除法运算**取幂运算DIV整除运算MOD取模运算基本语法介绍abaptraining_ABAP培训IF条件判断语句IF语句格式:IF<condition1>.<statementblock1>ELSEIF<condition2>.<statementblock>ELSE.<statementblock>ENDIF.如果第一个条件是真,系统将执行所有语句直到第一个语句块结束,然后继续处理ENDIF语句之后的程序。如果第一个条件是假,系统使用与IF语句一样的方式处理后面的ELSEIF语句。如果IF或ELSEIF条件都为假,则执行ELSE开始的语句块。最后的语句块必须用ENDIF结束。基本语法介绍abaptraining_ABAP培训CASE语句的格式:
casevwhenv1.[执行1]whenv2.[执行2]whenothers.[执行3]endcase.CASE条件判断语句事例:
casei.when1.write'i=1'.when2.write'i=2'.whenothers.write'i<>1andi<>2'.endcase.如果i=1,输出i=1;
如果i=2,输出i=2;
如果既不等于1也不等于2时,输出i<>1andi<>2。基本语法介绍abaptraining_ABAP培训While循环语句WHILE语句是在条件成立的情况下重复执行一段代码。WHILE语句的格式:
while[条件].[执行语句]endwhile.以下代码的结果是在i
小于6时,不断的输出I的值,每执行一次,I就加1。
whilei<6.write:/'i=',i.i=i+1.endwhile.基本语法介绍abaptraining_ABAP培训LoopAt循环语句Loopat语句是内表循环语句,可以对整个内表进行循环也可以根据条件进行循环。Loop语句的格式:
Loopatitab[into工作区][where条件].[执行语句]Endloop.以下代码是按条件循环itab内表,并输出内表里col1列等于10的所有数据。Loopatitabwherecol1=10.Write:/itab-col1.Endloop.当内表有表头的时候,可以不使用[into工作区]参数。基本语法介绍abaptraining_ABAP培训DO循环语句DO语句用于对一段代码进行多次的执行,这里的DO语句不同于其它语言中的DO,而类似于其它语言中的FOR语句。DO语句的格式:
do[n]times.[执行代码].enddo.[n]为执行的次数,[执行代码]为要重复执行的代码。可以使用Continue退出当次循环,EXIT退出整个循环。基本语法介绍abaptraining_ABAP培训读取内表的单行数据:ReadTable语句用于读取内表里的单行数据,如果存在多条时只会读取第一条。ReadTable的语句格式:READTABLE<itab>[INTO<wa>]<key-option>TRANSPORTING<fields>.按<keyoption>指定的条件读取单行,读取行之后,将<fields>中指定的字段传输给目标区域。使用INTO指定目标区域,如果内表有表头行,可以忽略INTO选项。对于<fields>,可以用<f1>...<fn>指定一系列要读取赋值的字段;也可以用NOFIELDS指定不传输任何字段。如果使用NOFIELDS,READ语句只影响系统字段SY-SUBRC和SY-TABIX。SY-SUBRC等于0表示读到数据。SY-TABIX读取到的记录在内表的索引号。基本语法介绍abaptraining_ABAP培训内表操作语句-SortSORT语句按指定的字段对内表进行排序。SORT语句的格式一:SORT<itab>
[BY<f1>[ascending|descending]...<fn>[ascending|descending].
使用BY选项定义排序字段。如果不使用BY选项,则根据标准关键字对内表<itab>进行排序。可以通过在<order>选项中输入DESCENDING或ASCENDING来指定排序顺序。标准顺序是升序。基本语法介绍abaptraining_ABAP培训数据库操作语句-SelectSELECT语句实现从数据库中读取数据的操作。SELECT语句的格式:SELECT<result>FROM<source>[INTO<target>][WHERE<condition>][GROUPBY<fields>][ORDERBY<sort_order>].SELECT<result>子句定义选择的结果是单行还是多行、及选择读取的列。FROM<source>子句定义从数据库或是视图中读取数据。INTO<target>子句定义把读到的数据存放的目标区域。WHERE<condition>子句定义按照哪些条件读取数据。GROUPBY<fields>子句定义分组规则。ORDERBY<sort_order>子句对读到的数据进行排序。基本语法介绍abaptraining_ABAP培训SQLWhichcolumns?Whichtable(s)?Whereto?Whereto?Whichlines?Particularcolumn}Multiplelines}SinglelineSELECT<result>FROM<table>INTO<target>WHERE<Condition>基本语法介绍abaptraining_ABAP培训SQL
DATAwa_spfli
LIKEspfli....SELECTSINGLEcarridconnidcityfromcityto
FROMspfli
INTO
CORRESPONDINGFIELDS
OFwa_spfli
WHEREcarrid=sdyn_conn-carrid
ANDconnid=sdyn_conn-connid.TableSPFLIwa_spfliFieldcontainedinthedatarecordlikecarridconnid...arereadfromdatabasetablespfliandinsertedintheircorrespondingfieldsinworkareawa_spfli.基本语法介绍abaptraining_ABAP培训
TableSPFLIABAPABAPSELECT<f1>..<fn>FROM<dbtab>INTOTABLE<itab>WHERE
...InternaltableReadsalldatarecordsspecifiedintheWHEREconditionfromthedatabase基本语法介绍abaptraining_ABAP培训数据库表操作语句-InsertINSERT语句向数据库表中插入一行或是多行。INSERT语句的格式一:INSERT<dbtab>FROM<wa>.把工作区域<wa>里的数据插入到数据库表<dbtab>中。INSERT语句的格式二:INSERT<dbtab>FROMTABLE<itab>.
把内表<itab>里的数据插入到数据库表<dbtab>里。基本语法介绍abaptraining_ABAP培训内表操作语句-InsertINSERT语句把一个内表或是工作区域的数据插入到另一个内表。INSERT语句的格式一:
INSERT<wa>INTO<itab>[INDEX<idx>].
把工作区域<wa>里的数据插入到<itab>内表里.INSERT语句的格式二:INSERTLINESOF<itab1>[FROM<n1>][TO<n2>]INTO<itab2>[INDEX<idx>].把内表<itab1>里的所有数据插入到内表<itab2>里,可以使用FROM参数定义数据插入范围,使用INDEX指定数据插入的位置。
如果不带INDEX选项,系统只能在LOOP循环内通过SY-TABIX插入新条目。如果内表包含<idx>-1条目,系统将新条目附加到内表最后。如果表格的条目小于<idx>-1,系统无法插入条目,并将SY-SUBRC设置为4。基本语法介绍abaptraining_ABAP培训数据库表操作语句-ModifyMODIFY语句向数据库中插入一行或是多行或修改数据库中的一行或是多行。MODIFY语句的格式一:MODIFY<dbtab>FROM<wa>.把工作区域<wa>里的数据插入或更新到数据库表<dbtab>中,当数据库<dbtab>中存在工作区域<wa>里的记录时则更新数据库表<dbtab>里的记录。MODIFY语句的格式二:MODIFY<dbtab>FROMTABLE<itab>.
把内表<itab>里的数据插入或更新到数据库表<dbtab>里,如果记录存在就更新<dbtab>里的记录。基本语法介绍abaptraining_ABAP培训内表操作语句-ModifyMODIFY语句把工作区域里的数据更新到内表的当前行。MODIFY语句的格式一:MODIFY<itab>[FROM<wa>][INDEX<idx>].
把工作区域<wa>里的数据更新<itab>内表里的当前行。如果表格有表头行,可以忽略FROM选项。如果使用INDEX选项,则新行代替索引为<idx>的现有行。如果内表包含的行少于<idx>,则不更改任何行并且SY-SUBRC等于4。如果使用没有INDEX选项的MODIFY语句,则系统只能在LOOP循环块中修改当前行。基本语法介绍abaptraining_ABAP培训数据库表操作语句-UpdateUPDATE语句可以更新数据库中已经存在的记录,允许更新单行或是多行,如果不能确定需要更新的记录是否存在,可以使用MODIFY语句。UPDATE语句的格式一:UPDATE<dbtab>FROM<wa>.
把工作区域<wa>里的行更新数据库表<dbtab>的行,该数据库表需与<wa>具有相同的主码。UPDATE语句的格式二:UPDATE<dbtab>
SET<S1>..<Sn>[WHERE<condition>].使用WHERE条件更新选定的行,如果不使用WHERE则更新所有行。基本语法介绍abaptraining_ABAP培训数据库表操作语句-UpdateUPDATE语句可以更新数据库中已经存在的记录,允许更新单行或是多行,如果不能确定需要更新的记录是否存在,可以使用MODIFY语句。UPDATE语句的格式三:UPDATE<dbtab>FROMTABLE<itab>.把内表<itab>里的记录更新到<dbtab>数据库表里,根据主码只更新<dbtab>里已经存在的记录,如果更新了所有的行,SY-SUBRC才等于0,否则等于4,同时SY-DBCNT会记录更新的条数。基本语法介绍abaptraining_ABAP培训内表操作语句-AppendAPPEND语句把一个内表或是工作区域的数据追加到另一个内表。APPEND语句的格式一:
APPEND<wa>TO<itab>.
把工作区域<wa>里的数据追加到<itab>内表里。APPEND语句的格式二:APPENDLINESOF<itab1>[FROM<n1>][TO<n2>]TO<itab2>.把内表<itab1>里的所有数据追加到内表<itab2>里,可以使用FROM参数定义数据追加范围。
基本语法介绍abaptraining_ABAP培训数据库表操作语句-DeleteDELETE语句删除数据库表中的单行或是多行记录。DELETE语句的格式一:DELETE<dbtab>FROM<wa>.将从数据库表<dbtab>中删除主码与工作区<wa>中指定的主码相同的行。DELETE语句的格式二:DELETEFROM<dbtab>WHERE<conditions>.
使用WHERE条件删除数据库表<dbtab>里的记录。基本语法介绍abaptraining_ABAP培训数据库表操作语句-DeleteDELETE语句删除数据库表中的单行或是多行记录。DELETE语句的格式三:DELETE<dbtab>FROMTABLE<itab>.从数据库表<dbtab>中删除主码与内表<itab>中的主码相同的行。
所有行删除成功则SY-SUBRC被设置成0,否则被设置成4,同时SY-DBCNT记录了被删除的条目数。基本语法介绍abaptraining_ABAP培训内表操作语句-DeleteDELETE语句删除内表里的单行或是多行。DELETE语句的格式一:
DELETE<itab>[FROM<n1>][TO<n2>][WHERE<condition>].用户必须选择一个参数。如果没有WHERE选项,则系统从<itab>中删除所有索引在<n1>和<n2>之间的行。如果不使用FROM选项,则系统从第一行开始删除。如果不使用TO选项,则系统删除行直到最后一行。DELETE语句的格式二:DELETE<itab>INDEX<idx>.如果使用INDEX选项,则从ITAB中删除索引为<idx>的行。删除行之后,下面行的索引减1。基本语法介绍abaptraining_ABAP培训内表操作语句-DeleteDELETE语句删除内表里的单行或是多行。DELETE语句的格式三:DELETE<itab>.只能在LOOP循环中使用,删除当前行。SY-TABIX记录索引行号。DELETE语句的格式四:DELETEADJACENTDUPLICATEENTRIESFROM<itab>[COMPARING<comp>].从内表<itab>中删除所有邻近重复条目。使用COMPARING选项设置删除重复行的比较标准,可以指定单个或是多个字段,也只可以使用ALLFIELDS设置成所有字段。如果没有COMPARING选项,则跟使用ALLFIELDS选项一样,根据所有字段删除重复行。在使用此删除语句时必须根据指定的比较标准进行排序。基本语法介绍abaptraining_ABAP培训内表操作语句-CollectCOLLECT语句使用唯一标准关键字填充或是更新内表里的单行或是多行。COLLECT语句的格式一:
COLLECT[<wa>INTO]<itab>.把工作区<wa>里的记录填充或是更新到内表<itab>里。如果有表头行可以忽略INTO选项。如果<wa>里的标准关键字与<itab>里的相同则更新<itab>里的记录,数值字段累加。如果没有相同的标准关键字,则COLLECT语句的作用与APPEND语句相似,在内表里增加新行。内表的关键字段是指非数值型字段(类型F、I和P)。这些关键字段形成内表的标准关键字。基本语法介绍abaptraining_ABAP培训基本语法:
WRITEf<选项>字段<f>可以是任何数据对象、字段符号、公式参数、文本符号等。<选项>参数:1.AT[/][<pos>][(<len>)]<f>:[/]换行;<pos>表示在屏幕上的位置;表示输出长度。2.option
:formattingoption,如CENTERED(输出居中);NO-GAP(忽略空格)等等。
4.ASCHECKBOX:outputascheckbox,如WRITE:/‘Flag1’,FLAG1ASCHECKBOX。5.ASSYMBOL:outputassymbol,如:WRITE:/‘PhoneSymbol:’,SYM-PHONEASSYMBOL。6.ASICON:outputasicon,如:WRITE:/‘AlarmIcon:’,ICON_ALARMASICON.。
注:SYMBOL和ICON
的名称是系统常量,这些常量在包含程序<SYMBOL>和<ICON>中指定。这些包含程序也包含符号和图标的简短说明。基本语法介绍abaptraining_ABAP培训基本语法介绍-MessageREPORTsapbc400udd_messageMESSAGE-IDbctrain....MESSAGEE050.MessagetextNodataexistsforthisselection(Pleaseinsertanothervalue)...Ailrlinecarrier&doesnotexistDivisionbyzero...TableT100SDE...DEDE...IDBCTRAIN...BCTRAINBCTRAIN
...No.038...049050
...DivisionbyzeroDivisionbyzeroabaptraining_ABAP培训REPORT<reportname>MESSAGE-ID<messageid>.AnnnXnnnMESSAGEEnnnWITH<field1><field2><field3><field4>.
WnnnInnnSnnn..A:异常终止X:取出E:错误W:警告I:信息S:成功使用交易码SE91定义、修改或是查看信息类型基本语法介绍-Messageabaptraining_ABAP培训
CallsamessageREPORTsapbc400d_getting_started....CALLSCREEN100.SELECTSINGLE...IFsy-subrc=0.MESSAGEI027(bctrain).ENDIF.DialogtypeDialogreactionMessagenumberTextMessageclassTableT100InformationAdatabaseentryhasbeenread基本语法介绍-Messageabaptraining_ABAP培训基本语法介绍-DebugBREAK-POINT<wert>.BREAK-POINT<wert>.1.ProgrammanweisungRepositoryBrowserRepositoryBrowserProgram??閩33閩閩3閩3GotoSystemHelpEditTest/ExecuteSAPBC411SAPSchulung:BC411ObjecttypedevelopmentclassProgramsContext_I_C_GEOGR_DISTANCEContext_I_C_GEOGR_DISTANCEBREAK-POINT<wert>.BREAK-POINT<wert>.1.ProgrammanweisungABAPEditor:InitialScreenABAPEditor:InitialScreenProgram閩閩GotoSystemHelpEditDebuggingBC400D_DEBUGGERProgramCreateExecuteSub-objectsSourcecodeVariantsAttributesDocumentation/H......Utilities>...Debugging...abaptraining_ABAP培训RSAPR/3Debugging??閩33閩閩3閩3BezeichnungenGotoBreakpointSettingsDevelopmentSystemHelpMainprogramBC400D_DEBUGGERSourcecodeofBC400D_DEBUGGERstart-of-selectionFieldnameFieldcontentsDouble-click2-57768WatchpointFieldsTableWatchpointCalls-FixedptarithmeticBreakpointREPORTBC400D_DEBUGGER...DATEREC=SY-DATUM.
...DATERECSY-DATUM基本语法介绍-Debugabaptraining_ABAP培训在ABAP/4是,系统保留了一些变量用于记录系统和程序运行的一些状态,在程序中,我们可以使用这些变量来知道程序运行的一些情况,例如在前面讲内表时提到过的sy-subrc就是记录操作是否成功的一个变量,此外还有记录系统时间的变量,记录登录用户的变量等。所有的系统变量可以在数据库表SYST里查看。系统变量基本语法介绍abaptraining_ABAP培训变量描述sy-datum当前日期sy-uzeit当前时间sy-uname当前用户sy-subrc当前操作返回值(0为成功)sy-mandt当前的客户机基本语法介绍ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
61abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训INITIALIZATION
在显示选择屏幕之前的点。程序最开始发生的事件,可以进行初始数据的处理。ATSELECTION-SCREEN
处理用户在选择屏幕上输入之后的点。用来对在屏幕上输入的数据进行检查。START-OF-SELECTION
处理选择屏幕之后的点。在输入参数完成之后,运行该事件,在该事件中主要进行数据逻辑的处理。END-OF-SELECTION
处理完逻辑数据库提供的所有行为之后的点。发生在start-of-selection之后的事件,在该事件中主要进行数据的输出显示。不管按什么顺序书写代码,start-of-selection里的代码一定会在end-of-selection之前处理。程序事件ABAP报表开发结构abaptraining_ABAP培训TOP-OF
启动新页时,列表处理中的点。该事件主要处理表头的数据,在top-of中显示的内容一定会出现在每一页的开始END-OF
结束页时,列表处理中的点。该事件主要处理页尾的数据,在end-of中显示的内容都会出现在每一页的结尾。程序事件ABAP报表开发结构abaptraining_ABAP培训基本语法:FORM<subroutinename>.…ENDFORM.
FORM--子程序定义ABAP报表开发结构abaptraining_ABAP培训接口定义:
FORM--子程序定义行参-实参传递方式值调用地址调用ABAP报表开发结构abaptraining_ABAP培训基本语法:PERFORM<subroutinename><interface>.
FORM—调用子程序ABAP报表开发结构abaptraining_ABAP培训参数传递:
FORM—调用子程序ABAP报表开发结构abaptraining_ABAP培训练习题:创建一个有事件的简单报表:(从ekko,ekpomakt中读取采购订单信息)输出:工厂有采购单号项目物料描述数量,单价币别金额等).示例程序分析:ZNORMAL_REPABAP报表开发结构ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
69abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训Function开发abaptraining_ABAP培训Function开发abaptraining_ABAP培训Function开发abaptraining_ABAP培训使用事务码SE37进入函数初始界面输入函数名称,如果函数已经存在可进行查看、修改;如果函数不存在可点击Create按钮后输入一个已经存在的函数组和描述创建此函数。函数开发:Function开发abaptraining_ABAP培训显示进入函数的编辑界面属性标签页:1.必须指定所需分配的函数组;2.Normalfunctionmodule选项为普通函数,不可为外部系统使用;3.Remote-enabledmodule选项为RFC远程调用函数,即为SAP内部使用,又可实现外部系统的调用;函数开发:Function开发abaptraining_ABAP培训Import设置函数的输入参数标签页Export设置函数的输出参数标签页Tables通过内表设置可输入可输出参数标签页Exceptions异常参数输出标签页Sourcecode源代码标签页函数开发:Function开发abaptraining_ABAP培训使用事务码SE80创建函数组:输入函数组的名称,回车点击“是”按钮后输入函数组的描述,完成创建函数组的创建。创建函数组:Function开发abaptraining_ABAP培训1、写一个Function,并进行调用2、写一个程序,并调用刚创建的FUNCTION。事例:ZNORMAL_FMFunction开发练习题:ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
78abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训数据表字典表的用途:将现实世界中的事物用元素的形式进行系统化,集成化,从而以数据的形式存储abaptraining_ABAP培训Objects:三层式架构数据表字典abaptraining_ABAP培训数据字典中包括:数据库表:存贮在应该数据的物理表。视图:多表关联,主要有四种类型:Databaseviews:数据库视图Projectionviews:投影视图,用于屏蔽一些字段(一般用于保护数据时使用)Helpviews:帮助视图,用于搜索帮助的"selectionmethod"中使用,参与连接表必须存在外键.
Maintenanceviews:维护视图,允许进行对几个表的数据进行修改,参与连接表必须存在外键,他们的连接条件是不能自定义的.数据类型:可创建、修改和查看Dataelement、Structure和Tabletype域:描述一个字段类型和长度等信息搜索帮助:用于程序引用作为屏幕字段F4功能帮助锁对象:用于对数据库中同一数据进行的操作,为减少并发性问题,引入
锁对象的概念数据表字典abaptraining_ABAP培训表、视图数据的查询事务码:SE11,SE16,SE16N等
系统表的查找方法:1.PartthecursoratthefieldandpressF1.
2.事务码ST05(sqltrace).
3.SettingBreakpointinABAP.数据表字典abaptraining_ABAP培训创建一个数据表
创建一个视图从而新增,修改记录事例:ZNORMAL_TAB练习题数据表字典ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
84abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训ALV-报表输出ALV的特点:数据输出界面整齐美观.直接套用标准函数,节省编程时间和代码量.用户可以选择相应的字段进行排序.用户可以选择相应的字段进行小计和总计.用户可以自己对输出结果进行过滤查询.用户可以将结果存为其他多种文件(Excel,Word,Text).用户可以根据自己需要调整报表Layout.通过设定其相关的属性来达到用户要求的其他一些功能,如数据编辑,字段颜色处理,字段显示的优化等.abaptraining_ABAP培训ALV-报表输出在Report中以CallFunction方式调用ALV步骤:
1.根据Report的输出字段定义输出的InternalTable.
2.根据查询条件得到要输出的资料,并存入输出的InternalTable.
3.取得程序名称(SY-REPID).
4.根据程序名称和输出的InternalTable名称,
通过CallFunction:
REUSE_ALV_FIELDCATALOG_MERGE取得Fieldcatalog.
5.根据FieldCatalog和输出的InternalTable,
通过CallFunction:
REUSE_ALV_GRID_DISPLAY或
REUSE_ALV_LIST_DISPLAY
输出ALV到屏幕.abaptraining_ABAP培训ALV-报表输出FieldCatalog主要属性介绍:
1.key将此字段设为Key并显示颜色(X).
2.icon将此字段以Icon的形式显示(X).
3.checkbox将此字段以Checkbox的形式显示(X)
4.Just字段对齐方式(R)ight(L)eft(C)ent.
5.lzero将此字段设为前导的‘0’的形式显示(X)
6.no_sign将此字段的符号设置为不显示(X).
7.no_zero如果此域值为‘0’将不显示(X).
8.emphasize设置字段的颜色(Cxyz).
9.do_sum对此字段进行加总(X).
10.no_out设置此字段默认不显示(O)blig.(X)noout.
11.seltext_l设置此域名描述(长字符串)
12.seltext_m设置此域名描述(中等字符串)
13.seltext_s设置此域名描述(短字符串)
14.ddictxt设置选择哪种字符串显示.
15.hotspot设置此字段有热点(X)abaptraining_ABAP培训ALV-报表输出Layout主要属性介绍(Function)
:
1.edit
此字段可将ALV设置为编辑模式(X).
2.colwidth_optimize
此字段可将ALV字段宽度设为最优(X).
3.no_vline此字段设置可以不显示垂直网格线(X).
4.no_uline_hs此字段设置可以不显示水平网格线(X).
5.no_keyfix此字段设置可不固定关键字段(X).
6.info_fieldname此字段设置颜色属性(Cxyz).
7.lights_fieldname设置Lights域名.
8.key_hotspot设置关键字段有热点(X).abaptraining_ABAP培训创建一个程序并使用ALV输出事例程序:ZNORMAL_ALV练习题数据表字典ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
90abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训批处理程序开发BatchInput是一种数据批量输入SAP系统的辅助程序,SAP系统的资料、格式可以通过BatchInput录入SAP系统BatchInput的机制是模拟事务处理将数据录入R/3系统BatchInput类似SAP的CATT,控制性更好,处理能力更强编写批导程序的步骤:了解业务流程实际操作
模拟运行交易并编写程式
检查并前后台测试,修改BATCH--INPUT:批导程序abaptraining_ABAP培训BatchInput程式一般结构:读取数据并检查
CALLFUNCTION‘WS_UPLOAD’
为批处理开辟处理池,创建任务IDCALLFUNCTION'BDC_OPEN_GROUP'
据内表一条一条记录模拟执行
CALLFUNCTION'BDC_INSERT'
关闭处理池,结束处理
CALLFUNCTION'BDC_CLOSE_GROUP'批处理程序开发abaptraining_ABAP培训通过以下两步完成数据的批导工作:SHDB -BatchInputTransactionRecorderSM35 -BatchInputMonitoring可以通过在屏幕字段上按‘F1’,然后查看其技术信息获得字段信息BATCH--INPUT:批导程序批处理程序开发abaptraining_ABAP培训创建一个修改物料主数据BDC程序.事例程序:ZNORMAL_BDC练习:批处理程序开发ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
95abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训SAP事务程序开发在sap的实施中有些开发需人工介入对数据进行交互处理,如有创建,修改,删除,显示等,或用户加入有关数据,则需通过屏幕输入的方式进行解决,它在大型的开发系统中经常用到,是深层开发人员需掌握的技术之一!abaptraining_ABAP培训SAP事务程序开发abaptraining_ABAP培训SAP事务程序开发abaptraining_ABAP培训SAP事务程序开发abaptraining_ABAP培训銄SAPAGRCommunicationBet.ScreenandProgramIDENTICALNAMESIDENTICALNAMESIDENTICALNAMESTimePBOMODULEtrans_to_100PAIMODULEtrans_from_100AfterAfterPBOPBOTABLES:sdyn_conn.CARRIDCONNIDLH0400ProgramworkareaTABLES:sdyn_conn.CARRIDCONNIDLH0402MODULEtrans_to_100OUTPUT.MOVE-CORRESPONDINGwa_spfliTOsdyn_conn.ENDMODULE.MODULEtrans_from_100INPUT.MOVE-CORRESPONDING
sdyn_conn
TOwa_spfli.ENDMODULE.SDYN_CONN-CARRIDLHSDYN_CONN-CONNID0402BeforeBeforePAIPAISAP事务程序开发abaptraining_ABAP培训交易程式示例:ZTST_005报表间参数的传递及调用:SET
PARAMETER
ID
‘WRK’
FIELD
P_WERKS.传递参数GETPARAMETERID‘WRK’FIELDP_WERKS.获取参数EXPORT
ITAB
TO
MEMORY
ID
‘ITAB’.传递对象IMPORT
ITAB
FROM
MEMORY
ID
‘ITAB’.接收对象报表与事务调用:SUBMIT
ZTST_006
AND
RETURN.调用报表CALL
TRANSACTION
‘MM03’
AND
SKIP
FIRST
SCREEN.调用事务
SAP事务程序开发abaptraining_ABAP培训创建一个具有两个画面的交互程序(从第一个画面输入物料,在第两个画面显示物料相关数据,并有些field可以修改)事例:ZNORMAL_TRZNORMAL_TR_PRINT
练习题:SAP事务程序开发ABAP语言与开发平台介绍基本语法介绍ABAP报表开发结构Function开发数据字典ABAP报表ALV输出批处理程序开发SAP事务程序开发Query开发SmartForm表单开发ABAP性能优化与命名规则目录
103abaptraining_ABAP培训。欲了解更多信息,请联系[法定名称及分所名称]。(编制页眉页脚的文字)abaptraining_ABAP培训Query开发 Query是SAPR/3数据查询的一种方法,使用该工具可以在不用开发的情况下定义需要的报表。 Query对数据查询可以进行进一步的处理(例如:列表显示、下载到文件、图表方式显示等等)。abaptraining_ABAP培训Query开发 Query是SAPR/3数据查询的一种方法,使用该工具可以在不用开发的情况下定义需要的报表。 Query对数据查询可以进行进一步的处理(例如:列表显示、下载到文件、图表方式显示等等)。abaptraining_ABAP培训Query开发制作Query由三部分组成:
用户组(SQ03)存放用户组信息查询(SQ01)存放查询的格式信息信息集(SQ02)
存放数据源信息abaptraining_ABAP培训Query开发信息集、用户组和查询三者之间的关系:
信息集分配用户组信息集1信息集2信息集…用户组…信息集…定义查询1定义查询2Query开发QUERY开发实际操作步骤:用户组维护确定要使用的数据表定义查询数据源(表或者表链接,生成infoset)定义查询的输出字段,屏幕格式运行查询,定义用户格式生成ABAP程序为查询定义事务代码1、维护用户组(T-CODE:SQ03)注:1.创建2.更改3.删除1232、确定要使用的数据表
F1:查看技术信息F1:查看技术信息MSEGMKPF123注:1.创建
2.双击需要查看的信息集,显示该信息集
3.在查看状态下,按修改按钮,修改信息集3、定义查询数据源3.1维护信息集(T-CODE:SQ02)3.2指定信息集名称和类型
信息集名称数据源:在大部分情况下,建议选用直接读取表的方式,输入需要显示的表名。表连接/逻辑数据库/数据恢复程序等方式需要有一定的数据库和开发知识,属于高级应用3、定义查询数据源12注:1.插入新增数据源
2.删除数据源
3.维护信息集33.3新增或删除数据源
3、定义查询数据源字段组:需要显示的字段系统用字段组来管理,创建时系统会自动创建一个默认字段组,你也可以自行添加。在创建信息集时,系统会提示选择如何创建字段组,建议选择包括关键字段。进入更改界面后,可以加入新的字段到字段组,方法是:1.选择字段2.选择字段组
3.按“插入”按钮将字段插入到字段组
4.也可以使用下面的按钮维护字段组和删除字段12343.4定义字段组的字段
3、定义查询数据源在一些情况下,系统默认的字段描述与我们需要的不一致,例如我们希望凭证编号描述就是“凭证编号”,而不是“物料凭证编号”或者“凭证号码”这样,就需要修改字段描述,操作如下:
1.双击字段组中的字段
2.修改长文本和表头的描述3.按复制按钮,确认该修改123修改后,字段描述相应修改:3.5修改字段描述
3、定义查询数据源在信息集进行编辑操作后,需要按“保存”按钮,将修改保存下来。但保存后的信息集还不能应用于查询,需要进行生成,没有生成的信息集在信息集列表显示为红灯:生成信息集,在修改状态下点“生成”按钮或是退出时系统提示是否需要生成,选“是”。3.6保存或生成信息集
3、定义查询数据源在信息集成功生成后,需要把信息集分配给用户组,否则在定义查询时,将看不到这个信息集,操作如下:
1.输入信息集名称,按“用户组分配”按钮2.选择需要分配的用户组,打勾,最后点击保存123.7把信息集分配给用户组
3、定义查询数据源4、定义输出字段、屏幕格式2311.通过”创建“/”更改“/”显示“维护查询2.切换用户组3.双击需要查看的用户组4.1维护查询(T-CODE:SQ01)
23输入查询名称,按“创建”按钮,创建一个新的查询选择相应的信息集,双击
输入查询描述14.2创建信息集和维护查询描述
4、定义输出字段、屏幕格式…点击“基本清单”,编辑报表输出格式按报表字段出现的顺序,逐一选择字段;格式确定后,保存,按“退出”按钮退到编辑查询画面1324.3编辑报表输出格式
4、定义输出字段、屏幕格式…1234按“前进”按钮按“前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-河北-河北印刷工二级(技师)历年参考题库含答案详解
- 2026事业单位工勤技能-江西-江西家禽饲养员四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-江苏-江苏机械冷加工五级(初级工)历年参考题库含答案详解
- 2026事业单位工勤技能-北京-北京地质勘查员四级(中级工)历年参考题库含答案详解
- 某石油炼制厂油品储存规范
- 麻纺厂质量事故处理办法
- 纺织厂员工考核办法
- 印刷厂印刷油墨管控办法
- 某机械厂环境保护制度
- 2026年全球海洋物理AI市场白皮书
- 2026年辽宁省中考英语试题(含答案)
- 2026年土地估价师(土地管理基础与法规)经典试题及答案一
- 2026年中级会计实务真题及答案解析
- 2026年秋季开学大学开学第一课(校规校纪)课件
- 2026年开学第一课法治教育课件
- 2026年重庆市从“五方面人员”中选拔乡镇领导班子成员考试试卷(含完整答案解析)
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- 新版2026年秋统编版小学道德与法治四年级上册(全册)教学设计
- 政治经济学批判导言序言课件
- 天体运动-课件
- 说课大赛作品-《健康评估》说课程课件
评论
0/150
提交评论