SAP WDY增强功能,CREATE_WINDOW_FOR_CMP_USAGE,需要ALV弹出窗口

2020-09-16 08:40发布

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

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


您好WDY专家

我目前几乎没有为WDY增强要求而苦苦挣扎。 我的情况的简短描述:

* SAP SRM
*现有SAP Webdynpro
*已创建增强功能
*试图从SAP WDY运行时数据列表到ALV显示中创建弹出式ALV

在调查过程中,我遇到了:
-------------------------------------- ----------------

*关于" CREATE_WINDOW_FOR_CMP_USAGE"的几个SDN块。
*使用WDY增强功能时实现组件使用情况上下文映射的问题。

*使用CMP使用方法SET_DATA的要求。

--------------------------------------------------- -------
我需要以下方面的建议:

*我有一个带有窗口和视图的SAP WDY

*为了将SAP wdy表导出到弹出式ALV中,我实现了一个按钮。

1。)我需要在SAP WDY中作为新窗口和视图的增强功能吗?
假设W_ALV和V_ALV?

2。)谁需要在其属性V_ALV或W_ALV中使用ALV组件?
假设ALV cmp用法名称为'SOCO_EXP'

3.)当我将V_ALV嵌入W_ALV时, 在V_ALV中使用UIElementContainer。 在此容器中,我将ALV组件用法" SOCO_EXP"嵌入接口视图" TABLE"。


我实际上在SAP webdynpro的按钮事件处理程序(操作方法)中调用:

数据lo_api_component类型参考if_wd_component。

DATA lo_window_manager类型参考if_wd_window_manager.data

lo_window类型引用到if_wd_window。

*获取窗口管理器
lo_api_component = wd_comp_controller-> wd_get_api()。
lo_window_manager = lo_api_component-> get_window_manager()。

*创建用于组件使用的弹出窗口
lo_window = lo_window_manager-> create_window_for_cmp_usage(
interface_view_name ='TABLE'
component_usage_name ='SOCO_EXP'

title ='TEST CMP WINDOW'
close_in_any_case = abap_true
message_display_mode = if_wd_window => co_msg_display_mode_selected
is_resizable = abap_true)。

*打开用于组件使用的弹出窗口。
lo_window-> open()。

================================================ ====

新的弹出窗口保持为空。 我知道,由于WDY的增强,我必须使用接口视图的SET_DATA方法动态传输数据,但是不知道如何。

总的来说,让我们在增强的SAP WDY中弹出ALV,我根本不知道我必须按哪个顺序开发哪个WDY元素以及将相关的WDY ABAP放在哪里。

我也在问我," create_window_for_cmp_usage"的调用是如何链接到(可能)必需的自己的/增强的窗口/视图的?!

在此先感谢您的帮助。

克劳斯·韦格纳

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

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


您好WDY专家

我目前几乎没有为WDY增强要求而苦苦挣扎。 我的情况的简短描述:

* SAP SRM
*现有SAP Webdynpro
*已创建增强功能
*试图从SAP WDY运行时数据列表到ALV显示中创建弹出式ALV

在调查过程中,我遇到了:
-------------------------------------- ----------------

*关于" CREATE_WINDOW_FOR_CMP_USAGE"的几个SDN块。
*使用WDY增强功能时实现组件使用情况上下文映射的问题。

*使用CMP使用方法SET_DATA的要求。

--------------------------------------------------- -------
我需要以下方面的建议:

*我有一个带有窗口和视图的SAP WDY

*为了将SAP wdy表导出到弹出式ALV中,我实现了一个按钮。

1。)我需要在SAP WDY中作为新窗口和视图的增强功能吗?
假设W_ALV和V_ALV?

2。)谁需要在其属性V_ALV或W_ALV中使用ALV组件?
假设ALV cmp用法名称为'SOCO_EXP'

3.)当我将V_ALV嵌入W_ALV时, 在V_ALV中使用UIElementContainer。 在此容器中,我将ALV组件用法" SOCO_EXP"嵌入接口视图" TABLE"。


我实际上在SAP webdynpro的按钮事件处理程序(操作方法)中调用:

数据lo_api_component类型参考if_wd_component。

DATA lo_window_manager类型参考if_wd_window_manager.data

lo_window类型引用到if_wd_window。

*获取窗口管理器
lo_api_component = wd_comp_controller-> wd_get_api()。
lo_window_manager = lo_api_component-> get_window_manager()。

*创建用于组件使用的弹出窗口
lo_window = lo_window_manager-> create_window_for_cmp_usage(
interface_view_name ='TABLE'
component_usage_name ='SOCO_EXP'

title ='TEST CMP WINDOW'
close_in_any_case = abap_true
message_display_mode = if_wd_window => co_msg_display_mode_selected
is_resizable = abap_true)。

*打开用于组件使用的弹出窗口。
lo_window-> open()。

================================================ ====

新的弹出窗口保持为空。 我知道,由于WDY的增强,我必须使用接口视图的SET_DATA方法动态传输数据,但是不知道如何。

总的来说,让我们在增强的SAP WDY中弹出ALV,我根本不知道我必须按哪个顺序开发哪个WDY元素以及将相关的WDY ABAP放在哪里。

我也在问我," create_window_for_cmp_usage"的调用是如何链接到(可能)必需的自己的/增强的窗口/视图的?!

在此先感谢您的帮助。

克劳斯·韦格纳

付费偷看设置
发送
1条回答
SKY徐
1楼-- · 2020-09-16 09:20
我找到了解决方案。 遵循以下步骤,无需外部WDY调用即可在SAP Standard WDY中创建ALV数据显示。 1.)增强您的WDY
2.)转到组件Controller,根据需要创建上下文数据结构(例如" SOCO_STRUC")
3.)在WDY组件中创建组件用法(例如" SOCO_EXP")+组件控制器属性
" mo_soco_result_window"类型参考IF_WD_WINDOW。
4.)在原始SAP视图中创建Button和相应的事件处理程序
5.)将组件控制器数据" SOCO_STRUC"映射到SAP视图上下文
6.)在视图按钮事件处理程序中,采用以下代码:映射相关的视图上下文数据(如果您的ALV数据来自SAP视图...)
到组件控制器上下文数据" SOCO_STRUC"。
这会将数据继承到以后的新(增强)视图中。 lv_text = WD_ASSIST-> IF_WD_COMPONENT_ASSISTANCE〜GET_TEXT(KEY ='255')。
lr_view = wd_this-> wd_get_api()。
lr_api_main = wd_comp_controller-> wd_get_api()。
lr_window_man = lr_api_main-> get_window_manager()。
呼叫方法lr_window_man-> create_window
出口
modal = abap_true
window_name ='W_SOCO_RESULT_EXP'
title = lv_text
close_button = abap_true
收货
窗口= wd_comp_controller-> mo_soco_result_window。
wd_comp_controller-> mo_soco_result_window-> open()。
7.)创建增强视图V_SOCO_RESULT_EXP为组件使用ALV分配名称" SOCO_EXP"。
在视图布局中创建UI元素容器。
采用WDDOINIT并遵循ABAP:...获取组件控制器上下文数据NODE ...
...此处为" lo_nd_soco_workarea" ... *连接到ALV的组件用​​法
如果wd_this-> wd_cpuse_soco_exp()-> has_active_component()是INITIAL。
wd_this-> wd_cpuse_soco_exp()-> create_component()。
endif。
*设置ALV组件接口数据[在WDY增强中,组件使用按钮
不可用。 这是增强上下文中的限制!] wd_this-> wd_cpifc_soco_exp()-> set_data(r_node_data = lo_nd_soco_workarea)。
* ALV中的设置按钮
lo_cmp_usages = wd_this-> wd_cpuse_soco_exp()。
如果lo_cmp_usages-> has_active_component()是INITIAL。
lo_cmp_usages-> create_component()。
ENDIF。
lo_interfacecontroller = wd_this-> wd_cpifc_soco_exp()。
lo_alv_model = lo_interfacecontroller-> get_model()。
lo_alv_model-> if_salv_wd_std_functions〜set_pdf_allowed(abap_false)。 -------------------------------------------------- -------------------------------------------------- ----------- ADVICE:请记住,方法名称为wd_cpuse_soco_exp()或wd_cpifc_soco_exp()
是根据" WD_CPUSE _" <您的ALV组件使用名称>/" WD_CPIFC _" <您的ALV组件使用名称>构建的! -------------------------------------------------- -------------------------------------------------- ----------- 8。)创建增强窗口" W_SOCO_RESULT_EXP" *嵌入视图,例如" V_SOCO_RESULT_EXP"
就是这样!
我经历了更艰难的旅程...

一周热门 更多>