Текущее время: Сб, июн 21 2025, 18:08

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, дек 14 2010, 10:24 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 14 2010, 09:59
Сообщения: 2
Добрый день, коллеги.
Хотел бы здесь изложить свою реализацию контроля наличия по периодам (по месяцам, по кварталам делается аналогично). На момент месяц назад была реализация, предусматривающая создание нескольких дополнительных регистров контроля наличия.
Предлагаемая мной реализация использует дополнительный элемент измерения, выделенный SAP, а именно, UserDim. Кто-то предлагает использовать программу бюджета, но она, как правило, часто используется, если требуется бюджетирование в разрезе мероприятий.
Последовательность действий:
1. Активация дополнительного измерения USERDIM.
2. Создание дополнительных строк в регистры контроля наличия при вводе бюджета или проводке фактов хозяйственной деятельности.
3. Создания фильтра, который пропускает только строки, в которых USERDIM имеет значение.

1. Активация дополнительного измерения USERDIM.
Честно не нашел стандартную программу или настройку по данному элементу измерения. Так что, нужно создать маленькую программу, которая активирует данное измерение.
Содержание программы простое:
UPDATE fmdimstate
SET userdim_state = '2'
WHERE fm_area = "Ваша ЕФМ".

2. Создание дополнительных строк в регистры контроля наличия при вводе бюджета или проводке фактов хозяйственной деятельности.
Создаем реализацию расширения FMAVC_ADD_LINES, методы ADD_BUDGET_LINES и ADD_POSTING_LINES.
Метод ADD_BUDGET_LINES:
DATA:
ls_budget_lines LIKE LINE OF i_t_budget_lines,
new_lines LIKE ls_budget_lines.

LOOP AT i_t_budget_lines INTO ls_budget_lines.
MOVE ls_budget_lines TO new_lines.
new_lines-flg_added = 'X'.
CLEAR: new_lines-tval01, new_lines-tval02, new_lines-tval03, new_lines-tval04, new_lines-tval05, new_lines-tval06,
new_lines-tval07, new_lines-tval08, new_lines-tval09, new_lines-tval10, new_lines-tval11, new_lines-tval12.
CLEAR: new_lines-lval01, new_lines-lval02, new_lines-lval03, new_lines-lval04, new_lines-lval05, new_lines-lval06,
new_lines-lval07, new_lines-lval08, new_lines-lval09, new_lines-lval10, new_lines-lval11, new_lines-lval12.

IF ls_budget_lines-lval01 <> 0.
new_lines-tval01 = ls_budget_lines-tval01.
new_lines-lval01 = ls_budget_lines-lval01.
new_lines-address-userdim = '01'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval02 <> 0.
new_lines-tval02 = ls_budget_lines-tval02.
new_lines-lval02 = ls_budget_lines-lval02.
new_lines-address-userdim = '02'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval03 <> 0.
new_lines-tval03 = ls_budget_lines-tval03.
new_lines-lval03 = ls_budget_lines-lval03.
new_lines-address-userdim = '03'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval04 <> 0.
new_lines-tval04 = ls_budget_lines-tval04.
new_lines-lval04 = ls_budget_lines-lval04.
new_lines-address-userdim = '04'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval05 <> 0.
new_lines-tval05 = ls_budget_lines-tval05.
new_lines-lval05 = ls_budget_lines-lval05.
new_lines-address-userdim = '05'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval06 <> 0.
new_lines-tval06 = ls_budget_lines-tval06.
new_lines-lval06 = ls_budget_lines-lval06.
new_lines-address-userdim = '06'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval07 <> 0.
new_lines-tval07 = ls_budget_lines-tval07.
new_lines-lval07 = ls_budget_lines-lval07.
new_lines-address-userdim = '07'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval08 <> 0.
new_lines-tval08 = ls_budget_lines-tval08.
new_lines-lval08 = ls_budget_lines-lval08.
new_lines-address-userdim = '08'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval09 <> 0.
new_lines-tval09 = ls_budget_lines-tval09.
new_lines-lval09 = ls_budget_lines-lval09.
new_lines-address-userdim = '09'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval10 <> 0.
new_lines-tval10 = ls_budget_lines-tval10.
new_lines-lval10 = ls_budget_lines-lval10.
new_lines-address-userdim = '10'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval11 <> 0.
new_lines-tval11 = ls_budget_lines-tval11.
new_lines-lval11 = ls_budget_lines-lval11.
new_lines-address-userdim = '11'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_budget_lines-lval12 <> 0.
new_lines-tval12 = ls_budget_lines-tval12.
new_lines-lval12 = ls_budget_lines-lval12.
new_lines-address-userdim = '12'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.
ENDLOOP.

ADD_POSTING_LINES:
DATA:
ls_posting_lines LIKE LINE OF i_t_posting_lines,
new_lines LIKE ls_posting_lines.

LOOP AT i_t_posting_lines INTO ls_posting_lines.
MOVE ls_posting_lines TO new_lines.
CLEAR: new_lines-lval01, new_lines-lval02, new_lines-lval03, new_lines-lval04, new_lines-lval05, new_lines-lval06,
new_lines-lval07, new_lines-lval08, new_lines-lval09, new_lines-lval10, new_lines-lval11, new_lines-lval12.

IF ls_posting_lines-lval01 <> 0.
new_lines-lval01 = ls_posting_lines-lval01.
new_lines-address-userdim = '01'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval02 <> 0.
new_lines-lval02 = ls_posting_lines-lval02.
new_lines-address-userdim = '02'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval03 <> 0.
new_lines-lval03 = ls_posting_lines-lval03.
new_lines-address-userdim = '03'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval04 <> 0.
new_lines-lval04 = ls_posting_lines-lval04.
new_lines-address-userdim = '04'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval05 <> 0.
new_lines-lval05 = ls_posting_lines-lval05.
new_lines-address-userdim = '05'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval06 <> 0.
new_lines-lval06 = ls_posting_lines-lval06.
new_lines-address-userdim = '06'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval07 <> 0.
new_lines-lval07 = ls_posting_lines-lval07.
new_lines-address-userdim = '07'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval08 <> 0.
new_lines-lval08 = ls_posting_lines-lval08.
new_lines-address-userdim = '08'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval09 <> 0.
new_lines-lval09 = ls_posting_lines-lval09.
new_lines-address-userdim = '09'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval10 <> 0.
new_lines-lval10 = ls_posting_lines-lval10.
new_lines-address-userdim = '10'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval11 <> 0.
new_lines-lval11 = ls_posting_lines-lval11.
new_lines-address-userdim = '11'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.

IF ls_posting_lines-lval12 <> 0.
new_lines-lval12 = ls_posting_lines-lval12.
new_lines-address-userdim = '12'.
APPEND new_lines TO e_t_additional_lines.
ENDIF.
ENDLOOP.

3. Создания фильтра, который пропускает только строки, в которых USERDIM имеет значение.
Создаем реализацию расширения FMAVC_ENTRY_FILTER, методы BUDGET_FILTER и POSTING_FILTER.
Метод BUDGET_FILTER:
IF i_s_budget_line-address-userdim IS INITIAL.
e_flg_skip_entry = 'X'.
ENDIF.

Метод POSTING_FILTER:
CHECK sy-tcode <> 'GRR3'. "Для нормального отображения отчета по расходу бюджета, возможно требуется добавить еще транзакции.
IF i_s_posting_line-address-userdim IS INITIAL.
e_flg_skip_entry = 'X'.
ENDIF.

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

Надеюсь, данная реализация будет полезна.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, авг 09 2011, 11:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, сен 25 2007, 17:48
Сообщения: 193
Пол: Женский
почему-то не хочет по факту работать у меня:( АКН проверяет по общей сумме(((
и еще почему-то в отчете по расходу бюджета сумма расходуемого бюджета левые данные какие-то берет, которых нет в документах ввода бюджета.. :cry:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Пн, авг 22 2011, 13:25 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, сен 25 2007, 17:48
Сообщения: 193
Пол: Женский
В общем он почему-то при реинициализации контроля наличия в таблицу FMAVCT дописывает данные.
т.е. например, у меня введены данные за 07 и 08 периоды. При реинициализации, он для записей, где USERDIM = 08 в столбик 7 месяца дописывает значения. Получается что в 7-м месяце у меня задвоенные значения.
Что здесь нужно докрутить тогда?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, авг 23 2011, 14:30 
Почетный гуру
Почетный гуру

Зарегистрирован:
Ср, авг 04 2010, 15:10
Сообщения: 489
Пол: Женский
Если у Вас уровень система с EHP4 то для реализации АКН по периодам можно воспользорваться дополнительной контировкой Бюджетный период.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, авг 23 2011, 15:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, сен 25 2007, 17:48
Сообщения: 193
Пол: Женский
ой, а где посмотреть это EHP4 :oops: ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, авг 23 2011, 15:45 
Почетный гуру
Почетный гуру

Зарегистрирован:
Ср, авг 04 2010, 15:10
Сообщения: 489
Пол: Женский
Самый легкий способ спросить у базисника :)
А вообще путь по меню Система - Статус, далее в группе полей Данные SAP-системы под полем Версия компонентов есть кнопочка с лупой. Жмите ее и ищите Компонент ПO SAP_APPL. Версия должна быть как минимум 604.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, авг 23 2011, 15:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, сен 25 2007, 17:48
Сообщения: 193
Пол: Женский
у нас 500 :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Вт, авг 23 2011, 16:29 
Почетный гуру
Почетный гуру

Зарегистрирован:
Ср, авг 04 2010, 15:10
Сообщения: 489
Пол: Женский
Жаль :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Ср, авг 24 2011, 15:25 
Ассистент
Ассистент

Зарегистрирован:
Ср, ноя 07 2007, 21:03
Сообщения: 33
Пол: Мужской
Adelle написала:
Если у Вас уровень система с EHP4 то для реализации АКН по периодам можно воспользорваться дополнительной контировкой Бюджетный период.

Adelle, если вы используете бюджетный период, поделитесь опытом, пожалуйста. Какие плюсы и минусы нового решения? Контроль наличия вас устраивает? Вы меняли регистр на PSGLFLEXT или расширили регистр FA или FM?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Чт, авг 25 2011, 08:53 
Почетный гуру
Почетный гуру

Зарегистрирован:
Ср, авг 04 2010, 15:10
Сообщения: 489
Пол: Женский
Только начинаем его использовать, но пока все устраивает.
Никаких дополнительных манипуляций по расширению регистров и прочего мы не далили, только активировали бюджетный период (об этом писала тут).
Пока очень нравится. Единственное, что вызывает недоумение, зачем понадобилось жестко привязывать БП к фонду. Но это по всей видимости, как любят говорить САПы, "programm design".
Безусловным плюсом решения является то, что без особых усилий можно вести контроль за различные отрезки времени (месяц, квартал, год, полугодие), просто указав нужный отрезок времени.
На нашем проекте мы с помощью небольшой разработки на основе СПБ и периода бух. проводки сделали автоматическое определение БП в зависимости от БА. Т.е. определенному БА в СПБ присваиваете релевантный отрезок времени, по которому этот БА контролируется, и автоматически проставляете его в проводки. Все счастливы :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Ср, ноя 30 2011, 22:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2007, 07:27
Сообщения: 895
Пол: Мужской
Adelle написала:
Безусловным плюсом решения является то, что без особых усилий можно вести контроль за различные отрезки времени (месяц, квартал, год, полугодие), просто указав нужный отрезок времени.

Скажите, пожалуйста, а этот отрезок времени может быть в разных годах? Например, начальная дата в 2011 году, а конечная - в 2012 ?
Или все-таки это новшество ограничено одним годом ?
Если есть возможность в разных годах, то как решена проблема переноса Облиго из года в год ?

Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Чт, дек 01 2011, 01:40 
Почетный гуру
Почетный гуру

Зарегистрирован:
Ср, авг 04 2010, 15:10
Сообщения: 489
Пол: Женский
Это новшество, по сути дела - обычная контировка и если включить фантазию, можно сделать бюджетные периоды и на несколько лет.
Ну, к примеру, сделать БП на два года и закодировать его 20112012 и заводить на нее бюджет, только зачем? Лимиты-то все равно загружаются в рамках ФГ.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Чт, дек 01 2011, 11:14 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2007, 07:27
Сообщения: 895
Пол: Мужской
Adelle написала:
Это новшество, по сути дела - обычная контировка и если включить фантазию, можно сделать бюджетные периоды и на несколько лет.
Ну, к примеру, сделать БП на два года и закодировать его 20112012 и заводить на нее бюджет, только зачем? Лимиты-то все равно загружаются в рамках ФГ.

Объясняю зачем: выделяют средства под проект, который длится, например, с 01.11.2011 по 31.03.2012.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Чт, дек 01 2011, 12:15 
Почетный гуру
Почетный гуру

Зарегистрирован:
Ср, авг 04 2010, 15:10
Сообщения: 489
Пол: Женский
Для таких целей можно, конечно, создать БП на нексолько лет, потом просто переносить не израсходованный лимит в новый ФГ.
Еще у SAPа какая-то штука с видом фонда связанная, которая позволяет настроить вид фонта таким образом, что он контролируется по лимитам за несколько лет. Но я плотно не разбиралась с этой функциональностью. Но в Вашес случае удобнее будет использовать БП.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Реализация контроля наличия по периодам без создания дополнительных регистров
СообщениеДобавлено: Пн, дек 03 2012, 22:58 
Начинающий
Начинающий

Зарегистрирован:
Чт, сен 25 2008, 08:18
Сообщения: 15
Adelle написала:
Только начинаем его использовать, но пока все устраивает.
Никаких дополнительных манипуляций по расширению регистров и прочего мы не далили, только активировали бюджетный период.


Adelle, BUDGET_PERIOD используете только для АКН, а факт собираете по дате отражения в УБ?
Вопрос связан с тем, что если, например, мы выставили с\ф январем (BUDGET_PERIOD=01), а оплата пришла к нам февралем, то при выравнивании, насколько я понимаю, платеж пройдет в бюджете тоже с BUDGET_PERIOD=01. Т.е. факт БДДС по этому полю собрать не получится.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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