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

BDC using call transaction

Former Member
0 Likes
852

Hi ,

This is vijay...

can anyone help me plz

Hi,

Iam uploading data using call transaction.Tcode is ff67.In this TCode we have the begining balance(ssald) and ending balance(esald).The new record we are uploading will take the begining balance as the previous record ending balance, if we give the begining balance wrong then the record does not saved it will show error(the begining balance does not match with the prior ending balance).

while uploading the data using MODE A iam able to get the desired output but by using the MODE N iam not able to get the desired output i,e if there is any error in the begining balance also the record is being saved iam not getting the error message.

Iam attaching the code below..please help me

report Z_BRS_BDC no standard page heading line-size 255.

&----


  • INTERNAL TABLES DECLARATIONS

&----


DATA : BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA : END OF bdcdata.

DATA: LV_OUT TYPE STRING.

DATA : iopt LIKE ctu_params.

DATA : wa_rec_err TYPE i.

DATA : wa_rec_wri TYPE i.

DATA : wa_tot_rec TYPE i.

DATA : amt(16) type c.

DATA : BEGIN OF gu_upload OCCURS 0,

hbkid LIKE febmka-hbkid,

hktid LIKE febmka-hktid,

aznum LIKE febmka-aznum,

azdat LIKE febmka-azdat,

ssald LIKE amt,

esald LIKE amt,

budtm LIKE febmka-budtm,

mnam1 LIKE febmka-mnam1,

jname LIKE febmka-jname,

vgman LIKE febmka-vgman,

valut LIKE febep-valut,

kwbtr(13) TYPE c,

chect_kf LIKE febmkk-chect_kf,

END OF gu_upload.

DATA:GU_DOWNLOAD LIKE GU_UPLOAD OCCURS 0 WITH HEADER LINE.

kishi*********************************

DATA: BEGIN OF itab OCCURS 0,

vgman LIKE febmka-vgman,

valut LIKE febep-valut,

kwbtr(13) TYPE c,

chect_kf LIKE febmkk-chect_kf,

END OF itab.

kishi)(_()00-8-09

DATA: BEGIN OF messtab OCCURS 0.

INCLUDE STRUCTURE bdcmsgcoll.

DATA: END OF messtab.

DATA: BEGIN OF messtab1 OCCURS 0.

INCLUDE STRUCTURE messtab.

DATA: END OF messtab1.

DATA : BEGIN OF int_count OCCURS 0.

INCLUDE STRUCTURE alsmex_tabline.

DATA : END OF int_count.

DATA: c_tcode LIKE sy-tcode VALUE 'FF67',

c_upd LIKE ctu_params-updmode VALUE 'S',

c_def_size LIKE ctu_params-defsize VALUE 'X'.

*VALUES FOR STARTING COLUMNS AND ROWS IN THE EXCEL SHEET

DATA : c_begcol TYPE i VALUE '1',

c_begrow TYPE i VALUE '1',

*DATA IS ENDED AT THE 13TH COLUMN IN THE EXCELSHEET

c_endcol TYPE i VALUE '13',

*LAST ROW IN THE EXCEL SHEET

c_endrow TYPE i VALUE '65536',

c_path(3) TYPE c VALUE 'C:\'.

*Field Symbols

FIELD-SYMBOLS: <fs>.

&----


  • SELECTION SCREEN PARAMETERS

&----


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS : p_file LIKE rlgrap-filename DEFAULT

'C:\ ',

*This is the path for downloading file

P_FNAME2 LIKE RLGRAP-FILENAME ,

c_mode LIKE ctu_params-dismode DEFAULT 'N'.

SELECTION-SCREEN END OF BLOCK b1.

&----


AT SELECTION-SCREEN.

&----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

*F4 HELP FOR FILE SELECTION

PERFORM validate_input_file.

&----


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.

*kishhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

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.

*kishiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

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'

  • '/00'.

*perform bdc_field using 'FEBMKA-VGMAN(01)'

  • 'z001'.

*perform bdc_field using 'FEBEP-VALUT(01)'

  • '2007/04/26'.

*perform bdc_field using 'FEBMKA-KWBTR(01)'

  • ' 5000-'.

*perform bdc_field using 'FEBMKK-CHECT_KF(01)'

  • '1122'.

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'

  • '/EENDE'.

*perform bdc_field using 'BDC_CURSOR'

  • 'FEBMKA-BUKRS'.

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.

  • CLEAR BDCDATA. "<--- Add here

  • REFRESH BDCDATA. "<--- Add here

*

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.

  • IF sy-subrc <> 0.

  • IF sy-subrc <> 0 AND sy-subrc <> 3.

  • MESSAGE e100(zm) WITH text-007.

  • ENDIF.

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

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

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

ENDIF.

  • WRITE:/ l_msg.

ENDLOOP.

WRITE:/ l_msg.

ENDFORM.

Message was edited by:

vijayd duvvada

6 REPLIES 6
Read only

Former Member
0 Likes
767

Hi,

First , keep the mode "E" and check the debugger , you can exactly see where the error is and let me know, what error and where it is stoping.

By your coding, i suppose to think that, its proble in the amount (currency). When ever you are try to pass the value, and value is not there in upload file or data is mismatch, the call transaction will fail in mode 'A' and succesful in mode 'N'.

In that situation use this before the currecny field.

IF NOT FEBMKA-SSALD IS INTIAL.

perform bdc_field using 'FEBMKA-ESALD'

gu_upload-esald.

ENDIF.

tHANKS

Manju

Read only

Former Member
0 Likes
767

Hi

plz help me

Read only

0 Likes
767

Hi,

Have you tired with the logical i have provided/

Try it.

Thanks

Manju.

Read only

0 Likes
767

Hi Manju,

I have tried it ..

Iam uploading the data with error begining balance so it must show the error message

but in Mode A it is showing the error message but in Mode N it is not showing the error msg

and the list being posted..

Read only

0 Likes
767

Hi,

First try in mode'E'. Then you can understand.

Give me your contact.

Thanks

Manju.

Read only

0 Likes
767

Hi Manju,

These are my contact details

mail id dvijays@gmail.com

and my number +91 9999332417