![](/img/trans.png)
[英]Loop through list of URLs (29 .xls files) to open and paste data into 1 single sheet
[英]ALV List Viewer for single entry in IW29/39 transaction
我正在从 VBA 调用 SAP 事务来自动生成报告。 当我使用 IW39 之类的事务时,我的输出显示是一个使用 SAP ALV 列表查看器显示的列表。 导出到 VBA 非常有用,我有一个功能可以自动执行此操作。
但有时在某些特定情况下我会遇到问题:当我的命中列表仅包含一行时。 SAP 用 VBA 导出不太有用的东西替换了 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.