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, call transaction

Former Member
0 Likes
637

Hi All,

I used call transaction in my BDC program. I want to place all the error records in a seperate file. Please give the sample code for it.

Thank you.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
614

TYPES: BEGIN OF TY_LOG,
       ERROR TYPE STRING,		
       END OF TY_LOG.	

DATA: T_ERROR TYPE STANDARD TABLE OF TY_LOG
      WITH HEADER LINE.

DATA: gt_err_bi TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.

CALL TRANSACTION 'XXX' USING gt_data MODE c_mode
MESSAGES INTO gt_err_bi.

LOOP AT gt_err_bi WHERE msgtyp EQ 'E'.
MOVE gt_err_bi-msgv1 to t_log-error.
append t_log.
ENDLOOP.	

After that, use GUI_DOWNLOAD to download the T_LOG table.

Greetings,

Blag.

Hi All,

I used call transaction in my BDC program. I want to place all the error records in a seperate file. Please give the sample code for it.

Thank you.

4 REPLIES 4
Read only

Former Member
0 Likes
615

TYPES: BEGIN OF TY_LOG,
       ERROR TYPE STRING,		
       END OF TY_LOG.	

DATA: T_ERROR TYPE STANDARD TABLE OF TY_LOG
      WITH HEADER LINE.

DATA: gt_err_bi TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.

CALL TRANSACTION 'XXX' USING gt_data MODE c_mode
MESSAGES INTO gt_err_bi.

LOOP AT gt_err_bi WHERE msgtyp EQ 'E'.
MOVE gt_err_bi-msgv1 to t_log-error.
append t_log.
ENDLOOP.	

After that, use GUI_DOWNLOAD to download the T_LOG table.

Greetings,

Blag.

Read only

0 Likes
614

Thank you so much. It worked.

Read only

Former Member
0 Likes
614

Hi Use additional options:

MESSAGES INTO itab

Effect

Using this addition, all the messages sent during batch input processing are stored in an internal table itab of the type BDCMSGCOLL from the ABAP Dictionary.

Read only

Former Member
0 Likes
614

Hi,

Check the following code:

TYPES: BEGIN OF t_vend,

lifnr LIKE rf02k-lifnr, "Vendor Account Number

ktokk LIKE rf02k-ktokk, "Vendor account group

anred LIKE lfa1-anred, "Title

name1 LIKE lfa1-name1, "Vendor Name

sortl LIKE lfa1-sortl, "Sort field

land1 LIKE lfa1-land1, "Country Key

spras LIKE lfa1-spras, "Language Key

banks TYPE lfbk-banks, "Bank country key

bankl TYPE lfbk-bankl, "bank key

bankn TYPE lfbk-bankn, "account number

END OF t_vend.

TYPES: BEGIN OF t_sucrec,

vnum TYPE lfa1-lifnr, "Vendor Account Number

vnam TYPE lfa1-name1, "Vendor Name

END OF t_sucrec.

TYPES: BEGIN OF t_errrec,

err_rec TYPE string, "Error Record

lineno TYPE i, "Line Number

message TYPE string, "Error Message

END OF t_errrec.

DATA: v_file TYPE string, "Variable for storing flat file

it_vend TYPE STANDARD TABLE OF t_vend, "Internal table of Vendor

wa_vend LIKE LINE OF it_vend, "Workarea of Internal table it_vend

it_sucrec TYPE STANDARD TABLE OF t_sucrec, "Internal table of Success records

wa_sucrec LIKE LINE OF it_sucrec, "Workarea of Internal table it_sucrec

it_errrec TYPE STANDARD TABLE OF t_errrec,

wa_errrec LIKE LINE OF it_errrec,

it_bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE, "Internal table structure of BDCDATA

it_messagetab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE, "Tracing Error Messages

v_date LIKE sy-datum, "Controlling of session date

v_index LIKE sy-index, "Index Number

v_totrec TYPE i, "Total Records

v_errrec TYPE i, "Error Records

v_sucrec TYPE i, "Success Records

v_sesschk TYPE c. "Session maintenance

&----


*& SELECTION-SCREEN

&----


SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001 NO INTERVALS.

PARAMETERS: p_file TYPE rlgrap-filename. "rlgrap-filename is a predefined structure

SELECTION-SCREEN: END OF BLOCK blk1.

SELECTION-SCREEN: BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002 NO INTERVALS.

PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N',

p_update LIKE ctu_params-updmode DEFAULT 'A'.

SELECTION-SCREEN END OF BLOCK blk2.

&----


*& INITIALIZATION

&----


INITIALIZATION.

v_date = sy-datum - 1.

&----


*& AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file

&----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

IMPORTING

file_name = p_file.

&----


*& START-OF-SELECTION

&----


START-OF-SELECTION.

v_file = p_file.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = v_file

filetype = 'ASC'

has_field_separator = 'X'

TABLES

data_tab = it_vend

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.

&----


*& END-OF-SELECTION

&----


END-OF-SELECTION.

v_index = sy-index.

LOOP AT it_vend INTO wa_vend.

PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.

PERFORM bdc_field USING 'RF02K-LIFNR' wa_vend-lifnr.

PERFORM bdc_field USING 'RF02K-KTOKK' wa_vend-ktokk.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING 'sapmf02k' '0110'.

PERFORM bdc_field USING 'lfa1-anred' wa_vend-anred.

PERFORM bdc_field USING 'lfa1-name1' wa_vend-name1.

PERFORM bdc_field USING 'lfa1-sortl' wa_vend-sortl.

PERFORM bdc_field USING 'lfa1-land1' wa_vend-land1.

PERFORM bdc_field USING 'lfa1-spras' wa_vend-spras.

PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.

PERFORM bdc_field USING 'LFBK-BANKS(01)' wa_vend-banks.

PERFORM bdc_field USING 'LFBK-BANKL(01)' wa_vend-bankl.

PERFORM bdc_field USING 'LFBK-BANKN(01)' wa_vend-bankn.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'bdc_okcode' 'UPDA'.

CALL TRANSACTION 'XK01' USING it_bdctab

MODE p_mode

UPDATE p_update

MESSAGES INTO it_messagetab.

IF sy-subrc = 0.

&----


*& reading success records to corresponding internal table

&----


READ TABLE it_messagetab WITH KEY msgtyp = 'S'.

IF sy-subrc = 0.

wa_sucrec-vnum = it_messagetab-msgv1.

wa_sucrec-vnam = wa_vend-name1.

APPEND wa_sucrec TO it_sucrec.

CLEAR wa_sucrec.

ENDIF.

ELSE.

&----


*& reading error records to corresponding internal table

&----


READ TABLE it_messagetab WITH KEY msgtyp = 'E'.

IF sy-subrc = 0.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

no = it_messagetab-msgnr

v1 = it_messagetab-msgv1

v2 = it_messagetab-msgv2

v3 = it_messagetab-msgv3

v4 = it_messagetab-msgv4

IMPORTING

msg = wa_errrec-message.

wa_errrec-lineno = v_index.

APPEND wa_errrec TO it_errrec.

CLEAR wa_errrec.

ENDIF.

ENDIF.

CLEAR : it_bdctab, it_messagetab.

REFRESH: it_bdctab, it_messagetab.

ENDLOOP.

DESCRIBE TABLE it_vend LINES v_totrec.

DESCRIBE TABLE it_errrec LINES v_errrec.

DESCRIBE TABLE it_sucrec LINES v_sucrec.

PERFORM disp_data.

SKIP 2.

IF v_sucrec > 0.

PERFORM disp_success_data.

ENDIF.

SKIP 2.

IF v_errrec > 0.

PERFORM disp_error_data.

ENDIF.

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0104 text

  • -->P_0105 text

----


FORM bdc_dynpro USING program

dynpro.

CLEAR it_bdctab.

it_bdctab-program = program.

it_bdctab-dynpro = dynpro.

it_bdctab-dynbegin = 'X'.

APPEND it_bdctab.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


  • text

----


  • -->P_0109 text

  • -->P_IT_VEND_LIFNR text

----


FORM bdc_field USING fnam

fval.

CLEAR it_bdctab.

it_bdctab-fnam = fnam.

it_bdctab-fval = fval.

APPEND it_bdctab.

ENDFORM. " bdc_field

&----


*& Form disp_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM disp_data .

ULINE (45).

WRITE : / sy-vline,

18 'SUMMARY'(004) COLOR 1,

45 sy-vline.

ULINE /(45).

WRITE : / sy-vline,

'Total Records Processed'(007),

28 '=',

30 v_totrec,

45 sy-vline,

/ sy-vline,

'Error Records'(005),

28 '=',

30 v_errrec,

45 sy-vline,

/ sy-vline,

'Successful Records'(006),

28 '=',

30 v_sucrec,

45 sy-vline.

ULINE /(45).

ENDFORM. " disp_data

&----


*& Form disp_success_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM disp_success_data .

ULINE (45).

WRITE : / sy-vline,

14 'Successful Records'(012) COLOR 1,

45 sy-vline.

ULINE /(45).

WRITE : / sy-vline ,

'Vendor Number'(010) COLOR 2,

17 sy-vline,

25 'Vendor Name'(011) COLOR 2,

45 sy-vline.

ULINE /(45).

LOOP AT it_sucrec INTO wa_sucrec.

WRITE: / sy-vline ,

wa_sucrec-vnum,

17 sy-vline,

19 wa_sucrec-vnam,

45 sy-vline.

ENDLOOP.

ULINE /(45).

ENDFORM. " disp_success_data

&----


*& Form disp_error_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM disp_error_data .

ULINE (85).

WRITE : / sy-vline,

35 'Error Records'(013) COLOR 1,

85 sy-vline.

ULINE /(85).

WRITE : / sy-vline,

'Record Number'(008) COLOR 2,

sy-vline,

37 'Reason for error'(009) COLOR 2,

85 sy-vline.

ULINE /(85).

LOOP AT it_errrec INTO wa_errrec.

WRITE : / sy-vline,

wa_errrec-lineno,

17 sy-vline,

wa_errrec-message,

85 sy-vline.

ENDLOOP.

ULINE /(85).

ENDFORM. " disp_error_data

Regards,

Bhaskar