ABAP① モジュール・クラス

ABAPメニュー

ABAP
SAPã®ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’行ã†ãƒ„ール兼エディター。
メニューã«ã‚ˆã£ã¦ã¯ï¼¤ï¼¢æ“作ツール等もå¯èƒ½ã€‚
SE10 -ç§»é€ç®¡ç†
SE11 -ディクショナリ:DB登録
SE24 -クラスビルダ
SE16 -データブラウザ:DB照会
SE37 -汎用モジュールビルダ:汎用モジュール開発用
SE38 -ABAPエディタ:レãƒãƒ¼ãƒˆãƒ—ログラム開発用
SE80 -オブジェクトビルダ:画é¢ä½œæˆå«ã‚€é–‹ç™ºå…¨èˆ¬

/n~ セッション削除ã®ä¸Šã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ã
/o~ セッション維æŒã®ã¾ã¾ã€åˆ¥ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ã

・SE38(実行å¯èƒ½ãƒ—ログラム)

実行å¯èƒ½ãƒ—ログラムï¼ãƒ¬ãƒãƒ¼ãƒˆãƒ—ログラム

・基本

REPORT プログラムå.
DATA name TYPE string.
name = ‘Mr.!’
WRITE ‘Hello World’.
*命令を続ã‘ã‚‹å ´åˆã¯ã€Œ:ã€ã€ã€Œ,ã€ãŒå¿…è¦ã€‚
WRITE: ‘Hello World’, name.

・パラメーター

REPORT プログラムå.
  PARAMETERS prmText(20). *(1)入力画é¢ãŒè¡¨ç¤ºã•れる。
INITIALIZATION.
  prmText = ‘åˆæœŸå€¤’.   *(2)↑ã«åˆæœŸå€¤ãŒè¨­å®šã•れる。
START-OF-SELECTION.
  WRITE prmText.      *(3)↑(2)ã®å€¤ãŒè¡¨ç¤ºã•れる。

・サブルーãƒãƒ³

  ↑例3ã®ç¶šãã§â€¦
  *(1)↓サブルーãƒãƒ³(TESTROUTINEを呼ã³å‡ºã—)
  PERFORM TESTROUTINE.
  *(1)↓サブルーãƒãƒ³(TESTROUTINEを呼ã³å‡ºã—)
  PERFORM TESTROUTINE.

  *(2)サブルーãƒãƒ³ã‚’定義
  FORM TESTROUTINE
    USING PRM1
    CHANGING PRM2.
    ~
    WRITE:/ PRM1, PRM2.
  ENDFORM. ” TESTROUTINE

・実行å¯èƒ½ãƒ—ログラムã®å‘¼ã³å‡ºã—

  SUBMIT プログラムå.
  SUBMIT プログラムå WITH 引数
  SUBMIT プログラムå WITH 引数 VIA SELECTION-SCREEN.
  *呼ã³å‡ºã—ãŸãƒ—ログラムã®å‡¦ç†ãŒçµ‚ã‚ã‚‹ã¨ã€å‘¼ã³å‡ºã—å…ƒã«å‡¦ç†ãŒæˆ»ã‚‹ã€‚
  *AND RETURNãŒãªã„å ´åˆã€å…ˆãŒçµ‚ã‚ã‚‹ã¨å…ƒã‚‚終ã‚る。
  SUBMIT プログラムå ~ AND RETURN.

・SE37 -汎用モジュールビルダ

・汎用モジュール呼ã³å‡ºã—

REPORT プログラムå.
  DATA prmText TYPE C.

  *(3)登録済ã¿ã®æ±Žç”¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’呼ã³å‡ºã™
  CALL FUNCTION ‘モジュールå’
   *EXPORTINGã¯æ±Žç”¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«å¯¾ã—ã¦ã€‚
   汎用モジュールã‹ã‚‰è¦‹ã‚‹ã¨IMPORT
   EXPORTING
    PRMTEXT = prmText
   *(ã“ã“ãŒç´å¾—ã„ã‹ãªã„ãŒ)
   汎用モジュールã«ãŠã‘ã‚‹EXPORTã®å€¤(RTNTEXT)ã‚’IMPORTã—ã€prmTextã«ã‚»ãƒƒãƒˆã€‚
   IMPORT
    RTNTEXT = prmText
   EXCEPTIONS
    ERROR = 1
    OTHERS = 1
    .
    *↑ã“ã“ã§ã¾ã¨ã‚ã¦ãƒ”リオド

  *(4)↑(3)ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸæ™‚ã®å‡¦ç†
  IF SY-SUBRC <> 0.
   MESSAGE ID ‘SABAPDCU’ TYPE ‘E’ NUMBER 888
   WITH ‘エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚’.
  ENDIF
  *(5)↑(3)ã®å€¤ãŒè¡¨ç¤ºã•れる。
  WRITE prmText.

・汎用モジュール(基本)

・IMPORT
 パラメータåã€åž‹å®šç¾©ã€é–¢é€£åž‹ã€ãƒ‡ãƒ•ォルト値ã€å†…容説明 を設定。
 PRMTEXT TYPE STRING DEFAULT ‘åˆæœŸå€¤’

・EXPORT
 パラメータåã€åž‹å®šç¾©ã€é–¢é€£åž‹ã€å†…容説明 を設定。
 RTNTEXT TYPE STRING

・例外
 例外(åç§°)ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
 EX 例外ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚

・ソースコード
 FUNCTION モジュールå.
  IF PRMTEXT <> SPACE.
   *文字列連çµã€‚RTNTEXT = ‘(‘ & PRMTEXT & ‘)’
   CONCATENATE ‘(‘ PRMTEXT ‘)’ INTO RTNTEXT.
  ELSE.
   RAISE EX. *例外ã§å®šç¾©ã—ãŸä¾‹å¤–åç§°
  ENDIF.
 ENDFUNCTION.
 ※ã“ã®æ±Žç”¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’実行ã™ã‚‹ã¨EXPORT値(RTNTEXT)ãŒè¡¨ç¤ºã•れる。
  パラメータを”ã«ã™ã‚‹ã¨ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹ã®ã§ã€Œä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã€ã¨è¡¨ç¤ºã•れる。

・汎用モジュール(戻り値:テーブル)

 パラメータåã€åž‹å®šç¾©ã€é–¢é€£åž‹ãƒ»ãƒ»ãƒ»ã‚’設定。
 RTNTABLE LIKE å®šç¾©æ¸ˆã¿æ§‹é€ ä½“(テーブル型)
 *â†‘ãƒ‡ã‚£ã‚¯ã‚·ãƒ§ãƒŠãƒªã§æ§‹é€ ä½“を作ã£ã¦ãŠã。
 *ã“ã“ã§ã¯SCARRテーブルã®ãƒ•ィールド1~3ã‚’æŒã¤æ§‹é€ ä½“ã¨ã™ã‚‹ã€‚

・ソースコード
 FUNCTION モジュールå.
  DATA:
   MyTable LIKE TABLE OF SCARR,
   MyRow LIKE SCARR.
  SELECT
   フィールド1
   フィールド1
   フィールド3
  INTO TABLE MyTable
  FROM SCARR.
  LOOP AT MyTable INTO MyRow.
    *返り値(テーブル型変数)ã«è¡Œã‚’追加
    APPEND MyRow TO RTNTABLE.
  ENDLOOP.
 ENDFUNCTION.
 ※ã“ã®æ±Žç”¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’実行ã™ã‚‹ã¨è¿”り値(RTNTABLE)ãŒå¾—られる。
  汎用モジュールを呼ã³å‡ºã—ãŸãƒ—ログラムã‹ã‚‰RTNTABLEを利用å¯èƒ½ã€‚
  SELECTçµæžœãŒ0ä»¶ã®å ´åˆã¯RTNTABLE.Rows.Count=0ç­‰ã€0ä»¶ã®ãƒ†ãƒ¼ãƒ–ルãŒè¿”ã•れる。

・SE24 -クラスビルダ

・クラス

 ローカルクラス(外部プログラムã‹ã‚‰å‚ç…§ä¸å¯)
 グローãƒãƒ«ã‚¯ãƒ©ã‚¹(外部~å‚ç…§å¯)
 *インスタンス化
 DATA: インスタンスå TYPE REF TO クラスå.
 CREATE OBJECT インスタンスå.
 *属性(プロパティ)æ“作
 インスタンスå->属性å = ~.
 *メソッド呼ã³å‡ºã—
 CALL METHOD インスタンスå->メソッドå
  EXPORTING
   引数 = ~
  RECEIVING
   戻り値 = ~
   .
 *メソッド呼ã³å‡ºã—çœç•¥å½¢
 インスタンスå->メソッドå
  (
   EXPORTING
    引数 = ~
   RECEIVING
    戻り値 = ~
  ).
 *æ›´ã«çœç•¥
 ~ = インスタンスå->メソッドå(~)

 *エラークラスを利用ã—ãŸä¾‹å¤–処ç†
 TRY.
 
  * CX_ROOTクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
  DATA: e TYPE REF TO CX_ROOT.
  DATA: i TYPE I.
  DATA: t TYPE.
  i = ‘a’.
 CATCH CX_SY_CONVERSION_NO_NUMBER INTO e.
  *数値エラー用例外処ç†
  t = e->get_text( ).
  WRITE:/ e->kernel_errid, t.
  ※「CONVERT_NO_NUMBER 引数aを数値ã¨ã—ã¦è§£é‡ˆã§ãã¾ã›ã‚“ã€ã¨è¡¨ç¤ºã•れる
 CATCH CX_ROOT INTO e.
  *↑ã®ä¾‹å¤–処ç†ã«å¼•ã£ã‹ã‹ã‚‰ãªã‹ã£ãŸæ™‚用。
  ~
 ENDTRY.

Follow me!

å‰ã®è¨˜äº‹

SAP