SAPデータ抽出ガイド
このガイドは、SAP ERPテーブルからデータを抽出し、mindzieによるプロセスマイニング分析のためにCSVファイルにエクスポートする方法を説明します。
[重要] 表示名ではなく技術フィールド名を使用すること
| 要件 | SAPデータをエクスポートする際は、元のデータベースの列名(EBELN、EBELP、AEDATなどの技術フィールド名)を必ず使用し、「購買伝票」「項目」「作成日」などの表示名や説明は使用しないでください。 |
なぜ重要か:
- 表示名は言語やSAP設定により異なる
- 技術フィールド名は全てのSAPシステムで一貫している
- 技術フィールド名が一致しないとテーブル結合ができない - 例えば、EKKO(ヘッダー)をEKPO(明細)に結合するには両方のファイルで
EBELNが必要 - mindzieのデータ変換は標準SAPフィールド名に依存している
SE16Nで技術名を表示する方法:
- メニューの 設定 -> 表示 に移動
- 「列説明」または「説明を表示」のチェックを外す
- エクスポートしたヘッダー行が
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にアクセスする
- SAP GUIにログイン
- 画面左上のコマンド欄に
SE16Nと入力 - Enter キーを押す
ステップ2:テーブル名の入力
- 「テーブル」フィールドにテーブル名を入力(例:
EKKO) - Enter キーまたは 実行 ボタンを押す
ステップ3:表示設定の調整(重要)
全データ抽出のために実行前に設定を調整してください:
- メニューから 設定 -> 表示 に移動
- 「最大ヒット数」を高い数値(例:999999999)に設定
- 「リスト幅」を最大の1023に設定し、全列を表示
または、ツールバーの設定ボタンから行うことも可能です。
重要な設定:
最大ヒット数: 999999999
リスト幅: 1023
ステップ4:表示するフィールドを選択
- フィールドボタンをクリックするか、メニューの 編集 -> フィールド
- 必要な全フィールドを選択(または完全抽出の場合はすべて選択)
- Enter で確定
ヒント: プロセスマイニングのため、特別な指示がない限り全フィールドを選択してください。mindzieが必要な項目をフィルターします。
ステップ5:フィルターを適用(必要に応じて)
日付フィルターが必要な場合:
- 日付フィールド(例:AEDAT、ERDAT、BUDAT)を選択
- 日付範囲を
YYYYMMDD形式で入力
例:2023年~2024年のデータフィルター
AEDAT: [20230101] から [20241231]
ステップ6:クエリを実行
- F8 キーを押すか 実行 ボタンをクリック
- 結果が表示されるまで待つ(大きなテーブルは時間がかかる場合あり)
ステップ7:スプレッドシート/CSVにエクスポート
オプションA:エクスポートアイコンを使用
- ツールバーのダウンロードアイコン(下向き矢印がトレイに入る形)を探す
- クリックしてエクスポートオプションを開く
- スプレッドシートを選択
オプションB:キーボードショートカット
- Shift + F8 または Ctrl + Shift + F7 を押す
- スプレッドシートオプションを選択
オプションC:メニューからエクスポート
- メニューから:リスト -> エクスポート -> スプレッドシート
- または:システム -> リスト -> 保存 -> ローカルファイル
ステップ8:エクスポート形式を選択
形式ダイアログが表示されたら:
| 形式 | 拡張子 | 使用タイミング |
|---|---|---|
| テキスト(タブ区切り) | .txt | 大規模データに最適 - mindzie推奨 |
| スプレッドシート(XLSX) | .xlsx | 小規模データ、Excel互換性あり |
| 未変換 | .txt | 生データ。全書式を保持 |
mindzieには「テキスト(タブ区切り)」または「未変換」を選択してください。
ステップ9:ファイルの保存
- ローカルドライブの保存場所を指定
- 名前付け規則:
TableName_YYYYMMDD.txt- 例:
EKKO_20240315.txt
- 例:
- 保存 をクリック
ステップ10:エクスポートを確認
- テキストエディタ(Notepad++、VS Code - Excelは不可)でファイルを開く
- 確認事項:
- ヘッダー行が存在する
- データ行が完全に表示されている
- 列の切り捨てがない
- レコード数が期待値と一致
方法2:SE16エクスポート(代替)
SE16(データブラウザ)はシンプルですが制限が多いです。
手順
- トランザクションに
SE16を入力 - テーブル名を入力してEnter
- 選択条件(日付、フィルター等)を設定
- 重要: 「出力リストの幅」を
1023に変更 - 実行 (F8)
- エクスポートは:編集 -> ダウンロード -> スプレッドシート
SE16の制限
- 最大1024文字幅(幅広テーブルは切り捨てられる)
- SE16Nに比べて行数制限が低い
- 大量データでシステムパフォーマンスに影響あり
方法3:SQVIクイックビュー(複雑なクエリ用)
複数テーブルの結合やカスタムクエリ作成時にSQVIを使用します。
SQVIを使う場合
- マスターデータとトランザクションデータの結合
- フィールド選択をカスタマイズ
- 複雑なフィルターロジックの適用
基本的なSQVI手順
SQVIトランザクションを入力- 新規クイックビューを作成
- 基本テーブルと結合テーブルを選択
- フィールドとフィルターを定義
- 実行して結果をエクスポート
注: SQVIは高度なSAP知識が必要です。複雑なクエリにはSAP Basisチームまたはmindzieサポートへご相談ください。
エクスポート形式オプション
SAPで利用可能な形式
| 形式 | 説明 | 長所 | 短所 |
|---|---|---|---|
| 未変換 | パイプ区切りの生テキスト | 最速、全データ保持 | 変換が必要 |
| テキスト(タブ区切り) | タブ区切り値 | 大容量に適する | Excelのタブ処理注意 |
| スプレッドシート | Excel形式(XLS/XLSX) | Excelで直接開ける | 行数制限、書式の問題 |
| リッチテキスト | RTF形式 | 書式保持 | 処理が遅い、大容量ファイル |
| HTML | ウェブ形式 | ブラウザで閲覧可能 | 分析には不向き |
mindzie推奨形式
主な選択肢: テキスト(タブ区切り)(.txt)
- 全データサイズに対応
- 行制限なし
- データの完全性を保持
代替: 未変換(.txt)
- 大規模データに最適
- パイプ(|)区切り
- 開く時に区切り文字を指定する必要あり
タブ区切りをCSVに変換する方法
本当のCSV形式が必要な場合:
Excelで.txtファイルを開く:
- ファイル -> 開く -> 対象の.txtファイルを選択
- ウィザードで「区切り記号付き」を選択
- 区切り文字に「タブ」を指定
- ウィザードを完了
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)
非常に大きなテーブルの場合:
- SE16で選択条件を入力
- メニューの プログラム -> バックグラウンド処理で実行(またはF9)
- バックグラウンド印刷ダイアログで:
- 「すぐに印刷」をオフ
- 「出力後に削除」をオフ
- ジョブを「即時」に保存
- トランザクション SM37 でジョブを監視
- 完了後、スプールをローカルファイルに保存:
- システム -> リスト -> 保存 -> ローカルファイル
対策3:フィールド削減
全項目が不要な場合:
- 「すべて選択」ではなく、必要なフィールドのみ選択
- 抽出要件で指定されたフィールドに絞る
- ファイルサイズとエクスポート時間が削減できる
対策4:会社コード/プラントフィルター
組織単位でフィルター可能な場合:
BUKRS(会社コード):[1000]
WERKS(プラント):[P001]
各単位で分割して抽出し、後で結合する。
mindzie用CSVフォーマット要件
ファイル仕様
| 要件 | 値 |
|---|---|
| エンコーディング | UTF-8 |
| 区切り文字 | カンマ(,)、タブ、またはパイプ(|) |
| テキスト区切り文字 | ダブルクォーテーション(") |
| ヘッダー行 | 必須(1行目) |
| 日付形式 | YYYYMMDD または YYYY-MM-DD |
| 時刻形式 | HHMMSS または HH:MM:SS |
ファイル命名規則
TableName_YYYYMMDD.csv
例:
EKKO_20240315.csvBKPF_20240315.csvCDPOS_20240315.csv
特殊文字の取り扱い
SAPは特殊文字をエクスポートする場合があります。注意点:
| 文字 | 問題 | 対応策 |
|---|---|---|
| テキスト内のカンマ | CSV構造の破壊 | テキストを必ず引用符で囲む |
| 改行 | 偽の行を作る | スペースに置換 |
| ドイツ語ウムラウト | エンコーディング問題 | UTF-8エンコードを使用 |
| 通貨記号 | 表示問題 | そのまま保持。mindzieが扱う |
よくある問題と解決策
問題:「最大エントリー数に達しました」
原因: デフォルトの行数上限に到達
解決策:
- 設定 -> ユーザーパラメータで「最大ヒット数」を増加
- または日付フィルターで絞り込み
問題:列が切り詰められている
原因: リスト幅が狭すぎる
解決策:
- 実行前に「出力リストの幅」を1023に設定
- またはSE16Nを使用
問題:エクスポートに時間がかかりすぎる/タイムアウトする
原因: オンライン処理で大量データ
解決策:
- バックグラウンド処理を利用(上記対策2)
- 日付範囲で分割
- 組織単位でフィルター
問題:Excelでファイルが正しく開かない
原因: Excelの自動フォーマット
解決策:
- ダブルクリックで開かない
- ファイル -> 開く -> テキストインポートウィザードを使用
- 区切り文字を正しく指定
- 日付列を「テキスト」形式に設定
問題:CDPOS/CDHDRで時刻フィールドが欠落
原因: UTIMEフィールドが抽出されていない
解決策:
- UTIMEが選択フィールドに含まれているか確認
- 元テーブルに値があるか確認
- 空の場合はSAP Basisチームに問い合わせ
問題:権限エラー「権限がありません」
原因: テーブル読み取り権限不足
解決策:
- SAPセキュリティチームに連絡
- 指定テーブルの読み取り権限を申請
- 抽出要件のテーブルリストを提示
問題:特殊文字が「?」と表示される
原因: 文字コードの不一致
解決策:
- 「未変換」フォーマットでエクスポート
- UTF-8エンコードで開く
- 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年間の購買発注ヘッダーを抽出
手順:
SAP GUIにログイン
SE16Nを開く
- コマンド欄にSE16Nを入力しEnter
テーブル名を入力
- テーブル: EKKO
- Enter
設定を調整
- 設定 -> 表示
- 最大ヒット数: 999999999
- リスト幅: 1023
日付フィルターを設定
- フィールド: AEDAT(作成日)
- 開始: 20230101
- 終了: 20241231
フィールド選択
- 「フィールド」ボタンをクリック
- 「すべて選択」を押し、確定
実行
- F8を押す
- 結果が表示されるまで待つ(1~5分程度)
結果確認
- ステータスバーの行数を確認
- すべての列が表示されているかスクロールで確認
エクスポート
- Shift + F8を押す
- 「スプレッドシート」を選択
- 「テキスト(タブ区切り)」を選ぶ
- ファイル名:EKKO_20240315.txtで保存
検証
- Notepad++などで開く
- ヘッダー行を確認
- 最初と最後の行をチェック
- 列切り詰めがないか確認
サポート
このガイドにない問題が発生した場合:
- 正確なエラーメッセージを控える
- 使用したテーブルとトランザクションを記録
- 実施した手順を文書化
- 上記情報を添えてmindzieサポートに連絡
参考情報
SAPコミュニティ記事: