среда, 25 апреля 2012 г.

Ручное изменение таблиц

Иногда в процессе разработки функциональности или в процессе отладки бывает необходимо что-то поменять в таблице базы данных. Но ракурса для  изменения нет. И сделать его нельзя, либо не имеет смысла для одной правки.

Для этой цели существует несколько недокументированных возможностей.

  1. Транзакция SE16N. После запуска до выбора данных в окне команд нужно ввести "&sap_edit" (без кавычек), нажать Enter, после чего запустить выборку. При этом таблица откроется и в строке команд будут доступны команды создания/удаления строк и поля будут доступны на изменения. Но в последних версиях эту возможность пропатчили и она не работает. 
  2. Если п.1, не работает, то можно попробовать вместо SE16N запускать транзакцию UASE16N и выполнять ту же последовательность действий. Но эта транзакция может быть объявлена как устаревшая, о чем будет соответствующее сообщение при запуске, и использовать ее не получится.
  3. Если вышеперечисленные способы не работают, можно попробовать в транзакции SE37 запустить ФМ SE16N_INTERFACE, указав ему в параметре I_TAB имя таблицы, а в параметре I_EDIT значение 'X'. Остальное можно оставить по умолчанию. В результате получим тоже окно для редактирования, что и в SE16N с &SAP_EDIT.

понедельник, 23 апреля 2012 г.

Связь бонусных соглашений и условий

Заголовки условий хранятся в таблице KONH. Уникальный номер условия KONH-KNUMH.
Соглашения хранятся в таблице KONA. Уникальный номер соглашения KONA-KNUMA.

Получить номер соглашения по номеру условия просто - он хранится в одном из полей  KONH-KNUMA_* (например KNUMA_BO).

Получить все номера условий для заданного соглашения, конечно, можно, выполнив SELECT по  KONH-KNUMA_*, но это очень медленно, потому что индекса по этим полям в KONH нет.
В принципе для этого существует  индекcная таблица KONAIND, но судя по тому стандартному коду, который находится поиском, она используется только в случае, если тип соглашения (KONA-ABTYP) равен "C" (Мероприятие по стимулированию продаж).

Для бонусных соглашений правильным способом получения всех условий  является использование ФМ SD_BONUS_READ. Если же "копнуть" глубже, то поиск условий в этом ФМ производится по таблицам KOTE*,  в которых есть поля KNUMA и KNUMH и, как правило, есть индекс по KNUMA.

Особенности вывода PDF в Web Dynpro

При использовании Web Dynpro компонента INTERACTIVE_FORM для вывода PDF прямо в HTML страницу могут возникнуть некоторые проблемы.

Например, если на представлении помимо компонента INTERACTIVE_FORM присутствуют другие элементы, которые должны реагировать на действия пользователя - типичный вариант, кнопка Назад - то реагировать они не будут. Происходит это похоже потому, что используемый для вывода Adobe Reader перехватывает эти события и до обработчиков они не доходят. Возможно, это сделано для работы с интерактивными PDF-формами. Не знаю, пока с ними не сталкивался.
Но если у Вас обычная форма, которую нужно просто показать пользователю, то решением будет просто снятие флага Enabled у компонента INTERACTIVE_FORM.

Вторая тонкость заключается в способе формирования PDF. Компонент позволяет 2 варианта. В первом случае вы задаете в свойстве templateSource имя шаблона,  а в свойство dataSource "байндите" данные. Очень похоже на то, как  PDF выводится через свой сгенерированный ФМ при работе через SAP GUI. Но при выводе этим способом уже неоднократно сталкивались с тем, что при этом формируемый  на сайте PDF либо вообще не содержит текста, либо кракозябры вместо него. Возможно проблема в отсутствии каких-то шрифтов или прописанных путей до них. Пока не нашли в чем дело. Да и не искали особо. Потому что есть более надежный и простой способ - сгенерировать PDF как обычно через ФМ, но не выводить его, а получить сформированный файл в виде XSTRING и присвоить свойству pdfSource компонента INTERACTIVE_FORM. Для получения файла в виде XSTRING необходимо при вызове ФМ FP_JOB_OPEN передать в параметре ie_outputparams установленные поля nodialog и getpdf. При этом вызов сгенерированного ФМ для формирования выходного документа в параметре /1bcdwb/formoutput вернет в поле pdf созданный файл.

SAP GUI 7.2 Patch 11 for Windows

SAP выпустил очередное обновление своего GUI 7.2 для Windows. Значимой вещью 11го патча является исправление проблемы с Adobe LiveCycle Designer - после установки толи 9, толи 10  патча в дизайнере PDF пропадало главное меню. Судя по ноте, это проявлялось только при наличии Microsoft Office 2010. Это исправлено. Скачать можно с официального сайта или  отсюда .

понедельник, 9 апреля 2012 г.

О чем это?

Когда будет свободное время и мне будет не лень, то здесь будут появляться записи о тонкостях программирования на ABAP. Скорее даже обо всем, с чем приходится сталкиваться абаперу в процессе свой профессиональной жизнедеятельности - в том числе PDF, MS Office, Web, SQL etc.