cancel
Showing results for 
Search instead for 
Did you mean: 

upload data using bdc,recording

Former Member
0 Kudos

how to upload data using bdc ( recording)

plz send model code for session method.

plz send by using recording how to get program

Accepted Solutions (0)

Answers (2)

Answers (2)

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

You can do the recording with transaction SHDB. There is a program button which will generate the code for you. You can then copy and paste this code in your program. Here is a model upload program.

This program excepts a comma delimited file with material number, plant, and std price. It then processes each record using a BDC over transaction MR21.



report zrich_0002
       no standard page heading
       line-size 132.

data: iflat type table of string with header line.

data: begin of itab occurs 0,
      matnr type marc-matnr,
      werks type marc-werks,
      stdpr(10) type c,
      end of itab.

data: pdate(10) type c.

data: bdcdata like bdcdata occurs 20 with header line,
      mode(1) type c value 'N'.

selection-screen skip 1.
parameters: p_file type localfile default
            'C:Std_Price.txt'.
parameters: p_date like sy-datum.
selection-screen skip 1.

at selection-screen on value-request for p_file.
  call function 'KD_GET_FILENAME_ON_F4'
       exporting
            static    = 'X'
       changing
            file_name = p_file.


start-of-selection.

  perform upload_data.
  perform process_records.


************************************************************************
* Upload_Data
************************************************************************
form upload_data.


  clear iflat. refresh iflat.
  clear itab. refresh itab.


  call function 'GUI_UPLOAD'
       exporting
            filename = p_file
       tables
            data_tab = iflat.


  loop at iflat.
    split iflat at ',' into itab-matnr itab-werks itab-stdpr.

    call function 'CONVERSION_EXIT_MATN1_INPUT'
         exporting
              input  = itab-matnr
         importing
              output = itab-matnr.
    append itab.
  endloop.

endform.

************************************************************************
* Process_Records
************************************************************************
form process_records.


  concatenate p_date+4(2) '/' p_date+6(2) '/' p_date(4)
          into pdate.

  loop at itab.


    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MR21HEAD-WERKS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'MR21HEAD-BUDAT'
                                pdate.
    perform bdc_field       using 'MR21HEAD-BUKRS'
                                  '0010'.
    perform bdc_field       using 'MR21HEAD-WERKS'
                                itab-werks.
    perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                  'MR21_LAGERMATERIAL_0250'.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CKI_MR21_0250-NEWVALPR(01)'.
    perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                  'MR21_LAGERMATERIAL_BWKEY_0250'.
    perform bdc_field       using 'CKI_MR21_0250-MATNR(01)'
                                itab-matnr.
    perform bdc_field       using 'CKI_MR21_0250-NEWVALPR(01)'
                                itab-stdpr.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SAVE'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CKI_MR21_0250-MATNR(02)'.
    perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                  'MR21_LAGERMATERIAL_BWKEY_0250'.

    call transaction 'MR21' using bdcdata mode mode
            update 'S'.

    if sy-subrc = 0.
      write:/ 'S', itab-matnr, itab-werks,
      'updated successfully'.
    else.
      write:/ 'E', itab-matnr, itab-werks,
               'error trying to update'.
    endif.

    clear bdcdata.   refresh bdcdata.

  endloop.

endform.

************************************************************************
*      Form  BDC_DYNPRO
************************************************************************

form bdc_dynpro using  program dynpro.

  clear bdcdata.
  bdcdata-program = program.
  bdcdata-dynpro = dynpro.
  bdcdata-dynbegin = 'X'.
  append bdcdata.

endform.

************************************************************************
*      Form  BDC_FIELD
************************************************************************

form bdc_field using fnam fval.

  clear bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  append bdcdata.

endform.


Regards,

Rich Heilman

Former Member
0 Kudos

Hi

You can create a BDC recording using transaction-<b>SHDB</b>.

you can record all the events triggered for the transaction given.

As the BDC program needs all the fields names and events triggered, you can copy the recorded code into your Program.

Kindly check,

<b> the procedure for recording in the following link</b>

http://help.sap.com/saphelp_47x200/helpdata/en/b9/ec71180bfe11d2bd0b080009b4534c/frameset.htm

<b>Download Step by Step: How to Create BDC Program</b>

http://www.sap-img.com/sap-download/bdcrecording.zip

<b>Some useful Links</b>

http://www.sap-img.com/bdc.htm

http://www.sappoint.com/abap/bdcrec.pdf

<b>Sample code</b>

A sample program to upload data for transaction - MC76


REPORT ZBDC_MC76
       NO STANDARD PAGE HEADING LINE-SIZE 255.

INCLUDE BDCRECX1.

*** Generated data section with specific formatting ***
DATA: BEGIN OF IT_RECORD OCCURS 0,
* data element: PRGRP
        PRGRP_001(018),          " Product Group
* data element: WERKS_D
        WERKS_002(004),          " Plant
* data element: AWAHL
*        AWAHL_02_003(001),       " Indicator for Selection
* data element: FLGPR
*        FLGPR_004(001),
* data element: FLGAB
*        FLGAB_005(001),          " Disaggregate Sales Plan
* data element: FLGLB
*        FLGLB_006(001),
* data element:
        FLD001_02_007(010),      " Quantity
* data element: AWAHL
*        AWAHL_04_008(001),       " Indicator for Selection
      END OF IT_RECORD.

*** End generated data section ***

SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
PARAMETERS :
P_PATH        LIKE IBIPPARMS-PATH.  "File path and name
SELECTION-SCREEN END OF BLOCK B1.

INITIALIZATION.
  CTU = 'X'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      FIELD_NAME = 'PATH'
    IMPORTING
      FILE_NAME  = P_PATH.


START-OF-SELECTION.

  CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
      FILENAME                = P_PATH
      FILETYPE                = 'DAT'
    TABLES
      DATA_TAB                = IT_RECORD
    EXCEPTIONS
      CONVERSION_ERROR        = 1
      FILE_OPEN_ERROR         = 2
      FILE_READ_ERROR         = 3
      INVALID_TYPE            = 4
      NO_BATCH                = 5
      UNKNOWN_ERROR           = 6
      INVALID_TABLE_WIDTH     = 7
      GUI_REFUSE_FILETRANSFER = 8
      CUSTOMER_ERROR          = 9
      NO_AUTHORITY            = 10
      OTHERS                  = 11.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

*START-OF-SELECTION.

*  PERFORM OPEN_DATASET USING DATASET.
  PERFORM OPEN_GROUP.

*  DO.
*    READ DATASET DATASET INTO IT_RECORD.
*    IF SY-SUBRC <> 0. EXIT. ENDIF.

  LOOP AT IT_RECORD.

    PERFORM BDC_DYNPRO      USING 'SAPMMCP6' '0100'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RMCP2-WERKS'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=IAKT'.
    PERFORM BDC_FIELD       USING 'RMCP2-PRGRP'
                                  IT_RECORD-PRGRP_001.
    PERFORM BDC_FIELD       USING 'RMCP2-WERKS'
                                  IT_RECORD-WERKS_002.
    PERFORM BDC_DYNPRO      USING 'SAPLMCP6' '0175'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RMCP2-AWAHL(02)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=CONT'.
    PERFORM BDC_FIELD       USING 'RMCP2-AWAHL(02)' 'X'.
*                                  IT_RECORD-AWAHL_02_003.
    PERFORM BDC_DYNPRO      USING 'SAPMMCP6' '0620'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RMCP2-FLGAB'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=CONT'.
*    PERFORM BDC_FIELD       USING 'RMCP2-FLGPR'
*                                  IT_RECORD-FLGPR_004.
    PERFORM BDC_FIELD       USING 'RMCP2-FLGAB' 'X'.
*                                  IT_RECORD-FLGAB_005.
*    PERFORM BDC_FIELD       USING 'RMCP2-FLGLB'
*                                  IT_RECORD-FLGLB_006.
    PERFORM BDC_DYNPRO      USING 'SAPLMCPA' '0807'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  '*RMCP4-FLD001(02)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING '*RMCP4-FLD001(02)'
                                  IT_RECORD-FLD001_02_007.
    PERFORM BDC_DYNPRO      USING 'SAPLMCPA' '0807'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  '*RMCP4-FLD001(02)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=MAKR'.
    PERFORM BDC_DYNPRO      USING 'SAPMMCP6' '0140'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RMCP2-AWAHL(04)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=CONT'.
    PERFORM BDC_FIELD       USING 'RMCP2-AWAHL(04)' 'X'.
*                                  IT_RECORD-AWAHL_04_008.
    PERFORM BDC_DYNPRO      USING 'SAPLMCPA' '0807'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  '*RMCP4-FLD001(02)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=SICH'.
    PERFORM BDC_TRANSACTION USING 'MC76'.

    REFRESH BDCDATA.

  ENDLOOP.

*ENDDO.

  PERFORM CLOSE_GROUP.
*PERFORM CLOSE_DATASET USING DATASET.

Kindly reward points for useful answers!

Best regards,

Thangesh