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: 

out put problem in call transaction f-27

Former Member
0 Kudos

hi,

i am get a problem in my call transaction programm that it will print success and error of programm 2 times but i want it only one time as the call transaction is executed i send my code to u plz help me.

o/p as

Document 1600000833 was posted in company code 8601

Document 1600000833 was posted in company code 8601

Document 1600000834 was posted in company code 8601

Document 1600000834 was posted in company code 8601

Document 1600000835 was posted in company code 8601

Document 1600000835 was posted in company code 8601

on screen when transaction executed

START-OF-SELECTION.

PERFORM upload USING p_file.

IF p_back EQ c_x.

PERFORM bdc.

ELSEIF p_onli EQ c_x.

PERFORM bdc.

ENDIF.

&----


*& Form bdc

&----


  • text

----


FORM bdc.

LOOP AT lt_output.

v_index = sy-tabix.

REFRESH i_bdcdata.

CLEAR i_bdcdata.

READ TABLE lt_output INDEX 1.

PERFORM bdc_dynpro USING 'SAPMF05A' '0100' c_x.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'BKPF-BLDAT' lt_output-bldat.

PERFORM bdc_field USING 'BKPF-BLART' lt_output-blart.

PERFORM bdc_field USING 'BKPF-BUKRS' lt_output-bukrs.

PERFORM bdc_field USING 'BKPF-BUDAT' lt_output-budat.

PERFORM bdc_field USING 'BKPF-MONAT' lt_output-monat.

PERFORM bdc_field USING 'BKPF-WAERS' lt_output-waers.

PERFORM bdc_field USING 'BKPF-XBLNR' lt_output-xblnr.

PERFORM bdc_field USING 'FS006-DOCID' lt_output-docid.

PERFORM bdc_field USING 'RF05A-NEWBS' lt_output-newbs.

PERFORM bdc_field USING 'RF05A-NEWKO' lt_output-newko.

PERFORM bdc_dynpro USING 'SAPMF05A' '0302' c_x.

PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'BSEG-WRBTR' lt_output-wrbtr.

PERFORM bdc_field USING 'BSEG-ZFBDT' lt_output-zfbdt.

PERFORM bdc_field USING 'RF05A-NEWBS' lt_output-newbs2.

PERFORM bdc_field USING 'RF05A-NEWKO' lt_output-newko2.

PERFORM bdc_dynpro USING 'SAPMF05A' '0301' c_x.

PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-WRBTR'.

PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.

PERFORM bdc_field USING 'BSEG-WRBTR' lt_output-wrbtr2.

PERFORM f_call_transaction.

ENDLOOP.

ENDFORM. "bdc

----


  • FORM BDC_DYNPRO *

----


  • ........ *

----


  • --> PROGRAM *

  • --> DYNPRO *

----


FORM bdc_dynpro USING program dynpro dynbegin.

i_bdcdata-program = program.

i_bdcdata-dynpro = dynpro.

i_bdcdata-dynbegin = dynbegin.

APPEND i_bdcdata.

CLEAR i_bdcdata.

ENDFORM. "BDC_DYNPRO

----


  • FORM *

----


  • ........ *

----


FORM bdc_field USING fnam fval.

i_bdcdata-fnam = fnam.

i_bdcdata-fval = fval.

APPEND i_bdcdata.

CLEAR i_bdcdata.

ENDFORM. "BDC_FIELD

&----


*& Form upload

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM upload USING p_filename.

DATA: p_file1 TYPE string.

p_file1 = p_file.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = p_file1

filetype = 'DAT'

TABLES

data_tab = lt_output.

ENDFORM. " upload

----


  • FORM F_CALL_TRANSACTION *

----


  • This subroutine executes the F-27 BDC transaction *

----


FORM f_call_transaction.

REFRESH it_messtab.

IF p_back EQ c_x.

  • Execute the BDC transaction in background mode

CALL TRANSACTION c_f27 USING i_bdcdata

MODE c_n

MESSAGES INTO it_messtab.

*Get the BDC error messages

PERFORM f_error_handling USING it_messtab-msgid

it_messtab-msgnr

it_messtab-msgv1

it_messtab-msgv2

it_messtab-msgv3

it_messtab-msgv4.

ELSEIF p_onli EQ c_x.

  • Execute the BDC transaction in online mode

CALL TRANSACTION c_f27 USING i_bdcdata

MODE c_a

MESSAGES INTO it_messtab.

*Get the BDC error messages

PERFORM f_error_handling USING it_messtab-msgid

it_messtab-msgnr

it_messtab-msgv1

it_messtab-msgv2

it_messtab-msgv3

it_messtab-msgv4.

ENDIF.

ENDFORM. " f_call_transaction

*----


  • FORM f_error_handling

*

*----


  • This subroutine populates the BDC table

*

*----


FORM f_error_handling USING it_messtab-msgid

it_messtab-msgnr

it_messtab-msgv1

it_messtab-msgv2

it_messtab-msgv3

it_messtab-msgv4.

  • Get the BDC error messages

LOOP AT it_messtab.

CLEAR message.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

lang = 'EN'

no = sy-msgno

v1 = sy-msgv1

v2 = sy-msgv2

v3 = sy-msgv3

v4 = sy-msgv4

IMPORTING

msg = message.

CASE it_messtab-msgtyp.

WHEN 'S'.

WRITE:/ message.

CLEAR message.

WHEN 'E'.

FORMAT COLOR 6 ON.

WRITE:/ message.

CLEAR message.

ENDCASE.

ENDLOOP.

ENDFORM. " f_error_handling

plz send me the solution i will give points its urgent.

thanks

jayant

2 REPLIES 2

Former Member
0 Kudos

Hi,

I assume that you are getting 2 success messaes and 2 error messaes and you want to remove the duplicates.

what you need to do in f_error_handling method call is delete dupliactes before looping and diplaying the data.

sort it_messtab.

delete adjacent duplicates from it_messtab.

Regards,

Shruthi R

Former Member
0 Kudos

Hi,

The problem is that whenever you run a transaction it generates more than one success message . because of this even though we have one record to execute , the messages get displayed more than once.

In general the message type remains same but the msgid and msgno differs for each message.

so use delete adjacent duplicates from itab comparing fields.

here fields refer to the fields for which you want to check the duplicate values.

Reward points if helpful.

Thanks and Regards.