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

Create BOM from model

Former Member
0 Likes
816

Hi expert,

i must create a new boms from model, exist a bapi for creation?

i don't want use SHDB but Bapi.

Hi Francesco.

6 REPLIES 6
Read only

Former Member
0 Likes
760

Actually the user use cs01, i should do report that creates more BOM in background.

i am searching a Bapi for create BOM from model

Read only

Kiran_Valluru
Active Contributor
0 Likes
760

Hi.,

check this BAPI., CSAI_BOM_CREATE

this may help u.,

for Equipment BOM you have to pass WA_STKOB-STLTY = 'E'. check for model.,

thanks & Regards,

Kiran

Read only

0 Likes
760

you have an example?

Read only

0 Likes
760

Hi,

check this:

DATA:
WA_CSIN LIKE  CSIN,
WA_STKOB  LIKE  STKOB,
WA_STZUB  LIKE  STZUB ,
FL_NO_CHANGE_DOC  LIKE  CAPIFLAG-NO_CHG_DOC, "SPACE
FL_COMMIT_AND_WAIT  LIKE  CAPIFLAG-COMM_WAIT, " SPACE
FL_NO_COMMIT_WORK LIKE  CSDATA-XFELD,"  SPACE
FL_ALE  LIKE  CSDATA-XFELD, " SPACE
FL_DEFAULT_VALUES LIKE  CSDATA-XFELD. "   'X'

DATA: G_FLWARNING LIKE  CAPIFLAG-FLWARNING,
G_WARN_STLNR  LIKE  STZUB-STLNR,
TAB_STPOB TYPE STANDARD TABLE OF  STPOB,
WA_STPOB  LIKE  STPOB,
LS_MESSAGE TYPE BAPIRET2,
IT_RET LIKE LS_MESSAGE OCCURS 0 WITH HEADER LINE.

DATA: ITM_NO(4) TYPE C,
      CNT TYPE INT2,
      COUNT TYPE STRING.

DATA: MSG_TEXT TYPE STRING,
     LV_MSG TYPE STRING.

DATA: V_FILE      TYPE DBMSGORA-FILENAME,
LV_FNAME    TYPE RLGRAP-FILENAME,
 FNAME       TYPE SDBAH-ACTID,
 EXT   TYPE SDBAD-FUNCT,
EXT1   TYPE SDBAD-FUNCT VALUE 'XLS'.

TYPES : BEGIN OF T_FINAL,
          EQUNR TYPE RC29N-EQUNR,
          WERKS TYPE RC29N-WERKS,
          STLAN TYPE RC29N-STLAN,
          IDNRK TYPE RC29P-IDNRK,
          MENGE(16) TYPE C,
*          MENGE TYPE RC29P-menge,
          POSTP TYPE RC29P-POSTP,
          POTX1 TYPE RC29P-POTX1,
          POTX2 TYPE RC29P-POTX2,
  END OF T_FINAL.

DATA  :IT_FINAL TYPE STANDARD TABLE OF T_FINAL,
      WA_FINAL  TYPE T_FINAL,
      WA_FINAL1 TYPE T_FINAL.

DATA:   CO_X    TYPE I VALUE '1',
        CO_Y    TYPE I VALUE '2',
        CO_Z    TYPE I VALUE '46',
        CO_5000 TYPE I VALUE '50000',
        FLAG TYPE C.

DATA:IT_FILE TYPE STANDARD TABLE OF ALSMEX_TABLINE,
     WA_FILE TYPE ALSMEX_TABLINE.


DATA GV_FILENAME TYPE STRING.


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: PA_EQ TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.



AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_EQ.
  PERFORM F_HELP_EQ.

START-OF-SELECTION.

  PERFORM EXCEL_SHEET_DATA.


SORT IT_FINAL BY EQUNR ASCENDING.

LOOP AT IT_FINAL INTO WA_FINAL.

 WA_FINAL1 = WA_FINAL.

  AT NEW EQUNR.

CLEAR WA_CSIN.
CLEAR: COUNT, ITM_NO, CNT.
* wa_csin-aennr = '009900159470'.
WA_CSIN-DATUV = SY-DATUM.
WA_CSIN-EQUNR = WA_FINAL1-EQUNR.
WA_CSIN-WERKS = WA_FINAL1-WERKS.
WA_CSIN-STLAN = WA_FINAL1-STLAN.  " 4
WA_CSIN-STLTY = 'E'.
*wa_csin-werks = '1000'.

CLEAR WA_STKOB.
WA_STKOB-STLTY = 'E'.

CLEAR WA_STZUB.
WA_STZUB-STLTY = 'E'.

 CNT = 10.

 ENDAT.

 COUNT = CNT.

 IF CNT < 100.

 CONCATENATE '00' COUNT INTO ITM_NO.

 ELSE.

 CONCATENATE '0' COUNT INTO ITM_NO.


 ENDIF.


CLEAR WA_STPOB.
WA_STPOB-STLTY = 'E'.
WA_STPOB-IDNRK = WA_FINAL1-IDNRK.
WA_STPOB-POSTP = 'I'.
WA_STPOB-POSNR = ITM_NO.
WA_STPOB-MENGE = WA_FINAL1-MENGE.
WA_STPOB-POTX1 = WA_FINAL1-POTX1.
WA_STPOB-POTX2 = WA_FINAL1-POTX2.
WA_STPOB-DATUV = SY-DATUM.
APPEND WA_STPOB TO TAB_STPOB.
CLEAR WA_STPOB.


AT END OF EQUNR.

CALL FUNCTION 'CSAI_BOM_CREATE'
  EXPORTING
    ECSIN = WA_CSIN
    ESTKOB = WA_STKOB
    ESTZUB = WA_STZUB
* FL_NO_CHANGE_DOC = ' '
* FL_COMMIT_AND_WAIT = ' '
* FL_NO_COMMIT_WORK = ' '
* FL_ALE = ' '
* fl_default_values = 'X'
  IMPORTING
    FL_WARNING = G_FLWARNING
    ASTLNR = G_WARN_STLNR
  TABLES
    T_STPOB = TAB_STPOB
  EXCEPTIONS
    ERROR = 1
    OTHERS = 2.

CLEAR: WA_STPOB,TAB_STPOB.

IF SY-SUBRC <> 0.

LS_MESSAGE-ID = SY-MSGID.
LS_MESSAGE-TYPE = SY-MSGTY.
LS_MESSAGE-NUMBER = SY-MSGNO.
LS_MESSAGE-MESSAGE_V1 = SY-MSGV1.
LS_MESSAGE-MESSAGE_V2 = SY-MSGV2.
LS_MESSAGE-MESSAGE_V3 = SY-MSGV3.
LS_MESSAGE-MESSAGE_V4 = SY-MSGV4.
APPEND LS_MESSAGE TO IT_RET.
CLEAR LS_MESSAGE.

CALL FUNCTION 'FORMAT_MESSAGE'
 EXPORTING
   ID              = SY-MSGID
   LANG            = 'E'
   NO              = SY-MSGNO
   V1              = SY-MSGV1
   V2              = SY-MSGV2
   V3              = SY-MSGV3
   V4              = SY-MSGV4
 IMPORTING
   MSG             = LV_MSG
 EXCEPTIONS
   NOT_FOUND       = 1
   OTHERS          = 2
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

MESSAGE LV_MSG TYPE 'E'.
*CONCATENATE lv_msg WA_FINAL1-equnr 'Not Created.!' INTO msg_text SEPARATED BY ''.
*
*MESSAGE msg_text TYPE 'W'.
*continue.

ELSE.

MSG_TEXT = 'Equipment BOM created'.

MESSAGE MSG_TEXT TYPE 'S'.
CONTINUE.

ENDIF.


ENDAT.

CNT = CNT + 10.

CLEAR: WA_FINAL,WA_FINAL1.

ENDLOOP.

I created this for Equipment BOM.,

based on BOM type STLTY need to change .,

for Equipment BOM.

WA_STKOB-STLTY = 'E'.

WA_STZUB-STLTY = 'E'.

hope this helps u.,

Thanks & Regards,

Kiran

Read only

0 Likes
760

My problem is that i should create a BOM copy from Existing BOM and get all component of Existing BOM.

Edited by: francesco aiello on Jun 23, 2011 5:44 PM

Read only

0 Likes
760

Hi.,

For that go for BDC., Create a Recording in SHDB and use BDC Program.,

hope this helps u.,

Thanks & Regards,

Kiran