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: 

Processing without RFC autorizations

Former Member
0 Kudos

Hi,

I currently have no RFC autorizations set, so I can't read tables or anything remotly. I'd like to create an external program to read the SAP's oracle tables, but I can't seem to find if it's possible without RFC (directly doa query maybe?).

One of the other solutions that I wouldn't mind is that I could have SAP opened, but a kind of script that would process some datas within SAP (don't really know how to explain).

Basically, all I would need is to be able to do some automatizations, but without having to do Remote Function Calls.

PS: I also need to have data modified into the tables.

Thanks!

Edited by: Eric Beaudet on Feb 16, 2008 4:09 PM

5 REPLIES 5

Former Member
0 Kudos

Hi Eric,

I find it a bit strange that you do not have any RFC authorizations at all. It might be an indication that your system is not setup to check RFC (I am assuming that you were wanting to call yourself)?

As a general remark: It would be questionable to put your own ID into a remote connection anyway... someone else might find (and use) it as well.

Or do you want to do this from a client application?

Sorry, that does not really help you. But I wanted to comment anyway

Cheers,

Julius

0 Kudos

Thanks for the answer. Basically, when I try executing a simple client program I made in java, I get the following error message:

Error : (104) RFC_ERROR_SYSTEM_FAILURE: User **** has no RFC authorization for function group SDTX

So I guess that's an indication that I can't do it. Sample code:


public void systemInfo()
    {
        try {

            // Get a function template from the repository
            IFunctionTemplate ftemplate = repository.getFunctionTemplate("RFC_READ_TABLE");

            // Create a function from the template
            JCO.Function function = new JCO.Function(ftemplate);
            
            // Get a client from the pool
            JCO.Client client = JCO.getClient(SID);

            // We can call 'RFC_SYSTEM_INFO' directly since it does not need any input parameters
            client.execute(function);

            // The export parameter 'RFCSI_EXPORT' contains a structure of type 'RFCSI'
            JCO.Structure s = function.getExportParameterList().getStructure("AFVGD");

            // Use enumeration to loop over all fields of the structure
            System.out.println("System info for " + SID + ":\n" +
                               "--------------------");

            // Release the client into the pool
            JCO.releaseClient(client);
        }
        catch (Exception ex) {
            System.out.println("Caught an exception: \n" + ex);
        }
    }

When calling this method, I get an error. I know that's not the coding forum, but I guess I did it all right and the RFC auto is the only prob.

Any ways around RFC? Or I'm pretty much doomed =/

Thanks

0 Kudos

Hi Eric,

Chances are fairly good that you can interpret that system failure as limitations to the internal tables and unicode (in)compatability of that function pool (see "OSS" - it is a demo function). There might be a "hack" for that on the inside, but see SAP note #7 first.

Can I safely assume that this is in a demo system? I would think that as a developer you could create such RFC's of your own in a sandbox and call them if you, for example, wanted to create your own development studio. There are a number of ways of doing that. Of course, any RFC method you call which bypasses checks could of course be bypassed by others as well...

I would like to add that in a non-demo system (and remote access to a production system) I would recommend going via the approval for access to the data and access to the (released) APIs to access that same data. RFC_READ_TABLE does not formally belong to those.

Sorry again to be a "spoil-sport".

Cheers,

Julius

0 Kudos

Alright thanks a lot, will defenatly have a lot of reading and looking to do. Very helpful

0 Kudos

Hi Eric,

I understand that you have marked your question as answered.

If I may make 3 more remarks anyway (+ a PS edit):

1) Based on your (code) comments you are already aware of SUTL. I do not recommend going that way.

Infact, a bad idea from the start... (note that authorizations are also client specific..).

2) Processsing of an RFC should idealy be subject to the application authorization of that (exposed)

RFC, not the S_RFC authority itself.

3) Have you found it difficult to identify all the tables and structures which you want to read and

which of those, at which point, to change?

> will defenatly have a lot of reading and looking to do.

Before you do that, try this:

=> Transaction BAPI.

Cheers,

Julius

PS: Some starting pointers for your reading which I am aware of / commented on:

and

Edited by: Julius Bussche on Feb 16, 2008 10:39 PM