Список таблиц, которые оставляют следы в таблицах CDHDR и CDPOS

Я хочу зафиксировать изменения для всех возможных таблиц SAP.

Я понял что CDHDR а также CDPOS таблицы фиксируют документы изменений, но не ясно, для каких таблиц это делается.

У меня есть несколько вопросов, чтобы задать:

  1. Получить список всех таблиц, для которых CDHDR а также CDPOS таблицы захвата изменений документов.
  2. Как CDPOS Таблица содержит только измененное поле, и мне нужно сопоставить его с первичным ключом таблицы. Как я могу сопоставить измененную запись с первичным ключом таблицы?

2 ответа

Чтобы чисто ответить на ваш вопрос, я, безусловно, могу сказать вам, чтобы посмотреть в Т-код SCDO чтобы понять, что вам нужно, но я бы предпочел оспорить ваш подход. Итак, у вас есть требование фиксировать изменения для всех возможных таблиц SAP. Для чего? Тысячи таблиц SAP отслеживаются CDHDR а также CDPOS и большинство таблиц не приносят вам немедленных деловых выгод. Всякий раз, когда столбец таблицы имеет элемент данных, такой как BELNR_D а также GJAHR может появиться в CDHDR потому что такой элемент помечен как флаг "Изменить документ" (т-код SE11):

И SAP объясняет флагу:

Флаг для документов изменений указывает, регистрируются ли изменения полей в таблицах базы данных, определенных со ссылкой на этот элемент данных, когда задействованы объекты документа изменений.

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

Если ваше требование является частью проекта хранилища данных, то вам не придется иметь дело с CDPOS а также CDHDR Вы можете анализировать добавочную вставку, удаление и обновление через прозрачные таблицы или стандартные экстракторы. Если вы можете использовать триггер БД, то SLT также может быть возможностью получать измененные записи в интересующих вас таблицах практически в режиме реального времени (5-секундная задержка по умолчанию).

Подводя итог, вы можете перейти к меню SAP - Инструменты - ABAP Workbench - Другие инструменты - Изменить документ или просто к т-коду. SCDO, Тем не менее, мой комментарий выше к бизнес-требованиям - это то, что я действительно намерен выразить.

Почему не работает SELECT DISTINCT tabname FROM cdpos получить актуальный список всех таблиц? Я думаю, этого должно быть достаточно, потому что ваша система SAP уже некоторое время работает. Если вы не можете сделать это сами, спросите кого-то, раз и навсегда.

В таблице CDPOS, вы получаете идентификатор объекта, измененного из столбца TABKEY, Если первичный ключ состоит из нескольких столбцов, TABKEY является объединением значений символов с выравниванием на основе размера каждого столбца. Я не уверен, но я предполагаю, что столбцы первичного ключа (таблиц, на которые ссылается TABNAME CDPOS) всегда имеют символьные типы.

Столбцы первичного ключа одной таблицы можно извлечь из словаря ABAP с помощью этого запроса SQL: SELECT fieldname, leng FROM dd03l WHERE tabname = 'one_table' AND fieldname LIKE '.%' AND keyflag = 'X' ORDER BY position (имена столбцов, начинающиеся с точки, предназначены для внутреннего содержимого).

Другие вопросы по тегам