Текущее время: Пн, авг 04 2025, 13:23

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: PDF + Область видимости переменных
СообщениеДобавлено: Вт, апр 15 2008, 11:14 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, янв 22 2007, 19:22
Сообщения: 57
Откуда: Новоуральск
Пол: Мужской
Задача: есть стандартная транзакция (книга покупок/продаж) с экраном выбора, и есть свой формуляр (zPDF)

Вопрос:
Как в коде инициализации интерфейса обратиться к переменным, которые не были переданны в zPDF через импорт

Спасибо
с уважением, Я


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PDF + Область видимости переменных
СообщениеДобавлено: Вт, апр 15 2008, 13:10 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Ramm написал:
Вопрос:
Как в коде инициализации интерфейса обратиться к переменным, которые не были переданны в zPDF через импорт
Никак

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
По идее должно получится, в случае если необходимая переменная объявлена в программе печати(программе, которая вызывает ФМ печати ПДФ-формы). В этом случае можно обратится через ASSIGN к переменной '(имя_программы)имя_переменной'


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Кодер написал(а):
В этом случае можно обратится через ASSIGN к переменной '(имя_программы)имя_переменной'

Assign работает только в рамках внутренней сессии.
А abap-код из формуляра выполняется вообще в другом процессе, а может даже и на другом сервере.


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

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Sibrin: Написано конечно правильно, только человек, имхо, спросил про другое, т.к. код, который вызывается в модуле интерфейса, вызывается в ФМ который выполняется в той же сессии. Так что, по идее все дело будет только в наличии в нужный момент данных в памяти.


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Действительно, переменные выдираются через assign. Во всяком случае, в диалоге.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

Зарегистрирован:
Пн, янв 22 2007, 19:22
Сообщения: 57
Откуда: Новоуральск
Пол: Мужской
Кодер написал(а):
По идее должно получится, в случае если необходимая переменная объявлена в программе печати(программе, которая вызывает ФМ печати ПДФ-формы). В этом случае можно обратится через ASSIGN к переменной '(имя_программы)имя_переменной'


а про ASSIGN можно по подробнее, лучше в коде :roll:
--------------------------------------
уффф, спасибо, действительно работает :D :D
--------------------------------------

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

с уважением, Я


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 17 2008, 08:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Ramm:
Допустим есть программа1
Code:
REPORT ztest1.
DATA: var1     type bukrs.

START-OF-SELECTION.
  var1 = 'RU01'.
  CALL FUNCTION Z_F_TEST1.



И есть тот самый ФМ, у которого в тексте есть следующее:
Code:
  FIELD-SYMBOLS : <lfs>    type any.
*cобственно обращение к переменной из др. программы
  ASSIGN ('(ZTEST1)VAR1') TO <lfs>.


После этого <lfs> указывает на переменную VAR1 из программы ZTEST1. Просто для таких вот вещей переменная, к которой обращаемся, должна быть глобальной в своей программе. А программа, из которой пытаемся вытащить переменную, должна или быть выше по стеку вызова, или подпрограммы из нее должны были вызываться ранее, или она целиком должна была выполняться раньше чем тот код, в котором мы пытаемся к ней обратится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 17 2008, 09:04 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, янв 22 2007, 19:22
Сообщения: 57
Откуда: Новоуральск
Пол: Мужской
Кодер написал(а):
2 Ramm:
Допустим есть программа1
Code:
REPORT ztest1.
DATA: var1     type bukrs.

START-OF-SELECTION.
  var1 = 'RU01'.
  CALL FUNCTION Z_F_TEST1.



И есть тот самый ФМ, у которого в тексте есть следующее:
Code:
  FIELD-SYMBOLS : <lfs>    type any.
*cобственно обращение к переменной из др. программы
  ASSIGN ('(ZTEST1)VAR1') TO <lfs>.


После этого <lfs> указывает на переменную VAR1 из программы ZTEST1. Просто для таких вот вещей переменная, к которой обращаемся, должна быть глобальной в своей программе. А программа, из которой пытаемся вытащить переменную, должна или быть выше по стеку вызова, или подпрограммы из нее должны были вызываться ранее, или она целиком должна была выполняться раньше чем тот код, в котором мы пытаемся к ней обратится.


угу, с простыми типами работает, не могу сделать передачу таблицы (ранга) :cry:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 17 2008, 09:10 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
ну для таблиц можно прописать так:

FIELD-SYMBOLS : <lfs> type any table.

ASSIGN ('(ZTEST1)TAB[]') TO <lfs>.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 17 2008, 09:25 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, янв 22 2007, 19:22
Сообщения: 57
Откуда: Новоуральск
Пол: Мужской
Lars написал:
ну для таблиц можно прописать так:

FIELD-SYMBOLS : <lfs> type any table.

ASSIGN ('(ZTEST1)TAB[]') TO <lfs>.


да-да-да, точно :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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