繁体   English   中英

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

[英]ALV List Viewer for single entry in IW29/39 transaction

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

ALV显示

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

不显示 ALV

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

一条线索:当我启动 IW39 tcode 并且只有一行时,结果显示为 IW33 tcode。 所以当我回到事务时,我停留在 IW33 查询中。

正如您的屏幕截图所示,您谈论的是 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 操作模式(对话框/后台),从而强制服务器将sy-binpt变量设置为X

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM