【ABAP】統合データアクセス(IDA)を備えたALVでCDS Viewのデータを表示する(CL_SALV_GUI_TABLE_IDA)
やること
統合データアクセス(IDA)を備えたALVで、CDS Viewのデータを表示する。
CL_SALV_GUI_TABLE_IDAを使用。
参考:
SAP List Viewer with Integrated Data Access (ALV with IDA)
ABAP Development: Work with Core Data Services (CDS)
CDS Viewではなく、テーブルデータを出力する方法についてはこちら
統合データアクセス(IDA)を備えたALVでテーブルデータを表示する(CL_SALV_GUI_TABLE_IDA)
実行結果
※CDS Viewのデータを表示。
CDS Viewの定義
@AbapCatalog.sqlViewName: 'Y_PO_ITEM'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'CDS View Demo'
define view Y_PO_ITEM_01
as select from ekko
join ekpo
on ekko.ebeln = ekpo.ebeln
{
ekko.lifnr,
ekko.ebeln,
ekko.bsart,
ekko.ekorg,
ekko.ekgrp,
ekpo.ebelp,
ekpo.matnr
}
選択画面
ALV画面(CDS Viewのデータ)
ソースコード
Y_CL_SALV_GUI_TABLE_IDA_CDS
*&---------------------------------------------------------------------*
*& Report Y_CL_SALV_GUI_TABLE_IDA_CDS
*&---------------------------------------------------------------------*
*& CDS ViewのデータをALV画面で出力
*&---------------------------------------------------------------------*
REPORT y_cl_salv_gui_table_ida_cds.
* 選択画面定義
DATA w_ebeln TYPE ekko-ebeln.
PARAMETERS p_lifnr TYPE ekko-lifnr.
SELECT-OPTIONS s_ebeln FOR w_ebeln.
*----------------------------------------------------------------------*
* CLASS DEFINITION
*----------------------------------------------------------------------*
*----- メイン
CLASS lcl_main DEFINITION CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS run.
PRIVATE SECTION.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS IMPLEMENTATION
*----------------------------------------------------------------------*
*----- メイン
CLASS lcl_main IMPLEMENTATION.
METHOD run.
* IDA作成
DATA(o_ida) = cl_salv_gui_table_ida=>create_for_cds_view( 'Y_PO_ITEM_01' ).
* 抽出条件の設定
* PARAMETERSの場合
DATA lr_lifnr TYPE RANGE OF ekko-lifnr.
DATA(o_sel) = NEW cl_salv_range_tab_collector( ).
IF p_lifnr IS NOT INITIAL.
lr_lifnr = VALUE #(
( sign = 'I' option = 'EQ' low = p_lifnr )
).
o_sel->add_ranges_for_name( iv_name = 'LIFNR' it_ranges = lr_lifnr[] ).
ENDIF.
* SELECT-OPTIONSの場合
o_sel->add_ranges_for_name( iv_name = 'EBELN' it_ranges = s_ebeln[] ).
o_sel->get_collected_ranges( IMPORTING et_named_ranges = DATA(lt_named_ranges) ).
o_ida->set_select_options( it_ranges = lt_named_ranges ).
* ALV出力
o_ida->fullscreen( )->display( ).
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
lcl_main=>run( ).
検証中の事象
*&---------------------------------------------------------------------*
*& Report Y_CL_SALV_GUI_TABLE_IDA_CDS
*&---------------------------------------------------------------------*
*& CDS ViewのデータをALV画面で出力
*&---------------------------------------------------------------------*
REPORT y_cl_salv_gui_table_ida_cds.
* 選択画面定義
DATA w_ebeln TYPE ekko-ebeln.
PARAMETERS p_lifnr TYPE ekko-lifnr.
SELECT-OPTIONS s_ebeln FOR w_ebeln.
*----------------------------------------------------------------------*
* CLASS DEFINITION
*----------------------------------------------------------------------*
*----- メイン
CLASS lcl_main DEFINITION CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS run.
PRIVATE SECTION.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS IMPLEMENTATION
*----------------------------------------------------------------------*
*----- メイン
CLASS lcl_main IMPLEMENTATION.
METHOD run.
* IDA作成
DATA(o_ida) = cl_salv_gui_table_ida=>create_for_cds_view( 'Y_PO_ITEM_01' ).
* 抽出条件の設定
* PARAMETERSの場合
DATA lr_lifnr TYPE RANGE OF ekko-lifnr.
DATA(o_sel) = NEW cl_salv_range_tab_collector( ).
IF p_lifnr IS NOT INITIAL.
lr_lifnr = VALUE #(
( sign = 'I' option = 'EQ' low = p_lifnr )
).
o_sel->add_ranges_for_name( iv_name = 'LIFNR' it_ranges = lr_lifnr[] ).
ENDIF.
* SELECT-OPTIONSの場合
o_sel->add_ranges_for_name( iv_name = 'EBELN' it_ranges = s_ebeln[] ).
o_sel->get_collected_ranges( IMPORTING et_named_ranges = DATA(lt_named_ranges) ).
o_ida->set_select_options( it_ranges = lt_named_ranges ).
* ALV出力
o_ida->fullscreen( )->display( ).
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
lcl_main=>run( ).
CDS ViewにParameterオプションが設定されている場合、エラーとなる。。。
Author And Source
この問題について(【ABAP】統合データアクセス(IDA)を備えたALVでCDS Viewのデータを表示する(CL_SALV_GUI_TABLE_IDA)), 我々は、より多くの情報をここで見つけました https://qiita.com/mahko2/items/f8791ce7723055851bff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .