Текущее время: Вс, июн 22 2025, 18:30

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




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Пн, май 06 2013, 20:28 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 13 2010, 10:35
Сообщения: 55
Нашёл ноту: Note 1598094 - BExAnalyzer: Variable Processing & SingleDP Refresh - http://www.stechno.net/sap-notes.html?v ... id=1598094 Вот, что там говорится:
Цитата:
BExAnalyzer Button for Setting and Processing of Variable Values

when including a Button Item in the workbook and canceling the dialog which follows the Button properties can be set to process commands contained within a certain Range of the workbook (the sheet and/or area or typically hidden. The macro sub is then called for executing the command). The range must stretch over 3 columns and can contain following elements:
CMD | 0 | PROCESS_VARIABLES
SUBCMD | 0 | VAR_SUBMIT
MELT_VARIABLES | 0 | <X or nothing>
VAR_NAME_<number> | 0 | <variable name>
VAR_VALUE_EXT_<number> | 0 | <variable value>
VAR_VALUE_LOW_EXT_<number> | 0 | <variable value lower limit>
VAR_VALUE_HIGH_EXT_<number> | 0 | <variable value upper limit>
VAR_SIGN_<number> | 0 | <I or E>
VAR_OPERATOR_<number> | 0 | <EQ, LE, GE, GT, LT, BT, NB>

Я попробовал сделать так, но не заработало у меня. Надо разбираться...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Пн, май 06 2013, 20:52 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 13 2010, 10:35
Сообщения: 55
Заработало. :) Сейчас ещё поэкспериментирую и отпишу о результатах.

В общем делается так:

1. Кладём на лист BEx кнопку. Движок BEx Analyzer переключится в режим конструктора.
2. Открываем свойства кнопки (или просто щёлкаем по кнопке левой кнопкой мыши) - запустится мастер. На первом экране мастера жмём "Отмена". - Появится заключительный экран мастера настройки.
На этом экране:
- в поле "Текст кнопки" следует задать надпись, которая будет показываться на кнопке;
- в поле "Командная область" следует задать координаты диапазона ячеек, в котором мы будем записывать команды. Этот диапазон должен содержать 3 столбца. Например: X14:Z:50 - количество строк задано с запасом.
4. Теперь жмём кнопку "Ок".
5. Выходим из режима конструктора BEx Analyzer (кнопка с циркулем на панели BEx Analyzer).
Кнопка BEx настроена.

6. Теперь задаём команды в командной области (X14:Z:50) таким образом:
Code:
DATA_PROVIDER   1   DATA_PROVIDER_1
CMD   1   PROCESS_VARIABLES
SUBCMD   1   VAR_SUBMIT
MELT_VARIABLES   1
VAR_NAME_1   1   ZMY_VARIABLE_NAME_1
VAR_VALUE_EXT_1   1   10
VAR_SIGN_1   1   I
VAR_OPERATOR_1   1   EQ
VAR_NAME_2   1   ZMY_VARIABLE_NAME_2
VAR_VALUE_EXT_2   1   100
VAR_SIGN_2   1   I
VAR_OPERATOR_2   1   EQ

Здесь выбран провайдер данных с именем: DATA_PROVIDER_1 и заданы значения для двух переменных:
ZMY_VARIABLE_NAME_1 = 10
ZMY_VARIABLE_NAME_2 = 100

Настройка завершена. Теперь, при нажатии на кнопку, запрос, связанный с DATA_PROVIDER_1, обновит данные с учётом значений переменных ZMY_VARIABLE_NAME_1 и ZMY_VARIABLE_NAME_2.

Если надо задать интервалы значений для переменных выбора, то в командном диапазоне следует записать следующее:
Code:
DATA_PROVIDER   1   DATA_PROVIDER_1
CMD   1   PROCESS_VARIABLES
SUBCMD   1   VAR_SUBMIT
MELT_VARIABLES   1
VAR_NAME_1   1   ZMY_VARIABLE_NAME_1
VAR_VALUE_LOW_EXT_1   1   10
VAR_VALUE_HIGH_EXT_1   1   20
VAR_SIGN_1   1   I
VAR_OPERATOR_1   1   BT
VAR_NAME_2   1   ZMY_VARIABLE_NAME_2
VAR_VALUE_LOW_EXT_2   1   100
VAR_VALUE_HIGH_EXT_2   1   200
VAR_SIGN_2   1   I
VAR_OPERATOR_2   1   BT

Здесь в качестве значений для двух переменных заданы диапазоны:
ZMY_VARIABLE_NAME_1 = 10..20
ZMY_VARIABLE_NAME_2 = 100..200


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 08 2013, 11:30 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
znv написал(а):
murmur, у вас после нажатия такой кнопки, как я понимаю, выводится новая выборка и в текстовых элементах с информацией о запросе отображаются новые значения переменных? Почему-то именно этого я никак не могу добиться.((
И еще, как задать несколько значений для одной переменной, которые будут работать через ИЛИ?

Несколько значений для одной переменной (переменная должна быть объявлена как multiple values):

Analyzer:
BI AddOn 7.X (based on 7.20), SP4, Patch 2

Button (Static Parameters):
CMD 1 PROCESS_VARIABLES
SUBCMD 1 VAR_SUBMIT
DATA_PROVIDER 1 DATA_PROVIDER_1
Button (Command Range):
S29:U34

Sheet (Range S29:U32):
VAR_NAME_1 1 VAR_9
VAR_VALUE_EXT_1 1 '1
VAR_NAME_2 1 VAR_9
VAR_VALUE_EXT_2 1 '2

VAR_NAME_3 1 VAR_8
VAR_VALUE_EXT_3 1 '11.2012


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 08 2013, 13:36 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
Благодарю за ответы. Испробовала все варианты. Ничего не выходит, область результатов не меняется.((( Уже никаких мыслей нет... Почему кнопки управления фильтрами работают, а с переменными - нет? Может, все-таки зависит от Patch? У меня SP 8, Patch 11.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 08 2013, 14:20 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Попробуйте выполнить шаги, указанные в данной ссылке, чтобы определить требуемые параметры для вашего случая. Например, правильные параметры для нескольких значений одной переменной я смог получить только из данного руководства


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 08 2013, 15:55 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
Споткнулась на втором же шаге.))) Помогите, плиз. Там перед сохранением книги с запросом требуется значения переменных запихнуть в BEx XML repository. Save the workbook on your local drive (this is required to save the variables' values in the BEx XML repository) Как это делается?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 08 2013, 16:27 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
Фуххх... Свершилось!!! Сохранила книгу с запросом в формате XLSX (о чем сказано в самом конце статьи) без сжатия - и было мне счастье!))) Макрос сработал, нашел провайдер данных, вывел переменные...
Огромное всем спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Пн, май 13 2013, 08:40 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
Счастье, как водится, длилось недолго.((( После запуска запроса с новыми значениями переменных и GRID и TEXT отображают обновленные данные. А вот вытянуть эти значения переменных из XML можно только после сохранения книги. Как же их получить сразу после обновления запроса?
Ну и еще одна загвоздка - при обновлении по кнопке не воспринимаются не числовые значения переменных, например, символьный код орг. единицы. При этом значение беру из сохраненных переменных из строки VAR_VALUE_LOW_EXT_1. Это в принципе невозможно или есть какие-то особенности?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Пн, май 13 2013, 09:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
znv написал(а):
Счастье, как водится, длилось недолго.((( После запуска запроса с новыми значениями переменных и GRID и TEXT отображают обновленные данные. А вот вытянуть эти значения переменных из XML можно только после сохранения книги. Как же их получить сразу после обновления запроса?
Не очень понятно, чего вы пытаетесь добиться! Зачем вам вытягивать что-то из XML?! Вы записываете (или пользователь) новые параметры в Range (на скрытом листе или на открытом), после чего обновляете запрос (вручную или программно через VBA). В любой момент вы можете снова прочитать и проанализировать этот Range. Зачем лезть в XML? XML нужен только на начальном этапе для того, чтобы понять какие параметры вообще следует указывать в Range.

znv написал(а):
Ну и еще одна загвоздка - при обновлении по кнопке не воспринимаются не числовые значения переменных, например, символьный код орг. единицы. При этом значение беру из сохраненных переменных из строки VAR_VALUE_LOW_EXT_1. Это в принципе невозможно или есть какие-то особенности?
Параметр VAR_VALUE_LOW_EXT_1 имеет смысл, если я не ошибаюсь, только для переменных диапазона. Если у вас множественный выбор единичных значений или просто выбор единичного значения, то использовать следует VAR_VALUE_EXT_1. Например, тот VBA-код, который приведен по ссылке, доставал данные из XML для множественных значений с параметром VAR_VALUE_LOW_EXT_(N), но в моей версии BEx параметры пришлось поправить на VAR_VALUE_EXT_(N)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Пн, май 13 2013, 10:14 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
Цитата:
Не очень понятно, чего вы пытаетесь добиться! Зачем вам вытягивать что-то из XML?! Вы записываете (или пользователь) новые параметры в Range (на скрытом листе или на открытом), после чего обновляете запрос (вручную или программно через VBA). В любой момент вы можете снова прочитать и проанализировать этот Range. Зачем лезть в XML? XML нужен только на начальном этапе для того, чтобы понять какие параметры вообще следует указывать в Range.
Задачи бывают разные. Допустим, мне нужно в макросе: в одной книге по кнопке запустить запрос, выбрать переменные, затем прочитать их (хоть откуда-нибудь, пусть не из XML, и не сохраняя книгу) и передать в запрос в другой книге.

Цитата:
Параметр VAR_VALUE_LOW_EXT_1 имеет смысл, если я не ошибаюсь, только для переменных диапазона. Если у вас множественный выбор единичных значений или просто выбор единичного значения, то использовать следует VAR_VALUE_EXT_1. Например, тот VBA-код, который приведен по ссылке, доставал данные из XML для множественных значений с параметром VAR_VALUE_LOW_EXT_(N), но в моей версии BEx параметры пришлось поправить на VAR_VALUE_EXT_(N)
Действительно, заменила VAR_VALUE_LOW_EXT_1 на VAR_VALUE_EXT_1 и все заработало. Спасибо за подсказку. А то б не догадалась, ведь копировала из XML. Теперь еще и эту особенность придется обрабатывать... Короче, кругом одни засады...(((


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Вт, май 14 2013, 20:37 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
"И было ей молчание ответом…"
Ну неужели больше никак нельзя достать эти переменные, кроме как из XML???


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Вт, май 14 2013, 21:27 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Объясните точно какую задачу вы решаете - откуда поступают значения переменных (или кто их вводит), как вызывается запрос, для чего (где) следует использовать переменные после выполнения запроса. Тогда завтра утром попробую сделать


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Вт, май 14 2013, 21:29 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 13 2010, 10:35
Сообщения: 55
znv написал(а):
"И было ей молчание ответом…"
Ну неужели больше никак нельзя достать эти переменные, кроме как из XML???

А зачем их из XML доставать? XML, как я понял, нужен только для того, чтобы определить набор команд, который в командную область можно записать. Что касается переменных - они же определены в запросе Query Designer. Вот оттуда (из запроса) их надо взять и использовать их имена при оформлении командного диапазона.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 15 2013, 08:28 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 29 2013, 14:29
Сообщения: 18
Вот что нужно:
1. Пользователь открывает одну книгу с запросом.
2. По кнопке вызывает обновление запроса, появляется окно для ввода значений переменных, которые пользователь выбирает вручную.
3. Выбранные значения переменных (или часть значений) передаются макросом в диапазон ячеек в другой книге с другим запросом, который считывает эти значения, обновляется и передает в первую книгу область результатов.

Собственно, вопрос только в том, как достать введенные пользователем значения переменных? При этом обойтись без сохранения книги, которое необходимо, чтобы эти значения обновились в XML.
Только не спрашивайте, почему все нужно именно так, а не иначе.)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BExAnalyzer 7.Х передача входных параметров в запрос через VBA
СообщениеДобавлено: Ср, май 15 2013, 11:12 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
1. Тут проблем быть не должно
2. Создаем текстовые элементы, отражающие значения переменных на скрытом листе (после выполнения запроса они получат введенные пользователем значения). Создаем кнопку с командой SHOW_VARIABLE_SCREEN. При нажатии на нее появится стандартное окно с параметрами. В конец обработчика кнопки добавляем VBA код, открывающий вторую книгу Run "BExAnalyzer.xla!SAPBEXreadWorkbook", "U7TM0PQED9IBHXFPS60FYST22" (к моменту открытия значения переменных уже можно забирать из текстовых элементов)
3. Во второй книге делаем кнопку с диапазоном команд (как описывалось ранее в топике), в который переписываем значения из текстовых элементов первой (тут могут потребоваться некоторые преобразования в зависимости от типа и кол-ва переменных), после чего имитируем через VBA нажатие кнопки и обновление второго запроса, передаем результат в первую книгу, закрываем вторую

Уродливая задумка с самого начала, но раз вы просили не критиковать, то вам виднее зачем все это делать. Самый неприятный момент, на мой взгляд, это открытие второй книги - ведь визуально она отобразится на экране (можно поколдовать, конечно, с winAPI функцией LockWindowUpdate, чтобы избежать ее появления и мерцания), хотя из нее нужно получить только результат, то есть, по сути, она не должна отображаться.


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

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


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

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


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

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