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

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


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

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


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

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