非常に簡単に言うと、プログラムとは、区切り文字で区切られた一連のトークンです。 トークンとは、基本的な構文要素としてプログラム内で意味を持つテキストの最小単位であり、字句ともいいます。 トークンを組み合わせて、式や宣言や文を組み立てます。 文とは、プログラム内で実行可能なアルゴリズム動作を記述したものです。 式は、文の中に現れる構文単位で、1 つの値を表します。 宣言では、式や文の中で利用できる識別子(関数や変数の名前など)を定義し、必要に応じて識別子用のメモリを割り当てます。
このトピックでは、ABAP言語の文字集合を紹介し、以下のようなトークンを宣言するための構文を説明します。
識別子リテナル演算子区切文字キーワード コメント文字集合文字集合は,ソース・プログラムで使用可能か有効文字を定義します。 リリース 6.10 以降のABAPシステムは、ユニコード文字集合 とANSI文字集合が 両方ともサポートされるようになっております。
識別子識別子は,次の項目の名前を表す文字シーケンスです。
変数名定数名型名サブルーチン名クラス名インタフェース名識別子には,次の規則が適用されます。
長さが最大 30 文字です+ . ,: ( ) を使うことができませんすべて数字で構成することはできませんリテナル以下のようなリテナルがあります。
分類定義例文字列文字列リテラルは、一重の逆向き引用符 (`) に囲まれた文 字列であり、そのデータ型は STRING です'abc3d3’数値数字リテラルは、(0 から 9 までの) 連続した数字で構成され、数字の直前に正 (+) または負 (-) の符号を付けることができます123-93
+456
3455555555小数部 がある数値や科学表記によ る数値をリテラルとして表 示できるようにするには、 文字リテラルを使用する必 要があります'1234567890567890'
'+0.58498'
'-8473.67'
'+12.3E-4'日付'YYYYMMDD'フォーマットのような文字リテナルで定義する必要があります'20140218'時間'HH24MMSS'フォーマットのような文字リテナルで定義する必要があります'133359'演算子
演算子は1つ,または複数のオペランドでの演算を示すトークンであり,ある結果を返してきます。 演算子は以下のようなものがあります。
分類演算子用途 ABAP命令代入=代入 MOVE~TO~?=ワイドキャスト代入(参照型の場合 MOVE~?TO~算術+加算 ADD~TO~-減算 SUBTRACT~FROM~*掛け算 MULTIPLY~BY~/割り算 DIVIDE~BY~**累乗 -MOD整数除算の余り -DIV整数除算 -関係=, EQ等号 -<>, NE不等号 -<, LT未満 ->, GT超過 -⇐, LE以下 ->=, GE以上 -COContains Only -CNContains Not Only -CAContains Any: -NAContains Not Any -CSContains String -NSContains No String -CPCovers Pattern -NPNo Pattern -論理OR論理和 -AND論理積 -NOT否定 -ビットBIT-ANDビット単位AND -BIT-ORビット単位OR -BIT-XORビット単位XOR -BIT-NOTビット単位NOT -リテナル&2つのリテラルを結んで1つのリテラルにする--区切文字ABAPの文字のいくつかは区切り記号として使用され,構文および意味上で独自の機能を持っています
分類区切り記号用途例終端子.(ピリオド)文の終了-キーワードABAP言語で文は命令とよばれています。命令の先頭の ABAP 用語は ABAP キーワードです。 ABAPキーワードはある種のプログラ ミング言語でのように予約された名称ではありません。 命名規則で ABAP キーワードを使用するのは禁止され ていませんが、可能なら避 けてください。 以下はABAPキーワードの一覧表です。
ABAP-SOURCEABBREVIATEDABSABSTRACTACCEPTACCEPTINGACCORDINGACOSACTIVATIONACTUALADDADD-CORRESPONDINGADJACENTAFTERALIASESALLALLOCATEANALYSISANALYZERANDANYAPPENDAPPENDAGEAPPENDINGAPPLICATIONARCHIVEAREAARITHMETICASASCENDINGASINASSERTASSIGNASSIGNEDASSIGNINGATATANATTRIBUTESAUTHORITYAUTHORITY-CHECKAVGBACKBACKGROUNDBACKUPBACKWARDBADIBEFOREBEGINBETWEENBIGBINARYBITBIT-ANDBIT-NOTBIT-ORBIT-XORBLACKBLANKBLANKSBLOCKBLOCKSBLUEBOUNDBOUNDARIESBOUNDSBREAK-POINTBTBUFFERBYBYPASSINGBYTEBYTE-CABYTE-CNBYTE-COBYTE-CSBYTE-NABYTE-NSBYTE-ORDERCCACALLCALLINGCASECASTINGCATCHCEILCENTEREDCHAINCHAIN-INPUTCHAIN-REQUESTCHANGECHANGINGCHAR-TO-HEXCHARACTERCHARLENCHECKCHECKBOXCIRCULARCLASSCLASS-CODINGCLASS-DATACLASS-EVENTSCLASS-METHODSCLASS-POOLCLEANUPCLEARCLIENTCLIKECLOCKCLOSECNCOCODECODEPAGECODINGCOL_BACKGROUNDCOL_GROUPCOL_HEADINGCOL_KEYCOL_NEGATIVECOL_NORMALCOL_POSITIVECOL_TOTALCOLLECTCOLORCOLUMNCOMMENTCOMMENTSCOMMITCOMMONCOMMUNICATIONCOMPARINGCOMPONENTCOMPONENTSCOMPRESSIONCOMPUTECONCATENATECONDENSECONDITIONCONNECTCONNECTIONCONSTANTSCONTEXTCONTEXTSCONTINUECONTROLCONTROLSCONVERSIONCONVERTCOPIESCOPYCORRESPONDINGCOSCOSHCOUNTCOUNTRYCOVERCPCPICREATECSCSEQUENCECURRENCYCURRENTCURSORCURSOR-SELECTIONCUSTOMER-FUNCTIONDDATADATABASEDATAINFODATASETDATEDAYLIGHTDBMAXLENDD/MM/YYDD/MM/YYYYDDMMYYDEALLOCATEDECIMALSDEFAULTDEFERREDDEFINEDEFININGDEFINITIONDELETEDELETINGDEMANDDEPARTMENTDESCENDINGDESCRIBEDESTINATIONDETAILDIALOGDIRECTORYDISCONNECTDISPLAYDISPLAY-MODEDISTANCEDISTINCTDIVDIVIDEDIVIDE-CORRESPONDINGDODUMMYDUPLICATEDUPLICATESDURINGDYNAMICDYNPROEEDITEDITOR-CALLELSEELSEIFENABLEDENABLINGENCODINGENDEND-ENHANCEMENT-SECTIONEND-LINESEND-OF-DEFINITIONEND-OF-FILEEND-OF-PAGEEND-OF-SELECTIONENDATENDCASEENDCATCHENDCHAINENDCLASSENDDOENDENHANCEMENTENDEXECENDFORMENDFUNCTIONENDIANENDIFENDINGENDINTERFACEENDLOOPENDMETHODENDMODULEENDONENDPROVIDEENDSELECTENDTRYENDWHILEENHANCEMENTENHANCEMENT-POINTENHANCEMENT-SECTIONENHANCEMENTSENTRIESENTRYENVIRONMENTEQERRORMESSAGEERRORSESCAPEESCAPINGEVENTEVENTSEXCEPTIONEXCEPTION-TABLEEXCEPTIONSEXCLUDEEXCLUDINGEXECEXECUTEEXISTSEXITEXIT-COMMANDEXPEXPANDEXPIRATIONEXPLICITEXPONENTEXPORTEXPORTINGEXTENDEDEXTENSIONEXTRACTFFETCHFIELDFIELD-GROUPSFIELD-SYMBOLSFIELDSFILEFILTERFILTERSFINALFINDFIRSTFIRST-LINEFIXED-POINTFKEQFKGEFLOORFLUSHFONTFORFORMFORMATFORWARDFOUNDFRACFRAMEFRAMESFREEFRIENDSFROMFTOFUNCTIONFUNCTION-POOLGAPSGEGENERATEGETGIVINGGKEQGKGEGLOBALGREENGROUPGROUPSGTHANDLEHANDLERHASHEDHAVINGHEAD-LINESHEADERHEADERSHEADINGHELP-IDHELP-REQUESTHIDEHIGHHINTHOLDHOTSPOTIICONIDIDENTIFICATIONIDENTIFIERIDSIFIGNORINGIMMEDIATELYIMPLEMENTATIONIMPLEMENTATIONSIMPORTIMPORTINGININCLUDEINCLUDESINCLUDINGINCREMENTINDEXINDEX-LINEINFOTYPESINHERITINGINITINITIALINITIALIZATIONINNERINOUTINPUTINSERTINSTANCESINTENSIFIEDINTERFACEINTERFACE-POOLINTERFACESINTERNALINTERVALSINTOINVERSEINVERTED-DATEISJOBJOINKEEPKEEPINGKERNELKEYKEYSKEYWORDSKINDLANGUAGELASTLATELAYOUTLELEADINGLEAVELEFTLEFT-JUSTIFIEDLEGACYLENGTHLEVELLEVELSLIKELINELINE-COUNTLINE-SELECTIONLINE-SIZELINEFEEDLINESLISTLIST-PROCESSINGLISTBOXLITTLELOADLOAD-OF-PROGRAMLOCALLOCALELOGLOG-POINTLOG10LOGFILELOOPLOWLOWERLPILTMMAILMAINMAJOR-IDMARGINMARKMASKMATCHMATCHCODEMAXMAXIMUMMEMORYMESSAGEMESSAGE-IDMESSAGESMETHODMETHODSMINMINIMUMMINOR-IDMM/DD/YYMM/DD/YYYYMMDDYYMODMODEMODIFMODIFIERMODIFYMODULEMOVEMOVE-CORRESPONDINGMULTIPLYMULTIPLY-CORRESPONDINGNNANAMENAMETABNATIVENBNENESTINGNEWNEW-LINENEW-PAGENEW-SECTIONNEXTNONO-DISPLAYNO-EXTENSIONNO-EXTENSIONSNO-GAPNO-GAPSNO-GROUPINGNO-HEADINGNO-SCROLLINGNO-SIGNNO-TITLENO-TOPOFPAGENO-ZERONODENODESNON-UNICODENON-UNIQUENOTNPNSNULLNUMBERNUMERICNUMOFCHAROOBJECTOBJECTSOBLIGATORYOCCURRENCEOCCURRENCESOCCURSOFOFFOFFSETOLEONONLYOPENOPTIONOPTIONALOPTIONSORORDEROTHERSOUTOUTEROUTPUTOUTPUT-LENGTHOVERFLOWOVERLAYPPACKPACKAGEPADDINGPAGEPAGESPARAMETERPARAMETER-TABLEPARAMETERSPARTPATTERNPERCENTAGEPERFORMPERFORMINGPERSONPFPF-STATUSPINKPLACESPOOLPOSITIONPRECOMPILEDPREFERREDPRESERVINGPRIMARYPRINTPRINT-CONTROLPRIORITYPRIVATEPROCEDUREPROCESSPROGRAMPROPERTYPROTECTEDPROVIDEPUBLICPUSHBUTTONPUTQUEUE-ONLYQUICKINFORADIOBUTTONRAISERAISINGRANGERANGESREADREAD-ONLYRECEIVERECEIVEDRECEIVERRECEIVINGREDREDEFINITIONREFREFERENCEREFRESHREGEXREJECTRENAMINGREPLACEREPLACEMENTREPLACINGREPORTREQUESTREQUESTEDRESERVERESETRESOLUTIONRESPECTINGRESPONSIBLERESULTRESULTSRETURNRETURNCODERETURNINGRFCRIGHTRIGHT-JUSTIFIEDROLLBACKROUNDROWSRUNSAPSAP-SPOOLSAVINGSCANSCREENSCROLLSCROLL-BOUNDARYSCROLLINGSEARCHSECONDSSECTIONSELECTSELECT-OPTIONSSELECTIONSELECTION-SCREENSELECTION-SETSELECTION-SETSSELECTION-TABLESELECTIONSSENDSEPARATESEPARATEDSETSHAREDSHIFTSHORTDUMP-IDSIGNSIMPLESINSINGLESINHSIZESKIPSKIPPINGSMARTSOMESORTSORTABLESORTEDSOURCESPECIFIEDSPLITSPOOLSPOTSSQLSQRTSTABLESTAMPSTANDARDSTART-OF-SELECTIONSTARTINGSTATESTATEMENTSTATEMENTSSTATICSTATICSSTATUSINFOSTEP-LOOPSTOPSTRINGSTRLENSTRUCTURESTRUCTURESSUBKEYSUBMATCHESSUBMITSUBROUTINESUBSCREENSUBSTRINGSUBTRACTSUBTRACT-CORRESPONDINGSUFFIXSUMSUMMARYSUMMINGSUPPLIEDSUPPLYSUPPRESSSWITCHSWITCHSTATESSYMBOLSYNCPOINTSSYNTAX-CHECKSYNTAX-TRACESYSTEM-CALLSYSTEM-EXCEPTIONSSYSTEM-EXITTTABTABBEDTABLETABLESTABLEVIEWTABSTRIPTANTANHTASKTESTTESTINGTEXTTEXTPOOLTHENTIMETIMESTITLETITLE-LINESTITLEBARTOTOKENIZATIONTOKENSTOP-LINESTOP-OF-PAGETRACE-FILETRACE-TABLETRAILINGTRANSACTIONTRANSFERTRANSFORMATIONTRANSLATETRANSPORTINGTRMACTRUNCTRUNCATETRUNCATIONTRYTYPETYPE-POOLTYPE-POOLSTYPESULINEUNASSIGNUNDERUNICODEUNIQUEUNITUNIXUNPACKUNTILUPUPDATEUPPERUSERUSER-COMMANDUSINGUTF-8VALIDVALUEVALUE-REQUESTVALUESVARYVARYINGVERIFICATION-MESSAGEVERSIONVIAVISIBLEWAITWARNINGWHENWHENEVERWHEREWHILEWIDTHWINDOWWINDOWSWITHWITH-HEADINGWITH-TITLEWITHOUTWORDWORKWRITEXXMLXSEQUENCEXSTRINGXSTRLENYELLOWYYMMDDZZONEコメント
コメントは、ある記号から行末までをコメントとして扱う行コメントと、2つの記号で前後を括りその内部をコメントとして扱うブロックコメントに大別されることができます。 ABAP言語は、行コメントのみをサポートしております。行全体をコメントにする場合は、行の先頭にアスタリスク (*) を入れます。1 行の一部をコメントにする場合は、コメントの前に二重引用符 (“) を入れます。
************************************************ * REPORT DEMO_HELLO_WORLD * * WRITTEN BY LI WENFENG, 02/18/2014 * * LAST CHANGED BY LI WENFENG, 02/18/2014 * ************************************************ REPORT DEMO_HELLO_WORLD. * Selection Screen PARAMETERS input(12) TYPE c DEFAULT 'Hello World!'. * Dynpro CALL SCREEN 100. * List SKIP TO LINE 10. " sets the line POSITION 40. " sets the position WRITE input. " output<span style="background-color:rgb(255, 255, 255);white-space:normal;font-family:"Trebuchet MS", "Helvetica Neue", Helvetica, Tahoma, sans-serif;font-size:16px"></span><span style="background-color:rgb(255, 255, 255);white-space:normal;font-family:"Trebuchet MS", "Helvetica Neue", Helvetica, Tahoma, sans-serif;font-size:16px"></span>