如何在1个ABAP输出报告中创建2个ALV屏幕

2020-08-30 08:30发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,专家大师,

我的ABAP报告有问题。

我需要在1个abap报告中使用2 alv屏幕制作报告。

如何实现? 请告诉我,我知道有关此主题的讨论很多,但我不清楚。 请告诉我这件事。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,专家大师,

我的ABAP报告有问题。

我需要在1个abap报告中使用2 alv屏幕制作报告。

如何实现? 请告诉我,我知道有关此主题的讨论很多,但我不清楚。 请告诉我这件事。

付费偷看设置
发送
9条回答
半个程序猿
1楼 · 2020-08-30 09:03.采纳回答

你好,

这是我的一份报告中的代码的一部分,在一个屏幕上有两个alv网格:

数据:custom_container类型参考cl_gui_custom_container,

分离器类型参考cl_gui_splitter_container,

graphic_parent1类型参考cl_gui_container,

graphic_parent2类型参考cl_gui_container。


数据ref_grid类型参考cl_gui_alv_grid。

数据ref_grid1类型参考cl_gui_alv_grid。

*-字段目录表

数据gt_fieldcat1类型lvc_t_fcat。

数据gt_fieldcat2类型lvc_t_fcat。

*-布局结构

DATA gs_layout1类型lvc_s_layo。

DATA gs_layout2类型lvc_s_layo。

FORM display_alv。

创建对象custom_container

导出

container_name ='容器'。 "使用大写字母!

*

**创建用于放置图形的拆分器容器

创建对象拆分器

导出

父= custom_container

行= 2

列= 1

align = 15。"(分隔器填充孔自定义容器)

**获得第一张桌子的分隔器容器的一部分

呼叫方法splitter-> get_container

导出

行= 1

列= 1

接收

容器= graphic_parent1。

**获得第二张桌子的分隔器容器的一部分

呼叫方法splitter-> get_container

导出

行= 2

列= 1

接收

容器= graphic_parent2。

创建对象ref_grid

导出

i_parent = graphic_parent1。

* ----准备字段目录。

PERFORM prepare_field_catalog1更改gt_fieldcat1。

* ----准备布局结构

PERFORM prepare_layout1更改gs_layout1。

**显示第一个ALV

执行set_display。

创建对象ref_grid1

导出

i_parent = graphic_parent2。

* ----准备字段目录。

PERFORM prepare_field_catalog2更改gt_fieldcat2。

* ----准备布局结构

PERFORM prepare_layout2更改gs_layout2。

**显示第二个ALV

执行set_display1。

ENDFORM。 " display_alv

这里的表格仅用于第一个,因为第二个相同。



FORM prepare_field_catalog1更改pt_fieldcat1类型lvc_t_fcat。

数据ls_fcat类型lvc_s_fcat。

通话功能'LVC_FIELDCATALOG_MERGE'

导出

i_structure_name ='/MKBS/Z_KONTR_STRUC'

改变

ct_fieldcat = pt_fieldcat1 []

例外情况

接口不一致= 1

program_error = 2

其他= 3。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

在pt_fieldcat1 INTO ls_fcat中循环。

案例ls_fcat-fieldname。

" BRKON"时。

ls_fcat-outputlen ='10'。

ls_fcat-coltext ='Br。 康特。

从ls_fcat修改pt_fieldcat1。

结束。

ENDLOOP。

ENDFORM。 " PREPARE_FIELD_CATALOG


FORM prepare_layout1更改ps_layout1类型lvc_s_layo。

ps_layout1-zebra ='X'。

ps_layout1-grid_title ='Fakturisano po kontrolniku'。

ps_layout1-smalltitle ='X'。

ENDFORM。 " prepare_layout

FORM set_display。

gs_variant0-report = sy-repid。

gs_variant0-用户名= sy-uname。

gs_variant0-variant ='ALV1'。

呼叫方法ref_grid-> set_table_for_first_display

导出

is_layout = gs_layout1

is_variant = gs_variant0

i_save ='A'

i_default ='X'

改变

it_outtab = itab1 []

it_fieldcatalog = gt_fieldcat1

it_sort = gt_sort1。

ENDFORM。 " set_display


这是它的外观:

最诚挚的问候,

Vladimir

绿领巾童鞋
2楼-- · 2020-08-30 09:08

您好,弗拉基米尔,

您的解决方案完全符合我的要求。 我正在寻找完全像这样的东西。

感谢您的代码。

Cikesha
3楼-- · 2020-08-30 09:11

这是您答案的视频版本

https://youtu.be/tzV3zyR1XVM

一周热门 更多>