Текущее время: Вс, июл 27 2025, 23:31

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


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

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


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

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