Öncelikle malzeme kodu ile parti kodunu birleştirerek INOB tablosuna gidiyoruz (INOB-OBJECT)
Bu tablodan gelecek olan CUOBJ değeri ile AUSP-OBJEK ‘i eşleştirdiğimizde, karakteristik değerlerini bulabiliriz.
Eğer aynı işi fonksiyonlarla yapmak istersek, aşağıdaki fonksiyonları bu sırayla çağırabiliriz:
- qmsp_material_batch_class_read
- bapi_objcl_getdetail
Örnek bir kod şöyle olabilir:
* Karakteristik kodlarını okuyalım
CALL FUNCTION ‘QMSP_MATERIAL_BATCH_CLASS_READ’
EXPORTING
i_matnr = gv_matnr
i_charg = gv_charg
i_werks = gv_werks
i_mara_level = ‘X’
i_no_dialog = ‘X’
IMPORTING
e_class = gv_class
e_klart = gv_klart
e_obtab = gv_obtab
e_objec = gv_objec
EXCEPTIONS
no_class = 1
internal_error_classif = 2
no_change_service = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING batch_class_not_read.
ENDIF.
* Karakteristik detaylarını okuyalım
CALL FUNCTION ‘BAPI_OBJCL_GETDETAIL’
EXPORTING
objectkey = gv_objec
objecttable = gv_obtab
classnum = gv_class
classtype = gv_klart
* KEYDATE = SY-DATUM
* UNVALUATED_CHARS = ‘ ‘
* LANGUAGE = SY-LANGU
* IMPORTING
* STATUS =
* STANDARDCLASS =
TABLES
allocvaluesnum = gt_valnum
allocvalueschar = gt_valchar
allocvaluescurr = gt_valcurr
return = e_return.
READ TABLE e_return INTO lf_return WITH KEY type = ‘E’.
IF sy-subrc EQ 0.
MESSAGE e015(zispet) RAISING bapi_read_error.
ENDIF.
* Karakteristik değerini okuyalım
READ TABLE gt_valnum INTO lf_valnum
WITH KEY charact = gv_rfkar.
IF sy-subrc NE 0.
MESSAGE e013(zispet)
WITH gv_matnr gv_charg
RAISING characteristic_not_defined.
ENDIF.
IF lf_valnum-value_from IS INITIAL.
MESSAGE e014(zispet)
WITH gv_matnr gv_charg
RAISING characteristic_value_not_found.
ENDIF.
gv_oadre = lf_valnum-value_from.
Karakteristikler üzerinde değişiklik yapmak için ise, bapi_objcl_change kullanılabilir. Örnek bir kod şöyle olabilir:
* Veri aktarımı
gv_nadre = i_nadre.
READ TABLE gt_valnum INTO lf_valnum WITH KEY charact = gv_rfkar.
lf_valnum-value_from = gv_nadre.
MODIFY gt_valnum FROM lf_valnum INDEX sy-tabix.
* BAPI’yi çağıralım
CALL FUNCTION ‘BAPI_OBJCL_CHANGE’
EXPORTING
objectkey = gv_objec
objecttable = gv_obtab
classnum = gv_class
classtype = gv_klart
* STATUS = ‘1’
* STANDARDCLASS =
* CHANGENUMBER =
* KEYDATE = SY-DATUM
* NO_DEFAULT_VALUES = ‘ ‘
* IMPORTING
* CLASSIF_STATUS =
TABLES
allocvaluesnumnew = gt_valnum
allocvaluescharnew = gt_valchar
allocvaluescurrnew = gt_valcurr
return = e_return.
* Hata?
READ TABLE e_return INTO lf_return WITH KEY type = ‘E’.
IF sy-subrc EQ 0.
MESSAGE e016(zispet) RAISING bapi_error.
ENDIF.
* Kesin kayıt
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
Leave a Reply