Как запретить SAP BSP добавлять пробел в целочисленную переменную?
Фон
Я делаю некоторые изменения в существующей пользовательской странице BSP, чтобы улучшить удобство использования на планшетах с Windows RT.
Меня попросили изменить поле ввода (в настоящее время type="text"
), чтобы цифровая клавиатура появлялась, когда кто-то начинает вводить значение вместо полной клавиатуры. Это легко достигается путем изменения типа поля ввода на type="number"
Моя проблема
После обновления страницы (из-за сортировки, возврата со следующей страницы и т. Д.). Целочисленное поле, используемое в качестве значения в поле ввода, возвращается с дополнительным пробелом, прикрепленным к нему:
Мой код
data: lv_qty type i value 3.
<tr>
<td><%=lv_field1%></td>
<td><%=lv_fieldn%></td>
<td>|<%=lv_qty>|</td>
</tr>
Сгенерированный HTML:
<tr>
<td>Value1 </td>
<td>Value2 </td>
<td>
|3 | <!-- Note the extra space here! -->
</td>
</tr>
Так что я всегда получаю дополнительное место; но это только вызывает проблему при попытке использовать его с <input type="number">
Вполне возможно, что BSP на самом деле не был обновлен для HTML 5, и я просто застрял с этой проблемой, но могу ли я что-то сделать на стороне сервера, чтобы предотвратить это?
На стороне клиента я рассматриваю возможность использования JavaScript, чтобы обрезать лишнее пространство, но это кажется ненужным обходным решением.
РЕДАКТИРОВАТЬ
Хорошо, пытаясь упростить код вопроса, я на самом деле запутал проблему:
Моя настоящая проблема возникает, когда я пытаюсь использовать lv_qty
в качестве поля ввода type="number"
а затем обновить страницу по любой причине.
Код в этом случае выглядит следующим образом:
data: lv_qty type i.
<tr>
<td><%=lv_field1%></td>
<td><%=lv_fieldn%></td>
<td>
<input type="number" value="<%=lv_qty%>">
</td>
</tr>
Это все еще упрощается, но проблема становится довольно очевидной: (я поставил значение lv_qty в двойных кавычках).
Я все еще думаю, что лишнего места, которое я получаю со стороны сервера, быть не должно, но исправление довольно простое: не будьте идиотом и не передавайте числа обратно на веб-страницу в виде чисел, а не строк:).
3 ответа
Удалите двойные кавычки вокруг целого значения:
data: lv_qty type i.
<tr>
<td><%=lv_field1%></td>
<td><%=lv_fieldn%></td>
<td>
<input type="number" value=<%=lv_qty%> > <!--No double quotes here-->
</td>
</tr>
Попробуйте использовать шаблон строки с конденсатом:
<td>|<%=|{ condense( lv_qty ) }|>|</td>
Поскольку вы используете Z BSP, почему бы не определить lv_qty как строку типа атрибута страницы?
Тогда ваш дисплей должен быть просто номером.