赛跑网abap培训教程_第1页
赛跑网abap培训教程_第2页
赛跑网abap培训教程_第3页
赛跑网abap培训教程_第4页
赛跑网abap培训教程_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

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

文档简介

1SAPABAP/4培训赛跑网2012年2012年09月2ABAP开发培训内容大纲一.ABAP开发的全局概念和开发环境二.ABAP数据字典和基本语法三.ABAP开发的系统操作四.开发程序的输出五.开发技巧六.开发流程和代码规范3ABAP开发培训内容大纲一.ABAP开发的全局概念和开发环境二.ABAP数据字典和基本语法三.ABAP开发的系统操作四.开发程序的输出五.开发技巧六.开发流程和代码规范4Advanceddvanced

BusinessusinessProgrammingrogrammingApplicationpplicationABAP的含义和概念ABAP/4是一个面向对象的符合SQL标准的第四代专业开发语言。SAPR3的绝大部分是用ABAP/4开发的。SAP最初开发ABAP/4(高级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境。经过不断的改进和修改以满足商业领域的需要。现在,ABAP/4已成为SAP开发所有自己的应用程序的专用工具。SAP客户用ABAP/4进行其自身开发。这样的开发通常称为SAP系统的二次开发。ABAP/4开发工作平台包含所有用于创建和维护ABAP/4程序的工具。5ABAP开发的运行环境ApplicationPresentationDatabaseSAPSAPGUIGUISAPSAPGUIGUISAPSAPGUIGUISAPSAPGUIGUI

ABAPABAPABAPABAPRDBMSRDBMSClient/ServerArchitecture6Client-independentcustomizingABAPRepositorycustomizingBASISDBOStestingtrainingABAP资源库与系统架构FunctionModules

ProgramsTablesFIHRMMSDWMMMDevelopmentClassesMMRepositoryObjects7ABAP开发传输路径RChangeRequestDevelopmentsystemProductionsystemTransportingRepositoryObjects开发/测试系统生产系统注意:开发的对象与集团无关8ABAP开发培训内容大纲一.ABAP开发的全局概念和开发环境二.ABAP数据字典和基本语法三.ABAP开发的系统操作四.开发程序的输出五.开发技巧六.开发流程和代码规范9ABAP开发培训内容大纲一.ABAP开发的全局概念和开发环境二.ABAP数据字典和基本语法三.ABAP开发的系统操作四.开发程序的输出五.开发技巧六.开发流程和代码规范10 数据字典对象表或结构的类型表类型确定对应定义在ABAP/4词典中的逻辑表格说明的物理表是否存在。在数据库中同时定义这种表的结构。SAP系统包含下列表类型:透明表(TransparentTable)每个透明表在数据库中有一个相应的物理表。物理表的名称和数据字典中的逻辑表定义的名称一致。所有事务和应用数据存贮在透明表中。结构(Structure)结构在数据库不存在数据记录。结构用于在程序之间或程序与屏幕之间的接口定义。视图(View)若干个透明表通过某些条件连接在一起的一个相应的逻辑表。SAP系统的其他数据字典对象:数据元素(DataElement)

通常用于描述一个数据定义域的属性、信息以及搜索帮助。域(Domain)

定义一个字段的技术信息,例如数据类型,数据范围。11TableAdomainusesusesdataelementAtablefieldA数据字典对象关系TableBtablefieldBdataelementB表,字段,数据元素,域12字段数据元素13viewviewDBDBABAPDictionarytables数据字典:视图ABAPDictionary

transparenttableAfield1field2field3field4ABAPDictionary

transparenttableBfield1field2field3field414数据浏览器(1)ABAP/4WorkbenchToolsOverviewDataBrowser(SE16)Tablename15数据浏览器(2)可以输入查询字段的内容和输出清单的宽度以及最大的命中量16基本语法:链式语句WRITE'XYZ'.WRITENAME.WRITECOUNTER.WRITE:'XYZ',NAME,COUNTER.ADD1TOCOUNTER1.ADD1TOCOUNTER2.ADD1TOCOUNTER3.ADD1TO:COUNTER1,COUNTER2,COUNTER3.17基本语法:数据类型和数据对象(2)DatatypesDataobjectsDATAD1TYPET1.DATAD5TYPEC.DATAD6TYPEC.DATAD2TYPET1.DATAD4TYPET1VALUE'ABC'.DATAD3TYPET1VALUE'123'.TYPEST1(3)TYPEC.TYPECUserdefinedUserdefinedPre-definedPre-defined18基本语法:数据类型Pre-defined(P,I,F,C,N,D,T,X)ElementaryStructuretypeTabletypeStructuredUserdefinedDatatype19基本语法:预定义数据类型Datatype Meaning Initialvalue Standard Allowed length lengthPackednumber 0 8 1-16Integer 0 *4 *10Floatingpointno. 0.0000…E+00 *8 *16Numerictext 00...00 1 1-max.Text(character) Blank 1 1-max.Date(YYYYMMDD) 00000000 8Time(HHMMSS) 000000 6Hexadecimal X'00' 2 1-max.*Machine-specific max.:approx.64,000Byte压缩型整型浮点型数值型文本型日期型时间型十六进制型IPre-defined:20基本语法:用户定义数据类型RPre-defined(P,I,F,C,N,D,T,X)ElementaryFieldstringtypeTabletypeStructuredUserdefinedDatatypeTYPES<type2>[(<length>)]TYPE<type1>[OCCURS0].TYPES<type>LIKE<dataobject>[OCCURS0].TYPES:BEGINOF<typ>,...,ENDOF<typ>.Anamemaynotconsistonlyofnumbersmendation:Alwaysusealetterasthefirstcharacter.Ifyouarecombiningwordsinthename,separatethemwithanunderscore

RulesforassigningtypenamesThemaximumlengthforanameis30characters(Letters,numbersandunderscore)Userdefined:TYPES<type>[(<length>)]TYPE<pre-defined>.21Pre-defined(P,I,F,C,N,D,T,X)ElementaryFieldstringtypeTabletypeStructuredUserdefinedDatatypeTYPES:NAME_TYPE(25)TYPEC,SUM_FIELD_TYPETYPEPDECIMALS2,DATE_TYPELIKESFLIGHT-FLDATE.TYPES<type2>[(<length>)]TYPE<type1>[DECIMALS<n>].基本语法:基础数据元素定义Elementarytypes:22基本语法:用户定义结构类型Pre-defined(P,I,F,C,N,D,T,X)ElementaryFieldstringtypeTabletypeStructuredUserdefinedDatatypeTYPES:BEGINOFFLIGHTREC1_TYPE,FLAGTYPEC,CARRIDLIKESPFLI-CARRID,NAMETYPENAME_TYPE,SUM_FIELDTYPESUM_FIELD_TYPE,ENDOFFLIGHTREC1_TYPE,FLIGHTREC2_TYPETYPEFLIGHTREC1_TYPE.TYPES:BEGINOF<type>,...,ENDOF<type>.TYPES<type>TYPE<rectype>.Fieldstringtypes:23基本语法:用户定义表类型Pre-defined(P,I,F,C,N,D,T,X)ElementaryFieldstringtypeTabletypeStructuredUserdefinedDatatypeTYPES<itabtype>TYPE<linetype>OCCURS0.TYPESFLIGHTINFOLIST1_TYPELIKESPFLIOCCURS0.TYPESFLIGHTINFOLIST2_TYPELIKESPFLI-CARRIDOCCURS0.Tabletypes:24TYPE-POOLZ400.TYPES:Z400_NAME_TYPE(25)TYPEC,Z400_FLIGHTTAB_TYPELIKESPFLIOCCURS0,....REPORT....TYPE-POOLSZ400.DATA:NAMETYPEZ400_NAME_TYPE,FLIGHTTABTYPEZ400_FLIGHTTAB_TYPE.....ABAP基本语法:数据字典的类型池TypesgroupsintheABAPdictionary:25基本语法:数据对象VariableLiteralConstantFixedDataobject可变的数据对象:我们通常翻译成变量固定的数据对象:我们通常翻译成常量26VariableLiteralConstantFixedDataobjectDATA<dataobject>TYPE<type>[VALUE<literal>].DATA<dataobject2>LIKE<dataobject1>[VALUE<literal>].DATA:BEGINOF<dataobject>,...,ENDOF<dataobject>.DATA<dataobject>TYPE<type>OCCURS<n>.RulesfornamingdataobjectsThemaximumlengthforanameis30characters(letters,digits,specialcharacters)Thefollowingspecialcharactersarenotallowed:()+.,:SPACEisapre-definedfield基本语法:变量Variabledataobjects:27DATA:COUNTERTYPEI,NAME1(25)TYPEC,START_DATETYPED,FIRST_LINETYPEIVALUE1,SUM1(5)TYPEPDECIMALS2,SUM_FIELDTYPESUM_FIELD_TYPE,NAME2LIKESCUSTOM-NAME,NAME3LIKENAME1.DATA<dataobject>TYPE<type>[VALUE<fixeddataobject>].VariableLiteralConstantFixedDataobject基本语法:基础数据元素变量Elementarydataobjects:28Fieldstringsdataobjects:基本语法:结构变量DATA:FLIGHTREC1TYPEFLIGHTREC1_TYPE.DATA:BEGINOFFLIGHTREC2,FLAGTYPEC,CARRIDLIKESPFLI-CARRID,NAMETYPENAME_TYPE,SUM_FIELDTYPESUM_FIELD_TYPE,ENDOFFLIGHTREC2.DATA:BEGINOF<fieldstring>,...,ENDOF<fieldstring>.<fieldstring>-<field>MOVE'X'TOFLIGHTREC2-FLAG.WRITEFLIGHTREC2-SUM_FIELD.VariableLiteralConstantFixedDataobject29Internaltables:基本语法:内部表的定义DATA:FLIGHTLIST1TYPEFLIGHTREC1_TYPEOCCURS0.DATA:BEGINOFFLIGHLIST2OCCURS0,FLAGTYPEC,CARRIDLIKESPFLI-CARRID,NAMETYPENAME_TYPE,SUM_FIELDTYPESUM_FIELD_TYPE,ENDOFFLIGHTTAB2.DATA<itabobject>TYPE<linetype>OCCURS<n>.DATA<itabobject>TYPE<itabtype>.DATA:BEGINOF<itabobject>OCCURS<n>,...,ENDOF<itabobject>.manipulatetablesdynamically!!!VariableLiteralConstantFixedDataobject30基本语法:常量'abc','2.17','1.213E15','0FFF','A''B'Sequenceofcharactersenclosedininvertedcommas.Max.255charsTextliterals715,-431Wholenumber(withprecedingminussignifnegative)NumberliteralsCONSTANTS<constants>TYPE<type>VALUE<literal>.CONSTANTS:PITYPEPDECIMALS4VALUE'3.1415',BOSS(4)TYPECVALUE'Hugo'.ninedigitsorfewertenormoredigitsIPCtypeconversionifnecessaryLiteraltypeLiteraltypeVariableLiteralConstantFixedDataobjectLiteralsandconstants:31基本语法:初始化数据对象REPORT....DATA:NAME1(25)TYPEC,FIRST_LINE(4)TYPEIVALUE'4',FLIGHTRECTYPEFLIGHTREC1_TYPE.CLEAR:NAME1,FIRST_LINE,FLIGHTREC.CLEAR<dataobject>.InitializingaDataObject:Setsafieldtotheinitialvalueappropriateforitsdatatype32RDATA:NAME1(25)TYPEC,FIRST_LINE(4)TYPEN,SORT_NAMELIKENAME1,FLIGHTREC1TYPEFLIGHTREC1_TYPE,FLIGHTREC2TYPEFLIGHTREC1_TYPE,FLIGHTLIST1TYPEFLIGHTREC1_TYPEOCCURS0,FLIGHTLIST2TYPEFLIGHTREC1_TYPEOCCURS0.MOVE'SAP'TONAME1.MOVE5TOFIRST_LINE.SORT_NAME=NAME1.FLIGHTREC2=FLIGHTREC1.FLIGHTLIST2=FLIGHTLIST1.MOVE<dataobject1>TO<dataobject2>.<dataobject2>=<dataobject1>.REPORT....基本语法:赋值AssigningValues33RDATA:COUNTERTYPEI,AMOUNTTYPEPVALUE1000,SUMTYPEP,RESULTTYPEP,NUMBER(2)TYPECVALUE'99',ROOTTYPEF.COUNTER=COUNTER+2.RESULT=AMOUNT*COUNTER.SUM=RESULT+NUMBER-COUNTER.RESULT=COUNTER*(AMOUNT+NUMBER).ROOT=SQRT(NUMBER+COUNTER).[COMPUTE]<field>=<arithmeticexpression>.+-/*DIVMODSQRTEXPLOGSINCOSSTRLENTAN...OperatorsFunctions基本语法:运算符34TypeLengthValueTypeLengthValue1A4A____4ABCD2AB7-47110_447110-312345-7_12345-SourcefieldSourcefieldTargetfieldTargetfieldCCCPCCPCConversionrulesexistforallallcombinationsofelementarytypes(exceptforTtoDandviceversa)基本语法:类型转换(2)ConversionRule:ElementaryTypes35基本语法:Write语句(1)REPORT ZXX02line-size165line-count66.WRITE: '******************************'.SKIP2.WRITE: 'Date', SY-DATUM.WRITE: 'Time', SY-UZEIT.SKIP2.WRITE: '******************************'.01.01.20066TestReport 1******************************Date01.01.2006Time17:18:38******************************36REPORT ZXX02.WRITE: 5'******************************'.SKIP.WRITE: 5'Date', 20SY-DATUM,

/5'Time',20SY-UZEIT.ULINE /5(30).SKIP2.ULINE.Column20Column501.03.2006AnotherTestReport 1******************************Date01.03.2006Time12:22:06

基本语法:Write语句(2)37基本语法:Write语句(3)REPORT ZXX02.DATA: POSTYPEIVALUE5, LENTYPEIVALUE25.WRITEAT/POS(LEN)'******************************'.SKIP.WRITEAT:POS'Date',20SY-DATUM,/POS'Time',20SY-UZEIT.ULINEAT/POS(LEN).01.01.2006YetAnotherTestReport 1*************************Date01.01.2006

Time17:18:38

38REPORTZ170D035.WRITE: /'Date',SY-DATUM, /'Time',SY-UZEIT....NEW.WRITE: /'User',SY-UNAME,

/'System',SY-SYSID.

1Date 01.01.2006

Time 08:16:24

2User EverymanSystem S50SystemListPrint12基本语法:Write语句(4)39REPORTZXX01NOSTANDARDPAGEHEADING.WRITE:/'Date',SY-DATUM, /'Time',SY-UZEIT.NEW.WRITE:/'Thisispage2'.

...TOP-OF.WRITE:/20'ReportXYZ',40'PageNo:',SY-PAGNO.

ReportXYZ PageNo:1Date 01.01.2006

Time 08:16:24 ReportXYZ PageNo:2Thisispage2基本语法:Write语句(5)40REPORTZ170D037.WRITE:TEXT-001,10SY-Datum....

TEXT-002,10SY-UZEIT...TextsymbolsTextelementsProgramnameZDEMO001Lang.EText-TextSymbol+1+2+3+ABAP/4TextElements:ChangeTextSymbols001Date002TimeDate 01.01.2006Time 21:07:54 基本语法:Write语句(6)41REPORTZXX02NOSTANDARDPAGEHEADING.WRITE:/(10)'Date'Centered,(12)SY-DATUM, /(10)'Time'color2left-justified,(12)SY-UZEIT.NEW.WRITE:/'Thisispage2'color1.

...TOP-OF.

WRITE:/20'ReportXYZ',40'Page:',SY-PAGNO.

1orCOL_HEADING Headers(grayishblue)2orCOL_NORMAL Listbody(brightgray)3orCOL_TOTAL Totals(yellow)4orCOL_KEY Keycolumns(bluishgreen)5orCOL_POSITIVE Positivethresholdvalue(green)6orCOL_NEGATIVE Negativethresholdvalue(red)7orCOL_GROUP Controllevels

(violet)基本语法:Write语句(7)42基本语法:Write语句(8)uline(96).write:/(1)SY-VLINENO-GAP,40'系统查询报表',96(1)SY-VLINENO-GAP.uline(96).write:/(1)SY-VLINENO-GAP,(18)'产品名称'centered,(1)SY-VLINENO-GAP,(8)'产品类型',(1)SY-VLINENO-GAP,(8)'订单',(1)SY-VLINENO-GAP,(15)'数量'centered,(1)SY-VLINENO-GAP,(4)'单位',(1)SY-VLINENO-GAP,(4)'总价',(1)SY-VLINENO-GAP,(10)'创建日期'centered,(1)SY-VLINENO-GAP,(12)'备注'centered,(1)SY-VLINENO-GAP.uline(96).43基本语法:子字段RREPORT....DATA:BEGINOFDATEREC,YEAR(4)TYPEC,MONTH(2)TYPEC,DAY(2)TYPEC,ENDOFDATEREC.DATA:YEAR(4)TYPEC,MONTH(2)TYPEC,DAY(2)TYPEC.MOVESY-DATUMTODATEREC.WRITE:/DATEREC-YEAR,DATEREC-MONTH,DATEREC-DAY.MOVE:SY-DATUM(4)TOYEAR,SY-DATUM+4(2)TOMONTH,SY-DATUM+6(2)TODAY.WRITE:/YEAR,MONTH,DAY.

2006122520061225Sub-fields44RIFENDIFCASEENDCASEDOENDDOWHILEENDWHILECONTINUECHECKEXITCasedistinctionLoopsOthercontrolstatements基本语法:内部控制语句(1)ControlCommands:Overview45基本语法:内部控制语句(2)LogicalExpressionsRDATA:STARTTYPED,

SUM1TYPEP,SUM2TYPEP....IFSUM2GE1000.IFSTARTISINITIAL.IFSUM1GTSUM2ANDSUM1BETWEEN0AND100.IFSUM1=1000AND(SUM2LE2000ORSTARTISINITIAL).EQ=NE<>GT>GE>=LT<LE<=ISINITIALBETWEENf1andf2EqualUnequalGreaterthanLessthanLessthanorequalInitialvalueIntervalOperatorOperatorMeaningMeaning...<logicalexpression>AND<logicalexpression>...<logicalexpression>OR<logicalexpression>...NOT<logicalexpression>......<field><literal>......<field1><field2>...<operator><operator>

<operator><operator>Greaterthanorequal46基本语法:内部控制语句(3)IF<logicalexpression>.ENDIF.IF<logicalexpression>.ELSE.ENDIF.IF<logicalexpression>.ELSEIF<logicalexpression>.ELSEIF<logicalexpression>.ELSE.ENDIF.StatementsStatementsStatementsStatementsStatementsStatementsStatementsForexample:DATA:STARTTYPED,SUM1(3)TYPEI,SUM2LIKESUM1....IFSTARTISINITIAL....SUM1=SUM2.ENDIF.IFSUM1GTSUM2....SUM1=SUM1–SUM2.ELSEif…….

SUM1=SUM2–SUM1.Elseif…….ENDIF.IFSUM1BETWEEN0AND100....SUM2=100–SUM1.ENDIF.47CASE<dataobject1>.WHEN<dataobject2>.WHEN<dataobject3>.WHEN<dataobject4>OR<dataobject5>.WHENOTHERS.ENDCASE.StatementsStatementsStatementsStatements基本语法:内部控制语句(4)Forexample:DATA:COUNTRY(3)TYPEC,WINNER(10)TYPEC....CASECOUNTRY.

WHEN‘USA’.

WINNER=‘USA’.

WHEN‘CHN’.WINNER=‘CHINA’.

WHEN‘JPN’.WINNER=‘JAPAN’.ENDCASE.48基本语法:内部控制语句(5)DO <n> TIMES.ENDDO.SY-INDEXLoopindexstatementsForexample:DATA:STARTTYPED,SUM1(3)TYPEI,SUM2(6)TYPEI....DO100TIMES.SUM2=SUM2+SUM1.ENDDO.DoLoop:SUM2=SUM2+100*SUM1.49基本语法:内部控制语句(6)WHILE<logicalexpression>.ENDWHILE.DATA:SEARCH_METYPEI,

TRIES

TYPEI,

NUMBER(3)

TYPEIVALUE2.

SEARCH_ME=64.

WHILENUMBER<>SEARCH_ME.

ADD1TOTRIES.

NUMBER=NUMBER*2.

ENDWHILE.

statementsWHILELoop:50CHECK<logicalexpression>.CHECK<condition>.statementsstatementsCHECKwithinaloopstructure.有条件终止当次循环CHECKoutsideloopstructures.WHILECOUNTERGT0. CHECKFLAGNESPACE.ENDWHILE.statementsstatements12基本语法:内部控制语句(7)51DO... IFCOUNTERGE100.

EXIT. ENDIF.ENDDO.statementsstatementsEXITwithinaloopstructure.无条件终止所有循环EXIToutsideloopstructure.EXIT.IF....

EXIT.ENDIF.statementsstatements12基本语法:内部控制语句(8)52DO100TIMES.IFSY-INDEXGE10ANDSY-INDEXLE20.

CONTINUE.ENDIF.ENDDO.statementsstatementsCONTINUE.无条件终止当次循环基本语法:内部控制语句(9)53课后练习I

报表逻辑:XXX是个人的用户名;“除数”一栏中是从1开始步长为1的序列;“余数”一栏中是”除数”除以3之后的余数;当”除数”是5的奇数倍的时候,这一列不进行输出;是5的偶数倍的时候,进行换页;当”余数”为0的时候,进行红色的输出附加补充55基本语法:内部表工作原理(1)Pre-defined(P,I,F,C,N,D,T,X)ElementaryFieldstringtypeTabletypeStructuredUserdefinedDatatypeManipulatingtablesdynamically!!!CARRIDCONNIDInternaltable<itab>AA0017LH0400LH0402LH0403UA0027SQ0005DATA<itabobject>TYPE<linetype>OCCURS<n>.DATA<itabobject>TYPE<itabtype>.DATA:BEGINOF<itabobject>OCCURS<n>,...,ENDOF<itabobject>.56基本语法:内部表工作原理(2)REPORTZXX06.TABLES:TABNA.TYPES:BEGINOFSALES,NAME(30)TYPEC,SALES(4)TYPEPDECIMALS2,ENDOFSALES.DATA:AMOUNT(5)TYPEN,

BEGINOFADDRESS_LISTOCCURS5,FLAGTYPEC,IDLIKETABNA-ID,..AMOUNT1LIKEAMOUNT,,

ENDOFADDRESS_LIST,SALES_TABTYPESALESOCCURS10WITHHEADERLINE.

ExamplesADDRESS_LISTHeaderlineSALES_TABHeaderline10rows/lines57基本语法:内部表工作原理(3)CARRIDCONNIDAA0017internaltable<itab>Workarea<wa>LH0400SORT<itab>BY<field1>...<fieldn>.CLEAR<itab>.REFRESH<itab>.LOOPAT<itab>...ENDLOOP.READTABLE<itab>....APPEND...<itab>.COLLECT...<itab>.INSERT...<itab>.MODIFY<itab>....DELETE<itab>....WorkingwithInternalTables:Movecorresponding<dbtb>to<wa>.AA0017LH0400CARRIDCONNIDCARRIDCONNID58CARRIDCONNIDAA0017Internaltable<itab>Workarea<wa>LH0400CARRIDCONNIDAA0017Internaltable<itab>Headerline<itab>LH0400APPEND<wa>TO<itab>.MODIFY<itab>INDEX<n>FROM<wa>.LOOPAT<itab>INTO<wa>.WRITE<wa>-<field>.ENDLOOP.READTABLE<itab>INDEX<n>INTO<wa>.WRITE<wa>-<field>.APPEND<itab>.MODIFY<itab>INDEX<n>.LOOPAT<itab>.WRITE<itab>-<field>.ENDLOOP.READTABLE<itab>INDEX<n>.WRITE<itab>-<field>.基本语法:内部表工作原理(4)InternalTablesWithorWithoutHeaderLine:59REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKESFLIGHTOCCURS0.SELECT*FROMSFLIGHT.

APPENDSFLIGHTTOFLIGHTINFO_LIST.ENDSELECT.APPEND[<wa>TO]<itab>.CARRIDCONNID...AA0017...InternaltableFLIGHTINFO_LISTTableworkareaSFLIGHTSFLIGHTSELECTAPPENDAA00260026AA基本语法:内部表工作原理(5)FillingInternalTables:60基本语法:内部表工作原理(6)RSELECT*FROM<table>INTOTABLE<itab>.CARRIDCONNID...AA0017...InternaltableFLIGHTINFO_LISTDatabasetableSFLIGHTAAAAAAAA0017002600260064............REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKESFLIGHTOCCURS0.SELECT*FROMSFLIGHTWHERECARRID='AA'.APPENDSFLIGHTTOFLIGHTINFO_LIST.ENDSELECT.SELECT*FROMSFLIGHTINTOTABLEFLIGHTINFO_LISTWHERECARRID='AA'.ArrayFetch:61基本语法:内部表工作原理(7)CARRIDPRICE(TYPP)456789LH100000HeaderlineAA20909381DL9333382LH176666931866669COLLECT[<wa>INTO]<itab>.REPORT....TABLES:SFLIGHT.TYPES:BEGINOFFLIGHTINFO_TYPE,CARRIDLIKESFLIGHT-CARRID,PRICELIKESFLIGHT-PRICE,ENDOFFLIGHTINFO_TYPE.DATA:FLIGHTINFO_LISTTYPEFLIGHTINFO_TYPEOCCURS0WITHHEADERLINE.SELECT*FROMSFLIGHT.MOVE-CORRESPONDINGSFLIGHTTOFLIGHTINFO_LIST.COLLECTFLIGHTINFO_LIST.ENDSELECT.FillingInternalTableswithCumulativeValues:SFLIGHTCARRID NAME PRICE00000001 WILLY 1200 00000001 1200FLIGHTINFO_LISTFLAG CARRID TIME PRICE62基本语法:内部表工作原理(8)SORT<itab>BY<field1><field2>....REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKESFLIGHTOCCURS0WITHHEADERLINE.SELECT*FROMSFLIGHTINTOTABLEFLIGHTINFO_LISTWHERE....

SORTFLIGHTINFO_LIST...SORTFLIGHTINFO_LISTBYPRICEFLDATE...SORTFLIGHTINFO_LISTBYPRICEASCENDING

FLDATEDESCENDINGCARRIDASCENDINGASTEXT.SortinganInternalTable:63基本语法:内部表工作原理(9)LOOPAT<itab>[INTO<wa>]....ENDLOOP.REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKESFLIGHTOCCURS0WITHHEADERLINE.SELECT*FROMSFLIGHTINTOTABLEFLIGHTINFO_LISTWHERE....LOOPATFLIGHTINFO_LIST.WRITE:/FLIGHTINFO_LIST-CARRID,FLIGHTINFO_LIST-CONNID...ENDLOOP....LOOPATFLIGHTINFO_LISTWHERECARRID='LH'.

WRITE:/FLIGHTINFO_LIST-CARRID,FLIGHTINFO_LIST-CONNID...ENDLOOP.IFSY-SUBRCNE0...ENDIF.UsingLoopswithanInternalTable:64基本语法:内部表工作原理(10)READTABLE<itab>[INTO<wa>]WITHKEY...REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKESFLIGHTOCCURS0WITHHEADERLINE,TAB_INDEXTYPEI.SELECT*FROMSFLIGHTINTOTABLEFLIGHTINFO_LISTWHERE....READTABLEFLIGHTINFO_LISTWITHKEYCARRID='LH'CONNID='0400'.IFSY-SUBRCNE0ENDIF.TAB_INDEX=SY-TABIX+1.READTABLEFLIGHTINFO_LISTINDEXTAB_INDEX.IFSY-SUBRCNE0ENDIF.ReadinganEntryfromanInternalTable:65基本语法:内部表工作原理(11)REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKESFLIGHTOCCURS0WITHHEADERLINE.SELECT*FROMSFLIGHTINTOTABLEFLIGHTINFO_LISTWHERE....READTABLEFLIGHTINFO_LISTWITHKEYCARRID='LH'CONNID='0400'.MOVE'345.89'TOFLIGHTINFO_LIST-PRICE.MODIFYFLIGHTINFO_LISTINDEXSY-TABIX.IFSY-SUBRCNE0....ENDIF...INSERTFLIGHTINFO_LISTINDEX5....DELETEFLIGHTINFO_LISTINDEX5.IFSY-SUBRCNE0....ENDIF.INSERT[<wa>INTO]<itab>INDEX<i>.MODIFY<itab>INDEX<i>[FROM<wa>].DELETE<itab>INDEX<i>.ChanginganInternalTableI:66基本语法:内部表工作原理(12)LOOPAT<itab>[INTO<wa>].INSERT[<wa>INTO]<itab>.MODIFY<itab>[FROM<wa>].DELETE<itab>.ENDLOOP.ChanginganInternalTableII:REPORT.......LOOPATFLIGHTINFO_LIST.INSERTFLIGHTINFO_LIST....MODIFYFLIGHTINFO_LIST....DELETEFLIGHTINFO_LIST.ENDLOOP.DELETEFLIGHTINFO_LISTWHERE<Condition>.67基本语法:内部表工作原理(13)RCARRIDCONNIDAA0017Internaltable<itab>Workarea<wa>LH0400CARRIDCONNIDAA0017Internaltable<itab>Headerline<itab>LH0400CLEAR<wa>.REFRESH<itab>.CLEAR<itab>.withheaderlinewithoutheaderline

REFRESH<itab>.DeletinganInternalTable:68基本语法:内部表工作原理(14)REPORT....TABLES:SFLIGHT.DATA:FLIGHTINFO_LISTLIKEBCAXXOCCURS10.SELECT*FROMSFLIGHTINTOTABLEFLIGHTINFO_LIST.DESCRIBETABLEFLIGHTINFO_LISTLINESLINE_COUNT.DESCRIBETABLE<itab>....CARRIDCONNID...AA0017...InternaltableFLIGHTINFO_LISTAAAAAA001700260026.........LINE_COUNT4InformationaboutanInternalTable:69基本语法:ABAPOPENSQL(1)Whichcolumns?Whichcolumns?Whichtables?Whichtables?Whereto?Whereto?Whichentries?Whichentries?Howaretheygrouped?Howaretheygrouped?Howaretheyarranged?Howaretheyarranged?SELECT<result>FROM<table>INTO<target>WHERE<condition>GROUPBY<fields>ORDERBY<fields>.Particularcolumn}Severallines}SinglelineSelectoverview:70基本语法:ABAPOPENSQL(2)REPORT....TABLES:SPFLI.SELECT*FROMSPFLIWHERECARRID='LH'.SELECTSINGLE*FROMSPFLIWHERECARRID='LH'.SELECT<result>FROM<table>....ENDSELECT.SELECTSINGLE<result>FROM<table>.SingleorMultipleEntryProcessing:NoENDSELECTrequiredENDSELECT.71基本语法:ABAPOPENSQL(3)REPORT....TABLES:SPFLI.DATA:MAXFIELDLIKESFLIGHT-DISTANCE,COUNTERTYPEI.SELECTCITYFROMCITYTOINTO(SPFLI-CITYFROM,SPFLI-CITYTO)FROMSPFLI.WRITE:/SPFLI-CITYFROM,SPFLI-CITYTO.ENDSELECT.SELECTMAX(DISTANCE)COUNT(*)

FROMSPFLIINTO(MAXFIELD,COUNTER).SELECT*.......ENDSELECT.SELECT<field1>...<fieldn>....[...ENDSELECT].WRITE:'Longestflightconnection',MAXFIELD,/'Numberofflightconnections',COUNTER.SELECTClause:72基本语法:ABAPOPENSQL(4)REPORTB170D068.TABLES:TABNA.DATA:W_COUNTRYLIKETABNA-COUNTRY.SELECTDISTINCTCOUNTRYINTO(W_COUNTRY)FROMTABNA.ENDSELECT.statementsREPORTB170D069.TABLES:TABNA.DATA:W_IDLIKETABNA-ID,W_COUNTRYLIKETABNA-COUNTRYSELECTDISTINCTIDCOUNTRYINTO(W_ID,W_COUNTRY)FROMTABNA.ENDSELECT.statementsTABNACountryIDAU 12345678AU 22009520USA 10034766USA 22009520USA 999857631stpass2ndpassTABNACountryIDAU 12345678AU 22009520USA 10034766USA 22009520USA 999857632ndpass1stpassSELECTdistinct:73RSELECT<result>FROM<table>INTO<wa>....ENDSELECT.SELECT<result>FROM<table>INTO(<field1>,...,<fieldn>)....ENDSELECT.SELECT<result>FROM<table>INTOTABLE<itab>.REPORT....TYPES:BEGINOFFLIGHTINFO_TYPE,CARRIDLIKESPFLI-CARRID,CONNIDLIKESPFLI-CONNID,ENDOFFLIGHTINFO_TYPE.DATA:WATYPEFLIGHTINFO_TYPE,FLIGHTINFO_LISTTYPEFLIGHTINFO_TYPEOCCURS0.SELECTCARRIDCONNIDFROMSPFLIINTOWA.APPENDWATOFLIGHTINFO_LIST.ENDSELECT.SELECTCARRIDCONNIDFROMSPFLIINTO(SPFLI-CARRID,SPFLI-CONNID).

WRITE:SPFLI-CARRID,SPFLI-CONNID.ENDSELECT.SELECTCARRIDCONNIDFROMSPFLIINTOTABLEFLIGHTINFO_LIST.基本语法:ABAPOPENSQL(5)IntoClause:74基本语法:ABAPOPENSQL(6)SELECT<result>FROM<table>......WHERE<tablefield><operator><value>....WHERE<tablefield>BETWEEN<value1>AND<value2>....WHERE<tablefield>LIKE<pattern>....WHERE<tablefield>IN(<value1,value2,...)....WHERE<tablefield>IN<seltab>.ENDSELECT.WhereClauseoverview:EQ,= LE,<=NE,<> GT,>LT,< GE,>=Equalto LessthanorequalNotequalto GreaterthanLessthan GreaterthanorequalAllowablecomparisonoperatorsforWHEREconditions:75基本语法:ABAPOPENSQL(7)REPORT....TABLES:SPFLI.SELECT*FROMSPFLIWHERECITYFROMLIKE'_R%'.WRITE:/SPFLI-CARRID,SPFLI-CONNID,SPFLI-CITYFROM,....ENDSELECT.SELECT<result>FROM<table>WHERE<tablefield>LIKE<pattern>.WhereClause:like76基本语法:ABAPOPENSQL(8)REPORT....TABLES:SFLIGHT.SELECT*FROMSFLIGHTWHEREPRICEIN(123,1000).WRITE:/SFLIGHT-CARRID,SFLIGHT-CONNID,SFLIGHT-PRICE,....ENDSELECT.SELECT<result>FROM<table>WHERE<tablefield>IN(<value1>,<value2>,...).WhereClause:in77基本语法:ABAPOPENSQL(9)RSELECT<result>...FROM<table>GROUPBY<field1>...<fieldn>.REPORT....TABLES:SFLIGHT.DATA:CARRIDLIKESFLIGHT-CARRID,MINIMUMTYPEPDECIMALS2,MAXIMUMTYPEPDECIMALS2.SELECTCARRIDMIN(PRICE)MAX(PRICE)INTO(CARRID,MINIMUM,MAXIMUM)FROMSFLIGHTGROUPBYCARRID.WRITE:/CARRID,MINIMUM,MAXIMUM.ENDSELECT.IFSY-SUBRCNE0.WRITE:/TEXT-001.ENDIF.Groupbyclause:78基本语法:ABAPOPENSQL(10)REPORT....TABLES:SPFLI.SELECTCARRIDCONNIDCITYFROMFROMSPFLIINTO(SPFLI-CARRID,SPFLI-CONNID,SPFLI-CITYFROM)ORDERBYCITYFROM.

WRITE:/SPFLI-CARRID,SPFLI-CONNID,

SPFLI-CITYFROM.ENDSELECT.IFSY-SUBRCNE0.WRITE:/TEXT-001.ENDIF.SELECT<result>FROM<table>ORDERBY<field1><field2>...PRIMARYKEY.Orderbyclause:79基本语法:功能函数(1)PROGRAM...TABLES...CALLFUNCTION'FM_02'EXPORTING...IMPORTING...UsingfunctionmodulesMaintainingfunctionmodulesFM_02InterfaceImportExportTablesExceptionsProgramDocumentationAdministrationFMgroup:FIBUFM_01...FM_02...FM_03...FM_04...FMgroup:ZIBUFunctionLibraryFunctionLibrary80基本语法:功能函数(2)81基本语法:功能函数(3)REPORT....TABLES:SFLIGHT.DATA:losslikesflight-paymentsum,revenuelike...CALLFU

温馨提示

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

评论

0/150

提交评论