sapdev logo background
sapdev logo sapdev logo
Comments

ABAP select inner join statement and ALV report output




This example ABAP report demonstrates how to implement a basic SELECT INNER JOIN between two tables (i.e. EKPO and EKET). It then displays the output using a very basic objects based ALV grid.


*&-----------------------------------------------------------
*& Report  ZDEMO_JOIN
*&
*&-----------------------------------------------------------
*&
*& Example of a simple Inner join
*& ...................................
*&
*& Author: SAPDev.co.uk
*&
*& Basic INNER Join example using CL_SALV_TABLE ALV method
*&-----------------------------------------------------------~
REPORT zsalv_demo.

*Data Declaration
*----------------
TYPES: BEGIN OF t_datatab,
  ebeln TYPE ekpo-ebeln,
  ebelp TYPE ekpo-ebelp,
  matnr TYPE ekpo-matnr,
  menge TYPE ekpo-menge,
  meins TYPE ekpo-meins,
  netpr TYPE ekpo-netpr,
  peinh TYPE ekpo-peinh,
  wemng type eket-wemng,
  eindt type eket-eindt,
 END OF t_datatab.

DATA: it_datatab TYPE STANDARD TABLE OF t_datatab INITIAL SIZE 0,
      wa_datatab TYPE t_datatab.

DATA alv_table    TYPE REF TO cl_salv_table.
DATA alv_columns TYPE REF TO cl_salv_columns_table.
DATA single_column  TYPE REF TO cl_salv_column.


************************************************************************
* START-OF-SELECTION
START-OF-SELECTION.
  PERFORM data_retrieval.
  PERFORM display_settings.

************************************************************************
* END-OF-SELECTION
END-OF-SELECTION.
  perform display_alv_report.


*&---------------------------------------------------------------------*
*& FORM data_retrieval.
*&---------------------------------------------------------------------*
FORM data_retrieval.
  select a~ebeln a~ebelp a~matnr a~menge a~meins
          a~netpr a~peinh b~wemng b~eindt
   up to 10 rows
    from ekpo as a inner join eket as b
     on  b~ebeln = a~ebeln
     and b~ebelp = a~ebelp
    into table it_datatab.
ENDFORM.                    " DATA_RETRIEVAL


*&---------------------------------------------------------------------*
*& FORM display_settings.
*&---------------------------------------------------------------------*
FORM display_settings.
  DATA: err_message   TYPE REF TO cx_salv_msg.

  TRY.
      cl_salv_table=>factory(
      IMPORTING
        r_salv_table = alv_table
      CHANGING
        t_table      = it_datatab ).

      alv_columns = alv_table->get_columns( ).

      PERFORM report_settings.

    CATCH cx_salv_msg INTO err_message.
*   Add error processing
  ENDTRY.
ENDFORM.


*&---------------------------------------------------------------------*
*& FORM display_alv_report.
*&---------------------------------------------------------------------*
FORM display_alv_report.
  alv_columns->set_optimize( ). "optimise the column width
  alv_table->display( ).
ENDFORM.


*&---------------------------------------------------------------------*
*& FORM report_settings.
*&---------------------------------------------------------------------*
FORM report_settings.
  DATA: report_settings TYPE REF TO cl_salv_display_settings.

  report_settings = alv_table->get_display_settings( ).
  report_settings->set_striped_pattern( if_salv_c_bool_sap=>true ).
  report_settings->set_list_header( 'Display details for EKPO and EKET via INNER Join' ).
ENDFORM.







comments powered by Disqus