Extended xml handling in asynchronous inbound (server) proxy

Hello,
I want to activate extended xml handling on an asynchronous inbound server proxy.
looking at online help:
http://help.sap.com/saphelp_nwpi71/helpdata/en/73/3f5c3c3906b006e10000000a11402f/frameset.htm
this should be the code:
  lo_server_context   = cl_proxy_access=>get_server_context( ).
  lo_payload_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>payload ).
  CALL METHOD lo_payload_protocol->set_extended_xml_handling( abap_true ).
However the controller tables remain empty when executing a scenario to the application system.
Also adding a static attribute extended_xml_handling does not have the correct result.
any suggestions???
Regards,
Emile

Hello Emile,
do you have a solution regarding your problem? If not, here is a good one.
I think you have inserted the code inside the generated proxy method. Within this method it is a little bit tricky to get the controller structures filled. This could be done by parsing the input data once more... Here is an code example for this:
ls_input_data-name = 'INPUT'.
GET REFERENCE OF input INTO ls_input_data-value.
APPEND ls_input_data TO lt_input_data.
lo_server_context = cl_proxy_access=>get_server_context( ).
lo_payload_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>payload ).
lo_payload_protocol->set_extended_xml_handling( extended_xml_handling = 'X' ).
lo_payload_handler = lo_payload_protocol->get_payload_handler( '<Name of structure data element>' ).
lo_payload_input = lo_payload_protocol->get_sent_request_payload( ).
lo_payload_handler->get_request_data_from_payload(
  EXPORTING
    payload = lo_payload_input
  CHANGING
    request_data = ls_input_data ).
But a much easier and better way is to insert the following coding within a constructor of the generated Proxy class.
lo_server_context = cl_proxy_access=>get_server_context( ).
lo_payload_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>payload ).
lo_payload_protocol->set_extended_xml_handling( extended_xml_handling = 'X' ).
As in each standard ABAP class, you can insert your own constructor within proxy classes. If you do so and insert the code in it the controller table will be filled with the needed information.
Best Regards,
Lars

Similar Messages

  • Where to set extended XML handling in WESOUT while sending XML

    Hello Experts,
    Requirement : Add a Z field to a standard message type so that
    it can be sent to another system while XML .
    Transaction cod e: WESOUT is used for that.
    But as per the link :
    http://help.sap.com/saphelp_nw04/helpdata/en/73/3f5c3c3906b006e10000000a11402f/content.htm
    SET_EXTENDED_XML_HANDLING  should be set.
    I agree that it should be done via framework it self.But can any one suggest a possible place where we can make
    frame work to consider the handling of extended structure.
    Thanks
    ~Raj

    Hi Raj,
    extended XML Handling is for changing the behavior of default/initial values of existing fields in the XML structure.
    I suggest using a [data type enhancement|http://help.sap.com/saphelp_nw70/helpdata/en/a8/bfc6373c8fea43bdb3541535bcbd43/content.htm] in ESR to add a custom field to the desired data type. Then create a proxy in transaction SPROXY from the data type enhancement and implement the proxy in order to populate the custom field.
    Best regards, Martin

  • Inbound/Server proxy error

    Hi Experts,
    I am testing Server proxy. while testing i am getting below error
    please let me know the problem.
    System expected the element
    http://tuas.com/xi/hedging/CRM}MT_HSFO_FROMFUEL_HEDGING_PROXY', Byte-Offset in XML: 112 ,1SAI/TXS71C35983A473121F58F4, Line: 225 ST:
    Thanks
    Srini

    hi,
    probably your XML is not well formatted
    check it by opening it in IE for example
    Regards,
    Michal Krawczyk

  • Exception using fault message in java server proxy.

    Hi All,
    I am trying to use Fault message inside my server proxy code in Asynchronous java server proxy. I am referring the below mentioned link :
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/d06315a6-e66e-2910-039c-ba8bbbd23702?quicklink=index&overridelayout=true
    I successfully deployed my SDA file but while running the scenario(http-XI-ftp in PI7.11) i am getting the folowing exception under MDT:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing inbound message. Exception: Cannot locate proxy bean ServerProxyFTTest3.
    I am using the following library refernces under application-j2ee-engine.xml file:  com.sap.aii.af.sdk.lib, com.sap.aii.proxy.svc, com.sap.xi.util.misc,com.sap.guid,com.sap.exception all of type "weak".
    I have checked almost all the forums related to fault messages in asynchronous java server proxy but couldn't find much help.
    Request you all to help me.
    Thanks
    Amit

    Hi Rajesh,
    I am deploying my SDA file on Non Central Adapter Engine.
    I have also registered my interface using:
    http://ISVSAPPISB:51000/ProxyServer/register?ns=http://infosys.com/poc&interface=SI_Proxy_IA&bean=localejbs/ServerProxyFTTest3&method=sIProxyIA
    But still i ma getting the same exception.
    Hi Gabriel,
    I implemented my scenario using the same. But in addittion to the librarry referneces mentioned over there i have added one more refrence in it "com.sap.exception"  of type "weak". My structure is like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <application-j2ee-engine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="application-j2ee-engine.xsd">
    <reference reference-type="weak">
      <reference-target provider-name="sap.com" target-type="library">com.sap.aii.af.sdk.lib</reference-target>
      </reference>
    <reference reference-type="weak">
      <reference-target provider-name="sap.com" target-type="service"> com.sap.aii.proxy.svc</reference-target>
      </reference>
    <reference reference-type="weak">
      <reference-target provider-name="sap.com" target-type="library">com.sap.xi.util.misc</reference-target>
      </reference>
    <reference reference-type="weak">
      <reference-target provider-name="sap.com" target-type="library">com.sap.guid</reference-target>
      </reference>
        <reference reference-type="weak">
      <reference-target provider-name="sap.com" target-type="library">com.sap.exception</reference-target>
      </reference>
        </application-j2ee-engine>
    Please help.
    Thanks
    Amit

  • Structuring complex ABAP server proxy

    Dear all,
    I'd like to sub divide the logic of an inbound server proxy in ABAP. In a normal report, i would use a "perform" routine for that.
    As far as i know, I can not create such routines in the execute_asychronous method of the proxy. So what is the best possibility to split that up? Creating a function module, that receices the data of the proxy and created the perform routines within that?
    What is the best solution regarding maintainability and performence?
    Thanks and best regards
    Florian

    Hi,
    Just add the methods to already existing proxy class :).
    In my opinion that's the best solution and you stay in object oriented world with better type control and exception handling. Also you can utilize other global classes.
    /wg

  • Java Server Proxy

    Hi all,
    I need to implement Java server proxy.
    Could you please suggest the possible scenarios that can be implemented.
    Thanks,
    Neha

    Hello Neha,
    How to create proxy.
    http://help.sap.com/saphelp_nw04/helpdata/en/14/555f3c482a7331e10000000a114084/frameset.htm
    How to Activate Proxy.
    /people/vijaya.kumari2/blog/2006/01/26/how-do-you-activate-abap-proxies
    Java Proxy
    /people/rashmi.ramalingam2/blog/2005/06/25/an-illustration-of-java-server-proxy
    /people/prasad.ulagappan2/blog/2005/06/27/asynchronous-inbound-java-proxy
    /people/siva.maranani/blog/2005/04/03/abap-server-proxies
    http://sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/a068cf2f-0401-0010-2aa9-f5ae4b2096f9
    https://sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f272165e-0401-0010-b4a1-e7eb8903501d
    Thanks,
    Satya Kumar
    Reward points if it is useful to you..
    Edited by: SATYA KUMAR AKKARABOYANA on Apr 17, 2008 11:07 AM
    Edited by: SATYA KUMAR AKKARABOYANA on Apr 17, 2008 11:09 AM

  • Problem in registering the java server proxy interface...

    Hi All,
    I have created a java server proxy(in PI 7.1) using the below mentioned blog:
    /people/prasad.ulagappan2/blog/2005/06/27/asynchronous-inbound-java-proxy
    But the problem comes when i am trying to register the interface( on non central j2ee adapter engine) and ends up with getting unauthorization error even though i am having piappluser access. I am trying to register it using below mentioned URL:
    http://ISVSAPPISB:51000/ProxyServer/register?ns=xxxxx&interface=SI_Proxy_IA&bean=localejbs/sap.com/EARServerProxy/SIProxyIA_PortTypeBean&method= sIProxyIA
    xxxx-namespace
    So ,please anyone can tell me what authorization should i have in order register my server proxy interface.
    Thanks

    hi,
    >>>2) Plz tell me how to check whether my java server proxy interface got registered successfully or not.
    use listAll option form this page:
    http://help.sap.com/saphelp_nw04/helpdata/en/a4/d5b3b0b16843b3867c0245d9847ae5/content.htm
    Regards,
    Michal Krawczyk

  • Handling appln errors in ABAP proxy

    Hello All,
    How is application related exceptions handled in a ABAP server proxy.
    Say I update a customer  record from a proxy(asynch). Now the customer data does not exist in R/3.
    Regards,
    Jai Shankar

    Jai,
    for this purpose you should define your message interface to include a fault message type using the default data types created in a namespace exchangefault data and exchange log data.
    when you create the proxy object for this interface, you will get exceptions defined int he object. You can raise the exception and populate the error details into corresponding strucures for exchange fault data & exchange log data.
    praveen

  • Server proxy method name and interface operation name

    Hi all,
    I have successfully used inbound server proxies on several occasions.  Each time, without thinking about it, I took the default option where the OPERATION name == the SERVICE INTERFACE name.  When the proxy is generated, the ABAP method is the OPERATION name and everything works nicely.
    This time however, I tried something different and built a service interface (PMNotification, as example) with the operation name 'Create', thinking that I could also have a second operation 'Update' (for example).  The ABAP proxy method then becomes CREATE, but I then get 'NO IMPLEMENTING CLASS....' errors. If I change the operation name to match the interface name and regenerate, everything works again.
    SO, my question is this : Is is true that the OPERATION name MUST equal the INTERFACE name for an inbound server proxy ??
    If this is the case, then a (inbound) service interface can only have one operation; this doesn't seem right.
    Looking forward to any insight.
    Guy

    If this is the case, then a (inbound) service interface can only have one operation; this doesn't seem right.
    Open your service interface in ESR and press F7....if the proxy cannot be generated you would probably get an information on this....inbound SI can have multiple operations but then it seems to be a limitation in case of proxy.
    Also if your operations have different types of messages (combinations of message type and external definitions etc) then you face such limitations.
    Some reference from Michal's blog: The specified item was not found.
    Now the method that you need to call from to send an ABAP Proxy message has exactly the same name as a method
    inside the Service Interface objects in Enterprise Service Repository (ESR is a successor of Integration Repository - IR) like
    shown in the picture below:
    Regards,
    Abhishek.
    Edited by: abhishek salvi on Jan 17, 2011 10:08 AM

  • Xml inbound server

    Hi!
    I need to set up a inbound java proxy (stand-alone) for XI 2.0. There is a way to work around a bean implementation. By implementing the method on a Web Server.
    In the documentation I read that, SAP offers the alternative by using a so called XML-Inbound Server. Which is a standalone application listening on the HTTP Port to receive the HTTP request coming out of the XI, delegating the request to the implementation method, and returning with a http response to the XI....
    My only problem is to find this XML-Inbound Server. What is it? Just a bunch of jars? The Documentation tells me about go and startup scripts, and properties file where I can bound classes to lookup-names.
    any hint would be great

    Hello Emile,
    do you have a solution regarding your problem? If not, here is a good one.
    I think you have inserted the code inside the generated proxy method. Within this method it is a little bit tricky to get the controller structures filled. This could be done by parsing the input data once more... Here is an code example for this:
    ls_input_data-name = 'INPUT'.
    GET REFERENCE OF input INTO ls_input_data-value.
    APPEND ls_input_data TO lt_input_data.
    lo_server_context = cl_proxy_access=>get_server_context( ).
    lo_payload_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>payload ).
    lo_payload_protocol->set_extended_xml_handling( extended_xml_handling = 'X' ).
    lo_payload_handler = lo_payload_protocol->get_payload_handler( '<Name of structure data element>' ).
    lo_payload_input = lo_payload_protocol->get_sent_request_payload( ).
    lo_payload_handler->get_request_data_from_payload(
      EXPORTING
        payload = lo_payload_input
      CHANGING
        request_data = ls_input_data ).
    But a much easier and better way is to insert the following coding within a constructor of the generated Proxy class.
    lo_server_context = cl_proxy_access=>get_server_context( ).
    lo_payload_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>payload ).
    lo_payload_protocol->set_extended_xml_handling( extended_xml_handling = 'X' ).
    As in each standard ABAP class, you can insert your own constructor within proxy classes. If you do so and insert the code in it the controller table will be filled with the needed information.
    Best Regards,
    Lars

  • Server proxy implementation with synchronous inbound interface

    <b>Hi all,</b>
        How we can implement a server proxy with synchronous inbound interface.If any example weblog please send the link.
    <b>thanks,
    Kishan.</b>

    Hi,
    For sync interface. You have to have a sync MI with both request and response message type.
    when you generate a proxy for the same , you will get a method called execute_synchronous, and import and export parameter.
    You don't have explicitly identify anywhere that the interface is sync.
    Regards
    Vijaya

  • How to pass XML(Binary) to Server Proxy in ABAP report

    Hi,
    I would like to schedule server proxy in back ground mode using ABAP report. I already have the payload available in XSTRING(binary) saved in Z table. I know how to convert binary string to XML (using FMs -  SCMS_BINARY_TO_STRING).
    However, is there any way to pass binaryXML(XSTRING) to server proxy (without converting the paylolad to XML and use SAX/DOM parser to populate proxy input structure ) ?
    Not sure, if SET_XML(IF_WS_PAYLOAD) method can be used.
    Thank you,
    Mallik

    Hi Sarvesh,
    The pdf has details of ABAP mapping. The example given almost matches the xml file you want to be converted.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/3.0/how to use abap-mapping in xi 3.0.pdf
    Just in case you have not seen this
    regards
    Vijaya

  • Unable to create Inbound Sync Server Proxy - Authorization problem

    Im using PI 7.0  . When I try to create a inbound sysnchronous server proxy in SPROXY tcode , I get the following error
    Authorization Check failed: S_TCODE with parameters TCD SICF
    Im able to create both outbound and inbound asynchornous proxies . What could be the problem?

    The JDK/Java that ODI using should be 64bit if ODI 11.1.1.6 is 64 bit.   (I think JDK 1.6 is recommended for this ODI version)
    Also, for which technology you are creating a data server ? and what error message you are getting while creating it ?
    Thanks,
    Santy.

  • Error handling in server proxy - triggering email

    Hi,
    i have WS->XI->CRM scenario.
    i am using server proxy at CRM side.
    I want to hadle errors in ABAP server proxy.
    i am using fault message and collecting and raising the error.
    Everything is fine.
    But to know the error i have to come SXMB_MONI of CRM.
    But in real scenario how it works. some one will not come and see every time.
    How to notify ( may be triggering  email ) some one in the organization if some error occurs in SXMB_MONI.
    Is there any automatic method?? if yes, how to do that.
    Thanks in advance...

    Configure alerts
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9418d690-0201-0010-85bb-e9b2c1af895b
    U may also use CCMS monitoring
    /people/sap.india5/blog/2005/12/06/xi-ccms-alert-monitoring-overview-and-features
    Regards,
    Prateek

  • Debugging of inbound ABAP proxy

    Please To show the debugging of inbound ABAP proxy, the implementation of the demo scenario is used. The demo scenario is available in any installation WebAS 6.40 or higher.

    follow this method and check debugging mode.
    Debugging of inbound proxies in WebAS 6.40 or higher
    To show the debugging of inbound ABAP proxy, the implementation of the demo scenario is used. The demo scenario is available in any installation WebAS 6.40 or higher.
    At first you have to set a break point in the ABAP code. Call transaction SPROXY. Expand the namespace http://sap.com/xi/XI/Demo/Airline, the node Message Interface (inbound) and the interface FlightBookingOrderRequest_In.
    Double click on interface II_SXIDAL_FBO_REQUEST and get the view of the proxy object properties.
    Double click on the implementing class (ABAP name) and then double click on the method name (this class has only one method).
    Now you are in the inbound proxy implementation. Set the break point on the first executable line.
    With help of the back button (F3) go back to the transaction SPROXY. Here you choose from menu Proxy -> Test Interface
    In the next pop up check the field XML Editor to maintain the payload.
    In the next screen apply suitable values or upload the XML payload of the SXMB_MONI (after mapping).
    Now the inbound proxy processing should stop at the break point.
    If the processing does not stop at the break point, there might be an error in the XML. Check at the result page for error messages.
    Debugging of inbound proxies in WebAS 6.20
    You set the break point the same way as described above.
    To start the proxy test you call the report SPRX_TEST_INBOUND.
    As parameters you enter the name of the ABAP interface and the method name of of the ABAP interface and check the parameter Edit Native XML
    In the next screen you apply suitable values or upload the XML payload of the SXMB_MONI (after mapping).
    Then you click first on save button (F11), then on back button (F3).
    Now you should see your debug session. If not, check if the XML is valid. BAPI_GOODSMVT_CREATE to post Goods Movement
    The following is an abap program making used of the BAPI function BAPI_GOODSMVT_CREATE to do Goods Receipts for Purchase Order after importing the data from an external system.
    BAPI TO Upload Inventory Data
    GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order
                         02 - MB31 - Goods Receipts for Prod Order
                         03 - MB1A - Goods Issue
                         04 - MB1B - Transfer Posting
                         05 - MB1C - Enter Other Goods Receipt
                         06 - MB11
    Domain: KZBEW - Movement Indicator
         Goods movement w/o reference
    B - Goods movement for purchase order
    F - Goods movement for production order
    L - Goods movement for delivery note
    K - Goods movement for kanban requirement (WM - internal only)
    O - Subsequent adjustment of "material-provided" consumption
    W - Subsequent adjustment of proportion/product unit material
    report zbapi_goodsmovement.
    parameters: p-file like rlgrap-filename default
                                     'c:\sapdata\TEST.txt'.
    parameters: e-file like rlgrap-filename default
                                     'c:\sapdata\gdsmvterror.txt'.
    parameters: xpost like sy-datum default sy-datum.
    data: begin of gmhead.
            include structure bapi2017_gm_head_01.
    data: end of gmhead.
    data: begin of gmcode.
            include structure bapi2017_gm_code.
    data: end of gmcode.
    data: begin of mthead.
            include structure bapi2017_gm_head_ret.
    data: end of mthead.
    data: begin of itab occurs 100.
            include structure bapi2017_gm_item_create.
    data: end of itab.
    data: begin of errmsg occurs 10.
            include structure bapiret2.
    data: end of errmsg.
    data: wmenge like iseg-menge,
          errflag.
    data: begin of pcitab occurs 100,
            ext_doc(10),           "External Document Number
            mvt_type(3),           "Movement Type
            doc_date(8),           "Document Date
            post_date(8),          "Posting Date
            plant(4),              "Plant
            material(18),          "Material Number
            qty(13),               "Quantity
            recv_loc(4),           "Receiving Location
            issue_loc(4),          "Issuing Location
            pur_doc(10),           "Purchase Document No
            po_item(3),            "Purchase Document Item No
            del_no(10),            "Delivery Purchase Order Number
            del_item(3),           "Delivery Item
            prod_doc(10),          "Production Document No
            scrap_reason(10),      "Scrap Reason
            upd_sta(1),            "Update Status
          end of pcitab.
    call function 'WS_UPLOAD'
      exporting
        filename                      = p-file
        filetype                      = 'DAT'
    IMPORTING
      FILELENGTH                    =
      tables
        data_tab                      = pcitab
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                      = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                  = 5
      OTHERS                        = 6
    if sy-subrc <> 0.
      message id sy-msgid type sy-msgty number sy-msgno
              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      exit.
    endif.
    gmhead-pstng_date = sy-datum.
    gmhead-doc_date = sy-datum.
    gmhead-pr_uname = sy-uname.
    gmcode-gm_code = '01'.   "01 - MB01 - Goods Receipts for Purchase Order
    loop at pcitab.
      itab-move_type  = pcitab-mvt_type.
      itab-mvt_ind    = 'B'.
      itab-plant      = pcitab-plant.
      itab-material   = pcitab-material.
      itab-entry_qnt  = pcitab-qty.
      itab-move_stloc = pcitab-recv_loc.
      itab-stge_loc   = pcitab-issue_loc.
      itab-po_number  = pcitab-pur_doc.
      itab-po_item    = pcitab-po_item.
      concatenate pcitab-del_no pcitab-del_item into itab-item_text.
      itab-move_reas  = pcitab-scrap_reason.
      append itab.
    endloop.
    loop at itab.
      write:/ itab-material, itab-plant, itab-stge_loc,
              itab-move_type, itab-entry_qnt, itab-entry_uom,
              itab-entry_uom_iso, itab-po_number, itab-po_item,
                                                  pcitab-ext_doc.
    endloop.
    call function 'BAPI_GOODSMVT_CREATE'
      exporting
        goodsmvt_header             = gmhead
        goodsmvt_code               = gmcode
      TESTRUN                     = ' '
    IMPORTING
        goodsmvt_headret            = mthead
      MATERIALDOCUMENT            =
      MATDOCUMENTYEAR             =
      tables
        goodsmvt_item               = itab
      GOODSMVT_SERIALNUMBER       =
        return                      = errmsg
    clear errflag.
    loop at errmsg.
      if errmsg-type eq 'E'.
        write:/'Error in function', errmsg-message.
        errflag = 'X'.
      else.
        write:/ errmsg-message.
      endif.
    endloop.
    if errflag is initial.
      commit work and wait.
      if sy-subrc ne 0.
        write:/ 'Error in updating'.
        exit.
      else.
        write:/ mthead-mat_doc, mthead-doc_year.
        perform upd_sta.
      endif.
    endif.
          FORM UPD_STA                                                  *
    form upd_sta.
      loop at pcitab.
        pcitab-upd_sta = 'X'.
        modify pcitab.
      endloop.
      call function 'WS_DOWNLOAD'
        exporting
          filename                      = p-file
          filetype                      = 'DAT'
    IMPORTING
      FILELENGTH                    =
        tables
          data_tab                      = pcitab
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                      = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                  = 5
      OTHERS                        = 6
    endform.
    *--- End of Program
    Finding the user-exits of a SAP transaction code
    Finding the user-exits of a SAP transaction code
    Enter the transaction code in which you are looking for the user-exit
    and it will list you the list of user-exits in the transaction code.
    Also a drill down is possible which will help you to branch to SMOD.
    report zuserexit no standard page heading.
    tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
             tables : tstct.
    data : jtab like tadir occurs 0 with header line.
    data : field1(30).
    data : v_devclass like tadir-devclass.
    parameters : p_tcode like tstc-tcode obligatory.
    select single * from tstc where tcode eq p_tcode.
    if sy-subrc eq 0.
       select single * from tadir where pgmid = 'R3TR'
                        and object = 'PROG'
                        and obj_name = tstc-pgmna.
       move : tadir-devclass to v_devclass.
          if sy-subrc ne 0.
             select single * from trdir where name = tstc-pgmna.
             if trdir-subc eq 'F'.
                select single * from tfdir where pname = tstc-pgmna.
                select single * from enlfdir where funcname =
                tfdir-funcname.
                select single * from tadir where pgmid = 'R3TR'
                                   and object = 'FUGR'
                                   and obj_name eq enlfdir-area.
                move : tadir-devclass to v_devclass.
              endif.
           endif.
           select * from tadir into table jtab
                         where pgmid = 'R3TR'
                           and object = 'SMOD'
                           and devclass = v_devclass.
            select single * from tstct where sprsl eq sy-langu and
                                             tcode eq p_tcode.
            format color col_positive intensified off.
            write:/(19) 'Transaction Code - ',
                 20(20) p_tcode,
                 45(50) tstct-ttext.
                        skip.
            if not jtab[] is initial.
               write:/(95) sy-uline.
               format color col_heading intensified on.
               write:/1 sy-vline,
                      2 'Exit Name',
                     21 sy-vline ,
                     22 'Description',
                     95 sy-vline.
               write:/(95) sy-uline.
               loop at jtab.
                  select single * from modsapt
                         where sprsl = sy-langu and
                                name = jtab-obj_name.
                       format color col_normal intensified off.
                       write:/1 sy-vline,
                              2 jtab-obj_name hotspot on,
                             21 sy-vline ,
                             22 modsapt-modtext,
                             95 sy-vline.
               endloop.
               write:/(95) sy-uline.
               describe table jtab.
               skip.
               format color col_total intensified on.
               write:/ 'No of Exits:' , sy-tfill.
            else.
               format color col_negative intensified on.
               write:/(95) 'No User Exit exists'.
            endif.
          else.
              format color col_negative intensified on.
              write:/(95) 'Transaction Code Does Not Exist'.
          endif.
    at line-selection.
       get cursor field field1.
       check field1(4) eq 'JTAB'.
       set parameter id 'MON' field sy-lisel+1(10).
       call transaction 'SMOD' and skip first   screen.
    *---End of Program
    u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026
    Difference Between BADI and User Exits
    Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software. 
    As with customer exits two different views are available:
    In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object. 
    In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available.
    In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure.
    SAP guarantees the upward compatibility of all Business Add-In interfaces. Release upgrades do not affect enhancement calls from within the standard software nor do they affect the validity of call interfaces. You do not have to register Business Add-Ins in SSCR.
    The Business Add-In enhancement technique differentiates between enhancements that can only be implemented once and enhancements that can be used actively by any number of customers at the same time. In addition, Business Add-Ins can be defined according to filter values. This allows you to control add-in implementation and make it dependent on specific criteria (on a specific Country value, for example).
    All ABAP sources, screens, GUIs, and table interfaces created using this enhancement technique are defined in a manner that allows customers to include their own enhancements in the standard. A single Business Add-In contains all of the interfaces necessary to implement a specific task.
    The actual program code is enhanced using ABAP Objects. In order to better understand the programming techniques behind the Business Add-In enhancement concept, SAP recommends reading the section on ABAP Objects.
    What is difference between badi and user-exists?
    What is difference between enhancements and user-exists? and what is the full form of BADI?
    I have another doubt in BDC IN BDC WE HAVE MSEGCALL (i did not remember the > correct name) where the error logs are stored, MSEGCALL is a table or structure.
    What is the system landscape?
    1) Difference between BADI and USER-EXIT.
        i) BADI's can be used any number of times, where as USER-EXITS can be used only one time.
           Ex:- if your assigning a USER-EXIT to a project in (CMOD), then you can not assign the same to other project.
        ii) BADI's are oops based.
    2) About 'BDCMSGCOLL' it is a structure.  Used for finding error records.
    3) Full form of BADI 'Business addins'.
    3) System land scape will be depends on your project 
        Ex:- 'Development server'>'Quality server'-> 'Production server'...... 
    List Of User Exit Related to VL01N
    I need to some restriction in fields ( Actual GI Date, T-Code:Vl01n ).
    How do you find out whcih user exits belongs to VL01n ?
    Here is the list of user exit related to VL01N :
    V02V0001   - Sales area determination for stock transport order 
    V02V0002   - User exit for storage location determination 
    V02V0003   - User exit for gate + matl staging area determination 
    V02V0004   - User Exit for Staging Area Determination (Item) 
    V50PSTAT  - Delivery: Item Status Calculation 
    V50Q0001   - Delivery Monitor: User Exits for Filling Display Fields
    V50R0001    -  Collective processing for delivery creation 
    V50R0002    - Collective processing for delivery creation 
    V50R0004    - Calculation of Stock for POs for Shipping Due Date List
    V50S0001    - User Exits for Delivery Processing 
    V53C0001    - Rough workload calculation in time per item 
    V53C0002    - W&S: RWE enhancement - shipping material type/time slot
    V53W0001   - User exits for creating picking waves 
    VMDE0001  - Shipping Interface: Error Handling - Inbound IDoc 
    VMDE0002  - Shipping Interface: Message PICKSD (Picking, Outbound) 
    VMDE0003  - Shipping Interface: Message SDPICK (Picking, Inbound) 
    VMDE0004  - Shipping Interface: Message SDPACK (Packing, Inbound)

Maybe you are looking for