3

我有一个问题,不是我的表格控件的所有行都显示在 ABAP 740 SP13 中。

例如,我有一个包含这两行的表:

LT_TRANSFER_CONFIRM_TC 的值

这是执行此代码的表的状态:

CALL SCREEN 0300 STARTING AT 10 5
                 ENDING AT 85 16.

这会立即进入我的“输出前处理”代码:

*----------------------------------------------------------------------*
*                        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值与lt_transfer_confirm_tc表的第一行匹配,tc_transfer_confirm-current_lineis 1,并且g_tc_transfer_confirm_lines(in tc_transfer_confirm_get_lines) 设置为10

循环的第二次迭代永远不会处理。光标从ENDLOOP(从第一次迭代)跳到说的那行CURSOR tc_transfer_confirm-current_line.(因为它是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表格中仍然有两行,如本问题顶部的图像所示。

此时,屏幕显示如下:

SCREEN 0300 显示的表格控件

我不确定为什么这个循环不处理我的表格的第二行,因此不会在屏幕上显示它。

谢谢。

4

1 回答 1

2

问题是我从未设置 的值tc_transfer_confirm-lines,因此该值始终为 1。

以下代码运行成功:

*----------------------------------------------------------------------*
*                        PROCESS BEFORE OUTPUT                         *
*----------------------------------------------------------------------*
PROCESS BEFORE OUTPUT.
  MODULE status_0300.
  MODULE tc_trnsfr_cnfrm_change_tc_attr.
  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.

使用新模块tc_trnsfr_cnfrm_change_tc_attr

*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_TRANSFER_CONFIRM'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE tc_trnsfr_cnfrm_change_tc_attr OUTPUT.
  DESCRIBE TABLE lt_transfer_confirm_tc LINES tc_transfer_confirm-lines.
ENDMODULE.
于 2016-07-06T18:42:48.320 回答