Корреспонденция счетов (gkont, j3rf, разделение в acdoca) - aamelin1/SAP-FI-notes GitHub Wiki
Что такое корреспонденция счетов?
Проводки могут быть записаны в виде записи, когда к каждому счету в явном виде определяется вторая сторона проводки (т.е. корреспондирующий счет).
Например, допустим у нас есть входящий инвойс, в SAP эта проводка хранится (в bseg, acdoca итд) без указания корр.счета, т.е. просто список позиций документов:
Кт | Контрагент | 120 RUB
Дт | ПМ/ПСч | 100 RUB
Дт | НДС | 20 RUB
С точки зрения записи проводки с корреспонденцией счетов она должна выглядеть так
Дт | ПМ/ПСч | 100 RUB |Кт | Контрагент | 100 RUB
Дт | НДС | 20 RUB |Кт | Контрагент | 20 RUB
В системе SAP есть несколько способов как достичь этого:
Корреспонденция счетов без РФ локализации (заполнение поля GKONT и GKOAR)
Это базовый вариант корреспонденции счетов, без использования РФ локализации, предполагает заполнение поля GKONT значением корр.счета (или значением контрагента из корр.позиции). Важно понимать что это не настоящая корреспонденция счетов в понимании РСБУ, а лишь доп. аналитика. Т.е. например в документах входящих инвойсов типа:
Позиция|Дт/Кт| Счет | Сумма
_______|_____|__________|_______
1 | Кт |Контрагент|120 RUB
2 | Дт |ПМ/ПСч |100 RUB
3 | Дт |НДС | 20 RUB
Позиция 1 не будет разделена на две позиции. Для позиции 1 корр.счет определится как счет ПМ/ПСч из позиции 2 (или не определится вовсе, зависит от настроек описанных ниже). Пример как это работает: Допустим у нас есть такой документ:
Как это отразится в acdoca:
Обратите внимание, что в позициях где тип корр.счета отмечен как K или D (поле GKOAR) значения в поле корр.счет (GKONT) будет равно контрагенту (кредитору или дебитору), а не номеру счета ГК.
При этом логика заполнения этих полей в BSEG может отличаться, тот же документ в BSEG:
Это хорошо видно в отчетах ГК, например в FAGLL03h (поля GKONT и GHKON). Одно поле из acdoca, второе из bseg
Логику определения GKONT можно посмотреть в ФМ GET_GKONT. Так же может быть полезна нота 2476266
Построить на этом решении полноценный учет корр.счетов невозможно
Настройки с правилами заполнения "псевдо" корр.счета находятся тут
Возможные варианты определения корр.счета:
Таблица FINS_MIG_CUST
Так же в системе есть функционал для перезаполнения корр.счета в уже проведенных документах, транзакция FINS_MIG_GKONT.
Корреспонденция счетов в S/4HANA (локализация РФ)
Основная идея этого решения - разделение позиций документа в ракурсе ГК. Напомню, что с точки зрения FI у каждого документа есть ракурс ввода - это таблица BSEG/BSEG_ADD и ракурс ГК - это таблица ACDOCA (ранее, до S/4 - faglflex). Исключение - унифицированные документы (BSTAT = U), у них нет ракурса ввода.
Т.е., если упрощено - то в момент проводки любого документа в системе формируется ракурс ввода, и, если активирован функционал новой корреспонденции счетов - то в системе запускается механизм сплиттинга позиций в ракурсе ГК и для каждой позиции записывается ссылка на корреспондирующую позицию. С технической точки зрения это значит что для каждой строки acdoca есть ссылка на другую строку в acdoca. Ссылки реализованы по полям acdoca-docln <-> acdoca-gkont. И там и там записывается номер корр.позиции (из ракурса ГК, может не совпадать с номером позиции в bseg-buzei).
Если в момент проводки не удалось определить корр.счет (например не хватает настроек для определения пар счетов), то такой документ не проведется и система выдаст ошибку:
Как следствие этого подхода - переразобрать корреспонденцию в уже проведенных документах невозможно. Необходимо их сторнировать, менять правило разбора и проводить заново.
Как это работает, на примерах: Допустим у нас есть входящий инвойс (ракурс ввода):
В ракурсе ГК (acdoca) с включенной новой ПКС он будет выглядет вот так:
Обратите внимание что строка с кредиторской задолженностью разделилась на две строки в ракурсе ГК. Строка с BUZEI = 1 разделилась на две строки где BUZEI = 1, а DOCLN = 000002 и 000004. При этом каждая новая строка имеет ссылку на корр. строку в этом же документе (GKONT = 1 и 3)
Так же можно сделать небольшую доработку для FB03 и добавить поле с номером корр счета. Т.е. для каждой строчки acdoca считать из той же таблицы acdoca значение из поля RACCT по условиям
ACDOCA-RLDNR = ACDOCA-RLDNR
ACDOCA-RBUKRS = ACDOCA-RBUKRS
ACDOCA-GJAHR = ACDOCA-GJAHR
ACDOCA-BELNR = ACDOCA-BELNR
ACDOCA-DOCLN = ACDOCA-GKONT
И вывести его в новый столбец в FB03 в ракурсе ГК:
FB03->ракурс ГК
Аналогично можно доработать отчеты по отдельным позициям ГК, например добавить в FAGLL03h новое поле (ZZGKONT)
заполняемое по такой же логике:
Описание от SAP тут: Offsetting Account Determination_New.pdf
Настройки решения находятся тут:
- Таблицы с настройками правил - FIRUD_OFFS_*
- Внутренняя логика обработки/разделения документов в классах CL_FIRU_OFFSET_PROCESSING, CL_FIRU_OFFSET_DETERMINATION
- Расширения - BADI_FINS_ACDOCA_MODIFY (общее, не только для GKONT)
- При активации новой ПКС – старую пока можно не деактивировать, т.е. J3corritem и J3*kkr0 могут продолжить заполняться.
Сравнение концепций новой ПКС и старого решения
Корреспонденция счетов старое решение (локализация РФ)
Основная идея этого решения состоит в том, что в системе добавляется отдельная подсистема по разбору FI документов, которая записывает информацию по корр. счетам в отдельные J3RF* таблицы. Разбор корреспонденции может осуществлятся как на лету (т.е. в процессе проводки документов, через openfi), так и постфактум путем запуска отдельных программ по разбору/переопределению корр.счетов.
Таблицы для хранения результатов разбора корреспонденции счетов:
- J_3RKKR0 - суммовая таблица со значениями корреспонденции с разбивкой по периодам
- J_3RKKRS (в старых системах) или J_3RK_CORR_ITEMS - с отдельными позициями в разрезе позиций FI документов с указанием корр счета.
Примечание - в таблицах хранятся суммы без учета знаков и без учета метки красное сторно (т.е. информация по КС там есть, но для корректного отображения оборотов необходимо учитывать метку КС - XNEGP...)
Транзакции для разбора документов:
- J3RKKRD - просмотр и разбор корр.счетов по одному документу
- J3RKKRS - автоматический разбор документов
- J3RKNID - список необработанных документов
Настройки правил разбора:
- J3RKACT
- J3RKAID
- J3RKBOOL
- J3RKKRN
- J3RKNGLL
- J3RKPAC
- J3RKPAI
- J3RKSORT
- J3RKSPLIT
Или в SPRO тут:
Примечание - настройка приоритетов пар счетов в данном случае не работает так как это можно ожидать) BAdI - /CCIS/SMOD_J_3RKAC1
Отчеты:
- J3RKOBS
- J3RKOBX
- J3RKKRL
- J3RKGLK
В целом, можно в se93 посмотреть все транзакции по маске J3RK*
Активация онлайн разбора корреспонденции: В FIBF (openFI) необходимо активировать продукт J3RKORRS/J3RF Так же настроить обработку ошибок разбора корреспонденции, т.е. тип сообщения об ошибках в момент проводки
При необходимости - можно повторно обработать корреспонденцию счетов и переопределить ее для уже проведенных документов. Особенности - если необходимо переопределить корреспонденцию для закрытых периодов - то в ob52 дожен быть открыт период для типа "+"
Так же может быть полезна нота 740745 - "Account turnover in J3RKOBS doesn't match sum of doc.tur" и поставляемая с ней программа Z_CORR_FIX для обновления/корректировки данных в суммовых таблицах. Так же важно понимать что для унифицированных документов (BSTAT = U) вы столкнетесь с трудностями, т.к. по ним нет строк в BSEG (на эту тему есть несколько SAP OSS нот)
Описание решения от SAP тут Корреспонденция счетов ГК.pdf