SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Создание BDC программы



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Batch Input (BDC), Background processing and Jobs
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Sun Sep 02, 2007 4:12 pm    Post subject: Создание BDC программы Reply with quote

General flow of a BDC program is like this....

1) First create recording for the T code which you want to make BDC for... Use T code SHDB for recording.

2 ) Now save that recording and create pogram from that recording using Create Program button. give the BDC driver program name and create.

3 ) Now the general logic of BDC program goes like this....

- Upload Flat file into and internal table using function module "UPLOAD"
- OPEN BDC GROUP.
- Now loop at that internal table which contains the data from flat file.
- move data from internal table to fields of BDCDATA using automatically gebnerated code from BDC.
- CALL TRANSACTION <T CODE> using BDCDATA...
- CLOSE BDC GROUP

A sample program for the same is attatched here for your referance... just go through it..

Code:
REPORT ztej_test_new no standard page heading line-size 255.

data bdcdata like bdcdata occurs 0 with header line.
tables: zipcldesigcat.

data : begin of itab occurs 0,
        mandt like zipcldesigcat-mandt,
        zdesigncd like zipcldesigcat-zdesigncd,
        zdesignation like zipcldesigcat-zdesignation,
        zdesigcat like zipcldesigcat-zdesigcat,
       end of itab.

*INCLUDE bdcrecx1.

start-of-selection.
  perform upload.
  perform open.

  loop at itab.
    perform move.
    call transaction 'SE16' using bdcdata mode 'E'.
    refresh bdcdata.
  endloop.
  perform close.

*&---------------------------------------------------------------------*
*&      Form  UPLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form upload.
  call function 'UPLOAD'
      exporting
*         CODEPAGE                = ''
           filename                = ''
           filetype                = 'DAT'
           item                    = 'Your File'
*         FILEMASK_MASK           = ' '
*         FILEMASK_TEXT           = ' '
*         FILETYPE_NO_CHANGE      = ' '
*         FILEMASK_ALL            = ' '
*         FILETYPE_NO_SHOW        = ' '
*         LINE_EXIT               = ' '
*         USER_FORM               = ' '
*         USER_PROG               = ' '
*         SILENT                  = 'S'
*    IMPORTING
*         FILESIZE                =
*         CANCEL                  =
*         ACT_FILENAME            =
*         ACT_FILETYPE            =
       tables
            data_tab                = itab
      exceptions
           conversion_error        = 1
           invalid_table_width     = 2
           invalid_type            = 3
           no_batch                = 4
           unknown_error           = 5
           gui_refuse_filetransfer = 6
           others                  = 7
            .
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.

*CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
*     EXPORTING
*          filename                = 'C:\TEST.XLS'
*          i_begin_col             = 1
*          i_begin_row             = 1
*          i_end_col               = 3
*          i_end_row               = 5
*     tables
*          intern                  = ITAB
*    EXCEPTIONS
*         INCONSISTENT_PARAMETERS = 1
*         UPLOAD_OLE              = 2
*         OTHERS                  = 3
*          .
*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.                    " UPLOAD
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
  clear bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  append bdcdata.
endform.

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
  if fval <> space.
    clear bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    append bdcdata.
  endif.
endform.
*&---------------------------------------------------------------------*
*&      Form  OPEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form open.
  call function 'BDC_OPEN_GROUP'
      exporting
           client              = sy-mandt
*         DEST                = FILLER8
           group               = 'ZDESIGCAT_R'
*         HOLDDATE            = FILLER8
*         KEEP                = FILLER1
           user                = sy-uname
*         RECORD              = FILLER1
*    IMPORTING
*         QID                 =
      exceptions
           client_invalid      = 1
           destination_invalid = 2
           group_invalid       = 3
           group_is_locked     = 4
           holddate_invalid    = 5
           internal_error      = 6
           queue_error         = 7
           running             = 8
           system_lock_error   = 9
           user_invalid        = 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.

endform.                    " OPEN

*&---------------------------------------------------------------------*
*&      Form  MOVE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form move.

perform bdc_dynpro      using 'SAPLSETB' '0230'.
perform bdc_field       using 'BDC_CURSOR'
                              'DATABROWSE-TABLENAME'.
perform bdc_field       using 'BDC_OKCODE'
                              '=ANLE'.
perform bdc_field       using 'DATABROWSE-TABLENAME'
                              'ZIPCLDESIGCAT'.
perform bdc_dynpro      using 'SAPLZIPCLDESIGCAT' '0001'.
perform bdc_field       using 'BDC_CURSOR'
                              'VIM_POSITION_INFO'.
perform bdc_field       using 'BDC_OKCODE'
                              '=NEWL'.
perform bdc_dynpro      using 'SAPLZIPCLDESIGCAT' '0001'.
perform bdc_field       using 'BDC_CURSOR'
                              'ZIPCLDESIGCAT-ZDESIGCAT(01)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=SAVE'.
perform bdc_field       using 'ZIPCLDESIGCAT-ZDESIGNCD(01)'
                              '2101'.
perform bdc_field       using 'ZIPCLDESIGCAT-ZDESIGNATION(01)'
                              'new'.
perform bdc_field       using 'ZIPCLDESIGCAT-ZDESIGCAT(01)'
                              'n'.
perform bdc_dynpro      using 'SAPLZIPCLDESIGCAT' '0001'.
perform bdc_field       using 'BDC_CURSOR'
                              'ZIPCLDESIGCAT-ZDESIGNCD(02)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=ENDE'.
perform bdc_dynpro      using 'SAPLSETB' '0230'.
perform bdc_field       using 'BDC_OKCODE'
                              '/EEND'.
perform bdc_field       using 'BDC_CURSOR'
                              'DATABROWSE-TABLENAME'.


endform.                    " MOVE

*&---------------------------------------------------------------------*
*&      Form  CLOSE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form close.
  call function 'BDC_CLOSE_GROUP'
       exceptions
            not_open    = 1
            queue_error = 2
            others      = 3.
  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.                    " CLOSE
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Batch Input (BDC), Background processing and Jobs All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.