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
嗨Vlad,
好,谢谢您的帮助^ _ ^很高兴认识您
嗨,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
嗨Ramesh,
谢谢您的帮助,我有一个问题。 我们能否选择一些仅会出现在报告中的字段? 例如MATNR等,我们可以做到吗?
同时两个屏幕(拆分屏幕),或者双击后调用第二个屏幕。
如果需要帮助,则需要提供更多信息。
此外,您还在使用ABAP OO(SALV)或功能模块(哪个)使用哪种ALV技术?
第一个(分割窗口)上的信息
http://scn.sap.com/thread/36008
但是无论如何,如果信息很少,将很难为您提供帮助。
谢谢您的回复,
我们可以像我的照片一样制作一份详细报告吗?
谢谢您的帮助。
检查线程 http://scn.sap.com/message/392805 #392805
最多设置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
嗨Vlad,
好,谢谢您的帮助^ _ ^很高兴认识您
嗨,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
嗨Ramesh,
谢谢您的帮助,我有一个问题。 我们能否选择一些仅会出现在报告中的字段? 例如MATNR等,我们可以做到吗?
同时两个屏幕(拆分屏幕),或者双击后调用第二个屏幕。
如果需要帮助,则需要提供更多信息。
此外,您还在使用ABAP OO(SALV)或功能模块(哪个)使用哪种ALV技术?
第一个(分割窗口)上的信息
http://scn.sap.com/thread/36008
< p>如果您在sdn上搜索,我肯定您会找到答案的。但是无论如何,如果信息很少,将很难为您提供帮助。
谢谢您的回复,
我们可以像我的照片一样制作一份详细报告吗?
谢谢您的帮助。
检查线程 http://scn.sap.com/message/392805 #392805
一周热门 更多>