Use this FM below to read Characteristics.
Note :
if you want to get the characteristics from MSC1N / MSC2N, just fill objecttable with 'MCH1' otherwise fill with 'MARA' for Material Master
You can fill v_object manually with :
v_object(18) -> Material Code
v_object+18 -> Batch ( if read from MSC1N / MSC2N )
or use this FM
call function 'BAPI_OBJCL_CONCATENATEKEY'
exporting
objecttable = v_objecttable
importing
objectkey_conc = v_objectkey
tables
objectkeytable = t_objectkey
return = t_ret.
call function 'CLAF_CLASSIFICATION_OF_OBJECTS'
exporting
class = v_classnum
classtype = '023'
object = v_object
objecttable = 'MCH1'
initial_charact = ''
tables
t_class = t_class
t_objectdata = t_objectdata
exceptions
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
others = 4.
if sy-subrc <> 0.
endif.
Use this FM below to Get Characteristic Name and Type
call function 'BAPI_CLASS_GET_CHARACTERISTICS'
exporting
classnum = v_classnum
classtype = v_classtype
importing
return = v_ret1
tables
characteristics = t_charact
char_values = t_charval.
Use this FM below to convert Characteristics Name to Number
call function 'CONVERSION_EXIT_ATINN_INPUT'
exporting
input = t_charact-name_char
importing
output = v_atinn.
Use this FM below to read Characteristics from Variant Configuration
Note :
You can fill v_instance with VBAP-CUOBJ
call function 'VC_I_GET_CONFIGURATION'
exporting
instance = v_instance
iv_no_dialog = 'X'
tables
configuration = t_config
exceptions
instance_not_found = 1
internal_error = 2
no_class_allocation = 3
instance_not_valid = 4
others = 5.
if sy-subrc <> 0.
endif.
Use this FM below to save characteristics value
clear t_alloc_char1.
t_alloc_char1-charact = t_charact-name_char.
t_alloc_char1-charact_descr = t_charact-descr_char.
t_alloc_char1-value_char = t_objectdata-ausp1.
append t_alloc_char1.
clear t_alloc_num1.
t_alloc_num1-charact = t_charact-name_char.
t_alloc_num1-unit_from = t_charact-unit.
t_alloc_num1-unit_from_iso = t_charact-base_uom_iso.
t_alloc_num1-value_relation = 1.
t_alloc_num1-charact_descr = t_charact-descr_char.
t_alloc_num1-value_from = t_objectdata-atflv.
append t_alloc_num1.
Note :
if cabn-atson = 'X'. "Additional Values is ticked
if cabn-atein eq ''. "Multiple Values is ticked.
split <fs> at ',' into table t_value.
loop at t_value.
t_alloc_char1-value_char = t_value-atwrt.
append t_alloc_char1.
endloop.
if v_subrc = 4.
exit.
endif.
elseif cabn-atein = 'X'. "Single Values is ticked
clear t_value-atwrt.
t_value-atwrt = <fs>.
t_alloc_char1-value_char = t_value-atwrt.
append t_alloc_char1.
endif.
else.
if cabn-atein eq ''. "Multiple Values is ticked.
split <fs> at ',' into table t_value.
loop at t_value.
if t_cawn[] is not initial.
clear t_cawn.
read table t_cawn with key atwrt = t_value-atwrt.
if sy-subrc ne 0.
concatenate 'Value not Allowed'
t_charact-name_char
t_charact-descr_char
into t_itab-remark separated by space.
t_itab-status = v_ret-type.
v_subrc = 4.
exit.
else.
t_alloc_char1-value_char = t_value-atwrt.
append t_alloc_char1.
endif.
else.
t_alloc_char1-value_char = t_value-atwrt.
append t_alloc_char1.
endif.
endloop.
if v_subrc = 4.
exit.
endif.
elseif cabn-atein = 'X'. "Single Values is ticked
clear t_value-atwrt.
t_value-atwrt = <fs>.
if t_cawn[] is not initial.
clear t_cawn.
read table t_cawn with key atwrt = t_value-atwrt.
if sy-subrc ne 0.
concatenate 'Value not Allowed'
t_charact-name_char
t_charact-descr_char
into t_itab-remark separated by space.
t_itab-status = v_ret-type.
v_subrc = 4.
exit.
else.
t_alloc_char1-value_char = t_value-atwrt.
append t_alloc_char1.
endif.
else.
t_alloc_char1-value_char = t_value-atwrt.
append t_alloc_char1.
endif.
endif.
endif.
refresh t_alloc.
clear t_alloc.
t_alloc-class_type = v_classtype.
t_alloc-objectkey = v_objectkey.
t_alloc-classnum = v_classnum.
t_alloc-objecttable = v_objecttable.
append t_alloc.
call function 'BAPI_BATCH_SAVE_REPLICA'
exporting
material = v_matnr
batch = v_batch
plant = v_werks
* batchattributes = v_batch_attrib
* batchattributesx = v_batch_attribx
* BATCHSTATUS =
* BATCHSTATUSX =
* BATCHCONTROLFIELDS =
* BATCHSTORAGELOCATION =
* INTERNALNUMBERCOM =
* EXTENSION1 =
* MATERIAL_EVG =
tables
return = t_ret
classallocations = t_alloc
classvaluationschar = t_alloc_char1
classvaluationscurr = t_alloc_curr1
classvaluationsnum = t_alloc_num1.
No comments:
Post a Comment