Текущее время: Пт, июл 25 2025, 12:03

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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