SAP ABAP Programming, Functional and Basis Component Reference Books
Inner Join to retrieve the Material Valuation Class
*
* Inner Join to retrieve the Material Valuation Class pointing to
* which General Ledger.
*
* Based on transaction OBYC - Inventory Posting - BSX
*
* If you use inner join to read data from several logically
* connected tables instead of nested Select statements.
* It will reduce your network load.
*
* Written by : SAP Basis, ABAP Programming and Other IMG Stuff
*              http://www.sap-img.com
*
REPORT ZVALGL.

TABLES: MARA,   "General Material Data
        MAKT,   "Material Descriptions
        MBEW,   "Material Valuation
        SKAT,   "G/L Account Master Record
        T025T,  "Valuation Class Descriptions
        T030.   "Standard Accounts Table

DATA: BEGIN OF WA,
        BKLAS  TYPE MBEW-BKLAS,
        BKBEZ  TYPE T025T-BKBEZ,
        MTART  TYPE MARA-MTART,
        MATNR  TYPE MARA-MATNR,
        MAKTX  TYPE MAKT-MAKTX,
      END OF WA,
      ITAB LIKE SORTED TABLE OF WA
                WITH NON-UNIQUE KEY BKLAS MATNR.

SELECT-OPTIONS: PLANT    FOR MBEW-BWKEY MEMORY ID PLT,
                MATLTYPE FOR MARA-MTART MEMORY ID TYP,
                MATERIAL FOR MBEW-MATNR MEMORY ID MAT,
                CHARTACC FOR T030-KTOPL MEMORY ID KTO.

SELECT P~BKLAS
       F~MATNR F~MTART
       G~MAKTX
       T~BKBEZ
    INTO CORRESPONDING FIELDS OF TABLE ITAB
    FROM ( ( ( ( MBEW AS P
         INNER JOIN MARA  AS F ON P~MATNR  = F~MATNR )
         INNER JOIN MAKT  AS G ON P~MATNR  = G~MATNR )
         INNER JOIN T025T AS T ON P~BKLAS  = T~BKLAS ) )
    WHERE P~BWKEY IN PLANT
      AND F~MTART IN MATLTYPE
      AND P~MATNR IN MATERIAL
      AND G~SPRAS =  'E'.

LOOP AT ITAB INTO WA.
    CLEAR: T030, SKAT.
    SELECT SINGLE * FROM T030 WHERE BKLAS = WA-BKLAS
                                AND KTOSL = 'BSX'.
    SELECT SINGLE * FROM SKAT WHERE SAKNR = T030-KONTS
                                AND SPRAS = 'E'.
    WRITE: / WA, T030-KONTS, SKAT-TXT20.
ENDLOOP.