使用RFC_READ_TEXT从销售订单中检索文本

时间:2014-01-03 14:42:05

标签: c# sap saprfc sap-connector

我正在使用SAP .NET Connector 3.0从SAP(R / 3)读取数据。我需要从销售订单中获取一些标题文本: enter image description here

我发现了很多关于READ_TEXT功能的信息,可以用于此目的。 在这里,您可以使用ERPConnect找到一些 sample 如何执行此操作。 我正在尝试做同样的事情,我有以下函数返回IRfcTable:

static IRfcTable ReadFunction(string destName, int rowCount)
        {
            // get the destination
            RfcDestination dest = RfcDestinationManager.GetDestination(destName);

            IRfcFunction func = dest.Repository.CreateFunction("RFC_READ_TEXT");

            IRfcTable table = func.GetTable("TEXT_LINES");
            table.Insert();
            table.Insert();
            table.Insert();
            table.Insert();
            table[0].SetValue("TDOBJECT", "VBBK");
            table[1].SetValue("TDNAME", "3147856016");
            table[2].SetValue("TDID", "Z019");
            table[3].SetValue("TDSPRAS", "PL");
            func.Invoke(dest);
            return table;
        }

VBBK - 表示标题对象,3147856016 - 销售订单号,Z019 - EDI供应商文本字段的ID,PL - 语言。 结果我正在检索一些数据,但字段TDLINE是空白的:

enter image description here
根据示例,该字段应包含文本 可能有些参数不正确。 Here 是一个很好的帖子,我找到了如何获取每个文本字段的TDID参数。
我做错了什么?

更新:根据下面vwegert的答案,代码已更改为:

        IRfcTable table = func.GetTable("TEXT_LINES");
        table.Insert();
        table[0].SetValue("TDOBJECT", "VBBK");
        table[0].SetValue("TDNAME", "3147856016");
        table[0].SetValue("TDID", "Z019");
        table[0].SetValue("TDSPRAS", "PL");
        func.Invoke(dest);
        return table;

现在参数正确。但是TDLINE仍然是空的。结果:
enter image description here

1 个答案:

答案 0 :(得分:1)

功能模块需要以下参数:

  TDOBJECT    TDNAME       TDID       TDSPRAS
  ----------- ------------ ---------- -------
1 VBRK        3147856016   Z019       PL

您使用以下参数调用它:

  TDOBJECT    TDNAME       TDID       TDSPRAS
  ----------- ------------ ---------- -------
1 VBRK        
2             3147856016   
3                          Z019       
4                                     L

这不起作用 - 功能模块将采用包含TDNAME的行,添加TDBOJECT = 'DRAD'TDID = 'LTXT'TDSPRAS = SY-LANGU并尝试读取该文本。这可能会失败,导致您看到空行。另请注意,您需要提供内部语言指示符,这是一个单个字符。

此外,您完全忽略了MESSAGES参数,该参数可能包含一些可能会告诉您错误的消息。