Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Create/Update classification data for the existing Material

Former Member
0 Kudos

Hello Friends,

Can any one worked on the below requirement.

how to Create/Update the Classification after creating a material?

BAPI_MATERIAL_SAVEDATA is used to create a material but cannot Create/Update the classification data.

I have looked into the following BAPIs.

BAPI_CHARACT_CREATE or BAPI_CHARACT_CHANGE. But these are not giving the desired result.

It would be of great help.

Thanks, Prakash.

2 REPLIES 2

ferry_lianto
Active Contributor
0 Kudos

Hi,

Please try BAPI BAPI_OBJCL_CHANGE.

The object key should be material number and object table should be MARA.

Regards,

Ferry Lianto

Former Member
0 Kudos

Hi

see the sample code for the same and do accordingly

DATA : gf_objkey TYPE bapi1003_key-object,

gf_classnum TYPE bapi1003_key-classnum,

lw_return TYPE bapiret2,

gt_return TYPE STANDARD TABLE OF bapiret2,

gf_classtype TYPE bapi1003_key-classtype,

gt_charval TYPE STANDARD TABLE OF bapi1003_alloc_values_char,

lw_charval TYPE bapi1003_alloc_values_char,

gt_numval TYPE STANDARD TABLE OF bapi1003_alloc_values_num,

lw_numval TYPE bapi1003_alloc_values_num,

gt_currval TYPE STANDARD TABLE OF bapi1003_alloc_values_curr,

lw_z1edkclsf TYPE z1edkclsf,

lw_chardetail TYPE bapicharactdetail,

gf_date_source TYPE i,

gf_error TYPE c,

gf_matnr TYPE matnr, "#EC NEEDED

gf_error_in_logging TYPE c.

CLEAR: gf_objkey.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = if_matnr

IMPORTING

output = gf_matnr.

gf_objkey = gf_matnr.

  • Unlock the Object

CALL METHOD unlock_object

EXPORTING

if_matnr = if_matnr.

LOOP AT mt_z1edkclsf INTO lw_z1edkclsf.

CLEAR gt_return[].

  • Class type

gf_classtype = lw_z1edkclsf-klart.

  • Class

gf_classnum = lw_z1edkclsf-class.

lw_charval-charact = lw_z1edkclsf-atnam.

lw_charval-value_char = lw_z1edkclsf-atwrt.

  • Get the Data type of Characteristic

CALL FUNCTION 'BAPI_CHARACT_GETDETAIL'

EXPORTING

charactname = lw_charval-charact

IMPORTING

charactdetail = lw_chardetail

TABLES

return = gt_return.

CLEAR : gf_date_source.

READ TABLE gt_return TRANSPORTING NO FIELDS WITH KEY type = co_msgty_error.

CHECK sy-subrc NE 0.

  • If the characteristic is Date type then pass the value to NUM structure

IF lw_chardetail-data_type EQ 'DATE'.

gf_date_source = lw_z1edkclsf-atwrt.

lw_numval-value_from = gf_date_source.

lw_numval-charact = lw_z1edkclsf-atnam.

APPEND lw_numval TO gt_numval.

  • If the characteristic is CHAR type then pass the value to char structure

ELSEIF lw_chardetail-data_type EQ 'CHAR'.

MOVE lw_z1edkclsf-atwrt TO lw_charval-value_char.

APPEND lw_charval TO gt_charval.

ENDIF.

AT END OF class.

  • Post the data for all characteristics belonging to the Class

CLEAR gt_return[].

CALL FUNCTION 'BAPI_OBJCL_CHANGE'

EXPORTING

objectkey = gf_objkey

objecttable = 'MARA'

classnum = gf_classnum

classtype = gf_classtype

TABLES

allocvaluesnumnew = gt_numval

allocvaluescharnew = gt_charval

allocvaluescurrnew = gt_currval

return = gt_return.

CLEAR: gt_charval[],

gt_numval[],

gt_currval[].

APPEND LINES OF gt_return TO et_messages.

READ TABLE gt_return TRANSPORTING NO FIELDS WITH KEY type = co_msgty_error.

IF sy-subrc EQ 0.

gf_error = co_x.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = co_x.

ENDIF.

Regards

Anji