0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CDSビューのアノテーション確認プログラム

Posted at

1.データ抽出可能なCDSビューの探し方

以前データ抽出が可能な標準のCDSビューの探し方をネット上で探していたところ次の記事に当たりました。

どうやらデータ抽出可能なCDSビュー(I_DATAEXTRACTIONENABLEDVIEW)があるようなのでSQLビュー(IXTRCTNENBLDVW)をビューブラウザから見ればデータ抽出可能なCDSビューが探せそう。
でしたがよくよく見てみると「S/4HANA 2020」かららしい…
ダメだバージョンが違う…… 使えない………

2.CDSビューアノテーション表示プログラム

無いなら作ってしまえということでデータ抽出可能なCDSビューを探すプログラムを簡単に作ってみました。
ただ抽出可能なCDSビューが分かるだけだと面白くも無いのでCDSビューのヘッダに設定されているアノテーションも表示できるようなプログラムにしてみました。
以下、ソースコードです。

REPORT YCDS_ANNOTATION_DISP.

TYPES:
  BEGIN OF TY_HANNO,
    STRUCOBJN TYPE DDSTRUCOBJNAME,
    DBTABNAME TYPE TABNAME,
    NAME      TYPE DDANNOTATION_KEY,
    POSITION  TYPE DDFDPOS,
    VALUE     TYPE DDANNOTATION_VAL,
  END OF TY_HANNO.

DATA:
  IT_HANNO TYPE TABLE  OF TY_HANNO,
 IT_TABLE TYPE REF TO CL_SALV_TABLE,
  WK_STRU  TYPE DDSTRUCOBJNAME,
  WK_DNAME TYPE TABNAME,
  WK_ANNO  TYPE DDANNOTATION_KEY.

SELECT-OPTIONS:
  S_STRU FOR WK_STRU NO INTERVALS,
  S_DNAME FOR WK_DNAME NO INTERVALS,
  S_ANNO FOR WK_ANNO NO INTERVALS NO-EXTENSION .
PARAMETERS: C_EXT AS CHECKBOX.

IF C_EXT IS INITIAL.
* ヘッダアノテーション情報取得
  SELECT A~STRUCOBJN,
          B~DBTABNAME,
          A~NAME,
          A~POSITION,
          A~VALUE
  FROM DDHEADANNO AS A
  INNER JOIN DD02BND AS B
  ON A~STRUCOBJN = B~STRUCOBJN
  WHERE A~STRUCOBJN     IN @S_STRU
  AND       B~DBTABNAME IN @S_DNAME
  AND       A~NAME      IN @S_ANNO
  INTO TABLE @IT_HANNO.
ELSEIF C_EXT IS NOT INITIAL.
* ヘッダアノテーション(抽出機能設定済みのみ)情報取得
  SELECT STRUCOBJN
     FROM DDHEADANNO
    WHERE NAME = 'ANALYTICS.DATAEXTRACTION'
    INTO TABLE @DATA(LIT_CNAME).
  SELECT A~STRUCOBJN,
          B~DBTABNAME,
          A~NAME,
          A~POSITION,
          A~VALUE
  FROM DDHEADANNO AS A
  INNER JOIN DD02BND AS B
  ON A~STRUCOBJN = B~STRUCOBJN
    FOR ALL ENTRIES IN @LIT_CNAME
    WHERE A~STRUCOBJN =  @LIT_CNAME-STRUCOBJN
  INTO TABLE @IT_HANNO.
ENDIF.

SORT IT_HANNO BY STRUCOBJN DBTABNAME POSITION NAME.

* ALV
CALL METHOD CL_SALV_TABLE=>FACTORY
  IMPORTING
    R_SALV_TABLE = IT_TABLE
  CHANGING
    T_TABLE      = IT_HANNO.

IT_TABLE->DISPLAY( ).

入力パラメータは

  1. S_STRU(CDSビューID)
  2. S_DNAME(SQLビューID)
  3. S_ANNO(アノテーション) ※@を外した形式で入力
  4. C_EXT(抽出可能なCDSビューの全表示)

となります。
目的は抽出可能なCDSビューなので「C_EXT」のチェックボックスにチェックを付けると抽出可能なCDSビューが全て表示されるようになってます。

実際に「C_EXT」のチェックボックスにチェックをして実行してみると
PG1.png

PG2.png

抽出可能なCDSビューのIDとSQLビューID、アノテーション、アノテーションのポジション(記載位置)そしてアノテーションの設定値がALVで表示されます。

また入力パラメータにCDSビューID・SQLビューID・アノテーションを設けたので特定のCDSビューのヘッダのアノテーションを見たり、CDSビューIDの一部を忘れてしまってワイルドカードを使って検索したりすることも可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?