Текущее время: Вт, авг 05 2025, 09:10

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Функциональный модуль для переменной BPS
СообщениеДобавлено: Пн, сен 04 2006, 15:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Привет!
Подскажите где можно посмотреть примерчики.

Нужно в ФМ прочитать значение переменной BPS N1 произвести действия и записать в переменную BPS N2. Сам ФМ указывается в свойствах второй переменной.


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

Зарегистрирован:
Вт, авг 17 2004, 09:59
Сообщения: 1097
Откуда: Moscow
Пол: Мужской
по поводу чтения значений переменных посмотри функции API_SEMBPS_* - там есть такой ФМ

по поводу примеров для переменной - смотри группу функций UPFX

_________________
In SAP we trust !


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функциональный модуль для переменной BPS
СообщениеДобавлено: Пн, сен 04 2006, 15:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, июн 24 2005, 15:18
Сообщения: 1216
Откуда: Diagon Alley
HIman написал(а):
Привет!
Подскажите где можно посмотреть примерчики.

Нужно в ФМ прочитать значение переменной BPS N1 произвести действия и записать в переменную BPS N2. Сам ФМ указывается в свойствах второй переменной.


Something like that

1. Сначала читайте значения
Примерно такая последовательность следующих ФМ

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 to buffer
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.


READ TABLE eto_varsel INTO ....... INDEX 1.


3атем в ФМ, который определён в переменной делаем следующее

ls_varsel-low = Нужное значение.

* add to result table
APPEND ls_varsel TO eto_charsel.

_________________
"Если ты в молодости не испытал трудности, их стоит купить за большие деньги". (с) Даймо


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 04 2006, 17:20 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Нда весьма запутанно :)
Уважаемые гуру можно чуть подробнее про запись переменной

мне нужно прочитать:

* читаем значения переменной VMONTH (например 200603)
READ TABLE lto_value INTO ls_varsel WITH TABLE KEY chanm = 'VMONTH'.

* выцепляем год прибавляем 12 и записываем в новую переменную VMONTH4
concatenate ls_varsel(4) '12' into ls_varsel-low.

APPEND ls_varsel TO lto_charsel.

Выдается ошибка что без SEQNO работать не будет. Что такое SEQNO и как он функционирует ума не приложу. В ФМ API_SEMBPS_VARIABLE_SET есть но логику не вижу :(

Если у кого завалался рабочий пример, запосте плиз.


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

Зарегистрирован:
Вт, авг 17 2004, 09:59
Сообщения: 1097
Откуда: Moscow
Пол: Мужской
не поленись и посмотри ФМ UPF_VARIABLE_USER_EXIT в группе функци UPFX

И вообще рекомендую поковырять все ФМ в этой группе - там есть примеры практически для любого случая.

_________________
In SAP we trust !


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

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
На service.sap.com\bi есть специальный хау-ту для переменных типа экзит. Там подробно разобраны несколько примерчиков.

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 05 2006, 07:22 
Начинающий
Начинающий

Зарегистрирован:
Ср, дек 08 2004, 10:21
Сообщения: 19
Смотри личку


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 05 2006, 09:23 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
HIman написал(а):
Выдается ошибка что без SEQNO работать не будет. Что такое SEQNO и как он функционирует ума не приложу. В ФМ API_SEMBPS_VARIABLE_SET есть но логику не вижу :(

SEQNO - текущий номер условия выбора переменной (см. область планирования), нужно установить его хотябы в '0001'.
К сожалению, ФМ API_SEMBPS_VARIABLE_SET мне не помог, пишу прямо в табличку UPC_VAR_CHA_SEL.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 05 2006, 10:32 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Всем спасибо, за помощь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 05 2006, 11:29 
Гость
<Yuri> написал(а):
К сожалению, ФМ API_SEMBPS_VARIABLE_SET мне не помог, пишу прямо в табличку UPC_VAR_CHA_SEL.


А после API_SEMBPS_VARIABLE_SET запускали ФМ API_SEMBPS_POST?
ФМ API_SEMBPS_VARIABLE_SET вроде бы записывает значение в буфер...


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 05 2006, 11:48 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
API_SEMBPS_POST пробовал вызывать, не помогает.
Мало того, если в UPC_VAR_CHA_SEL нет записей для данной переменной, то при вызове API_SEMBPS_VARIABLE_SET, выдается сообщение типа 'E':
"Значение переменной БЕ ( COMPCODE ) определить не удалось".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 13 2006, 16:54 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
Code:
FUNCTION Z_MES_BEGIN.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(I_AREA) TYPE  UPC_Y_AREA
*"     VALUE(I_VARIABLE) TYPE  UPC_Y_VARIABLE
*"     VALUE(I_CHANM) TYPE  UPC_Y_CHANM
*"     VALUE(ITO_CHANM) TYPE  UPC_YTO_CHA
*"  EXPORTING
*"     REFERENCE(ETO_CHARSEL) TYPE  UPC_YTO_CHARSEL
*"----------------------------------------------------------------------
CONSTANTS:
  l_source_var TYPE upc_y_variable VALUE 'ZMESPER',
* l_source_area TYPE upc_y_area VALUE 'ZTEST',
  l_use_restricted_values TYPE boole-boole VALUE 'X',
  l_buffer_call TYPE boole-boole VALUE ' '.

DATA:
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_yto_charsel,
lto_chanm TYPE upc_yto_cha.

* read source value
CALL FUNCTION 'Z_VARIABLE_GET_DETAIL'
EXPORTING
i_area = i_area
i_variable = l_source_var
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: ls_varsel TYPE upc_ys_charsel,
l_month(6) TYPE n,
l_entries TYPE i.

* We have a single value for the year and only one characteristic
* => our value is stored in the first line
IF l_use_restricted_values IS INITIAL.
lto_var = lto_varsel_all.
ELSE.
lto_var = lto_varsel.
ENDIF.

READ TABLE lto_var INTO ls_varsel 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_var LINES l_entries.
IF l_entries <> 1.
*MESSAGE i534(upc) WITH l_source_var.
* Variable &1 must be restricted to a value
EXIT.
ENDIF.

l_month = ls_varsel-low.

l_month+4(2) = '01'.

ls_varsel-low = l_month.
APPEND ls_varsel TO eto_charsel.

ENDFUNCTION.


Code:
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.


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

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


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

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


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

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