Queueing in SAP BC Urgent Pls

Hi All,

current situation is People soft -> (other elements) ->BC -> SAP

presently BC saves the xml file and tries sending to SAP. but when SAP is down we would like to DO SOMETHING at BC side such that BC could stop sending messages and woul d resume sending messages once SAP is UP. Kinda’ queueing and resending automatically !!!

I’d like to know u guys’ expertise in this area …
Kindly shower ur priceless inputs…
Many thanks in advance

what release of your SAP adapter are you running? get the most recent SP5 and it improves upon the rolled back messages being retried automatically, else you can try/ catch the outbound process to SAP and log the files in a separate directory… set a scheduled job to RFC ping SAP and submit files upon success…
2 cents per milly

Hey
thanks for the quick response. I’m using BC46_SR5 service pack. Hope u r referring to that …
Coming 2 ur suggestion i’ve got couple of questions ,
currently i’m using pub.sap.transport.ALEutboundProcess service inside my flow. Cud u tell me how do we trap the status of this call inside my flow ?
cud u pls tell me how can i call again my main flow service with saved XML to resend when SAP is up?
Thanks

Sreedhar,

Another option would be when your target system is down then in your main flow of catch sequence capture that xml document to string(store as a Blob),documenttype,status flag(P or F),datetimestamp(sysdate) and insert into a DB(Oracle or SQL server)this is like a Queue,and create another scheduled service which will select all the Status flag(F)records order by sysdate and loop thru the results and invoke your main flow and proceed further.

Actually we followd this logic for some of implementations when doing error recovery process.

This is Kinda’ queueing and resending automatically.will this work for you?

HTH,
RMG.

ok in your call to sap do this:
Your flow steps here until your SAP call and submission
.
.
SEQUENCE [EXIT ON DONE]
SEQUENCE [EXIT ON FAIL] ← THIS IS YOUR TRY
pub.sap.transport.ALEOutboundProcess
SEQUENCE [EXIT ON DONE]<-- THIS IS YOUR CATCH
pub.flow:getLastError
your flow here toINSPECT YOUR PIPELINE, IF U STILL HAVE THE
xmlData prior to your decode, then write this to a file
EXIT FLOW [SUCCESS] ← last step if no other steps flow

Create a separate service to check SAP status [can use pub.sap.client:connect for this - >ensure you set in variable serverName, this will be the name of your SAP server set in the SAP adapter, check the result -> “ok” means SAP is up, anything else is bad!

hth

Hi All,

Sorry for hte delayed response as i was on a LONG VACATION . Thakns for your inputs. RMG - We don’t have ORACLE server to follow your suggestion and TOPSTER’s idea is almost similar to yours and would try to follow it.

thanks
Sreedhar K

Hi All,

Sorry for hte delayed response as i was on a LONG VACATION . Thakns for your inputs. RMG - We don’t have ORACLE server to follow your suggestion and TOPSTER’s idea is almost similar to yours and would try to follow it.

thanks
Sreedhar K

Topster are you sure that SAP adapter 4.6 SP5 automatically resubmits
transactions in case of SAP failure ?
I have the same problem see my post:
http://www.wmusers.com/cgi-local/wmusers/show.cgi?117/42842

another point to note is that the transactions that are rolled back do automatically retry, yes I know it throws errors when there are failures, but there is a good amount of persistance that is naturally available. Our preference is the rfc ping to ensure that SAP is up prior to any submission, though we have a caveat that kicks in such a check during scheduled down-time [i.e weekends]

hth
T

Guys,

how to ping the SAP Server ? is there any service in SAP BC ?? i’m not able to find wm.server.ping ??? is there anything i’m missing?
pls guide me…

Thanks
sreedhar

Guys,

i’m in need of checking the existence of a variable in pipeline ?
Topster - i’m following your flow to check TRY & CATCH logic and how to check the existence of a variable ?
I kno wthis is elementary , but couldn’t get any idea ?

Thanks in advance
Sreedhar K

You could try using Trading Networks and the retry capability of delivery services. You’d need to write a custom delivery service that wraps the SAP calls, which shouldn’t be difficult.

presume you want something along the lines of :
BRANCH [switch -> varibleName]
SEQUENCE [label -> $NULL]
DO SOMETHING
SEQUENCE [label ->$default]
DO SOMETHING ELSE

hth