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

时间:2016-09-23 12:20:28

标签: vba list transactions sap

我正在从VBA调用SAP事务来自动化报告。当我使用像IW39这样的事务时,我的输出显示是一个用SAP ALV列表查看器显示的列表。导出到VBA非常有用,我可以自动执行此操作。

ALV display

但有时我在某些特定情况下遇到问题:当我的命中列表只包含一行时。 SAP将ALV替换为使用VBA导出不太有用的东西。

Not ALV display

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

一个线索:当我启动IW39 tcode时,当我有一行时,结果显示为IW33 tcode。所以当我回到交易时,我会留在IW33查询。

1 个答案:

答案 0 :(得分:0)

如屏幕截图所示,您说的是IW 29 (显示通知),而不是IW39,但是,它们的逻辑非常相似。
定义如何通过ALV或直接通过IW23 / IW33显示结果的开关在IW29逻辑中是硬编码RIQMEL20报告)并且无法更改这很容易。

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

所以这些是我看到的可能的解决方案:

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

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

    SUBMIT RIQMEL20 EXPORTING LIST TO MEMORY.
    
  • 批量直接调用目标事务(IW29 / 39)并将结果导出到内存

    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 operation modes(对话框/背景),从而强制服务器将sy-binpt变量设置为X

  • 取消授权以在前台启动IW * 9交易,并仅通过SA38启动它们。

总的来说,可以通过VBA(即没有ABAP或BASIS干预)来实现这一目标无法实现