ABAP将数据从数据库检索到屏幕表控件

时间:2014-05-28 16:33:58

标签: sql database sap abap

如果可能,我需要帮助,因为我被困在没有语法错误的地方。 我正在使用abap从我的数据库表中检索数据到屏幕0300中的表格控件。 每当我在屏幕0300中按直接处理时,我的表格控件上没有任何信息。 这就是屏​​幕0300的流程逻辑:

PROCESS BEFORE OUTPUT.

 MODULE STATUS_0300.

 LOOP at it_customers  into WA_customerS WITH CONTROL tc300.
   MODULE fill_ctable_control .

 ENDLOOP.



PROCESS AFTER INPUT.

  LOOP at it_CUSTOMERs .
module read_ctable_control .

 ENDLOOP.


MODULE USER_COMMAND_0300.

这就是PBO / PAI代码:

module FILL_CTABLE_CONTROL output.

IF it_CUSTOMERS is initIAl.
SELECT * FROM  zy2014_42_CUSTOM

    INTO CORRESPONDING FIELDS OF TABLE it_CUSTOMERS.
ENDIF.

endmodule.                 " FILL_CTABLE_CONTROL  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  READ_CTABLE_CONTROL  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module READ_CTABLE_CONTROL intput.
 IF sy-stepl = 1.

      tc300-lines = tc300-top_line + sy-loopc - 1.

    ENDIF.



*   move fields from work area to scrren fields

    MOVE-CORRESPONDING wa_CUSTOMERs TO zy2014_42_TCCUSTOMERS.
endmodule.

module USER_COMMAND_0300 input.
case ok_code .
when 'BACK'.
LEAVE TO SCREEN 100.
ENDCASE.
  SELECT *  FROM  zy2014_42_CUSTOM

    INTO CORRESPONDING FIELDS OF TABLE it_CUSTOMERS.

CLEAR OK_CODE.
endmodule. 

考虑到我正在使用dynpro程序

提前全部谢谢

1 个答案:

答案 0 :(得分:1)

MODULE fill_ctable_control的目的似乎是将整个数据库表读入it_customers。每个PBO执行一次是有意义的。但是,您已将调用放入LOOP at it_customers,这意味着对该内部表中的每个条目执行一次。当内部表尚未获得任何条目时,它根本不会被执行,因此表保持原样为空。

我建议你将模块调用移出循环。