日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP算法:找出递归的物料

發(fā)布時間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP算法:找出递归的物料 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天有人在群里問了這樣一個問題,一個內(nèi)表有2個字段:f1和f2,每個條目代表物料f1消耗了f2。有一種可能是,f1消耗了f2,f2直接或間接又消耗了f1,形成一種遞歸關(guān)系。 現(xiàn)在希望找出內(nèi)表中所有的這種物料,因為這些物料對成本分?jǐn)傆胁涣加绊憽1热?#xff1a;[a,b]?[b,c] [a,d] [b,d] [c,a];則結(jié)果包含a,b,c,不包含d。乍一看需求有點暈,仔細(xì)一想,其實就是將內(nèi)表中所有條目,兩兩之間進(jìn)行運算而已。 程序思路:每次取內(nèi)表中的一個條目,將它與內(nèi)表中位于其前面的所有條目進(jìn)行運算;運算過程中,如果生成了新對應(yīng)關(guān)系,則將其添加到內(nèi)表后面(也等待著與內(nèi)表中所有條目進(jìn)行運算);如此循環(huán)……等到內(nèi)表循環(huán)結(jié)束,所有可能的對應(yīng)關(guān)系,自然都被考慮到了。
DATA:?BEGIN?OF?wa1,
????????f1?TYPE?c,
????????f2?TYPE?c,
??????END?OF?wa1.

DATA:?wa2?LIKE?wa1,
??????tabix?LIKE?sy-tabix,
??????itab?LIKE?TABLE?OF?wa1?WITH?HEADER?LINE,
??????itab2?TYPE?TABLE?OF?c?WITH?HEADER?LINE.

itab-f1?=?'a'.
itab-f2?=?'b'.
APPEND?itab.
itab-f1?=?'b'.
itab-f2?=?'c'.
APPEND?itab.
itab-f1?=?'a'.
itab-f2?=?'d'.
APPEND?itab.
itab-f1?=?'b'.
itab-f2?=?'d'.
APPEND?itab.
itab-f1?=?'c'.
itab-f2?=?'a'.
APPEND?itab.

LOOP?AT?itab?INTO?wa1.
??tabix?=?sy-tabix?-?1.
??LOOP?AT?itab?INTO?wa2?TO?tabix.
????IF?wa2-f2?=?wa1-f1.?"運算一
??????READ?TABLE?itab?WITH?KEY
????????f1?=?wa2-f1?f2?=?wa1-f2.
??????IF?sy-subrc?<>?0.
????????IF?wa2-f1?=?wa1-f2.
??????????APPEND?wa2-f1?TO?itab2.?"存到結(jié)果表
????????ELSE.
??????????itab-f1?=?wa2-f1.
??????????itab-f2?=?wa1-f2.
??????????APPEND?itab.?"添加新對應(yīng)關(guān)系到內(nèi)表
????????ENDIF.
??????ENDIF.
????ENDIF.
????IF?wa2-f1?=?wa1-f2.?"運算二
??????READ?TABLE?itab?WITH?KEY
????????f1?=?wa1-f1?f2?=?wa2-f2.
??????IF?sy-subrc?<>?0.
????????IF?wa1-f1?=?wa2-f2.
??????????APPEND?wa1-f1?TO?itab2.?"存到結(jié)果表
????????ELSE.
??????????itab-f1?=?wa1-f1.
??????????itab-f2?=?wa2-f2.
??????????APPEND?itab.?"添加新對應(yīng)關(guān)系到內(nèi)表
????????ENDIF.
??????ENDIF.
????ENDIF.
??ENDLOOP.
ENDLOOP.

SORT?itab2.
DELETE?ADJACENT?DUPLICATES?FROM?itab2.
LOOP?AT?itab2.?"輸出結(jié)果表
??WRITE:?/?itab2.
ENDLOOP.
LOOP?AT?itab.?"輸出所有對應(yīng)關(guān)系作參考
??WRITE:?/?itab-f1,?itab-f2.
ENDLOOP.

程序運行過程: 1,[a,b][b,c][a,d][b,d][c,a],他們相互間運算完畢后,生成了新對應(yīng)關(guān)系[a,c][c,b][b,a][c,d]; 2,[a,c][c,b][b,a][c,d]這些新對應(yīng)關(guān)系與老對應(yīng)關(guān)系兩兩運算,同時相互間也兩兩運算,生成了新對應(yīng)關(guān)系[c,c][a,a][b,b]。這是特殊的對應(yīng)關(guān)系(即遞歸關(guān)系),它們不需要重新參與運算,直接寫到了我們的結(jié)果表。 由于沒有新對應(yīng)關(guān)系的生成,程序運行完畢,結(jié)果表中形成了a,b,c三條記錄。

總結(jié)

以上是生活随笔為你收集整理的ABAP算法:找出递归的物料的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。