‎2006 Nov 29 7:02 AM
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
‎2006 Nov 29 7:11 AM
At what line, the coding shows the short dump. See that particular SELECT statement.
Regards,
Ravi
Note - Please mark all the helpful answers
‎2006 Nov 29 7:11 AM
‎2006 Nov 29 7:30 AM
HI,
Actually I including this code in the RFFOUS_C Program, this pgm for Cheque printing Printing. After generate Cheques, in the Transaction FBO2 if we see the related Document. The Assignment field of all the line items must be filled with Cheque no. For this I included the above BDC code in the ZRFFOUS_C pgm. For this I am getting that short dump in the standard program coding selection statement.
Thanks & Regards
Rajendra