2020-08-30 08:30发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,专家大师,
我的ABAP报告有问题。
我需要在1个abap报告中使用2 alv屏幕制作报告。
如何实现? 请告诉我,我知道有关此主题的讨论很多,但我不清楚。 请告诉我这件事。
你好,
这是我的一份报告中的代码的一部分,在一个屏幕上有两个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
接收
容器= graphic_parent1。
**获得第二张桌子的分隔器容器的一部分
容器= 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
您好,弗拉基米尔,
您的解决方案完全符合我的要求。 我正在寻找完全像这样的东西。
感谢您的代码。
这是您答案的视频版本
https://youtu.be/tzV3zyR1XVM
最多设置5个标签!
你好,
这是我的一份报告中的代码的一部分,在一个屏幕上有两个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
您好,弗拉基米尔,
您的解决方案完全符合我的要求。 我正在寻找完全像这样的东西。
感谢您的代码。
这是您答案的视频版本
https://youtu.be/tzV3zyR1XVM
一周热门 更多>