[英]Return dynamically-typed table rows via RFC?
我需要通過RFC返回一些表的行,這些表的名稱在執行之前是未知的。
我有一個循環執行的語句:
SELECT *
up to iv_max_count rows
into table <lt_result>
FROM (iv_table_name) AS ltab
WHERE (SQL_WHERE).
如何將<lt_result>
結果連接到一個列表/表格並通過 RFC 返回?
當然,所有的表都可以有不同的結構。 創建一個包含所有行的大表無濟於事。
您不能在 RFC 中返回一個或多個任意結構,它們必須被預定義。
我能想到的最好的方法是模仿 SAP 處理數據庫中 idoc 的方式。 您的表至少需要兩個字段,第一個是描述符字段,告訴調用者表結構是什么,第二個字段是一個很長的字符類型字段,所有數據都連接在一起,固定寬度或分隔. 這樣,您可以從多個表中以相同的返回結構傳遞數據。
如果您的調用程序確實對 SAP 數據集一無所知,您可能還需要從表 DD02l 中獲取元數據。
簡而言之,這不是 ABAP 和功能模塊的工作方式。
您必須准確定義您的輸入是什么以及您的輸出結構/表格是什么樣的。 你可以返回一個包含多個深層嵌套表的結構,只有一個返回結構,但不是動態的!
使這一切動態化會使事情變得更加復雜。 主要是不必要的。
一種可能的方式:
另一種方式:在調用者程序的循環中使用功能模塊RFC_READ_TABLE
在沒有連接的循環中動態讀取多個單表聽起來不像 ABAP 編程,更像是“我需要第三方工具中的 SAP 數據”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.