簡體   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