日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

loop循環時須注意效率問題

系統 2631 0

以前寫循環時,都是一條記錄一條記錄的比較,代碼示例如下:

loop at S_VAL_CHAR into VAL_CHAR.
??? if VAL_CHAR-CHARACT eq 'P0008_7'."箱型
??????? IT_ITEM-BOX = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'S0012'."客戶編號
??????? IT_ITEM-CLIENT_CODE = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'CP_CW'."客戶編號
??????? IT_ITEM-CP_CW = VAL_CHAR-VALUE_CHAR.
??? ENDIF.
ENDLOOP.

這樣的話要循環lines(? S_VAL_CHAR ).

應該改成如下,效率應該會好一點.

loop at S_VAL_CHAR into VAL_CHAR WHERE CHARACT eq 'P0008_7' OR CHARACT eq 'S0012' OR CHARACT eq 'CP_CW'.
??? if VAL_CHAR-CHARACT eq 'P0008_7'."箱型
??????? IT_ITEM-BOX = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'S0012'."客戶編號
??????? IT_ITEM-CLIENT_CODE = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'CP_CW'."客戶編號
??????? IT_ITEM-CP_CW = VAL_CHAR-VALUE_CHAR.
??? ENDIF.
ENDLOOP.

?若條件很多,條件語句寫起來太長,可用range,代碼如下:

data:lr_character type range of BAPI1003_ALLOC_VALUES_CHAR-CHARACT,
lr_character_line like line of lr_character.
CLEAR: lr_character_line,lr_character[].
lr_character_line = 'IEQ'.
lr_character_line-low = 'P0008_7'.
append lr_character_line to lr_character.

CLEAR: lr_character_line.
lr_character_line = 'IEQ'.
lr_character_line-low = 'S0012'.
append lr_character_line to lr_character.

CLEAR: lr_character_line.
lr_character_line = 'IEQ'.
lr_character_line-low = 'CP_CW'.
append lr_character_line to lr_character.

loop at S_VAL_CHAR into VAL_CHAR WHERE CHARACT in lr_character.
??? if VAL_CHAR-CHARACT eq 'P0008_7'."箱型
??????? IT_ITEM-BOX = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'S0012'."客戶編號
??????? IT_ITEM-CLIENT_CODE = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'CP_CW'."客戶編號
??????? IT_ITEM-CP_CW = VAL_CHAR-VALUE_CHAR.
??? ENDIF.
ENDLOOP.

?

繼續優化一下,把那些重復的代碼提取出來,最后如下:

data:?? ?lr_character type range of BAPI1003_ALLOC_VALUES_CHAR-CHARACT,
?? ??? ??? ?lr_character_line like line of lr_character.
?? ??? ??? ?
form ADD_CHARACTER_TO_RANGE USING value(s) CHANGING r.
??? clear lr_character_line.
??? lr_character_line = 'IEQ'.
??? lr_character_line-low = s.
??? append lr_character_line to lr_character.
ENDFORM.

CLEAR: lr_character[].
perform ADD_CHARACTER_TO_RANGE using 'P0008_7' changing lr_character.
perform ADD_CHARACTER_TO_RANGE using 'S0012' changing lr_character.
perform ADD_CHARACTER_TO_RANGE using 'CP_CW' changing lr_character.

loop at S_VAL_CHAR into VAL_CHAR WHERE CHARACT in lr_character.
??? if VAL_CHAR-CHARACT eq 'P0008_7'."箱型
??????? IT_ITEM-BOX = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'S0012'."客戶編號
??????? IT_ITEM-CLIENT_CODE = VAL_CHAR-VALUE_CHAR.
??? ELSEIF VAL_CHAR-CHARACT eq 'CP_CW'."客戶編號
??????? IT_ITEM-CP_CW = VAL_CHAR-VALUE_CHAR.
??? ENDIF.
ENDLOOP.?

loop循環時須注意效率問題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 罗江县| 民县| 澄江县| 康乐县| 石台县| 汶上县| 陇南市| 类乌齐县| 五大连池市| 栖霞市| 佛坪县| 金溪县| 集贤县| 宝兴县| 黔西| 靖安县| 咸宁市| 运城市| 集贤县| 白山市| 开封县| 手游| 桐乡市| 聊城市| 新和县| 延寿县| 通州区| 石景山区| 鹰潭市| 东辽县| 玛纳斯县| 江阴市| 高淳县| 临夏县| 广宁县| 汶上县| 新竹县| 吉水县| 焉耆| 高雄县| 蓬莱市|