Skip to Content
0
Former Member
Nov 29, 2006 at 07:02 AM

BDC Coding & Short Dump

99 Views

HI Experts,

I need to change the Document by using the FB02 Transaction. For this I am using BDC Call transaction. I did this by Recording. While Executing I am getting short dump. Can any one help me ASAP.

BDC Code….

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

CONSTANTS: lv_tcode LIKE tstc-tcode VALUE 'FB02'.

DATA: it_bseg LIKE bseg OCCURS 0 WITH HEADER LINE.

DATA: w_chect LIKE regud-chect, "CHECK NO.

w_bukrs LIKE bseg-bukrs, "COMPANY CODE

w_belnr LIKE bseg-belnr, "Accounting Doc. No.

w_augbl LIKE bseg-augbl, "Doc No. Of Clearing Doc.

w_blart LIKE bkpf-blart, "Document type.

w_zlsch LIKE bseg-zlsch, "Payment methods.

w_assig LIKE bseg-zuonr, "Assignment

w_count(2) TYPE n,

w_rep(2) TYPE n.

*First find out the Posting Document No.

SELECT SINGLE augbl FROM bseg INTO w_augbl

WHERE bukrs = regup-bukrs

AND belnr = regup-belnr.

SELECT * FROM bseg INTO TABLE it_bseg

WHERE bukrs = regup-bukrs

AND belnr = w_augbl.

*Findint the Cheque No. from PAYR

SELECT SINGLE chect FROM payr INTO w_chect

WHERE vblnr = w_augbl

AND rzawe IN ('C','S').

*Finding the Posting Document Type

SELECT SINGLE blart FROM bkpf INTO w_blart

WHERE belnr = w_augbl.

SELECT COUNT( * ) FROM bseg INTO w_count

WHERE belnr = w_augbl

AND zlsch IN ('C','S').

IF w_blart EQ 'ZP' AND w_count GT 0.

MOVE 01 TO w_rep.

PERFORM bdc_dynpro USING 'SAPMF05L' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF05L-BELNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RF05L-BELNR'

w_augbl.

PERFORM bdc_field USING 'RF05L-BUKRS'

regup-bukrs.

PERFORM bdc_field USING 'RF05L-GJAHR'

regup-gjahr.

w_count = w_count + 1.

DO w_count TIMES.

PERFORM bdc_dynpro USING 'SAPMF05L' '0700'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF05L-ANZDT(w_rep)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=PK'.

IF w_rep EQ 01.

PERFORM bdc_dynpro USING 'SAPMF05L' '0302'.

PERFORM bdc_field USING 'BDC_CURSOR'

'BSEG-ZUONR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=AB'.

PERFORM bdc_field USING 'BSEG-ZUONR'

w_chect+7(6).

  • PERFORM bdc_field USING 'BDC_OKCODE'

  • '=ENTE'.

w_rep = w_rep + 1.

ELSE.

PERFORM bdc_dynpro USING 'SAPMF05L' '0300'.

PERFORM bdc_field USING 'BDC_CURSOR'

'BSEG-ZUONR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=AB'.

PERFORM bdc_field USING 'BSEG-ZUONR'

w_chect+7(6).

PERFORM bdc_field USING 'DKACB-FMORE'

'X'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-PRCTR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

w_rep = w_rep + 1.

ENDIF.

ENDDO.

PERFORM bdc_field USING 'BDC_OKCODE'

'=AE'.

PERFORM call_transaction.

ENDIF.

FORM call_transaction .

CALL TRANSACTION lv_tcode USING bdcdata

MODE 'N'

UPDATE 'S'

MESSAGES INTO messtab.

REFRESH bdcdata.

ENDFORM. " call_transaction

FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM.

FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM.

And I am getting Short Dump …..

Runtime Error DBIF_RSQL_INVALID_CURSOR

Exception CX_SY_OPEN_SQL_DB

Can any one help me ASAP.

Thanks & Regards

Rajendra