Текущее время: Чт, мар 28 2024, 20:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Чт, сен 01 2022, 16:52 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
Добрый День, поскажите пожалуйста, как провильно написать следущий код и где у меня ошибки.
Хочу, чтобы с экрана можно ввести параметр запроса по которому искать в поле таблицы -это тело программы
И сам запрос расположен в функции и функция вернула результат. Т.е запрос - это функция.
Программа
Code:
REPORT zz_v_test3.
PARAMETERS: z_parprg(20) TYPE C.
DATA: wa_prog TYPE mara.
CALL FUNCTION 'Z_V_TEST3'
  EXPORTING
    z_paramf = z_parprg
  IMPORTING
    wa_funct = wa_prog.


Функция(в импорте Z_PARAMF поставил TYPE C; в экспорте надо написать wa_funct TYPE mara ? ):
Code:
DATA: wa_funct TYPE mara.
SELECT * from mara where ERNAM like @Z_PARAMF
   INTO CORRESPONDING FIELDS OF @wa_funct.
  write:/ wa_funct-matnr, wa_funct-ERSDA, wa_funct-LAEDA, wa_funct-ernam.
  ENDSELECT.
ENDFUNCTION.


Че-то не отрабатывает


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Чт, сен 01 2022, 18:04 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 131
Откуда: Набережные Челны
Пол: Мужской
Хм, а для чего вам локальная переменная wa_funct внутри ФМ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Пт, сен 02 2022, 09:33 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
Спасибо за ответ
я в нее(wa_funct) вывожу результат запроса.
Типа вирутальной таблицы. Но я хочу понять, как мог бы работать данный запрос через тело программы(вызов функции) и функции(запрос к базе).

Если подправите программу и покажите, как это реализовать-буду благодарен. Хочу знать, как это правильно делать и лучше делать. Это как шаблон на будущее.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Пт, сен 02 2022, 11:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
В программе лучше сделать вот так
Code:
tables: mara. "нужно, чтобы select-options увидел на кого ссылаться

select-options: s_ernam for mara-ernam.


У функции объявить параметр типа таблица, и передавать в него s_ernam[]
В самой функции изменить select
Code:
SELECT * from mara where ERNAM in @s_ernam[]
   INTO CORRESPONDING FIELDS OF @wa_funct.
....
endselect.


Так будет проще. В этом случае можно будет в s_ernam на экране указывать маски (* любая последовательность символов, + один любой символ).
Если оставлять ваш пример, то в нем при вводе значения в поле на экране вместо маски нужно будет указывать % для любой последовательности символов и _ для одного любого символа. Маски в сап и маски на уровне запросов разные. Т.к. вы использовали в селекте like, то должны в параметре указывать маску БД. Если использовать select-options, то абап будет сам конвертировать маски.

Вообще, самоходом абап достаточно тяжко учить, очень не очевидны некоторые вещи. Или найдите курсы (было несколько боле-менее нормальных на udemi) или адекватные книги.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Пт, сен 02 2022, 14:01 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
Спасибо за ответ, буду разбираться с запросом.
Книга есть типа для внутреннего обучнеия и по ней учу


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Пн, сен 05 2022, 09:27 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 131
Откуда: Набережные Челны
Пол: Мужской
saphir написал(а):
Спасибо за ответ
я в нее(wa_funct) вывожу результат запроса.
Типа вирутальной таблицы. Но я хочу понять, как мог бы работать данный запрос через тело программы(вызов функции) и функции(запрос к базе).

Если подправите программу и покажите, как это реализовать-буду благодарен. Хочу знать, как это правильно делать и лучше делать. Это как шаблон на будущее.

Пойдем с другой стороны. А почему z_paramf не объявлял локально, а используешь глобальную переменную?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Ср, сен 07 2022, 10:14 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июл 01 2022, 13:42
Сообщения: 62
Цитата:
Если оставлять ваш пример, то в нем при вводе значения в поле на экране вместо маски нужно будет указывать % для любой последовательности символов и _ для одного любого символа. Маски в сап и маски на уровне запросов разные. Т.к. вы использовали в селекте like, то должны в параметре указывать маску БД.


Спасибо за ответ я знал, и делал маску с процентами. Мне действительно интересно было, как делают без маски с процентами. Мне сейчас разобраться бы, как возвратить и вывести результат запроса в программу.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с функциями и выборка из БД. Нужна помощь в коде.
СообщениеДобавлено: Ср, сен 07 2022, 11:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
broker.chelny написал:
Мне действительно интересно было, как делают без маски с процентами

1) вариант 1 (наиболее часто используемый): используют Select-options (это если надо ввести с экрана) или ranges (если просто формировать в коде). И то, и то - это внутренние таблицы определенной структуры, посмотрите в хелпе. Они позволяют задавать по определенным правилам логические условия. В запросе тогда используется сравнение IN. ABAP DB interface в момент выполнения SQL запроса преобразует условие с ranges/sel-options в понятный БД формат автоматом

2) вариант 2: вручную формировать поле маски в том виде, в каком нужно

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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