繁体   English   中英

ALV 报告中的空白屏幕

[英]Blank Screen in ALV Report

我为一个程序创建了一个屏幕 9000,我试图使用拆分容器在彼此顶部的表中显示。 这是代码(复制):

REPORT  zsam12.
DATA: i_t000  TYPE TABLE OF t000,
      i_tcurr TYPE TABLE OF tcurr.
"Declaration for all the objects required
DATA: o_container       TYPE REF TO cl_gui_custom_container,
      o_splitter        TYPE REF TO cl_gui_easy_splitter_container,
      o_container_left  TYPE REF TO cl_gui_container,
      o_container_right TYPE REF TO cl_gui_container,
      o_salv_table1     TYPE REF TO cl_salv_table,
      o_salv_table2     TYPE REF TO cl_salv_table.

START-OF-SELECTION.
  "Select Data
  SELECT * FROM t000 INTO TABLE i_t000.
  SELECT * FROM tcurr INTO TABLE i_tcurr.
  CALL SCREEN 9000.
  "&----
*& Module init_9000 OUTPUT
  "&----
  "text
  "----
MODULE init_9000 OUTPUT.
  DATA: lv_cx_salv_msg TYPE REF TO cx_salv_msg,
        lw_bal_s_msg   TYPE bal_s_msg.
  IF NOT o_container IS BOUND.
    "Create a Custom Control
    CREATE OBJECT o_container
      EXPORTING
        container_name              = 'CONTAINER'
        repid                       = sy-repid
        dynnr                       = '9000'
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    "Create splitter control
    CREATE OBJECT o_splitter
      EXPORTING
        parent            = o_container
        orientation       = 1
        sash_position     = 30
        with_border       = 1
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    "Assign the left and right control that were splitted
    o_container_left = o_splitter->top_left_container.
    o_container_right = o_splitter->bottom_right_container.
  ENDIF. " IF NOT o_container IS BOUND.
  TRY.
      CALL METHOD cl_salv_table=>factory
        EXPORTING
          r_container  = o_container_left
        IMPORTING
          r_salv_table = o_salv_table1
        CHANGING
          t_table      = i_t000.
    CATCH cx_salv_msg INTO lv_cx_salv_msg.
      lv_cx_salv_msg->if_alv_message~get_message(
      RECEIVING
      r_s_msg = lw_bal_s_msg ).
      MESSAGE ID lw_bal_s_msg-msgid
      TYPE lw_bal_s_msg-msgty
      NUMBER lw_bal_s_msg-msgno
      WITH lw_bal_s_msg-msgv1 lw_bal_s_msg-msgv2
      lw_bal_s_msg-msgv3 lw_bal_s_msg-msgv4.
  ENDTRY.
  TRY.
      CALL METHOD cl_salv_table=>factory
        EXPORTING
          r_container  = o_container_right
        IMPORTING
          r_salv_table = o_salv_table2
        CHANGING
          t_table      = i_tcurr.
    CATCH cx_salv_msg INTO lv_cx_salv_msg.
      lv_cx_salv_msg->if_alv_message~get_message(
      RECEIVING
      r_s_msg = lw_bal_s_msg ).
      MESSAGE ID lw_bal_s_msg-msgid
      TYPE lw_bal_s_msg-msgty
      NUMBER lw_bal_s_msg-msgno
      WITH lw_bal_s_msg-msgv1 lw_bal_s_msg-msgv2
      lw_bal_s_msg-msgv3 lw_bal_s_msg-msgv4.
  ENDTRY.
  "Display the ALV Grid
  o_salv_table1->display( ).
  o_salv_table2->display( ).
ENDMODULE. " init_9000 OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.                 " STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
ENDMODULE.                 " USER_COMMAND_9000  INPUT

问题是当我尝试执行此操作时,我得到一个空白屏幕。 无法弄清楚为什么我无法在屏幕上显示任何内容。 任何原因以及如何解决?

Legxis 是对的,像这样调用对话框模块,它会起作用:

PROCESS BEFORE OUTPUT.
  MODULE init_9000.
  MODULE status_9000.

PROCESS AFTER INPUT.
  MODULE user_command_9000.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM