Sun*MS body rewriting -- relay implementation per RFCs

I read and understand RFC 2821 to mean that relays should generally try to leave messages alone. To quote just one section of the RFC...
   A 'relay' SMTP system (usually referred to just as a 'relay') receives
   mail from an SMTP client and transmits it, without modification to
   the message data other than adding trace information, to another SMTP
   server fo r further relaying or fo r delivery.There are 76 character length references in RFC2045, but that refers to the encoded body lines and not headers/boundaries nor SMTP.
S1MS rewrites From: lines, message boundaries?, and wraps longish lines (76?). Most of the time, this rewriting is unnecessary and IMHO violates RFC2821 (and RFC2045 is not relevant, reread) and does nothing except involve more work and no doubt reduce throughput.
I can understand the option to rewrite long lines if they are exceptionally long (1000 characters per RFC), but S1MS seems to break all lines longer than 76 characters. I can understand rewriting local From: addresses if needed, but it seems to rewrites all From: lines remote or otherwise. I've also noticed different S1MS sometimes also rewrite Content boundaries as "Boundary_(ID_blah)". I'm wondering what exactly is rewritten, controlled by what options, and under what circumstances? Why the extra work? Because any subsequent smtp server will still need to parse everything anyways, I don't appreciate all the work and don't understand why it is done.
The crux of this was a recent incident where an 83 character attachment filename was wrapped across two lines causing problems with third party software (it has been fixed, but we both looked at RFCs and I felt S*MS was in the wrong on two counts).
Despite this particular incident, I've long had other reservations (delays, truncated messages) along with the how/why modifications. The end result obfuscates spam with each line that is modified (or corrected, dates inserted, etc).
I looked through this message base looking for other posts perhaps related to this and nothing stuck out. It seems from the messages I saw that S*MS only bothers with the exceptionally long 1000 character lines so I'm now wondering what is exactly is responsible for changing the Content Boundary and wrongly wrapping all lines longer than 76 lines which I see time and time again on many different S*MS systems.

Authoratative answers:
The customer is correct that the MTA will under a number of circumstances
rewrite boundary markers, force wrapping of "long" lines, etc. In general, we
process all outermost header lines coming through the MTA, and may well process
inner header lines as well.
We are fully aware of the RFC 2821 wording regarding relay SMTP machines
"leaving messages alone". The problem is that in our experience, that does
not in fact work well. There are NUMEROUS, NUMEROUS message problems that
our MTA "fixes up", without customers ever having been aware of there having
been a problem in the first place. The sorts of problem we used to encounter
tended to be with messages gatewayed in from non-Internet environments; I consider
nowadays the problems tend to be more with messages submitted from "light weight",
and unfortunately sloppy, e-mail clients. (The MTA does in fact have a configurable
approach for "leave relayed messages entirely alone". We've left it undocumented,
and so far continue to leave it undocumented, and beyond strongly discouraging use
of it don't even talk about it with customers, because in real life, it tends to
not work well.)
Customers, being unaware of how much is getting "fixed up", tend to think that
things would be "better" if we'd "just leave the messages alone". Or rather,
what customers really want is "fix up (a), (b), and (c) problems, but leave
(d) alone, except when it's coming from (e) or going to (f), or except on
every other Thursday when the moon is full..." blah, blah. In other words,
customers want to have their cake and eat it too, when it comes to message
"fix up". Our overwhelming experience is that our fix up is overall
beneficial -- and that the supposed "downsides" of message fixup are mostly
bogus: that inherent processing that customers do in fact want gets you so
far down the road of message processing that the supposed "extra" overhead
is not in fact "extra" because it's already had to be incurred, and that
most of the supposed "problems" of the fixup are due to broken other
e-mail software that's not correctly handling the correct message forms
(and that for every one case of broken software that's stumbling on the
corrected message form, there were NUMEROUS cases of which the customer
was blissfully unaware where our correction of the message form improved
interoperability). Also, the MTA has numerous configuration "knobs" that
can affect exactly what we emit, so even when the real problem is a bug
(lack of standards-compliance) on the remote side, it's often possible
to configure something on the MTA side to emit a form that the broken
remote side will be able to handle.
Now it is true that we try to avoid any more processing than necessary
-- but the fact is that there are extremely many cases, triggered by a
wide variety of original message factors and configuration choices, where
processing is necessary.
As regards line folding: Please refer the customer to section 2.1.1
Line Length Limits, of RFC 2822, in particular the second sentence:
Each line of characters MUST be no more than 998 characters and
SHOULD be no more than 78 characters, excluding the CRLF.
Also see 3.5 Overall message syntax, in particular the second sentence:
Lines in a message MUST be a maximum of 998 characters
excluding the CRLF, but it is RECOMMENDED that lines be limited to 78
characters excluding the CRLF.
The MTA's default is therefore to fold header lines at 80 characters,
though this is configurable via the headerlinelength channel keyword
(or individually for individual header lines via header trimming
and the LINELENGTH header trimming option).
Now as regards clients not being able to correctly handle the
correctly wrapped header lines -- well, that I can certainly
believe since correct implementation of header line unfolding
rules (especially when combined with use of RFC 2047 encoded-words
in header lines) seems to be an area where client implementations are
WOEFULLY poor. It is really very irritating: the standards exist
exactly so that data can be preserved, and the clients just get this
area so wrong.
(And by the way, it is legal to wrap within quoted-strings.)
As for message bodies line wrapping -- that is controlled by factors
such as whether the contents had to be encoded with an encoding (such
as QUOTED-PRINTABLE or BASE64) that requires also keeping the lines
short, and note that such encoding can be triggered by use of the
linelength channel keyword. But lacking a need, body lines can
normally be up to the 998 legal limit and the MTA won't be folding
them. If the customer thinks they are seeing something different,
then I would want to see lots of details.
As for what can trigger the MTA to use its own boundary markers:
that would be anything that triggers MIME processing, including
(a) routing through the conversion channel, (b) use of the "thurman"
keyword, (c) application of a CHARSET-CONVERSION, (d) incoming
raw (illegal) 8 bit data, (e) the "inner" keyword, etc., etc.
They're all useful, and typically needed by customers at-some
-time-or-another, for-some-purpose-or-another, sorts of features,
that inherently require that the MTA do MIME processing, at which
point we redo the boundary markers.
Oh, other comments: Yes, the MTA does reorder all the headers.
We output them in an order that the MTA considers default, though
that order is extremely configurable: see header trimming and
the PRECEDENCE header trimming option. And yes, we change
the case on header line names; although the names are per the
standards case-insensitive, we have encountered quite a few cases
of broken software that (incorrectly) expects a particular case,
so what we emit tends towards the "seems to be most interoperable"
case. And that also can be configured, via header trimming and
the RELABEL header trimming option.
Anyhow, Jay, it's perhaps unfair to just dump this information on
you, but I'm not certain I have the patience at the moment
to go through all the questions the customer raised one by one and
point out how each one is either: (a) possibly interesting (e.g.,
supposedly "lost" e-mail) though we'd have to get lots of details
(since as I think you wrote, it's pretty dubious that the messages
were actually lost by the MTA), or (b) the customer is wrong in
their understanding of the RFCs, or (c) the customer is dealing
with standards-incompliant other software, or (d) explain
exactly why the MTA does what it does, or etc...Each question
probably ought to be dealt with as a separate question. The
customer appears to have lumped a bunch of (from my point of view)
separate issues together and decided that "MTA processing of messages
is bad -- the MTA should be leaving the messages alone". I completely
disagree with their conclusion, although many of the details that the
customer has observed are correct -- but it's probably going to take
discussion of each issue individually to enlighten the customer.
and
(Basic complaint) .. . ... almost entirely at odds with reality. For starters, he begins by assuming
we operate as a relay. We don't and have never claimed to. As such, any
restrictions that apply to "relays" don't apply to us. So the argument that
we're incompliant with the relevant RFCs is completely specious.
The role of iMS fills is closest to what the RFCs call a "gateway", although in
practice few sites these days take advantage of the full gateway functionality
we provide. But by the same token, most sites find at least some of the various
operations we perform on messages useful and don't disable them (although most
of them can in fact be disabled). So in practice most sites operate something
that falls between a "relay" and "gateway". (There's also the issue of the
specific operations a submission server is supposed to perform but I don't want
to get into that here.)
He goes on to argue that the various processing steps we perform on messages
are unnecessary and/or result in unacceptable loss of performance. Wrong on
both counts. Everything we do is done because there's been a demonstrable need
for it. We don't spend time implementing stuff nobody wants. Indeed, a lot of
people find many of the operations we perform to be essential and purchase our
product because it has rewriting and message alteration capabilities lacking in
other messaging servers. As for performance, we have one of the fastest MTAs
around. I'd say that pretty much proves the performance impact is negligable.
A specific point of complaint is that we change boundary markers. The reason for
this is simple: When performing MIME processing the only way to do it correctly
in a single pass is to randomize the boundary markers. (I'll leave it as an
exercise to the reader to figure out why if you're so inclined.) In any case,
I see no evidence that there is anything wrong in our boundary handling.
He then starts complaining about header wrapping and reorderng. Header
wrapping and rewrapping is (a) Entirely legal and (b) Wrapping at 80 columns
or less is strongly encouraged by the relevant RFCs.
This brings me to the one point he makes that I think is somewhat valid: Header
reordering. We're RFC compliant here as well: If you read the relevant RFCs
you'll find that reordering of trace (Received:) fields is forbidden and
certain headers are required to be prepended, but aside from that pretty much
anything goes. We conform to all this but I don't think the RFCs are stringent
enough in this area. Accordingly, changes have been made for JES 5 that will
result in our preserving header order by default. (Obviously this all goes
out the window if you explicit request header reordering of some sort.)
One final point. Much of the behavior he doesn't like can easily be disabled in
iMS. If all this stuff is really so abhorrent, you'd think we'd see the
majority of sites turning it off. But what we see in practice is exactly the
opposite: Not only do sites not disable this stuff, they spend a considerable
amount of time yoeling and howling about we don't do enough of these things.
The addition of disclaimers is an excellent example of this: We don't think
this is a good idea and try to discourage it, but our customers seem not to
agree...

Similar Messages

  • How to implement a RFC to XI to Mail scenario?

    Hello All,
    I need to implement a RFC to XI to Mail Scenario.
    RFC should contain the content of the mail.
    I need a Integration process which will read the RFC and transform it into a Mail
    I have a Mail reciever adapter but how will the content that i have in RFC be send as the content in Mail? what is the Interface mapping required? Do i need to write a XSL to do the transformation and how?
    I have already started implementing the scenario. but the mail i get has the content as a attachment and not as a text. i have written a xsl transformation in Interface Mapping that simply has
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:fo="http://www.w3.org/1999/XSL/Format">
        <xsl:template match="/">     
         <html>
         <body>
         <li>Hello from XI to meghana</li>
         </body>
         </html>     
        </xsl:template>
    </xsl:stylesheet>
    I get this message as a html in the attachment of the mail not as a content.
    Could some 1 help me out??
    Thanks
    Meghana

    Yes, I am doing a Sender RFC to XI (Integration process) to Reciever Mail Scenario. The program that i have already given is used as a test program to add the values to the table.It calls the function module ZSOSMS2 which has the foll source code:
    FUNCTION ZSOSMS2.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_TEST) TYPE  CHAR20 OPTIONAL
    *"  TABLES
    *"      ZSOSMS2 STRUCTURE  ZSOSMS2
    *"  EXCEPTIONS
    *"      ERROR
    ENDFUNCTION.
    I have been able to read this RFC, have done a Message mapping which maps the CONTENT(present in ZSOSMS" table to some body attribute of the target Message Type attribute.
    With this i have been able to read the content from the RFC and put it in as the content of my mail. But i am not sure if this is the best way.
    If you are aware of any optimal way of doing it please let me know..
    Thanks,
    Meghana

  • SAP implementation of RFC 1738

    When looking over the ABAP implementation of RFC 1738 (don't ask) I noticed that SAP marks the following characters as unsafe and as a result URL encodes them:
    "<, >, “, #, %, {, }, |, \, ^, ~, [, ], `" and ";, /, ?, :, @, =, &" (the ABAP code makes no distinction between the character set types of unsafe and reserved in its validation buffer, but I've separated them for clarity.)
    The code also URL encodes characters LE 0x1F and GE 7F. This seems mostly correct, but it appears to be missing coma and $ which are both a part of RFC 1738 (to the best of my knowledge). I was unable to find a technote on this, but wanted to solicit some feedback on why this might be the case. Am I missing something, or does the SAP implementation of this standard appear to be slightly off? Any thoughts the development community has on this would be greatly appreciated.
    Edit:
    Just to clarify I'm specifically refering to the translate subroutine code in the program SAPLSCMS_URL. It defines the following as unsafe:
    unsafe(23) value ' <>"#%{}|\^~[]`;/?:@=&+'.
    These include all of the unsafe and reserved characters except for , and $.
    Message was edited by:
            Aaron Jack

    The below table will give you an idea about the deadline for your organization for Chile eDocument implementation -
    Enterprise
    Last year's
    revenue (in UF*)
    Last year's
    revenue (in USD)
    Location
    Months (from
    Feb, 2014)
    Deadline to implement
    Chile eDocument
    Small
    Below 2400
    Below 100 K
    Urban
    24
    1st Feb, 2016
    Rural
    36
    1st Feb, 2017
    Medium
    Between 2400
    and 100,000
    100 K - 4.2 M
    Urban
    18
    1st August, 2015
    Rural
    24
    1st Feb, 2016
    Large
    Above 100,000
    Above 4.2 M
    All
    9
    1st Nov, 2014
    *UF = Unidad de Fomento
    1
    UF
    41.56
    USD
    as of 23rd Oct, 2014
    2400
    UF
    99744
    USD
    100,000
    UF
    4156000
    USD

  • Should I have one JCo connection per RFC model?

    Hello SDN,
    I got a JCo doubt.
    Should I have one JCo connection per RFC model in a DC? or Can I have the same JCo connection for several models in such Web Dynpro Development Component?
    I will appreciate any help.
    Thank you.

    Hi Gustavo,
    Ideally, we use one JCo connection for all the models in all the DC's in a big project.
    If you see the SAP delivered XSS/ESS/MSS solutions they are also using one JCO (SAP_R3_Human_Resources) for all the dc's in one solution.
    Suppose you are not using SSO and you have different models with different JCO, now if you want to change the backend client, you have to change all the JCO connections.
    So having one JCO, helps easy maintenance of connections across different applications in a big project/solution.
    Regards,
    Shubham

  • LUW implementation between RFC calls

    Hi Experts,
                    I have a quick requirement in which i have to implement LUW explicitly during RFC call.My requirement is as below
    I have 3 Rfc for a  Ztable these are 1. Zcreate_entry , 2.Zupdate_entry and
    3. Zdelete_entry. Now i want to create a explicit session for all the operation done by these Rfcs so that at the end of the session i can commit all the  operations.
    Example
    User will call 1 RFC for leting me know that now start a new session.now user will insert 5 entry in Ztable by calling Zcreate_entry(Actually this data should not be saved in ZTable) , Update 4 Entry in Ztable by calling Zupdate_entry(Actually this data should not be updated in ZTable) , delete few entry same way.
    Now user will call 1 Rfc for ending this session(for letting me know only that end this session) , At this point only all the data changes (inserted , updated and deleted ) should be actually reflected in database.
    Regards,
    Abhishek
    Edited by: ABHISHEK BAJPAI on Jan 20, 2009 12:43 PM
    Edited by: ABHISHEK BAJPAI on Jan 20, 2009 12:43 PM

    Hi All,
            If you have not got the problem , let me explain complete scenario.
    There are three RFcs for creating , updating and deleting in database table(Ztable).
    Now these Rfcs will be called from web dynpro, In WD screen user may call Create RFC 5 times for creating entry in Ztable ,then he can call Update RFC for updating in Ztable.
    After doing all these operations in single session now he wants to end the session, so before closing the session WD notifies to backend that now at this point only save all the changes to the backend thus for all the operations commit will happen now only.
    *Another requirement is * that  from WD screen if user1 has created 5 records but he has not commited these changes to database now if User1 searches for just inserted recorded(which is not commited yet) , how to provide these records to the User1 because these records are not in Ztable at that point of time.
    Regards,
    Abhishek

  • Event like preRender / page_Load in Sun's JSF 1.2 implementation ?

    Hi there,
    i wonder if anyone can confirm or advise how i can do things in code before the JSF (.faces template) is shown.
    I have done a search on the forum and seems to be a lot of people asking about it... it seems IBM's version of JSF has a preRender method or something BUT i am confused,
    I wanted to stick with Sun's JSF implementation, maybe i am wrong to do this???
    Within Sun's JSF is there a work around or an event/method that is called before the page is displayed?
    If anyone has any examples or info it would be really appreciated
    Thanks in advance
    Ian

    Ian001 wrote:
    I am really enjoying java journey .. but there just seem to be too many options :-) ah ah..Options are good! :)
    Anybody care to comment on which i should use, i did want to stay with Suns implementation of JSF so i presume apache shale or jsftemplating can be installed over the top??Yes. They are add-ons that should work with any JSF implementation.
    Why do i want to stay with sun's implementation of JSF well i read someone that it is more stable and advanced... maybe this has changed or maybe i am wrong?That's my impression, but I have a bias. :)

  • How to implement Adaptive RFC?

    Hi Gurus,
    I have a requirement to interact with R/3 through ADAPTIVE RFC.
    Can anyone please send me the step by tsep approach of the same.
    Higher points will be rewarded for the best solution.
    Thanks in Advance,
    Dharani

    Creating RFC Model object
    1>Open NWDS, open a web dynpro project
    2>Right click on model node and select create model
    3>Will get a new window, select “IMPORT Adaptive RFC Model”,
    click next
    4>Will get new window, enter
    a.Model Name
    b.Model Package Name
    c.Enter Logical System name model instance &#61664; “model name_MODELDATA_DEST”
    d.Enter Logical System name RFC Metadata&#61664; “model name_ RFCMETADATA_DEST”
    e.Click Next
    5>SAP Logon Information
    a.Single Server
    If SAP GUI Client is not installed specify system details manually.
    b.Load Balancing
    If SAP GUI Client is installed on same system where NWDS is installed, all system will be available in System drop down list
    c.Click Next
    6>Select RFC Model (when this screen initially appears will be empty)
    a.In Function Name
    Type the function name you need, can also use wildcard(*) to search
    b.Also you can see list of modules after search button has been entered [NOT RECOMENDED]
    c.Click Next
    7>Once Import has completed you will see import log
    8>Result &#61664;What RFC Model has created:
    You will be able to see two sets of object
    a.Dedicated Model Directory
    It has simple type and set of structure
    b.Model Class
    Entire interface of each RFM in the model object

  • Implement SAP / RFC Linux

    Hi there,
    I made a Windows application which connects to SAP and everything works correctly me. Now I'm trying to compile the same application on Linux and have a problem. When I compile the code indicates a missing dependency.
    ./sapirfci.c: 29: error: rpc.h: No such file or directory
    I understand that they have to have the files in the SDK?

    Have tested SAP RFC from test mode ?. Ask the SAP basis person to test the rfc. If in test mode it is running then check your codes.

  • Java implementation for RFC 3195

    Hi,
    Is there a toolkit or open source example that complies with RFC 3195 for relieable syslog delivery?
    All help is appreciated!
    Thanks.

    Doesn't Log4J have a syslog appender?

  • Definition of Message Type and Transaction Type from the Implementation per

    My assumption is that both, Notification Type and Message Types are same.
    <b>Is the above assumption right?</b>
    In Sol Man 4.0, the notification types required are
    1)     ABSC  2) SLF1 3) TASK
    <b>Are there any other notification types required for Sol Man 4.0?</b>
    The main transaction types required in Sol Man 4.0 are
    SLFI, SLFT and SLFN
    <b>What is the significance of External Number range and Internal Number range used in the transaction type?</b>

    Hi
    1 > A data type</i> in a programming language is a set of data with values having predefined characteristics. Examples of data types are: integer, floating point unit number, character, string, and pointer.
    The characteristic of columns and variables that defines what types of data values they can store. Examples include character, floating point and integer
    Check out the details:
    http://en.wikipedia.org/wiki/Data_type
    A message type comprises a data type that describes the structure of a message. At the following points in SAP Exchange Infrastructure you can refer to the message to be exchanged at runtime by using the message type:
    details:
    http://help.sap.com/saphelp_nw04/helpdata/en/2d/c0633c3a892251e10000000a114084/content.htm
    2) Regarding the difference between XI 3.0 and PI 7.0, this threads will clear your doubts:
    difference between XI 3.0 and P.I 7.0
    Difference/ changes from XI 3.0 to PI 7.0
    Regard's
    Chetan Ahuja

  • Any body explain me the differrence between BAPI and RFC

    Hi gurues,
                   The main difference between rfc and bapi is calling the non sap system. Other than that what r the differrence . How sap modules works other machine without sap is installed.

    The difference is not importat while you understand the concept.
    I think, RFC is the protocol for calling functions from external systems in R/3.
    I understand like BAPI a series of complet functions that SAP offers you for use and model a business use.
    But if I need program a function that can be called for external system i would call it RFC_NAME, because is a unique function that makes a single task.
    In other words, the difference i think is about work idea more than another thing.
    RFC
    A remote function call is a call to a function module running in a system different from the caller's. The remote function can also be called from within the same system (as a remote call).
    RFC consists of two interfaces : A calling interface for ABAP Programs and a calling interface for Non-SAP programs.
    The RFC Interface takes care of :-
    Converting all parameter data to the representation needed in the remote system
    Calling the communication routines needed to talk to the remote system.
    Handling communications errors, and notifying the caller, if desired ( using EXCEPTIONS paramater of the CALL FUNCTION).
    BAPI
    BAPIs are standardized programming interfaces (methods) enabling external applications to access business processes and data in the R/3 System.
    BAPIs provide stable and standardized methods to achieve seamless integration between the R/3 System and external applications, legacy systems and add-ons.
    BAPIs are defined in the BOR(Business object repository) as methods of SAP business object types that carry out specific business functions.
    BAPIs are implemented as RFC-enabled function modules and are created in the Function Builder of the ABAP Workbench.
    The most critical difference btwn BAPI and FM is that BAPI can be wrapped in Business objects whereas RFC cant.
    BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects. You create business objects and those are then registered in your BOR (Business Object Repository) which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA. in this case u only specify the business object and its method from external system in BAPI there is no direct system call. while RFC are direct system call Some BAPIs provide basic functions and can be used for most SAP business object types. These BAPIs should be implemented the same for all business object types. Standardized BAPIs are easier to use and prevent users having to deal with a number of different BAPIs. Whenever possible, a standardized BAPI must be used in preference to an individual BAPI.
    The following standardized BAPIs are provided:
    Reading instances of SAP business objects
    GetList ( ) With the BAPI GetList you can select a range of object key values, for example, company codes and material numbers.
    The BAPI GetList() is a class method.
    GetDetail() With the BAPI GetDetail() the details of an instance of a business object type are retrieved and returned to the calling program. The instance is identified via its key. The BAPI GetDetail() is an instance method. BAPIs that can create, change or delete instances of a business object type
    The following BAPIs of the same object type have to be programmed so that they can be called several times within one transaction. For example, if, after sales order 1 has been created, a second sales order 2 is created in the same transaction, the second BAPI call must not affect the consistency of the sales order 2. After completing the transaction with a COMMIT WORK, both the orders are saved consistently in the database.
    Create( ) and CreateFromData! ( )
    The BAPIs Create() and CreateFromData() create an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.
    Change( )
    The BAPI Change() changes an existing instance of an SAP business object type, for example, a purchase order. The BAPI Change () is an instance method.
    Delete( ) and Undelete( ) The BAPI Delete() deletes an instance of an SAP business object type from the database or sets a deletion flag.
    The BAPI Undelete() removes a deletion flag. These BAPIs are instance methods.
    Cancel ( ) Unlike the BAPI Delete(), the BAPI Cancel() cancels an instance of a business object type. The instance to be cancelled remains in the database and an additional instance is created and this is the one that is actually canceled. The Cancel() BAPI is an instance method.
    Add<subobject> ( ) and Remove<subobject> ( ) The BAPI Add<subobject> adds a subobject to an existing object inst! ance and the BAPI and Remove<subobject> removes a subobject from an object instance. These BAPIs are instance methods.
    Check these Links out
    http://searchsap.techtarget.com/ateQuestionNResponse/0,289625,sid21_cid558752_tax293481,00.html
    http://www.sap-img.com/abap/interview-question-on-bapi-rfc-abap-objects-tables.htm
    http://www.sap-img.com/fu033.htm
    http://www.sap-img.com/abap/ale-bapi.htm
    Refer following SDN threads:
    Diff. Between BAPI and RFC
    Re: BAPI and RFC
    difference between RFC and BAPI
    Re: Difference Between BAPI and RFC?
    Reward all the helpful answers.

  • RFC to SMS using XI

    Hello Experts,
    I need to implement the scenario RFC ->XI->SMS.
    I have already implemented the RFC to Email using XI, and all the mails that are sent are forwared to my telephone number by the Telephone Service.
    All the mails that i recieve are in html format, thus the whole thing gets transferred along with the html code and since in SMS only 160 char are allowed, the actual message body is only recieved halfways. In the email i can see the body of the message correctly without the html code.
    I have used the localejbs/AF_Modules/MessageTransformBean module with the module key as text/plain;charset="ISO-8859-1" or text/html;charset=utf-8 , but of no use.
    Is there any other way by which i can transfer my email content in plain text format so that i get only the message content in my SMS and no HTML.
    Any pointers on this will be appreciated.
    Thanks
    Meghana

    Try this how to:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5474f19e-0701-0010-4eaa-97c4f78dbf9b
    Section 2 onwards:
    HTML To Web Service Scenario:
    This scenario involves calling a web service from HTML client using SAP XI as middleware.
    Here we will call a SMS web service which will send SMS to the concerned people depending on some business logic.

  • Use jmf implement RFC2833

    i want to send dtmf tone with my sip soft phone according to RFC 2833.
    but i don't kown how to modify some special rtp header(such as Marker header) when i use jmf to transmit rtp
    and i have another problem, i have already transmitted the rtp, and then i click one number button,it should send another rtp, how shoud i do if i want two rtp to be a stream, i mean the two rtps have the continuous sequence number, not have its own increased sequence number

    Hi,
    I�ve implemented DTMF (RFC 2833) using JMF during my SIP soft phone development. To implement DTMF (RFC 2833) using JMF, you have to implement RTPConnector. You will find an implementation of RTPConnector, RTPSocketAdapter is built to support a custom transport mechanism under following URL:
    [Transmitting and Receiving RTP over Custom Transport Layer|http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/RTPConnector.html]
    I hope this information will help you!
    Enjoy,
    ARIF

  • About rfc concept

    hi gurus,
    Can any body explain me about the rfc concept.
    Thanks.

    Hi Rangamma,
    Check this info.
    These are the types of RFC
    Asynchronous RFC (aRFC)
    Synchronous RFC (sRFC)
    Transactional RFC (tRFC)
    Queued RFC (qRFC)
    Parallel RFC (pRFC)
    Asynchronous RFC :
    This is used when you need to increase the performance of ABAP program by having system call more than one function module in parallel than forcing the program to wait for results .
    Transactional RFC
    This let you group one or more function module call together o tRFC LUW and ensure that fucnction module within LUW is called once . In contrast to aRFC and sRFC the tRFC belonging to tRFC LUW are executed in order .
    tRFC is always used if a function is executed as a Logical Unit of Work (LUW). Within a LUW, all calls are
    1.Executed in the order in which they are called
    2.Executed in the same program context in the target system
    3.Run as a single transaction: they are either committed or rolled back as a unit.
    Implementation of tRFC is recommended if you want to guarantee that the transactional order of the calls is preserved
    Asynchronous remote function calls (aRFCs) are similar to transactional RFCs, in that the user does not have to wait for their completion before continuing the calling dialog. There are three characteristics, however, that distinguish asynchronous RFCs from transactional RFCs:
    • When the caller starts an asynchronous RFC, the called server must be available to accept the request.
    The parameters of asynchronous RFCs are not logged to the database, but sent directly to the server.
    • Asynchronous RFCs allow the user to carry on an interactive dialog with the remote system.
    • The calling program can receive results from the asynchronous RFC.
    You can use asynchronous remote function calls whenever you need to establish communication with a remote system, but do not want to wait for the function’s result before continuing processing. Asynchronous RFCs can also be sent to the same system. In this case, the system opens a new session (or window). You can then switch back and for between the calling dialog and the called session
    RECEIVE RESULTS FROM FUNCTION Remotefunction is used within a FORM routine to receive the results of an asynchronous remote function call. The following receiving parameters are available:
    IMPORTING
    TABLES
    EXCEPTIONS
    The addition KEEPING TASK prevents an asynchronous connection from being closed after receiving the results of the processing. The relevant remote context (roll area) is kept for re-use until the caller terminates the connection.
    Transactional RFC (tRFC) and Queued RFC (qRFC).
    tRFC is used mainly to transfer ALE Intermediate Documents (IDocs).
    Transactional RFC:
    If an error occurs during a synchronous remote function call, the system cannot tell at what point the error occurred (most crucially, whether the function module was actually processed in R/3 before the operation failed). Restarting a failed call is therefore a dangerous thing to do, since you risk duplicating a completed function call.
    To alleviate this problem, you can use transactional RFC, which guarantees that each function call you issue will only be executed once, even if you submit it repeatedly to the R/3 System. The system implements this safeguard by assigning a unique transaction ID (TID) to each transaction that you submit. When you attempt to process the transaction, the system checks whether that TID has already been processed. If it has, the transaction is ignored.
    Disadvantages of tRFC
    - tRFC processes all LUWs independent of one another. Due to the amount of activated tRFC processes, this procedure can reduce performance significantly in both the send and the target systems.
    - In addition, the sequence of LUWs defined in the application cannot be kept. Therefore, there is no guarantee that the transactions are executed in the sequence dictated by the application. The only guarantee is that all LUWs are transferred sooner or later.
    Queued RFC:
    When you use transactional RFC, you cannot guarantee the order in which the function calls will be processed in the system (it is quite possible that one call might overtake another). For cases where you need to specify a particular processing order, you can use queued RFC, which is an extension of transactional RFC. In qRFC, you place each function call in a logical queue. A function call cannot be executed until all of its predecessors in the queue have been processed. Queued RFC calls are processed asynchronously
    Therefore, Queued RFC is better than Transactional RFC.
    Remote Function Call:
    RFC is an SAP interface protocol. Based on CPI-C, it considerably simplifies the programming of communication processes between systems.
    RFCs enable you to call and execute predefined functions in a remote system - or even in the same system.
    RFCs manage the communication process, parameter transfer and error handling.
    http://help.sap.com/saphelp_47x200/helpdata/en/22/042860488911d189490000e829fbbd/frameset.htm.
    Remote Function Call (RFC) is the standard SAP interface for communication between SAP systems. The RFC calls a function to be executed in a remote system.
    Synchronous RFC:
    The first version of RFC is synchronous RFC (sRFC). This type of RFC executes the function call based on synchronous communication, which means that the systems involved must both be available at the time the call is made.
    Transactional RFC (tRFC) and Queued RFC (qRFC). tRFC is used mainly to transfer ALE Intermediate Documents (IDocs).
    Transactional RFC:
    If an error occurs during a synchronous remote function call, the system cannot tell at what point the error occurred (most crucially, whether the function module was actually processed in R/3 before the operation failed). Restarting a failed call is therefore a dangerous thing to do, since you risk duplicating a completed function call.
    To alleviate this problem, you can use transactional RFC, which guarantees that each function call you issue will only be executed once, even if you submit it repeatedly to the R/3 System. The system implements this safeguard by assigning a unique transaction ID (TID) to each transaction that you submit. When you attempt to process the transaction, the system checks whether that TID has already been processed. If it has, the transaction is ignored.
    Queued RFC:
    When you use transactional RFC, you cannot guarantee the order in which the function calls will be processed in the system (it is quite possible that one call might overtake another). For cases where you need to specify a particular processing order, you can use queued RFC, which is an extension of transactional RFC. In qRFC, you place each function call in a logical queue. A function call cannot be executed until all of its predecessors in the queue have been processed. Queued RFC calls are processed asynchronously
    For more information on RFC, please go through the link.
    http://help.sap.com/saphelp_nw04/helpdata/en/6f/1bd5b6a85b11d6b28500508b5d5211/content.htm
    Have a look at this link.
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE2/BCFESDE2.pdf
    http://help.sap.com/saphelp_47x200/helpdata/en/22/042860488911d189490000e829fbbd/frameset.htm.
    Rewards some points if it is helpful.
    Rgds,
    P.Naganjana Reddy

  • Can you RFC 4533 (Ldap Sync) with Jldap?

    Hi,
    I am searching for a way to do a refreshAndPersist operation from Jldap as
    defined in RFC 4533. After a day of investigation I believe this extension
    is not supported even though I read a post that it was on the to do list in
    2005 list, and that I saw that it is currently not.
    - Is the refreshAndPersist extension supported by Jldap?
    - What would it take to create such support? If given an estimate, I might
    be able to get time to implement it myself.
    - (OT) Is there another way to do refreshAndPersist from Java?
    Regards,
    Erik.

    Why not use the IDM LDAP driver?
    The RFC 4533 appears to be:
    Category: Experimental
    -jim
    [email protected] wrote:
    > Hi Guenter, Susan,
    >
    > I was planning on using this in a client application against an openldap
    > server. Openldap supports this rfc and offers it as a way to replicate
    > DITs. I need it to keep an ldap server synchronized with a quite different
    > type of directory.
    >
    > As far as I could read from the JNDI documentation, JNDI does not support
    > RFC4533.
    >
    > If I get the time here I will do as Susan suggested and try to implement it
    > by extending Jldap.
    >
    > If I may, I suggest that Novell implements this RFC in eDirectory as well.
    > You could do so in 2 ways: 1. as a client (make eDirectory replicas of DITs
    > from any server that support RFC4533), 2. as server (allow replica's of
    > eDirectory DITs). I assume that especially the first is interesting from a
    > commercial point of view.
    >
    > Thanks and regards,
    > Erik.
    >
    >
    >> Hi Eric,
    >>
    >> [email protected] wrote in news:Ffomi.1426$QE3.914@prv-
    >> forum2.provo.novell.com:
    >>
    >> here's a reply from Susan who kindfully digged up this:
    >>
    >> Looking at this RFC, it looks like it requires some server side support in
    >> addition to the client requests. So if he is using eDirectory, it's a
    >> request to make of the eDirectory server team. While the jldap sdk
    >> includes sources for classes that can be used to implement controls that
    >> aren't already defined at a higher level by the jldap sdk, that wouldn't
    >> give you anything if the server has not implemented it.
    >>
    >> Assuming that reading the root DSE on the customer's eDirectory server:
    >>
    >> ldapsearch -h nw65 -D cn=admin,o=novell -w novell -b "" -s base
    >> supportedcontrol=*
    >>
    >> does not show the oid for the RFC, then I'd recommend that they enter a
    >> bug/enhancement request at
    >> http://support.novell.com/eService/shortLogin.jsp interact/submit or share
    >> information/report a bug.
    >>
    >> If they are using a directory that does support this control, they can
    >> download the jldap sources from http://www.openldap.org/jldap/ and take a
    >> look at how another control, for example, the sort control, is implemented
    >> by overloading LDAPControl.
    >>
    >> I'll submitted enhancement request 292109 against the jldap sdk for future
    >> consideration by product management, but I can't guarantee a timeframe for
    >> implementation.
    >>
    >> I don't know if it's implemented by JNDI but he might check java.sun.com
    >> for an answer.
    >>
    >> Thank you
    >> Susan
    >
    > --
    > Erik van Oosten
    > http://2008.rubyenrails.nl/
    > http://www.day-to-day-stuff.blogspot.com/
    >

Maybe you are looking for