Vba 用于IW29/39事务中单个条目的ALV列表查看器

Vba 用于IW29/39事务中单个条目的ALV列表查看器,vba,list,transactions,sap-erp,sap-gui,Vba,List,Transactions,Sap Erp,Sap Gui,我正在从VBA调用SAP transaction以自动生成报告。当我使用像IW39这样的事务时,我的输出显示是一个用SAP ALV列表查看器显示的列表。这是非常有用的导出到VBA,我有一个功能,自动这样做 但有时在某些特殊情况下,我会遇到一个问题:当我的命中列表只有一行时。SAP用一些不太有用的东西取代了ALV,以便用VBA导出 我的问题是:当点击列表中只有一行时,是否有办法将显示模式更改为“ALV always” 提示:当我启动IW39 tcode并且只有一行时,结果显示为IW33 tco

我正在从VBA调用SAP transaction以自动生成报告。当我使用像IW39这样的事务时,我的输出显示是一个用SAP ALV列表查看器显示的列表。这是非常有用的导出到VBA,我有一个功能,自动这样做

但有时在某些特殊情况下,我会遇到一个问题:当我的命中列表只有一行时。SAP用一些不太有用的东西取代了ALV,以便用VBA导出

我的问题是:当点击列表中只有一行时,是否有办法将显示模式更改为“ALV always”


提示:当我启动IW39 tcode并且只有一行时,结果显示为IW33 tcode。因此,当我回到事务处理时,我停留在IW33查询中。

正如您的屏幕截图所示,您谈论的是IW29(显示通知),而不是IW39,但是,它们的逻辑非常相似。
定义如何通过ALV或直接通过IW23/IW33显示结果的开关在
IW29
逻辑(即
RIQMEL20
report)中进行了硬编码,并且不能如此轻松地更改。

然而,在学习代码时,我发现结果在ALV中列出正确,即使对于单个条目,如果在后台模式下执行了tcode,源代码中也存在相应的程序检查。

在我看来,这些都是可能的解决方案:

  • 创建虚拟事务(例如ZIW29)并像这样批量执行目标报告

    SUBMIT RIQMEL20 AND RETURN.
    
  • 创建虚拟事务并运行目标报告,将结果导出到内存

    SUBMIT RIQMEL20 EXPORTING LIST TO MEMORY.
    
    DATA: lt_bdcdata TYPE TABLE OF bdcdata, ls_options TYPE ctu_params.
    ls_options-dismode = 'N'. " This is to set the batch input mode
    
    CALL TRANSACTION 'IW29' USING lt_bdcdata OPTIONS FROM ls_options.
    IMPORT data_tab TO it_out FROM MEMORY ID 'XYZ'.
    
  • 直接批量调用目标事务(IW29/39)并将结果导出到内存

    SUBMIT RIQMEL20 EXPORTING LIST TO MEMORY.
    
    DATA: lt_bdcdata TYPE TABLE OF bdcdata, ls_options TYPE ctu_params.
    ls_options-dismode = 'N'. " This is to set the batch input mode
    
    CALL TRANSACTION 'IW29' USING lt_bdcdata OPTIONS FROM ls_options.
    IMPORT data_tab TO it_out FROM MEMORY ID 'XYZ'.
    
  • 上述各项的任意组合

  • 使用AS ABAP(对话框/后台),从而强制服务器将
    sy binpt
    变量设置为
    X

  • 撤销在前台启动IW*9事务的授权,并仅通过
    SA38
    启动它们


总的来说,我们可以得出结论,通过VBA(即没有ABAP或BASIS干预)实现这一点是不可能的。

如何从VBA调用通知列表?给我们密码。