Текущее время: Ср, июл 30 2025, 13:20

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Есть ли метод GET POST в BSP?
СообщениеДобавлено: Ср, окт 10 2007, 09:50 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Привет всем!
Задача такая, в BSP программе получить значение переменной передаваемой в адресной строке.
То есть, в URL
http://tom.snos.ru:1080/sap(bD1ydSZjPTAyMA==)/bc/bsp/sap/zsm50/default.htm?srv=tom_SLV_20

есть передаваемая переменная srv = tom_SLV_20.

Как ее отловить в BSP отчете?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 10 2007, 12:57 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
POST метод есть, а вот GET...
Интересно, есть ли метод который возвращает строку URL.
Один нашел:
data: getstr type string.
getstr = page->get_page_url( ).

Но он получает URL не полностью только до .../default.htm
Он берет это значение с сервера BSP.

При нажатии ссылки надо вызвать другой BSP документ и передать ему часть переменных.
Попробую так: <a href="other_doc.htm" onclick="<% perem1=val1, perem2=val2.%>"> Интересно сработает. А в аттрибутах страницы other_doc.htm опишу эти переменные.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, окт 13 2007, 02:22 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
В общем случае я бы рекомендовал использовать POST. Мне так больше нравится :)
Что касается GET - используйте метод объекта navigation (класс cl_bsp_navigation) set_parameter в событии OnInputProcessing вашей BSP страницы.

UPD: У атрибутов обязательно должна стоять галка Auto. Иначе значения не передадутся.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 07:48 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
А как пользоваться методами не подскажешь?
В OnInputProcessing первой страницы я написал:

data: test type string.
navigation->set_parameter(test, 'Hi from first page!').

Ругается на синтаксис.

Вот описание метода:
method set_parameter
importing
name type string
value type any optional
------дополнение-----------
Вот таким образом ошибок нету, но все равно не работает )
data: test type string.
test = 'Hi from first page!'.
navigation->set_parameter( test ).

Параметр test во второй странице описан, поставлена отметка "auto".
Метод post по отношению ко второй странице работает нормально, а вот get не хочет. Может я неправильно описываю код?
OnInputProcessing первой страницы будет вызываться при нажатии на ссылку на первой странице?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 07:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Damir написал(а):
data: test type string.
navigation->set_parameter(test, 'Hi from first page!').

Ругается на синтаксис.

Внутри круглых скобочек должен быть пробел.
Кроме того, имя параметра, test, нужно чем-то заполнять.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 08:03 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
И еще почему то метод navigation->set_parameter( test ) работает только в окне OnInputProcessing, а в основном тексте кода не работает, вызывает ошибку "The field navigation is unknown" )


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 08:12 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
sibrin написал:
Внутри круглых скобочек должен быть пробел.
Кроме того, имя параметра, test, нужно чем-то заполнять.

Насчет пробела я догадался )... Судя по описанию метода, там передаются 2 параметра, но как их правильно синтаксически описать?
navigation->set_parameter( test , 'Hi from 1-st page!') - так ошибка: Сomma without preceding colon (after NAVIGATION->SET_PARAMETER( ?).
В помощи сказано, если второй параметр опустить, то значение возмется из поля формы с таким же именем. Но так как формы у меня нету, я хочу непосредественно в методе передать значение.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 09:07 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
navigation->set_parameter( name = 'test' value = 'Hi from first page!' )
. вот так правильно использовать метод. Только параметры все равно не передаются...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 09:39 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Damir, у той страницы, куда передается параметр, должен быть объявлен атрибут с тем же именем и галкой Auto.
Тогда все будет работать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 09:48 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Там есть аттрибут с этим именем, и "авто" тоже стоит ) Похоже дело в другом, OnInputProcessing работает для полей ввода. А у меня полей ввода нет, есть просто ссылка на другую страницу, в которую я хочу передать параметр.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 10:20 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, фев 08 2007, 11:44
Сообщения: 52
Поля ввода здесь ни при чём. Как ты переходишь на другую страницу после установки параметров ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 12:16 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Вот одна из ссылок, которые стоят на страничке default.htm
<a href="default.htm?srv=<%= sl-name %>"> <%= sl-name %> </a>

sl-name одно из значений tom_SLV_20, tom_SLV_21.

То есть, вначале при запуске страницы отображаются данные первого доступного сервера (в нашем случае червера tom_SLV_20), одновременно формируются ссылки на данные других серверов.

При нажатии на ссылку <a href="default.htm?srv=<%= sl-name %>"> <%= sl-name %> </a> вызывается эта же страничка, но ей должны передаться параметры, а именно название сервера, данные которого мы хотим отобразить.
То есть, при нажатии на ссылку должно сработать какое-то событие, внутри которого идет передача параметра. OnInputProcessing у меня не работает.
--------------------------------------------------
И еще, почему-то обработчик событий не видит переменные описанные в основном тексте программы.
----------------------------------------------------------
Приведу текст программы и обработчика:
------------------DEFAULT.HTM-------------------------------
<%@page language="abap"%>
<% data:
wptab type table of wpinfo,
wa type wpinfo,
server(40) type c,
test2 type string,
i type i,
col type i,
withcpu type TSKH_DUMMY-WITH_CPU,
servlist type table of MSXXLIST,
sl type MSXXLIST,
e_services type MSXXLIST-MSGTYPES value 255,
getstr type string.
*-------------
CALL function 'TH_SERVER_LIST'
EXPORTING
services = e_services
TABLES
list = servlist
EXCEPTIONS
OTHERS = 1.
read table servlist into sl index 1.
"getstr = page->get_page_url( ).
server = sl-name.
test2 = test.
*------------- %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Рабочие процессы</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body BGCOLOR="#eeeedd" >
<%= test2 %>
<table border="1" cellspacing="0" bordercolor="#999999">
<tr bgcolor="#99ccee"><td with="100">Сервер</td><td with="150">Хост</td><td with="100">Статус</td></tr>
<% i = 1.col = 0.
while sy-tabix <> 0.
read table servlist into sl index i.
if sy-tabix <> 0.%>
<% if col = 0. %>
<tr bgcolor="#ccffcc">
<% col = 1.
else. %>
<tr bgcolor="#ffffcc">
<% col = 0. endif. %>
<td><a href="default.htm?srv=<%= sl-name %>"> <%= sl-name %> </a></td>
<td> <%= sl-host %> </td>
<td> <%= sl-state %> </td>
</tr>
<% endif.
i = i + 1. endwhile. %>
</table>
<% withcpu = 0.
CALL FUNCTION 'TH_WPINFO'
EXPORTING
srvname = server
with_cpu = withcpu
TABLES
wplist = wptab
EXCEPTIONS
OTHERS = 1.
%>
<p>&nbsp;</p>
<table border="1" cellspacing="0" bordercolor="#999999">
<tr bgcolor="#99ccee">
<td>№</td><td>Тип</td><td>ИдП</td><td>Статус</td><td>Прич.</td><td>Зап.</td><td>Ошб.</td>
<td>Вр.</td><td>Отчет</td><td>Мдт</td><td>Пользов.</td><td>Операц</td><td>Таблица</td>
</tr>
<% i = 1.col = 0.
while sy-tabix <> 0.
read table wptab into wa index i.
if sy-tabix <> 0.%>
<% if col = 0. %>
<tr bgcolor="#ccffcc">
<% col = 1.
else. %>
<tr bgcolor="#ffffcc">
<% col = 0. endif. %>
<td> <%= wa-wp_no %> </td>
<td> <%= wa-wp_typ %> </td>
<td> <%= wa-wp_pid %> </td>
<td> <%= wa-wp_status %> </td>
<% if wa-wp_waiting <> ''.%>
<td> <%= wa-wp_waiting %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<td> <%= wa-wp_restart %> </td>
<% if wa-wp_dumps <> ''.%>
<td> <%= wa-wp_dumps %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<% if wa-wp_eltime <> ''.%>
<td> <%= wa-wp_eltime %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<% if wa-wp_mandt <> ''.%>
<td> <%= wa-wp_mandt %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<% if wa-wp_bname <> ''.%>
<td> <%= wa-wp_bname %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<% if wa-wp_report <> ''.%>
<td> <%= wa-wp_report %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<% if wa-wp_action <> ''.%>
<td> <%= wa-wp_action %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
<% if wa-wp_table <> ''.%>
<td> <%= wa-wp_table %> </td>
<% else. %><td>&nbsp;</td><% endif. %>
</tr>
<% endif.
i = i + 1. endwhile. %>
</table>
</body>
</html>
----------------OnInputProcessing---------------------------------------
navigation->set_parameter( name = 'test' value = 'Hi from first page!' )
.
------------------Attrubutes--------------------------------
test type string, 'auto' - 'X'.
----------------------------------------------------
Программа должна при нажатии на ссылку присвоить в test2 значение test и отобразить на экране.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 13:24 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
OnInputProcessing реагирует только на кнопку. Стоило мне добавить форму с кнопкой, как параметры передаются нормально. Но действия при нажатии на ссылку (как мне надо), не отрабатывают. Придется около каждой строчки ставить кнопку ))


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 13:40 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, фев 08 2007, 11:44
Сообщения: 52
Чтобы работал приведенный выше код замени в URL
Code:
<td><a href="default.htm?srv=<%= sl-name %>"> <%= sl-name %> </a></td>

переменную srv на test и будет тебе счастье 8)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 15 2007, 13:45 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Спасибо за помощь! Ща попробуем! ;-)
А я уж вариант со скрытыми формами сделал, вместо ссылок у меня маленькие кнопочки ), тоже работает, но хотелось бы со ссылками.


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

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


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

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


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

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