Текущее время: Вт, июл 29 2025, 20:22

Часовой пояс: 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 часа


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

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


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

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