Текущее время: Пт, мар 29 2024, 03:56

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


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

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


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

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