SAPクエリを使用したレポート

SAP ERPシステムには、膨大な数のフィールドを持つ多くのレポートが含まれています。 必要なフィールドの表示をカスタマイズするために、追加のフィールドを非表示、並べ替え、並べ替え、中間結果と合計結果を要約できるメカニズムがあります。 さらに、システムでは複数の設定を保存し、必要な設定をすばやく選択できます。

時間が経つにつれて、エンドユーザーは標準フィールドと追加フィールドの両方を含むレポートを必要とします。 例には、総勘定元帳勘定履歴、サプライヤからの未処理請求書、顧客リストなどのレポートが含まれます。

レポートが非常に具体的であるか、標準以外の機能を備えている場合は、プログラマーに連絡して実装する必要があります。 それ以外の場合は、SAPクエリを使用します。

SAPクエリツールを使用すると、大きな人件費なしでレポートを作成できます。

以下では、SAPクエリを使用してレポートを作成する例を検討します。

レポートを作成する主な手順:
  1. 情報セットの作成
  2. ユーザーグループを作成し、それに情報セットを割り当てる
  3. 情報セットに基づいてクエリを作成します。

問題の声明

時々、ユーザーが注文書の「契約値超過」エラーの原因を把握できない状況が発生します。 ほとんどの場合、このエラーの原因は簡単に見つかります。
しかし、契約に1000のポジションがあり、そのうちのいくつかについて、受領額が契約ポジションの額よりも大きい場合(契約の額は注文の額に等しい)、このポジションを特定することは問題になります。

システムには、注文アイテムのコストを契約アイテムに表示するレポートや、注文書へのリンクを含む領収書があります。 単一のレポートはありません。

指定した契約をポジション別に表示するレポートを作成する必要があります。 各アイテムには、その値、注文書のアイテムの値、領収書の値、請求書の値を表示する必要があります。 すべての価格は現地通貨で表示する必要があります。
また、問題のある位置のみを表示できる機能を追加する必要があります。

情報セットの作成

情報セットには、レポートに表示するフィールドのリストが含まれている必要があります。 このセットでは、契約番号、契約ポジション、契約のポジション値、発注書の値、領収書の値、請求書の値などのフィールドが作成されます。

トランザクションSQ02を実行します。

画像


画像

SAPは、インフォセットを作成するためのソースをいくつか提供しています。これらは次のとおりです。


各データソースには独自の特性がありますが、この記事では説明しません。 レポート全体がこのテーブルに基づいて構築されるため、テーブルを選択しました。追加のフィールドを設定することで、残りのデータを取得します。

次に、[キーフィールドを含める]ボックスをオンにして、作成を確認します。

画像

これで、情報セットを管理するための最初の画面になりました。

画像

画面は3つの部分に分かれています。

前の画面でキーフィールドを持つ同じアイテムが選択されている場合、フィールドのグループに購買伝票番号と位置が表示されます。 そうでない場合は、これらのフィールドを有効にする(テーブルのフィールドを右クリックして[フィールドのグループにフィールドを含める]を選択する)か、不要なフィールドを除外します。

次に、レポートに必要な残りのフィールドを追加する必要があります。 これを行うには、[追加情報]ツールバー(F5)のボタンをクリックします。 開始位置に切り替えるには、[フィールドグループ]ボタン(F6)を押します。

画像

右側が完全に変換されます。 最初の画面には、追加のフィールド、テーブル、構造、およびコードリンクが含まれています。

必要なフィールドを作成します。 これを行うには、「作成」ボタン(白いシートの形のボタン)をクリックします。 開いたウィンドウで、新しいフィールドの名前を指定し、「追加フィールド」を選択します

画像

次に、レポートの名前、タイトルのテキスト、およびサンプルフィールド「EKPO-BRTWR」へのリンクを入力します。 フィールドのフォーマットはサンプルからコピーされます。

画像

次のフィールドは、フィールドのシリアル番号を除き、同じ方法で作成されます。

画像

領収書のコストと請求書の値は、EKBEテーブルの注文履歴から取得されます。

画像

画像

追加されたフィールドは、「追加フィールド」ブランチの左側のブロックに表示されます。
これらのフィールドは、フィールドグループに追加する必要があります。 これを行うには、フィールドグループモード([フィールドグループ]ボタン)に切り替えて、[フィールドグループに追加]アイテムを右クリックします。
その後、追加情報モードに戻ります。

契約ポジションの価値の形成に関するルールを定義します。
これを行うには、目的の位置にマウスカーソルを置き、[アドオンのエンコード]ボタンをクリックする必要があります。

画像

「BRTWR」フィールドに次のコードを設定します。
data: ii_WKURS like EKKO-WKURS. SELECT SINGLE WKURS INTO ii_WKURS FROM EKKO WHERE EBELN = EKPO-EBELN. CLEAR BRTWR. IF EKPO-LOEKZ IS INITIAL. BRTWR = EKPO-NETPR / EKPO-PEINH * EKPO-KTMNG * ii_WKURS. ELSE. BRTWR = '0'. ENDIF. 

契約が維持される為替レートの変数を定義します。 次に、その値を取得します。
契約品目が削除されない場合、単価は数量と為替レートを考慮して、数量と価格の積に等しくなります。 契約が会計通貨である場合、システムは自動的に1です。
位置が削除された場合、傷のコストは0です。

フィールド「ORDER_BRTWR」のコード:
 data: s_NETPR like EKPO-NETPR, s_PEINH like EKPO-PEINH, s_MENGE like EKPO-MENGE, c_BRTWR like ORDER_BRTWR, i_ebeln like EKKO-EBELN, i_WKURS like EKKO-WKURS. ORDER_BRTWR = '0'. select NETPR PEINH MENGE EBELN INTO (s_NETPR, s_PEINH, s_MENGE, i_ebeln) from EKPO as e where e~KONNR = EKPO-EBELN AND e~KTPNR = EKPO-EBELP AND e~LOEKZ = ''. SELECT SINGLE WKURS INTO i_WKURS FROM EKKO WHERE EBELN = i_ebeln. CLEAR c_BRTWR. c_BRTWR = s_NETPR / s_PEINH * s_MENGE * i_WKURS. ORDER_BRTWR = ORDER_BRTWR + c_BRTWR. endselect. 

1つの契約アイテムに対して複数の注文アイテムが存在する可能性があるため、すべて同じです。

DMBTRフィールドのコード:
 data: s_SHKZG like ekbe-SHKZG, s_DMBTR like ekbe-DMBTR. DMBTR = '0'. select DMBTR SHKZG INTO (s_DMBTR, s_SHKZG) from EKBE as e INNER JOIN EKPO as z ON e~EBELN EQ z~EBELN AND e~EBELP EQ z~EBELP where z~KONNR = EKPO-EBELN AND z~KTPNR = EKPO-EBELP AND e~VGABE = '1'. if s_SHKZG = 'S'. DMBTR = DMBTR + s_DMBTR. else. DMBTR = DMBTR - s_DMBTR. endif. endselect. 

領収書については、現地通貨での費用を直ちに考慮します。 このため、通貨を変換する必要はありません。 領収書では、会計仕訳は逆仕訳しかできないため、削除の兆候はありません。 この点に関して、フィールド「EKBE-SHKZG」により、直接文書または逆仕訳を定義します。

フィールド「F_DMBTR」のコード:
 data: s_SHKZG_f like ekbe-SHKZG, s_DMBTR_f like ekbe-DMBTR. F_DMBTR = '0'. select DMBTR SHKZG INTO (s_DMBTR_f, s_SHKZG_f) from EKBE as e INNER JOIN EKPO as z ON e~EBELN EQ z~EBELN AND e~EBELP EQ z~EBELP where z~KONNR = EKPO-EBELN AND z~KTPNR = EKPO-EBELP AND ( e~VGABE = '2' OR e~VGABE = '3' ). if s_SHKZG_f = 'S'. F_DMBTR = F_DMBTR + s_DMBTR_f. else. F_DMBTR = F_DMBTR - s_DMBTR_f. endif. endselect. 

請求書の金額は領収書と同様に計算されます。 この場合、請求書の場合、追加などの操作。 借方と追加。 貸し出し。

次に、「選択基準」タブに移動します。 そこで、「契約番号」フィールドと「過剰なポジションのみ」という記号を作成します。

作成する場合、「選択基準」は制限が満たされるフィールドであり、「パラメーター」は特定の機能に設定される特定の属性であることに留意してください。

選択基準「契約番号」を作成します。

画像

およびパラメータ「過剰なポジションのみ」

画像

[詳細情報]フィールドのパラメーターには、チェックボックスとして表示するためにテキスト「AS CHECKBOX」が含まれていることに注意してください。

選択基準「契約番号」については、いくつかの追加設定は必要ありません。 レポートは、設定で指定されたフィールドによって制限されます。 パラメーターについては、生成されたレポートに制限を導入します。 これを行うには、「エンコード」タブに移動し、エンコードフラグメント「5レコード処理」を選択します。

画像

そしてコードを追加します:
 CHECK EKPO-BSTYP = 'K'. IF Z_ONLY = 'X'. CHECK BRTWR < DMBTR. ENDIF. 

このコードでは、BRTWR <DMBTRのレコードのみの出力を制限します。 契約品目の価値が収益の価値よりも小さい また、タイプ「契約」によってレコードを制限します。

チェック時にこれらのフィールドを計算する必要があることに注意してください。 このため、このチェックでは、シリアル番号は10(以前のフィールドの番号を超える任意の番号)に指定されました。

情報セットを保存して生成します 画像

ユーザーグループを作成

ユーザーグループは、情報セットとクエリへのアクセス制御を提供します。

情報セットを維持する最初の画面からメニュー「環境」->「ユーザーグループ」に移動します。

画像


画像


画像


画像


リクエスト作成

リクエストは、インフォセットとユーザーグループを作成した後にレポートを生成する次のステップです。 このステップでは、レポートに含まれるフィールドの最終的な構成、フィールドの順序、レポートの外観、ソート、合計などが決定されます。

トランザクションSQ01を開始します。

画像

前に作成したユーザーグループで作業していることを確認します。 (画面の上部にあるグループの名前を参照してください)。 そうでない場合は、「別のユーザーグループ」ボタン(Shift + F7)を押して、目的のグループを選択します。

名前「Z_SUPPLY」を入力し、「作成」ボタンを押します。 システムは、このユーザーグループに関連付けられている情報セットのリストを表示します。 情報セットを選択して、エントリを確認します。

リストの形式を既存の印刷形式と比較することをお勧めします。そうしないと、レポートを印刷できません。 一般的な形式:65x132および65x80。 デフォルトのフォーマットである0行(制限なし)と83列のままにします。

画像

レポートを「契約の受領」と呼び、「メインリスト」ボタンをクリックして、レポートの「図面」に直接移動します。

画像

左側のメインリスト画面には、レポートに追加できるフィールドがあります。 選択した要素のプロパティは左下の部分に表示され、メインの部分は将来のレポートのグラフィック表示です。

左側のフィールドのリストを開き、レポートに含めるフィールドをマークします。 フィールドは、マークした順に追加されます。 将来的には、グラフィックブロック内の目的の場所にフィールドをドラッグして、順序を変更できます。

少し調整します。 値フィールドは追加で表示されます。 値が不要なフィールド「通貨」。 通貨の表示を削除するには、値フィールドを選択し、画面の左下部分でアイテム「通貨フィールドなし」を選択します。 次に、「適用」をクリックします。

画像

これに関して、私たちのレポートは形成されたと考えることができます。 レポートを保存します。

[テスト]ボタンをクリックすると、すぐにテストできます。

レポートのトランザクションを作成する

レポートが当社のニーズを完全に満たしていることを確認した後、トランザクションを作成して実行する必要があります。

  1. 最初に、プログラムを生成します。 これを行うには、トランザクションSQ01の最初の画面に移動します。 このトランザクションでは、作成したリクエストを選択し、メニューで[リクエスト]-> [その他の機能]-> [プログラムの生成]を選択します。
  2. プログラムを生成した後、メニューの[リクエスト]-> [その他の機能]-> [レポート名の表示]でプログラム名を取得します。
  3. SE93を介してトランザクションを形成します。
    1. トランザクションの名前を指定します
    2. 作成ボタンをクリックします
    3. トランザクションの名前を指定します
    4. 「プログラムと選択画面」の項目をマークします
    5. エントリーを確認
    6. 開いた画面の[プログラム]フィールドに、以前に受信したレポート名を入力します
    7. GUIの機能に注意してください
    8. 保存する

画像

これで、トランザクションを使用してレポートを生成できます。

画像

PS

  1. 一部の画面では、「作成」ではなく「変更」という見出しに表示される場合があります。 これは、レポートが以前に作成されたという事実によるものです。
  2. 与えられたコードはほとんど最適ではありません。 あなたの選択肢がより良いと思うなら、あなたはそれを考慮し、置き換える準備ができています。
  3. SAP Queryでこのレポートを生成するには、いくつかのオプションがあります。 上記のオプションは最適ではありません。 しかし、SAP Queryの可能性を明らかにします
  4. 私は常に建設的な批判に満足しています

Source: https://habr.com/ru/post/J218581/


All Articles