标准的深度嵌套数据类型?

gue*_*tli 5 abap saprfc pyrfc

我拿了一个很好的例子clientPrintDescription.py并从描述中创建了一个 HTML 表单,该表单与特定 RFC 函数的输入数据类型相匹配。

在 SAP 中,数据类型可以包含可以包含数据类型的数据类型,我想使用嵌套数据类型来测试我的 HTML 表单生成器。

当然,我可以创建自己的自定义数据类型,但如果我使用现有的(支持 rfc 的)数据类型,它的可重用性会更高。

SAP 中哪种数据类型包含大量嵌套数据类型?也许有很多不同的数据类型?

kon*_*tin 5

我不知道哪种结构最适合您的情况,但您可以DD03VV使用 transaction过滤视图(现在这是一个有意义的名称)se16h。如果你GROUP BY的列TABNAME和过滤器WHERE TABCLASS = 'INTTAB'的条目数是结构大小的一个指标。

您还可以聚合并在下一步过滤最大值DEPTH(如 SQL HAVING,它在 SAP R/3 中不存在)。在我的系统上,最大深度为 12。

编辑:如果您无法访问se16h,这里有一个解决办法:呼叫se37和执行 SE16N_STARTI_HANA = 'X'。如果您无法访问se37使用sa38和调用RSFUNCTIONBUILDER(后面的报告se37)。

PS:请求DD03VV非常慢,可能是由于缺少对 ABAP 字典视图上的复杂请求的优化。


San*_*ssi 3

如果我只能给出一种 DDIC 结构,我会给出这个:

FDT_TEST_DDIC_BIND_DEEP_S
Run Code Online (Sandbox Code Playgroud)

它包含许多杂项类型的元素,包括嵌套元素,并且它存在于任何基于ABAP的系统中(它属于“BASIS”层)。

由于它在子级别中包含一些在 RFC 中无效的数据和对象引用,因此您必须复制它并删除这些引用字段。

还有这些结构(“TABNAME”列),其中包含一些感兴趣的字段:

TABNAME               FIELDNAME      Description
--------------------  -------------  ------------------------------------------------
SFW_BF                FROM_RELEASE   elementary built-in type
SAUNIT_S_ALERT        WHEN           data element 
SAUNIT_S_ALERT        HEADER         structure 
SAUNIT_S_ALERT        TEXT_INFOS     table type
SAUNIT_PROG_INFO      .INCLUDE       include structure SAUNIT_S_TADIR_KEY
SKWF_IOFLD            .INCLU-FLD     include structure SKWF_IO
SWFEXPSTRU2           .INCLU--AP     append structure SWFEXPSTRU3
APPEND_BAPI0002_2_2   .APPEND_DU     append structure recursive (append of BAPI0002_2) (unique component of APPEND_BAPI0002_2_2)
SOADDRESS                            Structure with nested structures on 2 levels
Run Code Online (Sandbox Code Playgroud)

某些结构在某些 ABAP 版本中可能无效。它们曾经存在于ABAP基础7.02和7.52中。

  • 不,数据和对象引用不能在 RFC 中使用 -> 我将它们从我的答案中删除。由于 FDT_TEST_DDIC_BIND_DEEP_S 包含一些引用,因此您必须复制它并删除引用字段。 (2认同)