ERP Business Express- 過労死する前に読む本 Unlimited会員なら無料


検索


検索対象資料
R/3-ABAP-業務用語:英数
R/3-ABAP-業務用語:ア
R/3-ABAP-業務用語:カ
R/3-ABAP-業務用語:サ
R/3-ABAP-業務用語:タ
R/3-ABAP-業務用語:ナ
R/3-ABAP-業務用語:ハ
R/3-ABAP-業務用語:マ
R/3-ABAP-業務用語:ヤ
R/3-ABAP-業務用語:ラ
R/3-ABAP-業務用語:ワ

R/3-ABAP-業務
用語集全件


旧検索機能


追加資料

調査
技術
業務




R/3案件情報

・非常識なメルマガ(廃刊)




質問掲示板
過去ログ倉庫
erp-sap.com 解説書



リンク
ABAPヘルプ
SAP ABAP Programming

その他リンク

相互リンクただ今受付中!!

スマホ対応しました。縦横どちらでもご利用いただけます。( )

掲示板
スレッド:12  ABAPサンプルコード[abap]
最新30件表示 全件表示
3  時間測定  名無しさん  2005-10-02 21:40:19 
* ---- ログ出力用 日付、時間
TYPES:
     BEGIN OF timebox,
       line     TYPE p,        "行
       name(30) TYPE c,        "ログコメント
       date     LIKE sy-datum, "日付
       time     LIKE sy-uzeit, "時間
       mtime    TYPE i,        "マイクロ秒
     END OF timebox.

* 開始日時退避
  w_datum_start  =  sy-datum.          "APサーバ日付
  w_uzeit_start  =  sy-uzeit.          "APサーバ時刻

*---------------------------------------------------------------------*
* 時間をログに記録 2001-05-08 追加
  PERFORM log_rec USING '開始日時          '
                        w_datum_start w_uzeit_start.
*---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  LOG_REC
*&---------------------------------------------------------------------*
*       グローバル内部テーブルに現在の時刻をログに残す
*----------------------------------------------------------------------*
*       --> CHECK_POINT_NAME チェックポイントの名前
*----------------------------------------------------------------------*
FORM log_rec  USING value(check_point_name)
                    value(p_datum)
                    value(p_uzeit)
.

  CHECK  w_info-ck_timelog  =  'X'.

  s_timelog-line = c_cnt-line.
  s_timelog-name = check_point_name.
  s_timelog-date = p_datum.
  s_timelog-time = p_uzeit.
  GET RUN TIME FIELD s_timelog-mtime.

  APPEND s_timelog TO t_timelog.

ENDFORM.                    " LOG_REC

*&---------------------------------------------------------------------
*&      Form  LOG_OUTPUT
*&---------------------------------------------------------------------
*       ログを出力する
*----------------------------------------------------------------------
FORM log_output.

  DATA: w_timelog LIKE s_timelog.

  CHECK  w_info-ck_timelog  =  'X'.

  CLEAR w_timelog.
  LOOP AT t_timelog INTO w_timelog.
    WRITE: '     ', w_timelog-name.
    WRITE: ':',     w_timelog-date.
    WRITE: ':',     w_timelog-time.
    WRITE: ':',     w_timelog-mtime,'(マイクロ秒)'.
    WRITE:/.
  ENDLOOP.

ENDFORM.                    " LOG_OUTPUT


4  カラー設定  名無しさん  2005-10-02 21:41:57 
  FORMAT COLOR 4 ON INTENSIFIED.
 FORMAT COLOR 4 ON INTENSIFIED.
 FORMAT COLOR OFF.
 FORMAT COLOR 2 ON INTENSIFIED.
   FORMAT COLOR 7 INTENSIFIED OFF.
   FORMAT COLOR OFF.
     FORMAT COLOR 3 ON INTENSIFIED.
     FORMAT COLOR 3 ON INTENSIFIED.
 FORMAT COLOR OFF.
       WK1_N_FORMAT                  = ' '
       WK1_T_FORMAT                  = ' '
***       WK1_N_FORMAT                  = ' '
***       WK1_T_FORMAT                  = ' '


5  エラーメッセージタイプとコミットとロール  名無しさん  2005-10-02 21:44:10 
メッセージタイプ→処理
X→ROLLBACK
A→ROLLBACK
E→COMMIT
S→COMMIT
I→COMMIT
W→COMMIT



6  実行時間をマイクロ秒で測定  名無しさん  2005-10-03 14:48:14 
*----------------------------------------------------------------------*
* タイトル:実行時間をマイクロ秒で測定する
*----------------------------------------------------------------------*
*
* 記述例) GET RUN TIME FIELD I_FIELD
* I_FIELD はI型でなければなりません。
*
* I_FIELD にマイクロ秒で値が代入されます。(初回実行時は0)
*---------------------------------------------------------------------*
* ---- ログ出力用 日付、時間
TYPES:
     BEGIN OF TIMEBOX,
       DATE     LIKE SY-DATUM, "日付
       TIME     LIKE SY-UZEIT, "時間
       MTIME    TYPE I,        "マイクロ秒
       NAME(40) TYPE C,        "ログコメント
     END OF TIMEBOX.

* ---- ログ出力用 データ宣言
DATA:
    T_LOGTIME TYPE TABLE OF TIMEBOX,
    S_LOGTIME TYPE TIMEBOX.

* ---- ログ出力用初期化
CLEAR:
    T_LOGTIME,
    S_LOGTIME.

*---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  LOG_REC
*&---------------------------------------------------------------------*
*       グローバル内部テーブルに現在の時刻をログに残す
*----------------------------------------------------------------------*
*       --> CHECK_POINT_NAME チェックポイントの名前
*----------------------------------------------------------------------*
FORM LOG_REC  USING VALUE(CHECK_POINT_NAME).

  S_LOGTIME-DATE = SY-DATUM.
  S_LOGTIME-TIME = SY-UZEIT.
  S_LOGTIME-NAME = CHECK_POINT_NAME.
  GET RUN TIME FIELD S_LOGTIME-MTIME.

  APPEND S_LOGTIME TO T_LOGTIME.

ENDFORM.                    " LOG_REC
*&---------------------------------------------------------------------*
*&      Form  LOG_OUTPUT
*&---------------------------------------------------------------------*
*       ログを出力する
*----------------------------------------------------------------------*
FORM LOG_OUTPUT.

  DATA: W_LOGTIME LIKE S_LOGTIME.
  clear W_LOGTIME.

  LOOP AT T_LOGTIME INTO W_LOGTIME.
    WRITE: '     ', W_LOGTIME-NAME.
    WRITE: ':',     W_LOGTIME-DATE.
    WRITE: ':',     W_LOGTIME-TIME.
    WRITE: ':',     W_LOGTIME-MTIME,'(マイクロ秒)'.
    WRITE:/.
  ENDLOOP.

ENDFORM.                    " LOG_OUTPUT


7  ABAP Memory  名無しさん  2005-10-03 14:54:38 
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_FROM_ABAPMEMORY
*&---------------------------------------------------------------------*
*       ABAPメモリ取得処理
*----------------------------------------------------------------------*
FORM GET_DATA_FROM_ABAPMEMORY.
  IMPORT F_FIRST
         MODE
         C_FILENAME
         T_LOG
         T_ERRLOG
         T_FILE
         F_STOP
         FROM MEMORY ID 'ZAM_MZFIN04_MODE'.
ENDFORM.                    " GET_DATA_FROM_ABAPMEMORY
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_TO_ABAPMEMORY
*&---------------------------------------------------------------------*
*       ABAPメモリ格納処理
*----------------------------------------------------------------------*
FORM PUT_DATA_TO_ABAPMEMORY.
  EXPORT F_FIRST
         MODE
         C_FILENAME
         T_LOG
         T_ERRLOG
         T_FILE
         F_STOP
         TO MEMORY ID 'ZAM_MZFIN04_MODE'.
ENDFORM.                    " PUT_DATA_TO_ABAPMEMORY


8  数字チェック  名無しさん  2005-10-03 14:55:36 
*&---------------------------------------------------------------------*
*&      Form  Z_ISNUMERIC
*&---------------------------------------------------------------------*
*       処理概要:数字チェック
*----------------------------------------------------------------------*
* ---- 呼び出し方(例)
*  PERFORM  Z_ISNUMERIC  USING        項目1
*                        CANGING      項目2.
* ---- I/O関係
*      --> p_in_data    入力データ(1セル)
*       c_loop.

    x_in_data = p_in_data+c_loop(1).

    IF  < '30' OR  > '39'.
      p_ret = 4.
      EXIT.
    ENDIF.

    c_loop = c_loop + 1.

  ENDWHILE.

  p_ret = 0.

ENDFORM.                                                 " Z_ISNUMERIC

*======================================================================*


9  数字チェッ  名無しさん  2005-10-03 14:56:16  。。。

10  全角チェック(全角のみ可)  名無しさん  2005-10-03 14:56:37 
*&---------------------------------------------------------------------*
*&      Form  check02
*&---------------------------------------------------------------------*
*       処理概要:全角チェック(全角のみ可)
*----------------------------------------------------------------------*
* ---- 呼び出し方(例)
*  PERFORM  check02  USING        w_in-field07 '施策区分名'.
*
* ---- I/O関係
*      --> p_in_data    入力データ(1セル)
*      --> p_col_data   項目名
*----------------------------------------------------------------------*
* ---- コメント
*  全角第一水準、第2水準、外字を許可。それ以外の文字はすべてエラー
* とする。ここでは文字コードは16進で「81〜9F,E0〜FF」をNGとしている。
* よって、半角文字はすべてNGとなる。
* また、この処理ではフィールドシンボルを使う必要がある。
*----------------------------------------------------------------------*
FORM check02 USING
                     value(p_in_data)   "入力データ(セル)
                     value(p_col_data). "項目名

  DATA: p_in_data_size TYPE i, "入力セルデータサイズ格納
        x_in_data      TYPE c, "入力データ1バイトごとの文字コード格納
        c_loop         TYPE i. "ループカウンタ

* 未入力なら処理をしない-----------------------------------------------*
  IF p_in_data IS INITIAL.
    EXIT.
  ENDIF.
*----------------------------------------------------------------------*

  FIELD-SYMBOLS  TYPE x.
  ASSIGN x_in_data TO  CASTING TYPE x.

* 入力文字サイズ取得
  p_in_data_size = strlen( p_in_data ).

* 先頭から2バイトずつループ
  CLEAR c_loop.
  WHILE p_in_data_size > c_loop.

    x_in_data = p_in_data+c_loop(1) .

*   全角以外はエラー
    IF (  >= '81' AND  = 'E0' AND  = 'E0' AND                        

11  半角チェック(半角英数記号のみ可)  名無しさん  2005-10-03 14:57:17 
*&---------------------------------------------------------------------*
*&      Form  check03
*&---------------------------------------------------------------------*
*       処理概要:半角チェック(半角英数記号のみ可)
*----------------------------------------------------------------------*
* ---- 呼び出し方(例)
*  PERFORM  check03  USING     data1 data2.
* ---- I/O関係
*      --> p_in_data    入力データ(1セル)
*      --> p_col_data   項目名
*----------------------------------------------------------------------*
* ---- コメント
*
* 半角カナと全角をNGとする。基本的にバイト単位で処理するものは、
* フィールドシンボルは必須となる。
*
* ---- 文字コード16進説明
*    「A1〜DF」が半角カナ
*    「20」が半角スペース
*    「81〜9F,E0〜EF」が全角
*----------------------------------------------------------------------*
FORM check03 USING
                     value(p_in_data)
                     value(p_col_data).

  DATA: p_in_data_size TYPE i, "入力セルデータサイズ格納
        x_in_data      TYPE c, "入力データ1バイトごとの文字コード格納
        c_loop         TYPE i. "ループカウンタ

* 未入力なら処理をしない-----------------------------------------------*
  IF p_in_data IS INITIAL.
    EXIT.
  ENDIF.
*----------------------------------------------------------------------*

  FIELD-SYMBOLS  TYPE x.
  ASSIGN x_in_data TO  CASTING TYPE x.

* 入力文字サイズ取得
  p_in_data_size = strlen( p_in_data ).

  CLEAR c_loop.
  WHILE p_in_data_size > c_loop.

    x_in_data = p_in_data+c_loop(1) .

*   半角カナはエラー
    IF  >= 'A1' AND  = '81' AND  = 'E0' AND                        

12  必須入力チェック  名無しさん  2005-10-03 14:58:03 
*&---------------------------------------------------------------------*
*&      Form  check01
*&---------------------------------------------------------------------*
*       必須入力チェック
*----------------------------------------------------------------------*
* ---- 呼び出し方(例)
*  PERFORM  check01  USING        w_in-field01 '項目名'.
* ---- IO
*      --> p_in_data    入力データ(1セル)
*      --> p_col_data   項目名
*----------------------------------------------------------------------*
* ---- コメント
* 入力されたデータが初期値ならエラーとする処理例
*
*----------------------------------------------------------------------*
FORM check01 USING
                     value(p_in_data)   "入力データ(セル)
                     value(p_col_data). "項目名

* 初期値ならエラー
  IF p_in_data IS INITIAL.
    c_er_chk = c_er_chk + 1.            "チェックエラーカウンタ+1
    CONCATENATE w_er-str_area p_col_data ':入力必須 '
           INTO w_er-str_area.
  ENDIF.

ENDFORM.                                                    " check01
*----------------------------------------------------------------------*




13  桁数(可変長)チェック  名無しさん  2005-10-03 14:59:18 
*&---------------------------------------------------------------------*
*&      Form  check04
*&---------------------------------------------------------------------*
*       処理概要:桁数(可変長)チェック
*----------------------------------------------------------------------*
* ---- 呼び出し方(例)
*  PERFORM  check04  USING     data1 data2 max_strlen.
* ---- I/O関係
*      --> p_in_data    入力データ(1セル)
*      --> p_col_data   項目名
*      --> p_col_max    最大文字数
*----------------------------------------------------------------------*
* ---- コメント
* 引数の最大文字数で桁数を判断し、文字数の桁数をチェックする。
* 最大文字数以内であればOKとする。
* この最大文字数に数字以外の文字が混入すると実行エラーとなる
* 
*----------------------------------------------------------------------*
FORM check04 USING
                     value(p_in_data)   "入力データ(セル)
                     value(p_col_data)  "項目名
                     value(p_col_max).  "最大バイト数

  DATA : keta(4) TYPE p.                "桁数

* 未入力なら処理をしない-----------------------------------------------*
  IF p_in_data IS INITIAL.
    EXIT.
  ENDIF.
*----------------------------------------------------------------------*

  keta = strlen( p_in_data ).

  IF keta > p_col_max.
    c_er_chk = c_er_chk + 1. "チェックエラーカウンタ+1
    CONCATENATE w_er-str_area p_col_data ':桁数あふれ '
           INTO w_er-str_area.
  ENDIF.

ENDFORM.                                                    " check04



14  桁数チェック(固定長)  名無しさん  2005-10-03 14:59:51 
*&---------------------------------------------------------------------*
*&      Form  check05
*&---------------------------------------------------------------------*
*       処理概要:桁数チェック(固定長)  
*----------------------------------------------------------------------*
* ---- 呼び出し方(例)
*  PERFORM  check05  USING        項目1 項目2 項目3.
* ---- I/O関係
*      -->P_IN_DATA   入力データ(1セル)
*      -->P_COL_DATA  項目名
*      -->P_COL_MAX   文字列のバイト数指定(固定長)
*----------------------------------------------------------------------*
* ---- コメント
* 文字列のサイズが指定されたものと同じものだけをOKとする。
*
*----------------------------------------------------------------------*

FORM check05 USING
                     value(p_in_data)   "入力データ(セル)
                     value(p_col_data) "項目名
                     value(p_col_max). "バイト数
  DATA : keta(4) TYPE p."桁数

* 未入力なら処理をしない-----------------------------------------------*
  IF p_in_data IS INITIAL.
    EXIT.
  ENDIF.

* 桁数チェック処理-----------------------------------------------------*

  CLEAR keta. "桁数クリア
  keta = strlen( p_in_data ).

  IF keta = p_col_max."エラー無しOK
    EXIT.             "終了

  ELSEIF keta < p_col_max. "桁数不足
    c_er_chk = c_er_chk + 1.
*   エラーメッセージを出力
    CONCATENATE w_er-str_area p_col_data ':桁数不足 '
           INTO w_er-str_area .


  ELSEIF keta > p_col_max. "桁数あふれ

    c_er_chk = c_er_chk + 1.
    エラーメッセージを出力
    CONCATENATE w_er-str_area p_col_data ':桁数あふれ '
           INTO w_er-str_area .


  ELSE.                    "例外
    c_er_chk = c_er_chk + 1.
*   エラーメッセージを出力
    CONCATENATE w_er-str_area p_col_data ':例外エラー '
           INTO w_er-str_area .
  ENDIF.

ENDFORM.                                                    " check05




 最大書込み件数に到達しました。新しいスレをたてて下さい。

SAP(Japan)
SAP(Germany)SAP(China)
ABAPヘルプ(4.6C)ABAPヘルプ(Ent)SAP Developer Network