+ -

Pages

Saturday, July 26, 2014

Package size in SELECT statements

Package size can be used to retreive a spcific number of records at a time. This can be used if you for example only want tofinish  processing a limited amount of data at a time due to lack of memory.

The exampel below  read 50 records at a time from VBAK into an internal table, and selects the corresponding entries from vbap into an internal table. Then the two internal tables can be processed, and the next 50 records from VBAk can be read. remeber to reinitialize tha tables before the next read.

Note the usage of SELECT - ENDSELECT !

REPORT  z_test                        .

TYPES:
  BEGIN OF t_vbak,
    vbeln LIKE vbak-vbeln,
    erdat LIKE vbak-erdat,
  END OF t_vbak,
  BEGIN OF t_vbap,
    posnr  LIKE vbap-posnr,
    matnr  LIKE vbap-matnr,
    meins  LIKE vbap-meins,
  END OF t_vbap,
  BEGIN OF t_report,
    vbeln LIKE vbak-vbeln,
    erdat LIKE vbak-erdat,
    posnr  LIKE vbap-posnr,
    matnr  LIKE vbap-matnr,
    meins  LIKE vbap-meins,

END OF t_report.

DATA:
  li_vbak   TYPE t_vbak OCCURS 0,
  l_vbak    TYPE  t_vbak,
  li_vbap   TYPE t_vbap OCCURS 0,
  l_vbap    TYPE t_vbap,
  li_report TYPE t_report OCCURS 0,
  l_report  TYPE t_report.


START-OF-SELECTION.

  SELECT vbeln erdat
    FROM vbak
    INTO TABLE li_vbak PACKAGE SIZE 50.

    SELECT posnr matnr meins
      FROM vbap
      INTO TABLE li_vbap
      FOR ALL ENTRIES IN li_vbak
      WHERE vbeln = li_vbak-vbeln.
    IF sy-subrc = 0.

*   Now you have the two internal tables li_vbak and liÆ_vbap filled with data.
*   Do something with the data - remember to reinitialize internal tables
    ENDIF.

  ENDSELECT.

5 ABAP Tips: Package size in SELECT statements Package size can be used to retreive a spcific number of records at a time. This can be used if you for example only want tofinish  process...

No comments:

Post a Comment

< >