Использую BAPI_OBJCL_CHANGE для изменения признаков классов технических мест, бапишка возвращает :
E |C4 |023 | не допускает отклоняющейся единицы измерения.
можете подсказать в чем может быть проблема?
Code:
*> Записи таблицы грида
Clear: it_all_msg[].
Loop at <dyn_table> into <dyn_wa>.
Clear: ALLOCVALUESNUM
, ALLOCVALUESCHAR
, ALLOCVALUESCURR.
ASSIGN COMPONENT 'TPLNR' of structure <dyn_wa> to <FS1>.
OBJECTKEY = <FS1>.
Clear it_return[].
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
OBJECTKEY = OBJECTKEY
OBJECTTABLE = OBJECTTABLE
CLASSNUM = CLASSNUM
CLASSTYPE = CLASSTYPE
* KEYDATE = SY-DATUM
* UNVALUATED_CHARS = ' '
* LANGUAGE = SY-LANGU
* IMPORTING
* STATUS =
* STANDARDCLASS =
TABLES
ALLOCVALUESNUM = ALLOCVALUESNUM
ALLOCVALUESCHAR = ALLOCVALUESCHAR
ALLOCVALUESCURR = ALLOCVALUESCURR
RETURN = it_RETURN
.
LOOP AT descr_ref->components ASSIGNING <comp_wa>.
*> Не сохраняются в классах.
If <comp_wa>-name eq 'TPLNR'
or <comp_wa>-name eq 'PLTXT'
or <comp_wa>-name eq 'ZZLITERA'.
CONTINUE.
ENDIF.
*<
DATA : ATFOR type ATFOR
,ANZST type ANZST
,ANZDZ type ANZDZ
,MSEHI type MSEHI.
Clear: ATFOR, ANZST, ANZDZ.
ASSIGN COMPONENT <comp_wa>-name of structure <dyn_wa> to <FS1>.
Condense <FS1>.
Select single a~ATFOR "as DATATYPE " тип данных
a~ANZST "as DD_outLEN " колво знаков
a~ANZDZ "as DECIMALS_O " колво дес знаков
a~MSEHI
into (ATFOR
,ANZST
,ANZDZ
,MSEHI)
from CABN as A
Where ATNAM eq <comp_wa>-name.
Case ATFOR. "<comp_wa>-type_kind.
When 'CHAR' OR 'DATE'.
Read Table ALLOCVALUESCHAR into l_ALLOCVALUESCHAR with key CHARACT = <comp_wa>-name.
index = sy-tabix.
If sy-subrc = 0.
If <fs1> is not initial.
l_ALLOCVALUESCHAR-VALUE_NEUTRAL = <fs1>.
modify ALLOCVALUESCHAR[] from l_ALLOCVALUESCHAR index index.
else.
delete ALLOCVALUESCHAR[] index index.
endif.
Else.
If <fs1> is not initial.
l_ALLOCVALUESCHAR-CHARACT = <comp_wa>-name.
l_ALLOCVALUESCHAR-VALUE_NEUTRAL = <fs1>.
l_ALLOCVALUESCHAR-VALUE_CHAR = <fs1>.
APPEND l_ALLOCVALUESCHAR TO ALLOCVALUESCHAR.
EndIf.
EndIf.
When Others.
Read Table ALLOCVALUESNUM into l_ALLOCVALUESNUM with key CHARACT = <comp_wa>-name.
index = sy-tabix.
If sy-subrc = 0.
If <fs1> is not initial.
TRANSLATE <fs1> USING ',.'.
* conver_num = <FS1>.
l_ALLOCVALUESNUM-VALUE_RELATION = 1.
* l_ALLOCVALUESNUM-UNIT_FROM = MSEHI.
* l_ALLOCVALUESNUM-UNIT_TO = MSEHI.
CONDENSE <FS1>.
Compute l_ALLOCVALUESNUM-VALUE_FROM = <FS1>. "conver_num.
* Compute l_ALLOCVALUESNUM-VALUE_TO = <FS1>. "conver_num.
modify ALLOCVALUESNUM[] from l_ALLOCVALUESNUM index index.
Else.
delete ALLOCVALUESNUM[] index index.
EndIf.
Else.
If <fs1> is not initial.
TRANSLATE <fs1> USING ',.'.
* conver_num = <FS1>.
l_ALLOCVALUESNUM-CHARACT = <comp_wa>-name.
l_ALLOCVALUESNUM-VALUE_RELATION = 1.
* l_ALLOCVALUESNUM-UNIT_FROM = MSEHI.
* l_ALLOCVALUESNUM-UNIT_TO = MSEHI.
Condense <FS1> .
Compute l_ALLOCVALUESNUM-VALUE_FROM = <FS1>. "conver_num.
* Compute l_ALLOCVALUESNUM-VALUE_TO = <FS1>. "conver_num.
APPEND l_ALLOCVALUESNUM TO ALLOCVALUESNUM.
EndIf.
EndIf.
Endcase.
ENDLOOP.
CALL FUNCTION 'BAPI_OBJCL_CHANGE'
EXPORTING
OBJECTKEY = OBJECTKEY
OBJECTTABLE = OBJECTTABLE
CLASSNUM = CLASSNUM
CLASSTYPE = CLASSTYPE
* STATUS = '1'
* STANDARDCLASS =
* CHANGENUMBER =
* KEYDATE = SY-DATUM
* NO_DEFAULT_VALUES = ' '
* IMPORTING
* CLASSIF_STATUS =
TABLES
ALLOCVALUESNUMNEW = ALLOCVALUESNUM
ALLOCVALUESCHARNEW = ALLOCVALUESCHAR
ALLOCVALUESCURRNEW = ALLOCVALUESCURR
RETURN = it_return
.
Нырял в отладку, но наскоком выяснить не получилось (
Терпения не хватило.