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

Regarding BDC

Former Member
0 Likes
771

Hi,

I had done a BDC using call transaction for ff67 tcode. After uploading the data,in the output iam getting messages 3 times(for sucess record and error record). Iam attaching the code. Thanx in adv.

&----


START-OF-SELECTION.

&----


CLEAR gu_upload.

REFRESH gu_upload.

&----


  • UPLOAD THE DATA FROM FLAT FILE TO INTERNAL TABLE

&----


PERFORM file_upload.

iopt-dismode = c_mode.

iopt-updmode = c_upd.

iopt-defsize = c_def_size.

&----


  • POPULATE THE DATA THROUGHSCREENS

&----


PERFORM bdc_upload.

&----


END-OF-SELECTION.

&----


*DISPLY THE ERROR RECORDS

  • PERFORM DISPLAY-DATA.

----


  • FORM file_upload *

----


FORM file_upload.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_file

i_begin_col = c_begcol

i_begin_row = c_begrow

i_end_col = c_endcol

i_end_row = c_endrow

TABLES

intern = int_count

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 2

OTHERS = 3.

LOOP AT int_count.

ASSIGN COMPONENT int_count-col OF STRUCTURE gu_upload TO <fs>.

IF sy-subrc NE 0.

EXIT.

ENDIF.

<fs> = int_count-value.

AT END OF row.

APPEND gu_upload.

CLEAR gu_upload.

ENDAT.

ENDLOOP.

LOOP AT gu_upload.

itab-vgman = gu_upload-vgman.

itab-valut = gu_upload-valut.

itab-kwbtr = gu_upload-kwbtr.

itab-chect_kf = gu_upload-chect_kf.

APPEND itab.

ENDLOOP.

ENDFORM. "file_upload

&----


*& Form BDC_UPLOAD

&----


FORM bdc_upload.

LOOP AT gu_upload.

CLEAR bdcdata.

REFRESH bdcdata.

&----


*& POPULATE THE DATA FOR FIRST SCREEN

&----


perform bdc_dynpro using 'SAPMF40K' '0101'.

perform bdc_field using 'BDC_CURSOR'

'FEBMKA-JNAME'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'FEBMKA-BUKRS'

'IN14'.

perform bdc_field using 'FEBMKA-HBKID'

gu_upload-hbkid.

perform bdc_field using 'FEBMKA-HKTID'

gu_upload-hktid.

perform bdc_field using 'FEBMKA-AZNUM'

gu_upload-aznum.

perform bdc_field using 'FEBMKA-AZDAT'

gu_upload-azdat.

perform bdc_field using 'FEBMKA-SSALD'

gu_upload-ssald.

perform bdc_field using 'FEBMKA-ESALD'

gu_upload-esald.

perform bdc_field using 'FEBMKA-BUDTM'

gu_upload-budtm.

perform bdc_field using 'FEBMKA-MNAM1'

gu_upload-mnam1.

perform bdc_field using 'FEBMKA-JNAME'

gu_upload-jname.

&----


*& POPULATE THE DATA FOR SECOND SCREEN

&----


DATA : fnam(20) TYPE c,

idx TYPE c.

MOVE 1 TO idx.

LOOP AT itab.

PERFORM bdc_dynpro USING 'SAPMF40K' '8000'.

PERFORM bdc_field USING 'BDC_CURSOR'

'FEBMKK-CHECT_KF(03)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

CONCATENATE 'FEBMKA-VGMAN(' idx ')' INTO fnam.

PERFORM bdc_field USING fnam

itab-vgman.

CONCATENATE 'FEBEP-VALUT(' idx ')' INTO fnam.

PERFORM bdc_field USING fnam itab-valut.

CONCATENATE 'FEBMKA-KWBTR(' idx ')' INTO fnam.

PERFORM bdc_field USING fnam itab-kwbtr.

CONCATENATE 'FEBMKK-CHECT_KF(' idx ')' INTO fnam.

PERFORM bdc_field USING fnam itab-chect_kf.

idx = idx + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPMF40K' '8000'.

perform bdc_field using 'BDC_CURSOR'

'FEBMKK-CHECT_KF(01)'.

perform bdc_field using 'BDC_OKCODE'

'=SICH'.

&----


*& POPULATE THE DATA FOR FOURTH SCREEN

&----


perform bdc_dynpro using 'SAPMF40K' '0101'.

perform bdc_field using 'BDC_CURSOR'

'FEBMKA-BUKRS'.

perform bdc_field using 'BDC_OKCODE'

'=BUCH'.

perform bdc_field using 'FEBMKA-BUKRS'

'IN14'.

perform bdc_field using 'FEBMKA-HBKID'

gu_upload-hbkid.

perform bdc_field using 'FEBMKA-HKTID'

gu_upload-hktid.

perform bdc_field using 'FEBMKA-AZNUM'

gu_upload-aznum.

perform bdc_field using 'FEBMKA-AZDAT'

gu_upload-azdat.

perform bdc_field using 'FEBMKA-SSALD'

gu_upload-ssald.

perform bdc_field using 'FEBMKA-ESALD'

gu_upload-esald.

perform bdc_field using 'FEBMKA-BUDTM'

gu_upload-budtm.

perform bdc_field using 'FEBMKA-MNAM1'

gu_upload-mnam1.

perform bdc_field using 'FEBMKA-JNAME'

gu_upload-jname.

perform bdc_dynpro using 'SAPMF40K' '0101'.

perform bdc_field using 'BDC_OKCODE'

'/EABBR'.

perform bdc_field using 'BDC_CURSOR'

'FEBMKA-BUKRS'.

&----


*& USING THE CALL TRANSACTION

&----


PERFORM call_transaction.

ENDLOOP.

ENDFORM. " BDC_UPLOAD

&----


*& Form VALIDATE_INPUT_FILE

&----


FORM validate_input_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_path = ' c:\ '

mask = ',.txt,.*.'

mode = 'O'

title = 'Upload '

IMPORTING

filename = p_file

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

ENDFORM. " VALIDATE_INPUT_FILE

----


  • 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.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. "bdc_field

&----


*& Form CALL_TRANSACTION

&----


FORM call_transaction.

DATA: l_index LIKE sy-tabix.

CALL TRANSACTION c_tcode USING bdcdata

MODE c_mode

MESSAGES INTO messtab.

*POPULATE THE ERROR RECORDS INTO INTERNAL TABLE

IF SY-SUBRC NE 0.

GU_DOWNLOAD-HBKID = GU_UPLOAD-HBKID.

  • GU_DOWNLOAD-HBKID = GU_UPLOAD-HBKID.

GU_DOWNLOAD-HKTID = GU_UPLOAD-HKTID.

GU_DOWNLOAD-AZNUM = GU_UPLOAD-AZNUM.

GU_DOWNLOAD-AZDAT = GU_UPLOAD-AZDAT.

GU_DOWNLOAD-ESALD = GU_UPLOAD-ESALD.

GU_DOWNLOAD-SSALD = GU_UPLOAD-SSALD.

GU_DOWNLOAD-BUDTM = GU_UPLOAD-BUDTM.

GU_DOWNLOAD-MNAM1 = GU_UPLOAD-MNAM1.

GU_DOWNLOAD-JNAME = GU_UPLOAD-JNAME.

GU_DOWNLOAD-VGMAN = GU_UPLOAD-VGMAN.

GU_DOWNLOAD-VALUT = GU_UPLOAD-VALUT.

GU_DOWNLOAD-KWBTR = GU_UPLOAD-KWBTR.

GU_DOWNLOAD-CHECT_KF = GU_UPLOAD-CHECT_KF.

APPEND GU_DOWNLOAD.

*DISPLAY THE PROGRESS OF PROCESS

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

PERCENTAGE = 0

TEXT = 'Downloading is in process'.

.

*DOWNLOADING THE ERROR RECORD

LV_OUT = P_FNAME2.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = LV_OUT

WRITE_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = GU_DOWNLOAD.

ENDIF.

IF NOT messtab[] IS INITIAL.

PERFORM format_message.

ENDIF.

ENDFORM. " CALL_TRANSACTION

&----


*& Form DISPLAY-DATA

&----


FORM display-data.

SKIP.

WRITE: 'SY-SUBRC' , sy-subrc.

ENDFORM. " DISPLAY-DATA

-


*

  • FORM FORMAT_MESSAGE *

----


FORM format_message.

DATA: l_msg(100),l_index type i.

  • l_index LIKE sy-tabix.

LOOP AT messtab.

READ TABLE gu_upload INDEX l_index.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = messtab-msgid

lang = sy-langu

no = messtab-msgnr

v1 = messtab-msgv1

v2 = messtab-msgv2

v3 = messtab-msgv3

v4 = messtab-msgv4

IMPORTING

msg = l_msg

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

WRITE:/ l_msg.

ENDLOOP.

ENDFORM.

5 REPLIES 5
Read only

Former Member
0 Likes
694

change this and checkout

LOOP AT messtab.

<b>l_index = sy-tabix.</b>

READ TABLE gu_upload INDEX l_index.

Read only

Former Member
0 Likes
694

Hi Chandrasekhar Jagarlamudi,

Thanx for ur reply.

I had changed that code but the same problem iam getting.

Read only

0 Likes
694

Then i suggest you to debug and check what is happening and find out the error

Read only

ferry_lianto
Active Contributor
0 Likes
694

Hi,

Please try this.


...

*&---------------------------------------------------------------------*
*& USING THE CALL TRANSACTION
*&---------------------------------------------------------------------*

PERFORM call_transaction.

CLEAR BDCDATA.                   "<--- Add here
REFRESH BDCDATA.                 "<--- Add here

ENDLOOP.
ENDFORM. " BDC_UPLOAD

...

Regards,

Ferry Lianto

Read only

Former Member
0 Likes
694

Try this.

Check sy-subrc after read statement.