簡體   English   中英

通過 RFC 返回動態類型的表行?

[英]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 和功能模塊的工作方式。

您必須准確定義您的輸入是什么以及您的輸出結構/表格是什么樣的。 你可以返回一個包含多個深層嵌套表的結構,只有一個返回結構,但不是動態的!

使這一切動態化會使事情變得更加復雜。 主要是不必要的。

一種可能的方式:

  1. 您必須分析輸入並為每個輸入表結果構建動態結構和表
  2. 構建一個包含所有嵌套表的包裝結構
  3. 返回一個 DATA 引用對象,因為您不能返回通用數據類型
  4. 您的接收程序需要定義相同的數據結構,這意味着它必須確切地知道它正在返回什么,以延遲數據。

另一種方式:在調用者程序的循環中使用功能模塊RFC_READ_TABLE

在沒有連接的循環中動態讀取多個單表聽起來不像 ABAP 編程,更像是“我需要第三方工具中的 SAP 數據”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM