Текущее время: Пн, июл 21 2025, 21:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: добавление полей на ЭКРАНЕ в транзакции FBL1
СообщениеДобавлено: Пт, авг 03 2007, 18:16 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Коллеги, доброго времени суток, волею случая мне приходится поддерживать FI, в котором мало чего понимаю (сам я HRщик :D ), возникла необходимость добавить пару собственных полей на экран документа (для кредитора). Посмотрел статью: http://www.sap-easy.net.ru/open_fi1.htm но это уже обработка логики, а вот как сами поля добавить (программа SAPMF05L, экран 302)? Существует ли в версии 4.6С такая возможность в стандарте? Кстати, как понять какие события Open FI будут отрабатывать на этом экране в PBO и PAI логике? Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 03 2007, 21:52 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пт, июл 08 2005, 13:07
Сообщения: 5274
Откуда: Geneva
Пол: Мужской
Я бы поступил несколько иначе - не добавлял поля на стандартный экран программы, а вызывал новый экран из функционального модуля OpenFI. По такому принципу, например, работает модуль заполнения дополнительных полей для налоговых платежных поручений.
Какие точно модули OpenFI будут вызываться можно определить путем активации соответствующих стандартных модулей (с установкой break-point в них) для событий в диапазоне 1000...1039. Тогда и узнаете в какой момент какой модуль вызывается. Еще можно попробовать поставить break-point на модули вида OPEN_FI_PERFORM* (или что-то типа того...) - это модули, вызывающие непосредственно OpenFI события, т.е. на шаг раньше описанного мною раньше.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 07:55 
Специалист
Специалист

Зарегистрирован:
Чт, май 04 2006, 07:35
Сообщения: 218
Откуда: Ижевск
Или можно просто зайти в отладку при нажатии, например, кнопки "Сохранить" и установить точки прерывания при вызове модулей PC_FUNCTIONS_READ и BF_FUNCTIONS_READ. А потом только записывай, какие события работают, их номера


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 09:12 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Коллеги, большое спасибо за ответы.
to darkduck: для полного понимания, т.е. если я правильно Вас понял, мне нужно скопировать стандартный экран со всей логикой обработки в свою группу функций и там дорисовать свои поля и описать их логику, а затем использовать соответствующие ФМ из Open FI для перехвата стандартной логики на открытие и сохранение?
to all: а нет ли какой стандартной возможности, например как HR-е можно расширить инфо-тип своим подэкраном и он будет отображаться вместе со стандартным экраном?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 09:16 
Специалист
Специалист

Зарегистрирован:
Чт, май 04 2006, 07:35
Сообщения: 218
Откуда: Ижевск
Расширяется блок контировки, добавляются свои поля к стандартным. Эта стандартная настройка, но требует большого внимания, понимания и ответственности


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 10:02 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пт, июл 08 2005, 13:07
Сообщения: 5274
Откуда: Geneva
Пол: Мужской
2Дима: Копировать весь экран не нужно. На дополнительный экран выводятся только дополнительные поля.
Посмотрите как это реализовано для налоговых полей платежки (101, 104-110): https://websmp107.sap-ag.de/~sapidb/011 ... 630482002R разделы "Информация из основных записей Дебитора/Кредитора" и "Информация из документов".
2Dimkin: Разве блок контировки работает на позиции кредитора?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 14:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:48
Сообщения: 168
Откуда: Москва
Добрый день коллеги!

В дополнение к сказанному darkduck и Dimkin, хочу добавить еще один способ.
Тоже разновидность OpenFI.
Но используется событие 1013 -Просмотр кнопки для ссылок.
В принцепе, тоже самое, что и в АДД-он примере по платежкам, но с одним отличием.
Вызывается доп. экран нажатием кнопки, котрая появляется в доп. данных на позиции, напротив поля "Ссылочный ключ3", если активно это событие и если в поле "Ссылочный ключ3" проставлена *.
Перелесть этого события в том, что можно управлять вызовом доп экрана, а не так, как в примере с платежкой - экран вызывается только при сохранении документа.
Минус, в том, что на данном событии еще нет номера документа. И если записи с доп экрана будут записываться в доп таблицу, то надо еще подключать событие 1030, чтобы оно потом дописывало в доп. тоблицу и номер документа.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 17:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
И снова всем большое спасибо за ответы. darkduck, спасибо за ссылку, но к сожалению у нас в этой программе (J_3RFZKR) нет ни одного *OPEN_FI_PERFORM* :shock: возможно просто у нас старая версия, т.к. система давно не обновлялась. Попробовал воспользоваться советом Dimkinа, использовал BF_FUNCTIONS_READ и определил событие, которое возникает перед обновлением экрана - 1005. Попробовал использовать его - получилось, но возник ряд вопросов:
1) не получается правильно вызвать свой подъэкран: когда в процессе обработки события я попадаю в свой пользовательский ФМ в котором стоит вызов:
Code:
CALL SCREEN '0100'.
мой экран полностью заменяет собой стандартный (302), а не появляется внизу как подэкран. Сам 100-й экран определен в моей группе функций как экран (т.к. при попытке определить его как подъэкран в момент вызова в программе возникает ошибка). Как тогда должен определяться вызов подъэкрана?;
2) на этапе вызова моего пользовательского ФМ структуры BSEG, BKPF пусты (наверное это та ситуация, о которой говорил Niki(4.6B)), возможно конечно, что при вызове события сохранения данных (пока не дошел до этого шага и потому не уверен) они будут заполнены, но если это не так, какими ФМ лучше воспользоваться для их заполнения?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 18:28 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пт, июл 08 2005, 13:07
Сообщения: 5274
Откуда: Geneva
Пол: Мужской
Дима написал:
у нас в этой программе (J_3RFZKR) нет ни одного *OPEN_FI_PERFORM* :shock: возможно просто у нас старая версия


:shock: Не совсем понятна связь программы J_3RFZKR и транзакции FBL1. Естественно, что в Add-on программах, разрабатываемых "локально" нет ни одного вызова OpenFI процедур, разрабатываемых "глобально".
К сожалению, у меня нет под рукой системы, тем более с установленным российским Add-on, поэтому я не могу сказать что за программа J_3RF... Может быть, Вы мне подскажете. Заодно опишите процесс, который потребовал добавления полей на стандартном экране. Вместе что-нибудь придумаем. :wink:


Последний раз редактировалось darkduck Пн, авг 06 2007, 23:22, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 06 2007, 19:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:48
Сообщения: 168
Откуда: Москва
Цитата:
1) не получается правильно вызвать свой подъэкран: когда в процессе обработки события я попадаю в свой пользовательский ФМ в котором стоит вызов: Код:
CALL SCREEN '0100'.
мой экран полностью заменяет собой стандартный (302), а не появляется внизу как подэкран. Сам 100-й экран определен в моей группе функций как экран (т.к. при попытке определить его как подъэкран в момент вызова в программе возникает ошибка). Как тогда должен определяться вызов подъэкрана?;

Коллега, ИМХО, Вы увлеклись. Не стоит подменять стандартные экраны, своими, пользовательскими. Пользуйтесь OPEN-FI, но только как дополнение к стандарту. Полей не хватает - не вопрос.
Определеям момент, на котором требуется заполнение доп. полей (вызов на позиции - события P/S -1010 -1013 или документ полностью - события 1020 -1030 ).
На момент - позиция документа, в интерфейс модуля пердается значение I_BSEG обрабатываемой позиции и значение заголовка I_BKPF.

На момент - документ полностью, в интерфейс модуля передаются все позиции обрабатываемого документа + заголовок (событие 1020). В событие 1025 и 1030 в дополнение к T_BSEG и T_BKPF добавляются данные по налогам T_BSET и данные по выравниванию T_AUSZ* + еще несколько редкоиспользуемых таблиц.
Еще есть события процесса 1120 его тоже часто пользуют. Но оно без выравнивания.

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

По поводу J_3RFZKR. Не туда смотрите.
Вам нужно посмотреть активированы ли у Вас модули J_3RF_PDOC и J_3RF_PDOC1430. Если нет, то активируйте вот по этой инструкции.

Цитата:

Для того, чтобы иметь возможность ввести или изменить информацию в таблице
J_3RF_PLAT, необходимо соблюдать следующие условия:
• в документе содержится позиция кредитора по кредиту;
• код проводки этой позиции не определен как код платежной операции;
• в основной записи кредитора (или альтернативного получателя) заполнен
бухгалтерский текст с идентификатором P101 (значение по усмотрению
пользователя);
• активированы функциональные модули J_3RF_PDOC и J_3RF_PDOC1430.
Создание и изменение записей в таблице J_3RF_PLAT осуществляется с помощью
функциональных модулей J_3RF_PDOC и J_3RF_PDOC1430. Для их использования
необходимо выполнить следующие настройки в транзакции FIBF:
Путь по меню:
Настройки IMG:Финансы -> Основные параметры финансов -> События бизнес-операций:
1. Пункт меню: Параметры настройки -> Идентификатор -> Партнеры определить
партнера J3RF для России и активизировать его;
2. Пункт меню: Параметры настройки -> Продукты -> Партнера -> Обработать
определить продукты:
Продукт Партнер Текст
J3RFPDOC J3RF Печать платежных документов (ввод)
J3RFCPD J3RF Печать платежных документов
(изменение)
3. Пункт меню: Параметры настройки -> Продукты -> Партнера -> Активировать
добавить строки:
Продукт Партнер
J3RFPDOC J3RF
J3RFCPD J3RF
Для отключения модулей записи удаляются.


а там уже смотреть, что и как вызывается.
Пройдитесь еще поиском по програмерскому форуму. Там тема OpenFI обсуждалась неоднократно.
http://sapboard.ru/forum/search.php?mode=results

А так, присоединяюсь к вопросу darkduck
Цитата:
Заодно опишете процесс, который потребовал добавления полей на стандартном экране. Вместе что-нибудь придумаем.

Интересно, каких полей не хватает. Может, если это стандартные поля, то их можно статусами открыть. Естественно, если они есть на стандартных экранах в скрытом виде.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 07 2007, 08:27 
Специалист
Специалист

Зарегистрирован:
Чт, май 04 2006, 07:35
Сообщения: 218
Откуда: Ижевск
Спасибо Niki про еще один способ, событие 1013. Я не знал. И даже минусов нету. Есть такая прекрасная штука perform on commit. То есть вызов обработки при сохранении документа в базе. А там уже номер документа есть, строку и допданные записываем куда надо


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 07 2007, 09:17 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
to darkduck:
Цитата:
Не совсем понятна связь программы J_3RFZKR ...
данную программу я взял из документа, ссылку на который Вы мне прислали. Однако повторюсь, не имея ни малейшего представления об FI, подумал, что в ней есть примеры работы с технологией Open FI :)
Цитата:
...я не могу сказать что за программа J_3RF... Может быть, Вы мне подскажете.
это программа печати платежных поручений кредиторов

tо Niki(4.6B):
Цитата:
Не стоит подменять стандартные экраны, своими, пользовательскими.
полностью с Вами согласен, более того мне это и не нужно, это, так сказать, побочный эффект экспериментов :D я действительно хочу добавить ТОЛЬКО дополнительные поля
Цитата:
По поводу J_3RFZKR. Не туда смотрите.
Вам нужно посмотреть активированы ли у Вас модули J_3RF_PDOC и J_3RF_PDOC1430. Если нет, то активируйте вот по этой инструкции.
а вот здесь упс, спотыкаюсь на первом шаге, т.к. у меня даже нет таблицы J_3RF_PLAT.
Цитата:
Пройдитесь еще поиском по програмерскому форуму. Там тема OpenFI обсуждалась неоднократно.
что касается самой технологии, то для меня она более-менее понятна, т.к. по-сути является аналогией BADI и user-exitов с которыми я немного знаком

to darkduck, Niki(4.6B):
Цитата:
...опишите процесс, который потребовал добавления полей на стандартном экране...
как я вчера вечером выяснил, мне нужна транзакция F-02, а не FBL1N, о которой я говорил ранее. Теперь о самой задаче, мне требуется добавить 2 поля на втором экране транзакции F-02: 1) Код условий платежа (BSEG-ZTERM) и 2) Базовая дата для расчета срока оплаты (BSEG-ZFBDT). Самое забавное в этой ситуации то, что эти поля уже есть на экране, но я не могу их использовать, потому, что в системе масса рукописных доработок и я не знаю, на что это повлияет, начни я их (эти поля экрана) использовать, а времени на анализ мало. Поэтому самый логичный и быстрый для меня способ - добавить аналогичные поля на дополнительный экран. Теперь о способах реализации: используя ФМ BF_FUNCTIONS_READ выяснил, что перед выводом экрана отрабатывает единственное событие 1005, именно поэтому я и задал вопрос по-поводу заполнения структур BSEG и BKPF чтобы в дальнейшем корректно сохранить данные, но подозреваю, что скорее всего при отработке события сохранения (пока не знаю его кода) эти структуры будут заполнены. Возможно я где-то ошибся, и нужно идти другим путем, но я его, к сожалению, пока не вижу. Надеюсь, с вашей помощью найду решение. Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 07 2007, 09:49 
Специалист
Специалист

Зарегистрирован:
Чт, май 04 2006, 07:35
Сообщения: 218
Откуда: Ижевск
Я попробовал на своей системе
Там вызываются на уровне строки события 1011, 1140, 1085
Добавил обработку события 1011 "Проверка на уровне строки при вводе и изменении документа" call screen starting ending нарисовал поля.
Провел документ, событие обрабатывается, экран вызывается поля нарисованы, логика работает. Все как должно быть. У вас тоже не должно быть проблем


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 07 2007, 10:03 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Цитата:
Там вызываются на уровне строки события 1011, 1140, 1085
Каким образом? Воспользовавшись Вашим советом с точкой прерывания в ФМ BF_FUNCTIONS_READ поймал только 1005. Как я это делал: запустил транзакцию F-02 указал параметры на селекционном экране и перед выводом следующего экрана получил вышеуказанное событие. Где же вызываются другие события?
Цитата:
call screen starting ending нарисовал поля

а можно с этого момента поподробнее, как Вы это сделали и где. Если можно, кусочек кода? И кстати, а куда Вы сохраняете данные из своих полей? Ведь, насколько я знаю, BSEG нельзя расширить.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 07 2007, 10:29 
Специалист
Специалист

Зарегистрирован:
Чт, май 04 2006, 07:35
Сообщения: 218
Откуда: Ижевск
Вызвал f-02, заполнил экран заголовка, зашел на экран 302, ввел данные, вызвал отладку /h, получил события 1011, 1140, 1085. Визуально определил по названию что подходит 1011, скопировал образец, включил ФМ в список вызываемых ФМ, написал 1 строку в ФМ call screen, создал экран, нарисовал поля. Дальше в логике экрана пишете код, вызываете perform on commit. При проводке процедура выполняется, пишете данные в собственную таблицу например из 5 полей: bukrs belnr gjahr buzei и ваше поле и сохраняете в базе. Ну это как пример, чтоб стандарт не трогать, а потом при просмотре отдельных позиций еще и достаете это поле из вашей таблицы. Можно использовать в BSEG какое нибудь поле, но тогда его нужно будет заместить в событии например 1120


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB