ABAP 740 SP13 でテーブル コントロールのすべての行が表示されないという問題があります。
たとえば、次の 2 つの行を含むテーブルがあります。
これは、このコードが実行されるテーブルの状態です。
CALL SCREEN 0300 STARTING AT 10 5
ENDING AT 85 16.
これはすぐに Process Before Output コードに入ります。
*----------------------------------------------------------------------*
* PROCESS BEFORE OUTPUT *
*----------------------------------------------------------------------*
PROCESS BEFORE OUTPUT.
MODULE status_0300.
LOOP AT lt_transfer_confirm_tc
INTO ls_transfer_confirm_tc
WITH CONTROL tc_transfer_confirm
CURSOR tc_transfer_confirm-current_line.
MODULE tc_transfer_confirm_get_lines.
ENDLOOP.
どこにstatus_0300
ある:
MODULE status_0300 OUTPUT.
SET PF-STATUS 'STATUS_0300'.
" Confirm Material Number Count
SET TITLEBAR 'T05'.
ENDMODULE.
とはtc_transfer_confirm_get_lines
:
MODULE tc_transfer_confirm_get_lines OUTPUT.
g_tc_transfer_confirm_lines = sy-loopc.
ENDMODULE.
私の PBO のループの最初の繰り返しの終わりに、値はテーブルの最初の行であるls_transfer_confirm_tc
と一致し、( in ) は に設定されます。lt_transfer_confirm_tc
tc_transfer_confirm-current_line
1
g_tc_transfer_confirm_lines
tc_transfer_confirm_get_lines
10
ループの 2 回目の繰り返しは処理されません。カーソルは、ENDLOOP
(最初の繰り返しから) という行に(ステートメントCURSOR tc_transfer_confirm-current_line.
の最後であるため) ホップし、最後に、その行で停止することなく に移動します。このループの最後に、is initial 、is still 、およびis still . この質問の上部にある画像に示されているように、その間ずっと、テーブルにはまだ 2 つの行があります。LOOP
ENDLOOP
MODULE tc_transfer_confirm_get_lines
ls_transfer_confirm_tc
tc_transfer_confirm-current_line
1
g_tc_transfer_confirm_lines
10
lt_transfer_confirm_tc
この時点で、画面は次のように表示されます。
このループがテーブルの 2 行目を処理しないため、画面に表示されない理由がわかりません。
ありがとう。