【发布时间】:2020-12-10 10:45:00
【问题描述】:
尽管尝试了多种解决方案,但我的 SAP 报告的工具栏(见图)仍无法正常工作。
我的报告代码:
CLASS cl_orders_alv DEFINITION.
PUBLIC SECTION.
METHODS:
on_init, on_display.
PRIVATE SECTION.
METHODS:
on_data_fetch.
DATA: ct_orders TYPE TABLE OF zordhead_str, " header itab
ct_orders_pos TYPE TABLE OF zordpos_str, " pos itab
co_orders_alvgrid TYPE REF TO cl_gui_alv_grid, " ALV Table
co_ordpos_alvgrid TYPE REF TO cl_gui_alv_grid, " ALV Table
co_orders_alvccntr TYPE REF TO cl_gui_custom_container, " Orders Head
co_ordpos_alvccntr TYPE REF TO cl_gui_custom_container, " Orders Position
cs_orders TYPE zordhead_str, " header structure
cs_orders_pos TYPE zordpos_str,
cs_orders_fieldcat TYPE slis_fieldcat_alv, " ALV Structure
ct_orders_fieldcat TYPE lvc_t_fcat, " ALV Table
cs_ordpos_fieldcat TYPE slis_fieldcat_alv,
ct_ordpos_fieldcat TYPE lvc_t_fcat.
ENDCLASS. "cl_orders_alv
CLASS cl_orders_alv IMPLEMENTATION.
METHOD on_init.
CLEAR ct_orders.
CLEAR ct_orders_pos.
CLEAR cs_orders.
CLEAR cs_orders_pos.
CREATE OBJECT co_orders_alvccntr
EXPORTING
container_name = 'ALV_CCONTAINER0'.
CREATE OBJECT co_ordpos_alvccntr
EXPORTING
container_name = 'ALV_CCONTAINER1'.
CREATE OBJECT co_orders_alvgrid
EXPORTING
i_parent = co_orders_alvccntr.
CREATE OBJECT co_ordpos_alvgrid
EXPORTING
i_parent = co_ordpos_alvccntr.
on_data_fetch( ).
ENDMETHOD. "on_init
METHOD on_display.
CALL METHOD co_orders_alvgrid->set_table_for_first_display
EXPORTING
i_structure_name = 'ZORDHEAD_STR'
CHANGING
it_outtab = ct_orders.
CALL METHOD co_ordpos_alvgrid->set_table_for_first_display
EXPORTING
i_structure_name = 'ZORDPOS_STR'
CHANGING
it_outtab = ct_orders_pos.
CALL SCREEN '0100'.
ENDMETHOD. "on_display
METHOD on_data_fetch.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZORDHEAD_STR'
CHANGING
ct_fieldcat = ct_orders_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZORDPOS_STR'
CHANGING
ct_fieldcat = ct_ordpos_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
ENDMETHOD. "on_data_fetch
ENDCLASS. "CL_ORDERS_ALV IMPLEMENTATION
START-OF-SELECTION.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
DATA: go_alv_gui TYPE REF TO cl_orders_alv.
CREATE OBJECT go_alv_gui.
go_alv_gui->on_init( ).
go_alv_gui->on_display( ).
这是我迄今为止尝试过的:
-
将现有状态复制到我的程序/报告中:
- 转到事务
SE41 -
User Interface=>Copy=>Status... - 发件人:
Program=SAPLSLVC_FULLSCREEN;Status=STANDARD_FULLSCREEN - 收件人:
Program=ZESXDV;Status=STANDARD_FULLSCREEN - 点击确定。
- 转到事务
SE80并打开您的报告/程序 -
GUI Status文件夹已创建,其中包含新复制的状态。
- 转到事务
-
在报告代码中添加如下指令(
START-OF-SELECTION之后):SET PF-STATUS 'STANDARD_FULLSCREEN'.
注意:我注意到工具栏仅在使用 ALV 表和自定义 ALV 容器时不起作用(它们都需要一个屏幕对象[由 CALL SCREEN 'XXXX' 指令调用。])
我错过了什么吗?
提前感谢您的帮助。
P.S.:如果缺少某些信息,请告诉我,我会尽快添加。
【问题讨论】:
-
您应该粘贴“SET PF-STATUS 'STANDARD_FULLSCREEN'”。在屏幕 0100 上的 pbo 模块中。您启用屏幕代码,如下所示 PROCESS BEFORE OUTPUT。模块状态_0100。 * 输入后的过程。模块 USER_COMMAND_0100。粘贴到 MODULE STATUS_0100。
-
@MustafaHamit 不起作用。我将
MODULE STATUS_0100. SET PF-STATUS 'STANDARD_FULLSCREEN'. ENDMODULE.放在START-OF-SELECTION之前。 -
不,正如您在调试中看到的那样,您的 PBO 模块没有被触发。 PBO 模块是这样声明的:
MODULE STATUS_0100 OUTPUT. -
您可以检查标准报告 tcode SE38 输入“BCALV_GRID_07”转到屏幕 0100 并转到 MODULE pbo_100 输出。您将看到 SET PF-STATUS 'MAIN100' 代码。必须是活动的 gui 状态和相同的方式。
-
感谢@MustafaHamit,现在可以了。我已经根据你所说的发布了一个答案。