Текущее время: Ср, июл 30 2025, 04:46

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 10 2006, 07:35 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Цитата:
Вроде все правильно, но возникает вопрос: как все-таки исключить сторнированные документы материала? Может, SMBN <> SPACE недостаточно?

Если просто исключить все, то после отбора документов с SMBLN = '', надо пройтись по вн. таблице и удалить записи, где выполниться условие:
Code:
      SELECT SINGLE ....
        FROM MSEG
        WHERE SMBLN = TAB-BELNR AND
              SJAHR  = TAB-GJAHR AND
              SMBLP  = TAB-ZEILE.

     IF SY-SUBRC = 0.
        DELETE TAB.
     ENDIF.

Если отчет, что-то типа оборотки, то надо контролировать даты. Например, показывать движение, если его строно в след. периоде.
Тогда, во-первых во вн. таблицу отбираешь все документы(и с SMBLN <> ''), а затем примерно вот так:
Code:
    LOOP AT TAB.

      CLEAR: DUMMY_MBLNR, DUMMY_MJAHR, DUMMY_ZEILE.

      SELECT SINGLE D~SMBLN D~SJAHR D~SMBLP
        INTO (DUMMY_MBLNR, DUMMY_MJAHR, DUMMY_ZEILE)
        FROM MSEG AS D INNER JOIN MKPF AS H
                 ON D~MBLNR = H~MBLNR AND
                    D~MJAHR = H~MJAHR
              WHERE D~SMBLN <> '' AND
                    H~BUDAT >= B_DAT AND
                    H~BUDAT <= E_DAT AND
                    H~MBLNR = TAB-BELNR AND
                    H~MJAHR = TAB-GJAHR.

      IF SY-SUBRC = 0.

        SELECT SINGLE ....
          FROM MSEG AS D INNER JOIN MKPF AS H
                    ON D~MBLNR = H~MBLNR AND
                       D~MJAHR = H~MJAHR
                 WHERE H~BUDAT >= B_DAT AND
                       H~BUDAT <= E_DAT AND
                       H~MBLNR = DUMMY_MBLNR AND
                       H~MJAHR = DUMMY_MJAHR AND
                       D~ZEILE = DUMMY_ZEILE.
 
        IF SY-SUBRC = 0.

          DELETE TAB.

        ENDIF.

     ENDIF.

     SELECT SINGLE .....
       FROM MSEG AS D INNER JOIN MKPF AS H
                 ON D~MBLNR = H~MBLNR AND
                    D~MJAHR = H~MJAHR
              WHERE H~BUDAT >= B_DAT AND
                    H~BUDAT <= E_DAT AND
                    H~SMBLN = TAB-MBLNR AND
                    H~SJAHR = TAB-MJAHR AND
                    D~SMBLP = TAB-ZEILE.

     IF SY-SUBRC = 0.

       DELETE TAB.

     ENDIF.

  ENDLOOP.

Первые два селекта проверяют сторно ли этот документ и если в обозначенном периоде его сторнируемый, а последний проверяет сторнируемый это документ и, что сторнирующий тоже попадает в эти даты. Вернее все проверяется по позиционно.
Возможно данный алгоритм можно организовать подзапросами, чтобы избежать вн. таблиц.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 14 2006, 06:35 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 26 2006, 06:57
Сообщения: 47
Спасибо огромное за ответы!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2

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


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

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


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

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