構文要素
非常に簡単に言うと、プログラムとは、区切り文字で区切られた一連のトークンです。 トークンとは、基本的な構文要素としてプログラム内で意味を持つテキストの最小単位であり、字句ともいいます。 トークンを組み合わせて、式や宣言や文を組み立てます。 文とは、プログラム内で実行可能なアルゴリズム動作を記述したものです。 式は、文の中に現れる構文単位で、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 | 以上 | - | ||
CO | Contains Only | - | ||
CN | Contains Not Only | - | ||
CA | Contains Any: | - | ||
NA | Contains Not Any | - | ||
CS | Contains String | - | ||
NS | Contains No String | - | ||
CP | Covers Pattern | - | ||
NP | No 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-SOURCE | ABBREVIATED | ABS | ABSTRACT | ACCEPT |
ACCEPTING | ACCORDING | ACOS | ACTIVATION | ACTUAL |
ADD | ADD-CORRESPONDING | ADJACENT | AFTER | ALIASES |
ALL | ALLOCATE | ANALYSIS | ANALYZER | AND |
ANY | APPEND | APPENDAGE | APPENDING | APPLICATION |
ARCHIVE | AREA | ARITHMETIC | AS | ASCENDING |
ASIN | ASSERT | ASSIGN | ASSIGNED | ASSIGNING |
AT | ATAN | ATTRIBUTES | AUTHORITY | AUTHORITY-CHECK |
AVG | BACK | BACKGROUND | BACKUP | BACKWARD |
BADI | BEFORE | BEGIN | BETWEEN | BIG |
BINARY | BIT | BIT-AND | BIT-NOT | BIT-OR |
BIT-XOR | BLACK | BLANK | BLANKS | BLOCK |
BLOCKS | BLUE | BOUND | BOUNDARIES | BOUNDS |
BREAK-POINT | BT | BUFFER | BY | BYPASSING |
BYTE | BYTE-CA | BYTE-CN | BYTE-CO | BYTE-CS |
BYTE-NA | BYTE-NS | BYTE-ORDER | C | CA |
CALL | CALLING | CASE | CASTING | CATCH |
CEIL | CENTERED | CHAIN | CHAIN-INPUT | CHAIN-REQUEST |
CHANGE | CHANGING | CHAR-TO-HEX | CHARACTER | CHARLEN |
CHECK | CHECKBOX | CIRCULAR | CLASS | CLASS-CODING |
CLASS-DATA | CLASS-EVENTS | CLASS-METHODS | CLASS-POOL | CLEANUP |
CLEAR | CLIENT | CLIKE | CLOCK | CLOSE |
CN | CO | CODE | CODEPAGE | CODING |
COL_BACKGROUND | COL_GROUP | COL_HEADING | COL_KEY | COL_NEGATIVE |
COL_NORMAL | COL_POSITIVE | COL_TOTAL | COLLECT | COLOR |
COLUMN | COMMENT | COMMENTS | COMMIT | COMMON |
COMMUNICATION | COMPARING | COMPONENT | COMPONENTS | COMPRESSION |
COMPUTE | CONCATENATE | CONDENSE | CONDITION | CONNECT |
CONNECTION | CONSTANTS | CONTEXT | CONTEXTS | CONTINUE |
CONTROL | CONTROLS | CONVERSION | CONVERT | COPIES |
COPY | CORRESPONDING | COS | COSH | COUNT |
COUNTRY | COVER | CP | CPI | CREATE |
CS | CSEQUENCE | CURRENCY | CURRENT | CURSOR |
CURSOR-SELECTION | CUSTOMER-FUNCTION | D | DATA | DATABASE |
DATAINFO | DATASET | DATE | DAYLIGHT | DBMAXLEN |
DD/MM/YY | DD/MM/YYYY | DDMMYY | DEALLOCATE | DECIMALS |
DEFAULT | DEFERRED | DEFINE | DEFINING | DEFINITION |
DELETE | DELETING | DEMAND | DEPARTMENT | DESCENDING |
DESCRIBE | DESTINATION | DETAIL | DIALOG | DIRECTORY |
DISCONNECT | DISPLAY | DISPLAY-MODE | DISTANCE | DISTINCT |
DIV | DIVIDE | DIVIDE-CORRESPONDING | DO | DUMMY |
DUPLICATE | DUPLICATES | DURING | DYNAMIC | DYNPRO |
E | EDIT | EDITOR-CALL | ELSE | ELSEIF |
ENABLED | ENABLING | ENCODING | END | END-ENHANCEMENT-SECTION |
END-LINES | END-OF-DEFINITION | END-OF-FILE | END-OF-PAGE | END-OF-SELECTION |
ENDAT | ENDCASE | ENDCATCH | ENDCHAIN | ENDCLASS |
ENDDO | ENDENHANCEMENT | ENDEXEC | ENDFORM | ENDFUNCTION |
ENDIAN | ENDIF | ENDING | ENDINTERFACE | ENDLOOP |
ENDMETHOD | ENDMODULE | ENDON | ENDPROVIDE | ENDSELECT |
ENDTRY | ENDWHILE | ENHANCEMENT | ENHANCEMENT-POINT | ENHANCEMENT-SECTION |
ENHANCEMENTS | ENTRIES | ENTRY | ENVIRONMENT | EQ |
ERRORMESSAGE | ERRORS | ESCAPE | ESCAPING | EVENT |
EVENTS | EXCEPTION | EXCEPTION-TABLE | EXCEPTIONS | EXCLUDE |
EXCLUDING | EXEC | EXECUTE | EXISTS | EXIT |
EXIT-COMMAND | EXP | EXPAND | EXPIRATION | EXPLICIT |
EXPONENT | EXPORT | EXPORTING | EXTENDED | EXTENSION |
EXTRACT | F | FETCH | FIELD | FIELD-GROUPS |
FIELD-SYMBOLS | FIELDS | FILE | FILTER | FILTERS |
FINAL | FIND | FIRST | FIRST-LINE | FIXED-POINT |
FKEQ | FKGE | FLOOR | FLUSH | FONT |
FOR | FORM | FORMAT | FORWARD | FOUND |
FRAC | FRAME | FRAMES | FREE | FRIENDS |
FROM | FTO | FUNCTION | FUNCTION-POOL | GAPS |
GE | GENERATE | GET | GIVING | GKEQ |
GKGE | GLOBAL | GREEN | GROUP | GROUPS |
GT | HANDLE | HANDLER | HASHED | HAVING |
HEAD-LINES | HEADER | HEADERS | HEADING | HELP-ID |
HELP-REQUEST | HIDE | HIGH | HINT | HOLD |
HOTSPOT | I | ICON | ID | IDENTIFICATION |
IDENTIFIER | IDS | IF | IGNORING | IMMEDIATELY |
IMPLEMENTATION | IMPLEMENTATIONS | IMPORT | IMPORTING | IN |
INCLUDE | INCLUDES | INCLUDING | INCREMENT | INDEX |
INDEX-LINE | INFOTYPES | INHERITING | INIT | INITIAL |
INITIALIZATION | INNER | INOUT | INPUT | INSERT |
INSTANCES | INTENSIFIED | INTERFACE | INTERFACE-POOL | INTERFACES |
INTERNAL | INTERVALS | INTO | INVERSE | INVERTED-DATE |
IS | JOB | JOIN | KEEP | KEEPING |
KERNEL | KEY | KEYS | KEYWORDS | KIND |
LANGUAGE | LAST | LATE | LAYOUT | LE |
LEADING | LEAVE | LEFT | LEFT-JUSTIFIED | LEGACY |
LENGTH | LEVEL | LEVELS | LIKE | LINE |
LINE-COUNT | LINE-SELECTION | LINE-SIZE | LINEFEED | LINES |
LIST | LIST-PROCESSING | LISTBOX | LITTLE | LOAD |
LOAD-OF-PROGRAM | LOCAL | LOCALE | LOG | LOG-POINT |
LOG10 | LOGFILE | LOOP | LOW | LOWER |
LPI | LT | M | MAIN | |
MAJOR-ID | MARGIN | MARK | MASK | MATCH |
MATCHCODE | MAX | MAXIMUM | MEMORY | MESSAGE |
MESSAGE-ID | MESSAGES | METHOD | METHODS | MIN |
MINIMUM | MINOR-ID | MM/DD/YY | MM/DD/YYYY | MMDDYY |
MOD | MODE | MODIF | MODIFIER | MODIFY |
MODULE | MOVE | MOVE-CORRESPONDING | MULTIPLY | MULTIPLY-CORRESPONDING |
N | NA | NAME | NAMETAB | NATIVE |
NB | NE | NESTING | NEW | NEW-LINE |
NEW-PAGE | NEW-SECTION | NEXT | NO | NO-DISPLAY |
NO-EXTENSION | NO-EXTENSIONS | NO-GAP | NO-GAPS | NO-GROUPING |
NO-HEADING | NO-SCROLLING | NO-SIGN | NO-TITLE | NO-TOPOFPAGE |
NO-ZERO | NODE | NODES | NON-UNICODE | NON-UNIQUE |
NOT | NP | NS | NULL | NUMBER |
NUMERIC | NUMOFCHAR | O | OBJECT | OBJECTS |
OBLIGATORY | OCCURRENCE | OCCURRENCES | OCCURS | OF |
OFF | OFFSET | OLE | ON | ONLY |
OPEN | OPTION | OPTIONAL | OPTIONS | OR |
ORDER | OTHERS | OUT | OUTER | OUTPUT |
OUTPUT-LENGTH | OVERFLOW | OVERLAY | P | PACK |
PACKAGE | PADDING | PAGE | PAGES | PARAMETER |
PARAMETER-TABLE | PARAMETERS | PART | PATTERN | PERCENTAGE |
PERFORM | PERFORMING | PERSON | PF | PF-STATUS |
PINK | PLACES | POOL | POSITION | PRECOMPILED |
PREFERRED | PRESERVING | PRIMARY | PRINT-CONTROL | |
PRIORITY | PRIVATE | PROCEDURE | PROCESS | PROGRAM |
PROPERTY | PROTECTED | PROVIDE | PUBLIC | PUSHBUTTON |
PUT | QUEUE-ONLY | QUICKINFO | RADIOBUTTON | RAISE |
RAISING | RANGE | RANGES | READ | READ-ONLY |
RECEIVE | RECEIVED | RECEIVER | RECEIVING | RED |
REDEFINITION | REF | REFERENCE | REFRESH | REGEX |
REJECT | RENAMING | REPLACE | REPLACEMENT | REPLACING |
REPORT | REQUEST | REQUESTED | RESERVE | RESET |
RESOLUTION | RESPECTING | RESPONSIBLE | RESULT | RESULTS |
RETURN | RETURNCODE | RETURNING | RFC | RIGHT |
RIGHT-JUSTIFIED | ROLLBACK | ROUND | ROWS | RUN |
SAP | SAP-SPOOL | SAVING | SCAN | SCREEN |
SCROLL | SCROLL-BOUNDARY | SCROLLING | SEARCH | SECONDS |
SECTION | SELECT | SELECT-OPTIONS | SELECTION | SELECTION-SCREEN |
SELECTION-SET | SELECTION-SETS | SELECTION-TABLE | SELECTIONS | SEND |
SEPARATE | SEPARATED | SET | SHARED | SHIFT |
SHORTDUMP-ID | SIGN | SIMPLE | SIN | SINGLE |
SINH | SIZE | SKIP | SKIPPING | SMART |
SOME | SORT | SORTABLE | SORTED | SOURCE |
SPECIFIED | SPLIT | SPOOL | SPOTS | SQL |
SQRT | STABLE | STAMP | STANDARD | START-OF-SELECTION |
STARTING | STATE | STATEMENT | STATEMENTS | STATIC |
STATICS | STATUSINFO | STEP-LOOP | STOP | STRING |
STRLEN | STRUCTURE | STRUCTURES | SUBKEY | SUBMATCHES |
SUBMIT | SUBROUTINE | SUBSCREEN | SUBSTRING | SUBTRACT |
SUBTRACT-CORRESPONDING | SUFFIX | SUM | SUMMARY | SUMMING |
SUPPLIED | SUPPLY | SUPPRESS | SWITCH | SWITCHSTATES |
SYMBOL | SYNCPOINTS | SYNTAX-CHECK | SYNTAX-TRACE | SYSTEM-CALL |
SYSTEM-EXCEPTIONS | SYSTEM-EXIT | T | TAB | TABBED |
TABLE | TABLES | TABLEVIEW | TABSTRIP | TAN |
TANH | TASK | TEST | TESTING | TEXT |
TEXTPOOL | THEN | TIME | TIMES | TITLE |
TITLE-LINES | TITLEBAR | TO | TOKENIZATION | TOKENS |
TOP-LINES | TOP-OF-PAGE | TRACE-FILE | TRACE-TABLE | TRAILING |
TRANSACTION | TRANSFER | TRANSFORMATION | TRANSLATE | TRANSPORTING |
TRMAC | TRUNC | TRUNCATE | TRUNCATION | TRY |
TYPE | TYPE-POOL | TYPE-POOLS | TYPES | ULINE |
UNASSIGN | UNDER | UNICODE | UNIQUE | UNIT |
UNIX | UNPACK | UNTIL | UP | UPDATE |
UPPER | USER | USER-COMMAND | USING | UTF-8 |
VALID | VALUE | VALUE-REQUEST | VALUES | VARY |
VARYING | VERIFICATION-MESSAGE | VERSION | VIA | VISIBLE |
WAIT | WARNING | WHEN | WHENEVER | WHERE |
WHILE | WIDTH | WINDOW | WINDOWS | WITH |
WITH-HEADING | WITH-TITLE | WITHOUT | WORD | WORK |
WRITE | X | XML | XSEQUENCE | XSTRING |
XSTRLEN | YELLOW | YYMMDD | Z | ZONE |
コメント
コメントは、ある記号から行末までをコメントとして扱う行コメントと、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