从z程序中调用单独的dynpro

2020-09-13 05:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Hallo Abapers, ...

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

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


Hallo Abapers,

我需要从旧的ZProgram调用屏幕到新的ZProgram。

此屏幕名称 0400 是通过在旧程序的选择屏幕中单击一个按钮来调用的,此按钮称为" PB_01" ...。

现在回到我的新zprogram中,我创建了一个名为 PB_02 的新按钮,并在尝试调用dynpro '0400'时编写了以下代码。

 DATA:l_f_bdcdata TYPE bdcdata,
 l_t_bdcdata_tab bdcdata类型表。
   如果sy-ucomm ='PB_02'。
 清除l_f_bdcdata。
 l_f_bdcdata-program ='/EDEL/R_DD_RPRT_MGMT'。
 l_f_bdcdata-dynpro ='0400'。
 l_f_bdcdata-dynbegin ='X'。
 将l_f_bdcdata附加到l_t_bdcdata_tab。
 使用l_t_bdcdata_tab进行呼叫交易" altprogram"。

内部表类型是排序表,而不是BDCDATA。 .....

因此代码无法正常工作.....

有人可以指导如何做到这一点吗??

最好的问候

珍妮

4条回答
d56caomao
2020-09-13 06:02

首先,我想您不能从其他程序中调用屏幕,如果要这样做,则应在功能组中定义它。

现在,因为您正在使用bdcdata i 建议您尝试fm:ABAP4_CALL_TRANSACTION并传递所有bdcdata以检查其是否有效。 也许您需要先用sm36记录旧程序(为了能够从旧程序中调用屏幕0400,它背后应该有其他逻辑,也许您在BDC中丢失了。)

我认为还有另一种方法 可以使用的方法是添加一个子屏幕区域并进行调用(如果屏幕0400定义为子屏幕):

呼叫子屏幕:SUB1包括OLD_PROGRAM_ID'0400'。