有時ABAP我逼瘋了用非常簡單的任務,如在循環中遞增一個整數...增量整數
這裏是我的嘗試:
METHOD test.
DATA lv_id TYPE integer.
lv_id = 1.
LOOP AT x ASSIGNING <y>.
lv_id = lv_id+1.
ENDLOOP.
ENDMETHOD.
這將導致錯誤消息字段類型「我」不允許子域訪問。
有時ABAP我逼瘋了用非常簡單的任務,如在循環中遞增一個整數...增量整數
這裏是我的嘗試:
METHOD test.
DATA lv_id TYPE integer.
lv_id = 1.
LOOP AT x ASSIGNING <y>.
lv_id = lv_id+1.
ENDLOOP.
ENDMETHOD.
這將導致錯誤消息字段類型「我」不允許子域訪問。
你的意思是這樣的:
ADD 1 to lv_id.
順便說一句,當你遍歷一個內部表中,SY-TABIX有循環計數器。
你已經自己回答了這個問題,反而使事情更清楚一點:
variable + 1
是一個算術表達式 - 加1到變量的值。
variable+1
是對字符變量的偏移操作。例如,如果變量包含ABC
,variable+1
是BC
。
這在處理NUMC時會特別令人困惑。例如,用variable = '4711'
,variable + 1
評估爲4712
,而variable+1
爲'711'
(字符序列)。
您看到的錯誤發生是因爲無法對非字符變量執行索引操作。
感謝您的支持交代。我確信我不會再犯這個錯誤;) – Ben 2010-06-07 14:39:30
簡單
DATA:gv_inc I型。
地方這種說法在循環
gv_inc = gv_inc + 1。
如果您要增加每個循環的循環次數,您可以直接獲取表格大小。
describe table x lines data(lv_id). "Out side of the loop.
謝謝,非常有幫助! – Ben 2010-06-07 14:37:52
只要注意循環內的循環。哦,如果你正在用'DO..TIMES x'循環,那麼循環計數器就是'SY-INDEX'。是的,ABAP是一種非常不一致的語言。 – Marius 2013-10-23 15:47:19
SY-TABIX不包含循環計數器,它包含表索引。這些往往是不同的價值觀。例如,如果我將LOOP AT消息寫入msg WHERE type ='E'',循環實際運行的第一次可能會在第四行,並且sy-tabix的值將是4. – Eric 2014-07-22 18:21:45