<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: using bdc to upload cs01 in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709263#M1453555</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please go through this code for same example ... I am already developed BDC  for this same reqirement ,...&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
                                                                                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  '&amp;amp;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 &amp;lt;&amp;gt; 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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  READ_FLAT_FILE
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_BDCDATA
*&amp;amp;---------------------------------------------------------------------*
*       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

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  HANDLE_SUCC_RECS
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  HANDLE_ERR_RECS
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;       text
*&amp;amp;---------------------------------------------------------------------*
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 &amp;lt;&amp;gt; 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

*****&amp;amp;---------------------------------------------------------------------*
*****&amp;amp;      Form  FLDCAT1
*****&amp;amp;---------------------------------------------------------------------*
*****       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 &amp;lt;&amp;gt; space.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
  ENDIF.

ENDFORM.                    "BDC_FIELD
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;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   &lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: ajay KOLLA on Feb 25, 2010 2:38 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 25 Feb 2010 13:37:11 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2010-02-25T13:37:11Z</dc:date>
    <item>
      <title>using bdc to upload cs01</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709260#M1453552</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hai gurus.&lt;/P&gt;&lt;P&gt;from flatfile i uploading data in internal table...&lt;/P&gt;&lt;P&gt;but how place in table control all data... by using this one only first two lines of particular material enteries.&lt;/P&gt;&lt;P&gt; flat file is like that&lt;/P&gt;&lt;P&gt;ex&lt;/P&gt;&lt;P&gt;1000   1  1  2000a 45 54&lt;/P&gt;&lt;P&gt;                   2000b 54 46&lt;/P&gt;&lt;P&gt;2000   1  1  1000a 24 23&lt;/P&gt;&lt;P&gt;3000    1  1  2000d 33&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN __default_attr="red" __jive_macro_name="color"&gt;Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Rob Burbank on Feb 23, 2010 2:01 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Feb 2010 18:43:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709260#M1453552</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2010-02-23T18:43:03Z</dc:date>
    </item>
    <item>
      <title>Re: using bdc to upload cs01</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709261#M1453553</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can try with the standard fm's instead of BDC&lt;/P&gt;&lt;P&gt;link:[CSAP_MAT_BOM_CREATE|http://help.sap.com/saphelp_40b/helpdata/en/92/58b514417011d189ec0000e81ddfac/content.htm]&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;RFC_CREATE_BILL_OF_MATERIAL&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Feb 2010 20:37:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709261#M1453553</guid>
      <dc:creator>kesavadas_thekkillath</dc:creator>
      <dc:date>2010-02-23T20:37:09Z</dc:date>
    </item>
    <item>
      <title>Re: using bdc to upload cs01</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709262#M1453554</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can use &lt;STRONG&gt;LSMW&lt;/STRONG&gt; to create Material BOM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See with ObjectType&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Object&lt;/STRONG&gt;    0030 &lt;EM&gt;Material BOM&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Method&lt;/STRONG&gt;  0001 &lt;EM&gt;Create&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this methode used program &lt;STRONG&gt;RCSBI010&lt;/STRONG&gt; (See documentation. )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you want you can used directly program RCSBI010.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rgds&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2010 09:30:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709262#M1453554</guid>
      <dc:creator>StMou</dc:creator>
      <dc:date>2010-02-25T09:30:56Z</dc:date>
    </item>
    <item>
      <title>Re: using bdc to upload cs01</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709263#M1453555</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please go through this code for same example ... I am already developed BDC  for this same reqirement ,...&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
                                                                                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  '&amp;amp;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 &amp;lt;&amp;gt; 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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  READ_FLAT_FILE
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_BDCDATA
*&amp;amp;---------------------------------------------------------------------*
*       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

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  HANDLE_SUCC_RECS
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  HANDLE_ERR_RECS
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;       text
*&amp;amp;---------------------------------------------------------------------*
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 &amp;lt;&amp;gt; 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

*****&amp;amp;---------------------------------------------------------------------*
*****&amp;amp;      Form  FLDCAT1
*****&amp;amp;---------------------------------------------------------------------*
*****       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 &amp;lt;&amp;gt; space.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
  ENDIF.

ENDFORM.                    "BDC_FIELD
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;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   &lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: ajay KOLLA on Feb 25, 2010 2:38 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2010 13:37:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/using-bdc-to-upload-cs01/m-p/6709263#M1453555</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2010-02-25T13:37:11Z</dc:date>
    </item>
  </channel>
</rss>

