Класс/метод проверки существования таблицы в SE11 или нет?

Я хочу проверить, существует ли таблица в SE11 или нет через ABAP.

Доступны некоторые FM, такие как "C_TABLE_EXISTENCE".... Но я не могу использовать FM. Я хочу использовать или должен использовать класс и его методы в своем программном обеспечении.

Пожалуйста, предложите мне, как я могу проверить наличие таблицы без использования FM. Предпочтительно класс и метод.


person Piyush Aggarwal    schedule 03.12.2013    source источник
comment
Почему вы должны использовать метод?   -  person vwegert    schedule 03.12.2013
comment
Я должен использовать метод, потому что мой клиент не дает разрешения или по каким-то причинам не хочет использовать этот конкретный FM.   -  person Piyush Aggarwal    schedule 03.12.2013
comment
Извините, но это просто глупо. Я не хочу начинать здесь длинную тираду, но как насчет того, чтобы сказать им, чтобы они печатали свои электронные письма без использования клавиатуры — просто так? Глупо, у меня нет другого слова для этого.   -  person vwegert    schedule 03.12.2013
comment
@vwegert Спасибо за совет, но так говорить нельзя. Потому что мы должны прислушиваться к нашим клиентам в любом случае... Пожалуйста, дайте мне решение, если вы знаете Спасибо.   -  person Piyush Aggarwal    schedule 03.12.2013


Ответы (4)


Вы можете использовать класс cl_rebf_ddic_tabl

Он существует, вернет вам X, если объект (таблица, структура или представление) существует в SE11.

EG:

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
    .
person Piyush aggarwal    schedule 05.12.2013
comment
Имейте в виду, что этот класс является частью пакета RE-FX и, следовательно, его существование в каждой системе ABAP не гарантируется. - person vwegert; 05.12.2013

Официальным API для проверки существования типа данных словаря является функциональный модуль DDIF_NAMETAB_GET. Он имеет довольно полную документацию. Имейте в виду, что это будет работать для различных типов таблиц и структур данных, и убедитесь, что вы проверили DDOBJTYPE.

Если по какой-либо причине (может быть, это домашнее задание?..?) вам нужно ограничить себя вызовами методов, вы можете использовать классы RTTI (потомки CL_ABAP_TYPEDESCR) - но имейте в виду, что это немного больше работы, потому что вам нужно убедитесь, что вы получили на самом деле таблицу. Классы RTTI будут возвращать дескрипторы любого типа данных, даже внутренние типы среды выполнения ABAP, в то время как DDIF_NAMETAB_GET ограничен типами словаря.

person vwegert    schedule 03.12.2013

  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).

person Michael Biermann    schedule 14.01.2016

Вы должны взглянуть на функциональный модуль DD_OBJECT_EXISTS, это будет полезно.

person user11095995    schedule 21.02.2019