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

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


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

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


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

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