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