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( ).
入力パラメータは
- S_STRU(CDSビューID)
- S_DNAME(SQLビューID)
- S_ANNO(アノテーション) ※@を外した形式で入力
- C_EXT(抽出可能なCDSビューの全表示)
となります。
目的は抽出可能なCDSビューなので「C_EXT」のチェックボックスにチェックを付けると抽出可能なCDSビューが全て表示されるようになってます。
実際に「C_EXT」のチェックボックスにチェックをして実行してみると
抽出可能なCDSビューのIDとSQLビューID、アノテーション、アノテーションのポジション(記載位置)そしてアノテーションの設定値がALVで表示されます。
また入力パラメータにCDSビューID・SQLビューID・アノテーションを設けたので特定のCDSビューのヘッダのアノテーションを見たり、CDSビューIDの一部を忘れてしまってワイルドカードを使って検索したりすることも可能です。