Текущее время: Сб, июл 26 2025, 04:17

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Пн, июн 15 2009, 14:43 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Добрый день!
Помогите пожалуйста. Переделываю саповскую программу на ЛБД ADA. Среди динамических критериев выбора есть IMKEY - код объекта недвижимости. Мне нужно программно наложить ограничения на это значение. Никак не соображу, как это делается? :oops:

_________________
Silence v.2.0


Последний раз редактировалось Silence1 Чт, июн 18 2009, 07:58, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Пн, июн 15 2009, 15:17 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Посмотрите ГФ SSEL.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Пн, июн 15 2009, 15:51 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Пономарев Артем написал:
Посмотрите ГФ SSEL.

Посмотрела, не помогло :cry:
а может примерчик какой есть? :oops:

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 11:02 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Silence1 написала:
Добрый день!
Помогите пожалуйста. Переделываю саповскую программу на ЛБД ADA. Среди динамических критериев выбора есть IMKEY - код объекта недвижимости. Мне нужно программно наложить ограничения на это значение. Никак не соображу, как это делается? :oops:

поле IMKEY должно быть в каком-нибудь узле ЛБД (просмотр структуры ЛБД SE36). Если узел не объявлен в программе в NODES, то объявите его.
Для примера возьмем ЛБД по ОС: ADA. Нужно ограничени по полю "Поле классификации 1" (ORD41). Оно находится в узле ANLAV. Объявляем узел, а также на сел. экране SELECT-OPTIONS для этого поля:

Code:
NODES:
ANLAV.

SELECT-OPTIONS: s_ord41 FOR ANLAV-ORD41.


И всё! Но селект-опшнз нужно объявить именно так:
Code:
FOR <узел_лбд-поле>

Ну, естественно, в коде проги должна быть где-то строчка типа
Code:
GET: ANLAV. CHECK SELECT-OPTIONS.

И узел ЛБД должен быть объявлен как узел с динамич. ограничениями (если ничего не путаю). В документации это звучит так:
Цитата:
The node on the logical database is designed for dynamic selections.


По идее всё должно работать. Сталкивался с подобным очень давно, поэтому пишу по памяти. Попробуйте такое решение, если, конечно, я правильно понял суть вашей проблемы.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 12:09 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Спасибо за отклик!
Но мне нужно было не это.
Среди динамических критериев есть "Код недвижимости" - ANLAV-IMKEY. Вот этот критерий мне и нужно было заполнить программно. Надо было на экране запросить номер партнера, а по нему найти договора по сдаче в аренду - это и будут ограничения для ANLAV-IMKEY.
Но все равно пришлось отказаться от этого варианта - по другим причинам. И реализовать совсем другой алгоритм, так что тема неактуальна.

Но хотелось бы понять, как для ЛБД можно все-таки заполнить эти параметры.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 12:13 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Silence1 написала:
Спасибо за отклик!
Но хотелось бы понять, как для ЛБД можно все-таки заполнить эти параметры.

именно так, как я написал.
что мешает объявить так:
Code:
SELECT-OPTIONS:
s_imkey FOR ANLAV-IMKEY NO-DISPLAY.


затем в программе заполнить это ограничение:
Code:
s_imkey-sign = 'I'.
s_imkey-option = 'EQ'.
s_imkey-low = <значение>.
APPEND s_imkey.


Должно работать.
Или посмотреть в сторону ФМ LDB_PROCESS как альтернативы. Хотя сам я его никогда не использовал :) Поэтому подробнее рассказать не могу.
Всяко, если вы скопировали стандартную прогу, то там сделано стандартным образом с объявлением NODES, GET в событии START-OF-SELECTION итд.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 14:47 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Может я чего не понимаю, я не гуру.
Но я пробовала таким способом с
Code:
GET: ANLAV. CHECK SELECT-OPTIONS.

да, чек делает проверку, но работает это ОЧЕНЬ медленно по сравнению с тем, как делается выборка, если наложены динамические ограничения!

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 15:29 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Silence1 написала:
Может я чего не понимаю, я не гуру.
Но я пробовала таким способом с
Code:
GET: ANLAV. CHECK SELECT-OPTIONS.

да, чек делает проверку, но работает это ОЧЕНЬ медленно по сравнению с тем, как делается выборка, если наложены динамические ограничения!

попробуйте убрать CHECK SELECT-OPTIONS. проверьте, как будет работать... Я уж точно не помню, но, скорее всего, если наше ограничение объявлено FOR ANLAV-INKEY, оно должно работать именно как динамическое. В исходном тексте программы ЛБД узел объявлен как
Code:
SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE ANLAV ID ANL.

т.е. подразумевает динамические ограничения по его полям


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 15:45 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Предложенный способ объявления
Code:
SELECT-OPTIONS: r_imkey FOR ANLAV-IMKEY NO-DISPLAY.

ничего не дает, никаких ограничений.
GET перебирает все ОСы.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 16:02 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Silence1 написала:
Предложенный способ объявления
Code:
SELECT-OPTIONS: r_imkey FOR ANLAV-IMKEY NO-DISPLAY.

ничего не дает, никаких ограничений.
GET перебирает все ОСы.

А ANLAV как объявлено: TABLES или NODES ?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 16:04 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Art386 написал:
А ANLAV как объявлено: TABLES или NODES ?

TABLES
это ИНВ-1 - отчет на ЛБД ADA

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Ср, июн 17 2009, 16:06 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Silence1 написала:
Art386 написал:
А ANLAV как объявлено: TABLES или NODES ?

TABLES
это ИНВ-1 - отчет на ЛБД ADA

Попробуйте убрать из TABLES и объявить как NODES, может, поможет...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Чт, июн 18 2009, 07:29 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Art386 написал:
Попробуйте убрать из TABLES и объявить как NODES, может, поможет...

не помогло :lol:
На самом деле нужно для дин.критериев ЛБД заполнить DYN_SEL-CLAUSES, скорее всего каким-то ф.модулем, я только не пойму, каким и как.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Пт, июн 19 2009, 10:52 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Silence1 написала:
Art386 написал:
Попробуйте убрать из TABLES и объявить как NODES, может, поможет...

не помогло :lol:
На самом деле нужно для дин.критериев ЛБД заполнить DYN_SEL-CLAUSES, скорее всего каким-то ф.модулем, я только не пойму, каким и как.

dyn_sel-CLAUSES-tablename = 'ANLAV'.
dyn_sel-CLAUSES-where_tab - таблица с одной строкой, содержимое: ( IMKEY EQ '12345' )

dyn_sel-TEXPR-tablename = 'ANLAV'.
dyn_sel-TEXPR-expr_tab - таблица с одной строкой
LOGOP - пусто
ARITY = 0
FIELDNAME = 'IMKEY'
OPTION = EQ
LOW = '12345'
HIGH - пусто

dyn_sel-TRANGE-tablename = 'ANLAV'.
dyn_sel-TRANGE[1]-FRANGE_T - таблица с одной строкой:
FIELDNAME = 'IMKEY'
SELOPT_T - таблица с одной строкой
SIGN = I
OPTION = EQ
LOW = '12345'
HIGH - пусто

Это то, что я увидел в отладчике. Что вам мешает из своей проги заполнить также?


вот кусок кода, где объявляется DYN_SEL

Code:
***INCLUDE RSDBCOM4.
* Gemeinsames INCLUDE RSDBRUNT/SAPDBxyz

* TYPES-Definitionen
TYPE-POOLS RSDS.

* Dynamische Selektionen
DATA BEGIN OF COMMON PART %_DYN_SEL.
  DATA DYN_SEL TYPE RSDS_TYPE.
DATA END   OF COMMON PART %_DYN_SEL.


Теперь немного динамического программирования и всё заполнится... Правда, как работать будет, не знаю.
А про тот случай, что я описывал, так у меня там, скорее всего, было нединамическое ограничение, и я использовал CHECK SELECT-OPTIONS... вот... скорее всего, так. Точно не помню, это было 4 года назад :lol:

Да, и посмотрите всё-таки функциональный модуль LDB_PROCESS, там вроде бы есть что-то полезное


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как в программе заполнить динамические критерии(ЛБД ADA)?
СообщениеДобавлено: Пт, июн 19 2009, 12:02 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Спасибо!
Я это тоже все накопала, DYN_SEL мне доступен только через assign, пробую заполнить, чтобы получилось типа:
Code:
DYN_SEL-CLAUSES[1]-WHERE_TAB-LINE = "    ( IMKEY                          EQ '00004758' )"


Как в строку запихнуть кавычку ' ???

_________________
Silence v.2.0


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

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


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

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


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

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