* 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
Friday, November 23, 2007
Recursion with Loop Checking in SAP
Labels:
Recursion with Loop Checking
Subscribe to:
Post Comments (Atom)
Blog Archive
-
▼
2007
(952)
-
▼
November
(716)
- SAP Paper Documents
- SAP Repository
- SAP R/3 Implementation and Maintenance Tips
- ABAP/4 programming language overview
- The interactive eLearning system for ABAP™
- Helpful System Administration ABAPS
- free download abap programmin pdf book
- examples of real time objects in sap abap(1)
- examples of real time objects in sap abap
- work flow example2
- Workflow tips
- Miscellaneous sap abap faq
- BDC , LSMW, Conversions faq in abap
- Sap Scripts & Smart forms faqs in abap
- performance tuning in abap faqs
- Real Time BDC & LSMW faqs
- Real Time ABAP Internal Tables faqs
- Real Time ABAP Reports faqs
- Real Time questions ..in sap ABAP
- SAP ABAP FAQ (Technical)
- ABAP and Unicode
- ABAP and JavaScript
- ABAP Objects
- ABAP Database Access
- Running ABAP Programs
- ABAP User Dialogs
- The ABAP Programming Language
- Creating and Changing ABAP Programs
- Overview of the Components of Application Programs
- Introduction to ABAP
- ABAP Programming Documentation
- FREE DOWNLOAD ALE, EDI & IDOCS
- Conversion of IDOCs to XML.pdf
- FREE DOWNLOAD IDOC Interface Technology
- FREE DOWNLOAD EDI, IDOC Interface
- FREE DOWNLOAD IDOC BOOK
- FREE DOWNLOAD LSMW - Idoc Inbound Processing
- FREE DOWNLOAD SAP ABAP Idoc Interface
- FREE DOWNLOAD Java for SAP
- FREE DOWNLOAD Java for ABAP Programmers
- FREE DOWNLOAD Java and BAPI technology for EP
- free download Building Web Services with Java and ...
- free download Enable SAP with the power of Javascript
- FREE DOWNLOAD ABAP Training Simulator
- FREE DOWNLOAD SAP Accounting Training Simulators
- free download SAPScripts Made Easy
- CONDENSE
- CONSTANTS
- ABAP Quick Viewer
- sap abap XXL (EXtended Export of Lists)
- Some ABAP/4 Query header line variable
- Understanding SAP Query
- ABAP/4 Query
- ABAP/4 Query Hints and Tips
- SAP Website Links Exchange for ABAP, Basis or Cons...
- sap abap Program for Generate IDoc
- sap abap program for Reads an existing Idoc and di...
- List of ABAP Function modules
- sap abap FTP programming
- sap abap program for Issuing an Unix Command from ...
- sap abap program for RFC call to get Server List
- sap abap program for A SAP Pop-out Calculator
- sap ABAP program for Timers and Auto-refresh
- sap abap program for WS_EXECUTE to called External...
- sap abap programming Execute DOS Command from ABAP...
- To execute a dos command from ABAP
- sap abap program for Make your SAPGUI Disappear an...
- sap abap program for Using Function Modules F4_FIL...
- abp program for How to Restrict the Select Options
- sap abap program for Take Values from Selection-Sc...
- sap abap program for Change Text Into Password
- sap abap program for Function Module for Encryptio...
- sap abap program for FM VRM_SET_VALUE To List Box
- sap abap program for Value Request For Parameter
- sap abap program for Pop a Message to specific SAP...
- ABAP Pop-out box for user confirmation
- sap ABAP program for POP-UP Window
- sap abap program Sample XML Source Code For SAP
- sap abap XML file to word document through SAP
- sap abap program for How to Write Web Reports in SAP
- sap abap conversion Program to Test Line Selection...
- sap abap program for String Handling in ABAP - Rem...
- sap abap program for Split String into two parts a...
- sap abap conversion Program For Printing Prime Number
- sap abap program for How can I get Ascii value of ...
- sap abap program for Figure to Words for India but...
- sap abap conversion program for Print Number Value...
- sap abap conversion program for Insert a special T...
- sap abap program for String Handling in ABAP - Rem...
- sap abap program for Split String into two parts a...
- sap abap conversion Program For Printing Prime Number
- sap abap program for How can I get Ascii value of ...
- sap abap program for Figure to Words for India but...
- sap abap conversion program for Print Number Value...
- sap abap conversion program for Insert a special T...
- sap abap program for Convert SAP Spool List to HTML
- sap program for Convert Month to Word in ABAP
- ABAP function to convert Number to Words
- sap abap program for How to Create Tree Control
- sap abap A sample Tree Programming
- sap abap program for Use BDS to Store Files Like E...
- Creating Chart in ABAP
- sap abap real time object for GUI_* WS_* Function ...
- abap real time object for Reading attribute of a B...
- sap abap real time object program for Splash Scree...
- ABAP Real time object for To Use BADI - Business A...
- sap ABAP Object Oriented SpreadSheet with "Unlimit...
- What are ABAP Objects?
- sap abap program for Prevent program from having m...
- sap abap program for Get the windows registry valu...
- sap abap program for How to Open files from the pr...
- sap abap program for Download and Upload your ABAP...
- sap abap program for Download/Upload SAP Users Fav...
- sap abap program for Download in Background in Exc...
- sap abap program for Excel Upload Alternative - KC...
- sap abap program for Uploading multiple multitab E...
- sap abap program for Uploading data directly from ...
- sap abap program for Use SAP code to list how many...
- sap abap program for How to Create Pivot Table in ...
- sap abap program for Sending Mail When The Purchas...
- sap abap program for Make E-mail Sender of PO the ...
- How can you send a fax from within ABAP/4 programs?
- sap abap program for How to send a report to an ex...
- sap abap program for Sending External email throug...
- Sending mail with attachment report in Background
- sap abap program for Sending mail with attachment
- abap program for Date, Month and Popup Related Fun...
- sap abap program for Determine Last Day of the Pre...
-
▼
November
(716)




No comments:
Post a Comment