ABAP程序详细介绍解读课件_第1页
ABAP程序详细介绍解读课件_第2页
ABAP程序详细介绍解读课件_第3页
ABAP程序详细介绍解读课件_第4页
ABAP程序详细介绍解读课件_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ABAP程序介绍

李国庆ABAP程序介绍1Sap发展历史

1972年,五名IBM的员工离开了IBM,在德国曼海母创建了SAP公司.SAP的第一个产品是一个自动化财务和交易程序.命名RF,就是后来的R/11979年,SAP推出用于大型机的R/2.1992年,SAP推出了著名的R/3.它建立在SAPBASIS平台的基础上,包括大家非常熟悉的SD,MM,FI,CO,PP..等模块.1996年,随着互联网的迅猛发展,SAP推出了支持Internet的新版R/33.1.1999年,SAP推出所谓的mySAPBusinessSuit.这其实又是新版的R/3,不过包含了CRM(Customer

Relationship

Management)和SCM(SupplyChainManagement)产品.ERP的版本变为4.6C,到后来的4.7.2004年,推出mySAPERP2004,技术平台为SAPWAS6.4.2005年,推出mySAPERP2005,技术平台为SAPWAS7.0.Sap发展历史

1972年,五名IBM的员工离开了IBM,2

SAPRelease版本之间的差异和关系

版本4.6C以前是所谓传统的R3系统,建立在SAPBasis平台的基础上版本4.70以后,改为R3Enterprise,最大的变化是SAPWAS取代了传统的Basis平台,核心业务功能模块也作了划分;R3Enterprise之后改称为mySAPERP2004-ECC5.0,推出了NetWeaver2004-集成应用平台.2005第4季度开始mySAPERP2005-ECC6.0的准备,最大的变化将是全面转向ESA体系(基于消息机制的企业应用体系),并引入了新的功能模块,比如PLM和SRM.

SAPRelease版本之间的差异和关系版本4.6C3应用结构应用结构4SAP的三层架构体系SAP的三层架构体系5ABAP开发和运行环境的图例.ABAP开发和运行环境的图例.6可用的工具可用的工具7传输传输8质量保证质量保证9运行过程运行过程10ABAP AdvancedBusinessApplicationProgramming的缩写,是SAPR/2,R/3版本时期唯一的系统开发工具.目前的版本是ABAP/4。ABAP11ABAP介绍ABAP是SAPERP主要的开发软件可以满足企业的特定的需要,对通过系统配置不能实现的功能进行二次开发可以进行各种类型的程序、界面、业务流程设计,如企业报表、企业单据、与第三方系统的接口等ABAP介绍12ABAP程序分类可执行程序:可分配事务代码直接运行:报表、事务模块化程序为其它程序提供模块化支持不能单独运行包括:功能模块,include程序ABAP程序分类可执行程序:13内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms内容报表14报表程序以report开头不修改数据库而从数据库表格中读取并分析数据的程序。结果通常是以列表的形式输出到屏幕或发送到打印机上分为普通报表和交互式报表普通报表程序输出结果格式固定,不能对其进行交互式操作;交互式报表程通过特定的触发事件,比如双击,菜单,按钮和功能键.可以对报表结果进行操作;报表程序15报表程序结构ABAP是事件驱动的语言,程序的运行由事件引导由过程块组成程序架构事件关键字之间或事件关键字与form关键字之间的语句形成一个过程块form和endform之间的语句形成一个子程序,子程序在过程块中被调用报表程序结构ABAP是事件驱动的语言,程序的运行由事件引导16报表程序组成全局申明过程块子程序类型、变量、屏幕一个事件发生时执行的模块优化程序的结构报表程序组成全局申明类型、变量、屏幕一个事件发生时执行的模块17事件属于某一特定事件关键字的语句形成一个过程块原则上每个过程块块由各自的关键字为起始;事件块的结束标志为下一个事件块的关键字;事件块由ABAP运行时调用,其调用顺序固定,与程序编码顺序无关;缺省的事件块START-OF-SELECTION事件属于某一特定事件关键字的语句形成一个过程块18主要事件块关键字INITIALIZATIONATSELECTION-SCREENSTART-OF-SELECTIONTOP-OFEND-OFATLINE-SELECTION ATPFATUSER-COMMAND在选择屏幕显示前,对变量进行初始化赋值对选择屏幕的数据输入进行检查选择屏幕处理完后,数据的处理列表显示启动新页,页头的输出一页结束时,页尾的处理用户双击选中某行触发该事件当用户功能健时,触发该事件设置自定义的菜单主要事件块关键字INITIALIZATION在选择屏幕显示前19事件块的简单处理过程事件块的简单处理过程:ABAP程序运行的时候,INITIALIZATION首先被调用;经过初始化的输入屏幕会显示在表示服务器;用户离开输入屏幕的时候,START-OF-SELCTION事件会被自动调用;结果数据会以列表的形式显示在第二个屏幕上;事件块的简单处理过程事件块的简单处理过程:20事件块的语法源代码中的事件块顺序不影响事件的执行顺序事件块的语法源代码中的事件块顺序不影响事件的执行顺序21INITIALIZATION通常在此事件块中设定输入屏幕字段的初始值

例如:INITIALIZATION.P_DATE=‘20030201’.效果:输入屏幕的日期字段初始显示值为2003年2月1日事件块编码规则(1)INITIALIZATION例如:INITIALIZAT22ATSELECTION-SCREEN通常在此事件块中进行用户输入数据的合法性检查,发现错误则以消息的形式给出警示,直到用户输入正确的数值

例如:ATSELECTION-SCREEN.IFP_DATE=SPACE.MESSAGEE001.ENDIF.效果:如果字段P_DATE为空,则程序会用消息001“日期字段不能为空!”来提示用户必须输入一个日期。而且输入屏幕会等待用户输入,知道该字段数值合法事件块编码规则(2)ATSELECTION-SCREEN例如:ATSELE23START-OF-SELCTION通常在此事件中针对业务需求进行系统数据的查询例如:start-of-selection.performget_data_for_oil.效果:在输入屏幕用户按下执行按钮后,子程序get_data_for_oil被执行,在其中获得业务相关的数据存放到内表或者其它变量,这些数据在END-OF-SELECTION事件块中被输出事件块编码规则(3)START-OF-SELCTION例如:事件块编码规则(3)24END-OF-SELCTION通常在此事件中进行结果清单的输出例如:end-of-selection.write:23(1)sy-vline,24(20)tab-gas_planright-justified,效果:数据以清单的形式输出事件块编码规则(4)END-OF-SELCTION例如:事件块编码规则(4)25事件块编码规则(5)ATLINE-SELECTION用于用户交互,当用户双击页面时,启动该事件.例如:atline-selection.GETCURSORFIELDl_fieldLINEl_line.效果:获取用户点击的行号和变量名事件块编码规则(5)ATLINE-SELECTION例如:26事件块编码规则(5)

SET

PF-STATUS<STATUS>设置用户自定义菜单AT-USER-COMMAND设置功能码的响应操作事件块编码规则(5)

SET

PF-STATUS<STAT27ABAP程序详细介绍解读课件28选择屏幕选择屏幕29ABAP程序详细介绍解读课件30内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms内容报表31本小节包含内容数据类型定义选择屏幕基本数据操作WRITE语句控制语句本小节包含内容数据类型32数据类型定义一个简单的数据类型定义一个结构化的数据类型定义一个内表形式的数据类型数据类型定义一个简单的数据类型33ABAP数据类型ABAP数据类型341,TYPES<t>[TYPE<type>|LIKE<obj>].2,TYPES<t>[(<length>)][TYPE<type>|

LIKE<obj>][DECIMALS<dec>].3,TYPES<t>.4,TYPES:BEGIN

OF<structure>,

<ti>...,

END

OF<structure>.5,TYPES<t>TYPE|LIKE<tabkind>OF<linetype>[WITH<key>].TYPES语句格式1,TYPES<t>[TYPE<type>|LIKE35通过系统标准类型定义通过数据库表字段定义自定义结构类型

TYPES语句实例TYPES:numberTYPEi,

lengthTYPEpDECIMALS2,code(3)TYPEc.TYPES:company

LIKEspfli-carrid.TYPES:BEGINOFaddress,

name

TYPEsurname,

street(30)TYPEc,

city

TYPEspfli_type-cityfrom,

ENDOFaddress.通过系统标准类型定义TYPES语句实例TYPES:numb36定义一个简单类型的变量定义一个结构化的数据对象定义一个内表DATA语句—定义数据对象定义一个简单类型的变量DATA语句—定义数据对象371,DATA<f>...[TYPE<type>|LIKE<obj>]...

[VALUE<val>].2,DATA<f>[(<length>)]TYPE<type>[DECIMALS<d>].3,DATA<f>.4,DATA:BEGINOF<structure>,

<fi>...,

ENDOF<structure>.DATA语句格式1,DATA<f>...[TYPE<type>|LI38DATA语句定义内表DATA语句定义内表39TYPES:BEGINOFstruct,

number_1TYPEi,

number_2TYPEpDECIMALS2,

ENDOFstruct.DATA:

wa_structTYPEstruct,

number

LIKEwa_struct-number_2,

date

LIKEsy-datum,

time

TYPEt.DATA:BEGINOFw_data,

number_3TYPEi,

number_4TYPEpDECIMALS2,

ENDOFw_data.DATA语句实例通过结构类型定义结构数据直接定义结构数据TYPES:BEGINOFstruct,

40详细见SYST表SY-SUBRC:ReturncodeforABAPstatements

(zeroifastatementisexecutedsuccessfully)SY-UNAME:logonnameoftheuserSY-REPID:CurrentABAPprogramSY-TCODE:currenttransactionSY-INDEX:NumberofthecurrentlooppassSY-DATUM系统日期SY-UZEIT系统时间预定义的数据对象详细见SYST表预定义的数据对象41CONSTANTS:cns_piTYPEPDECIMALS10VALUE'3.1415926536‘,cns_flag(1)typecvalue‘X’.CONSTANTS:BEGINOFmyaddress,

name(20)

TYPEcVALUE'FredFlintstone',

street(20)

TYPEc

VALUE'CaveAvenue',

umber

TYPEp

VALUE

11,

postcode(5)TYPEn

VALUE

98765,

city(20)

TYPEc

VALUE

'Bedrock',

ENDOFmyaddress.常量定义CONSTANTS:cns_piTYPEPDECIM42选择屏幕什么是选择屏幕选择屏幕是报表程序的一部分,通过设计选择屏幕以便交互输入字段值和选择标准。在报表程序启动之后,用户在该屏幕中输入值。选择屏幕的实现方法通过简单的语句创建字段、复选框、单选按钮,并设计屏幕布局通过PARAMETERS语句,使用户能够给变量分配值通过SELECT-OPTIONS语句,使用户能够确定变量的区域选择屏幕什么是选择屏幕43PARAMETERS语句SELECT-OPTIONS语句选择屏幕PARAMETERS语句选择屏幕44SELECTION-SCREENBEGINOFBLOCK<block>

[WITHFRAME[TITLE<title>]]

PARAMETERS:…..SELECT-OPTIONS:…

SELECTION-SCREENENDOFBLOCK<block>.EXAMPLE:SELECTION-SCREENBEGINOFBLOCKRAD1

WITHFRAMETITLETEXT-002.

PARAMETERS:R1RADIOBUTTONGROUPGR1,

R2RADIOBUTTONGROUPGR1,

R3RADIOBUTTONGROUPGR1.

SELECTION-SCREENENDOFBLOCKRAD1.SELECTION-SCREEN语法SELECTION-SCREENBEGINOFBLOC45PARAMETERS<p>[(<length>)][TYPE<type>|LIKE<obj>][DECIMALS<d>][DEFAULT<f>][OBLIGATORY].PARAMETERS<p>ASCHECKBOXPARAMETERS<p>RADIOBUTTONGROUP<radi>

PARAMETERS语法EXAMPLE:PARAMETERSp_datumLIKEsy-datum.PARAMETERSp_checkboxTYPEcASCHECKBOX.PARAMETERSp_radioTYPECRADIOBUTTONGROUPradio1.PARAMETERS<p>[(<length>)][T46SELECT-OPTIONS语法SELECT-OPTIONS

<seltab>

FOR

<f>[DEFAULT

<g>

TO

<h>].SELECT-OPTIONSs_datumFORsy-datumDEFAULT‘20070101’TO‘20080101’.SELECT-OPTIONS语法SELECT-OPTIONS47PARAMETERS语法PARAMETERS语法48Write语句按照指定的格式把变量里边的数据输出到屏幕根据选项的不同,WRITE语句可以输出到屏幕、输出到变量、以复选框的形式输出、以图标的格式输出语法WritefWriteAT[/][<pos>][(<len>)]f.

SKIP[<n>].产生n个空白行SKIPTOLINE[<n>].跳到指定行

Writef<显示格式参数>.ULINE{[AT][/][pos][(len)]}[NO-GAP]Write语句按照指定的格式把变量里边的数据输出到屏幕49LEFT-JUSTIFIED资料靠左显示CENTERED资料靠中间显示RIGHT-JUSTIFIED资料靠右显示

UNDER<g>在资料项<g>的X轴开始坐标显示NO-GAP紧接着显示,不留空格USINGEDITMASK<m>使用内嵌字符显示,如11:20:30USINGNOEDITMASK不使用内嵌字符NO-ZERO数字前面0的部分不显示NO-SIGN不显示正负号DECIMALS<d>显示d位小数字数EXPONENT<e>F(浮点数)exponent的值ROUND<r>四舍五入至小数位数下r位CURRENCY<c>币别显示DD/MM/YY日期显示格式显示格式参数LEFT-JUSTIFIED资料靠左显50

DATA:

X

TYPE

I

VALUE

'112030'.WRITE

X

USING

EDIT

MASK

'__:__:__'.WRITE

X

USING

EDIT

MASK

'$___,___'.

WRITE语句的例子一

WRITE

'First

Line'.

WRITE

/6

'Second

Line'.

DATA:

NUMBER

TYPE

I

VALUE

'1234',

TEXT(10)

VALUE

'ABCDEFGHIJ'.WRITE:

(5)

NUMBER,

/(6)

TEXT.DATA:

X

TYPE

I

VALUE

'11251WRITE语句的例子二ULINE

AT

10(10).

WRITE:

/10

sy-vline,

11(8)

'Text'

CENTERED,

19

sy-vline.

ULINE

AT

/10(10).WRITE语句的例子二ULINE

AT

10(10).

WR52基本数据操作数据赋值--使用MOVEMOVE<F1>TO<F2>MOVE<F1>[+<O1>]TO<F2>[+<O2>].MOVE-CORRESPODING<STRUCT1>TO<STRUCT2>.数据赋值—使用WRITE,将f1的值格式化至C型变量WRITE<F1>TO<F2>.WRITE(<F1>)TO<F2>.基本数据操作数据赋值--使用MOVE53基本数据操作DATA:

F1(10)

VALUE

'ABCDEFGHIJ',

F2(10)

,

F3(10).MOVE

F1

TO

F2.MOVE

F1+3(5)

TO

F3.WRITE:

/

F2

,

F3.DATA:BEGINOFADDRESS,FIRSTNAME(10)VALUE‘LULU’, LASTNAME(10)VALUE‘CHOU’,TEL(12)VALUE‘4660570’,ENDOFADDRESS.DATA:BEGINOFNAME,FIRSTNAME(10), LASTNAME(10),E_MAIL(30),ENDOFNAME.MOVE-CORRESPONDINGADDRESSTONAME.基本数据操作DATA:

F1(10)

VALUE

'ABCD54基本数据操作DATA:

int

TYPE

IVALUE

100,

ch(10)

TYPE

C.WRITE

int

TO

ch.DATA:

F1(10)

VALUE

'ABCDEFGHIJ',

F2(10)

,

F3(10).MOVE

F1

TO

F2.MOVE

F1+3(5)

TO

F3.WRITE:

/

F2

,

/

F3.基本数据操作DATA:

int

TYPE

IVALUE

55清除变量内容CLEAR<f>清除变量现在内容,恢复成初值Example:DATANTYPEIVALUE‘100’.WRITEN.“100CLEARN.WRITE/N.“0

基本数据操作清除变量内容基本数据操作56算术操作**幂*乘/除+加-减DIV整数除法MOD余数除法基本数据操作算术操作基本数据操作57数值函数

ABS(N):传回数值N的绝对值

SIGN(N):1ifN>0

0ifN=0-1ifN<0CEIL(N):传回大于数值N的最小整数

FLOOR(N):传回小于数值N的最大整数

TRUNC(N):传回数值N的整数部分

FRAC(N):传回数值N的小数部分

COS(A),SIN(A),TAN(A):传回三角函数cosA,sinA,tanA的值,A为弪度量EXP(N):传回e^N值

LOG(N):传回

logeN值

LOG10(N):传回

logN值SQRT(N):传回

N的平方根值

基本数据操作数值函数基本数据操作58日期与时间运算

1.日期数据的运算.日期数据可以直接运算,如加法与减法

DATA:MdataTYPED.Mdate=SY-DATUM.“如传回19971015

Mdate+6(2)=‘01’“Mdate变成19971001

Mdate=Mdate-1“Mdate变成19970931

2.时间数据的运算 时间格式为‘hhmmss’,如‘212030’表’21:20:30’ DATA:HOURSTYPEI, MINUTESTYPEI,

T2TYPETVALUE‘200000’,T1TYPETVALUE‘183000’.HOURS=(T2-T1)/3600.“计算有几小时MINUTES=(T2–T1)/60.“计算几分钟

基本数据操作日期与时间运算 基本数据操作59字符串数据处理

1.字符串移位语法:SHIFT<c>[BY<n>PLACES][<modes>]<modes>:(1).空白,字符串往左移一位

(2).LEFT,字符串往左移n位(3).RIGHT,字符串往右移n位(4).CIRCULAR:字符串以环状方式移位举例:DATASTRING(10)VALUE‘ABCDEFGHIJ’SHIFTSTRING.“得到‘BCDEFGHI’SHIFTSTRINGBY2PLACESRIGHT.“得到‘BDCDEFGHI’基本数据操作字符串数据处理基本数据操作60基本数据操作字符串移位2.取代字符串内容语法:REPLACE<string1>WITH<string2>INTO<c>举例:DATA:STRING(10)VALUE‘ABCDEFGHI’,STR1(3)VALUE‘DEF’,STR2(3)VALUE‘123’.REPLACESTR1WITHSTR2INTOSTRING.WRITE/STRING.“得到ABC123GHI基本数据操作字符串移位61字符串数据处理3.大小写的转换语法:TRANSLATE<c>TOUPPERCASE.“转成大写TRANSLATE<c>TOLOWERCASE.“转成小写4.字符串长度语法STRLEN(<c>)Example:

INT=STRLEN(‘XYZABC’).“得到65.拆分字符串

语法

SPLITdobjATsepINTO{{result1result2...}|{TABLEresult_tab}}

基本数据操作字符串数据处理基本数据操作62比较符号

=或EQ:等于

<>或><或NE:不等于<或LT:小于<=或LE:小于等于>或GT:大于

>=或GE:大于等于AND:与OR:或

NOT:非控制语句(1)比较符号控制语句(1)63IF语句

IF<Condition1><Statement1>ELSEIF<Condition2><Statement2>ELSEIF<Condition3>

<Stetement……ENDIF.控制语句(2)条件语句CASE语句CASE<f>

WHEN<f11>OR<f12>OR..]<Statementblock>WHEN<f21>OR<f22>OR..]<Statementblock>…..ENDCASE.IF语句控制语句(2)条件语句CASE语句64循环语句

1.计次循环DO[nTIMES][VARYING<f>FROM<start>TO<end>.<StatementBlock>.ENDDO.

DO2TIMES.WRITE/‘X’.ENDDO.2.条件循环WHILE<Condition>.<StatementBlock>ENDWHILE.

I=1.S=0. WHILEI<=10.S=S+I.I=I+1.ENDWHILE.控制语句(3)循环语句控制语句(3)65控制循环语句

CONTINUE跳到下一次循环DO3TIMES.IFSY-INDEX=2.CONTINUEWRITESY-INDEX.

ENDDOCHECK<Condition>条件不满足则跳到下一次循环DO5TIMES.CHECKSY-INDEXBETWEEN2AND4.WRITESY-INDEX.ENDDO

EXIT.结束循环

DO10TIMES.IFSY-INDEX=4.EXIT.ENDIFWRITESY-INDEX.ENDDO.

控制语句(4)控制循环语句控制语句(4)66内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms内容报表67什么是内表在程序运行事件存在的表格,行数动态可以使用内表在数据库表格的子集上执行表格计算根据程序需要重新组织数据库表格的内容什么是内表在程序运行事件存在的表格,行数动态68定义内表定义内表类型

TYPES<t>TYPE|LIKE<tabkind>OF<linetype>[WITH<key>][INITIALSIZE<n>].定义内表对象参考已经声明的内表类型、DATA<itab>TYPE<type>|LIKE<obj>

[WITHHEADERLINE].声明一个新的内表

DATA<itab>TYPE|LIKE<tabkind>OF<linetype>WITH<key>[INITIALSIZE<n>][WITHHEADERLINE].定义内表定义内表类型69操作内表操作内表70内表操作INSERTLINESOFitab1[FROMn1][TOn2]INTO[TABLE]itab2[INDEXidx]APPENDLINESOFitab1[FROMn1][TOn2]TOitab2READTABLEitabINTOwaINDEXidx.READTABLEitabWITHKEYk1=f1…ki=fi[INTOwa]MODIFYitab[FROMwa][INDEXidx][TRANSPORTINGf1f2..]MODIFYitabFROMWATRANSPORTINGf1f2…WHEREcond.DELETEitabINDEXidxDELETETABLEitabWITHTABLEKEYk1=f1…ki=fiDELETEitab[FROMn1][TOn2][WHEREcond]LOOPATitabINTOwa[FROMn1][TOn2][WHEREcond]ENDLOOP.内表操作INSERTLINESOFitab1[FRO71内表操作对整个内表进行操作MOVE<itab1>[[]]TO<itab2>[[]].DATA:BEGINOFLINE,

COL1,

COL2,

ENDOFLINE.DATA:ETABLIKETABLEOFLINEWITHHEADERLINE,

FTABLIKETABLEOFLINE.LINE-COL1='A'.LINE-COL2='B'.APPENDLINETOETAB.MOVEETAB[]TOFTAB.LOOPATFTABINTOLINE.

WRITE:/LINE-COL1,LINE-COL2.ENDLOOP.

Theoutputis:AB内表操作对整个内表进行操作72操作内表对内表进行初始化CLEAR<itab>.CLEAR<itab>[].REFRESH<itab>.FREE<itab>.比较内表

<itab1><operator><itab2>...<operator>:EQ,=,NE,<>,><,GE,>=,LE,<=,GT,>,LT,<

排序内表

SORT<itab>[ASCENDING|DESCENDING][ASTEXT][STABLE].操作内表对内表进行初始化73内容报表基本语法内表操作数据库操作屏幕输出Smartforms内容报表74OPENSQL目的:避免不同的数据库表直接的不兼容性,使ABAP/4程序能在应用中独立于数据库系统。OPENSQL目的:避免不同的数据库表直接的不兼容性,使75SELECT语句SELECT

<result>

INTO

<target>

FROM

<source>

[WHERE

<condition>]

[GROUPBY<fields>]

[HAVING

<cond>]

[ORDERBY<fields>].数据库操作数据库操作76WHERE语句BETWEEN<g1>AND<g2>LIKE<g> _表示一个字符 %表示一个字符串IN(<g1>….<g2>)数据库操作(4)--OPENSQLWHERE语句数据库操作(4)--OPENSQL77多表结合查询

LEFTOUTERJOIN

SELECT..FROMtableLEFT[OUTER]JOINdbtab[ASaliasA]ON<cond>INNORJOINSELECT…FROMtable[INNER]JOINjointable1[ASaliasA]ON<cond>SELECTp~carridp~connidf~fldateINTOCORRESPONDINGFIELDSOFTABLEitabFROM(spfliASpINNERJOINsflightASfONp~carrid=f~carridANDp~connid=f~connid)WHEREp~cityfrom='FRANKFURT'ANDp~cityto='NEWYORK'.数据库操作(6)--OPENSQL多表结合查询LEF78数据库操作INSERT语句INSERT<database>FROM<wa>.INSERT<database>FROMTABLE<itab>[ACCEPTINGDUPLICATEKEY]UPDATEUPDATE<database>FROM<wa>UPDATE<database>FROMTABLE<itab>UPDATE<database>SET<f1>=<values>…WHERE<condition>MODIFYMODIFY<database>FROM<wa>MODIFY<database>FROMTABLE<itab>DELETEDELETE<database>FROM<wa>DELETE<database>FROMTABLE<itab>DELETEFROM<database>WHERE<condition>数据库操作INSERT语句79内容报表基本语法内表操作ABAP数据库操作ABAPLISTVIEWERSmartforms内容报表80什么是ALVABAPLISTVIEWER(ALV):ABAP表单浏览器,提供了一组接口,用于实现统一的表单格式。

什么是ALVABAPLISTVIEWER(ALV):81ABAP程序详细介绍解读课件82ALV实现方式变量定义TYPE-POOLS:SLIS--申明类型池I_GRID_SETTINGS--设置表单的格局IT_FIELDCAT--设置显示的各个字段的属性I_CALLBACK_PF_STATUS_SET--指向设置自定义alv菜单的子程序I_CALLBACK_USER_COMMAND—指向alv功能健响应的子程序T_OUTTAB—指向显示的内表参数赋值调用函数REUSE_ALV_GRID_DISPLAYALV实现方式变量定义83ALV实现方式参数定义设置格局字段属性调用函数ALV实现方式参数定义设置格局字段属性调用函数84内容报表基本语法内表操作ABAP数据库操作ABAPLISTVIEWERSmartforms内容报表85SMARTFORMSMARTFORM是在SAPScript的基础之上产生的一种新的FORM制作方式,在做SMARTFORM的过程中基本上不需要多少编程知识,它有一个图形界面来帮助我们完成工作。多应用于报表打印SMARTFORMSMARTFORM是在SAPScript的86ABAP程序详细介绍解读课件87创建SMARTFORMS智能表格输入事务代码:SMARTFORMS创建SMARTFORMS智能表格输入事务代码:SMARTFO88ABAP程序详细介绍解读课件89几个概念FORM:一个FORM往往是由页面(PAGES)、输出区域(OUTPUTAREAS即WINDOWS)、地址栏(ADRESS)、图形(GRAPHICS,比如公司LOGO)、数据(DATA)、以及文本内容(TEXT)组成。主窗体和子窗体:(MAINWINDOWSANDSUBWINDOWS)这是页面上两个不同的输出区域,用来输出数据,文本等内容。一个FORM中只能定义一个窗体作为主窗体;不同PAGE上的主窗体必须宽度相同,但是高度可以不同.几个概念FORM:一个FORM往往是由页面(PAGES)、输90SE11/SE12/SE13/SE14/SE15数据字典维护相关SE16/SE17查看表数据SE30ABAP运行分析SE32文本维护SE37维护函数SE38ABAP编辑器SE39程序比较SE80ABAP对象编辑器SE91维护消息类和消息SE93给程序维护TCODESM36定义后台jobSM37查看后台jobSE11/SE12/SE13/SE14/SE15数据字典维91ABAP程序介绍

李国庆ABAP程序介绍92Sap发展历史

1972年,五名IBM的员工离开了IBM,在德国曼海母创建了SAP公司.SAP的第一个产品是一个自动化财务和交易程序.命名RF,就是后来的R/11979年,SAP推出用于大型机的R/2.1992年,SAP推出了著名的R/3.它建立在SAPBASIS平台的基础上,包括大家非常熟悉的SD,MM,FI,CO,PP..等模块.1996年,随着互联网的迅猛发展,SAP推出了支持Internet的新版R/33.1.1999年,SAP推出所谓的mySAPBusinessSuit.这其实又是新版的R/3,不过包含了CRM(Customer

Relationship

Management)和SCM(SupplyChainManagement)产品.ERP的版本变为4.6C,到后来的4.7.2004年,推出mySAPERP2004,技术平台为SAPWAS6.4.2005年,推出mySAPERP2005,技术平台为SAPWAS7.0.Sap发展历史

1972年,五名IBM的员工离开了IBM,93

SAPRelease版本之间的差异和关系

版本4.6C以前是所谓传统的R3系统,建立在SAPBasis平台的基础上版本4.70以后,改为R3Enterprise,最大的变化是SAPWAS取代了传统的Basis平台,核心业务功能模块也作了划分;R3Enterprise之后改称为mySAPERP2004-ECC5.0,推出了NetWeaver2004-集成应用平台.2005第4季度开始mySAPERP2005-ECC6.0的准备,最大的变化将是全面转向ESA体系(基于消息机制的企业应用体系),并引入了新的功能模块,比如PLM和SRM.

SAPRelease版本之间的差异和关系版本4.6C94应用结构应用结构95SAP的三层架构体系SAP的三层架构体系96ABAP开发和运行环境的图例.ABAP开发和运行环境的图例.97可用的工具可用的工具98传输传输99质量保证质量保证100运行过程运行过程101ABAP AdvancedBusinessApplicationProgramming的缩写,是SAPR/2,R/3版本时期唯一的系统开发工具.目前的版本是ABAP/4。ABAP102ABAP介绍ABAP是SAPERP主要的开发软件可以满足企业的特定的需要,对通过系统配置不能实现的功能进行二次开发可以进行各种类型的程序、界面、业务流程设计,如企业报表、企业单据、与第三方系统的接口等ABAP介绍103ABAP程序分类可执行程序:可分配事务代码直接运行:报表、事务模块化程序为其它程序提供模块化支持不能单独运行包括:功能模块,include程序ABAP程序分类可执行程序:104内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms内容报表105报表程序以report开头不修改数据库而从数据库表格中读取并分析数据的程序。结果通常是以列表的形式输出到屏幕或发送到打印机上分为普通报表和交互式报表普通报表程序输出结果格式固定,不能对其进行交互式操作;交互式报表程通过特定的触发事件,比如双击,菜单,按钮和功能键.可以对报表结果进行操作;报表程序106报表程序结构ABAP是事件驱动的语言,程序的运行由事件引导由过程块组成程序架构事件关键字之间或事件关键字与form关键字之间的语句形成一个过程块form和endform之间的语句形成一个子程序,子程序在过程块中被调用报表程序结构ABAP是事件驱动的语言,程序的运行由事件引导107报表程序组成全局申明过程块子程序类型、变量、屏幕一个事件发生时执行的模块优化程序的结构报表程序组成全局申明类型、变量、屏幕一个事件发生时执行的模块108事件属于某一特定事件关键字的语句形成一个过程块原则上每个过程块块由各自的关键字为起始;事件块的结束标志为下一个事件块的关键字;事件块由ABAP运行时调用,其调用顺序固定,与程序编码顺序无关;缺省的事件块START-OF-SELECTION事件属于某一特定事件关键字的语句形成一个过程块109主要事件块关键字INITIALIZATIONATSELECTION-SCREENSTART-OF-SELECTIONTOP-OFEND-OFATLINE-SELECTION ATPFATUSER-COMMAND在选择屏幕显示前,对变量进行初始化赋值对选择屏幕的数据输入进行检查选择屏幕处理完后,数据的处理列表显示启动新页,页头的输出一页结束时,页尾的处理用户双击选中某行触发该事件当用户功能健时,触发该事件设置自定义的菜单主要事件块关键字INITIALIZATION在选择屏幕显示前110事件块的简单处理过程事件块的简单处理过程:ABAP程序运行的时候,INITIALIZATION首先被调用;经过初始化的输入屏幕会显示在表示服务器;用户离开输入屏幕的时候,START-OF-SELCTION事件会被自动调用;结果数据会以列表的形式显示在第二个屏幕上;事件块的简单处理过程事件块的简单处理过程:111事件块的语法源代码中的事件块顺序不影响事件的执行顺序事件块的语法源代码中的事件块顺序不影响事件的执行顺序112INITIALIZATION通常在此事件块中设定输入屏幕字段的初始值

例如:INITIALIZATION.P_DATE=‘20030201’.效果:输入屏幕的日期字段初始显示值为2003年2月1日事件块编码规则(1)INITIALIZATION例如:INITIALIZAT113ATSELECTION-SCREEN通常在此事件块中进行用户输入数据的合法性检查,发现错误则以消息的形式给出警示,直到用户输入正确的数值

例如:ATSELECTION-SCREEN.IFP_DATE=SPACE.MESSAGEE001.ENDIF.效果:如果字段P_DATE为空,则程序会用消息001“日期字段不能为空!”来提示用户必须输入一个日期。而且输入屏幕会等待用户输入,知道该字段数值合法事件块编码规则(2)ATSELECTION-SCREEN例如:ATSELE114START-OF-SELCTION通常在此事件中针对业务需求进行系统数据的查询例如:start-of-selection.performget_data_for_oil.效果:在输入屏幕用户按下执行按钮后,子程序get_data_for_oil被执行,在其中获得业务相关的数据存放到内表或者其它变量,这些数据在END-OF-SELECTION事件块中被输出事件块编码规则(3)START-OF-SELCTION例如:事件块编码规则(3)115END-OF-SELCTION通常在此事件中进行结果清单的输出例如:end-of-selection.write:23(1)sy-vline,24(20)tab-gas_planright-justified,效果:数据以清单的形式输出事件块编码规则(4)END-OF-SELCTION例如:事件块编码规则(4)116事件块编码规则(5)ATLINE-SELECTION用于用户交互,当用户双击页面时,启动该事件.例如:atline-selection.GETCURSORFIELDl_fieldLINEl_line.效果:获取用户点击的行号和变量名事件块编码规则(5)ATLINE-SELECTION例如:117事件块编码规则(5)

SET

PF-STATUS<STATUS>设置用户自定义菜单AT-USER-COMMAND设置功能码的响应操作事件块编码规则(5)

SET

PF-STATUS<STAT118ABAP程序详细介绍解读课件119选择屏幕选择屏幕120ABAP程序详细介绍解读课件121内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms内容报表122本小节包含内容数据类型定义选择屏幕基本数据操作WRITE语句控制语句本小节包含内容数据类型123数据类型定义一个简单的数据类型定义一个结构化的数据类型定义一个内表形式的数据类型数据类型定义一个简单的数据类型124ABAP数据类型ABAP数据类型1251,TYPES<t>[TYPE<type>|LIKE<obj>].2,TYPES<t>[(<length>)][TYPE<type>|

LIKE<obj>][DECIMALS<dec>].3,TYPES<t>.4,TYPES:BEGIN

OF<structure>,

<ti>...,

END

OF<structure>.5,TYPES<t>TYPE|LIKE<tabkind>OF<linetype>[WITH<key>].TYPES语句格式1,TYPES<t>[TYPE<type>|LIKE126通过系统标准类型定义通过数据库表字段定义自定义结构类型

TYPES语句实例TYPES:numberTYPEi,

lengthTYPEpDECIMALS2,code(3)TYPEc.TYPES:company

LIKEspfli-carrid.TYPES:BEGINOFaddress,

name

TYPEsurname,

street(30)TYPEc,

city

TYPEspfli_type-cityfrom,

ENDOFaddress.通过系统标准类型定义TYPES语句实例TYPES:numb127定义一个简单类型的变量定义一个结构化的数据对象定义一个内表DATA语句—定义数据对象定义一个简单类型的变量DATA语句—定义数据对象1281,DATA<f>...[TYPE<type>|LIKE<obj>]...

[VALUE<val>].2,DATA<f>[(<length>)]TYPE<type>[DECIMALS<d>].3,DATA<f>.4,DATA:BEGINOF<structure>,

<fi>...,

ENDOF<structure>.DATA语句格式1,DATA<f>...[TYPE<type>|LI129DATA语句定义内表DATA语句定义内表130TYPES:BEGINOFstruct,

number_1TYPEi,

number_2TYPEpDECIMALS2,

ENDOFstruct.DATA:

wa_structTYPEstruct,

number

LIKEwa_struct-number_2,

date

LIKEsy-datum,

time

TYPEt.DATA:BEGINOFw_data,

number_3TYPEi,

number_4TYPEpDECIMALS2,

ENDOFw_data.DATA语句实例通过结构类型定义结构数据直接定义结构数据TYPES:BEGINOFstruct,

131详细见SYST表SY-SUBRC:ReturncodeforABAPstatements

(zeroifastatementisexecutedsuccessfully)SY-UNAME:logonnameoftheuserSY-REPID:CurrentABAPprogramSY-TCODE:currenttransactionSY-INDEX:NumberofthecurrentlooppassSY-DATUM系统日期SY-UZEIT系统时间预定义的数据对象详细见SYST表预定义的数据对象132CONSTANTS:cns_piTYPEPDECIMALS10VALUE'3.1415926536‘,cns_flag(1)typecvalue‘X’.CONSTANTS:BEGINOFmyaddress,

name(20)

TYPEcVALUE'FredFlintstone',

street(20)

TYPEc

VALUE'CaveAvenue',

umber

TYPEp

VALUE

11,

postcode(5)TYPEn

VALUE

98765,

city(20)

TYPEc

VALUE

'Bedrock',

ENDOFmyaddress.常量定义CONSTANTS:cns_piTYPEPDECIM133选择屏幕什么是选择屏幕选择屏幕是报表程序的一部分,通过设计选择屏幕以便交互输入字段值和选择标准。在报表程序启动之后,用户在该屏幕中输入值。选择屏幕的实现方法通过简单的语句创建字段、复选框、单选按钮,并设计屏幕布局通过PARAMETERS语句,使用户能够给变量分配值通过SELECT-OPTIONS语句,使用户能够确定变量的区域选择屏幕什么是选择屏幕134PARAMETERS语句SELECT-OPTIONS语句选择屏幕PARAMETERS语句选择屏幕135SELECTION-SCREENBEGINOFBLOCK<block>

[WITHFRAME[TITLE<title>]]

PARAMETERS:…..SELECT-OPTIONS:…

SELECTION-SCREENENDOFBLOCK<block>.EXAMPLE:SELECTION-SCREENBEGINOFBLOCKRAD1

WITHFRAMETITLETEXT-002.

PARAMETERS:R1RADIOBUTTONGROUPGR1,

R2RADIOBUTTONGROUPGR1,

R3RADIOBUTTONGROUPGR1.

SELECTION-SCREENENDOFBLOCKRAD1.SELECTION-SCREEN语法SELECTION-SCREENBEGINOFBLOC136PARAMETERS<p>[(<length>)][TYPE<type>|LIKE<obj>][DECIMALS<d>][DEFAULT<f>][OBLIGATORY].PARAMETERS<p>ASCHECKBOXPARAMETERS<p>RADIOBUTTONGROUP<radi>

PARAMETERS语法EXAMPLE:PARAMETERSp_datumLIKEsy-datum.PARAMETERSp_checkboxTYPEcASCHECKBOX.PARAMETERSp_radioTYPECRADIOBUTTONGROUPradio1.PARAMETERS<p>[(<length>)][T137SELECT-OPTIONS语法SELECT-OPTIONS

<seltab>

FOR

<f>[DEFAULT

<g>

TO

<h>].SELECT-OPTIONSs_datumFORsy-datumDEFAULT‘20070101’TO‘20080101’.SELECT-OPTIONS语法SELECT-OPTIONS138PARAMETERS语法PARAMETERS语法139Write语句按照指定的格式把变量里边的数据输出到屏幕根据选项的不同,WRITE语句可以输出到屏幕、输出到变量、以复选框的形式输出、以图标的格式输出语法WritefWriteAT[/][<pos>][(<len>)]f.

SKIP[<n>].产生n个空白行SKIPTOLINE[<n>].跳到指定行

Writef<显示格式参数>.ULINE{[AT][/][pos][(len)]}[NO-GAP]Write语句按照指定的格式把变量里边的数据输出到屏幕140LEFT-JUSTIFIED资料靠左显示CENTERED资料靠中间显示RIGHT-JUSTIFIED资料靠右显示

UNDER<g>在资料项<g>的X轴开始坐标显示NO-GAP紧接着显示,不留空格USINGEDITMASK<m>使用内嵌字符显示,如11:20:30USINGNOEDITMASK不使用内嵌字符NO-ZERO数字前面0的部分不显示NO-SIGN不显示正负号DECIMALS<d>显示d位小数字数EXPONENT<e>F(浮点数)exponent的值ROUND<r>四舍五入至小数位数下r位CURRENCY<c>币别显示DD/MM/YY日期显示格式显示格式参数LEFT-JUSTIFIED

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论