Join multiple tables using new syntax and display in alv in ABAP

 In this example I'm fetching data from 3 tables i.e. VBAK, VABP, MAKT without using joins.


Report

REPORT zab_rp_sale_order_new.

TABLES: vbak.
TYPES: BEGIN OF ls_final,
         vbeln  TYPE vbeln_va,
         posnr  TYPE posnr,
         matnr  TYPE matnr,
         kwmeng TYPE kwmeng,
         vrkme  TYPE vrkme,
         maktx  TYPE maktx,
       END OF ls_final.
DATA: lr_final TYPE ls_final,
      lt_final TYPE TABLE OF ls_final.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
      lr_layout   TYPE slis_layout_alv.
SELECT-OPTIONS: s_erdat FOR vbak-erdat.

IF s_erdat IS INITIAL.
  MESSAGE 'Data is not foundTYPE 'E'.
*  LEAVE TO LIST-PROCESSING.
ELSE.
  SELECT vbeln
    FROM vbak
    INTO TABLE @DATA(lt_vbak)
    WHERE erdat IN @s_erdat.
  IF lt_vbak IS NOT INITIAL.
    SELECT vbeln,posnr,matnr,kwmeng,vrkme
      FROM vbap
      INTO TABLE @DATA(lt_vbap)
      FOR ALL ENTRIES IN @lt_vbak
      WHERE vbeln @lt_vbak-vbeln.
    IF lt_vbap IS NOT INITIAL.
      DATA(lt_tmp_vbaplt_vbap.
      SORT lt_tmp_vbap BY matnr.
      DELETE ADJACENT DUPLICATES FROM lt_tmp_vbap COMPARING matnr.
      SELECT matnr,maktx
        FROM makt
        INTO TABLE @DATA(lt_makt)
        FOR ALL ENTRIES IN @lt_tmp_vbap
        WHERE matnr @lt_tmp_vbap-matnr
        AND spras @sy-langu.
    ENDIF.
  ENDIF.

  LOOP AT lt_vbak INTO DATA(lr_vbak).
    LOOP AT lt_vbap INTO DATA(lr_vbapWHERE vbeln lr_vbak-vbeln.
      IF line_existslt_makt[ matnr lr_vbap-matnr ] ).

        DATA(lr_maktlt_makt[ matnr lr_vbap-matnr ] .
        
lr_final VALUE #vbeln lr_vbak-vbeln 

                         posnr lr_vbap-posnr 

                         matnr lr_vbap-matnr

                         kwmeng lr_vbap-kwmeng 

                         vrkme lr_vbap-vrkme 

                         maktx lr_makt-maktx ).


        APPEND lr_final TO lt_final.
        DATA(lv_flag'X'.
        CLEARlr_final,lr_vbap,lr_makt.
      ENDIF.
    ENDLOOP.
    IF lv_flag IS INITIAL.
      lr_final VALUE #vbeln lr_vbak-vbeln 

                         posnr lr_vbap-posnr 

                         matnr lr_vbap-matnr

                         kwmeng lr_vbap-kwmeng 

                         vrkme lr_vbap-vrkme 

                         maktx lr_makt-maktx ).

      APPEND lr_final TO lt_final.
      CLEARlr_final.
    ENDIF.
    CLEARlv_flag.
  ENDLOOP.
ENDIF.
lr_layout-colwidth_optimize 'X'.
lt_fieldcat VALUE #(

 col_pos fieldname 'VBELN' seltext_l 'SALE DOCUMENT' )
 col_pos fieldname 'POSNR' seltext_l 'SALE ITEM' )
 col_pos fieldname 'MATNR' seltext_l 'MATERIAL NUMBER' )
 col_pos fieldname 'KWMENG' seltext_l 'QUANTITY' )
 
col_pos fieldname 'VRKME' seltext_l 'SALE UNIT' )

 col_pos fieldname 'MAKTX' seltext_l 'MATERIAL DESCRIPTION' ).


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    is_layout     lr_layout
    it_fieldcat   lt_fieldcat
  TABLES
    t_outtab      lt_final
  EXCEPTIONS
    program_error 1
    OTHERS        2.

Input

Output




******************************Thank You***************************

Comments

Popular posts from this blog

New syntax for append- VALUE (new syntax 7.4+) in ABAP

Read statement new syntax in ABAP. (7.4+).

Concatenation new syntax( 7.4+ ).