Skip to Content
author's profile photo Former Member
Former Member

Package size

What is the advantage of using PACKAGE SIZE clause of Select into Table stmt? How to use it and how does it work?

Add a comment
10|10000 characters needed characters exceeded

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Jan 31, 2008 at 04:43 AM

    PACKAGE SIZE n

    Works like ... INTO wa, except that the selected data is not placed in the internal table itab line by line, but in packets of n lines. The old contents of itab are overwritten.

    n <= 0 causes a runtime error.

    Internally, n is placed in a type I field. Here, the usual conversion rules apply (see MOVE).

    After leaving the processing loop, the contents of the internal table itab are undefined.

    If the result of the selection is a table, the data is retrieved in a processing loop introduced by SELECT and concluded by ENDSELECT. The processing passes through the loop once for each line read.

    Example

    Output a list of all airlines (with short description and name):

    DATA: itab TYPE STANDARD TABLE OF SCARR WITH NON-UNIQUE

    DEFAULT KEY INITIAL SIZE 10.

    FIELD-SYMBOLS: <FS> TYPE scarr.

    SELECT * INTO TABLE itab PACKAGE SIZE 20 FROM scarr.

    LOOP AT itab ASSIGNING <FS>.

    WRITE: / <FS>-carrid, <FS>-carrname.

    ENDLOOP.

    ENDSELECT.

    example 2

    Package size can be used if you for example only want to finish processing a limited amount of data at a time due to lack of memory.

    The example 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. Remember to reinitialize tha tables before the next read.

    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.

    Regards.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 31, 2008 at 02:18 PM

    You generally use the package size option if the resulting table would be to large to fit into memory. It gives you the advantage of being able to SELECT a reasonably large number of records at a time without running into the performance problems you get with an ENDSELECT.

    Rob

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.