Консультантам, при подготовке Технического задания программисту, необходимо указывать объекты (таблицы) в базе данных SAP, которые будут использоваться как источники данных. Методике определения этих источников посвящена настоящая статья.

Александр Неловкин, ведущий инженер-программист отдела разработки программного обеспечения центра компетенции SAP филиала «Управление «Укргазтехсвязь» ДК «Укртрансгаз». Опыт внедрения и сопровождения систем SAP – более 14 лет. Богатый опыт по консультированию и подготовке разработчиков для SAP систем. Более десятка проектов внедрения и модернизации системы SAP. Навыки и опыт работы со всем инструментарием SAP ABAP Workbench практически во всех модулях системы.

Обязательным элементом Технического задания (ТЗ) на разработку является указание источников данных. Под источником данных здесь подразумевается таблица Базы данных (БД), в которой хранится информация.

Типичная, ныне активно используемая, методика поиска источника данных для полей экрана выглядит так:

  1. Запускается транзакция.
  2. Открывается нужный экран.
  3. Курсор ставится на интересующее поле и вызывается Справка (нажимается F1)
  4. В окне справки нажимается кнопка Техническая информация ( )
  5. Значения полей Имя таблицы и Имя поля в открывшемся окне и считают источником данных.

Проблема, собственно, заключается в том, что в ряде случаев в поле Имя таблицы содержится имя структуры ABAP-словаря, а не имя таблицы. Структуры ABAP являются описанием составных типов данных и не имеют (в отличие от таблиц словаря) отображения в Базе данных (БД). Следовательно, сделать запрос к структуре и получить данные из БД невозможно.

Данная статья посвящена описанию методики определения имени таблицы, служащей источником данных для определенного поля.

Для примера, попытаемся определить таблицу-источник данных для поля Группа закупок в Заказе на поставку. Поле это находится на закладке ОргДанные транзакции ME22N (Изменение заказа на поставку), см. Рисунок 1.

Рисунок 1

Используя вышеописанную типичную методику, определяем, что для данного поля в Имя таблицы содержится «MEPO1222» и в Имя поля содержится «EKGRP», см. Рисунок 2.

Рисунок 2

MEPO1222 – это имя структуры. Она не может быть источником данных. Значит, будем определять, из какой таблицы берутся данные для поля Группа закупок

Для определения предлагается использовать SQL-трассировку. Основная идея заключается в том, чтобы оттрассировать обращение транзакции к БД и, проанализировав, к каким таблицам было обращение, определить, где хранятся интересующие нас данные.

Задача осложняется тем, что, как правило, трейс-лист получается довольно большой и приходится анализировать большой объем данных.

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

Вернёмся к нашему примеру. Нам понадобится два открытых режима. В первом режиме запускаем транзакцию ME22N и переходим на закладку ОргДанные (см. Рисунок 1).

Во втором режиме запускаем транзакцию ST05 - Трассировка SQL (см. Рисунок 3)

Рисунок 3

Нажимаем кнопку Activate Trace и возвращаемся в окно первого режима (см. Рисунок 1). В окне первого режима изменяем значение поля Группа закупок. В нашем примере изменим значение «011» на «012» (выбор значений совершенно случайный). После этого нажимаем кнопку Сохранить (

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти