如何在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

d56caomao
2楼-- · 2020-08-30 09:06

嗨Vlad,

好,谢谢您的帮助^ _ ^很高兴认识您

ZJXianG
3楼-- · 2020-08-30 08:45

嗨,Ri

最好的选择是创建一个拆分器容器(CL_GUI_SPLITTER_CONTAINER)

或者您使用2个CustomControl构建一个dynpro,每个控件用于1个ALV。

您可以为班级使用cl_salv_table类。

例如:

cl_salv_table =>工厂(导出r_container = ir_container
导入r_salv_table = gr_salv_table
更改t_table = gt_outtab)。

或者类cl_gui_alv_grid:

创建对象go_container

导出
container_name ='CONTAINER1'。

创建对象go_alv_grid
导出
i_parent = go_container。

调用方法go_alv_grid-> set_table_for_first_display
导出< br> i_structure_name ='ZMYSTRUCTURE'
is_layout = ps_layout
更改
it_fieldcatalog = gt_fieldcat
it_outtab = gt_userlog。

关于Nico

天桥码农
4楼-- · 2020-08-30 08:59

嗨Ramesh,

谢谢您的帮助,我有一个问题。 我们能否选择一些仅会出现在报告中的字段? 例如MATNR等,我们可以做到吗?

南山jay
5楼-- · 2020-08-30 09:01

同时两个屏幕(拆分屏幕),或者双击后调用第二个屏幕。

如果需要帮助,则需要提供更多信息。

此外,您还在使用ABAP OO(SALV)或功能模块(哪个)使用哪种ALV技术?

第一个(分割窗口)上的信息

http://scn.sap.com/thread/36008

< p>如果您在sdn上搜索,我肯定您会找到答案的。

但是无论如何,如果信息很少,将很难为您提供帮助。

奄奄一息的小鱼
6楼-- · 2020-08-30 09:00
< p>嗨,皮特,

谢谢您的回复,

我们可以像我的照片一样制作一份详细报告吗?

谢谢您的帮助。

闻人可可
7楼-- · 2020-08-30 09:02

一周热门 更多>