我需要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词典中定义为表格
有一种纯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)
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |