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

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


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

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


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

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