[英]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.