Текущее время: Пт, июл 18 2025, 16:47

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


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

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


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

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