Текущее время: Вт, июл 29 2025, 16:48

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


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

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


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

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