Корреспонденция счетов (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