FOR ALL ENTRIES

 FOR ALL ENTRIES

For all entries is the best choice when you want to retrieve data from multiple tables. It is the best alternative to SELECT WITH JOINS, as for all entries improves the performance and reduces the load of database. 

The syntax to use FOR ALL ENTRIES is as follows-

IF <PARENTAL INTERNAL TABLE> IS NOT INITIAL.
      SELECT <FIELDS>
        FROM <TABLENAME> INTO TABLE <INTERNAL TABLE NAME>
        FOR ALL ENTRIES IN <PARENTAL INTERNAL TABLE>
        WHERE <FIELDNAME> = <PARENTAL INTERNAL TABLE>-<FIELDNAME>.
ENDIF.

For example-

IF IT1[] IS NOT INITIAL.
      SELECT EBELN AEDAT ZTERM LIFNR
        FROM EKKO INTO TABLE IT2
        FOR ALL ENTRIES IN IT1
        WHERE LIFNR IT1-LIFNR.
    ENDIF.

The only condition to use FOR ALL ENTRIES is that the Parental Internal Table should not be empty.

You need to create the same number of local structures as the number of tables from where you want to retrieve the data, and also one structure for the common fields to merge at one table.

FOR ALL ENTRIES


Let us take a requirement to understand the concept in more detail-

Requirement - Display data from the tables LFA1 (LIFNR, NAME1, ORT01) , EKKO (EBELN, AEDAT, ZTERM) , EKPO (EBELP, MATNR) with two pushbuttons to display the data and to exit from the program.


The FOR ALL ENTRIES PROGRAM for the above requirement is as follows-

REPORT ZFORALLENTRIES_PRACTICE NO STANDARD PAGE HEADING.

TABLESLFA1EKKOEKPOSSCRFIELDS.

SELECTION-SCREENBEGIN OF LINE.
  SELECTION-SCREENPUSHBUTTON (10BUTTON1 USER-COMMAND DISPLAY,
                    PUSHBUTTON (10BUTTON2 USER-COMMAND EXIT.
SELECTION-SCREENEND OF LINE.

SELECTION-SCREEN:  BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
  SELECT-OPTIONSS_LIFNR FOR LFA1-LIFNR.
SELECTION-SCREENEND OF BLOCK B1.

TYPESBEGIN OF TY_STR1,
       LIFNR TYPE LIFNR,
       NAME1 TYPE NAME1_GP,
       ORT01 TYPE ORT01_GP,
       END OF TY_STR1,

       BEGIN OF TY_STR2,
       EBELN TYPE EBELN,
       AEDAT TYPE ERDAT,
       ZTERM TYPE DZTERM,
       LIFNR TYPE LIFNR,
       END OF TY_STR2,

       BEGIN OF TY_STR3,
       EBELP TYPE EBELP,
       MATNR TYPE MATNR,
       EBELN TYPE EBELN,
       END OF TY_STR3,

       BEGIN OF TY_STR4,
       LIFNR TYPE LIFNR,
       NAME1 TYPE NAME1,
       ORT01 TYPE ORT01,
       EBELN TYPE EBELN,
       AEDAT TYPE ERDAT,
       ZTERM TYPE DZTERM,
       EBELP TYPE EBELP,
       MATNR TYPE MATNR,
       END OF TY_STR4.

DATAIT1 TYPE TABLE OF TY_STR1,
      WA1 TYPE          TY_STR1,

      IT2 TYPE TABLE OF TY_STR2,
      WA2 TYPE          TY_STR2,

      IT3 TYPE TABLE OF TY_STR3,
      WA3 TYPE          TY_STR3,

      IT4 TYPE TABLE OF TY_STR4,
      WA4 TYPE          TY_STR4.

INITIALIZATION.
BUTTON1 'DISPLAY'.
BUTTON2 'EXIT'.

AT SELECTION-SCREEN ON S_LIFNR.
   IF SSCRFIELDS-UCOMM 'DISPLAY'.
     SSCRFIELDS-UCOMM 'ONLI'.
   ELSEIF SSCRFIELDS-UCOMM 'EXIT'.
     LEAVE PROGRAM.
  ENDIF.

START-OF-SELECTION.
  SELECT LIFNR NAME1 ORT01
    FROM LFA1 INTO TABLE IT1
    WHERE LIFNR IN S_LIFNR.

    IF IT1[] IS NOT INITIAL.
      SELECT EBELN AEDAT ZTERM LIFNR
        FROM EKKO INTO TABLE IT2
        FOR ALL ENTRIES IN IT1
        WHERE LIFNR IT1-LIFNR.
    ENDIF.

    IF IT2[] IS NOT INITIAL.
      SELECT EBELP MATNR EBELN
        FROM EKPO INTO TABLE IT3
        FOR ALL ENTRIES IN IT2
        WHERE EBELN IT2-EBELN.
    ENDIF.

    LOOP AT IT1 INTO WA1.
      MOVEWA1-LIFNR TO WA4-LIFNR,
            WA1-NAME1 TO WA4-NAME1,
            WA1-ORT01 TO WA4-ORT01.
      LOOP AT IT2 INTO WA2 WHERE LIFNR WA1-LIFNR.
        WA4-EBELN WA2-EBELN.
        WA4-AEDAT WA2-AEDAT.
        WA4-ZTERM WA2-ZTERM.
        LOOP AT IT3 INTO WA3 WHERE EBELN WA2-EBELN.
          MOVEWA3-EBELP TO WA4-EBELP,
                WA3-MATNR TO WA4-MATNR.
        APPEND WA4 TO IT4.
      ENDLOOP.
   ENDLOOP.
ENDLOOP.



WRITE:'LIFNR',
      10 'NAME1',
      30 'ORT01',
      45 'EBELN',
      60 'AEDAT',
      80 'ZTERM',
      100 'EBELP',
      120 'MATNR'.
ULINE.
SKIP.

LOOP AT IT4 INTO WA4.
  WRITE:/ WA4-LIFNR,
       10 WA4-NAME1,
       30 WA4-ORT01,
       45 WA4-EBELN,
       60 WA4-AEDAT,
       80 WA4-ZTERM,
       100 WA4-EBELP,
       120 WA4-MATNR.
ENDLOOP.
TOP-OF-PAGE.
WRITE:/65 'FOR ALL ENTRIES PROGRAM' COLOR 3.
ULINE.
SKIP.

The output for the above program is-



Comments