Application Development 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: 

how to make programe using BDC

laxman_sankhla3
Participant
0 Kudos

hi

i want to make bdc programme to upload data.

how can i make.

thanks.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Go SHDB and create a record and from this recording generate a program.

Create a flat file of ur data.

Then upload this data into internal table.

and assign this data in loop to program.

refer e.g. as follows:

REPORT ZSM_COLLECTIVE_INVOICING LINE-SIZE 280.
******************************************************************
* Removes billingblock ( VA02 ) for selected debit memo requests and
* moves the salesdocument number to VF01 and
* creates billing document (debit memo).
******************************************************************

TABLES: VBAK,     "Sales document, header data
        VBAP.     "Sales document, item data

DATA: BEGIN OF G_VBELN OCCURS 0,
         VBELN LIKE VBAK-VBELN,
      END OF G_VBELN.

DATA: BEGIN OF BDC_TAB OCCURS 0.
         INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.

DATA: G_FEJL TYPE I.  "Flag that is set fi there are found at least 1 sales document
   		      

SELECT-OPTIONS:
   S_VBELN FOR VBAK-VBELN,                "Sales document

   S_AUDAT FOR VBAK-AUDAT,                "Document date
   S_AUART FOR VBAK-AUART DEFAULT 'ZDR'.  "Sales document type

START-OF-SELECTION.
   PERFORM GET_DATA.
   CHECK G_FEJL = 1.
   PERFORM WRITE_LIST.

TOP-OF-PAGE.
   WRITE 'Selected salesdocuments for collective invoicing'
         COLOR COL_HEADING.
    ULINE.

AT USER-COMMAND.
  CASE SY-UCOMM.
    WHEN 'EKSEKVER'.
       PERFORM REMOVE_BILLINGBLOCK.
       PERFORM BILL_DOCUMENTS.
       CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
            EXPORTING
                TITEL        = 'Collective invoicing'
                TEXTLINE1    = 'Batch input mapper er dannet'

                TEXTLINE2    = 'Mapperne hedder ZSM02'
                START_COLUMN = 25
                START_ROW    = 6
            EXCEPTIONS
                 OTHERS       = 1.
        LEAVE TO SCREEN 0.
    WHEN 'BACK'.
        LEAVE TO SCREEN 0.
    WHEN 'CANCEL'.
        LEAVE PROGRAM.
  ENDCASE.

*******************************************************************
* F O R M   G E T _ D A T A
*******************************************************************
FORM GET_DATA.
   SELECT VBELN INTO CORRESPONDING FIELDS OF TABLE G_VBELN
       FROM VBAK
       WHERE  AUART IN S_AUART  AND
              VBELN IN S_VBELN  AND
              AUDAT IN S_AUDAT.
    IF SY-SUBRC > 0.
       CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

            EXPORTING
*                TITEL        = ' '
                 TEXTLINE1    = 'No sales documents found'
*                TEXTLINE2    = ' '
*                START_COLUMN = 25
*                START_ROW    = 6
            EXCEPTIONS
                 OTHERS       = 1.
       G_FEJL = 0.
    ELSE.
       G_FEJL = 1.
    ENDIF.
ENDFORM.

*******************************************************************
* F O R M   W R I T E _ L I S T
*******************************************************************

FORM WRITE_LIST.
    SET PF-STATUS '001'.
    LOOP AT G_VBELN.
       WRITE : / G_VBELN-VBELN.
    ENDLOOP.
ENDFORM.

*******************************************************************
* F O R M   R E M O V E _ B I L L I N G B L O C K
* Removes billingblock from debitor memo request ( Transaction VA02 )

*******************************************************************
FORM REMOVE_BILLINGBLOCK.
   PERFORM OPEN_GROUP.
   REFRESH BDC_TAB.
   CLEAR BDC_TAB.
   LOOP AT G_VBELN.
*     Selection screen
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A'
                                      '0102'.

      PERFORM BDC_FIELD USING 'VBAK-VBELN'
                               G_VBELN-VBELN.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                   'UER1'.

*     Screen 40001
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A' '4001'.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                   'SFSP'.

*     Screen 0253 fast change of billingblock
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A' '0253'.

      PERFORM BDC_FIELD USING 'RV45A-S_FAKSK'
                               '  '.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                               'SUEB'.

*     Back to screen 4001
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                  'SICH'.

*     Insert
      PERFORM BDC_INSERT USING 'VA02'.
      CLEAR BDC_TAB.
      REFRESH BDC_TAB.
    ENDLOOP.

    PERFORM CLOSE_GROUP.
ENDFORM.

*******************************************************************
* F O R M   B I L L _ D O C U M E N T S
* Create billing document ( Transaction VF01 )
*******************************************************************
FORM BILL_DOCUMENTS.
   DATA: L_NLINE TYPE I, L_CLINE(3) TYPE N,
         L_FIELDNAME(20) TYPE C.

   PERFORM OPEN_GROUP.
   REFRESH BDC_TAB.
   CLEAR BDC_TAB.
   CLEAR L_NLINE. CLEAR L_CLINE.

   PERFORM BDC_NEWDYNPRO USING 'SAPMV60A' '0102'.

   PERFORM BDC_FIELD USING 'BDC_OKCODE'
                            'ENT1'.

   LOOP AT G_VBELN.
      L_NLINE = L_NLINE + 1.

      IF L_NLINE > 16.
*        The screentable is filled, go to next page
         PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                 '=P+'.
      ENDIF.

*     Convert linenumber to text
      MOVE L_NLINE TO L_CLINE.
      CONCATENATE 'KOMFK-VBELN('  L_CLINE ')' INTO L_FIELDNAME.

      PERFORM BDC_FIELD USING 'BDC_CURSOR'
                              L_FIELDNAME.

      PERFORM BDC_FIELD USING L_FIELDNAME
                              G_VBELN-VBELN.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                              'ENT2'.

   ENDLOOP.

*  Close screen 0102
   PERFORM BDC_FIELD USING 'BDC_OKCODE'
                           '/11'.

*  Insert
   PERFORM BDC_INSERT USING 'VF01'.
   CLEAR BDC_TAB.
   REFRESH BDC_TAB.

   PERFORM CLOSE_GROUP.
ENDFORM.

*******************************************************************
* F O R M   B D C _ D Y N P R O
* Start a new screen
*******************************************************************
FORM BDC_NEWDYNPRO USING PROGRAM DYNPRO.
  CLEAR BDC_TAB.
  BDC_TAB-PROGRAM  = PROGRAM.
  BDC_TAB-DYNPRO   = DYNPRO.
  BDC_TAB-DYNBEGIN = 'X'.
  APPEND BDC_TAB.
ENDFORM.

*******************************************************************
* F O R M  B D C _ F I E L D
* Inserts a field
*******************************************************************
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR BDC_TAB.
  BDC_TAB-FNAM = FNAM.
  BDC_TAB-FVAL = FVAL.
  APPEND BDC_TAB.
ENDFORM.


*******************************************************************

* F O R M   O P E N _ G R O U P
*******************************************************************
FORM OPEN_GROUP.
  CALL FUNCTION 'BDC_OPEN_GROUP'
     EXPORTING
          CLIENT              = SY-MANDT
*         DEST                = FILLER8
          GROUP               = 'ZSM02'
*         HOLDDATE            = FILLER8
          KEEP                = 'X'
          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.
ENDFORM.


*******************************************************************
* F O R M   C L O S E _ G R O U P
*******************************************************************

FORM CLOSE_GROUP.
  CALL FUNCTION 'BDC_CLOSE_GROUP'
       EXCEPTIONS
            NOT_OPEN    = 1
            QUEUE_ERROR = 2
            OTHERS      = 3.
ENDFORM.

FORM BDC_INSERT USING TCODE.
  CALL FUNCTION 'BDC_INSERT'
     EXPORTING
          TCODE            = TCODE

*         POST_LOCAL       = NOVBLOCAL
*         PRINTING         = NOPRINT
     TABLES
          DYNPROTAB        = BDC_TAB
     EXCEPTIONS
          INTERNAL_ERROR   = 1
          NOT_OPEN         = 2
          QUEUE_ERROR      = 3
          TCODE_INVALID    = 4
          PRINTING_INVALID = 5
          POSTING_INVALID  = 6
          OTHERS           = 7.

ENDFORM.

8 REPLIES 8

Former Member
0 Kudos

Hi,

Go to trasaction SHDB. Select new recording. Enter the name of transaction and record the transaction. After recording save it and click on program which automattically creates the BDC program for your trasaction.

Regards,

Kasi S

sreeramkumar_madisetty
Active Contributor
0 Kudos

Hi

go for sample programs of BDC.

Regards,

Sreeram

jayanthi_jayaraman
Active Contributor
0 Kudos

Hi,

Use tcode SHDB.Record the process and then replace the necessary coding.

Check this link.

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

Former Member
0 Kudos

Hi,

Go SHDB and create a record and from this recording generate a program.

Create a flat file of ur data.

Then upload this data into internal table.

and assign this data in loop to program.

refer e.g. as follows:

REPORT ZSM_COLLECTIVE_INVOICING LINE-SIZE 280.
******************************************************************
* Removes billingblock ( VA02 ) for selected debit memo requests and
* moves the salesdocument number to VF01 and
* creates billing document (debit memo).
******************************************************************

TABLES: VBAK,     "Sales document, header data
        VBAP.     "Sales document, item data

DATA: BEGIN OF G_VBELN OCCURS 0,
         VBELN LIKE VBAK-VBELN,
      END OF G_VBELN.

DATA: BEGIN OF BDC_TAB OCCURS 0.
         INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.

DATA: G_FEJL TYPE I.  "Flag that is set fi there are found at least 1 sales document
   		      

SELECT-OPTIONS:
   S_VBELN FOR VBAK-VBELN,                "Sales document

   S_AUDAT FOR VBAK-AUDAT,                "Document date
   S_AUART FOR VBAK-AUART DEFAULT 'ZDR'.  "Sales document type

START-OF-SELECTION.
   PERFORM GET_DATA.
   CHECK G_FEJL = 1.
   PERFORM WRITE_LIST.

TOP-OF-PAGE.
   WRITE 'Selected salesdocuments for collective invoicing'
         COLOR COL_HEADING.
    ULINE.

AT USER-COMMAND.
  CASE SY-UCOMM.
    WHEN 'EKSEKVER'.
       PERFORM REMOVE_BILLINGBLOCK.
       PERFORM BILL_DOCUMENTS.
       CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
            EXPORTING
                TITEL        = 'Collective invoicing'
                TEXTLINE1    = 'Batch input mapper er dannet'

                TEXTLINE2    = 'Mapperne hedder ZSM02'
                START_COLUMN = 25
                START_ROW    = 6
            EXCEPTIONS
                 OTHERS       = 1.
        LEAVE TO SCREEN 0.
    WHEN 'BACK'.
        LEAVE TO SCREEN 0.
    WHEN 'CANCEL'.
        LEAVE PROGRAM.
  ENDCASE.

*******************************************************************
* F O R M   G E T _ D A T A
*******************************************************************
FORM GET_DATA.
   SELECT VBELN INTO CORRESPONDING FIELDS OF TABLE G_VBELN
       FROM VBAK
       WHERE  AUART IN S_AUART  AND
              VBELN IN S_VBELN  AND
              AUDAT IN S_AUDAT.
    IF SY-SUBRC > 0.
       CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

            EXPORTING
*                TITEL        = ' '
                 TEXTLINE1    = 'No sales documents found'
*                TEXTLINE2    = ' '
*                START_COLUMN = 25
*                START_ROW    = 6
            EXCEPTIONS
                 OTHERS       = 1.
       G_FEJL = 0.
    ELSE.
       G_FEJL = 1.
    ENDIF.
ENDFORM.

*******************************************************************
* F O R M   W R I T E _ L I S T
*******************************************************************

FORM WRITE_LIST.
    SET PF-STATUS '001'.
    LOOP AT G_VBELN.
       WRITE : / G_VBELN-VBELN.
    ENDLOOP.
ENDFORM.

*******************************************************************
* F O R M   R E M O V E _ B I L L I N G B L O C K
* Removes billingblock from debitor memo request ( Transaction VA02 )

*******************************************************************
FORM REMOVE_BILLINGBLOCK.
   PERFORM OPEN_GROUP.
   REFRESH BDC_TAB.
   CLEAR BDC_TAB.
   LOOP AT G_VBELN.
*     Selection screen
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A'
                                      '0102'.

      PERFORM BDC_FIELD USING 'VBAK-VBELN'
                               G_VBELN-VBELN.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                   'UER1'.

*     Screen 40001
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A' '4001'.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                   'SFSP'.

*     Screen 0253 fast change of billingblock
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A' '0253'.

      PERFORM BDC_FIELD USING 'RV45A-S_FAKSK'
                               '  '.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                               'SUEB'.

*     Back to screen 4001
      PERFORM BDC_NEWDYNPRO USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                  'SICH'.

*     Insert
      PERFORM BDC_INSERT USING 'VA02'.
      CLEAR BDC_TAB.
      REFRESH BDC_TAB.
    ENDLOOP.

    PERFORM CLOSE_GROUP.
ENDFORM.

*******************************************************************
* F O R M   B I L L _ D O C U M E N T S
* Create billing document ( Transaction VF01 )
*******************************************************************
FORM BILL_DOCUMENTS.
   DATA: L_NLINE TYPE I, L_CLINE(3) TYPE N,
         L_FIELDNAME(20) TYPE C.

   PERFORM OPEN_GROUP.
   REFRESH BDC_TAB.
   CLEAR BDC_TAB.
   CLEAR L_NLINE. CLEAR L_CLINE.

   PERFORM BDC_NEWDYNPRO USING 'SAPMV60A' '0102'.

   PERFORM BDC_FIELD USING 'BDC_OKCODE'
                            'ENT1'.

   LOOP AT G_VBELN.
      L_NLINE = L_NLINE + 1.

      IF L_NLINE > 16.
*        The screentable is filled, go to next page
         PERFORM BDC_FIELD USING 'BDC_OKCODE'
                                 '=P+'.
      ENDIF.

*     Convert linenumber to text
      MOVE L_NLINE TO L_CLINE.
      CONCATENATE 'KOMFK-VBELN('  L_CLINE ')' INTO L_FIELDNAME.

      PERFORM BDC_FIELD USING 'BDC_CURSOR'
                              L_FIELDNAME.

      PERFORM BDC_FIELD USING L_FIELDNAME
                              G_VBELN-VBELN.

      PERFORM BDC_FIELD USING 'BDC_OKCODE'
                              'ENT2'.

   ENDLOOP.

*  Close screen 0102
   PERFORM BDC_FIELD USING 'BDC_OKCODE'
                           '/11'.

*  Insert
   PERFORM BDC_INSERT USING 'VF01'.
   CLEAR BDC_TAB.
   REFRESH BDC_TAB.

   PERFORM CLOSE_GROUP.
ENDFORM.

*******************************************************************
* F O R M   B D C _ D Y N P R O
* Start a new screen
*******************************************************************
FORM BDC_NEWDYNPRO USING PROGRAM DYNPRO.
  CLEAR BDC_TAB.
  BDC_TAB-PROGRAM  = PROGRAM.
  BDC_TAB-DYNPRO   = DYNPRO.
  BDC_TAB-DYNBEGIN = 'X'.
  APPEND BDC_TAB.
ENDFORM.

*******************************************************************
* F O R M  B D C _ F I E L D
* Inserts a field
*******************************************************************
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR BDC_TAB.
  BDC_TAB-FNAM = FNAM.
  BDC_TAB-FVAL = FVAL.
  APPEND BDC_TAB.
ENDFORM.


*******************************************************************

* F O R M   O P E N _ G R O U P
*******************************************************************
FORM OPEN_GROUP.
  CALL FUNCTION 'BDC_OPEN_GROUP'
     EXPORTING
          CLIENT              = SY-MANDT
*         DEST                = FILLER8
          GROUP               = 'ZSM02'
*         HOLDDATE            = FILLER8
          KEEP                = 'X'
          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.
ENDFORM.


*******************************************************************
* F O R M   C L O S E _ G R O U P
*******************************************************************

FORM CLOSE_GROUP.
  CALL FUNCTION 'BDC_CLOSE_GROUP'
       EXCEPTIONS
            NOT_OPEN    = 1
            QUEUE_ERROR = 2
            OTHERS      = 3.
ENDFORM.

FORM BDC_INSERT USING TCODE.
  CALL FUNCTION 'BDC_INSERT'
     EXPORTING
          TCODE            = TCODE

*         POST_LOCAL       = NOVBLOCAL
*         PRINTING         = NOPRINT
     TABLES
          DYNPROTAB        = BDC_TAB
     EXCEPTIONS
          INTERNAL_ERROR   = 1
          NOT_OPEN         = 2
          QUEUE_ERROR      = 3
          TCODE_INVALID    = 4
          PRINTING_INVALID = 5
          POSTING_INVALID  = 6
          OTHERS           = 7.

ENDFORM.

former_member588853
Active Contributor
0 Kudos

HI,

check this

regards,

nazeer

Former Member
0 Kudos

Hi Laxman,

first upload ur flat file data into an internal table using FM

'gui_upload'.

using transaction SHDB u can record the transaction for which u want to write bdc.there is a option 'program' for writing whole recording code in the form of report.here u can made changes accoding to ur requirement.

TABLES : Z8MARA,Z8T001W,Z8MARC,Z8EMPMASTER.

DATA: BEGIN OF IT_MATPLANT OCCURS 0,

MATNO(18),

PLANT(5),

EMPID(4),

END OF IT_MATPLANT.

DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = 'C:\Documents and Settings\hgoyal\Desktop\Z8MARC_DATA.txt'

FILETYPE = 'ASC'

tables

data_tab = IT_MATPLANT

.

IF sy-subrc <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT IT_MATPLANT.

REFRESH IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = 'Z8HG_MODULEPOOL4'.

IT_BDCDATA-DYNPRO = '101'.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = 'R_Z8MARC-Z8_MATNR'.

IT_BDCDATA-FVAL = IT_MATPLANT-MATNO.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = 'R_Z8MARC-Z8_WERKS'.

IT_BDCDATA-FVAL = IT_MATPLANT-PLANT.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = 'BDC_OKCODE'.

IT_BDCDATA-FVAL = 'CR01'.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = 'Z8HG_MODULEPOOL4'.

IT_BDCDATA-DYNPRO = '101'.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = 'R_Z8MARC-Z8_EMPCODE'.

IT_BDCDATA-FVAL = IT_MATPLANT-EMPID.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = 'BDC_OKCODE'.

IT_BDCDATA-FVAL = 'SAV1'.

APPEND IT_BDCDATA.

CALL TRANSACTION 'Z8HG2' USING IT_BDCDATA MODE 'N'.

ENDLOOP.

WRITE:/10 'ERROR DETAILS : '.

SKIP 1.

LOOP AT IT_ERROR_REPORT.

WRITE:/10 IT_ERROR_REPORT-MATNO ,30 IT_ERROR_REPORT-PLANT,60 IT_ERROR_REPORT-ERROR_VALUE.

ENDLOOP.

SKIP 2.

WRITE:/10 'ERRORED DATA : '.

SKIP 1.

loop at it_error.

write:/10 it_error.

endloop.

Reward points if helpful.

Regards,

Hemant

Former Member
0 Kudos

Hi,

Here is a sample bdc for uploading vendor master data (sourced from http://www.sap-img.com/abap/vendor-master-upload-program.htm):


report ZVEND_MST no standard page heading line-size
255.

*include bdcrecx1.

*parameters: dataset(132) lower case default 
'c:vend.mst'.
***    DO NOT CHANGE - the generated data section - DO
NOT CHANGE    ***
*
*   If it is nessesary to change the data section use
the rules:
*   1.) Each definition of a field exists of two lines
*   2.) The first line shows exactly the comment
*       '* data element: ' followed with the data
element
*       which describes the field.
*       If you don't have a data element use the
*       comment without a data element name
*   3.) The second line shows the fieldname of the
*       structure, the fieldname must consist of
*       a fieldname and optional the character '_' and
*       three numbers and the field length in brackets
*   4.) Each field must be type C.
*
*** Generated data section with specific formatting -
DO NOT CHANGE  ***
data: begin of record,
* data element: LIF16
        LIFNR_001(016),
* data element: BUKRS
        BUKRS_002(004),
* data element: EKORG
        EKORG_003(004),
* data element: KTOKK
        KTOKK_004(004),
* data element: NAME1_GP
        NAME1_005(035),
* data element: SORTL
        SORTL_006(010),
* data element: LAND1_GP
        LAND1_007(003),
* data element: SPRAS
        SPRAS_008(002),
* data element: BSTWA
        WAERS_009(005),
      end of record.

*** End generated data section ***

DATA : ITAB TABLE OF RECORD WITH HEADER LINE.

start-of-selection.

*perform open_dataset using dataset.
*perform open_group.
*
*do.
*
*read dataset dataset into record.
*if sy-subrc <> 0. exit. endif.
CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    FILENAME                      = 'C:VENDOR.TXT'   
"TEXT FILE
   FILETYPE                      = 'ASC'
   HAS_FIELD_SEPARATOR           = 'X'
  TABLES
    DATA_TAB                      = ITAB
 EXCEPTIONS
   FILE_OPEN_ERROR               = 1
   FILE_READ_ERROR               = 2
   NO_BATCH                      = 3
   GUI_REFUSE_FILETRANSFER       = 4
   INVALID_TYPE                  = 5
   NO_AUTHORITY                  = 6
   UNKNOWN_ERROR                 = 7
   BAD_DATA_FORMAT               = 8
   HEADER_NOT_ALLOWED            = 9
   SEPARATOR_NOT_ALLOWED         = 10
   HEADER_TOO_LONG               = 11
   UNKNOWN_DP_ERROR              = 12
   ACCESS_DENIED                 = 13
   DP_OUT_OF_MEMORY              = 14
   DISK_FULL                     = 15
   DP_TIMEOUT                    = 16
   OTHERS                        = 17
          .
IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

LOOP AT ITAB.
*In Loop Change Record With ITAB
* like record-lifnr_001 with itab-lifnr_001  
  perform bdc_dynpro      using 'SAPMF02K' '0100'.
  perform bdc_field       using 'BDC_CURSOR'
                              'RF02K-KTOKK'.
  perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
  perform bdc_field       using 'RF02K-LIFNR'
                              record-LIFNR_001.
  perform bdc_field       using 'RF02K-BUKRS'
                              record-BUKRS_002.
  perform bdc_field       using 'RF02K-EKORG'
                              record-EKORG_003.
  perform bdc_field       using 'RF02K-KTOKK'
                              record-KTOKK_004.
  perform bdc_dynpro      using 'SAPMF02K' '0110'.
  perform bdc_field       using 'BDC_CURSOR'
                              'LFA1-SPRAS'.
  perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
  perform bdc_field       using 'LFA1-NAME1'
                              record-NAME1_005.
  perform bdc_field       using 'LFA1-SORTL'
                              record-SORTL_006.
  perform bdc_field       using 'LFA1-LAND1'
                              record-LAND1_007.
  perform bdc_field       using 'LFA1-SPRAS'
                              record-SPRAS_008.
  perform bdc_dynpro      using 'SAPMF02K' '0120'.
  perform bdc_field       using 'BDC_CURSOR'
                              'LFA1-KUNNR'.
  perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
  perform bdc_dynpro      using 'SAPMF02K' '0130'.
  perform bdc_field       using 'BDC_CURSOR'
                              'LFBK-BANKS(01)'.
  perform bdc_field       using 'BDC_OKCODE'
                              '=ENTR'.
  perform bdc_dynpro      using 'SAPMF02K' '0210'.
  perform bdc_field       using 'BDC_CURSOR'
                                'LFB1-AKONT'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_dynpro      using 'SAPMF02K' '0215'.
  perform bdc_field       using 'BDC_CURSOR'
                                'LFB1-ZTERM'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_dynpro      using 'SAPMF02K' '0220'.
  perform bdc_field       using 'BDC_CURSOR'
                                'LFB5-MAHNA'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_dynpro      using 'SAPMF02K' '0310'.
  perform bdc_field       using 'BDC_CURSOR'
                                'LFM1-WAERS'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_field       using 'LFM1-WAERS'
                                record-WAERS_009.
  perform bdc_dynpro      using 'SAPMF02K' '0320'.
  perform bdc_field       using 'BDC_CURSOR'
                                'RF02K-LIFNR'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=ENTR'.
  perform bdc_dynpro      using 'SAPLSPO1' '0300'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=YES'.
  perform bdc_transaction using 'XK01'.

ENDLOOP.

Former Member
0 Kudos

Hi,

Go to transaction SHDB,

In that New Recording. There u have to give ur recording name and

transaction code for which u r going to create a program.

Then click Start Recording.

It will take u to the next screen.

Here u have to select those fields, which u r going to upload.

( Select those fields by giving some values, don't forgot to give

value for mandatory fields) than give enter, it wil take u to next

screen ( if ur transaction codes contain no. of screen) give values

for all the required fields and save it.

Than go to SM35 here u can find ur recording name.

select that one.

At top u can see some button, in that click program button.

i wil take u to next screen.

Their give ur prg name and

Transfer from recording radio button.

save it.

it wil take u to the program.

In prg u can find some commands get already exists.

I have send one sample prg.

In this the commands in Bold letters is given by me

and other commands are created because of that

recording, which we did above.

<b>In prg that internal table contains those fields

which we are going to upload.</b>

<b>You have to create one text file containing the fields

which u are going to upload and save it in desktop.</b>

REPORT zgroup_bdc

NO STANDARD PAGE HEADING LINE-SIZE 255.

INCLUDE bdcrecx1.

<b>DATA: BEGIN OF itab OCCURS 100,

bukrs(004), "LIKE rf02d-bukrs,

vkorg(004), " LIKE rf02d-vkorg,

vtweg(003), " LIKE rf02d-vtweg,

spart(003), " LIKE rf02d-spart,

ktokd(004), " LIKE rf02d-ktokd,

name1(035), " LIKE kna1-name1,

sortl(004), " LIKE kna1-sortl,

pfach(010), " LIKE kna1-pfach,

ort01(035), " LIKE kna1-ort01,

pstlz(010), " LIKE kna1-pstlz,

land1(003), " LIKE kna1-land1,

spras(002), " LIKE kna1-spras,

lzone(010), " LIKE kna1-lzone,

akont(010), " LIKE knb1-akont,

awahr(003), " LIKE knvv-awahr,

vsbed(002), " LIKE knvv-vsbed,

END OF itab.

START-OF-SELECTION.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = 'C:\DOCUMENTS AND SETTINGS\DESKTOP\TEST1.TXT'

FILETYPE = 'ASC'

tables

data_tab = ITAB.

PERFORM open_group.

LOOP AT itab.</b>

*****************************FIRST SCREEN*************************

PERFORM bdc_dynpro USING 'SAPMF02D' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02D-KTOKD'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RF02D-BUKRS'

'0009'.

PERFORM bdc_field USING 'RF02D-VKORG'

'0001'.

PERFORM bdc_field USING 'RF02D-VTWEG'

'01'.

PERFORM bdc_field USING 'RF02D-SPART'

'01'.

PERFORM bdc_field USING 'RF02D-KTOKD'

'0001'.

*****************************SECOND SCREEN*************************

PERFORM bdc_dynpro USING 'SAPMF02D' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNA1-SPRAS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'KNA1-NAME1'

'Johnson'.

PERFORM bdc_field USING 'KNA1-SORTL'

'JOHN'.

PERFORM bdc_field USING 'KNA1-PFACH'

'600004'.

PERFORM bdc_field USING 'KNA1-ORT01'

'Chennai'.

PERFORM bdc_field USING 'KNA1-PSTLZ'

'600004'.

PERFORM bdc_field USING 'KNA1-LAND1'

'IN'.

PERFORM bdc_field USING 'KNA1-SPRAS'

'en'.

*****************************THIRD SCREEN*************************

PERFORM bdc_dynpro USING 'SAPMF02D' '0120'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNA1-LZONE'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'KNA1-LZONE'

'412027'.

*****************************FOURTH SCREEN*************************

PERFORM bdc_dynpro USING 'SAPMF02D' '0125'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNA1-NIELS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNBK-BANKS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0340'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02D-KUNNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0370'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02D-KUNNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'KNA1-CIVVE'

'X'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0360'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNVK-NAMEV(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0210'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNB1-AKONT'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'KNB1-AKONT'

'196000'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0215'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNB1-XPORE'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0220'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNB5-KNRMA'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0230'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNB1-VRSNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0610'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02D-KUNNR'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0310'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNVV-BZIRK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'KNVV-AWAHR'

'100'.

PERFORM bdc_field USING 'KNVV-WAERS'

'EUR'.

PERFORM bdc_field USING 'KNVV-KALKS'

'1'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0315'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNVV-VSBED'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'KNVV-KZAZU'

'X'.

PERFORM bdc_field USING 'KNVV-VSBED'

'ZB'.

PERFORM bdc_field USING 'KNVV-ANTLF'

'9'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0320'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNVV-PERFK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02D' '1350'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNVI-TAXKD(11)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'KNVI-TAXKD(01)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(02)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(03)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(04)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(05)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(06)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(07)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(08)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(09)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(10)'

'1'.

PERFORM bdc_field USING 'KNVI-TAXKD(11)'

'1'.

PERFORM bdc_dynpro USING 'SAPMF02D' '0324'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KNVP-PARVW(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=UPDA'.

PERFORM bdc_transaction USING 'XD01'.

ENDLOOP.

PERFORM close_group.