Application Development and Automation 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: 
Read only

Alternate BOM error using 'BAPI_BOM_UPLOAD_SAVE'

Former Member
0 Likes
2,460

Hi,

Im trying to upload BOM from Excel sheet using 'BAPI_BOM_UPLOAD_SAVE' ..

Im having 3 alternate BOM's for one material but after the creation of 1st alternate,

wen its trying to go for the 2nd alternate and so on , its says "BOM FOR MATERIAL ALREADY EXISTS!"

PLEASE HELP!

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,090

Hi , thanks every one ..My issue is resolved...The BAPI did'nt work out for me.

I used the FM "CAD_CREATE_BOM_WITH_SUB_ITEMS"...Served my purpose.

12 REPLIES 12
Read only

laurent_fournier2
Contributor
0 Likes
2,090

Hi ,

Can you please paste some code in order to be able to give you some hints ?

Read only

0 Likes
2,090

form UP_BOM  using    Fp_i_field TYPE TY_T_FIELD.

   DATA : LW_FIELD TYPE TY_FIELD,

          LW_FIELD2 TYPE TY_FIELD,

          LW_MAST TYPE BAPIBOMMST,

          LW_STZU TYPE BAPIBOMSTZ,

          I_MAST TYPE STANDARD TABLE OF BAPIBOMMST,

          I_STZU TYPE STANDARD TABLE OF BAPIBOMSTZ,

          INDEX TYPE SY-INDEX,

          LW_STKO TYPE BAPIBOMSTK,

          I_STKO TYPE STANDARD TABLE OF BAPIBOMSTK,

          LW_STPO TYPE BAPIBOMSTP,

          LW_STAS TYPE BAPIBOMSTA,

          I_STPO TYPE STANDARD TABLE OF BAPIBOMSTP,

          I_STAS TYPE STANDARD TABLE OF BAPIBOMSTA,

          bapi_return TYPE bapiret2,

          LW_ERTAB TYPE TY_ERTAB,

          I_ERTAB TYPE TY_T_ERTAB.

   IF FP_I_FIELD IS NOT INITIAL.

.

     LOOP AT  FP_I_FIELD INTO LW_FIELD .

         TRANSLATE LW_FIELD-COLID TO UPPER CASE.

* IF ITS A HEADER DATA THEN FILL THE STRUCTURE AND ONE ROW OF THE INTERNAL TABLE I_STKO I.E PASSED TO THE BAPI.

      IF LW_FIELD-COLID = 'HEADER'.

        CLEAR LW_MAST.

        REFRESH I_STKO.

        LW_MAST-MATERIAL = LW_FIELD-MATNR.

        LW_MAST-PLANT    = LW_FIELD-WERKS.

        LW_MAST-BOM_USAGE = LW_FIELD-STLAN.

        LW_MAST-ALT_BOM  = LW_FIELD-STLAL.

        LW_STAS-ALT_BOM = LW_FIELD-STLAL.

        LW_STZU-BOM_USAGE = LW_FIELD-STLAN.

        LW_STZU-ALTERNAT = 'X'.

        LW_STKO-ALT_BOM = LW_FIELD-STLAL.

        LW_STKO-UNBASE = LW_FIELD-BMEIN.

        LW_STKO-BASE_QTY = LW_FIELD-BMENG.

        APPEND LW_STKO TO I_STKO.

        APPEND LW_STAS TO I_STAS.

*  IF ITS AN ITEM OF THE BOM THEN APPEND THE DATA TO THE INTERNAL TABLE CONTAINING ITEMS..

                     ELSEIF LW_FIELD-COLID = 'DETAIL'.

                     LW_STPO-BOM_ITM_NO = LW_FIELD-POSNR.

                     LW_STPO-COMPONENT = LW_FIELD-IDNRK.

                     LW_STPO-ITEM_CAT = LW_FIELD-POSTP.

                     LW_STPO-UNCOMP =  LW_FIELD-MEINS.

                     LW_STPO-COMPON_QTY = LW_FIELD-MENGE.

                     LW_STPO-ITEM_TEXT1 = LW_FIELD-POTX1.

                     LW_STPO-ITEM_TEXT2 = LW_FIELD-POTX2.

                     LW_STPO-CO_PRODUCT = LW_FIELD-KZKUP.

                         LW_ERTAB-IDNRK = LW_FIELD-IDNRK.

                     APPEND LW_STPO TO I_STPO.

*  HERE 'N' DENOTES THAT BOM FOR ONE MATERIAL HAS ENDED AND THE BAPI SHOULD BE CALLED WITH THE DATA IN THE STRUCTURES AND INTERNAL TABLES.

                  ELSEIF LW_FIELD-COLID = 'N'.

                    CALL FUNCTION 'BAPI_BOM_UPLOAD_SAVE'

                      EXPORTING

                        is_mast         = LW_MAST

                        is_stzu         = LW_STZU

                     IMPORTING

                       ES_RETURN       = BAPI_RETURN

                      tables

                        it_stko         = I_STKO

                        it_stpo         = I_STPO

                        it_stas         = I_STAS

                              .

                         LW_ERTAB-DESC = BAPI_RETURN-MESSAGE.

                         APPEND LW_ERTAB TO I_ERTAB.

                        CLEAR LW_STPO.

                        REFRESH I_STPO.

                    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

*                    EXPORTING

*                      WAIT          = 'X'

**                    IMPORTING

**                      RETURN        =

*                             .

                   WAIT UP TO 1 SECONDS.

ENDIF.

     ENDLOOP.

     ENDIF.

endform. 

*  ON DEBUGGING I FIND THE MESSAGE IN THE BAPI- RETURNMESSAGE THAT 'BOM FOR MATERIAL ALREADY EXISTS..'

EACH TIME I DELETE THE BOM ALREADY CREATED BEFORE I RUN THE PROGRAM.

Read only

0 Likes
2,090

Hi Again,

I believe that you must call the bapi each time that you want to create a new alternative.

So, first of all, add a clear/ refresh statement for I_stko & i_stpo & i_stas.

The logic should be like this :

1 alternative

add items

call bapi

2 alternative

add items

call bapi

And not

1 alternative

2 alternative

add items

add items

call bapi.

Try clearing tables

I_STKO[]

I_STPO[]

I_STAS[]

and retry.

Read only

0 Likes
2,090

Thanks Laurent,

But im using the same logic

Alternative

add items

call bapi..

and i've also tried refreshing the i_stko i_stpo i_stas, but still im having the same issue.

Read only

0 Likes
2,090

Can you please try something else ?

Try removing 'X' indicator in field LW_STZU-ALTERNAT.

So first time indicator is space.

first alternative indicator = 'X'.

second alternatice indicator = 'X'.

etc.

And reply.

Read only

0 Likes
2,090

I've tried implementing this logic, made the

first time indicator  space.

first alternative indicator = 'X'.

second alternatice indicator = 'X'.

But still the same consequence.

Read only

Former Member
0 Likes
2,090

ONLY THE FIRST ALTERNATIVE IS BEING CREATED BUT NOT OTHERS ..

Read only

0 Likes
2,090

Can you please also post the internal tables contents in each call ?

i_stpo,i_stko,i_stas and structures LW_MAST & LW_STZU .

Read only

0 Likes
2,090

hi,

FOR THE 1ST MATERIAL

LW_MAST CONTAINS :

MATERIAL                                  MATERIAL-FINISHED
PLANT                                  ZMAD
BOM_USAGE                                  1
NBR_ST                                  
ALT_BOM                                  1

LW_STZU :

OPERATION                                  
BOM_CATEGO                                  
NBR_ST                                  
BOM_USAGE                                  1
BOM_GROUP                                  
ALTERNAT                                  
VARIANTS                                  
CONF_BOM                                  

I_STPO HAS:

MATERIAL-SFINISHED
L10
KGS
10.000
MATERIAL-MADHU
L20
KGS
1.000

I_STKO :

10000000000000000



0000000000000000
00000000
KGS
1.000

I_STAS :

1000000000000000000000000


00000000

FOR THE SECOND ALTERNATIVE.

LW_MAST :

MATERIAL                                  MATERIAL-FINISHED
PLANT                                  ZMAD
BOM_USAGE                                  1
NBR_ST                                  
ALT_BOM                                  2

LW_STZU :

BOM_USAGE                                  1
BOM_GROUP                                  
ALTERNAT                                  X

I_STKO:

20000000000000000

I_STPO :

MATERIAL-SFINISHE1
L10
KGS
10.000
MATERIAL-MADHU
L20
KGS
1.000

I_STAS :

2000000000000000000000000
Read only

0 Likes
2,090

Bapi calls user exits.

Call : OPEN_FI_PERFORM_CSUL_010_P.

Can you please check that the error is not triggered there ?

Read only

0 Likes
2,090

Also, try removing the alternative bom number from tha first call ( LW_MAST ).

Read only

Former Member
0 Likes
2,091

Hi , thanks every one ..My issue is resolved...The BAPI did'nt work out for me.

I used the FM "CAD_CREATE_BOM_WITH_SUB_ITEMS"...Served my purpose.