Saturday, February 7, 2015

Select for all entries in SAP ABAP


SELECT FOR ALL ENTRIES is the best alternative for SELECT WITH JOINS, this statement is very helpful for reading data from more than 2 tables.
The load on database will be very less.
Syntax : 

SELECT <FIELDS> FROM <DBTABLE1> INTO TABLE <ITAB1>
WHERE <CONDITION>.
SELECT <FIELDS> FROM <DBTABLE2> INTO <ITAB2> FOR ALL ENTRIES IN <ITAB1>
WHERE <FIELD1> = <ITAB1>-FIELD1.
**HERE WE ARE READING DATA 2 DATABASE TABLES, SEE WHERE CONDITIONS OF SECOND SELECT STATEMENT
Ensure before using SELECT FOR ALL ENTRIES
  • Parent internal table must not be empty ( If it is empty, where condition fails and it will get all records from database).
  • Remove all duplicate entries in parent internal table.
Here is the example of using SELECT FOR ALL ENTRIES in real-time applications
**DATA DECLERATIONS

DATA : IT_MARA TYPE TABLE OF MARA.

DATA : IT_MAKT TYPE TABLE OF MAKT .

**GET DATA FROM MARA TABLE

SELECT * FROM MARA INTO TABLE IT_MARA

 WHERE MATNR = '0001'.

**SORT MARA TABLE, TO DELETE ADJACENT DUPLICATES THE TABLE MUST BE SORTED IN ASCENDING ORDER

SORT IT_MARA ASCENDING .

**DELETE ADJACENT DUPLICATES FROM IT_MARA COMPARING ALL FIELDS

DELETE ADJACENT DUPLICATES FROM IT_MARA COMPARING ALL FIELDS.



**TO USE SELECT FOR ALL ENTRIES, THE PARENT INTERNAL TABLE MUST NOT BE EMPTY SO CHECK IT

IF IT_MARA IS NOT INITIAL. "CHECK PARENT INTERNAL TABLE 

**SECOND SELECT STATEMENT TO GET DATA FROM MAKT (MATERIAL DESCRIPTIONS), HERE WE ARE GETTING DATA

**FROM MAKT FOR ALL THE RECORDS IN IT_MARA, SEE WHERE CONDITION SHOULD BE PARENT INTERNAL TABLE 

SELECT * FROM MAKT INTO TABLE IT_MAKT

 FOR ALL ENTRIES IN IT_MARA

 WHERE MATNR = IT_MARA-MATNR.

ENDIF.





Select into corresponding fields

Select into corresponding is used to get data from a data base table into a user defined internal table or work area with out specifying the list of fields.
Syntax: SELECT * FROM <DATABASE TABLE>
        INTO CORRESPONDING FIELDS OF TABLE <INTERNAL TABLE> .
As per SAP standards select into corresponding statement is not advisable as it effects the performance of an application because it has to compare each field with database.

Example using select into corresponding

The below example explains how to use select into corresponding statement to get data into a database table with out specifying list of fields in select statement.
REPORT ZSAPN_SELECT_CORRESPONDING.
TYPES : BEGIN OF TY_MARA,
 "USER DEFINED TYPE WITH FOUR FIELDS
        MATNR TYPE MARA-MATNR,
        MTART TYPE MARA-MTART,
        MBRSH TYPE MARA-MBRSH,
        MEINS TYPE MARA-MEINS,
        END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA . "INTERNAL TABLE FOR USER DEFINED TYPE<br>DATA : WA_MARA TYPE TY_MARA . "WORK AREA FOR USER DEFINED TYPE<br>SELECT * FROM MARA
       INTO CORRESPONDING FIELDS OF TABLE IT_MARA
       UP TO 50 ROWS.<br>LOOP AT IT_MARA INTO WA_MARA.
WRITE :/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MBRSH, WA_MARA-MEINS.  "DISPLAY OUT PUT<br>ENDLOOP.

No comments:

Post a Comment