* This program can be a model for any ABAP recursion.
* This is often needed to navigate down hierarchical data.
* One example is BOM.
* Important point is to chack for stack overflow
* and give RIGHT MESSAGE so that corrective action can be taken.
*&---------------------------------------------------------------------*
* Sample Program Showing Recursion in ABAP
* Simple BOM Tree walking in ABAP
* Takes Care of Diagnostics as well - detects Loops
* Hence never experience Stack Overflow!
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* http://www.sap-img.com/abap/reincarnation-of-reuse-alv-fieldcatalog-merge.htm
* has INCLUDE zjncinclude with FORM zjnc_dump_list
*&---------------------------------------------------------------------*
* Author Jayanta Narayan Choudhuri
* Flat 302
* 395 Jodhpur Park
* Kolkata 700 068
* Email sss@cal.vsnl.net.in
* URL: http://www.geocities.com/ojnc
REPORT zjncrecursion.
INCLUDE zjncinclude. " From www.sap-img.com
TABLES: makt.
CONSTANTS: maxlevels TYPE i VALUE 10.
TYPES: BEGIN OF ty_usage,
parent TYPE makt-matnr,
child TYPE makt-matnr,
usage TYPE mseg-menge,
END OF ty_usage.
DATA: wa_usage TYPE ty_usage,
it_usage TYPE STANDARD TABLE OF ty_usage. " USAGE data
TYPES: BEGIN OF ty_stack,
level TYPE h_level,
matnr TYPE makt-matnr,
menge TYPE mseg-menge,
END OF ty_stack.
DATA: istackpos TYPE i,
wa_stack TYPE ty_stack,
it_stack TYPE STANDARD TABLE OF ty_stack. "BOM Stack
TYPES: BEGIN OF ty_reqd,
matnr TYPE makt-matnr,
menge TYPE mseg-menge,
END OF ty_reqd.
DATA: wa_reqd TYPE ty_reqd,
it_reqd TYPE STANDARD TABLE OF ty_reqd. "NET Requirement of
RAW Material
PARAMETERS: p_build TYPE makt-matnr, "Target to Build
p_menge TYPE mseg-menge. "Quantity to Build
INITIALIZATION.
PERFORM f_usage_data.
START-OF-SELECTION.
istackpos = 0.
MOVE istackpos TO wa_stack-level.
MOVE p_build TO wa_stack-matnr.
MOVE p_menge TO wa_stack-menge.
APPEND wa_stack TO it_stack. " 1st PUSH
PERFORM f_explode USING p_build.
SORT it_reqd BY matnr.
PERFORM zjnc_dump_list USING 'IT_REQD' 'WA_REQD' 'Net RAW
Requirement'.
*&--------------------------------------------------------------------*
*& Form f_Explode
*&--------------------------------------------------------------------*
FORM f_explode USING p_pmatnr.
DATA: icount TYPE i,
totalreq TYPE mseg-menge.
istackpos = istackpos + 1. " PUSH
IF istackpos GE maxlevels.
PERFORM f_dumpstack. " terminate
LEAVE PROGRAM.
ENDIF.
icount = 0.
LOOP AT it_usage INTO wa_usage WHERE parent = p_pmatnr.
icount = icount + 1.
MOVE istackpos TO wa_stack-level.
MOVE wa_usage-child TO wa_stack-matnr.
MOVE wa_usage-usage TO wa_stack-menge.
APPEND wa_stack TO it_stack. " PUSH
PERFORM f_explode USING wa_usage-child.
ENDLOOP.
IF icount = 0. " then LEAF
totalreq = '1.0'.
LOOP AT it_stack INTO wa_stack.
totalreq = totalreq * wa_stack-menge.
ENDLOOP.
MOVE p_pmatnr TO wa_reqd-matnr.
MOVE totalreq TO wa_reqd-menge.
COLLECT wa_reqd INTO it_reqd.
ENDIF.
DELETE it_stack INDEX istackpos. " POP
istackpos = istackpos - 1. " POP
ENDFORM. "f_Explode
*&--------------------------------------------------------------------*
*& Form f_dumpstack
*&--------------------------------------------------------------------*
FORM f_dumpstack.
PERFORM zjnc_dump_list USING 'IT_STACK' 'WA_STACK' 'LOOP in BOM
STACK'.
ENDFORM. "f_dumpstack
*&--------------------------------------------------------------------*
*& Form f_usage_data for Hungry Bengali ABAPer in Kolkata
*&--------------------------------------------------------------------*
FORM f_usage_data.
MOVE 'FISHCURRY' TO wa_usage-parent.
MOVE 'SPICES' TO wa_usage-child.
MOVE 10 TO wa_usage-usage.
APPEND wa_usage TO it_usage.
MOVE 'FISHCURRY' TO wa_usage-parent.
MOVE 'MIRCHI' TO wa_usage-child.
MOVE 5 TO wa_usage-usage.
APPEND wa_usage TO it_usage.
MOVE 'FISHCURRY' TO wa_usage-parent.
MOVE 'ALOO' TO wa_usage-child.
MOVE 8 TO wa_usage-usage.
APPEND wa_usage TO it_usage.
MOVE 'SPICES' TO wa_usage-parent.
MOVE 'MIRCHI' TO wa_usage-child.
MOVE 2 TO wa_usage-usage.
APPEND wa_usage TO it_usage.
MOVE 'SPICES' TO wa_usage-parent.
MOVE 'JEERA' TO wa_usage-child.
MOVE 3 TO wa_usage-usage.
APPEND wa_usage TO it_usage.
MOVE 'SPICES' TO wa_usage-parent.
MOVE 'HALUD' TO wa_usage-child.
MOVE 7 TO wa_usage-usage.
APPEND wa_usage TO it_usage.
ENDFORM. "f_usage_data
Tuesday, April 22, 2008
Recursion with Loop Checking in SAP ABAP Interview Questions
Posted by Anonymous at 1:50 AM
Labels: ABAP Interview Questions
Subscribe to:
Post Comments (Atom)
Content
-
►
2009
(2)
- ► 09/06 - 09/13 (1)
- ► 03/01 - 03/08 (1)
-
▼
2008
(207)
- ► 11/23 - 11/30 (1)
-
▼
04/20 - 04/27
(70)
- The Other 50 ABAP Interview Faq's ABAP Interview Q...
- ABAP Certification Sample Questions for Abapers AB...
- Important ABAP FAQ's ABAP Interview Questions
- SAP ABAP Interview Questions And Answers ABAP Inte...
- ABAP Frequently Asked Question ABAP Interview Ques...
- Answers to some ABAP Interview Questions ABAP Inte...
- General - Number Range Generation ABAP Interview Q...
- Extract the smtp email address ABAP Interview Ques...
- How to Get the Version Value When I Print the PO A...
- Attach T-Codes to Area Menu ABAP Interview Questions
- What is the use of Authorization Checks? ABAP Inte...
- Difference Between BADI and User Exits ABAP Interv...
- BAPI Conventions ABAP Interview Questions
- BDC ABAP Interview Questions
- SAP BDC Interview Questions And Answers ABAP Inter...
- BDC & LSMW ABAP Interview Questions
- ABAP Clipboard Utilities for Beautiful Commented C...
- Using Fonts command in ABAP ABAP Interview Questions
- Using Different Color in ABAP ABAP Interview Quest...
- ABAP Questions Commonly Asked 1 ABAP Interview Que...
- Create Push Buttons in Application Tool Bar ABAP I...
- A demo program to create subscreen in your ABAP Pr...
- Display Active Exits in a ABAP System ABAP Intervi...
- Displaying Graphics using an ABAP Program ABAP Int...
- Doubt in Unicode Enabling ABAP Interview Questions
- Example Code For Drill Down Report ABAP Interview ...
- SAP ABAP FAQ (Technical) ABAP Interview Questions
- Faq Miscellaneous ABAP Interview Questions
- Field exits (SMOD/CMOD) Questions and Answers ABAP...
- Inserting Website Links in ABAP ABAP Interview Que...
- Blocking Searchhelp and Create New Searchhelp ABAP...
- Attach a Search Help to the Screen Field ABAP Inte...
- Splash Screen in ABAP ABAP Interview Questions
- SY-UCOMM and OK_CODE in Dialog Program ABAP Interv...
- Change the Input Fields Dynamically in a Screen AB...
- A Sample Hide & Get Cursor in Interactive Programm...
- Scrolling in Table Control ABAP Interview Questions
- Common used of Dialog Screen for Display, Change, ...
- Internal Tables ABAP Interview Questions
- ABAP Interview Questions 1
- Interview Question on BAPI, RFC, ABAP Objects, Tab...
- Making a Java Editor in ABAP and compiling it ABAP...
- Will ABAP be Obsolete? Will JAVA Replace ABAP? ABA...
- Learning ABAP or SAP Application ABAP Interview Qu...
- List Box in ABAP Report ABAP Interview Questions
- List Of User Exit Related to VL01N ABAP Interview ...
- LOGICAL DATABASE ABAP Interview Questions
- Recursion with Loop Checking in SAP ABAP Interview...
- Maintaining Translations for Work item texts and A...
- MODULARIZATION Technique 2. ABAP Interview Questions
- Q. What is a function module? ABAP Interview Quest...
- What are ABAP Objects? ABAP Interview Questions
- Splash Screen in ABAP using OO ABAP Interview Ques...
- Passing data from one ABAP program to another ABAP...
- Performance tuning ABAP Interview Questions
- Performance Tuning ABAP Interview Questions
- Real Time questions ABAP Interview Questions
- How to find out Total No of Pages of a Report Outp...
- General - Reporting Tree in ABAP Interview Questions
- REPORTS ABAP Interview Questions
- Sample Test Questions on ABAP Programming
- ABAP Frequently Asked Question 45
- ABAP Frequently Asked Question locks
- ABAP Frequently Asked Question BDC
- ABAP Frequently Asked Question RFC
- SAP ABAP Interview Questions And Answers 1
- SAP ABAP Interview Questions And Answers free ABAP...
- Sap Scripts & Smart forms
- Different Types of Selection Screens
- SQL Tool for ABAP Yes4SQL -- Both Native & Open SQL
- ► 04/13 - 04/20 (51)
- ► 03/16 - 03/23 (44)
- ► 02/24 - 03/02 (9)
- ► 02/17 - 02/24 (32)
No comments:
Post a Comment