構文要素

 

非常に簡単に言うと、プログラムとは、区切り文字で区切られた一連のトークンです。 トークンとは、基本的な構文要素としてプログラム内で意味を持つテキストの最小単位であり、字句ともいいます。 トークンを組み合わせて、式や宣言や文を組み立てます。 文とは、プログラム内で実行可能なアルゴリズム動作を記述したものです。 式は、文の中に現れる構文単位で、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-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 MAIL 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 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