Текущее время: Сб, июл 19 2025, 02:49

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Изменить значение признака в классе - BAPI_CLASS_CHANGE
СообщениеДобавлено: Вт, июн 26 2007, 14:01 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, окт 06 2005, 09:02
Сообщения: 64
Пол: Мужской
требуется изменить значение признака в классе
l_class = 'A'.
l_classtype = '001'.


считываю данные с класса

CALL FUNCTION 'BAPI_CLASS_GETDETAIL'
EXPORTING
classtype = l_classtype
classnum = l_class
IMPORTING
classbasicdata = classbasicdata
classdocument = classdocument
return = l_return
TABLES
classdescriptions = classdescriptions
classlongtexts = classlongtexts
classcharacteristics = CLASSCHARACTERISTICS
CLASSCHARVALUES = classcharvalues.

теперь пытаюсь изменить данные



CHARACTVALUEOVERWRIT[] = classcharvalues[].
read table CHARACTVALUEOVERWRIT index 1.
CHARACTVALUEOVERWRIT-CHAR_VALUE = '22'.

modify CHARACTVALUEOVERWRIT index 1.


CALL FUNCTION 'BAPI_CLASS_CHANGE'
EXPORTING
classnum = l_class
classtype = l_classtype

classbasicdata = classbasicdata
classbasicdatanew = classbasicdata

tables
return = return
classdescriptions = classdescriptions
classdescriptionsnew = classdescriptions
CHARACTVALUEOVERWRIT = CHARACTVALUEOVERWRIT

return - возвращает "Класс 001 A изменяется "
после вызова ставлю

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = P_RETURN.
commit work and wait.

потом захожу в cl02 - там все без изменений

Как сделать правильно, что изменялось значение признака?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменить значение признака в классе - BAPI_CLASS_CHANGE
СообщениеДобавлено: Пт, янв 10 2014, 11:03 
Начинающий
Начинающий

Зарегистрирован:
Ср, авг 08 2012, 15:09
Сообщения: 7
Та же фигня, пытаюсь изменить допустимые значения признака на уровне класса с помощью ФМ BAPI_CLASS_CHANGE, всё отрабатывает без ошибок (в том числе и COMMIT), а изменений никаких не происходит. Более того, трассировка показывает, что база данных даже не обращается с операциями записи к таблице CAWN, где и хранятся допустимые значения признака на уровне класса. Таблицу charactvalueoverwritnew как только не заполнял - и все поля сразу, и только лишь некоторые, ничего не помогает. Документацию к ФМ тоже читал - там вроде бы всё прозрачно и понятно, но вот беда - нифига не работает. Может быть, в данном BAPI где-нибудь в глубине кода вообще отключены эти операции? Так не хочется ковыряться в стандарте...

Никто не сталкивался с подобной проблемой?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменить значение признака в классе - BAPI_CLASS_CHANGE
СообщениеДобавлено: Пт, янв 10 2014, 11:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
nigelion написал(а):
Так не хочется ковыряться в стандарте...

Не ленитесь. :!:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменить значение признака в классе - BAPI_CLASS_CHANGE
СообщениеДобавлено: Пт, янв 10 2014, 11:43 
Начинающий
Начинающий

Зарегистрирован:
Ср, авг 08 2012, 15:09
Сообщения: 7
В общем в sap marketplace среди нот нашёл следующий код, который корректно отработал и добавил новое допустимое значение признака на уровне класса. Выкладываю сюда, кому будет нужно разберётся:

REPORT z_demo_bapi_class_change.

PARAMETER:
classnum LIKE bapi_class_key-classnum,
classtyp LIKE bapi_class_key-classtype.

DATA:
*Getdetail
gd_clabasic LIKE bapi1003_basic,
gd_cladoc LIKE bapi1003_docu,
gd_claadd LIKE bapi1003_add,
gd_clastand LIKE bapi1003_stand,

gd_cladescr LIKE TABLE OF bapi1003_catch_r,
gd_clalongtexts LIKE TABLE OF bapi1003_longtext_r,
gd_clacha LIKE TABLE OF bapi1003_charact_r,
gd_clachaval LIKE TABLE OF bapi1003_char_val_r,

*Class change
cc_clabasicnew LIKE bapi1003_basic_new,
cc_cladocnew LIKE bapi1003_docu_new,
cc_claaddnew LIKE bapi1003_add_new,
cc_clastandnew LIKE bapi1003_stand_new,

ls_gd_clacha LIKE LINE OF gd_clacha,
ls_gd_clachaval LIKE LINE OF gd_clachaval,

return LIKE TABLE OF bapiret2,
ls_return LIKE LINE OF return,
cc_cladescr LIKE TABLE OF bapi1003_catch,
cc_clalongtexts LIKE TABLE OF bapi1003_longtext,
cc_clacha LIKE TABLE OF bapi1003_charact,
cc_chaover LIKE TABLE OF bapi1003_charact_overwr,
cc_chavalover LIKE TABLE OF bapi1003_charact_value_ovr,
cc_chavaltextover LIKE TABLE OF bapi1003_charvaltext,
cc_cladescrnew LIKE TABLE OF bapi1003_catch_new,
cc_clalongtextsnew LIKE TABLE OF bapi1003_longtext,
cc_clachanew LIKE TABLE OF bapi1003_charact_new,
cc_chaovernew LIKE TABLE OF bapi1003_charact_overwr_new,
cc_chavalovernew LIKE TABLE OF bapi1003_charact_value_ovr_new,
cc_chavaltextovernew LIKE TABLE OF bapi1003_charvaltext_new,
ls_cc_clacha LIKE LINE OF cc_clacha,
ls_cc_chaover LIKE LINE OF cc_chaover,
ls_cc_chavalover LIKE LINE OF cc_chavalover.

CHECK ( classnum IS NOT INITIAL ).
CHECK ( classtyp IS NOT INITIAL ).

CALL FUNCTION 'BAPI_CLASS_GETDETAIL'
EXPORTING
classtype = classtyp
classnum = classnum
IMPORTING
classbasicdata = gd_clabasic
classdocument = gd_cladoc
classadditional = gd_claadd
classstandard = gd_clastand
TABLES
classdescriptions = gd_cladescr
classlongtexts = gd_clalongtexts
classcharacteristics = gd_clacha
classcharvalues = gd_clachaval.

cc_clabasicnew = gd_clabasic.
cc_cladocnew = gd_cladoc.
cc_claaddnew = gd_claadd.
cc_clastandnew = gd_clastand.
cc_cladescr = gd_cladescr.
cc_clalongtexts = gd_clalongtexts.

LOOP AT gd_clacha INTO ls_gd_clacha.
MOVE-CORRESPONDING ls_gd_clacha TO ls_cc_clacha.
APPEND ls_gd_clacha TO cc_clacha.

MOVE-CORRESPONDING ls_gd_clacha TO ls_cc_chaover.
APPEND ls_cc_chaover TO cc_chaover.
ENDLOOP.

LOOP AT gd_clachaval INTO ls_gd_clachaval.
MOVE-CORRESPONDING ls_gd_clachaval TO ls_cc_chavalover.
APPEND ls_cc_chavalover TO cc_chavalover.
ENDLOOP.

cc_cladescrnew = cc_cladescr.
cc_clalongtextsnew = cc_clalongtexts.
cc_clachanew = cc_clacha.
cc_chaovernew = cc_chaover.
cc_chavalovernew = cc_chavalover.
cc_chavaltextovernew = cc_chavaltextover.

"Set a break-point here, if you want to change data.

CALL FUNCTION 'BAPI_CLASS_CHANGE'
EXPORTING
classnum = classnum
classtype = classtyp
classbasicdata = gd_clabasic
classbasicdatanew = cc_clabasicnew
classdocument = gd_cladoc
classdocumentnew = cc_cladocnew
classadditional = gd_claadd
classadditionalnew = cc_claaddnew
classstandard = gd_clastand
classstandardnew = cc_clastandnew
TABLES
return = return
classdescriptions = cc_cladescr
classlongtexts = cc_clalongtexts
classcharacteristics = cc_clacha
characteristicoverwrite = cc_chaover
charactvalueoverwrit = cc_chavalover
characteristicvaluetextovr = cc_chavaltextover
classdescriptionsnew = cc_cladescrnew
classlongtextsnew = cc_clalongtextsnew
classcharacteristicsnew = cc_clachanew
characteristicoverwritenew = cc_chaovernew
charactvalueoverwritnew = cc_chavalovernew
characteristicvaluetextovrnew = cc_chavaltextovernew.

LOOP AT return INTO ls_return.
MESSAGE ID ls_return-id
TYPE ls_return-type
NUMBER ls_return-number.
ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменить значение признака в классе - BAPI_CLASS_CHANGE
СообщениеДобавлено: Пн, янв 13 2014, 15:20 
Начинающий
Начинающий

Зарегистрирован:
Ср, авг 08 2012, 15:09
Сообщения: 7
Только вот эту строку:

APPEND ls_gd_clacha TO cc_clacha.

нужно заменить на вот эту:

APPEND ls_cc_clacha TO cc_clacha.

Перепутаны рабочие области.


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

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


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

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


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

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