参加
最後オンライン
最近の投稿
プログラミング基礎に投稿されました 続きを読む

ABAP言語の世界では、文が命令と呼ばれています。

ABAPの文(命令)はキーワードで始まり、プリオド(「.」)で終了します。

カテゴリ命令役割
宣言命令TYPESデータ型を定義します-
DATAデータオブジェクトを宣言します-
TABLES--
制御命令IFIF-ELSE-ENDIF選択制御構造を実装する-
ELSE-
ELSEIF-
ENDIF-
CASECASE-WHEN-ENDCASE選択制御構造を実装する-
WHEN-
ENDCASE-
DODO-ENDDO反復制御構造を実装する-
ENDDO-
WHILEWHILE-ENDWHILE反復制御構造を実装する-
ENDWHILE-
呼出命令PERFORMサブルーチンを呼び出す-
CALL FUNCTION汎用モジュールを呼び出す-
CALL DIALOGダイアログモジュールを呼び出す-
CALL METHODABAPオブジェクトのメソッドを呼び出す-
CALL METHOD OFOLE2オブジェクトのメソッドを呼び出す-
CALL SCREEN画面を呼び出す-
CALL SELECTION-SCREEN選択画面を呼び出す-
CALL TRANSACTIONトランザクションを呼び出す-
SUBMITタイプ 1 の実行可能プログラムを呼び出す-
LEAVE SCREEN現在の画面の処理を中止し、次の画面を呼び出す-
LEAVE TO SCREEN現在の画面の処理を中止し、動的に定義された次の画面を呼び出す-
LEAVE [PROGRAM]現在のプログラムの処理を停止し、このプログラムが呼び出されたポイントに戻る-
LEAVE TO TRANSACTION--
モジュール化命令AT SELECTION SCREEN--
START-OF-SELECTION--
AT USER-COMMAND--
FORMサブルーチンの定義を開始する-
ENDFORMサブルーチンの定義を終了する-
FUNCTION汎用モジュールの定義を開始する-
ENDFUNCTION汎用モジュールの定義を終了する-
MODULE--
ENDMODULE--
操作命令WRITE--
MOVE--
ADD--
COMPUTE--
オープンSQLSELECTデータベーステーブルからのデータの読込-
INSERTデータベーステーブルへの行の追加-
UPDATEデータベーステーブルの行コンテンツの変更-
MODIFYデータベーステーブルへの行の追加、または既存行のコンテンツの変更-
DELETEデータベーステーブルからの行の削除-
OPEN CURSOR
FETCH
CLOSE CURSOR
カーソルによるデータベーステーブルからの行の読込-
ネイティブSQLEXEC SQL
ENDEXEC
データベース固有のコマンドが全てできる-
UI制御命令SET SCREEN次の画面を設定する-
SET TITLEBAR画面タイトルを設定する-
SET PF-STATUSGUIステータスを設定する-
SET CURSOR画面上でカーソルを設定する-
SET MARGIN印刷ページのマージンを設定する-

複数の命令は最初の部分が同じであれば、1 つのチェーン命令で連結して書くことができます。 一連の命令を連結するには、同一部分を 1 回だけ書き、その後にコロン(:) を入れます。コロンの後に、個別命令の残りの部分を書いて、それぞれをカンマで区切ります。最後の部分の後にピリオド (.)を付けます。

ABAP言語の世界で、ブロックは命令ブロックと呼ばれています。 命令ブロックは制御種類により以下のように分類することができます。

分岐

If-then文

IF <条件式> 
<命令ブロック> 
ENDIF.

If-then-else文

IF < 条件1>.
  < 命令ブロック>
ELSEIF < 条件2>
  < 命令ブロック>.
ELSEIF < 条件3>.
  < 命令ブロック>
.....
ELSE.
  < 命令ブロック>
ENDIF.    

Case-when文

Switch文    CASE <f>.
  WHEN <f11> [OR <f12> OR ...].
       < 命令ブロック>
  WHEN <f21>.[OR <f22> OR ...]
       < 命令ブロック>
  WHEN ...
  ......
  WHEN OTHERS.
       < 命令ブロック>
ENDCASE.    

ループ

Do文

DO [<n> TIMES] [VARYING <f> FROM <f1> NEXT <f2>].
  < 命令ブロック>
ENDDO.

While文

WHILE < 条件> [VARY <f> FROM <f1> NEXT <f2>].
   < 命令ブロック>
ENDWHILE.

例外

* Try-catch-endtry  
* Try-catch-cleanup-endtry			
プログラミング基礎に投稿されました 続きを読む

このトピックでは、ABAPの式を取り上げて説明します。

式とは

式というのは結果として値を返すものです。

ABAPは命令ベースの言語であり、命令文に式を使うことができます。

式の構成

式は1つ以上のオペランド、ゼロ以上の演算子、およびゼロ以上の括弧の組み合わせから成ります。 オペランドと演算子や括弧の間に必ずスペースをあけなければなりません。

式の種別

ABAPの式はおもに以下のものがあります。

  • 算術式
  • 論理式

算術式とは

算術式とは、算術演算を行う式です。 算術式は結果として単一の算術値をもたらします。

実行順序

ABAPでは、算術式を以下の順序で解釈します。

  1. 括弧内の式
  2. 関数
  3. ** ( 累乗)
  4. *、/、MOD、DIV ( 乗算、除算)
  5. +、- ( 加算、減算)

算術式の結果代入

式の計算結果を変数に代入するには、COMPUTE 命令または代入演算子(=) を使用します。

COMPUTE <n> = <expression>.

COMPUTE はオプションなので、以下のように命令を記述することもできます。

<n> = <expression>.

<expression> で指定した算術演算の結果は、項目 <n> に代入されます。

論理式とは

論理式とは、真偽値を返す式です。

関係演算子の使用

関係演算子を使用する論理式では、2つのオペランドが関係演算子を使用する関係式にリンクしています。

論理式では、関係演算子に従って、2つのオペランドの内容が比較されます。

論理式の結合順序

ABAPでは、AND、OR 、NOTを使うことで、いくつかの論理式をつの論理式にまとめることができます。 結合は以下の順序で解釈します。

  1. 括弧
  2. NOT
  3. AND
  4. OR

論理式の結果代入

ABAPには値が真または偽のブールデータ型がないため、論理式を変数に代入することができません。

論理式の使用

論理式は、プログラムフローの制御に使用されます。

プログラミング基礎に投稿されました 続きを読む

 

このトピックでは、ABAP言語の定数と変数を取り上げて説明します。

ABAP定数は、CONSTANTS 命令を使用して宣言します。

CONSTANTS <name> TYPE <type> VALUE [<value> | IS INITIAL]

CONSTANS 命令の構文は、以下の例外を除いて DATA 命令とまったく同じです。

  • CONSTANTS命令では VALUE オプションを使用しなければなりません。
    VALUE オプションで指定した開始値をプログラムの実行中に変更することはできません。
  • XSTRINGS 、参照、内部テーブル、または内部テーブルを含む構造に対して定数を定義することはできません。

ABAP定数は、DATA命令を使用して宣言します。

DATAS <name> TYPE <type> VALUE [<value> | IS INITIAL]

完全に定義されたデータ型<type>の他に、もう1つのデータオブジェクト<obj>と同じデータ型の変数<f>を宣言することもできます。

データ型は定義される場所により、スコープが変わります。

  データ型変数定数
スコープグローバル(システムレベル)○※1××
グローバル(プログラムレベル)○※2○※2○※2
ローカル○※3○※3○※3
生存期間自動記憶域期間-○※4-
静的記憶域期間-○※5-
  • ※1
    ABAPディクショナリーで定義されているデータ型は、全てのABAPプログラムで参照することが可能です。
  • ※2
    ABAPプログラムの「グローバルデータ宣言部分」で定義されているデータ型、変数及び定数は、当プログラムの中でどこでも参照することができます。
  • ※3
    ABAPプログラムのプロシージャの中で定義されているデータ型、変数及び定数は、当プロシージャの内部でしか参照できません。
  • ※4
    プロシージャの中で定義された非statics変数の生存期間はプロシージャのの実行が完了するまでです。
  • ※5
    ABAPプログラムの「グローバルデータ宣言部分」で定義されている変数や、プロシージャの中で定義されたstatics変数の生存期間は、プログラムの実行開始から終了までです。

 

プログラミング基礎に投稿されました 続きを読む

このトピックでは、ABAP言語のデータ型を取り上げて説明します。

ABAP言語のデータ型階層を以下の図で示します。

組込みデータ型とも呼ばれます。 基本タイプは言語により事前定義されています。

カテゴリ初期項目長有効項目長初期値意味JAVAC#
数値I440整数intInt32(int)
F880浮動小数doubleDoubleクラス(double)
P81-1604ビットで一桁を表現し、最後の4ビットを使って符号と小数点を表現するBigDecimalクラスDecimal構造体
文字C11-65535’ … ’テキスト項目(英数字)StringクラスStringクラス(string)
D88'00000000'日付項目( 書式: YYYYMMDD)DateクラスDateTime構造体
N11-65535'0 … 0'テキスト項目(数字)StringクラスStringクラス(string)
T66'000000'時刻項目(書式: HHMMSS)TimeクラスDateTime構造体
バイトX11-65535'0 … 0'バイト項目--
XString0可変長--

参照タイプは、他のデータを参照するポイントのことです。

ABAPの複合タイプは構造体や内部テーブルがあります。typesコマンドより宣言することができます。

構造体

構造体とは,「いろいろな種類の互いに関連するデータをまとめて, 1つのかたまりにしたもの」です。 例えば、「コード、名称、単位、単価」などのデータを一品目分だけまとめて定義すれば、一つの構造体になります。

ABAPでは、構造体を構成する要素がコンポーネントと呼ばれています。 構造体の個別コンポーネントを参照するには、<structure name>-<component name>のように、構造名と要素名の間にハイフンを入れます。

内部テーブル

内部テーブルはABAP固有のデータ型であり、一言でいうと、メモリ上のデータベーステーブルのことです。

プログラミング基礎に投稿されました 続きを読む

非常に簡単に言うと、プログラムとは、区切り文字で区切られた一連のトークンです。 トークンとは、基本的な構文要素としてプログラム内で意味を持つテキストの最小単位であり、字句ともいいます。 トークンを組み合わせて、式や宣言や文を組み立てます。 文とは、プログラム内で実行可能なアルゴリズム動作を記述したものです。 式は、文の中に現れる構文単位で、1 つの値を表します。 宣言では、式や文の中で利用できる識別子(関数や変数の名前など)を定義し、必要に応じて識別子用のメモリを割り当てます。

このトピックでは、ABAP言語の文字集合を紹介し、以下のようなトークンを宣言するための構文を説明します。

  • 識別子
  • リテナル
  • 演算子
  • 区切文字
  • キーワード 
  • コメント

文字集合は,ソース・プログラムで使用可能か有効文字を定義します。 リリース 6.10 以降のABAPシステムは、ユニコード文字集合 とANSI文字集合が 両方ともサポートされるようになっております。

識別子は,次の項目の名前を表す文字シーケンスです。

  • 変数名
  • 定数名
  • 型名
  • サブルーチン名
  • クラス名
  • インタフェース名

識別子には,次の規則が適用されます。

  1. 長さが最大 30 文字です
  2. + . ,: ( ) を使うことができません
  3. すべて数字で構成することはできません

以下のようなリテナルがあります。

分類定義
文字列文字列リテラルは、一重の逆向き引用符 (`) に囲まれた文 字列であり、そのデータ型は 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-SOURCEABBREVIATEDABSABSTRACTACCEPT
ACCEPTINGACCORDINGACOSACTIVATIONACTUAL
ADDADD-CORRESPONDINGADJACENTAFTERALIASES
ALLALLOCATEANALYSISANALYZERAND
ANYAPPENDAPPENDAGEAPPENDINGAPPLICATION
ARCHIVEAREAARITHMETICASASCENDING
ASINASSERTASSIGNASSIGNEDASSIGNING
ATATANATTRIBUTESAUTHORITYAUTHORITY-CHECK
AVGBACKBACKGROUNDBACKUPBACKWARD
BADIBEFOREBEGINBETWEENBIG
BINARYBITBIT-ANDBIT-NOTBIT-OR
BIT-XORBLACKBLANKBLANKSBLOCK
BLOCKSBLUEBOUNDBOUNDARIESBOUNDS
BREAK-POINTBTBUFFERBYBYPASSING
BYTEBYTE-CABYTE-CNBYTE-COBYTE-CS
BYTE-NABYTE-NSBYTE-ORDERCCA
CALLCALLINGCASECASTINGCATCH
CEILCENTEREDCHAINCHAIN-INPUTCHAIN-REQUEST
CHANGECHANGINGCHAR-TO-HEXCHARACTERCHARLEN
CHECKCHECKBOXCIRCULARCLASSCLASS-CODING
CLASS-DATACLASS-EVENTSCLASS-METHODSCLASS-POOLCLEANUP
CLEARCLIENTCLIKECLOCKCLOSE
CNCOCODECODEPAGECODING
COL_BACKGROUNDCOL_GROUPCOL_HEADINGCOL_KEYCOL_NEGATIVE
COL_NORMALCOL_POSITIVECOL_TOTALCOLLECTCOLOR
COLUMNCOMMENTCOMMENTSCOMMITCOMMON
COMMUNICATIONCOMPARINGCOMPONENTCOMPONENTSCOMPRESSION
COMPUTECONCATENATECONDENSECONDITIONCONNECT
CONNECTIONCONSTANTSCONTEXTCONTEXTSCONTINUE
CONTROLCONTROLSCONVERSIONCONVERTCOPIES
COPYCORRESPONDINGCOSCOSHCOUNT
COUNTRYCOVERCPCPICREATE
CSCSEQUENCECURRENCYCURRENTCURSOR
CURSOR-SELECTIONCUSTOMER-FUNCTIONDDATADATABASE
DATAINFODATASETDATEDAYLIGHTDBMAXLEN
DD/MM/YYDD/MM/YYYYDDMMYYDEALLOCATEDECIMALS
DEFAULTDEFERREDDEFINEDEFININGDEFINITION
DELETEDELETINGDEMANDDEPARTMENTDESCENDING
DESCRIBEDESTINATIONDETAILDIALOGDIRECTORY
DISCONNECTDISPLAYDISPLAY-MODEDISTANCEDISTINCT
DIVDIVIDEDIVIDE-CORRESPONDINGDODUMMY
DUPLICATEDUPLICATESDURINGDYNAMICDYNPRO
EEDITEDITOR-CALLELSEELSEIF
ENABLEDENABLINGENCODINGENDEND-ENHANCEMENT-SECTION
END-LINESEND-OF-DEFINITIONEND-OF-FILEEND-OF-PAGEEND-OF-SELECTION
ENDATENDCASEENDCATCHENDCHAINENDCLASS
ENDDOENDENHANCEMENTENDEXECENDFORMENDFUNCTION
ENDIANENDIFENDINGENDINTERFACEENDLOOP
ENDMETHODENDMODULEENDONENDPROVIDEENDSELECT
ENDTRYENDWHILEENHANCEMENTENHANCEMENT-POINTENHANCEMENT-SECTION
ENHANCEMENTSENTRIESENTRYENVIRONMENTEQ
ERRORMESSAGEERRORSESCAPEESCAPINGEVENT
EVENTSEXCEPTIONEXCEPTION-TABLEEXCEPTIONSEXCLUDE
EXCLUDINGEXECEXECUTEEXISTSEXIT
EXIT-COMMANDEXPEXPANDEXPIRATIONEXPLICIT
EXPONENTEXPORTEXPORTINGEXTENDEDEXTENSION
EXTRACTFFETCHFIELDFIELD-GROUPS
FIELD-SYMBOLSFIELDSFILEFILTERFILTERS
FINALFINDFIRSTFIRST-LINEFIXED-POINT
FKEQFKGEFLOORFLUSHFONT
FORFORMFORMATFORWARDFOUND
FRACFRAMEFRAMESFREEFRIENDS
FROMFTOFUNCTIONFUNCTION-POOLGAPS
GEGENERATEGETGIVINGGKEQ
GKGEGLOBALGREENGROUPGROUPS
GTHANDLEHANDLERHASHEDHAVING
HEAD-LINESHEADERHEADERSHEADINGHELP-ID
HELP-REQUESTHIDEHIGHHINTHOLD
HOTSPOTIICONIDIDENTIFICATION
IDENTIFIERIDSIFIGNORINGIMMEDIATELY
IMPLEMENTATIONIMPLEMENTATIONSIMPORTIMPORTINGIN
INCLUDEINCLUDESINCLUDINGINCREMENTINDEX
INDEX-LINEINFOTYPESINHERITINGINITINITIAL
INITIALIZATIONINNERINOUTINPUTINSERT
INSTANCESINTENSIFIEDINTERFACEINTERFACE-POOLINTERFACES
INTERNALINTERVALSINTOINVERSEINVERTED-DATE
ISJOBJOINKEEPKEEPING
KERNELKEYKEYSKEYWORDSKIND
LANGUAGELASTLATELAYOUTLE
LEADINGLEAVELEFTLEFT-JUSTIFIEDLEGACY
LENGTHLEVELLEVELSLIKELINE
LINE-COUNTLINE-SELECTIONLINE-SIZELINEFEEDLINES
LISTLIST-PROCESSINGLISTBOXLITTLELOAD
LOAD-OF-PROGRAMLOCALLOCALELOGLOG-POINT
LOG10LOGFILELOOPLOWLOWER
LPILTMMAILMAIN
MAJOR-IDMARGINMARKMASKMATCH
MATCHCODEMAXMAXIMUMMEMORYMESSAGE
MESSAGE-IDMESSAGESMETHODMETHODSMIN
MINIMUMMINOR-IDMM/DD/YYMM/DD/YYYYMMDDYY
MODMODEMODIFMODIFIERMODIFY
MODULEMOVEMOVE-CORRESPONDINGMULTIPLYMULTIPLY-CORRESPONDING
NNANAMENAMETABNATIVE
NBNENESTINGNEWNEW-LINE
NEW-PAGENEW-SECTIONNEXTNONO-DISPLAY
NO-EXTENSIONNO-EXTENSIONSNO-GAPNO-GAPSNO-GROUPING
NO-HEADINGNO-SCROLLINGNO-SIGNNO-TITLENO-TOPOFPAGE
NO-ZERONODENODESNON-UNICODENON-UNIQUE
NOTNPNSNULLNUMBER
NUMERICNUMOFCHAROOBJECTOBJECTS
OBLIGATORYOCCURRENCEOCCURRENCESOCCURSOF
OFFOFFSETOLEONONLY
OPENOPTIONOPTIONALOPTIONSOR
ORDEROTHERSOUTOUTEROUTPUT
OUTPUT-LENGTHOVERFLOWOVERLAYPPACK
PACKAGEPADDINGPAGEPAGESPARAMETER
PARAMETER-TABLEPARAMETERSPARTPATTERNPERCENTAGE
PERFORMPERFORMINGPERSONPFPF-STATUS
PINKPLACESPOOLPOSITIONPRECOMPILED
PREFERREDPRESERVINGPRIMARYPRINTPRINT-CONTROL
PRIORITYPRIVATEPROCEDUREPROCESSPROGRAM
PROPERTYPROTECTEDPROVIDEPUBLICPUSHBUTTON
PUTQUEUE-ONLYQUICKINFORADIOBUTTONRAISE
RAISINGRANGERANGESREADREAD-ONLY
RECEIVERECEIVEDRECEIVERRECEIVINGRED
REDEFINITIONREFREFERENCEREFRESHREGEX
REJECTRENAMINGREPLACEREPLACEMENTREPLACING
REPORTREQUESTREQUESTEDRESERVERESET
RESOLUTIONRESPECTINGRESPONSIBLERESULTRESULTS
RETURNRETURNCODERETURNINGRFCRIGHT
RIGHT-JUSTIFIEDROLLBACKROUNDROWSRUN
SAPSAP-SPOOLSAVINGSCANSCREEN
SCROLLSCROLL-BOUNDARYSCROLLINGSEARCHSECONDS
SECTIONSELECTSELECT-OPTIONSSELECTIONSELECTION-SCREEN
SELECTION-SETSELECTION-SETSSELECTION-TABLESELECTIONSSEND
SEPARATESEPARATEDSETSHAREDSHIFT
SHORTDUMP-IDSIGNSIMPLESINSINGLE
SINHSIZESKIPSKIPPINGSMART
SOMESORTSORTABLESORTEDSOURCE
SPECIFIEDSPLITSPOOLSPOTSSQL
SQRTSTABLESTAMPSTANDARDSTART-OF-SELECTION
STARTINGSTATESTATEMENTSTATEMENTSSTATIC
STATICSSTATUSINFOSTEP-LOOPSTOPSTRING
STRLENSTRUCTURESTRUCTURESSUBKEYSUBMATCHES
SUBMITSUBROUTINESUBSCREENSUBSTRINGSUBTRACT
SUBTRACT-CORRESPONDINGSUFFIXSUMSUMMARYSUMMING
SUPPLIEDSUPPLYSUPPRESSSWITCHSWITCHSTATES
SYMBOLSYNCPOINTSSYNTAX-CHECKSYNTAX-TRACESYSTEM-CALL
SYSTEM-EXCEPTIONSSYSTEM-EXITTTABTABBED
TABLETABLESTABLEVIEWTABSTRIPTAN
TANHTASKTESTTESTINGTEXT
TEXTPOOLTHENTIMETIMESTITLE
TITLE-LINESTITLEBARTOTOKENIZATIONTOKENS
TOP-LINESTOP-OF-PAGETRACE-FILETRACE-TABLETRAILING
TRANSACTIONTRANSFERTRANSFORMATIONTRANSLATETRANSPORTING
TRMACTRUNCTRUNCATETRUNCATIONTRY
TYPETYPE-POOLTYPE-POOLSTYPESULINE
UNASSIGNUNDERUNICODEUNIQUEUNIT
UNIXUNPACKUNTILUPUPDATE
UPPERUSERUSER-COMMANDUSINGUTF-8
VALIDVALUEVALUE-REQUESTVALUESVARY
VARYINGVERIFICATION-MESSAGEVERSIONVIAVISIBLE
WAITWARNINGWHENWHENEVERWHERE
WHILEWIDTHWINDOWWINDOWSWITH
WITH-HEADINGWITH-TITLEWITHOUTWORDWORK
WRITEXXMLXSEQUENCEXSTRING
XSTRLENYELLOWYYMMDDZZONE

コメントは、ある記号から行末までをコメントとして扱う行コメントと、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>
ABAP開発に投稿されました 続きを読む

このトピックでは、ABAP開発のオブジェクト指向要素を取り上げて説明します。

 

プログラミングにおけるオブジェクト指向とは、いかのようなコンセプトでプログラムを構築する手法で。

  • プログラムをオブジェクトに分割して、オブジェクト間のコラボレーションによりアプリケーション機能を実現
  • オブジェクトはデータを内蔵しており、それをアクセスできる属性やメソッドをインタフェースとして外部に提供
  • オブジェクトは継承することにより、汎用化することができる

クラスとはデータとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したものです。 クラスはインスタンス化することができます。

インタフェースとは、クラスのアクセスインタフェースを明確に定義したものです。 インタフェースからインスタンスを作成することができません。

クラスは、ローカルクラスとグローバルクラスの2種類があります。

  • ローカルクラス
    ローカルクラスは、レポートプログラムやダイアログプログラムなど、個別プログラムの内部で実装されるクラスです。
    ローカルクラスは外部のプログラムに不可視です。
  • グローバルクラス
    グローバルクラスのソースコードはクラスビルダを使って記述し、システム全体のクラスライブラリに格納されます。
    グローバルクラスはどのプログラムからも使うことができます。

ローカルクラスとグローバルクラスはスコープが異なりますが、その以外の違いはとくにありません。

属性は、オブジェクトに関連付けられているデータに対するインタフェースです。 属性はクラスのインスタンスに作用するインスタンス属性と、クラスそのものに作用する静的属性があります。

メソッドは、クラスに関連付けられているサブルーチンです。大半のメソッドは、クラスのインスタンスに作用します。中には、クラスそのものに作用するメソッドもあります、これは静的メソッドと呼ばれます。

クラスをインスタンス化するには、CREATE OBJECT命令を使用します。

ABAP開発に投稿されました 続きを読む

このトピックでは、ABAP開発の構造化手法を取り上げて説明します。構造化手法はモジュール化とも呼ばれます。

 

ABAPプログラムの処理ロジックは処理ブロックで構成されます。

処理ブロックには、ABAP 実行システムによって外部プログラムから呼び出される処理ブロックと、ABAPプログラムの ABAP 命令による呼出が可能な処理ブロックの2種類があります。

ABAP命令による呼出が可能な処理ブロックは、プロシージャと呼ばれます。

カテゴリ処理ブロック呼出元ローカルデータ領域
画面制御ダイアログモジュールPBO、PAI
(個別画面)
イベントブロックPBO、PAI
(標準の選択、一覧画面)
プロシージャサブルーチン 
汎用モジュール 
メソッド 

処理ブロックは分離不可能な構文的モジュール化単位であり、他の処理ブロックを含むことはできません。

ダイアログモジュールは、画面の初期表示時やユーザがなんらかのアクションを起こした後に、ABAP実行環境(ダイアログプロセッサ) から、Dynno制御ロジックのPAI、PBOを通して、呼び出されます。

ダイアログモジュールは MODULE 命令によって導入され、ENDMODULE 命令によって終了します。

以下の図でダイアログモジュールの呼出イメージを示します。

ここのダイアログモジュールはcall dialogで呼ばれている「ダイアログモジュール」とは別物です。

call dialogで呼ばれている「ダイアログモジュール」はアプリケーションプログラムを通常の「Transaction」ではなく、呼出元のプログラムのSAP LUWの中に動く「dilalog」として呼び出すための名称というものです。

以下の図でダイアログモジュールの実装イメージを示します。

イベントブロックはTYPE 1(実行可能プログラム)の選択画面や一覧画面から呼び出される処理ブロックです。

サブルーチンは、主としてローカルなモジュール化で使用されます。一般に、サブルーチンは、そのサブルーチンが定義されているプログラムから呼び出されます。サブルーチンを使用して、プログラム内で繰り返し使用する機能を記述することができます。

サブルーチンは 全てのABAPプログラムで定義することができます。

汎用モジュールは、グローバルなモジュール化で使用され、常に別のログラムから呼び出されます。

汎用モジュールは汎用グループで定義する必要があり、任意のプログラムから呼び出すことができます。

汎用モジュールにより、データ交換の固定インタフェースが処理されます。たとえば、入力パラメータにデフォルトの値を割り当てることができます。また、このインタフェースでは例外処理もサポートしています。これによって、エラーを検出し、そのエラーを対処するため呼び出し元プログラムに返し、処理させることができます。

汎用モジュールは独自のメモリ領域を使用します。呼び出し元プログラムと汎用モジュールとが、共有メモリ領域を使ってデータ交換を行うことはできません。汎用モジュールインタフェースを使用しなければなりません。

ABAP開発に投稿されました 続きを読む

このトピックでは、ABAPプログラム実行時のメモリ構造を取り上げて説明します。 

サーバへログインすると、ユーザに1つの「ユーザセッション」が開かれます。 ユーザが同時に最大6つのウィンドウを開くとができます。これらのウィンドウはそれぞれ、アプリケーションサーバ上で共有メモリの専用領域を使用する「メインセッション」に対応しています。

メインセッションで起動した最初のアプリケーションプログラムによって、メインセッション内の内部セッションが開きます.

上記の図で示した通り、プリケーションプログラム(TYPE 1、TYPE M)が呼び出されるたびに、新しい内部セッションが作成されます。その他プログラムは新しい内部セッションを作成することがなく、必ず呼び出し元のアプリケーションプログラムの内部セッションで動作します。

ABAPプログラムの間にデータを共有できるメモリは、SAPメモリとABAPメモリの2種類がありまして、それぞれスコープが異なります。

  • SAPメモリ
    同じユーザセッション内にすべて可視です。別々のメインセッションで起動された各プログラムは同じSAPメモリを共有できます。
  • ABAPメモリ
    同じメインセッション内なら可視です。同じメインセッションで動作する各プログラムは同じABAPメモリを共有しています。

ABAP開発に投稿されました 続きを読む

このトピックでは、ABAPプログラムの構成を取り上げて説明します。


大きく分けるとABAPプログラムは、処理ロジックと各画面コンポーネントから構成されます。GUIをもっていないプログラムは、処理ロジックのみとなります。

SAPのドキュメントでは、処理ロジックのみをABAPプログラムと呼ぶことも多く見受けられます。

画面を持つABAPプログラムの構造を以下の図で示します。

以下の図ではABAPプログラムの処理ロジックの構造を示します。

  • プログラム導入部
    独立した ABAPプログラムは常に導入命令から始まります。導入命令はプログラムのタイプによって異なります。
  • グローバル宣言部
    すべての ABAP プログラムにおいて、プログラム導入部の後ろにグローバルデータ、クラス、および選択画面のための宣言部が続きますグローバルデータ、クラス、選択画面のための宣言部
  • 処理ブロック
    プログラムのソースコード内のグローバル宣言部の下には、任意の順序で ABAP プログラムの処理ブロックを列挙することができます.
    以下の下のタイプの処理ブロックが利用可能です。
    ●ダイアログモジュール (ローカルデータ領域なし)
    ●イベントブロック (ローカルデータ領域なし、2 つの例外あり)
    ●プロシージャ (メソッド、サブルーチン、汎用モジュール。独自のローカルデータ領域を使用)

画面を構成するコンポーネントはいかのようなものがあります。

  • Dynpro
  • GUIステータス
  • GUI表題
  • メッセージ
  • WebDynpro

それぞれ独立したオブジェクトとして存在します。

ABAP開発に投稿されました 続きを読む

SAPが標準で用意した各モジュールやアドオンとして開発された各アプリケーションは、すべてSAPのプログラムとして、アプリケーションサーバのワークプロセスに対して、 アプリケーションサーバ内で実行されます。

ABAPプログラムには以下のプログラムタイプがあります。

  • TYPE 1: 実行可能プログラム
  • TYPE M: モジュールプール
  • TYPE F: 汎用グループ
  • TYPE K: クラスプール
  • TYPE J: インタフェースプール
  • TYPE S: サブルーチンプール
  • TYPE T: タイププール
  • TYPE I: インクルードプログラム

WebDynproは、処理ロジックを記述するにクラスプールとインタフェースプールを利用してるため、 新たなプログラムタイプの追加はありません。

ABAPプログラムの概説は、以下のリンクからご参考くださ。