Differences in “For all entries” and “Inner Join”

Differences in “For all entries” and “Inner Join”, how to use them for all entries in Sap, and how simple inner join is, I will explain to you with an example.

Example: To understand better I use a flight model, to fetch carrid, connid and fldate from sbook, and on the basis of sbook table I filer out and store them in sflight table.

EXAMPLE – FOR ALL ENTRIES


PROCESS AFTER INPUT.

Data: gt_sbook type TABLE OF sbook,
      gt_sflight TYPE TABLE OF sflight.

SELECT * FROM sbook INTO TABLE gt_sbook.
  IF sy-subrc = 0.
    SELECT * FROM sflight
      INTO TABLE gt_sflight
      FOR ALL ENTRIES IN gt_sbook
      WHERE carrid = gt_sbook-carrid.
      IF sy-subrc = 0.
        MESSAGE i000(yt029_msg).
      ENDIF.
  ENDIF.

EXAMPLE – INNER JOIN

To use inner join, you need to make a custom structure of required fields and make an internal table on the basis of the structure.


PROCESS AFTER INPUT.

TYPES: BEGIN OF st_struct,
        carrid TYPE sbook-carrid,
        connid TYPE sbook-connid,
        fldate TYPE sbook-fldate,
        customid TYPE sbook-customid,
        seatsocc TYPE sflight-seatsocc,
        seatsocc_f TYPE sflight-seatsocc_f,
        seatsocc_b TYPE sflight-seatsocc_b,
  END OF st_struct.

DATA: it_sbook TYPE TABLE OF st_struct,
      it_sflight TYPE TABLE OF sflight.

SELECT
  l~carrid
  l~connid
  l~fldate
  l~customid
  s~seatsocc
  s~seatsocc_f
  s~seatsocc_b
  FROM sbook AS l
  INNER JOIN sflight AS s on l~carrid = s~carrid
  INTO TABLE it_sbook.
  IF it_sbook is INITIAL.
     MESSAGE 'data not found' TYPE 'S'.
  ENDIF.

Leave a Comment