Navigating away from Web Dynpro after warning.

Hi Experts,
I wanted to see if anyone can shed light on something I've been trying to implement. I'm working with NWDS 7.0.18
I developed a collection of WDP Java apps that reside in the same workset.
While working in one of the apps, if the user clicks a link to another app in the detailed navigation area and they haven't saved what they have been doing in the current app, then I want to display a message like: "You haven't saved you worked, are you sure you want to leave?? YES/NO"
If the user clicks yes, how do I navigate them to the app they clicked on? Or the role they clicked on? Or the workset they clicked on? I have put the above message in the wdDoExit() method of the View controller. The method checks for unsaved changes and if so, displays the message.  I have two event handlers YesExit and NoExit. NoExit does nothing, what do I need to put in YesExit??
Any help is greatly appreciated.
Thanks
MM

Hi,
have you tried "work protect mode"? I don't know, if it works, when work protect mode is set in the onExit function, but give it a try.
The first example demonstrates how to define the work-protect mode level:
// Define the needed level. The level can be switched during
// the application lift time, i.e. it can for example be
// switched for different views.
WDPortalWorkProtectMode.setApplicationDirtyControl(
WDApplicationIsDirtyMode.NONE);
WDPortalWorkProtectMode.setApplicationDirtyControl(
WDApplicationIsDirtyMode.APPLICATION_ONLY);
WDPortalWorkProtectMode.setApplicationDirtyControl(
WDApplicationIsDirtyMode.STANDARD);
The second example demonstrates how to define the u201Cdirty stateu201D of an application:
// Set the u201Cdirty stateu201D to YES, i.e. the application is dirty and
// a navigation should be launched in a new window to make sure that
// no data is lost
WDPortalWorkProtectMode.setApplicationDirty(true);
// Set the u201Cdirty stateu201D to FALSE, i.e. the application state is u201Ccleanu201D
// and therefore the navigation is launched inplace and the
// running application is left.
WDPortalWorkProtectMode.setApplicationDirty(true);
Here is the document, i got this code from with some explanations about work protect mode: http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/a891e490-0201-0010-fb99-b7e4f5dda2ec&overridelayout=true
best regard,
Christian

Similar Messages

  • CAF DB Update for CAF Entity Service from Web Dynpro

    Hi all,
    I have created an entity service in CAF called “Contacts’ which contains the following attributes.
    phoneNo
    cellNo
    emailID.
    Another entity service called "Person" is created. This contains the following attributes.
    personId
    personName
    personAddr
    contactsRef. (Cardinality -> 0..n , Relational Type -> Composition)
    That means Contacts entity service is used within Person entity service. Now it is working fine within CAF service browser. Now the Web Dynpro DC of CAF application is used within another custom Web Dynpro DC project. I want to store data from Web Dynpro.
    Within the context of component controller of  Web Dynpro the structure is like
    APerson
         |_ personId
         |_ personName
         |_ personAddr
         |_ contactsRef       
                    |_ phoneNo (Under contactsRef)
                    |_ cellNo (Under contactsRef)
                    |_ emailID (Under contactsRef)
    So I have written the following code within web dynpro custom method.
    APerson person = PersonServiceProxy.create();
    java.util.List ls = new ArrayList();
    for(int i=0; i<4;i++)
    AContacts contact = ContactsServiceProxy.create();
    contact.setCellNo("9092130156");
    contact.setEmailID("[email protected]");
    contact.setPhoneNo("432258");
    contact.getAspect().sendChanges();
    ls.add(contact);
    person.setRelatedModelObjects("contactsRef",ls);
    person.setPersonID("9999");
    person.setPersonName("xyz");
    person.setPersonAddr("ABC, KOL");
    wdContext.nodeAPerson().bind(person);
    person.getAspect().sendChanges();
    CAFServiceFactory.getServiceFacade(idendityDefinition.class);
    After saving the data from Web Dynpro I am trying to test it from CAF service browser. But I am getting only the parent row. I mean only the value of personId, personName and personAddr fields which I have stored from Web Dynpro. But no value is coming within the table for Contacts entity service for composition relation.
    Could anybody help me how can I solve my problem?
    Thanks & Regards
    Chandan
    Message was edited by:
            Chandan Jash

    Hi Chandan,
    Can you do person.getRelatedModelObjects() and get the contact object, to check whether it is null, also check in the CAF DB whether the data you entered is present.
      I am not sure the code is actually adding the contact model object to person.
    Go thru this SDN Blog on usage of the CMI API's, there is a link for CMI documentation in it which might help you get the right code for adding the contact object.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/cef4f43e-0d01-0010-db84-ede25c874115.
    award points if  info is helpful
    Regards,
    Anish

  • Detecting navigation away from a screen

    To play mp3 files in my web application, I've a  simple audio player with play/pause buttons, progress bar, etc. Just the way  VideoPlayer stops playing video when user of the application switches to some  other screen, I would like my audio player to stop playing audio when the user  switches to some other screen. What event can I use to detect that the audio  player (s:VGroup) isn't 'visible'?
    Although this question is framed around stopping an  audio player, the same applies to a situation where user is navigating away from  a form without saving modified data.
    Thanks,
    Dilip

    Hey Dilip,
    You need to include Javascript here. What you need to do is put an event on window.blur and on window.blur call a code of Flex application to make the audio player mute.
    I think that make sense to you still if you have any question let me know.
    Thanks & Regards
    Ankur Arora
    Project Leader(Flash and Flex)
    http://flashdeveloper.blogspot.com
    http://www.ankur-arora.com

  • Navigate from Web Dynpro app to portal page

    Dear All,
    I've created a number of Web Dynpro applications which I run from various portal pages. From one of the Web Dynpro's I navigate to a different portal page using the WDPortalNavigation.navigateAbsolute method. This works fine, but I'm left with one problem:
    I'd like to pass parameters from the Web Dynpro which navigates to the portal page to the Web Dynpro applications which run on that specific page. I've appended the parameters to the URL I'm navigating to (eg ROLES://<pcd location>?<param=xxx>) and in the Web Dynpro's I've added a parameter to the Default interface plug. This doesn't seem to work. As an alternative I've added the statement WDWebContextAdapter.getWebContextAdapter().getRequestParameter("param") to the doInit() method of the view, but this also doesn't work.
    Either I'm doing something wrong, or what I want to accomplish is not possible. Does anybody know of a way to access parameters passed to a portal page from Web Dynpro applications contained on that page?
    Thanks,
    Arnoud

    I hope you are passing parameters between two WebDynpro applications.
    Please go through the example available for passing interaction between two webdynpro components.
    Please check the following link
    Alternative method for navigating to another page ?
    or the following link
    Re: Can we pass parameters in querystring of the webdynpro application?

  • HTTP form post from Web Dynpro Java Application without opening new window

    Hi Experts,
    We are trying to submit form data to an external URL from Web Dynpro Java application. We are achieving this with the following piece of code.
      try
       strPrintContent="<html>"+
         "<head>"+
         "<script type=\"text/javascript\">"+   
         "function myfunc () "+
         "{"+
         "var frm = document.getElementById(\"paymentForm\");"+
         "frm.submit();"+
         "}"+
         "</script>"+
         "</head>"+
         "<body onLoad=myfunc()>"+
         "<form id=paymentForm  method=post action=\""+merchantURLPart+"\">"+
         "<INPUT type=hidden name=username value="+userName+">"+
         "<INPUT type=hidden name=pass value="+passWord+">"+
         "<INPUT type=hidden name=senderid value="+senderID+">"+    
         "<INPUT type=hidden name=dest_mobileno value="+mobile+">"+
         "<INPUT type=hidden name=message value='"+msg+"'>"+
         "<INPUT type=hidden name=response value="+response+">"+
         "</form>"+
         "</body>"+
         "</html>";    
      IWDWebResource webResource = WDWebResource.getWebResource(strPrintContent.getBytes(),WDWebResourceType.HTML);
      IWDWindow window = wdComponentAPI.getWindowManager().createNonModalExternalWindow(webResource.getAbsoluteURL(),"WBSEDCL");
      window.show();
      catch(Exception e)
      wdComponentAPI.getMessageManager().reportException("Error : "+e.toString(),false);
    But it opens another window. We dont need that. We have to stay on the same window.  Please suggest what can be done.

    Hi,
    You can create a HTML file with the request post parameters and the external URL something like this:
    public java.lang.String GetRedirecturl( )
    // External URL
    String html = "<html><head></head><body onload=\"load()\"> " +
    "<form id=\"form1\" action=\"https://www.abc.com/xyz.jsp\" method=\"POST\">" +
    // Post Parameters
    "<INPUT TYPE=\"HIDDEN\" NAME=\"Param1\"VALUE=\""+Param1Value+"\">"+
    "<input name=\"sap-wd-resumeurl\" type=\"hidden\"/>" +
    "</form> " +
    "" +
    "<script>" +
    "function load(){" +
    "var loc = window.location.search.substring(1);" +
    "var queryString = loc.split(\"sap-wd-resumeurl=\");" +
    "if(queryString.length > 0)" +
    "{" +
    "var resumeURL = queryString[1].split(\"&\");" +
    "if(resumeURL.length >= 0)" +
    "{" +
    " document.forms['form1'].elements['sap-wd-resumeurl'].value= unescape(resumeURL[0])" +
    "}" +
    "}" +
    "document.getElementById('form1').submit();" +
    "}" +
    "</script>" +
    "</body> </html>";
    String redirectUrl = "";
    byte[] byteArrayHtmlData = null;
    try {
      byteArrayHtmlData = html.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
      wdComponentAPI.getMessageManager().reportException("Internal error occurred. Please try after some time",true);
    IWDResource htmlResource = WDResourceFactory.createCachedResource(new ByteArrayInputStream(byteArrayHtmlData), "Redirect.html", WDWebResourceType.HTML, true);
    redirectUrl = htmlResource.getUrl(WDFileDownloadBehaviour.AUTO.ordinal());
    return redirectUrl;
    Hope this will be helpful.
    Regards,
    Anurag

  • CAF DB update from Web Dynpro

    Hi all,
    I have created an entity service in CAF called “Contacts’ which contains the following attributes.
    phoneNo
    cellNo
    emailId.
    Another entity service called "Person" is created. This contains the following attributes.
    personId
    personName
    personAddr
    contactsRef. (Cardinality -> 0..n  , Relational Type -> Composition)
    That means Contacts entity service is used within Person entity service. Now it is working fine within CAF service browser. Now the Web Dynpro DC of CAF application is used within another custom Web Dynpro DC project. I want to store data from Web Dynpro. So I have written the following code within web dynpro custom method.
    APerson person = PersonServiceProxy.create();
         java.util.List ls = new ArrayList();
        for(int i=0; i<4;i++)
        AContacts contact = ContactsServiceProxy.create();
         contact.setCellNo("9092130156");
         contact.setEmailID("[email protected]");
         contact.setPhoneNo("432258");
         contact.getAspect().sendChanges();
        ls.add(contact);
         person.setRelatedModelObjects("contactRef",ls);
         person.setPersonID("9999");
         person.setPersonName("xyz");
         person.setPersonAddr("ABC, KOL");
         wdContext.nodeAPerson().bind(person);
         person.getAspect().sendChanges();
         CAFServiceFactory.getServiceFacade(idendityDefinition.class);
    After saving the data from Web Dynpro I am trying to test it from CAF service browser. But I am getting only the parent row. I mean only the value of  personId, personName and personAddr fields which I have stored from Web Dynpro. But no value is coming within the table for Contacts entity service for composition relation.
    Could anybody help me how can I solve my problem?
    Thanks & Regards
    Chandan

    Hi Chandan,
    Can you do person.getRelatedModelObjects() and get the contact object, to check whether it is null, also check in the CAF DB whether the data you entered is present.
      I am not sure the code is actually adding the contact model object to person.
    Go thru this SDN Blog on usage of the CMI API's, there is a link for CMI documentation in it which might help you get the right code for adding the contact object.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/cef4f43e-0d01-0010-db84-ede25c874115.
    award points if  info is helpful
    Regards,
    Anish

  • Window size, and navigation issues with Web Dynpro and GP

    I have a Web Dynpro application which navigates to other Web Dynpro applications.  I also need to integrate this application into a GP.  When I create a process that calls the Web Dynpro app, two things I've noticed are:
    1. The window size presented in the GP process is too small, and there is no way to scroll to see the rest of the app.  How can I change the initial size of the Window to show the entire application?  This is an absolute show stopper...
    2. Other functionality is made available to the Web Dynpro app by navigating to other Web Dynpro applications.  Outside of the GP, this works correctly.  However, from within the application when started via a GP, I get the following error when I try to trigger an action that will lead to a navigation event:
    com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Cannot navigate via outbound plug CreatePdf of view TestView because there is no navigational link attached to it
        at com.sap.tc.webdynpro.progmodel.view.View.navigate(View.java:541)
        at com.sap.tc.webdynpro.progmodel.view.View.navigate(View.java:462)
    Any ideas? Do I have to manually instantiate the various components when the root Web Dynpro app is called from a GP?

    Update: this was my mistake - I had neglected to configure all the view containers in the WebDynproCO window, which was generated by adding the GP interface to the component.  All is well.

  • How to get the Response Code when a URL is launched from Web Dynpro

    Hello Experts,
    I have a Web Dynpro Application in which in one of its views i have an IFrame UI element in which i will show a resource stored somewhere ..
    But before showing it i want to check if the resource actually exists. For this i have to check the HTTP Response code from Web Dynpro Application without setting it in the Iframe..
    I am using the following code to get the Response Code:
    try{
    URL url = new URL("Some Url");
    HttpURLConnection.setFollowRedirects(false);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.connect();
    wdComponentAPI.getMessageManager().reportSuccess("Response code ="+connection.getResponseCode());
    }catch(Exception e){
    wdComponentAPI.getMessageManager().reportSuccess("Exception");
    Now the Problem is whatever response Code occurs 403 (for No Proper Authorization), 404 (for Resource not found) etc..
    i always get Response Code=  500 (which is for Internal Server Error) shown in the messgae i have printed.
    Please let me know the correct way of getting the Response Code from Web Dynpro.
    Also my resource is lying on a SAP Portal 6.4
    Best Regards
    Sundeep
    Edited by: Sundeep Sethi on Feb 18, 2008 9:07 AM
    Edited by: Sundeep Sethi on Feb 18, 2008 10:23 AM

    Hi,
      Check this code from /thread/5242768 [original link is broken] if it works.
    try{
    URL myurl = new URL("http://calendar.google.com");
    URLConnection connection = myurl.openConnection();
    if(connection instanceof HttpURLConnection) {
    HttpURLConnection httpConnection = (HttpURLConnection) connection;
    HttpURLConnection.setFollowRedirects(true);
    httpConnection.setRequestMethod("HEAD");
    httpConnection.connect();
    System.out.println("Response = "+httpConnection.getResponseCode());
    catch(Exception e) {
    // print exception
    Regards,
    Harini S

  • Regarding how to pass the data from web dynpro to workflow

    hi gurus,
    how to pass the data from web dynpro to workflow.
    Regards
    vijay

    Check this [thread|SAP_WAPI_START_WORKFLOW;

  • How to pass the data from web dynpro to workflow.

    hi gurus,
    how to pass the data from web dynpro to workflow.
    Regards
    vijay

    Hi
    you can use function module
    data   ls_input_container  TYPE swr_cont.
    data   lt_input_container  TYPE TABLE OF  swr_cont.
    CALL FUNCTION 'SAP_WAPI_START_WORKFLOW'
        EXPORTING
          task            = ptask
        IMPORTING
          return_code     = lv_return_code
          new_status      = lv_new_status
        TABLES
          input_container = pinput_container
          message_lines   = lt_message_lines
          message_struct  = lt_message_struct.
    where you pass the data in imnternal table "pinput_container" as
      ls_input_container-element = 'KUNNR'.
      ls_input_container-value = ls_skna1-kunnr ."wd_this->lv_kunnr.
      APPEND ls_input_container TO lt_input_container .
      ls_input_container-element = 'CLUSER'.
      ls_input_container-value = lv_cluser.
      APPEND ls_input_container TO lt_input_container .
      ls_input_container-element = 'BUKRS'.
      ls_input_container-value = lv_bukrs. " youe value as per requirement.
      APPEND ls_input_container TO lt_input_container .
      ls_input_container-element = 'VKORG'.
      ls_input_container-value = ls_sknvv-vkorg. " youe value as per requirement
      APPEND ls_input_container TO lt_input_container .
      ls_input_container-element = 'VTWEG'.
      ls_input_container-value = ls_sknvv-vtweg. "youe value as per requirement.
      APPEND ls_input_container TO lt_input_container .
      ls_input_container-element = 'SPART'.
      ls_input_container-value = ls_sknvv-spart. "youe value as per requirement.
      APPEND ls_input_container TO lt_input_container .
    *Also Forgot to mention where ptask is your workflow ID *
    Regards,
    Arvind
    Edited by: Arvind Patel on May 14, 2010 7:38 AM

  • Passing parameters to Transactions from Web dynpro Application through ITS

    Hi,
    i need to call a transaction from Web dynpro through ITS. On action from web dynpro application, i am concatenating the respective parameters mentioned below along with URL. The problem is one parameter(VARIANT) is being passed to the t-code CAT3 correctly. The next mandatory parameter(PERNR) is not passed to the respective field.Here is the URL Code:
    CONCATENATE 'http'
    '://' host ':' port
    '/sap/bc/gui/sap/its/webgui/?sap-client=&~transaction=' 'CAT3'
    '%20TCATST-VARIANT=' lv_name2 '&CATSFIELDS-PERNR=' lv_name1 INTO url.
    Called T-Code CAT3
    Passing Parameters are:
    Data Profile TCATST-VARIANT
    Pernr: CATSFIELDS-PERNR

    Pradeep,
    iam trying to pass values from webdynpro application to SAP GUI Transaction
    here is the sample code which iam using
    CONCATENATE  'http://s0164dep01.adta.uae:50000/irj/portal/interop?NavigationTarget=pcd:portal_content/Testing/trn_iw33?'
    '%20CAUFVD-AUFNR='
                 'ApplicationParameter=CAUFVD-AUFNR='
                  lv_workorder';'
              'DYNP_OKCODE=SHOW'
             INTO lv_url.
    i could'nt able to succed as its displaying page not found exception.
    Help me on this to proceed further
    Regards
    Jaipal.E

  • Cannot print from web sites after update to FF 7.0.1

    cannot print from web sites after update to FF 7.0.1
    Printing from my email account (Cox) is OK
    System Windows Vista

    When my wife updated Firefox to version 7.0.1 she was no longer able to print items from the web such as coupons. She can print from her email (Cox) account.
    She is running Vista.
    When I updated to Firefox 7.0.1, I did not have a problem. I am running Vista also.
    Tried using the Firefox help page but no help so far.
    I did notice that on her computer in the "Plugins" for Firefox that HP Smart Web Printing is now disabled and is not compatible with Firefox 7.0.1. She had no problems until she did the update.

  • Calling adobe form from Web Dynpro ABAP

    Hi Friends,
                        This is the following error, which i got when i tested my application. Calling adobe form from Web Dynpro ABAP.
      WebDynpro Exception: ADS: Request start time: Tue Nov 16 14:00:22 YEKT
      2010(200,101).
                        Can some one tell me how to solve this....
    Regards
    Sankar

    Hi,
    Please refer to this same link in forum
    WebDynpro Exception: ADS: Request start time, start Interactive Form
    WebDynpro Exception: ADS: Request start time
    Thanks
    Pradeep

  • Calling Batch input from Web Dynpro - any alternatives for table updates?

    Hi!
    I am asked to create a screen in Web Dynpro for the GJ30 transaction (JV Cutback mapping of WBS' elements). I created a remote enabled function module which call batch input for GJ30 . Testing the Function modules direclty goes fine, but not calling the function module from WD. then I get the same error message as when I once tried to call SAP GUI from Web Dynpro ( Call transaction /submit program).
    My next step is to try to create a batch input session (instead of call transaction) and run it using rsbdcsub, and then check the result of the run. But maybe this will fail of the same reason as well, and I suppose this will make the user waiting longer for the response .
    I read somewhere that Web Dynpro does not support batch Input. But what can you do when there are no standard BAPI's for the update you want to do in SAP ?  We are not supposed to do direct table updates.  
    Anyone who have struggled with the same issues and found a solution??
    regards, Tine

    Hi,
    as BDC is calling screens and in Webdynpro ABAP you cannot use SAP GUI sceeen, you are getting short dump.
    Refer CNTL_SYSTEM_ERROR in webservices from r/3 system
    Thanks,
    Chandra

  • Trigger File Generation to a Server from Web Dynpro Application

    Hi Everybody! Hope you had a good new years eve
    Is it possible to generate a File on a Server outgoing from Web Dynpro?
    I tried to use GUI_DOWNLOAD. But as I couldn't use the GUI_DOWNLOAD from the Web Dynpro, I wrote a Report "ZCMI_EXPORT_FILE" that generates a Text-File. When I start the Report by myself, the file gets generated. All fine.
    To be able to generate the File from Web Dynpro, I created a Batch Input Function Module, that I call in the Web Dynpro. The File is not created and it does not show any errors.
    Do you have any idea how i can get this working? I'd also be happy with a different approach.
    Best Regards and Thanks,
    Steffen
    REPORT that is called with Batch Input from Web Dynpro:
    call function 'ZFM_GENERATE_EXPORT'
      exporting
        it_detail_record     = lt_records
        is_export            = gs_export
      importing
        ev_string            = gs_export-document
        et_dataset           = data_tab
      exceptions
        parameter_is_initial = 1
        others               = 2.
    if sy-subrc <> 0.
    endif.
    concatenate '\\SERVER\EXPORT\' gs_export-filename into lv_filename.
    call function 'GUI_DOWNLOAD'
      exporting
        filename                = lv_filename
      tables
        data_tab                = data_tab
      exceptions
        file_write_error        = 1
        no_batch                = 2
        gui_refuse_filetransfer = 3
        invalid_type            = 4
        others                  = 5.
    if sy-subrc <> 0.
      exit.
    endif.

    HI,
    GUI_DOWNLOAD does not get's executed in the Backgroud.
    there is no way to do it as a background job.. create the folder.. transfer the file to the application server in the backgorund using OPEN DATASET... use the tcode CG3Y to download the file from the app server to your folder..

Maybe you are looking for

  • How to restrict the users in ALV Report

    HI Experts, I have a requirement that in an ALV report i have 10colums in the otput of an alv report program now if i want the 5 users to see only the 4 column and if i want the other users to see only 3colums how can we do thal please help me on thi

  • Purchase Requisitions Approval Error

    Hi, We are working in Oracle Applications 11i. We have the follwoing modules installed and used: Purchasing, Inventory, HRMS(Payrol), General Ledger, Assets, Payables. I am trying to fill in the gaps in our initial setup in order to enable the user t

  • How can I put data in FCE?

    Hello, After I had finally managed to install FCE (4.0) , I connected my Sony HDR-CX155 with my computer. It appears on the desktop and in FCE, I can also "look" in the camera's recorded clips via FCE, but it is not possible to get the chosen clips o

  • Use of netweaver in java programming

    Hi!    I want to know the use of netweaver in java application as compare to other IDE's.                     Thnk u

  • Powermac G3: max 4x256Mbyte. Can you confirm?

    Hi to everybody. I believe the title of the subject is clear but can somebody confirm that the size limit of RAM in each slot is 256Mbyte (machine is produced in july 1999). Does also anybody know if PC-133 256Mbyte DIMM are OK? Thank you very much.