Текущее время: Вс, июл 20 2025, 04:19

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Связь VBAK и VBAP, или просто проблема.
СообщениеДобавлено: Пн, окт 02 2006, 11:48 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Добрый день :)
Люди помогите разобраться в приведенной ниже простоте.
Должно показывать данные как в контракте (транзакция VA42), а именно "ДоговорКоличество" и "Дата выполнения работ/услуг".
Данный код показывает все что нужно, но без последней записи (позиции) и плюс какие-то левые записи.
Я думаю что нахватает ограничений при связи VBAK и VBAP но не могу установить каких(первый раз работаю).

F_KUNNR - заказчик VBAK-KUNNR
F_VKORG - сбыт. орг VBAK-VKORG
F_VTWEG - канал сбыта VTWEG-VTWEG
Code:
DATA: ZVBELN LIKE VBAK-VBELN.
DATA: ZVBAP LIKE VBAP.
DATA: ZVBKD LIKE VBKD.

CLEAR: ZVBELN, ZVBAP, ZVBKD, ZPLANS.

SELECT VBELN FROM VBAK
     INTO ZVBELN
     WHERE KUNNR = F_KUNNR
       AND VKORG = F_VKORG
       AND VTWEG = F_VTWEG
       AND ( AUART = 'ZD10' OR AUART = 'ZD20' ) .

     SELECT * FROM VBAP
       INTO ZVBAP
       WHERE VBELN = ZVBELN
         AND MATNR = F_MATNR.

        select single * from vbkd
          into zvbkd
          where posnr = zvbap-posnr and vbeln = zvbap-vbeln.

        WRITE: /  ZVBAP-ZMENG, zvbkd-FBUDA.

     ENDSELECT.
ENDSELECT.


Заранее благодарен. С уважением Primat.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 12:04 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
А материал во всех позициях F_MATNR?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 12:29 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Да материал во всех позициях VBAP.
Я чуствую что здесь че-то нехватает. А что?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 12:44 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Скажите пожалуйста, вам нужно ввывести данные чего: контракта или заказа?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 12:46 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
Primat написал(а):
Да материал во всех позициях VBAP.

Это понятно, что он во всех позициях, вопрос в том, равен ли он во всех позициях значению F_MATNR?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 12:48 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
После этого select
Цитата:
select single * from vbkd


нужно поставить проверку на SY-SUBRC = 0.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 13:13 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
<Yuri> написал(а):
Это понятно, что он во всех позициях, вопрос в том, равен ли он во всех позициях значению F_MATNR?

F_MATNR - импортная переменная созданого мной ФМ.
Она являеся постояной(неизменяемой) при всех итерациях приведенных выше SELECTов.


Sergo написал:
Скажите пожалуйста, вам нужно ввывести данные чего: контракта или заказа?

Контрата (транз. VA42).

Sergo написал:
нужно поставить проверку на SY-SUBRC = 0.

Дело в том что SELECTы возврацают инфу, но в смесь с ненужной инфой.
Вы имели ввиду наверное:
Code:
if SY-SUBRC = 0.
WRITE: /  ZVBAP-ZMENG, zvbkd-FBUDA.
endif.

Результат при это не меняется.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 13:46 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Цитата:
Результат при этом не меняется.


Ну просто не может такого быть :D :D :D

Ну тогда, быть может, поле mandt в WHERE каждого внутреннего SELECT прописать.


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

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
Неплохо бы почистить zvbap и zvbkd перед select-ом.


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

Зарегистрирован:
Ср, мар 02 2005, 20:19
Сообщения: 133
Откуда: Moscow
Почему бы не сделать один SELECT из VBAK + VBAP + VBKD со всеми нужными условиями во внутр.таблицу, а по ней уже LOOP и вывод на экран?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 14:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Sergo написал:
Ну тогда, быть может, поле mandt в WHERE каждого внутреннего SELECT прописать.

Вот это точно лишнее.
В коде же не указано CLIENT SPECIFIED :lol:

По существу:
Primat написал(а):
F_MATNR - импортная переменная созданого мной ФМ.
Она являеся постояной(неизменяемой) при всех итерациях приведенных выше SELECTов.

Значит, могут выбираться не все позиции контракта ;)
Primat написал(а):
Дело в том что SELECTы возврацают инфу, но в смесь с ненужной инфой.
Вы имели ввиду наверное:
Код:

if SY-SUBRC = 0.
WRITE: / ZVBAP-ZMENG, zvbkd-FBUDA.
endif.

Результат при это не меняется.

А может, нужно так:
Code:
DATA: ZVBELN LIKE VBAK-VBELN.
DATA: ZVBAP LIKE VBAP.
DATA: ZVBKD LIKE VBKD.

CLEAR: ZVBELN.

SELECT VBELN FROM VBAK
     INTO ZVBELN
     WHERE KUNNR = F_KUNNR
       AND VKORG = F_VKORG
       AND VTWEG = F_VTWEG
       AND ( AUART = 'ZD10' OR AUART = 'ZD20' ) .

     CLEAR: ZVBAP.

     SELECT * FROM VBAP
       INTO ZVBAP
       WHERE VBELN = ZVBELN
         AND MATNR = F_MATNR.
       
        CLEAR: zvbkd.
        select single * from vbkd
          into zvbkd
          where posnr = zvbap-posnr and vbeln = zvbap-vbeln.

        IF SY-SUBRC <> 0.
* Если запись на уровне позиции в VBKD не найдена -
* ищем на уровне заголовка
          SELECT SINGLE *
          INTO zvbkd
          FROM vbkd
          WHERE vbeln = zvbak-vbeln
            AND posnr = '000000'.

        ENDIF.

        WRITE: /  ZVBAP-ZMENG, zvbkd-FBUDA.

     ENDSELECT.
ENDSELECT.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 14:47 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Я очень благодарен за помощь, но у меня вопрос:
Цитата:
SELECT SINGLE *
INTO zvbkd
FROM vbkd
WHERE vbeln = zvbak-vbeln
AND posnr = '000000'.

Ошибка: The field "ZVBAK" is unknown, but there are the following fields with similar names: "ZVBAP" and "ZVBKD".

Это наверное:
DATA: ZVBAK LIKE VBAK.
(И где она определяется.)
Может я <я не знать русский языка> за свою непонятливость просто ужеголова шумит от сегоднешней работенки :( .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 15:20 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
Primat написал(а):
Я очень благодарен за помощь, но у меня вопрос:
Цитата:
SELECT SINGLE *
INTO zvbkd
FROM vbkd
WHERE vbeln = zvbak-vbeln
AND posnr = '000000'.

Ошибка: The field "ZVBAK" is unknown, but there are the following fields with similar names: "ZVBAP" and "ZVBKD".

Это наверное:
DATA: ZVBAK LIKE VBAK.
(И где она определяется.)
Может я <я не знать русский языка> за свою непонятливость просто ужеголова шумит от сегоднешней работенки :( .


Замените WHERE vbeln = zvbak-vbeln
на WHERE vbeln = ZVBAP-vbeln
и голова пройдет :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 15:39 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Я бы, чтобы вот так не гадать, сначала вывел каждую позицию.
То есть, вместо

Цитата:
WRITE: / ZVBAP-ZMENG, zvbkd-FBUDA.


Написал бы
WRITE: / ZVBAP-VBELN, ZVBAP-POSNR. ZVBAP-ZMENG, zvbkd-FBUDA.

То есть так:

Цитата:

DATA: ZVBELN LIKE VBAK-VBELN.
DATA: ZVBAP LIKE VBAP.
DATA: ZVBKD LIKE VBKD.

CLEAR: ZVBELN, ZVBAP, ZVBKD, ZPLANS.

SELECT VBELN FROM VBAK
INTO ZVBELN
WHERE KUNNR = F_KUNNR
AND VKORG = F_VKORG
AND VTWEG = F_VTWEG
AND ( AUART = 'ZD10' OR AUART = 'ZD20' ) .

SELECT * FROM VBAP
INTO ZVBAP
WHERE VBELN = ZVBELN
AND MATNR = F_MATNR.

select single * from vbkd
into zvbkd
where posnr = zvbap-posnr and vbeln = zvbap-vbeln.

WRITE: / ZVBAP-VBELN, ZVBAP-POSNR. ZVBAP-ZMENG, zvbkd-FBUDA.

ENDSELECT.
ENDSELECT.



Ну и тогда уж было бы видно, почему что-то там не выводится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 02 2006, 15:57 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Ничего не получается :?
Всех благодарю за помощь.
Нужно подумать над идеей
Monarch написал(а):
Почему бы не сделать один SELECT из VBAK + VBAP + VBKD со всеми нужными условиями во внутр.таблицу, а по ней уже LOOP и вывод на экран?

и замечанием
Sergo написал:
Написал бы
WRITE: / ZVBAP-VBELN, ZVBAP-POSNR. ZVBAP-ZMENG, zvbkd-FBUDA.

Буду думать над этим завтра :) , а сегодня рабочий день закончился.


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

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


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

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


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

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