Tips and Tricks for the ABAP® Programming Language
Y9020011: Constructions of an internal table with “… SORTED BY v2”
The internal table ITAB1 is declared with a OCCURS specification of 10 elements. If the number of existing table lines is greater than 10 lines, additional memory space is provided. If the addition ” … SORTED BY v2″ is applied in the APPEND command, no automatic expansion occurs. The table size is fixed according to the OCCURS specification.
“FORM AUFBAU-APPEND-ITAB1”
In the DO-loop, the table header line is generated 13 times and inserted with “APPEND ITAB1 SORTED BY XFELD” into the data base. A maximum of 10 table lines are made available within the table ITAB1. The smaller key term at a given time in “v2” is overwritten. Also in case of identical keys, the smaller key is removed.
ABAP™-Source-Code
You can cut and paste the source code directly into the ABAP™-Workbench.
REPORT Y9020011 LINE-SIZE 130. "Release 3.1G, 4.5A
************************************************************************
* Copyright (c) 1999 by CT-Team, 33415 Verl, http://www.ct-software.com
*
* You can use or modify this report for your own work as long
* as you don't try to sell or republish it.
* In no event will the author be liable for indirect, special,
* Incidental, or consequental damages (if any) arising out of
* the use of this report.
*
************************************************************************
BREAK-POINT.
MOVE: 'Creating of an internal table with ''APPEND itab SORTED BY..'' '
TO SY-TITLE.
************************************************************************
*************** Internal tables **********************
*//////////////////////////////////////////////////////////////////////*
DATA: BEGIN OF ITAB1 OCCURS 10,
XFELD(3) TYPE N, "this should be sorted ascending
YFELD(10) TYPE C,
CFELD(15) TYPE N,
END OF ITAB1.
*//////////////////////////////////////////////////////////////////////*
************* - Main Section *******************
*//////////////////////////////////////////////////////////////////////*
*
PERFORM AUFBAU-APPEND-ITAB1.
PERFORM DISPLAY-ITAB1.
*
*//////////////////////////////////////////////////////////////////////*
************* Subroutines *******************
*//////////////////////////////////////////////////////////////////////*
*
*
************************************************************************
* Creating of the table (OCCURS 10) with a do loop (DO 15 TIMES)
************************************************************************
FORM AUFBAU-APPEND-ITAB1.
*
DATA: Z_FELD(10) TYPE N.
FIELD-SYMBOLS: .
*.......................................................................
WRITE: /5 'Step 1: Creating the internal table ITAB1 ' COLOR 5.
WRITE: /5 ' 13 lines will be inserted:' COLOR 6.
ULINE. SKIP 2.
*.......................................................................
MOVE '123' TO ITAB1-XFELD.
MOVE ' ARTIKEL-' TO ITAB1-YFELD.
GET RUN TIME FIELD Z_FELD.
*.......................................................................
DO 13 TIMES.
IF SY-INDEX LE 8.
ADD 10 TO ITAB1-XFELD.
ENDIF.
GET RUN TIME FIELD Z_FELD.
ADD Z_FELD TO ITAB1-CFELD.
ASSIGN SY-ABCDE+SY-INDEX(1) TO . "look here while debug!
MOVE TO ITAB1-YFELD+9(1).
*#######################################################################
APPEND ITAB1 SORTED BY XFELD.
*#######################################################################
WRITE: /1 ITAB1-XFELD,
5 ITAB1-YFELD,
17 ITAB1-CFELD.
*
ENDDO.
*
ENDFORM.
************************************************************************
* Display the internal table ITAB
************************************************************************
FORM DISPLAY-ITAB1.
*
ULINE. SKIP 2.
WRITE: /5 'Step 2: The table ITAB only consists of 10 lines:' COLOR 5.
ULINE. SKIP 2.
*.......................................................................
LOOP AT ITAB1.
WRITE: /1 ITAB1-XFELD,
5 ITAB1-YFELD,
17 ITAB1-CFELD.
ENDLOOP.
*
ENDFORM.
************************************************************************
************************************************************************
******************* END OF PROGRAM *************************************
