Создание подтипов для инфотипа PA

Заткнулся на простой задаче. Был пользовательский инфотип, теперь надо его переделать на инфотип с подтипами. Решилось следующими действиями:

  1. Ставим галку V_T582A-SBTEX = ‘X’
  2. В таблице T591A прописываем подтипы
  3. В таблице T777D прописываем

Поле подтипа SUBTY
ТаблицаПодтипов T591A
ТекстТаблПодтип T591S

Все 🙂 Последний шаг можно сделать через транзакцию PM01 по кнопке Технические характеристики.


Функции нового ABAP редактора

Решил вспомнить немного программирование на ABAP. Уже около 4 лет прошло, как в последний раз абапил. А не так давно (в 2005 вроде) появился новый ABAP редактор. Все время не доходили руки посмотреть, что он из себя представляет для программиста. Потыкал пару клавиш, так ничего и не вышл – плюнул. И вот, сегодняшний вечер решил посветить изучению этого зверя.

Читать далее


Большой размер PDF форм

Еще одна любопытная особенность, которая выяснилась на днях. Если у вас PDF выходят очень большого размера (какой-нибудь групповой отчет, Т-3, Т-13 на несколько десятков мегабайт), то скорее всего в параметрах документа FILLABLE = ‘X’(интерактивная форма), а DYNAMIC = ‘ ’. Параметры передаются в структуре /1bcdwb/docparams при вызове
функционального модуля, генерирующего PDF. Чтобы PDF был интерактивным, т.е. с возможностью заполнения полей, и при этом вменяемого размера, оба параметра (FILLABLE, DYNAMIC) должны быть включены. Выглядит это примерно так:

fp_docparams-FILLABLE = ‘X’.
fp_docparams-DYNAMIC = ‘X’.

CALL FUNCTION fm_name
EXPORTING
/1bcdwb/docparams = fp_docparams
header = g_s_header
t6A = g_tab_t6a
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4.

Например, таким образом, в “RU стандарте” вызываются российские PDF формы.

Если в форме есть поля, которые пользователь может самостоятельно заполнять по кнопочке, то нужно в таблицу fp_docparams добавить два параметра:
fp_docparams-FILLABLE = ‘X’.
fp_docparams-DYNAMIC = ‘X’.

Тогда размер файла существенно сократиться, а, следовательно, и время его формирования.
Это работает только для Acrobat Reader >= 7.0

Вводная здесь: http://help.sap.com/erp2005_ehp_04/helpdata/EN/44/a36a5cdee42aabe10000000a1553f7/frameset.htm

Вспомнил, это так называются интерактивные формы! 🙂


SAPGUI.AbapEditor.1

Система виснет при попытке открыть ABAP исходник или отладчик? Встречались с такой ошибкой в трейс логе SAP GUI? Неделю убил на поиск решения. Сап поддержку напряг. Ноль результата. Оказалось все просто. Удалил все MS XML версии, Скачал MS XML4 SP 2и последние обновления к нему. Переустановил и все отлично заработало!

(Error)(29.05.09 19:44:00.592): CALL METHOD “CreateControl”[DispID=5]OF [#11/0x032D31F0/202/{83658045-6571-3232-7082-797884697868}] #0: LONG “119”
#1: STRING “SAPGUI.AbapEditor.1”
#2: LONG “1409286144”
#3: LONG “118”
IDispatch::Invoke raised exception


Потеря MASSN, MASSG при мероприятии

Ситуация. Мероприятие прием на работу. Заполняем все правильно и красиво. Доходим до ИТ0298 и причина мероприятия оказывается пустой, хотя в 0000 мы ее указали. Оказывается проблема в том, что ряд инфо-типов очищает внутренние структуры, которые как раз и хранят наши код и причину мероприятия. Например, ИТ2006. Если вы его поставите в инфо-группе до 0298, то в ИТ0298 поле причины мероприятия будет пустым. Если ИТ2006 поставить после 0298, то все будет отлично.

Проблема в том, что данные по отпуску должны выводиться в приказ о приеме, поэтому 2006 должен быть раньше 0298. Чтобы решить проблему нужно после ИТ0000 где-то сохранить эти значения. Например, в динамическом мероприятии, а затем восстановить перед ИТ0298. Сделать это можно через собственную процедуру, которая будет вызываться и сохранять в памяти значения. Либо как-то еще – на ваш выбор.

Решить можно вот так. Прописываем в динамических мероприятиях для ИТ0000.

0000 04 390 *— FIX MASSG LOSING FOR 0298 —
0000 04 391 P T001P-MOLGA=’33’
0000 04 392 F EXPORT_MASSN_MASSG(MP029800)

Обратная подпрограмма для чтения в ИТ0298 тоже есть, вызывается при заполнении структуры, т.е. больше ничего делать не надо.