ABAP 递归用法
2017-01-10 17:04
218 查看
做个ABAP的递归用法
欢迎加群:455101474 讨论SAP相关问题
欢迎加群:455101474 讨论SAP相关问题
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
相关文章推荐
- ABAP—COLLECT的用法
- 黑马程序员_java基础知识总结(2)递归用法总结
- ABAP report常用的一些语句用法(包括字符串操作,变量动态操作)(持续更新)
- SAP ABAP编程 Ranges用法
- SQL with as 的用法 以及递归函数的写法 递归层次查询
- 递归形式与非递归形式的斐波那契数列的用法分析
- java递归的几种用法
- LIST-PROCESSING用法 ABAP任意时刻进行List输出_SAP
- 栈的常见递归用法
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- abap 中的语法 div / mod 的用法区别
- 经典算法之传染病问题 递归用法学习
- SAP ABAP AT NEW 和AT END OF的用法
- 八皇后的问题 递归用法学习
- ABAP中SELECTION-SCREEN用法
- C# TreeView的用法(递归加载节点内容)
- 函数的递归和getchar()的用法
- abap 中的语法 div / mod 的用法区别
- SAP-ABAP DESCRIBE FIELD/TABLE 用法
- SAP ABAP Collect的用法与实例(一)