ABAP报告工具栏已禁用
尽管我尝试了多种解决方案,但仍无法使SAP报表的工具栏(见图)正常工作 我的报告代码:ABAP报告工具栏已禁用,abap,alv,dynpro,Abap,Alv,Dynpro,尽管我尝试了多种解决方案,但仍无法使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 zo
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
=>用户界面
=>复制
状态…
- From:
=程序
<代码>状态=SAPLSLVC_全屏
标准全屏
- 至:
=Program
<代码>状态=ZESXDV
标准全屏
- 点击Ok
- 转到事务
并打开您的报告/程序SE80
- 将创建
文件夹,其中包含新的复制状态GUI Status
- 转到事务处理
- 在报告的代码中添加了以下说明(在
):开始选择之后
设置PF-STATUS“标准”全屏。
调用屏幕'XXXX'
指令调用]时才起作用
我错过什么了吗
提前感谢你的帮助
备注:如果缺少一些信息,请告诉我,我会尽快添加。感谢@Mustafa Hamit。我会在@Mustafa Hamit的评论中发布我所做的事情
- 转到屏幕对象(双击
)调用屏幕100
- 导航到选项卡<代码>流程逻辑
- 在输出前的
过程之后插入
模块PBO\U 100。
- 将模块PAI\U 100插入
就在。
输入后处理。
- 双击
->PBO_100
Create Object
- 在
屏幕上,在PBO_100
和模块PBO_100输出。
之间写入ENDMODULE
设置PF-STATUS“{状态名称}”
- 返回并创建
对象(双击它)PAI_100
- 激活一切
- 两条
语句应出现在程序末尾的报告代码中INCLUDE
- 工具栏现在应该已启用并正常工作
感谢@Mustafa Hamit。我会在@Mustafa Hamit的评论中发布我所做的事情
- 转到屏幕对象(双击
)调用屏幕100
- 导航到选项卡<代码>流程逻辑
- 在输出前的
过程之后插入
模块PBO\U 100。
- 将模块PAI\U 100插入
就在。
输入后处理。
- 双击
->PBO_100
Create Object
- 在
屏幕上,在PBO_100
和模块PBO_100输出。
之间写入ENDMODULE
设置PF-STATUS“{状态名称}”
- 返回并创建
对象(双击它)PAI_100
- 激活一切
- 两条
语句应出现在程序末尾的报告代码中INCLUDE
- 工具栏现在应该已启用并正常工作
您必须使用如下屏幕代码
PROCESS BEFORE OUTPUT.
MODULE PBO_100.
*
PROCESS AFTER INPUT.
MODULE PAI_100.
创建执行模块并将您的状态设置为pf状态
MODULE pbo_100 OUTPUT.
SET PF-STATUS 'MAIN100'.
set titlebar 'MAIN100'.
ENDMODULE. " PBO_100 OUTPUT
注意:检查激活的gui状态“MAIN100”您必须使用如下屏幕代码
PROCESS BEFORE OUTPUT.
MODULE PBO_100.
*
PROCESS AFTER INPUT.
MODULE PAI_100.
创建执行模块并将您的状态设置为pf状态
MODULE pbo_100 OUTPUT.
SET PF-STATUS 'MAIN100'.
set titlebar 'MAIN100'.
ENDMODULE. " PBO_100 OUTPUT
注意:选中激活的gui状态“MAIN100”您应该在0100屏幕上的pbo模块中粘贴“设置PF-status‘STANDARD_FULLSCREEN.”。在输出之前,您可以按照以下过程启用屏幕代码。模块状态_0100.*输入后处理。模块用户_命令_0100。粘贴到模块状态_0100。@MustafaHamit不起作用。我正在输入
模块状态\u 0100。将PF状态设置为“标准全屏”。ENDMODULE.
就在开始选择之前。
否,正如您在调试中看到的,PBO模块未触发。PBO模块是这样声明的:模块状态\u 0100输出。
您可以检查标准报告tcode SE38,进入“BCALV\u GRID\u 07”转到屏幕0100和转到模块PBO\u 100输出。您将看到设置PF-STATUS“MAIN100”代码。必须是活动gui状态,并且方式相同。谢谢@MustafaHamit,现在它可以工作了。我已经发布了一个基于您所说内容的答案。您应该在0100屏幕上的pbo模块中粘贴“设置PF-STATUS‘STANDARD_FULLSCREEN’”。在输出之前,您可以按照以下过程启用屏幕代码。模块状态_0100.*输入后处理。模块用户_命令_0100。粘贴到模块状态_0100。@MustafaHamit不起作用。我正在输入模块状态\u 0100。将PF状态设置为“标准全屏”。ENDMODULE.
就在开始选择之前。
否,正如您在调试中看到的,PBO模块未触发。PBO模块是这样声明的:模块状态\u 0100输出。
您可以检查标准报告tcode SE38,进入“BCALV\u GRID\u 07”转到屏幕0100和转到模块PBO\u 100输出。您将看到设置PF-STATUS“MAIN100”代码。必须是活动gui状态,并且方式相同。谢谢@MustafaHamit,现在它可以工作了。我已经根据你所说的给出了答案。