Sapforum.Biz

Учет и отчетность => Финансы (FI) => Тема начата: axion от Декабрь 29, 2011, 03:36:50 pm

Название: Open FI
Отправлено: axion от Декабрь 29, 2011, 03:36:50 pm
Всем добрый вечер.
А есть что-нибудь внятное почитать про Open FI?
Название: Re: Open FI
Отправлено: Dmitriy от Декабрь 29, 2011, 04:58:21 pm
А зачем?.. Поиск в гугле по ключу SAP OPEN FI вроде выдаёт информацию. Обычно вопросы по данной тематике задают исключительно с привязкой к конкретной задаче. Если же для общего ознакомления, то можно начинайть с самой первой ссылки, выдаваемой поисковым запросом.
Название: Re: Open FI
Отправлено: Uukrul от Декабрь 30, 2011, 12:06:49 pm
Почитать минимально и как к этому подступится написано хорошо тут: http://www.sapnet.ru/viewtopic.php?t=1298, однако так как ресурсы закрываются, открываются и т.д., то я продублирую написанное так же и в этой теме. Если автор будет возражать ну тогда оставим только ссылку. И так описание от Admin-а форума www.sapnet.ru

Цитировать
OPEN FI

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

1. Вообще-то эта шутка действительно разработана для использования по большому счету внутри SAP, а не для клинетов.
2. Есть определенные подводные камешки при вклинивании своих программ.

А теперь танцы 

1. Идем по настройке SPRO: Финансы-Основные параметры финансов-События бизнес-транзакций.

2. По меню Среда-Ифносистема(Процессы) или Ифносистема(P/S) отличаются тем в одном случае вроде как можно вызывать последовательность своих функций а в другом только одну функцию. Запускаем втрой пункт Среда-Ифносистема(Процессы) Получаем весь список событий куда можно прицепиться, для лучшей читабельности надо бы скинуть перед запуском галку "Просмотр только кратких текстов", а если поставить "Процессы с активными продуктами" то получим уже активированные события.

3. Находим подходящее событие ставим курсор на него и жмем кнопку "Функциональный модуль образец" получаем заготовку определения модуля. Копируем его в свой и делаем чего нам уже надо.

4. Выходим наверх в меню и выбираем теперь Парметры настройки - Продукты - Клиента. Вносим туда свой любой код например "XXX" и описание типа "Свои расширения" ну и ставим галку "Активно"

5. После этого опять по меню Парметры настройки - Модули процесса - Клиента. И в появившейся табличе добавляем: "Код события", "Имя функциаонального модуля" ну и код продукта "XXX".

Ну и вроде как все...

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

Отображение дополнительных полей для позиции бух.проводки
Все можно в 4.6.
Через OpenFi можно добавить любое поле (по любому алгоритму) в набор полей стандартных транзакций просмотра позиций.
Query не нужно.
Если надо подробнее, то чуть позже могу ответить.

Событие OpenFI - 1650, функциональный модуль Z_INTERFACE_00001650
С помощью append добавляете в структуру RFPOS поле ZZNAME1.
Модуль:
Импорт I_POSTAB LIKE RFPOS
Экспорт E_POSTAB LIKE RFPOS

Для добавления полей в отчеты типа FBL1N / FBL5N нужно также продублировать поля в структуру RFPOSX. После добавления полей необходимо запустить программу RFPOSXEXTEND, которая перегенерит структуру RFPOSXEXT, используемую в отчетах. Также нужно помнить о сбрасывании буферов по каталогу полей - программа BALVBUFDEL.

Код: You are not allowed to view links. Register or Login
FUNCTION z_interface_00001650.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(I_POSTAB) LIKE RFPOS STRUCTURE RFPOS
*" EXPORTING
*" VALUE(E_POSTAB) LIKE RFPOS STRUCTURE RFPOS
*"----------------------------------------------------------------------

*-------------- Initialize Output by using the following line ----------
  TABLES: lfa1, kna1, bseg.
  DATA: zkunnr LIKE bseg-kunnr,
  zlifnr LIKE bseg-lifnr.

  IF i_postab-koart = 'K' AND NOT i_postab-konto IS INITIAL.
    SELECT SINGLE name1 INTO i_postab-zzname1
    FROM lfa1
    WHERE lifnr = i_postab-konto.
  ENDIF.

  IF i_postab-koart = 'D' AND NOT i_postab-konto IS INITIAL.
    SELECT SINGLE name1 INTO i_postab-zzname1
    FROM kna1
    WHERE kunnr = i_postab-konto.
  ENDIF.

  IF i_postab-koart = 'S'.
    SELECT SINGLE lifnr kunnr INTO (zlifnr, zkunnr)
    FROM bseg WHERE bukrs = i_postab-bukrs AND
    gjahr = i_postab-gjahr AND
    belnr = i_postab-belnr AND
    buzei = i_postab-buzei.
    IF sy-subrc = 0.

      IF NOT zlifnr IS INITIAL.
        SELECT SINGLE name1 INTO i_postab-zzname1
        FROM lfa1
        WHERE lifnr = zlifnr.
      ELSEIF NOT zkunnr IS INITIAL.
        SELECT SINGLE name1 INTO i_postab-zzname1
        FROM kna1
        WHERE kunnr = zkunnr.
      ELSE.
        SELECT SINGLE lifnr kunnr INTO (zlifnr, zkunnr)
        FROM bseg WHERE bukrs = i_postab-bukrs AND
        gjahr = i_postab-gjahr AND
        belnr = i_postab-belnr AND
        ( koart = 'D' OR koart = 'K' ).
        IF NOT zlifnr IS INITIAL.
          SELECT SINGLE name1 INTO i_postab-zzname1
          FROM lfa1
          WHERE lifnr = zlifnr.
        ELSEIF NOT zkunnr IS INITIAL.
          SELECT SINGLE name1 INTO i_postab-zzname1
          FROM kna1
          WHERE kunnr = zkunnr.
        ENDIF.
      ENDIF.

    ENDIF.
  ENDIF.

  e_postab = i_postab.
ENDFUNCTION.