SAPデータ抽出ガイド

このガイドは、SAP ERPテーブルからデータを抽出し、mindzieによるプロセスマイニング分析のためにCSVファイルにエクスポートする方法を説明します。


[重要] 表示名ではなく技術フィールド名を使用すること

要件 SAPデータをエクスポートする際は、元のデータベースの列名(EBELNEBELPAEDATなどの技術フィールド名)を必ず使用し、「購買伝票」「項目」「作成日」などの表示名や説明は使用しないでください。

なぜ重要か:

  • 表示名は言語やSAP設定により異なる
  • 技術フィールド名は全てのSAPシステムで一貫している
  • 技術フィールド名が一致しないとテーブル結合ができない - 例えば、EKKO(ヘッダー)をEKPO(明細)に結合するには両方のファイルでEBELNが必要
  • mindzieのデータ変換は標準SAPフィールド名に依存している

SE16Nで技術名を表示する方法:

  1. メニューの 設定 -> 表示 に移動
  2. 「列説明」または「説明を表示」のチェックを外す
  3. エクスポートしたヘッダー行がEBELN|BUKRS|BSTYP|AEDATのような技術名であることを確認する。購買伝票|会社コード|伝票種別|作成日ではないこと。
正しいヘッダー(技術名) 間違ったヘッダー(表示名)
EBELN\|BUKRS\|BSTYP\|AEDAT 購買伝票\|会社コード\|伝票種別\|作成日

表示名でエクスポートすると、データを処理できず再抽出が必要になります。


はじめに

アクセス権の確認

作業を開始する前に以下を確認してください:

  • SAP GUIがインストール・設定されている
  • 有効なSAPログイン資格情報がある
  • 必要なテーブルへの読み取り権限がある(ITチームに確認可)
  • エクスポートファイルを保存する十分なローカルディスク空き容量がある
  • 抽出するテーブル一覧(mindzieから提供される)

データ要件の理解

mindzieから提供された抽出要件ドキュメントを確認してください。内容は以下の通りです:

  • 抽出対象テーブル(例:EKKO、EKPO、BKPF、BSEG)
  • 必要な日付範囲
  • 適用する特定のフィルター
  • 予想データ量

抽出計画の立案

データ量 推奨アプローチ
100,000行未満 SE16Nからの直接エクスポート
100,000~500,000行 日付フィルターでのエクスポート、必要に応じて分割
500,000行超 バックグラウンド処理または日付範囲ごとの分割

データエクスポート用トランザクションコード

SAPにはテーブルデータを閲覧・エクスポートするための複数のトランザクションがあります:

トランザクション 名称 使いどころ
SE16N 一般テーブル表示 ほとんどの抽出(推奨)
SE16 データブラウザ 単一テーブルの簡単なエクスポート
SQVI クイックビューア 複数テーブルの結合
SE37 ファンクションビルダー RFC_READ_TABLE(プログラム的手法)

推奨: 大半の抽出はSE16Nを使用してください。機能性と使いやすさのバランスが最適です。


方法1:SE16Nエクスポート(推奨)

SE16N(一般テーブル表示)はSAPテーブルデータを抽出する最適な方法です。

ステップ1:SE16Nにアクセスする

  1. SAP GUIにログイン
  2. 画面左上のコマンド欄に SE16N と入力
  3. Enter キーを押す

ステップ2:テーブル名の入力

  1. 「テーブル」フィールドにテーブル名を入力(例:EKKO
  2. Enter キーまたは 実行 ボタンを押す

ステップ3:表示設定の調整(重要)

全データ抽出のために実行前に設定を調整してください:

  1. メニューから 設定 -> 表示 に移動
  2. 「最大ヒット数」を高い数値(例:999999999)に設定
  3. 「リスト幅」を最大の1023に設定し、全列を表示

または、ツールバーの設定ボタンから行うことも可能です。

重要な設定:

最大ヒット数: 999999999
リスト幅: 1023

ステップ4:表示するフィールドを選択

  1. フィールドボタンをクリックするか、メニューの 編集 -> フィールド
  2. 必要な全フィールドを選択(または完全抽出の場合はすべて選択
  3. Enter で確定

ヒント: プロセスマイニングのため、特別な指示がない限り全フィールドを選択してください。mindzieが必要な項目をフィルターします。

ステップ5:フィルターを適用(必要に応じて)

日付フィルターが必要な場合:

  1. 日付フィールド(例:AEDAT、ERDAT、BUDAT)を選択
  2. 日付範囲を YYYYMMDD 形式で入力
例:2023年~2024年のデータフィルター
AEDAT: [20230101] から [20241231]

ステップ6:クエリを実行

  1. F8 キーを押すか 実行 ボタンをクリック
  2. 結果が表示されるまで待つ(大きなテーブルは時間がかかる場合あり)

ステップ7:スプレッドシート/CSVにエクスポート

オプションA:エクスポートアイコンを使用

  1. ツールバーのダウンロードアイコン(下向き矢印がトレイに入る形)を探す
  2. クリックしてエクスポートオプションを開く
  3. スプレッドシートを選択

オプションB:キーボードショートカット

  1. Shift + F8 または Ctrl + Shift + F7 を押す
  2. スプレッドシートオプションを選択

オプションC:メニューからエクスポート

  1. メニューから:リスト -> エクスポート -> スプレッドシート
  2. または:システム -> リスト -> 保存 -> ローカルファイル

ステップ8:エクスポート形式を選択

形式ダイアログが表示されたら:

形式 拡張子 使用タイミング
テキスト(タブ区切り) .txt 大規模データに最適 - mindzie推奨
スプレッドシート(XLSX) .xlsx 小規模データ、Excel互換性あり
未変換 .txt 生データ。全書式を保持

mindzieには「テキスト(タブ区切り)」または「未変換」を選択してください。

ステップ9:ファイルの保存

  1. ローカルドライブの保存場所を指定
  2. 名前付け規則:TableName_YYYYMMDD.txt
    • 例:EKKO_20240315.txt
  3. 保存 をクリック

ステップ10:エクスポートを確認

  1. テキストエディタ(Notepad++、VS Code - Excelは不可)でファイルを開く
  2. 確認事項:
    • ヘッダー行が存在する
    • データ行が完全に表示されている
    • 列の切り捨てがない
    • レコード数が期待値と一致

方法2:SE16エクスポート(代替)

SE16(データブラウザ)はシンプルですが制限が多いです。

手順

  1. トランザクションに SE16 を入力
  2. テーブル名を入力してEnter
  3. 選択条件(日付、フィルター等)を設定
  4. 重要: 「出力リストの幅」を 1023 に変更
  5. 実行 (F8)
  6. エクスポートは:編集 -> ダウンロード -> スプレッドシート

SE16の制限

  • 最大1024文字幅(幅広テーブルは切り捨てられる)
  • SE16Nに比べて行数制限が低い
  • 大量データでシステムパフォーマンスに影響あり

方法3:SQVIクイックビュー(複雑なクエリ用)

複数テーブルの結合やカスタムクエリ作成時にSQVIを使用します。

SQVIを使う場合

  • マスターデータとトランザクションデータの結合
  • フィールド選択をカスタマイズ
  • 複雑なフィルターロジックの適用

基本的なSQVI手順

  1. SQVI トランザクションを入力
  2. 新規クイックビューを作成
  3. 基本テーブルと結合テーブルを選択
  4. フィールドとフィルターを定義
  5. 実行して結果をエクスポート

注: SQVIは高度なSAP知識が必要です。複雑なクエリにはSAP Basisチームまたはmindzieサポートへご相談ください。


エクスポート形式オプション

SAPで利用可能な形式

形式 説明 長所 短所
未変換 パイプ区切りの生テキスト 最速、全データ保持 変換が必要
テキスト(タブ区切り) タブ区切り値 大容量に適する Excelのタブ処理注意
スプレッドシート Excel形式(XLS/XLSX) Excelで直接開ける 行数制限、書式の問題
リッチテキスト RTF形式 書式保持 処理が遅い、大容量ファイル
HTML ウェブ形式 ブラウザで閲覧可能 分析には不向き

mindzie推奨形式

主な選択肢: テキスト(タブ区切り)(.txt)

  • 全データサイズに対応
  • 行制限なし
  • データの完全性を保持

代替: 未変換(.txt)

  • 大規模データに最適
  • パイプ(|)区切り
  • 開く時に区切り文字を指定する必要あり

タブ区切りをCSVに変換する方法

本当のCSV形式が必要な場合:

  1. Excelで.txtファイルを開く:

    • ファイル -> 開く -> 対象の.txtファイルを選択
    • ウィザードで「区切り記号付き」を選択
    • 区切り文字に「タブ」を指定
    • ウィザードを完了
  2. CSVとして保存:

    • ファイル -> 名前を付けて保存
    • 「CSV(カンマ区切り)」を選択
    • UTF-8エンコードがあれば使用

またはテキストエディタでタブをカンマに置換も可能。


大量データの取り扱い

大量データの目安

  • クエリの実行に5分以上かかる
  • 「最大ヒット数に達しました」警告が表示される
  • エクスポートが失敗またはタイムアウトする
  • ファイルサイズが500MBを超える

対策1:日付範囲による分割

日付範囲ごとに抽出を分割:

バッチ1: AEDAT 20230101~20230630 -> EKKO_2023H1.txt
バッチ2: AEDAT 20230701~20231231 -> EKKO_2023H2.txt
バッチ3: AEDAT 20240101~20240630 -> EKKO_2024H1.txt

その後、ヘッダー行は1回だけにしてファイルを統合。

対策2:バックグラウンド処理(SE16)

非常に大きなテーブルの場合:

  1. SE16で選択条件を入力
  2. メニューの プログラム -> バックグラウンド処理で実行(またはF9)
  3. バックグラウンド印刷ダイアログで:
    • 「すぐに印刷」をオフ
    • 「出力後に削除」をオフ
  4. ジョブを「即時」に保存
  5. トランザクション SM37 でジョブを監視
  6. 完了後、スプールをローカルファイルに保存:
    • システム -> リスト -> 保存 -> ローカルファイル

対策3:フィールド削減

全項目が不要な場合:

  1. 「すべて選択」ではなく、必要なフィールドのみ選択
  2. 抽出要件で指定されたフィールドに絞る
  3. ファイルサイズとエクスポート時間が削減できる

対策4:会社コード/プラントフィルター

組織単位でフィルター可能な場合:

BUKRS(会社コード):[1000]
WERKS(プラント):[P001]

各単位で分割して抽出し、後で結合する。


mindzie用CSVフォーマット要件

ファイル仕様

要件
エンコーディング UTF-8
区切り文字 カンマ(,)、タブ、またはパイプ(|)
テキスト区切り文字 ダブルクォーテーション(")
ヘッダー行 必須(1行目)
日付形式 YYYYMMDD または YYYY-MM-DD
時刻形式 HHMMSS または HH:MM:SS

ファイル命名規則

TableName_YYYYMMDD.csv

例:

  • EKKO_20240315.csv
  • BKPF_20240315.csv
  • CDPOS_20240315.csv

特殊文字の取り扱い

SAPは特殊文字をエクスポートする場合があります。注意点:

文字 問題 対応策
テキスト内のカンマ CSV構造の破壊 テキストを必ず引用符で囲む
改行 偽の行を作る スペースに置換
ドイツ語ウムラウト エンコーディング問題 UTF-8エンコードを使用
通貨記号 表示問題 そのまま保持。mindzieが扱う

よくある問題と解決策

問題:「最大エントリー数に達しました」

原因: デフォルトの行数上限に到達

解決策:

  1. 設定 -> ユーザーパラメータで「最大ヒット数」を増加
  2. または日付フィルターで絞り込み

問題:列が切り詰められている

原因: リスト幅が狭すぎる

解決策:

  1. 実行前に「出力リストの幅」を1023に設定
  2. またはSE16Nを使用

問題:エクスポートに時間がかかりすぎる/タイムアウトする

原因: オンライン処理で大量データ

解決策:

  1. バックグラウンド処理を利用(上記対策2)
  2. 日付範囲で分割
  3. 組織単位でフィルター

問題:Excelでファイルが正しく開かない

原因: Excelの自動フォーマット

解決策:

  1. ダブルクリックで開かない
  2. ファイル -> 開く -> テキストインポートウィザードを使用
  3. 区切り文字を正しく指定
  4. 日付列を「テキスト」形式に設定

問題:CDPOS/CDHDRで時刻フィールドが欠落

原因: UTIMEフィールドが抽出されていない

解決策:

  1. UTIMEが選択フィールドに含まれているか確認
  2. 元テーブルに値があるか確認
  3. 空の場合はSAP Basisチームに問い合わせ

問題:権限エラー「権限がありません」

原因: テーブル読み取り権限不足

解決策:

  1. SAPセキュリティチームに連絡
  2. 指定テーブルの読み取り権限を申請
  3. 抽出要件のテーブルリストを提示

問題:特殊文字が「?」と表示される

原因: 文字コードの不一致

解決策:

  1. 「未変換」フォーマットでエクスポート
  2. UTF-8エンコードで開く
  3. SAP GUIのコードページ設定を確認

検証チェックリスト

mindzieへファイル送付前に必ず確認してください:

ファイル構造

  • ヘッダー行に列名がある
  • ファイル全体で区切り文字が一貫している
  • データの途中に空行がない
  • テキストエディタで正しく開ける

データの完全性

  • 必須カラムが全て存在する
  • 日付・時刻フィールドに値がある(空白なし)
  • 行数が想定通り
  • 日付範囲が要件通り

フォーマット準拠

  • UTF-8でエンコードされている
  • 日付形式が一貫(YYYYMMDD)
  • 列が切り詰められていない
  • 特殊文字が正しく保持されている

ファイル受け渡し

  • 命名規則に従っている
  • 50MB超は圧縮している
  • 安全な転送方法で送付している
  • 抽出日が記録されている

クイックリファレンス

SE16Nエクスポート - 簡単手順

1. トランザクション: SE16N
2. テーブル名入力
3. 最大ヒット数設定: 999999999
4. リスト幅設定: 1023
5. フィールド選択(またはすべて選択)
6. 必要なら日付フィルター設定
7. 実行(F8)
8. エクスポート: Shift+F8 -> スプレッドシート -> テキスト(タブ区切り)
9. 保存ファイル名: TableName_YYYYMMDD.txt

キーボードショートカット

ショートカット 動作
F8 クエリ実行
Shift + F8 スプレッドシートにエクスポート
Ctrl + Shift + F7 エクスポート(代替)
Ctrl + Y コピー用選択モード
Ctrl + C 選択データのコピー

よく使われるテーブル名

テーブル 説明 代表的なサイズ
EKKO 購買発注ヘッダー 中規模
EKPO 購買発注明細 大規模
EBAN 購買依頼 中規模
BKPF 会計伝票ヘッダー 大規模
BSEG 会計伝票明細 超大規模
CDHDR 変更伝票ヘッダー 大規模
CDPOS 変更伝票明細 超大規模
LFA1 仕入先マスタ 小規模
MARA 品目マスタ 中規模

サンプル抽出ワークフロー

例:EKKO(購買発注ヘッダー)抽出

目的: 過去2年間の購買発注ヘッダーを抽出

手順:

  1. SAP GUIにログイン

  2. SE16Nを開く

    • コマンド欄にSE16Nを入力しEnter
  3. テーブル名を入力

    • テーブル: EKKO
    • Enter
  4. 設定を調整

    • 設定 -> 表示
    • 最大ヒット数: 999999999
    • リスト幅: 1023
  5. 日付フィルターを設定

    • フィールド: AEDAT(作成日)
    • 開始: 20230101
    • 終了: 20241231
  6. フィールド選択

    • 「フィールド」ボタンをクリック
    • 「すべて選択」を押し、確定
  7. 実行

    • F8を押す
    • 結果が表示されるまで待つ(1~5分程度)
  8. 結果確認

    • ステータスバーの行数を確認
    • すべての列が表示されているかスクロールで確認
  9. エクスポート

    • Shift + F8を押す
    • 「スプレッドシート」を選択
    • 「テキスト(タブ区切り)」を選ぶ
    • ファイル名:EKKO_20240315.txtで保存
  10. 検証

    • Notepad++などで開く
    • ヘッダー行を確認
    • 最初と最後の行をチェック
    • 列切り詰めがないか確認

サポート

このガイドにない問題が発生した場合:

  1. 正確なエラーメッセージを控える
  2. 使用したテーブルとトランザクションを記録
  3. 実施した手順を文書化
  4. 上記情報を添えてmindzieサポートに連絡

参考情報

SAPコミュニティ記事: