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

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


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

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


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

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