Tips and Tricks for the ABAP® Programming Language
Y9030011: List generation with FIELD-GROUPS and random number generator ‘QF05_RANDOM’
Through the function module ‘QF05_RANDOM’ random numbers can be created. In connection with e.g. FIELD-GROUPS different list steps are possible.
ABAP™-Source-Code
You can cut and paste the source code directly into the ABAP™-Workbench.
REPORT Y9030011 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. * *//////////////////////////////////////////////////////////////////////* * Subject: Creation of lists mit extra data BREAK-POINT. MOVE: 'List creation with ''FIELD-GROUPS, INSERT, EXTRACT ...'' ' TO SY-TITLE. *//////////////////////////////////////////////////////////////////////* ************************************************************************ * Declaration of variables * ************************************************************************ * DATA: LAGERORT(4) TYPE N. "Header DATA: LAGERREGAL(3) TYPE N. " DATA: PALETTE(1) TYPE N. " DATA: MENGE1(4) TYPE P. "Group DATA: MENGE2(4) TYPE P. " DATA: MENGE3(4) TYPE P. " *....................................................................... DATA: OMENGE1(4) TYPE P. "Computing fields DATA: OMENGE2(4) TYPE P. " DATA: OMENGE3(4) TYPE P. " DATA: NMENGE1(4) TYPE P. " DATA: NMENGE2(4) TYPE P. " DATA: NMENGE3(4) TYPE P. " DATA: GMENGE1(4) TYPE P. " DATA: GMENGE2(4) TYPE P. " DATA: GMENGE3(4) TYPE P. " *....................................................................... DATA: ZAHL LIKE QF00-RAN_NUMBER. "Help fields DATA: EWERT TYPE I. " DATA: PALETTE2(2) TYPE N. " * ************************************************************************ * Assigning of fields to FIELD-GROUPS (no memory consumption) * ************************************************************************ *..................Deklaration of groups .............................. FIELD-GROUPS: HEADER, GRUPPE_A. * *..................Deklaration of groups fields ........................ INSERT LAGERORT LAGERREGAL PALETTE INTO HEADER. INSERT MENGE1 MENGE2 MENGE3 INTO GRUPPE_A. *//////////////////////////////////////////////////////////////////////* *-------------------------- Main Section ----------------------------* *//////////////////////////////////////////////////////////////////////* * PERFORM AUFBAU-DATENVOLUMEN. SORT. "the extra data will be sorted PERFORM DISPLAY. PERFORM AUSWERTEN-EXTRAKT-BESTAND. * *//////////////////////////////////////////////////////////////////////* ************* Subroutines ******************* *//////////////////////////////////////////////////////////////////////* * ************************************************************************ * The data volume is created ************************************************************************ FORM AUFBAU-DATENVOLUMEN. * SKIP 2. ULINE. WRITE:/1 'Step 1: The data volume will be generated ' COLOR 5. *....................................................................... * DO 5 TIMES. PERFORM ZUFALL USING ZAHL EWERT. MOVE EWERT TO LAGERORT. DO 3 TIMES. PERFORM ZUFALL USING ZAHL EWERT. MOVE EWERT TO LAGERREGAL. DO 8 TIMES. PERFORM ZUFALL USING ZAHL EWERT. MOVE EWERT TO PALETTE2. IF PALETTE2+1(1) EQ 0. MOVE PALETTE2+0(1) TO PALETTE. ELSE. MOVE PALETTE2+1(1) TO PALETTE. ENDIF. DO 1 TIMES. PERFORM ZUFALL USING ZAHL EWERT. MENGE3 = EWERT * LAGERREGAL. MENGE2 = EWERT * PALETTE2. MENGE1 = EWERT * LAGERORT. EXTRACT GRUPPE_A. ENDDO. ENDDO. ENDDO. ENDDO. * ENDFORM. ************************************************************************ * Determination of a random number from 1 to 100 ************************************************************************ FORM ZUFALL USING ZAHL EWERT. *....................................................................... DO 10 TIMES. CALL FUNCTION 'QF05_RANDOM' IMPORTING RAN_NUMBER = ZAHL. * ZAHL = ZAHL * 100. MOVE ZAHL TO EWERT. IF EWERT NE 0. EXIT. ENDIF. ENDDO. * IF EWERT EQ 0. WRITE: /1 'Attention, random number is ''0'', please check routine'. ENDIF. * ENDFORM. ************************************************************************ * Display of the generated data volume ************************************************************************ FORM DISPLAY. * SKIP 2. ULINE. WRITE:/1 'Step 2: The generated data volumne after SORT: ' COLOR 5. SKIP 1. * LOOP. WRITE: /1 'Lagerort:', 11 LAGERORT, 17 'Lagerregal:', 29 LAGERREGAL, 33 'Palette:', 42 PALETTE, 48 MENGE1, 58 MENGE2, 68 MENGE3. ENDLOOP. * ENDFORM. ************************************************************************ * The extracted data will evaluated ************************************************************************ FORM AUSWERTEN-EXTRAKT-BESTAND. * SKIP 2. ULINE. WRITE:/1 'Step 3: The extracted data will be evaluated' COLOR 6. *....................................................................... LOOP. *....................... AT NEW ...................................... AT NEW LAGERORT. SKIP 2. WRITE: /1 'LAGERORT:', LAGERORT. ENDAT. *....................................................................... AT NEW LAGERREGAL. SKIP 1. WRITE: /5 'LAGERREGAL:', LAGERREGAL, 46 'Menge1 Menge2 Menge3'. ENDAT. *....................... AT END ...................................... AT END OF PALETTE. WRITE: /12 'Summe PALETTE ', PALETTE. PERFORM GESAMT-ONUMMER. PERFORM DISPLAY-EXTRAKT. ENDAT. *....................................................................... AT END OF LAGERREGAL. WRITE: /7 'Summe LAGERREGAL:', LAGERREGAL. PERFORM GESAMT-LNUMMER. WRITE: 45 OMENGE1, 55 OMENGE2, 65 OMENGE3. CLEAR: OMENGE1, OMENGE2, OMENGE3. ENDAT. *....................................................................... AT END OF LAGERORT. WRITE: /3 'Summe LAGERORT:', LAGERORT. WRITE: 45 NMENGE1, 55 NMENGE2, 65 NMENGE3. PERFORM GESAMT-MENGE. CLEAR: NMENGE1, NMENGE2, NMENGE3. ENDAT. *....................................................................... ENDLOOP. * SKIP 3. ULINE. WRITE: /1 'Sum of all LAGERORTE:', 45 GMENGE1, 55 GMENGE2, 65 GMENGE3. * ENDFORM. ************************************************************************ * The content of the computing fields will be listed ************************************************************************ FORM DISPLAY-EXTRAKT. * WRITE: 45 MENGE1, 55 MENGE2, 65 MENGE3. *.........................further aktion ............................ * * * ENDFORM. ************************************************************************ * FIELDGROUP LAGERREGAL ************************************************************************ FORM GESAMT-LNUMMER. * *....................................................................... ADD OMENGE1 TO NMENGE1. ADD OMENGE2 TO NMENGE2. ADD OMENGE3 TO NMENGE3. *.........................further aktion ............................ * * ENDFORM. ************************************************************************ * FIELDGROUP Paletten ************************************************************************ FORM GESAMT-ONUMMER. * *....................................................................... ADD MENGE1 TO OMENGE1. ADD MENGE2 TO OMENGE2. ADD MENGE3 TO OMENGE3. *.........................further aktion ............................ * * ENDFORM. ************************************************************************ * FIELDGROUP LAGERORT ************************************************************************ FORM GESAMT-MENGE. * *....................................................................... ADD NMENGE1 TO GMENGE1. ADD NMENGE2 TO GMENGE2. ADD NMENGE3 TO GMENGE3. *.........................further aktion ............................ * * ENDFORM. ************************************************************************ ******************* END OF PROGRAM ************************************* ************************************************************************