суббота, 31 июля 2010 г.

BAPI GET CLASS CHARACTERISTICS

DATA: lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2,
ld_objectname LIKE bapi1003_key-object,
ld_clobjkeyout TYPE bapi1003_key-object_guid,
lt_alloclist TYPE TABLE OF bapi1003_alloc_list,
ls_alloclist LIKE LINE OF lt_alloclist,
lt_allocvalnum TYPE TABLE OF bapi1003_alloc_values_num,
ls_allocvalnum TYPE bapi1003_alloc_values_num,
lt_allocvalchar TYPE TABLE OF bapi1003_alloc_values_char,
ls_allocvalchar TYPE bapi1003_alloc_values_char,
lt_allocvalcurr TYPE TABLE OF bapi1003_alloc_values_curr,
ls_allocvalcurr TYPE bapi1003_alloc_values_curr.


BREAK-POINT.
"Получаем класс для тех. места
REFRESH lt_return.
CLEAR: ld_objectname, ld_clobjkeyout.
ld_objectname = '000000010000002102'.
CALL FUNCTION 'BAPI_OBJCL_GET_KEY_OF_OBJECT'
EXPORTING
objectname = ld_objectname
objecttable = 'EQUI'
classtype = 'Z02'
IMPORTING
clobjectkeyout = ld_clobjkeyout
TABLES
return = lt_return.

IF ld_clobjkeyout IS NOT INITIAL.
"Есть класс. Получаем его внутренний код
REFRESH: lt_return, lt_alloclist.
CALL FUNCTION 'BAPI_OBJCL_GETCLASSES_KEY'
EXPORTING
clobjectkeyin = ld_clobjkeyout
TABLES
alloclist = lt_alloclist
return = lt_return.

IF LINES( lt_alloclist ) > 0.
CLEAR ls_alloclist.
READ TABLE lt_alloclist INTO ls_alloclist INDEX 1.

"Получаем список характеристик для класса и тех. места
REFRESH: lt_allocvalnum, lt_allocvalchar, lt_allocvalcurr, lt_return.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = ld_objectname
objecttable = 'EQUI'
classnum = ls_alloclist-classnum
classtype = 'Z02'
TABLES
allocvaluesnum = lt_allocvalnum
allocvalueschar = lt_allocvalchar
allocvaluescurr = lt_allocvalcurr
return = lt_return.
BREAK-POINT.

ENDIF.
ENDIF.

Комментариев нет: