Текущее время: Пн, июл 28 2025, 06:14

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Ср, дек 19 2012, 14:44 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Суть в том что в ФМ ADDR_GET передаете пустой ИД адреса.
Смотрите, где он теряется.
Code:
SELECT SINGLE adrnr
    FROM lfa1
    INTO temp_addr1_sel-addrnumber
     WHERE lifnr = gs_temp_ekko-lifnr.

может тут его нет или вообще нет такого ekko-ebeln, какой вы задаете на экране выбора


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Ср, дек 19 2012, 14:57 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
bossjohn написал(а):
Суть в том что в ФМ ADDR_GET передаете пустой ИД адреса.
Смотрите, где он теряется.
Code:
SELECT SINGLE adrnr
    FROM lfa1
    INTO temp_addr1_sel-addrnumber
     WHERE lifnr = gs_temp_ekko-lifnr.

может тут его нет или вообще нет такого ekko-ebeln, какой вы задаете на экране выбора


Вы правы здесь его нет. Единственная связь с lfa1 это - "Определяем код адреса поставщика – LFA1-ADRNR, где LFA1-LIFNR = EKKO-LIFNR".
По идеи экран выбора никак не должен на него влиять.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 09:21 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
Однозначно влияет. У Вас же цепочка выборки:
1. Из заказа вытаскиваем номер кредитора (EBELN->LIFNR)
2. По номеру кредитора получаем номер адреса (LIFNR->ADRNR)
3. По номеру адреса получаем сам адрес

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 10:49 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
Paul_80 написал:
Однозначно влияет. У Вас же цепочка выборки:
1. Из заказа вытаскиваем номер кредитора (EBELN->LIFNR)
2. По номеру кредитора получаем номер адреса (LIFNR->ADRNR)
3. По номеру адреса получаем сам адрес

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


Вы это имеете в виду под обязательным пар-ом?
PARAMETERS pa_ebeln(10) TYPE c OBLIGATORY.

А зачем в случае отсутствия данных сообщать пользователю не понял...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 10:52 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
polkon написал(а):

Вы это имеете в виду под обязательным пар-ом?
PARAMETERS pa_ebeln(10) TYPE c OBLIGATORY.

А зачем в случае отсутствия данных сообщать пользователю не понял...

Да.
Выдать сообщение Message ... с соотв. текстом


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 10:55 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
bossjohn написал(а):

А зачем в случае отсутствия данных сообщать пользователю не понял...

Да.
Выдать сообщение Message ... с соотв. текстом[/quote]

Не понимаю зачем? у меня проблема в том что не желает работать с ФМ ADDR_GET, что-то не правильно передаю. Как поле обязательного ввода может решить эту проблему?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 11:09 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
polkon написал(а):

Не понимаю зачем? у меня проблема в том что не желает работать с ФМ ADDR_GET, что-то не правильно передаю. Как поле обязательного ввода может решить эту проблему?

Поле обязательного ввода обязывает что0либо ввести в него.
Т.е. устраняется одна из возможных ситуаций - непередача значения.
Вы так и не разобрались почему адрес пуст?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 11:14 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
bossjohn написал(а):
Поле обязательного ввода обязывает что0либо ввести в него.
Т.е. устраняется одна из возможных ситуаций - непередача значения.
Вы так и не разобрались почему адрес пуст?


С полем понятно. С адресом пока не могу разобраться.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 11:44 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
bossjohn написал(а):
Суть в том что в ФМ ADDR_GET передаете пустой ИД адреса.
Смотрите, где он теряется.
Code:
SELECT SINGLE adrnr
    FROM lfa1
    INTO temp_addr1_sel-addrnumber
     WHERE lifnr = gs_temp_ekko-lifnr.

может тут его нет или вообще нет такого ekko-ebeln, какой вы задаете на экране выбора


Помогите, пожалуйста разобраться в чем тут дело, сам не могу понять :(


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.  Тема решена
СообщениеДобавлено: Чт, дек 20 2012, 11:45 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
1. В отладке пройдите по каждому SELECT'у и проанализируйте код возврата(sy-subrc) после каждого SELECT'a
Если после каждого из SELECT'ов sy-subrc принимал значение 0
2. Поставьте точку остановки на
Code:
CALL FUNCTION 'ADDR_GET'

Приведите значение gs_temp_ekko-lifnr и temp_addr1_sel-addrnumber


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 11:46 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
polkon написал(а):

Помогите, пожалуйста разобраться в чем тут дело, сам не могу понять :(

Это не ваша забота, почему нет кредитора, а постановщика.
Вам, как абаперу, надо правильно эту ситуацию обработать. О чем писали выше


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 13:38 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
Paul_80 написал:
1. В отладке пройдите по каждому SELECT'у и проанализируйте код возврата(sy-subrc) после каждого SELECT'a
Если после каждого из SELECT'ов sy-subrc принимал значение 0
2. Поставьте точку остановки на
Code:
CALL FUNCTION 'ADDR_GET'

Приведите значение gs_temp_ekko-lifnr и temp_addr1_sel-addrnumber


Спасибо за совет теперь вижу где ошибки висят. Вот этот селект буду разбираться:
Code:
SELECT * FROM ekpo INTO temp_ekpo WHERE ebeln = 4500000034.
  CALL METHOD z_test_class1=>number_TRANSFORM
  EXPORTING
    input = temp_ekpo-ebelp
    flag = ' '
  IMPORTING
    output = tb_line-place_number.


  tb_line-product_code = temp_ekpo-matnr.

  tb_line2-seller = gs_specification_table-seller.
  tb_line2-buyer = gs_specification_table-buyer.
  tb_line2-delivery_place = gs_specification_table-delivery_place.
  tb_line2-order_data = gs_specification_table-order_data.
  tb_line2-preorder_number = gs_specification_table-preorder_number.
  tb_line2-confirmation_number = gs_specification_table-confirmation_number .
  tb_line2-curr = gs_specification_table-curr.

  SELECT maktx FROM makt INTO tb_line-product_name WHERE matnr = temp_ekpo-matnr
                                                         AND spras = 'R'.
  ENDSELECT.
  tb_line-quantity = temp_ekpo-menge.
  tb_line-unit = temp_EKPO-MEINS.
  tb_line-price = temp_ekpo-netpr.
  tb_line-total = temp_ekpo-netwr.

  IF gs_temp_ekko-waers = 'RUB'.
    tb_line-currency = 'РУБ'.
  ELSE.
    tb_line-currency = gs_temp_ekko-waers.
  ENDIF.

  IF gs_temp_ekko-waers = 'RUB'.
    tb_line2-curr = 'РУБ'.
  ELSE.
    tb_line2-curr = gs_temp_ekko-waers.
  ENDIF.

  SELECT eindt FROM eket INTO tb_line-date WHERE ebeln = gs_temp_ekko-ebeln.
  ENDSELECT.

    INSERT tb_line INTO TABLE main_table.
  gs_specification_table-total_price = gs_specification_table-total_price + TEMP_EKPO-NETWR.
  gs_specification_table-NDS         = gs_specification_table-NDS + TEMP_EKPO-NETWR.

ENDSELECT.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Чт, дек 20 2012, 13:48 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
Маленький занудный совет: по возможности, вычисления и подтягивание данных выводить за пределы конструкции SELECT-ENDSELECT, т.к. в отладке просмотреть, что получается в данном блоке, невозможно.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Пн, дек 24 2012, 07:19 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 17 2009, 08:33
Сообщения: 39
Code:
SELECT SINGLE *
    FROM ekko
    INTO gs_temp_ekko
    WHERE ebeln = pa_ebeln.

попробуйте все же так:
Code:
SELECT SINGLE *
    FROM ekko
    INTO gs_temp_ekko
    WHERE ebeln IN pa_ebeln.

И чтобы не сбивать людей с толку, переименуйте:
Code:
SELECT-OPTIONS pa_ebeln...

в
Code:
SELECT-OPTIONS so_ebeln...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с обработкой селекционного экрана.
СообщениеДобавлено: Вт, дек 25 2012, 08:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
NoNameD написал(а):
Code:
SELECT SINGLE *
    FROM ekko
    INTO gs_temp_ekko
    WHERE ebeln = pa_ebeln.

попробуйте все же так:
Code:
SELECT SINGLE *
    FROM ekko
    INTO gs_temp_ekko
    WHERE ebeln IN pa_ebeln.

И чтобы не сбивать людей с толку, переименуйте:
Code:
SELECT-OPTIONS pa_ebeln...

в
Code:
SELECT-OPTIONS so_ebeln...

Слона то я и не приметил :D
+1 к NoNameD


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

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


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

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


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

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