Текущее время: Пн, авг 04 2025, 07:54

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: получить список кредиторов с сальдо на дату
СообщениеДобавлено: Ср, фев 13 2008, 12:32 
Начинающий
Начинающий

Зарегистрирован:
Ср, июн 27 2007, 15:01
Сообщения: 24
Дамы и господа. Подскажите - как грамотно написать query, чтобы получить список кредиторов с сальдо на определенную дату. sq01 - но таблицы - bsik ? LFA1+LFB1 ? Надо только конечное сальдо, чтобы был простецкий список. И может еще кто знает - смотрю таблицу LFC3 - почему если вычислить разницу между итоговыми значениями - не получается того, что в стандартном отчете по анализу открытых позиций кредиторов


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

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
По поводу LFC3 - сюда попадают обороты по контрагентам, которые ведутся с кодами ОГК, если не ошиюаюсь, то по одному и томуже кредитору могут осуществляться операции, как по ОГК, так и без них.
Общий алгоритм подсчета сальдо приведен здесь, с уточнением Parazita:
http://sapboard.ru/forum/viewtopic.php ... ht=#220174
Вот только я не пользовался sq01, так что не могу сказать реализуем он с его помощью.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 13 2008, 14:16 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Lunx, у меня такая формочка получилась в свое время.
Таблички видно по коду :)
Code:
*---------------------------------------------------------------------*
*       FORM collect_vendors_docs_curr                                *
*---------------------------------------------------------------------*
FORM collect_vendors_docs_curr.

*********************************************************
* Get all doc. numbers and amounts for customer & CC pair
* (delivery)
  SELECT belnr AS doc_num gjahr SUM( wrbtr ) AS del_pos
         waers xblnr bschl
          INTO CORRESPONDING FIELDS OF TABLE gt_open_d FROM bsak
         WHERE lifnr EQ <g_init>-client AND
               bukrs EQ <g_init>-bukrs AND
               budat LE rbudat AND
               augdt GT rbudat AND
               bschl IN r_bschl_d AND
               bstat NE c_noted
      GROUP by belnr gjahr waers xblnr bschl.

  LOOP AT gt_open_d INTO g_poz.

    CLEAR: g_sum, g_plus_sum, g_minus_sum.

    cnt = sy-tabix.

    SELECT SUM( t2~wrbtr ) INTO g_plus_sum FROM bsak AS t1
          JOIN bsak AS t2
            ON t1~bukrs EQ t2~bukrs AND
               t1~lifnr EQ t2~lifnr AND
               t1~augdt EQ t2~augdt AND
               t1~augbl EQ t2~augbl
         WHERE t1~belnr EQ g_poz-doc_num AND
               t1~gjahr EQ g_poz-gjahr AND
               t2~budat LE rbudat AND
               t2~belnr NE g_poz-doc_num AND
               t2~gjahr NE g_poz-gjahr AND
               t2~bstat NE c_noted AND
               t2~shkzg EQ 'S'.

    SELECT SUM( t2~wrbtr ) INTO g_minus_sum FROM bsak AS t1
          JOIN bsak AS t2
            ON t1~bukrs EQ t2~bukrs AND
               t1~lifnr EQ t2~lifnr AND
               t1~augdt EQ t2~augdt AND
               t1~augbl EQ t2~augbl
         WHERE t1~belnr EQ g_poz-doc_num AND
               t1~gjahr EQ g_poz-gjahr AND
               t2~budat LE rbudat AND
               t2~belnr NE g_poz-doc_num AND
               t2~gjahr NE g_poz-gjahr AND
               t2~bstat NE c_noted AND
               t2~shkzg EQ 'H'.

    g_sum = g_plus_sum - g_minus_sum.
    g_poz-del_pos = g_poz-del_pos + g_sum.
    MODIFY gt_open_d FROM g_poz INDEX cnt.

  ENDLOOP.

  SELECT belnr AS doc_num gjahr SUM( wrbtr ) AS del_pos
         waers xblnr bschl
     APPENDING CORRESPONDING FIELDS OF TABLE gt_open_d FROM bsik
         WHERE lifnr EQ <g_init>-client AND
               bukrs EQ <g_init>-bukrs AND
               budat LE rbudat AND
               bschl IN r_bschl_d AND
               bstat NE c_noted
      GROUP by belnr gjahr waers xblnr bschl.

* Get partly cleared doc. numbers and amounts for customer & CC pair
* (delivery)
  SELECT bd1~belnr AS doc_num bd1~gjahr
         SUM( ba~wrbtr ) AS pay_pos
          INTO CORRESPONDING FIELDS OF TABLE gt_open_d_ext
          FROM bsik AS bd1
          JOIN bsik AS bd2 ON bd1~bukrs = bd2~bukrs AND
                              bd1~lifnr = bd2~lifnr AND
                              bd1~belnr = bd2~rebzg AND
                              bd1~buzei = bd2~rebzz AND
                              bd1~gjahr = bd2~rebzj
          JOIN bsak AS ba ON ba~bukrs = bd2~bukrs AND
                             ba~lifnr = bd2~lifnr AND
                             ba~augbl = bd2~belnr AND
                             ba~augdt = bd2~budat
         WHERE bd1~lifnr EQ <g_init>-client AND
               bd1~bukrs EQ <g_init>-bukrs AND
               bd1~budat LE rbudat AND
               bd1~bschl IN r_bschl_d AND
               bd1~bstat NE c_noted AND
               bd2~budat LE rbudat AND
               bd2~bstat NE c_noted AND
               ba~bschl  IN r_bschl_p AND
               ba~budat  LE rbudat AND
               ba~bstat  NE c_noted
      GROUP by bd1~belnr bd1~gjahr
      ORDER BY bd1~belnr bd1~gjahr.

*********************************************************
* Get all doc. numbers and amounts for customer & CC pair
* (payment)

  SELECT belnr AS doc_num gjahr SUM( wrbtr ) AS pay_pos waers bschl
          INTO CORRESPONDING FIELDS OF TABLE gt_open_p FROM bsak
         WHERE lifnr EQ <g_init>-client AND
               bukrs EQ <g_init>-bukrs AND
               budat LE rbudat AND
               augdt GT rbudat AND
               bschl IN r_bschl_p AND
               bstat NE c_noted
      GROUP by belnr gjahr waers bschl.

  LOOP AT gt_open_p INTO g_poz.

    CLEAR: g_sum, g_plus_sum, g_minus_sum.

    cnt = sy-tabix.

    SELECT SUM( t2~wrbtr ) INTO g_plus_sum FROM bsak AS t1
          JOIN bsak AS t2
            ON t1~bukrs EQ t2~bukrs AND
               t1~lifnr EQ t2~lifnr AND
               t1~augdt EQ t2~augdt AND
               t1~augbl EQ t2~augbl
         WHERE t1~belnr EQ g_poz-doc_num AND
               t1~gjahr EQ g_poz-gjahr AND
               t2~budat LE rbudat AND
               t2~belnr NE g_poz-doc_num AND
               t2~gjahr NE g_poz-gjahr AND
               t2~bstat NE c_noted AND
               t2~shkzg EQ 'S'.

    SELECT SUM( t2~wrbtr ) INTO g_minus_sum FROM bsak AS t1
          JOIN bsak AS t2
            ON t1~bukrs EQ t2~bukrs AND
               t1~lifnr EQ t2~lifnr AND
               t1~augdt EQ t2~augdt AND
               t1~augbl EQ t2~augbl
         WHERE t1~belnr EQ g_poz-doc_num AND
               t1~gjahr EQ g_poz-gjahr AND
               t2~budat LE rbudat AND
               t2~belnr NE g_poz-doc_num AND
               t2~gjahr NE g_poz-gjahr AND
               t2~bstat NE c_noted AND
               t2~shkzg EQ 'H'.

    g_sum = g_minus_sum - g_plus_sum.
    g_poz-pay_pos = g_poz-pay_pos + g_sum.
    MODIFY gt_open_p FROM g_poz INDEX cnt.

  ENDLOOP.

  SELECT belnr AS doc_num gjahr SUM( wrbtr ) AS pay_pos waers bschl
     APPENDING CORRESPONDING FIELDS OF TABLE gt_open_p FROM bsik
         WHERE lifnr EQ <g_init>-client AND
               bukrs EQ <g_init>-bukrs AND
               budat LE rbudat AND
               bschl IN r_bschl_p AND
               bstat NE c_noted
      GROUP by belnr gjahr waers bschl.

* Get partly cleared doc. numbers and amounts for customer & CC pair
* (payment)
  SELECT bd1~belnr AS doc_num bd1~gjahr
         SUM( ba~wrbtr ) AS del_pos
          INTO CORRESPONDING FIELDS OF TABLE gt_open_p_ext
          FROM bsik AS bd1
          JOIN bsik AS bd2 ON bd1~bukrs = bd2~bukrs AND
                              bd1~lifnr = bd2~lifnr AND
                              bd1~belnr = bd2~rebzg AND
                              bd1~buzei = bd2~rebzz AND
                              bd1~gjahr = bd2~rebzj
          JOIN bsak AS ba ON ba~bukrs = bd2~bukrs AND
                             ba~lifnr = bd2~lifnr AND
                             ba~augbl = bd2~belnr AND
                             ba~augdt = bd2~budat
         WHERE bd1~lifnr    EQ <g_init>-client AND
               bd1~bukrs EQ <g_init>-bukrs AND
               bd1~budat LE rbudat AND
               bd1~bschl IN r_bschl_p AND
               bd1~bstat NE c_noted AND
               bd2~budat LE rbudat AND
               bd2~bstat NE c_noted AND
               ba~bschl  EQ r_bschl_d AND
               ba~budat  LE rbudat AND
               ba~bstat  NE c_noted
      GROUP by bd1~belnr bd1~gjahr
      ORDER BY bd1~belnr bd1~gjahr.

ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: получить список кредиторов с сальдо на дату
СообщениеДобавлено: Ср, фев 13 2008, 14:47 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Lunx написал(а):
И может еще кто знает - смотрю таблицу LFC3 - почему если вычислить разницу между итоговыми значениями - не получается того, что в стандартном отчете по анализу открытых позиций кредиторов


В LFC3 не попадают альтернативные счета, только ОГК.

_________________
С уважением, VGA
Мой блог


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

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


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

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


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

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