07-12-2005 11:55 AM
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 .
07-12-2005 1:38 PM
07-12-2005 1:38 PM
07-12-2005 1:45 PM
Hi Rich,
I tried this but still the webservice created out of it gives the same problem. Any other solution.
Best Regards,
Sudhi
07-12-2005 2:39 PM
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
07-12-2005 2:36 PM
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