Комментарии по теме

«Ко­рре­кти­ро­вка таблиц базы данных с помощью ABAP»
Олег Точенюк:
Андрей а вам никто никогда не говорил, что обновлять таблицы базы данных SAP категорически запрещено, независимо от того чем обусловлены такие желания. Свои Z-таблицы, да сколько угодно, но......
«По­дклю­че­ние новых типов объектов, доступных для тра­нза­кции MASS – массового изменения данных в SAP ERP»
Олег Точенюк:
Стандартные полномочия на объекты при вызове BAPI проверяются и как и положено согласно заданным у пользователя ролям, так что пользователь изменить к примеру данные карточек ОС, если у него есть...
«Ко­рре­кти­ро­вка таблиц базы данных с помощью ABAP»
Олег Точенюк:
С такими советами, лучше уж пусть нас вообще не будет в этой области :-(

Практические рекомендации по поиску источников данных - таблиц БД

11834
7

Александр Неловкин, ведущий инженер-программист отдела разработки программного обеспечения центра компетенции 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). В окне первого режима изменяем значение поля Группа закупок.

Ограниченный доступ

Для прочтения полной версии статьи необходимо зайти как зарегистрированный пользователь.

Комментарии:

Марина Делинская (Рейтинг: 26) 17:55, 14 июня 2012

Спасибо большое! Очень полезная статья
10:53, 25 июня 2012

Михаил Сидорочкин (Рейтинг: 104)

Гораздо быстрее можно найти используя Debugger Scripting. В случае его использования мы сравниваем значение переменной (структуры) и находим место где оно изменилось (в программе ей присваивается значение структуры - MEPO1222_pbo), далее по стеку выясняем откуда она заполняется. Написав один раз скрипт, мы избавим себя от необходимости анализа  большого трейса.
11:09, 25 июня 2012

Михаил Сидорочкин (Рейтинг: 104)

Хотя если воспользоваться уловкой с редактируемым полем, возможно это будет быстрее, зависит от сложности программы.
11:31, 29 июня 2012

Александр Дублин (Рейтинг: 13408)

Михаил.
 
Если Вы можете написать статью-рекомендацию по поиску таблиц - источников данных с помощью Debugger Scripting, то мы с удовольствием её опубликуем.
 
С уважением, Александр Дублин.
06:05, 21 сентября 2012

Юрий Сычов (Рейтинг: 62)

Пока статей на русском нет, можно здесь почитать
 
scn.sap.com/people/stephen.pfeiffer
09:30, 25 сентября 2012

Александр Неловкин (Рейтинг: 823)

Возможно и быстрее. Только далеко не везде стоит 7 версия, начиная с которой появился Debugger Scripting. Описанный же мной способ универсален и работает даже с версии 3.0 (это самая ранняя версия с которой мне приходилось работать), и, вполне возможно, с более ранними  :)

Мурат Бидов (Рейтинг: 67) 17:02, 14 августа 2013

Отличная статья! Помогло на практике)

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»