检查表是否存在

0 sap abap

我需要SELECT在ABAP中使用一个语句,但问题是该表在该系统上不存在.
我正在检查FM表的存在:

CALL FUNCTION 'DDIF_TABL_GET'
  EXPORTING
     name     = 'mytable'
  IMPORTING
     gotstate = l_got_state
  EXCEPTIONS
     OTHERS   = 1.

IF sy-subrc = 0.
  SELECT SINGLE * FROM mytable  INTO  mylocalstructure WHERE ...........  .
ENDIF.
Run Code Online (Sandbox Code Playgroud)

但是仍然存在语法错误:

"mytable"未在ABAP词典中定义为表格

Phi*_*ipp 8

有一种纯ABAP方法可以在运行时检查表是否存在而不使用功能模块.该SELECT语句允许通过将表的名称放在括号中来将其作为clike变量或字符串文字传递.在这种情况下,将在运行时检查表名,而不是在编译时检查.如果它不存在,CX_SY_DYNAMIC_OSQL_SEMANTICS则抛出类型异常,您可以捕获:

TRY.
    SELECT * FROM ('mytable') INTO mylocalstructure WHERE ........... 
  CATCH CX_SY_DYNAMIC_OSQL_SEMANTICS.
    MESSAGE 'Table does not exist' TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
Run Code Online (Sandbox Code Playgroud)