Текущее время: Чт, авг 21 2025, 22:26

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Переменная на основе переменной BPS
СообщениеДобавлено: Чт, авг 23 2007, 16:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 02 2004, 09:20
Сообщения: 152
Пол: Женский
Здравствуйте всем!

Суть дела такова:
есть переменная var1 на инфо-объект 1, куда подтягиваем значение из полмочий.
надо ограничить в уровне инфо-объект2 так, чтобы брать только те значения, у которых атрибут инфо-объект1 равен значению var1 (ну и еще #)
Еще могу сделать иерархию инфо-объектов2, где верхними узлами будет инфо-объект1, но все равно не предсталяю как динамически выбирать этот верхний узел на основе переменной.


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

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Накодить не так уж и трудно :)
А атрибут в уровне только значением заполнять можно, переменной нельзя (что-то вспомнить не могу, а системы под рукой нет)?

_________________
Глаза боятся, а руки крюки


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

Зарегистрирован:
Чт, дек 02 2004, 09:20
Сообщения: 152
Пол: Женский
Я пробовала делать переменную с заполнением user-exit. Там со входными параметрами негусто.
Наверное, существуют специальные ФМ, я вот сейчас додумалась, наконец-то :o :D. Какие?

PS. Вот такой нашла API_SEMBPS_VARIABLE_GETDETAIL.
спасибо за растормошение мозга :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 28 2007, 11:19 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
Посмотрите для примера

FUNCTION Z_KAP_VL.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(I_AREA) TYPE UPC_Y_AREA
*" VALUE(I_VARIABLE) TYPE UPC_Y_VARIABLE
*" VALUE(I_CHANM) TYPE UPC_Y_CHANM OPTIONAL
*" VALUE(ITO_CHANM) TYPE UPC_YTO_CHA
*" EXPORTING
*" REFERENCE(ETO_CHARSEL) TYPE UPC_YTO_CHARSEL
*"----------------------------------------------------------------------
*{ INSERT BWFK900423 1
CONSTANTS:
l_buffer_call TYPE boole-boole VALUE ' '.

DATA: ls_varsel TYPE upc_ys_charsel,
l_subrc LIKE sy-subrc,
ls_return LIKE bapiret2,
l_type LIKE upc_var-vartype,
lto_varsel_all TYPE upc_yto_charsel,
lto_varsel TYPE upc_yto_charsel,
lto_var TYPE upc_ys_charsel,
lto_chanm TYPE upc_yto_cha,
lt_chavl like /BIC/PZKAP_VL occurs 1000 with header line,
ls_chavl like lt_chavl.

* read source value
CALL FUNCTION 'Z_VARIABLE_GET_DETAIL'
EXPORTING
i_area = i_area
i_variable = 'ZRS'
i_buffer = l_buffer_call
IMPORTING
e_subrc = l_subrc
es_return = ls_return
e_type = l_type
eto_varsel_all = lto_varsel_all
eto_varsel = lto_varsel
eto_chanm = lto_chanm.

IF l_subrc <> 0.
* MESSAGE i136(upc_fw) WITH l_source_var.
* Values of variable &1 cannot be determined
EXIT.
ENDIF.


* now, you are free to determine the logic on how to
* derive the values based on the source values.
DATA: l_entries TYPE i.


READ TABLE lto_varsel INTO lto_var INDEX 1.
* check prerequisites:
* - record found?
IF sy-subrc <> 0.
* MESSAGE i147(upc_fw) WITH l_source_var.
* Variable &1 does not contain any values
EXIT.
ENDIF.

* - exactly one record and characteristic?
DESCRIBE TABLE lto_varsel LINES l_entries.
IF l_entries <> 1.
* MESSAGE i534(upc) WITH l_source_var.
* Variable &1 must be restricted to a value
EXIT.
ENDIF.

SELECT * FROM /BIC/PZKAP_VL INTO TABLE lt_chavl
WHERE ( /BIC/ZKAP_VL NE ' ' ) AND ( /BIC/ZRS EQ lto_var-low ) AND (
OBJVERS = 'A' ) ORDER BY /BIC/ZKAP_VL.

if sy-subrc <> 0.
exit.
endif.


ls_varsel-seqno = '0000'.
ls_varsel-chanm = 'ZKAP_VL'.
LOOP AT lt_chavl INTO ls_chavl.
ls_varsel-seqno = ls_varsel-seqno + 1.
ls_varsel-opt = 'EQ'.
ls_varsel-sign = 'I'.
ls_varsel-low = ls_chavl-/BIC/ZKAP_VL.
APPEND ls_varsel TO eto_charsel.
ENDLOOP.



*} INSERT
ENDFUNCTION.




FUNCTION Z_VARIABLE_GET_DETAIL.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(I_AREA) TYPE UPC_VAR-AREA
*" REFERENCE(I_VARIABLE) TYPE UPC_VAR-VAR
*" REFERENCE(I_BUFFER) TYPE BOOLE-BOOLE OPTIONAL
*" EXPORTING
*" VALUE(E_SUBRC) TYPE SY-SUBRC
*" VALUE(ES_RETURN) TYPE BAPIRET2
*" VALUE(E_TYPE) TYPE UPC_VAR-VARTYPE
*" REFERENCE(ETO_VARSEL_ALL) TYPE UPC_YTO_CHARSEL
*" REFERENCE(ETO_VARSEL) TYPE UPC_YTO_CHARSEL
*" REFERENCE(ETO_CHANM) TYPE UPC_YTO_CHA
*"----------------------------------------------------------------------

STATICS:
p_subrc LIKE sy-subrc,
ps_return LIKE bapiret2,
p_type LIKE upc_var-vartype,
pto_varsel_all TYPE upc_yto_charsel,
pto_varsel TYPE upc_yto_charsel,
pto_chanm TYPE upc_yto_cha,
p_variable TYPE upc_var-var,
p_area TYPE upc_y_area,
p_first_read LIKE boole-boole VALUE 'X'.

DATA:
lr_variable TYPE REF TO cl_sem_variable.

* We can't read the values from the buffer if ...
* - it is the first read
* - the buffer flag is initial
* - the stored area or varname differ from imported values.

IF NOT i_buffer IS INITIAL
AND p_first_read IS INITIAL
AND p_area = i_area
AND p_variable = i_variable.

e_subrc = p_subrc.
es_return = ps_return.
eto_varsel_all = pto_varsel_all.
eto_varsel = pto_varsel.
eto_chanm = pto_chanm.
ELSE.

* clear all exporing tables of type reference

clear: eto_chanm, eto_varsel_all, eto_varsel.
CALL METHOD cl_sem_variable=>get_instance
EXPORTING
i_area = i_area
i_variable = i_variable
RECEIVING
rr_variable = lr_variable
EXCEPTIONS
not_existing = 1
OTHERS = 2.

IF sy-subrc <> 0.
e_subrc = 4.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = sy-msgty
cl = sy-msgid
number = sy-msgno
par1 = sy-msgv1
par2 = sy-msgv2
par3 = sy-msgv3
par4 = sy-msgv4
IMPORTING
return = es_return.
EXIT.
ENDIF.
*read details of variable
CALL METHOD lr_variable->get_attributes
IMPORTING
e_type = e_type
eto_chanm = eto_chanm.

*read restricted values
CALL METHOD lr_variable->get_value
EXPORTING
i_user = sy-uname
i_restrict = 'X'
RECEIVING
rto_value = eto_varsel
EXCEPTIONS
error = 1
OTHERS = 2.

IF sy-subrc <> 0.
e_subrc = 4.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = sy-msgty
cl = sy-msgid
number = sy-msgno
par1 = sy-msgv1
par2 = sy-msgv2
par3 = sy-msgv3
par4 = sy-msgv4
IMPORTING
return = es_return.
EXIT.
ENDIF.

* read all values
CALL METHOD lr_variable->get_value
EXPORTING
i_user = sy-uname
i_restrict = ' '
RECEIVING
rto_value = eto_varsel_all
EXCEPTIONS
error = 1
OTHERS = 2.

IF sy-subrc <> 0.
e_subrc = 4.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = sy-msgty
cl = sy-msgid
number = sy-msgno
par1 = sy-msgv1
par2 = sy-msgv2
par3 = sy-msgv3
par4 = sy-msgv4
IMPORTING
return = es_return.
EXIT.
ENDIF.

* -- no error occured => store results
CLEAR p_first_read.
p_area = i_area.
p_variable = i_variable.
p_subrc = e_subrc.
ps_return = es_return.
pto_varsel_all = eto_varsel_all.
pto_varsel = eto_varsel.
pto_chanm = eto_chanm.

ENDIF.
ENDFUNCTION.


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

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


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

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


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

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