[英]I don't understand how READ TABLE inside LOOP works
在我的代碼中,我需要在一個循環內進行迭代,並且對於循環中的每次迭代,我必須填充某些單元格中值不同的數據。
閱讀 sap 文檔后,我得出的結論是,我需要使用讀取表將每次迭代填充到稍后我將處理的工作區域中。
我已經聲明了以下表格:
it_sap帶有來自 VBRK 和 VBRP 表的連接內容
wa_sap作為工作區
it_ext包含來自外部數據庫的另一個連接的內容
wa_ext作為工作區。
這就是我的循環實際上的樣子:
LOOP AT it_sap INTO wa_sap.
wa_sap-tipo_documento = wa_sap-xblnr+2(1). " Linea
tiket = wa_sap-xblnr+9(7).
creationyear = wa_sap-fkdat+0(4).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = tiket
IMPORTING
output = tiket.
CONCATENATE creationyear '/' wa_sap-vkorg wa_sap-xblnr+7(2) '/' tiket INTO wa_sap-codalb.
"CLEAR position.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = wa_sap-posnr
IMPORTING
output = position.
READ TABLE it_ext INTO wa_ext
WITH KEY codalb = wa_ext-codalb
tipo_documento = wa_ext-tipo_documento.
IF sy-subrc = 0.
wa_sap-import_total = wa_ext-import_total.
wa_sap-import = wa_ext-import.
wa_sap-price = wa_ext-price.
wa_sap-price_total = wa_ext-price_total.
wa_sap-disccount = wa_ext-disccount.
wa_sap-quantity = wa_ext-quantity.
MODIFY it_sap FROM wa_sap.
IF wa_sap-importe_total <> wa_sap-netwr. "AND position = 1 .
APPEND wa_sap TO it_results.
ENDIF.
ENDIF.
ENDLOOP.
它是如何工作的? 我知道通過使用條件sy-subrc = 0
我可以看到前面的語句是真還是假,但我不太明白它是如何使用READ
而不是SELECT
steament 的。
謝謝你們!
LOOP AT
迭代內部表的所有行。
READ TABLE
從內部表中最多檢索一行。
sy-subrc
為您提供有關上sy-subrc
語句工作情況的詳細信息。 它的值因語句而異。 在READ TABLE
情況下,它會告訴您是否找到了 ( = 0
) 行( <> 0
)。 IF sy-subrc = 0
在您的READ TABLE
之后意味着“如果您找到這樣的行”。
如果沒有一些有用的示例數據,很難理解您的代碼應該做什么以及它是否正確執行。 正如 József Szikszai 在對您的問題的評論中指出的那樣, READ TABLE
的條件依賴於wa_ext
,它從未填充在您的示例代碼中,因此乍一看,這看起來根本不起作用,或者您的示例不包含一些初始化代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.