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: 

Error with Call Transaction or Session

0 Kudos

Hi All,

I have written a BDC RFC for 'PO13' transaction which will create a position. When the BDC is run in the foreground mode and with all screens displyed then the BDC runs absolutely perfect but once this is made as a webservice it gives an error in the IE saying a CNTL_SYSTEM_ERROR.

I tried my hand in making it as a session. If the BDC is scheduled as a session and executed in background it gives the exact same error message.

The only way it works is making it as a foreground or make it a foreground but to display only error screens.

Is there a way that we can change the properties of the BDC session to run it as "Show only Error screens" programatically ?

Best Regards

Sudhi.

The function module code is as follows:

FUNCTION ZHR_CREATE_POSN1.

*"----


""Local Interface:

*" IMPORTING

*" REFERENCE(SHORT017) LIKE BDCDATA-FVAL

*" REFERENCE(STEXT018) LIKE BDCDATA-FVAL

*" REFERENCE(SHORT021) LIKE BDCDATA-FVAL

*" REFERENCE(STEXT022) LIKE BDCDATA-FVAL

*" REFERENCE(ORGUNIT) LIKE BDCDATA-FVAL

*" EXPORTING

*" REFERENCE(SUBRC) LIKE SYST-SUBRC

*" REFERENCE(POSITIONID) LIKE HRP1000-OBJID

*"----


TABLES: USR01.

DATA: CTU LIKE APQI-PUTACTIVE VALUE ' ',

MODE LIKE APQI-PUTACTIVE VALUE 'N',

UPDATE LIKE APQI-PUTACTIVE VALUE 'L',

GROUP LIKE APQI-GROUPID VALUE 'SUDHI1',

USER LIKE APQI-USERID,

KEEP LIKE APQI-QERASE,

HOLDDATE LIKE APQI-STARTDATE,

NODATA LIKE APQI-PUTACTIVE VALUE '/',

PLVAR_001 LIKE BDCDATA-FVAL VALUE '01',

SEARK_002 LIKE BDCDATA-FVAL VALUE '',

TIMR6_003 LIKE BDCDATA-FVAL VALUE 'X',

BEGDA_004 LIKE BDCDATA-FVAL,

ENDDA_005 LIKE BDCDATA-FVAL,

PLVAR_006 LIKE BDCDATA-FVAL VALUE '01',

TIMR6_007 LIKE BDCDATA-FVAL VALUE 'X',

BEGDA_008 LIKE BDCDATA-FVAL,

ENDDA_009 LIKE BDCDATA-FVAL,

MARKFELD_01_010 LIKE BDCDATA-FVAL VALUE 'X',

PLVAR_011 LIKE BDCDATA-FVAL VALUE '01',

TIMR6_012 LIKE BDCDATA-FVAL VALUE 'X',

BEGDA_013 LIKE BDCDATA-FVAL,

ENDDA_014 LIKE BDCDATA-FVAL,

BEGDA_015 LIKE BDCDATA-FVAL,

ENDDA_016 LIKE BDCDATA-FVAL,

BEGDA_019 LIKE BDCDATA-FVAL,

ENDDA_020 LIKE BDCDATA-FVAL,

EDATE(8) TYPE C VALUE '99991231'.

USER = SY-UNAME.

  • HOLDDATE = SY-DATUM.

SELECT SINGLE * FROM USR01 WHERE BNAME = SY-UNAME.

CASE USR01-DATFM.

WHEN '1'.

CONCATENATE SY-DATUM6(2) '.' SY-DATUM4(2) '.' SY-DATUM(4) INTO

BEGDA_004.

CONCATENATE EDATE6(2) '.' EDATE4(2) '.' EDATE(4) INTO

ENDDA_005.

WHEN '2'.

CONCATENATE SY-DATUM4(2) '/' SY-DATUM6(2) '/' SY-DATUM(4) INTO

BEGDA_004.

CONCATENATE EDATE4(2) '/' EDATE6(2) '/' EDATE(4) INTO ENDDA_005.

WHEN '3'.

CONCATENATE SY-DATUM4(2) '-' SY-DATUM6(2) '-' SY-DATUM(4) INTO

BEGDA_004.

CONCATENATE EDATE4(2) '-' EDATE6(2) '-' EDATE(4) INTO ENDDA_005.

WHEN '4'.

CONCATENATE SY-DATUM(4) '.' SY-DATUM4(2) '.' SY-DATUM6(2) INTO

BEGDA_004.

CONCATENATE EDATE(4) '.' EDATE4(2) '.' EDATE6(2) INTO ENDDA_005.

WHEN '5'.

CONCATENATE SY-DATUM(4) '/' SY-DATUM4(2) '/' SY-DATUM6(2) INTO

BEGDA_004.

CONCATENATE EDATE(4) '/' EDATE4(2) '/' EDATE6(2) INTO ENDDA_005.

WHEN '6'.

CONCATENATE SY-DATUM(4) '-' SY-DATUM4(2) '-' SY-DATUM6(2) INTO

BEGDA_004.

CONCATENATE EDATE(4) '-' EDATE4(2) '-' EDATE6(2) INTO ENDDA_005.

ENDCASE.

BEGDA_008 = BEGDA_004.

BEGDA_013 = BEGDA_004.

BEGDA_015 = BEGDA_004.

BEGDA_019 = BEGDA_004.

ENDDA_009 = ENDDA_005.

ENDDA_014 = ENDDA_005.

ENDDA_016 = ENDDA_005.

ENDDA_020 = ENDDA_005.

DATA: L_OBJID LIKE HRP1000-OBJID OCCURS 0 WITH HEADER LINE.

DATA : V_COUNT TYPE I,

V_OBJID LIKE BDCDATA-FVAL,

MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

SUBRC = 0.

PERFORM BDC_NODATA USING NODATA.

PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.

PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'PM0D1-SEARK'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'PPHDR-PLVAR'

PLVAR_001.

PERFORM BDC_FIELD USING 'PM0D1-SEARK'

SEARK_002.

PERFORM BDC_FIELD USING 'PM0D1-TIMR6'

TIMR6_003.

PERFORM BDC_FIELD USING 'PPHDR-BEGDA'

BEGDA_004.

PERFORM BDC_FIELD USING 'PPHDR-ENDDA'

ENDDA_005.

PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'PPHDR-PLVAR'

PLVAR_006.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'TT_T777T-ITEXT(01)'.

PERFORM BDC_FIELD USING 'PM0D1-TIMR6'

TIMR6_007.

PERFORM BDC_FIELD USING 'PPHDR-BEGDA'

BEGDA_008.

PERFORM BDC_FIELD USING 'PPHDR-ENDDA'

ENDDA_009.

PERFORM BDC_FIELD USING 'MARKFELD(01)'

MARKFELD_01_010.

PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=INSE'.

PERFORM BDC_FIELD USING 'PPHDR-PLVAR'

PLVAR_011.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'TT_T777T-ITEXT(01)'.

PERFORM BDC_FIELD USING 'PM0D1-TIMR6'

TIMR6_012.

PERFORM BDC_FIELD USING 'PPHDR-BEGDA'

BEGDA_013.

PERFORM BDC_FIELD USING 'PPHDR-ENDDA'

ENDDA_014.

PERFORM BDC_DYNPRO USING 'MP100000' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'P1000-STEXT'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'P1000-BEGDA'

BEGDA_015.

PERFORM BDC_FIELD USING 'P1000-ENDDA'

ENDDA_016.

PERFORM BDC_FIELD USING 'P1000-SHORT'

SHORT017.

PERFORM BDC_FIELD USING 'P1000-STEXT'

STEXT018.

PERFORM BDC_DYNPRO USING 'MP100000' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'P1000-BEGDA'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=UPD'.

PERFORM BDC_FIELD USING 'P1000-BEGDA'

BEGDA_019.

PERFORM BDC_FIELD USING 'P1000-ENDDA'

ENDDA_020.

PERFORM BDC_FIELD USING 'P1000-SHORT'

SHORT021.

PERFORM BDC_FIELD USING 'P1000-STEXT'

STEXT022.

PERFORM BDC_TRANSACTION TABLES MESSTAB

USING 'PO13'

CTU

MODE

UPDATE.

IF SY-SUBRC <> 0.

SUBRC = SY-SUBRC.

EXIT.

ENDIF.

PERFORM CLOSE_GROUP USING CTU.

CALL FUNCTION 'ENQUE_SLEEP'

EXPORTING

SECONDS = 1

  • EXCEPTIONS

  • SYSTEM_FAILURE = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*-- Select the OBJID by Querying the table with Username,Object type,

*-- Change Date

SELECT OBJID FROM HRP1000

INTO TABLE L_OBJID

WHERE UNAME EQ SY-UNAME

AND OTYPE EQ 'S'

AND AEDTM EQ SY-DATUM.

*-- Decribe the table to get the max count

DESCRIBE TABLE L_OBJID LINES V_COUNT.

*-- Read table to at the max count to get the last record

READ TABLE L_OBJID INDEX V_COUNT.

*--EXPORT the OBJID

POSITIONID = L_OBJID.

V_OBJID = POSITIONID.

ENDFUNCTION.

INCLUDE BDCRECXY .

1 ACCEPTED SOLUTION

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

Yes, change this line of code....

MODE LIKE APQI-PUTACTIVE VALUE 'N',

to this....

MODE LIKE APQI-PUTACTIVE VALUE 'E',

Regards,

Rich Heilman

4 REPLIES 4

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

Yes, change this line of code....

MODE LIKE APQI-PUTACTIVE VALUE 'N',

to this....

MODE LIKE APQI-PUTACTIVE VALUE 'E',

Regards,

Rich Heilman

0 Kudos

Hi Rich,

I tried this but still the webservice created out of it gives the same problem. Any other solution.

Best Regards,

Sudhi

0 Kudos

Hi Sudhuindra,

The OSS Note 721791 says that it is not possible for this transaction. So You may have to look for other options...

Regards,

Anand Mandalika.

Oops! I haven't seen that the same answer is already given...

Message was edited by: Poornanand Mandalika

Former Member
0 Kudos

According to OSS Note # 721791, you can't run this transaction in a bacground BDC. (It needs an active gui connection). It does give some ideas for workarounds.

Rob