Текущее время: Вт, июл 22 2025, 21:10

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Оплаченные и не оплаченные суммы по счет фактуре
СообщениеДобавлено: Вт, янв 08 2008, 09:35 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 08 2008, 09:19
Сообщения: 11
Помогите пожалуйста расчитать оплаченные и не оплаченные суммы по счет-фактуре (суммы берутся из таблицы BSEG поле WRBTR)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 08 2008, 09:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
См. таблицы BSIK и BSAK


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 08 2008, 11:06 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 08 2008, 09:19
Сообщения: 11
Если можно по подробнее о выборе


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 08 2008, 12:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
Аким написал(а):
Если можно по подробнее о выборе

Опишите задачу подробнее. Что за исходные данные -
счет-фактура бухгалтерский документ или ММ-ный?
Каким образом у вас в системе формируются ТАП?
Есть ли в ТАПе ссылка на счет-фактуру, по которой создали ТАП
(BSEG-REBZG)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 08 2008, 12:30 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 08 2008, 09:19
Сообщения: 11
счет фактура VBRK-VBELN
(вот селект и табл которые я испльзую) TABLES: OIJ_EL_DOC_FLOW, OIJ_EL_TICKET_H, OIJNOMI,
MSEGO2, MSEG, BKPF, BSEG, BSID, VBRP, VBRK,STXL,
VBFA, SETLEAF.
DATA: BEGIN OF wa,
bstkd LIKE VBKD-bstkd,
bstdk LIKE VBKD-bstdk,
docnr LIKE OIJ_EL_DOC_FLOW-docnr,
ticketnr LIKE OIJ_EL_TICKET_H-ticketnr, " Внеш шомер квит
zbolnr LIKE OIJ_EL_TICKET_H-zbolnr,
zboldate LIKE OIJ_EL_TICKET_H-zboldate,
bwart LIKE VBFA-bwart,
inco2 LIKE VBKD-inco2,
vbeln LIKE VBRP-vbeln,
nomtk LIKE OIJNOMI-nomtk,
matnr LIKE MCH1-matnr,
charg LIKE MCH1-charg,
netwr LIKE VBRK-netwr,
budat LIKE BKPF-budat,
nomit LIKE OIJNOMI-nomit,
idate LIKE OIJNOMI-idate,
menge LIKE OIJNOMI-menge,
sortl LIKE KNA1-sortl,
banka LIKE ZKNBK-banka,
name1 LIKE LFA1-name1,
fkdat LIKE VBRK-FKDAT,
belnr LIKE BSID-belnr,
demerg LIKE EKBE-wrbtr,
libor LIKE EKBE-wrbtr,
DEPOSIT LIKE AUSP-ATWRT,
atwtb LIKE ZDEPOSIT-atwtb,
vbelv LIKE VBFA-vbelv,
END OF wa.

SELECT ow~docnr
* oh~ticketnr
oh~zbolnr
oh~zboldate
vf~vbelv
vd~inco2
vd~bstkd
vd~bstdk
vrp~vbeln
m1~matnr
m1~charg
mg~bwtar
bd~belnr
vrk~netwr
omi~nomit
omi~idate
omi~menge
omi~nomtk
k1~sortl
lf~name1
bf~budat
zk~banka
vrk~fkdat
FROM OIJ_EL_TICKET_H AS oh
INNER JOIN OIJ_EL_TICKET_I AS oti ON oti~ticket_key = oh~ticket_key
INNER JOIN OIJ_EL_DOC_FLOW AS ow ON ow~ticket_key = oti~ticket_key
AND ow~ticket_item = oti~ticket_item
INNER JOIN OIJNOMI AS omi ON omi~nomtk = oti~nomtk
AND omi~nomit = oti~nomit
INNER JOIN MCH1 AS m1 ON m1~matnr = omi~matnr_i
INNER JOIN MSEG AS mg ON mg~mblnr = ow~docnr
INNER JOIN VBFA AS vf ON vf~vbeln = ow~docnr
INNER JOIN VBKD AS vd ON vd~vbeln = vf~vbelv
INNER JOIN VBRP AS vrp ON vrp~aubel = vf~vbelv
INNER JOIN VBRK AS vrk ON vrk~vbeln = vrp~vbeln
INNER JOIN KNA1 AS k1 ON k1~kunnr = vrk~kunag
INNER JOIN LFA1 AS lf ON lf~lifnr = m1~lifnr
INNER JOIN BSID AS bd ON bd~vbeln = vrk~vbeln
INNER JOIN BKPF AS bf ON bf~belnr = bd~belnr
LEFT OUTER JOIN ZKNBK AS zk ON zk~kunnr = m1~lifnr
по счет фактре я должен вывести из таблицы BSEG опл и не оплачен сумму


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 08 2008, 12:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
Ну так, надо было сразу говорить, что таблица VBRK.
Это ж сбытовая фактура. Тут я ничем не помогу :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 08 2008, 21:34 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Аналог BSIK и BSAK в сбыте - это BSID и BSAD. BSAD - это то, что уже "cleared" (не знаю, к сожалению, как это по-русски). Номер фактуры (VBRK-VBELN) может быть в одном из этих полей: VBELN, XBLNR, BELNR, в зависимости от настроек.

Глядя на мощный SELECT (VBFA и MSEG в одном флаконе - wow...), думается FIщики или SDшники должны бы вам сформулировать, чего они хотят и как конкретно оплаченные/неоплаченные суммы будут отображаться в таблицах. Мы тут не так давно мучались похожей задачей, так там оказалось гораздо больше нюансов, чем ABAPеры могли предположить. :roll: В крайнем случае пускай они вам сделают несколько примеров, чтобы вы могли посмотреть, как таблицы выглядят в разных случаях.

Кстати, тут совсем недавно обсуждали сальдо по дебиторам - поищите, это в чем-то похоже.


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

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Общий алгоритм(не учитывающий возможные ньюансы) примерно такой:
В BSID выбираешь фактуры и суммы по ним. По полю REBZG находишь возможные частичные оплаты для этих с/ф и соответственно минусуешь суммы.
К полученному набору из BSAD добавляешь с/ф, которые еще не были оплачены на искомую дату. AUGDT - это дата последней оплаты, но в случае многократных частичных оплат лучше ориентироваться на поле BUDAT документа частичной оплаты. Соответственно уменьшая суммы с/ф. Предыдущие оплаты связаны с с/ф аналогично по REBZG, у последней(закрывающей) это поле пустое, но номер этой оплаты, как бы объдиняет с/ф и все частичные оплаты в одну цепочку по полю AUGBL.
Еще раз замечу - возможны исключения.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 09 2008, 10:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Если уже известен номер бух.документа для фактуры, то вам сюда

PS: Интересно, сколько этот select работает? :shock:
Аким написал(а):
SELECT ow~docnr
* oh~ticketnr
oh~zbolnr
oh~zboldate
vf~vbelv
vd~inco2
vd~bstkd
vd~bstdk
vrp~vbeln
m1~matnr
m1~charg
mg~bwtar
bd~belnr
vrk~netwr
omi~nomit
omi~idate
omi~menge
omi~nomtk
k1~sortl
lf~name1
bf~budat
zk~banka
vrk~fkdat
FROM OIJ_EL_TICKET_H AS oh
INNER JOIN OIJ_EL_TICKET_I AS oti ON oti~ticket_key = oh~ticket_key
INNER JOIN OIJ_EL_DOC_FLOW AS ow ON ow~ticket_key = oti~ticket_key
AND ow~ticket_item = oti~ticket_item
INNER JOIN OIJNOMI AS omi ON omi~nomtk = oti~nomtk
AND omi~nomit = oti~nomit
INNER JOIN MCH1 AS m1 ON m1~matnr = omi~matnr_i
INNER JOIN MSEG AS mg ON mg~mblnr = ow~docnr
INNER JOIN VBFA AS vf ON vf~vbeln = ow~docnr
INNER JOIN VBKD AS vd ON vd~vbeln = vf~vbelv
INNER JOIN VBRP AS vrp ON vrp~aubel = vf~vbelv
INNER JOIN VBRK AS vrk ON vrk~vbeln = vrp~vbeln
INNER JOIN KNA1 AS k1 ON k1~kunnr = vrk~kunag
INNER JOIN LFA1 AS lf ON lf~lifnr = m1~lifnr
INNER JOIN BSID AS bd ON bd~vbeln = vrk~vbeln
INNER JOIN BKPF AS bf ON bf~belnr = bd~belnr
LEFT OUTER JOIN ZKNBK AS zk ON zk~kunnr = m1~lifnr

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 09 2008, 11:11 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Удав написал(а):
Если уже известен номер бух.документа для фактуры, то вам сюда

PS: Интересно, сколько этот select работает? :shock:
Аким написал(а):
SELECT ow~docnr
* oh~ticketnr
oh~zbolnr
oh~zboldate
vf~vbelv
vd~inco2
vd~bstkd
vd~bstdk
vrp~vbeln
m1~matnr
m1~charg
mg~bwtar
bd~belnr
vrk~netwr
omi~nomit
omi~idate
omi~menge
omi~nomtk
k1~sortl
lf~name1
bf~budat
zk~banka
vrk~fkdat
FROM OIJ_EL_TICKET_H AS oh
INNER JOIN OIJ_EL_TICKET_I AS oti ON oti~ticket_key = oh~ticket_key
INNER JOIN OIJ_EL_DOC_FLOW AS ow ON ow~ticket_key = oti~ticket_key
AND ow~ticket_item = oti~ticket_item
INNER JOIN OIJNOMI AS omi ON omi~nomtk = oti~nomtk
AND omi~nomit = oti~nomit
INNER JOIN MCH1 AS m1 ON m1~matnr = omi~matnr_i
INNER JOIN MSEG AS mg ON mg~mblnr = ow~docnr
INNER JOIN VBFA AS vf ON vf~vbeln = ow~docnr
INNER JOIN VBKD AS vd ON vd~vbeln = vf~vbelv
INNER JOIN VBRP AS vrp ON vrp~aubel = vf~vbelv
INNER JOIN VBRK AS vrk ON vrk~vbeln = vrp~vbeln
INNER JOIN KNA1 AS k1 ON k1~kunnr = vrk~kunag
INNER JOIN LFA1 AS lf ON lf~lifnr = m1~lifnr
INNER JOIN BSID AS bd ON bd~vbeln = vrk~vbeln
INNER JOIN BKPF AS bf ON bf~belnr = bd~belnr
LEFT OUTER JOIN ZKNBK AS zk ON zk~kunnr = m1~lifnr

Если база не умрет, то этот селект будет намного оптимизированно работать нежели енто разбить на 14ЁЁЁ!!!! Круто!)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 09 2008, 12:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Aval написал:
Общий алгоритм(не учитывающий возможные ньюансы) примерно такой:
В BSID выбираешь фактуры и суммы по ним. По полю REBZG находишь возможные частичные оплаты для этих с/ф и соответственно минусуешь суммы.
К полученному набору из BSAD добавляешь с/ф, которые еще не были оплачены на искомую дату. AUGDT - это дата последней оплаты, но в случае многократных частичных оплат лучше ориентироваться на поле BUDAT документа частичной оплаты. Соответственно уменьшая суммы с/ф. Предыдущие оплаты связаны с с/ф аналогично по REBZG, у последней(закрывающей) это поле пустое, но номер этой оплаты, как бы объдиняет с/ф и все частичные оплаты в одну цепочку по полю AUGBL.
Еще раз замечу - возможны исключения.

Напоминаю, поля номера документа (REBZG, AUGBL) недостаточно. Для полной ссылки нужен год. Для REBZG это REBZJ, также еще есть поля REBZZ (номер позиции) и REBZT (Вид следующего документа). Для AUGBL, в общем случае, полной ссылки нет.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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