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

using bdc to upload cs01

Former Member
0 Likes
828

hai gurus.

from flatfile i uploading data in internal table...

but how place in table control all data... by using this one only first two lines of particular material enteries.

flat file is like that

ex

1000 1 1 2000a 45 54

2000b 54 46

2000 1 1 1000a 24 23

3000 1 1 2000d 33

Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code

Edited by: Rob Burbank on Feb 23, 2010 2:01 PM

You can try with the standard fm's instead of BDC

link:[CSAP_MAT_BOM_CREATE|http://help.sap.com/saphelp_40b/helpdata/en/92/58b514417011d189ec0000e81ddfac/content.htm]

RFC_CREATE_BILL_OF_MATERIAL

3 REPLIES 3
Read only

kesavadas_thekkillath
Active Contributor
0 Likes
638

You can try with the standard fm's instead of BDC

link:[CSAP_MAT_BOM_CREATE|http://help.sap.com/saphelp_40b/helpdata/en/92/58b514417011d189ec0000e81ddfac/content.htm]

RFC_CREATE_BILL_OF_MATERIAL

Read only

StMou
Active Participant
0 Likes
638

Hi,

You can use LSMW to create Material BOM.

See with ObjectType

Object 0030 Material BOM

Method 0001 Create

this methode used program RCSBI010 (See documentation. )

If you want you can used directly program RCSBI010.

Rgds

Read only

Former Member
0 Likes
638

Please go through this code for same example ... I am already developed BDC for this same reqirement ,...


                                                                                REPORT  zoct30.


TYPE-POOLS: truxs,slis.
TABLES : mara.

TYPES: BEGIN OF t_tab,
col1(1) TYPE n,
col2(20) TYPE c,
col3(3) TYPE n,
col4(20) TYPE c,
col5(3) TYPE n,

END OF t_tab.

TYPES: BEGIN OF it_bom_data ,

posnr(4), "ITEM NO
idnrk(18), "COMPONENT
kmptx(30), "discription
menge(3), "QUANTITY
matnr(18), "MATERIAL
werks(4), "PLANT
stlan(1), "BOM USAGE
datuv(10), "DATE
bmeng(3), " material quantity
benge(18),
meins(3), "UNIT
postp(1), "Item category
alpgr(2), "AltItemGroup
alpst(1), "Strategy
alprf(2), "Priority
ewahr(3), "Usage probability(%)
lgort(4), "SLOC

END OF it_bom_data.


DATA : BEGIN OF it_bom_err OCCURS 0,


col1(1) TYPE n,
col2(20) TYPE c,
col3(3) TYPE n,
col4(20) TYPE c,
col5(3) TYPE n,
msg(150),

END OF it_bom_err.

DATA:it_bom_err1 LIKE it_bom_err OCCURS 0 WITH HEADER LINE.

*  ----------------------------------------------------------------
*
*          DATA
*
*  ----------------------------------------------------------------

DATA : wa1 TYPE STANDARD TABLE OF t_tab WITH HEADER LINE.
DATA  : wa2 LIKE wa1.


DATA : itab1 TYPE STANDARD TABLE OF  it_bom_data WITH HEADER LINE.
DATA : itab2 TYPE STANDARD TABLE OF  it_bom_data WITH HEADER LINE.


DATA it_type TYPE truxs_t_text_data.
DATA : bdcdata TYPE bdcdata OCCURS 10 WITH HEADER LINE.
DATA : it_msg LIKE bdcmsgcoll OCCURS 1 WITH HEADER LINE.

DATA v_cnt(2) TYPE c.
DATA v_cnt1 TYPE i.
DATA:  v_msg(150).
DATA v_fldnm(20) TYPE c.
data :  F2CODE   LIKE SY-UCOMM VALUE  '&ETA'.

**************alv declaration************
DATA: fld TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
      fld1 TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
      lay TYPE slis_layout_alv,
      event TYPE slis_t_event.

PARAMETER p_file TYPE rlgrap-filename.
DATA ttab TYPE tabname.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM file_browse.


START-OF-SELECTION.
  IF NOT p_file IS INITIAL.
    PERFORM read_flat_file.
  ENDIF.

END-OF-SELECTION.
  PERFORM populate_bdcdata.
  IF NOT it_bom_err[] IS INITIAL.
*    LOOP AT it_bom_err.
*      WRITE : it_bom_err-col1 , it_bom_err-col2, it_bom_err-col3 , it_bom_err-col4 , it_bom_err-col5 ,  it_bom_err-msg.
*    ENDLOOP.


*******************************************
    PERFORM fldcat.
***    PERFORM fldcat1.
    PERFORM BUILD_LAYOUT USING LAY.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program                = sy-repid
       is_layout                         = lay
       it_fieldcat                       = fld[]
      TABLES
        t_outtab                          = it_bom_err
              .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  ENDIF.


FORM file_browse .
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = 'P_FILE'
    IMPORTING
      file_name     = p_file.

ENDFORM.                    " FILE_BROWSE
*&---------------------------------------------------------------------*
*&      Form  READ_FLAT_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM read_flat_file .
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*   I_FIELD_SEPERATOR          =
   i_line_header              = 'X'
      i_tab_raw_data             = it_type
      i_filename                 = p_file
    TABLES
      i_tab_converted_data       = wa1[]
* EXCEPTIONS
*   CONVERSION_FAILED          = 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.

ENDFORM.                    " READ_FLAT_FILE
*&---------------------------------------------------------------------*
*&      Form  POPULATE_BDCDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM populate_bdcdata .
  LOOP AT  wa1 .

    MOVE : wa1-col1 TO itab2-stlan,
           wa1-col2 TO itab2-matnr,
           wa1-col3 TO itab2-bmeng,
           wa1-col4 TO itab2-idnrk,
           wa1-col5 TO itab2-menge.


    APPEND itab2 TO itab1.
    CLEAR itab2.

  ENDLOOP.

  itab2[] = itab1[].

  DELETE ADJACENT DUPLICATES FROM itab1 COMPARING stlan matnr bmeng.

*  ----------------------------------------------------------------
*
*             BDC RECORDING
*
*  ----------------------------------------------------------------


  REFRESH bdcdata.
  LOOP AT  itab1.


    PERFORM bdc_dynpro      USING 'SAPLCSDI' '0100'.
    PERFORM bdc_field       USING 'BDC_CURSOR'             'RC29N-DATUV'.
    PERFORM bdc_field       USING 'BDC_OKCODE'              '/00'.
    PERFORM bdc_field       USING 'RC29N-MATNR'            itab1-matnr.

    PERFORM bdc_field       USING 'RC29N-WERKS'           '1000'.
    PERFORM bdc_field       USING 'RC29N-STLAN'           itab1-stlan.
    PERFORM bdc_field       USING 'RC29N-DATUV'          '01/01/2003'.

    PERFORM bdc_dynpro      USING 'SAPLCSDI' '0110'.
    PERFORM bdc_field       USING 'BDC_OKCODE'           '/00'.
    PERFORM bdc_field       USING 'RC29K-BMENG'          itab1-bmeng.
    PERFORM bdc_field       USING 'RC29K-STLST'          '1'.
    PERFORM bdc_field       USING 'BDC_CURSOR'          'RC29K-EXSTL'.

    PERFORM bdc_dynpro      USING 'SAPLCSDI' '0111'.
    PERFORM bdc_field       USING 'BDC_CURSOR'           'RC29K-LABOR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'           '/00'.

    PERFORM bdc_dynpro      USING 'SAPLCSDI' '0140'.
    PERFORM bdc_field       USING 'BDC_CURSOR'          'RC29P-POSTP(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'          '=FCBU'.

    v_cnt = '01'.
    v_cnt1 = '0010'.

    LOOP AT itab2 WHERE matnr = itab1-matnr.


      CONCATENATE 'RC29P-IDNRK(' v_cnt ')' INTO v_fldnm.

      PERFORM bdc_field       USING  v_fldnm        itab2-idnrk.
      CONCATENATE 'RC29P-MENGE(' v_cnt ')' INTO v_fldnm.
      PERFORM bdc_field       USING  v_fldnm        itab2-menge.
      CONCATENATE 'RC29P-POSTP(' v_cnt ')' INTO v_fldnm.

      PERFORM bdc_field       USING v_fldnm     'l'.
      v_cnt = v_cnt + 1.


    ENDLOOP.
    LOOP AT itab2 WHERE matnr = itab1-matnr.


      PERFORM bdc_dynpro      USING 'SAPLCSDI' '0130'.
      PERFORM bdc_field       USING 'BDC_OKCODE'          '/00'.
      PERFORM bdc_field       USING 'BDC_CURSOR'          'RC29P-MENGE'.

      PERFORM bdc_field       USING 'RC29P-POSNR'         v_cnt1.
      PERFORM bdc_field       USING 'RC29P-IDNRK'        itab2-idnrk.
      PERFORM bdc_field       USING 'RC29P-MENGE'         itab2-menge.
      PERFORM bdc_field       USING 'RC29P-MEINS'        mara-meins.

      PERFORM bdc_dynpro      USING 'SAPLCSDI' '0131'.
      PERFORM bdc_field       USING 'BDC_OKCODE'         '/00'.
      PERFORM bdc_field       USING 'BDC_CURSOR'         'RC29P-POTX1'.
      PERFORM bdc_field       USING 'RC29P-SANKA'       'X'.
      v_cnt1 = v_cnt1 + 10.
    ENDLOOP.

*    CALL TRANSACTION 'CS01' USING BDCDATA MODE 'A'.
*    REFRESH BDCDATA.
    CALL TRANSACTION 'CS01'

                       USING bdcdata
                       MODE  'N'
                       UPDATE 'S'
                       MESSAGES INTO it_msg.

    IF sy-subrc  = 0.
      PERFORM handle_succ_recs.
    ELSE.
      PERFORM handle_err_recs.
    ENDIF.

    CLEAR: bdcdata,
           it_msg,
           bdcdata[],
           it_msg[],
           v_msg.
  ENDLOOP.


ENDFORM.                    " POPULATE_BDCDATA

*&---------------------------------------------------------------------*
*&      Form  HANDLE_SUCC_RECS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM handle_succ_recs .
  READ TABLE it_msg WITH KEY msgtyp = 'S'.
  IF sy-subrc = 0.
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        = it_msg-msgid
        lang      = sy-langu
        no        = it_msg-msgnr
        v1        = it_msg-msgv1
        v2        = it_msg-msgv2
        v3        = it_msg-msgv3
        v4        = it_msg-msgv4
      IMPORTING
        msg       = v_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.
    ELSE.
*      LOOP AT itab1.
*        MOVE itab1 TO it_bom_err.
*        it_bom_err-msg = v_msg.
*        APPEND it_bom_err.
*        DELETE  itab1.
*      ENDLOOP.
      LOOP AT wa1.
        MOVE wa1 TO it_bom_err.
        it_bom_err-msg = v_msg.
        APPEND it_bom_err.
        DELETE wa1.
      ENDLOOP.
    ENDIF.

  ENDIF.


ENDFORM.                    " HANDLE_SUCC_RECS
*&---------------------------------------------------------------------*
*&      Form  HANDLE_ERR_RECS
*&---------------------------------------------------------------------*
*&       text
*&---------------------------------------------------------------------*
FORM handle_err_recs .
  READ TABLE it_msg WITH KEY msgtyp = 'E'.
  IF sy-subrc = 0.
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        = it_msg-msgid
        lang      = sy-langu
        no        = it_msg-msgnr
        v1        = it_msg-msgv1
        v2        = it_msg-msgv2
        v3        = it_msg-msgv3
        v4        = it_msg-msgv4
      IMPORTING
        msg       = v_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.
    ELSE.
*      LOOP AT itab1.
*        MOVE itab1 TO it_bom_err.
*        it_bom_err-msg = v_msg.
*        APPEND it_bom_err.
*        DELETE  itab1.
*      ENDLOOP.
      LOOP AT wa1.
        MOVE wa1 TO it_bom_err.
        it_bom_err-msg = v_msg.
        APPEND it_bom_err.
*        DELETE  ITAB1.
        DELETE wa1.
      ENDLOOP.
    ENDIF.
  ENDIF.


ENDFORM.                    " HANDLE_ERR_RECS




**********fieldcatlog*************

FORM fldcat.
  fld-col_pos = '1'.
  fld-seltext_l = 'Bom Usage'.
  fld-fieldname = 'COL1'.
  fld-tabname = 'IT_BOM_ERR'.
  APPEND fld.

  fld-col_pos = '2'.
  fld-seltext_l = 'Material'.
  fld-fieldname = 'COL2'.
  fld-tabname = 'IT_BOM_ERR'.
  APPEND fld.
  CLEAR fld.

  fld-col_pos = '3'.
  fld-seltext_l = 'Materail Quantity'.
  fld-fieldname = 'COL3'.
  fld-tabname = 'IT_BOM_ERR'.
  APPEND fld.
  CLEAR fld.

  fld-col_pos = '4'.
  fld-seltext_l = 'componet'.
  fld-fieldname = 'COL4'.
  fld-tabname = 'IT_BOM_ERR'.
  APPEND fld.
  CLEAR fld.

  fld-col_pos = '5'.
  fld-seltext_l = 'Component Quantity'.
  fld-fieldname = 'COL5'.
  fld-tabname = 'IT_BOM_ERR'.
  APPEND fld.
  CLEAR fld.

  fld-col_pos = '6'.
  fld-seltext_l = 'Error Message'.
  fld-fieldname = 'MSG'.
  fld-tabname = 'IT_BOM_ERR'.
  APPEND fld.
  CLEAR fld.

ENDFORM.                    "fldcat

*****&---------------------------------------------------------------------*
*****&      Form  FLDCAT1
*****&---------------------------------------------------------------------*
*****       text
*****----------------------------------------------------------------------*
****FORM fldcat1.
****  fld1-col_pos = '1'.
****  fld1-seltext_l = 'Bom Usage'.
****  fld1-fieldname = 'COL1'.
****  fld1-tabname = 'IT_BOM_ERR1'.
****  APPEND fld1.
****
****  fld1-col_pos = '2'.
****  fld1-seltext_l = 'Material'.
****  fld1-fieldname = 'COL2'.
****  fld1-tabname = 'IT_BOM_ERR1'.
****  APPEND fld1.
****  CLEAR fld1.
****
****  fld1-col_pos = '3'.
****  fld1-seltext_l = 'Materail Quantity'.
****  fld1-fieldname = 'COL3'.
****  fld1-tabname = 'IT_BOM_ERR1'.
****  APPEND fld1.
****  CLEAR fld1.
****
****  fld1-col_pos = '4'.
****  fld1-seltext_l = 'componet'.
****  fld1-fieldname = 'COL4'.
****  fld1-tabname = 'IT_BOM_ERR1'.
****  APPEND fld1.
****  CLEAR fld1.
****
****  fld1-col_pos = '5'.
****  fld1-seltext_l = 'Component Quantity'.
****  fld1-fieldname = 'COL5'.
****  fld1-tabname = 'IT_BOM_ERR1'.
****  APPEND fld1.
****  CLEAR fld1.
****
****  fld1-col_pos = '6'.
****  fld1-seltext_l = 'Error Message'.
****  fld1-fieldname = 'MSG'.
****  fld1-tabname = 'IT_BOM_ERR1'.
****  APPEND fld1.
****  CLEAR fld1.
****ENDFORM.                                                    "FLDCAT1

*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*

FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*

FORM bdc_field USING fnam fval.
  IF fval <> space.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
  ENDIF.

ENDFORM.                    "BDC_FIELD
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LAYOUT  text
*----------------------------------------------------------------------*
form BUILD_LAYOUT  using    p_layout type SLIS_LAYOUT_ALV.
  P_LAYOUT-F2CODE       = F2CODE.
  P_LAYOUT-ZEBRA        = 'X'.
  P_LAYOUT-DETAIL_POPUP = 'X'.

endform.                    " BUILD_LAYOUT   

Edited by: ajay KOLLA on Feb 25, 2010 2:38 PM