1

我想通过ABAP检查SE11中是否存在表。

它们是一些可用的 FM,例如“C_TABLE_EXISTENCE”....但我不能使用 FM。我想在我的软件中使用或必须使用 Class 及其方法。

请建议我,我如何在不使用任何 FM 的情况下检查表的存在。最好是类和方法。

4

4 回答 4

4

您可以使用类 cl_rebf_ddic_tabl

如果对象(表、结构或视图)在 SE11 中存在,它的存在将返回 X

例如:

CALL METHOD cl_rebf_ddic_tabl=>exists
  EXPORTING
    id_name     = [table name]
    id_tabclass = 'TRANSP'  " For table
*    if_noview   = ABAP_FALSE
  receiving
    rf_exists   = yes
    .
于 2013-12-05T03:54:00.913 回答
3

检查字典数据类型是否存在的官方API是函数模块DDIF_NAMETAB_GET。它具有相当全面的文档。请注意,它适用于各种表和数据结构,并确保检查DDOBJTYPE.

如果出于某种原因(也许这是一项家庭作业......?)您必须将自己限制在方法调用中,您可以使用 RTTI 类(的后代CL_ABAP_TYPEDESCR) - 但请注意,这需要更多的工作,因为您必须确保你得到的实际上是一张桌子。RTTI 类将返回任何数据类型的描述符,甚至是内部 ABAP 运行时类型,但DDIF_NAMETAB_GET仅限于字典类型。

于 2013-12-03T12:58:40.467 回答
0
  CALL METHOD cl_abap_structdescr=>describe_by_name
    EXPORTING
      p_name = tabname
    EXCEPTIONS
      OTHERS = 1.
  IF sy-subrc <> 0.
    WRITE: `Table ` && tabname && ` does not exist`.
    RETURN.
  ENDIF.

要手动验证结果,请调用 SE11(或 SE16,表 DD02L)。

于 2016-01-14T02:32:10.830 回答
-1

你应该看看功能模块DD_OBJECT_EXISTS,它会有所帮助。

于 2019-02-21T12:53:56.573 回答