Alv Ida
Alv Ida
ALV IDA (ALV with Integrated Data Access) is a modern reporting tool in SAP ABAP
designed to leverage the capabilities of SAP HANA. It allows developers to create
high-performance, interactive reports by pushing data-intensive operations to the
database layer rather than processing them at the application server
STEPS:
1. Get the reference of ALV table → CL_SALV_GUI_TABLE_IDA
2. Get the reference of ALV fullscreen —>IF_SALV_GUI_TABLE_IDA
3. Display the data —> IF_SALV_GUI_FULLSCREEN_IDA.
Mullaiventhan M
[email protected]
1.DISPLAY ALL WITHOUT SELECT-OPTIONS
Mullaiventhan M
[email protected]
FULL CODE:
*&---------------------------------------------------------------------*
*& Report ZALV_IDA_PROG1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZALV_IDA_PROG1.
START-OF-SELECTION.
* TRY.
CALL METHOD CL_SALV_GUI_TABLE_IDA=>CREATE
EXPORTING
IV_TABLE_NAME = 'MARA'
* IO_GUI_CONTAINER =
* IO_CALC_FIELD_HANDLER =
RECEIVING
RO_ALV_GUI_TABLE_IDA = O_aLV
.
* CATCH CX_SALV_DB_CONNECTION .
* CATCH CX_SALV_DB_TABLE_NOT_SUPPORTED .
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
* ENDTRY.
IF O_ALV IS BOUND.
*TRY.
CALL METHOD O_ALV->FULLSCREEN
RECEIVING
RO_FULLSCREEN = O_ALV_FN
.
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
*ENDTRY.
IF O_ALV_FN IS BOUND.
O_ALV_FN->DISPLAY( ).
ENDIF.
Mullaiventhan M
[email protected]
ENDIF.
2.WITH SELECT-OPTIONS.
CODE:-
*&---------------------------------------------------------------------*
*& Report ZALV_IDA_PROG1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZALV_IDA_PROG2.
Mullaiventhan M
[email protected]
DATA O_aLV TYPE REF TO IF_SALV_GUI_TABLE_IDA.
DATA O_ALV_FN TYPE REF TO IF_SALV_GUI_FULLSCREEN_IDA.
DATA O_RANGE TYPE REF TO CL_SALV_RANGE_TAB_COLLECTOR.
START-OF-SELECTION.
* TRY.
CALL METHOD CL_SALV_GUI_TABLE_IDA=>CREATE
EXPORTING
IV_TABLE_NAME = 'MARA'
* IO_GUI_CONTAINER =
* IO_CALC_FIELD_HANDLER =
RECEIVING
RO_ALV_GUI_TABLE_IDA = O_aLV
.
* CATCH CX_SALV_DB_CONNECTION .
* CATCH CX_SALV_DB_TABLE_NOT_SUPPORTED .
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
* ENDTRY.
IF O_ALV IS BOUND.
O_RANGE->ADD_RANGES_FOR_NAME(
exporting
IV_NAME = 'MATNR'
IT_RANGES = S_MATNR[]
).
O_RANGE->GET_COLLECTED_RANGES(
importing
ET_NAMED_RANGES = DATA(SEL_OP)
).
O_aLV->SET_SELECT_OPTIONS(
exporting
IT_RANGES = SEL_OP[]
* IO_CONDITION =
).
* catch CX_SALV_IDA_ASSOCIATE_INVALID. "
* catch CX_SALV_DB_CONNECTION. "
* catch CX_SALV_IDA_CONDITION_INVALID. "
* catch CX_SALV_IDA_UNKNOWN_NAME. "
Mullaiventhan M
[email protected]
ENDIF.
*TRY.
CALL METHOD O_ALV->FULLSCREEN
RECEIVING
RO_FULLSCREEN = O_ALV_FN
.
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
*ENDTRY.
IF O_ALV_FN IS BOUND.
O_ALV_FN->DISPLAY( ).
ENDIF.
ENDIF.
Mullaiventhan M
[email protected]
CODE:
REPORT ZALV_IDA_PROG2.
Mullaiventhan M
[email protected]
CLASS LCL_EVENT DEFINITION.
PUBLIC SECTION.
METHODS HANDLER FOR EVENT DOUBLE_CLICK OF IF_SALV_GUI_TABLE_DISPLAY_OPT
IMPORTING EO_ROW_DATA EV_FIELD_NAME.
ENDCLASS.
METHOD HANDLER.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* TRY.
CALL METHOD CL_SALV_GUI_TABLE_IDA=>CREATE
EXPORTING
IV_TABLE_NAME = 'MARA'
* IO_GUI_CONTAINER =
* IO_CALC_FIELD_HANDLER =
RECEIVING
RO_ALV_GUI_TABLE_IDA = O_aLV
.
* CATCH CX_SALV_DB_CONNECTION .
* CATCH CX_SALV_DB_TABLE_NOT_SUPPORTED .
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
* ENDTRY.
IF O_ALV IS BOUND.
O_RANGE->ADD_RANGES_FOR_NAME(
exporting
IV_NAME = 'MATNR'
IT_RANGES = S_MATNR[]
Mullaiventhan M
[email protected]
).
O_RANGE->GET_COLLECTED_RANGES(
importing
ET_NAMED_RANGES = DATA(SEL_OP)
).
O_aLV->SET_SELECT_OPTIONS(
exporting
IT_RANGES = SEL_OP[]
* IO_CONDITION =
).
* catch CX_SALV_IDA_ASSOCIATE_INVALID. "
* catch CX_SALV_DB_CONNECTION. "
* catch CX_SALV_IDA_CONDITION_INVALID. "
* catch CX_SALV_IDA_UNKNOWN_NAME. "
ENDIF.
*TRY.
CALL METHOD O_ALV->FULLSCREEN
RECEIVING
RO_FULLSCREEN = O_ALV_FN
.
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
*ENDTRY.
CALL METHOD O_ALV->DISPLAY_OPTIONS
RECEIVING
RO_DISPLAY_OPTIONS = D_eVE
.
IF D_eVE IS BOUND.
D_eVE->ENABLE_DOUBLE_CLICK( ).
ENDIF.
IF O_ALV_FN IS BOUND.
Mullaiventhan M
[email protected]
3.1 EX: MARA TO MAKT (INTERACTIVE ALV_IDA)
REPORT ZALV_IDA_INT.
PUBLIC SECTION.
METHODS EVE_HANDLE FOR EVENT DOUBLE_CLICK OF IF_SALV_GUI_TABLE_DISPLAY_OPT
IMPORTING EO_ROW_DATA EV_FIELD_NAME.
ENDCLASS.
CLASS LCL_HANDLER IMPLEMENTATION.
METHOD EVE_HANDLE.
CASE EV_FIELD_NAME.
WHEN 'MATNR'.
* TRY.
CALL METHOD EO_ROW_DATA->GET_ROW_DATA
* EXPORTING
* IV_REQUEST_TYPE =
IF_SALV_GUI_SELECTION_IDA=>CS_REQUEST_TYPE-KEY_AND_REQUESTED_FIELDS
* ITS_REQUESTED_FIELDS =
IMPORTING
ES_ROW = LS_MARA
.
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
* CATCH CX_SALV_IDA_SEL_ROW_DELETED .
* ENDTRY.
CL_SALV_GUI_TABLE_IDA=>CREATE(
exporting
Mullaiventhan M
[email protected]
IV_TABLE_NAME = 'MAKT' " Name of table for database
access
* IO_GUI_CONTAINER = " Container for ALV display
* IO_CALC_FIELD_HANDLER = " IDA API: Handler for calculated
fields
receiving
RO_ALV_GUI_TABLE_IDA = DATA(O_ALV2) " ALV with integrated
data access (IDA)
).
* catch CX_SALV_DB_CONNECTION. "
* catch CX_SALV_DB_TABLE_NOT_SUPPORTED. "
* catch CX_SALV_IDA_CONTRACT_VIOLATION. "
IF O_aLV2 IS BOUND.
ENDIF.
IF O_CON IS BOUND.
ENDIF.
Mullaiventhan M
[email protected]
RECEIVING
RO_FULLSCREEN = DATA(O_FULLSCR2)
.
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
*ENDTRY.
ENDIF.
IF O_FULLSCR2 IS BOUND.
O_FULLSCR2->DISPLAY( ).
ENDIF.
ENDIF.
WHEN OTHERS.
MESSAGE'CLICK ON MATNR' TYPE 'I'.
ENDCASE.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
cl_salv_gui_table_ida=>CREATE(
exporting
IV_TABLE_NAME = 'MARA' " Name of table for database
access
* IO_GUI_CONTAINER = " Container for ALV display
* IO_CALC_FIELD_HANDLER = " IDA API: Handler for calculated
fields
receiving
RO_ALV_GUI_TABLE_IDA = DATA(o_Alv) " ALV with integrated data
access (IDA)
).
* catch CX_SALV_DB_CONNECTION. "
* catch CX_SALV_DB_TABLE_NOT_SUPPORTED. "
* catch CX_SALV_IDA_CONTRACT_VIOLATION. "
IF O_aLV IS BOUND.
*TRY.
CALL METHOD O_ALV->FULLSCREEN
RECEIVING
RO_FULLSCREEN = DATA(O_FULLSCR)
.
Mullaiventhan M
[email protected]
* CATCH CX_SALV_IDA_CONTRACT_VIOLATION .
*ENDTRY.
O_RANGE->ADD_RANGES_FOR_NAME(
exporting
IV_NAME = 'MATNR'
IT_RANGES = S_MATNR[]
).
CALL METHOD O_RANGE->GET_COLLECTED_RANGES
IMPORTING
ET_NAMED_RANGES = DATA(E_RANGE)
.
O_aLV->SET_SELECT_OPTIONS(
exporting
IT_RANGES = E_RANGE
* IO_CONDITION =
).
* catch CX_SALV_IDA_ASSOCIATE_INVALID. "
* catch CX_SALV_DB_CONNECTION. "
* catch CX_SALV_IDA_CONDITION_INVALID. "
* catch CX_SALV_IDA_UNKNOWN_NAME. "
ENDIF.
IF O_FULLSCR IS BOUND.
O_DIS->ENABLE_DOUBLE_CLICK( ).
CREATE OBJECT OB.
SET HANDLER OB->EVE_HANDLE FOR ALL INSTANCES.
ENDIF.
O_FULLSCR->DISPLAY( ).
ENDIF.
ENDIF.
Mullaiventhan M
[email protected]