2011-07-29 98 views
3

如何顯示結構內的值?看下面的例子:如何在ABAP中編寫結構?

DATA: BEGIN OF line, 
     col1 TYPE i, 
     col2 TYPE i, 
     END OF line. 

DATA: itab LIKE TABLE OF line, 
     jtab LIKE TABLE OF line. 

DO 3 TIMES. 
    line-col1 = sy-index. 
    line-col2 = sy-index ** 2. 
    APPEND line TO itab. 
ENDDO. 

MOVE itab TO jtab. 

line-col1 = 10. line-col2 = 20. 
APPEND line TO itab. 


IF itab GT jtab. 
    WRITE/'ITAB GT JTAB'. 
ENDIF. 

寫:itab,jtab。

因爲我想知道爲什麼itab大於jtab ?.

+0

這將是什麼實際應用?也許如果你解釋你想要做的事情,就可以強調一些(可能更好的)替代方案。 – mydoghasworms

+1

您的術語不正確。你的意思是說「結構」,而不是「對象」。這些是完全不同的東西。 – mydoghasworms

回答

3

如果你想看到一個字段的內容純粹是爲了調試的目的,你也可以只把一個破發點在你的代碼,並期待在調試器中的內容。

只要不離開生產性代碼的中斷點!

break-point. 
"or use break yourusername <= this use is safer 

編輯: 您也可以只使用一個會話突破點,它不要求你改變的代碼(僅適用於你的用戶的會話持續時間):

在系統中正在運行的程序:

  • 打開程序
  • 選擇線路,你想程序停止在
  • 單擊會話斷點按鈕

    enter image description here

行旁邊的斷點圖標將出現(您也可以點擊在圖標出現的位置,設置/刪除斷點)。

enter image description here

+2

爲什麼不簡單地使用會話斷點? – emrass

+1

會話中斷點實際上是可取的,但是我覺得解釋一下圖標的外觀有點困難>< – Esti

2

我認爲這只是一個簡單的例子,你不想在生產環境中使用它的一部分 - 所以我忽略了代碼中存在的其他潛在問題。

至於你的問題,你需要遍歷你的itab來訪問它的值。然後您可以訪問如下的值:

DATA: ls_current_line LIKE line. 
" ... 
LOOP AT itab INTO ls_current_line. 
    WRITE/ls_current_line-col1. 
ENDLOOP. 
2

您可以使用功能模塊REUSE_ALV_GRID_DISPLAY

例如:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
    TABLES 
    t_outtab = itab.