Show_url and open_browser

Hi All,
I wanted to know if show_url of class cl_gui_html_viewer serves teh same functionality as open_browser ?
We have all our applications calling open_browser and I am to implement an OSS note that mentions about show_url. Can anyone throw some light on this please ?

Hello,
SHOW_URL will only navigates to the URL specified in the HTML Control.
In case if you want an browser instance to be created you can call the method SHOW_URL_IN_BROWSER, this will create a new instance of browser and navigates to the URL passed. If you close the sapgui session, the browser is also closed. In case if you dont want the browser to be closed when sapgui session is closed use the method DETACH_URL_IN_BROWSER.
Best Regards
Rajendra

Similar Messages

  • DETACH_URL_IN_BROWSER versus SHOW_URL

    Goodafternoon,
    Can anybody explain me what the differents in the class CL_GUI_HTML_VIEWER is between
    the method "DETACH_URL_IN_BROWSER" and method "SHOW_URL with parameter IN_PLACE = ' '".
    When i open a url with Show_URL and parameter in_place = ' ' the result is not shown in the browser.
    If i open the url with the method detach_url_in-Browser this is working.
    tnks.

    Hi,
    As far as I understand:
    The difference is that in the methos
    DETACH_URL_IN_BROWSER -
    > Internally an SAP 'CALL BROWSER' FM is called that open the usrl in that browser.
    SHOW_URL with parameter IN_PLACE = 'X' ---(This is default) should work.
    SHOW_URL with parameter IN_PLACE = ' ' means that the methods assumes the URL passed is an absolute URL.
    I hope this answers your question.
    Regards,
    Saurabh

  • Few questions about apex + epg and cookie blocked by IE6

    Hi,
    I would like to ask a few questions about apex and epg.
    I have already installed and configured apex 3.2 on oracle 10g (on my localhost - computer name 'chen_rong', ip address -192.168.88.175 ), and enable anonymous access xdb http server.
    now,
    1. I can access 'http://chen_rong' , 'http://localhost' , 'http://192.168.88.175' without input username / password for realm 'XDB' in IE6;
    2. I can access 'http://localhost/apex/apex_admin' , 'http://192.168.88.175/apex/apex_admin' , and I can be redirected into apex administation page after input admin/<my apex admin password> for realm 'APEX' in IE6;
    3. I can access 'http://chen_rong/apex/apex_admin' in IE6, but after input admin/password , I can not be redirected into administation page, because the cookie was blocked by IE6.
    then, the first question is :
    Q1: What is the difference among 'http://chen_rong' , 'http://localhost' , 'http://192.168.88.175' ? I have already include site 'chen_rong' into my trusted stes! why the cookie was blocked by IE6. I have already tried firefox and google browser, both of them were ok for 'chen_rong', no cookie blocked from site 'chen_rong'!
    and,
    1. I have tried to use the script in attachment to test http authentication and also want to catch the cookie by utl_http .
    2. please review the script for me.
    3. I did:
    SQL> exec show_url('http://localhost/apex/apex_admin/','ADMIN','Passw0rd');
    HTTP response status code: 401
    HTTP response reason phrase: Unauthorized
    Please supplied the required Basic authentication username/password for realm XDB for the Web page.
    Web page http://localhost/apex/apex_admin/ is protected.
    MS-Author-Via: DAV
    DAV: 1,2,<http://www.oracle.com/xdb/webdav/props>
    Server: Oracle XML DB/Oracle Database
    WWW-Authenticate: Basic realm="XDB"
    Date: Tue, 04 Aug 2009 02:25:15 GMT
    Content-Type: text/html; charset=GBK
    Content-Length: 147
    ======================================
    PL/SQL procedure successfully completed
    4. I also did :
    SQL> exec show_url('http://localhost/apex/apex_admin/','ANONYMOUS','ANONYMOUS');
    HTTP response status code: 500
    HTTP response reason phrase: Internal Server Error
    Check if the Web site is up.
    PL/SQL procedure successfully completed
    SQL> exec show_url('http://localhost/apex/apex_admin/','SYSTEM','apexsite');
    HTTP response status code: 401
    HTTP response reason phrase: Unauthorized
    Please supplied the required Basic authentication username/password for realm APEX for the Web page.
    Web page http://localhost/apex/apex_admin/ is protected.
    Content-Type: text/html
    Content-Length: 147
    WWW-Authenticate: Basic realm="APEX"
    ======================================
    PL/SQL procedure successfully completed
    my second questions is :
    Q2: After I entered into realm 'XDB', I still need went into realm'APEX'. how could I change the script show_url to accomplish these two tasks and successfully get the cookie from site.
    the show_url script is as following:
    CREATE OR REPLACE PROCEDURE show_url
    (url IN VARCHAR2,
    username IN VARCHAR2 DEFAULT NULL,
    password IN VARCHAR2 DEFAULT NULL)
    AS
    req UTL_HTTP.REQ;
    resp UTL_HTTP.RESP;
    name VARCHAR2(256);
    value VARCHAR2(1024);
    data VARCHAR2(255);
    my_scheme VARCHAR2(256);
    my_realm VARCHAR2(256);
    my_proxy BOOLEAN;
    cookies UTL_HTTP.COOKIE_TABLE;
    secure VARCHAR2(1);
    BEGIN
    -- When going through a firewall, pass requests through this host.
    -- Specify sites inside the firewall that don't need the proxy host.
    -- UTL_HTTP.SET_PROXY('proxy.example.com', 'corp.example.com');
    -- Ask UTL_HTTP not to raise an exception for 4xx and 5xx status codes,
    -- rather than just returning the text of the error page.
    UTL_HTTP.SET_RESPONSE_ERROR_CHECK(FALSE);
    -- Begin retrieving this Web page.
    req := UTL_HTTP.BEGIN_REQUEST(url);
    -- Identify yourself.
    -- Some sites serve special pages for particular browsers.
    UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
    -- Specify user ID and password for pages that require them.
    IF (username IS NOT NULL) THEN
    UTL_HTTP.SET_AUTHENTICATION(req, username, password, 'Basic', false);
    END IF;
    -- Start receiving the HTML text.
    resp := UTL_HTTP.GET_RESPONSE(req);
    -- Show status codes and reason phrase of response.
    DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || resp.status_code);
    DBMS_OUTPUT.PUT_LINE
    ('HTTP response reason phrase: ' || resp.reason_phrase);
    -- Look for client-side error and report it.
    IF (resp.status_code >= 400) AND (resp.status_code <= 499) THEN
    -- Detect whether page is password protected
    -- and you didn't supply the right authorization.
    IF (resp.status_code = UTL_HTTP.HTTP_UNAUTHORIZED) THEN
    UTL_HTTP.GET_AUTHENTICATION(resp, my_scheme, my_realm, my_proxy);
    IF (my_proxy) THEN
    DBMS_OUTPUT.PUT_LINE('Web proxy server is protected.');
    DBMS_OUTPUT.PUT('Please supply the required ' || my_scheme ||
    ' authentication username/password for realm ' || my_realm ||
    ' for the proxy server.');
    ELSE
    DBMS_OUTPUT.PUT_LINE('Please supplied the required ' || my_scheme ||
    ' authentication username/password for realm ' || my_realm ||
    ' for the Web page.');
    DBMS_OUTPUT.PUT_LINE('Web page ' || url || ' is protected.');
    END IF;
    ELSE
    DBMS_OUTPUT.PUT_LINE('Check the URL.');
    END IF;
    -- UTL_HTTP.END_RESPONSE(resp);
    -- RETURN;
    -- Look for server-side error and report it.
    ELSIF (resp.status_code >= 500) AND (resp.status_code <= 599) THEN
    DBMS_OUTPUT.PUT_LINE('Check if the Web site is up.');
    UTL_HTTP.END_RESPONSE(resp);
    RETURN;
    END IF;
    -- HTTP header lines contain information about cookies, character sets,
    -- and other data that client and server can use to customize each
    -- session.
    FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(resp) LOOP
    UTL_HTTP.GET_HEADER(resp, i, name, value);
    DBMS_OUTPUT.PUT_LINE(name || ': ' || value);
    END LOOP;
    -- Read lines until none are left and an exception is raised.
    --LOOP
    -- UTL_HTTP.READ_LINE(resp, value);
    -- DBMS_OUTPUT.PUT_LINE(value);
    --END LOOP;
    UTL_HTTP.GET_COOKIES(cookies);
    dbms_output.put_line('======================================');
    FOR i in 1..cookies.count LOOP
    IF (cookies(i).secure) THEN
    secure := 'Y';
    ELSE
    secure := 'N';
    END IF;
    -- INSERT INTO my_cookies
    -- VALUES (my_session_id, cookies(i).name, cookies(i).value,
    -- cookies(i).domain,
    -- cookies(i).expire, cookies(i).path, secure, cookies(i).version);
    dbms_output.put_line('site:'||url);
    dbms_output.put_line('cookies:');
    dbms_output.put_line('name:'||cookies(i).name);
    dbms_output.put_line('value:'||cookies(i).value);
    dbms_output.put_line('domain:'||cookies(i).domain);
    dbms_output.put_line('expire:'||cookies(i).expire);
    dbms_output.put_line('path:'||cookies(i).path);
    dbms_output.put_line('secure:'||secure);
    dbms_output.put_line('version:'||cookies(i).version);
    END LOOP;
    UTL_HTTP.END_RESPONSE(resp);
    EXCEPTION
    WHEN UTL_HTTP.END_OF_BODY THEN
    UTL_HTTP.END_RESPONSE(resp);
    END;
    /

    I use oracle database enterprise edtion 10.2.0.3. I have already figured out the epg on 10.2.0.3 to support apex 3.2.
    And as I described above, the apex site works fine for ip address , and localhost. but the cookie will be blocked by IE6, if I want to access the site by 'http://computername:port/apex/apex_admin'. This problem does not occured in firefox and google browser. Could someone give me answer?

  • How to Generate and Display SVG Graphics in ABAP

    Hi everybody,
    I tried to complete the Tutorial "How to Generate and Display SVG Graphics in ABAP, Part 1" by Siarhei Ulasenka (https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/ad83a990-0201-0010-d680-a189f8bc20fa).
    Unfortunately when I tried the example to display an SVG Drawing in an ABAP Report I get the error message "Es ist ein Laufzeitfehler aufgetreten, ungültiges Zeichen" (english should be something like "Runtime Error, unkown character"). But it works when I open the svgfile in a new IE Window (parameter in_place from cl_gui_html_viewer->show_url). Also when I open a svg file from the local disc it works fine.
    The code:
        CALL METHOD html_control->load_data
          EXPORTING
            url            = 'chart.svg'
            type         = 'image'
            subtype    = 'svg+xml'
          CHANGING
            data_table = lt_svg
          EXCEPTIONS
            OTHERS     = 1.
        CALL METHOD html_control->show_url
          EXPORTING
            url        = 'chart.svg'
            in_place   = 'X'
          EXCEPTIONS
            cntl_error = 1.
    Has anyone a solution? Thanks in advance for your help!
    Regards
    Kathrin

    Hello Alex,
    The Corel SVG viewer has problems loading and displaying the examples (see the list of limitations at their site). Try to use the Adobe viewer instead.
    Regards,
    Sergei Ulasenka

  • Does SAP ECL viewer has drag and drop functionality...

    Hi,
    Does ECL viewer has drag and drop functionality for example we can drag and drop file from windows sever to SAP. So that it can be used later on using BDN.
    Thanks.
    Regards,
    Rajesh.

    Implement this program,  it is a cut/paste solution.  Again, you must have the ECL component installed on your SAPgui.
    report zrich_0001 .
    parameters: p_check type c.
    start-of-selection.
    at selection-screen output.
      data: dockingleft   type ref to cl_gui_docking_container,
            dockingright  type ref to cl_gui_docking_container,
            ecl_viewer   type ref to cl_gui_ecl_2dviewer,
            html_viewer  type ref to cl_gui_html_viewer.
      data: repid type syrepid.
      data: url(2048) value 'c:'.
      repid = sy-repid.
      check dockingleft is initial.
      create object dockingleft
                  exporting repid     = repid
                            dynnr     = sy-dynnr
                            side      = dockingleft->dock_at_left
                            ratio     = 50
                            extension = 1000.
      create object html_viewer
           exporting
                parent    = dockingleft.
      call method html_viewer->show_url
           exporting
                url       = url.
      check dockingright is initial.
      create object dockingright
                  exporting repid     = repid
                            dynnr     = sy-dynnr
                            side      = dockingright->dock_at_right
                            ratio     = 50
                            extension = 1000.
      create object ecl_viewer
          exporting
             parent             = dockingright
          exceptions
             cntl_error         = 1
             cntl_system_error  = 2
             create_error       = 3
             lifetime_error     = 4
             others             = 5.
         call method ecl_viewer->create_toolbar
            exporting
                close_button      = ' '
                tools             = 'X'
                viewer            = 'X'
                navigation        = 'X'
                options           = 'X'
                viewer_openfile   = 'X'
                viewer_savefile   = 'X'
                tool_measurement  = 'X'
                remove_document   = ' '
            exceptions
                cntl_system_error = 1
                cntl_error        = 2
                cntb_btype_error  = 3
                dp_error          = 4 .
    Now drap a PDF file from the left container, and drop in the right side.  Slick, right?
    The ECL doesn't handle every file type,  but PDF works good.
    Regards,
    Rich Heilman

  • Problem with Interaction between SAP GUI and BSP Applications

    Hi Folks,
    I am new to BSP and am trying to create a program to created a BSP within the SAP GUI. This is my program, I have tried to find as to what error have I made but I am not able to find out.
    I can only find a button post document in the output, but I am not able to trigger any event. Please let me know as to what is the error.

    REPORT  zbsp_iact_gui.
    SET SCREEN 100.
    *       CLASS cl_my_html_yiewer  DEFINITION
    CLASS cl_my_html_viewer DEFINITION INHERITING FROM cl_gui_html_viewer.
      PUBLIC SECTION.
        METHODS: constructor IMPORTING parent TYPE REF TO cl_gui_container.
        METHODS: on_sapevent FOR EVENT sapevent OF cl_gui_html_viewer IMPORTING action postdata.
    ENDCLASS.                    "cl_my_html_viewer  DEFINITION
    *       CLASS cl_my_html_viewer IMPLEMENTATION
    CLASS cl_my_html_viewer IMPLEMENTATION.
      METHOD constructor.
        super->constructor( parent = parent ).
        DATA: event_tab TYPE cntl_simple_events,
              event TYPE cntl_simple_event.
        event-eventid = me->m_id_sapevent.
        event-appl_event = 'X'.
        APPEND event TO event_tab.
        call method html_control->set_registered_events
            exporting
               events = event_tab.
        SET HANDLER me->on_sapevent FOR me.
      ENDMETHOD.                    "constructor
      METHOD on_sapevent.
        BREAK-POINT.
        IF action CS 'COUNTER'.
          DATA: counter TYPE string.
          READ TABLE postdata INDEX 1 INTO counter.
          SPLIT counter AT '=' INTO counter counter.
          MESSAGE counter TYPE 'I'.
        ENDIF .
      ENDMETHOD.                    "on_sapevent
    ENDCLASS.                    "cl_my_html_viewer IMPLEMENTATION
    DATA: html_viewer TYPE REF TO cl_my_html_viewer,
          html_container TYPE REF TO cl_gui_custom_container,
          fcode LIKE sy-ucomm.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'TESTHTM1'.
      IF html_viewer IS INITIAL.
        CREATE OBJECT html_container
          EXPORTING
            container_name = 'HTML'.
        CREATE OBJECT html_viewer
          EXPORTING
            parent = html_container.
        DATA: url TYPE string, urlc(2048) TYPE c.
        cl_bsp_runtime=>construct_bsp_url(
        EXPORTING in_application = 'ZBSP_IACT_GUI'
        in_page = 'Start.htm'
        IMPORTING out_abs_url = url ).
        urlc = url. " type conversion STRING to C
        CONCATENATE urlc '?SAP-CLIENT=650' INTO urlc.
        html_viewer->show_url( url = urlc ).
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE fcode.
        WHEN OTHERS.
          CALL METHOD cl_gui_cfw=>dispatch.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    Edited by: Nonconformist Pagal on May 12, 2009 1:42 PM
    Edited for formatting by: Durairaj Athavan Raja on May 14, 2009 9:50 AM

  • CL_GUI_PDFVIEWER and files from the App server

    Hi,
    I would liek to use the class CL_GUI_PDFVIEWER  to read files from the app server (transaction AL11) and then to present them.
    it is easy to use the local machine files.
    how can I use the method open_document with a file from there?
    Thanks,
    Itay

    Thanks for the help.
    I tried what you suggested but I get a dump for some reason.
    Can you help?
    This is the dump:
    Exception condition "SYSTEM_FAILURE" raised.
         Program                                      SAPLOLEA                    
         Include                                      LOLEAU10                    
         Row                                          358                         
         Module type                                  (FUNCTION)                  
         Module Name                                  AC_FLUSH_CALL_INTERNAL      
    This is the program:
    REPORT zpdftest .
    DATA: g_html_viewer     TYPE REF TO cl_gui_html_viewer,
          my_main_container TYPE REF TO cl_gui_custom_container,
          entry1(100) TYPE c,
          entry2(100) TYPE c.
    DATA: okcode TYPE sy-ucomm,
          gt_pdf TYPE STANDARD TABLE OF string,
          wa_pdf TYPE string,
          g_url(2048)  TYPE c
    START-OF-SELECTION.
      SET SCREEN 100.
    *&      Module  pbo_0100  OUTPUT
    MODULE pbo_0100 OUTPUT.
      SET PF-STATUS 'STATUS100'.
      SET TITLEBAR  'TITLE100'.
      IF my_main_container IS INITIAL.
        CREATE OBJECT my_main_container
          EXPORTING
            container_name = 'CUSTOM_CNTL'
          EXCEPTIONS
            cntl_error     = 1
            OTHERS         = 2.
        CHECK sy-subrc IS INITIAL.
        CREATE OBJECT g_html_viewer
          EXPORTING
            parent             = my_main_container
          EXCEPTIONS
            cntl_error         = 1
            cntl_install_error = 2
            dp_install_error   = 3
            dp_error           = 4
            OTHERS             = 5
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
        DATA: lv_filename TYPE rlgrap-filename.
        lv_filename = '/PBMGUS/UXA/ABAP/TEST.PDF'.
        OPEN DATASET lv_filename FOR INPUT
                     IN BINARY MODE
        WHILE sy-subrc IS INITIAL.
          READ DATASET  lv_filename  INTO wa_pdf.
          IF NOT sy-subrc IS INITIAL.
            EXIT.
          ENDIF.
          APPEND wa_pdf TO gt_pdf.
        ENDWHILE.
        CLOSE DATASET lv_filename.
        CALL METHOD g_html_viewer->load_data
          EXPORTING
            type                 = 'application'
            subtype              = 'pdf'
          IMPORTING
            assigned_url         = g_url
          CHANGING
            data_table           = gt_pdf
          EXCEPTIONS
            dp_invalid_parameter = 1
            dp_error_general     = 2
            cntl_error           = 3
            OTHERS               = 4
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
        CALL METHOD g_html_viewer->show_url
          EXPORTING
            url                    = g_url
          EXCEPTIONS
            cntl_error             = 1
            cnht_error_not_allowed = 2
            cnht_error_parameter   = 3
            dp_error_general       = 4
            OTHERS                 = 5
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ENDIF.
    ENDMODULE.                 " pbo_0100  OUTPUT
    *&      Module  pai_0100  INPUT
    MODULE pai_0100 INPUT.
      CASE okcode.
        WHEN 'BACK'.
          LEAVE to screen 0.
        WHEN OTHERS.
          CALL METHOD cl_gui_cfw=>dispatch.
      ENDCASE.
      CLEAR okcode.
    ENDMODULE.                 " pai_0100  INPUT

  • Calling BSP from report and return control back ?

    Hi All,
          My requirement is as follows :-
    1. I am calling a BSP from report using CL_GUI_HTML_VIEWER->show_url. The BSP page is displayed successfully.
    2. Then, I perform some operations and want to return some data back to the main program (from where it was called - Report) and continue execution from there
    How do I accomplish the second requirement (Control doesnt come back once I close the BSP) ?
    Regards,
    Ashish

    how to generate events from html code in the html control back to your ABAP check out this demo program
    SAPHTML_EVENTS_DEMO
    say for example, in your case you are showing the BSP in GUI HTML control and on clicking a link you want to pass some data from your link to ABAP program and the ABAP should receive the value and process it and may be comeback to same BSP or go some to some other screen/transaction.
    steps to follow:
    after creating the html control
    register event for call back and call the BSP url.
    create object hviewer
                 exporting
                   parent = mycont.
        myevent-eventid = hviewer->m_id_sapevent.
        myevent-appl_event = 'x'.
        append myevent to myevent_tab.
        call method hviewer->set_registered_events
          exporting
            events = myevent_tab.
        create object evt_receiver.
        set handler evt_receiver->on_sapevent
                    for hviewer.
        hviewer->enable_sapsso(
          exporting
            enabled    = 'X'
          exceptions
            cntl_error = 1
            others     = 2
        if sy-subrc <> 0.
        endif.
        call method hviewer->show_url
          exporting
            url = wf_url.
    in your BSP the link should look like below
    A HREF=SAPEVENT:TAGS?value to be passed to your ABAP> link text </a
    when you click this link in bsp then you can then capture the value "TAGS" to know which link was clicked and the value passed after the ?
    link is just one option, you can also send whole form data.
    this type of link and form will only work when your BSP is invoked within HTML contro. if its invoked from standalone browser these wont work. so you amy want to dynamically show/hide "sapevent" links based on where it runs.
    Hope this is clear. if not do getback.
    Regards
    Raja
    Edited by: Durairaj Athavan Raja on Sep 9, 2008 1:04 PM

  • WDA and SAP-GUI-Integration

    Hello,
    I am testing the integration of an WDA in the SAP-GUI via cl_gui_wdr_viewer and events. it works fine but now i have new challange where i have some problems.
    I the new case, the WDA should run on another Server. I call the WDA with the cl_gui_wdr_viewer->show_url( ), thats works fine but in this case there is no cl_wdr_sapgui_integration-instance in the WD available ?!?
    Does anybody know the condition for the availability of this instance ?!?
    Thx
    Thomas

    Some seperate Installation requirements are need to Install SAP GUI.........
    Windows:
    CPU: Pentium III or equivalent 300 MHz or higher
    Memory: 128 MB or higher
    Monitor: 17" recommended
    Resolution: 1024x768 / 32,000 colors
    MACintosh:
    CPU: G3 or higher
    Memory: 128 MB or higher
    Monitor: 17" recommended
    Resolution: 1024x768
    Kanagaraja L

  • HTML VIEWER  cl_gui_html_viewer and MIME objects - can't display

    Hi,
    I try to display a dynamic HTML page with some pictures staright fro a ABAP list:
    I have the following code snipet:
    CALL METHOD html_control - >load_mime_object
         EXPORTING
              object_id  = 'ZWN'
              object_url = 'ZWN.GIF'
         EXCEPTIONS
              OTHERS     = 1.
    CALL METHOD html_control - >load_data
      EXPORTING
         type                 = 'text'
        subtype              = 'html'
      IMPORTING
        assigned_url         = v_doc_url
      CHANGING
        data_table           = lt_my_html
      EXCEPTIONS
        dp_invalid_parameter = 1
        dp_error_general     = 2.
    IF sy-subrc EQ 0.
      CALL METHOD html_control - >show_url
        EXPORTING
         url      = v_doc_url
          in_place = ' '.
    endif.
    All objects are checked in via SMW0.
    In the HTML Code, I have the pictures this regular way:
    ....<im g sr c=zwn.gif......
    If I have it run like this, the pictures are not displayed.
    If I do it the way to leave out the HTML page and display it directly:
    CALL Method ....load_mime_object.....
    CALL Method....show_url, the picture is displayed.
    What am I doing wrong?

    Hello Holger,
    as the status of this thread is "Answered", I would be very thankful to get your solution.
    Does it only work with the in-place-option or did you find something else.
    THANK YOU !!!

  • DIFFERENCE between Tabstrip control and tabstrin(with wizard)

    difference between table control and table control wizard.
    and what is all about custom control
    give simple examples

    Hi
    Table Control
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/d1/802338454211d189710000e8322d00/frameset.htm
    Table Control Wizard
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/d1/802338454211d189710000e8322d00/frameset.htm
    Tab Strip
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/04/10f2469e0811d1b4700000e8a52bed/frameset.htm
    Tab Strip wizard
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/04/10f2469e0811d1b4700000e8a52bed/frameset.htm
    http://www.sapmaterial.com/tablecontrol_sap.html
    Custom Controls
    A custom control is an area on a screen. You create them in the Screen Painter, and, like all other screen objects, they have a unique name. You use custom controls to embed controls. A control is a software component on the presentation server, which can be either an ActiveX control or a JavaBean, depending on the SAPgui you are using. They allow you to perform tasks, such as editing texts, locally on the presentation server. The control is driven by the application logic, which still runs on the application server.
    The SAP Control Framework
    The controls on the presentation server and the ABAP application programs on the application server communicate using the Structure link SAP Control Framework. This is programmed in ABAP Objects, and contains a set of global classes that you can find in the Class Browser under Basis ® Frontend services. These classes encapsulate the communication between the application server and presentation server, which is implemented using Remote Function Call.
    All application controls are encapsulated in a global class. You can find the SAP Basis controls in the Class Browser under Basis ® Frontend Services or Basis ® Component Integration. Programs that use controls on a screen work with the methods and events of the global classes that encapsulates them.
    Container Controls
    Before you can work with a custom control on a screen, you must assign a Structure link SAP Container Control to it. Container controls are instances of special global classes from the SAP Control Framework. The global class for custom controls is called CL_GUI_CUSTOM_CONTAINER. To link a custom control to a container control, pass the custom control name to the CONTAINER_NAME parameter of the container control constructor when you instantiate it.
    As well as using custom containers, you can link controls to a screen using a SAP Docking Container. This is encapsulated in the global class CL_GUI_DOCKING_CONTAINER. The SAP Docking Container does not place the control within a screen. Instead, it attaches it to one of the four edges. You can nest containers. For example, you can use the SAP Splitter Container (classes CL_GUI_EASY_SPLITTER_CONTAINER or CL_GUI_SPLITTER_CONTAINER) within other containers. This allows you to split a custom control or docking control into more than one area, allowing you to embed more than one control.
    One example,
    program z.
    Constants *
    constants: c_me like trdir-cnam value 'VNDOVV',
    c_myurl type scarr-url value
    'http://www.brainbench.com/transcript.jsp?pid=147699',
    c_width type i value 260,
    c_height type i value 130.
    Types *
    types: begin of t_pgm,
    year(4) type c,
    name like trdir-name,
    end of t_pgm,
    begin of t_pgmkey,
    id type i,
    name like trdir-name,
    end of t_pgmkey.
    Data *
    data: it_pgmkey type table of t_pgmkey.
    Classes *
    Definitions *
    class screen_init definition create private.
    public section.
    class-methods init_screen returning value(this)
    type ref to screen_init.
    methods constructor.
    private section.
    class-data a_id type i.
    data: splitter_h type ref to cl_gui_splitter_container,
    splitter_v type ref to cl_gui_splitter_container,
    picture type ref to cl_gui_picture,
    tree type ref to cl_gui_simple_tree.
    methods: fill_tree,
    fill_picture.
    endclass.
    class screen_handler definition.
    public section.
    methods: constructor importing container
    type ref to cl_gui_container,
    handle_node_double_click
    for event node_double_click
    of cl_gui_simple_tree
    importing node_key,
    handle_picture_double_click
    for event picture_dblclick
    of cl_gui_picture.
    private section.
    data: html_viewer type ref to cl_gui_html_viewer,
    editor type ref to cl_gui_textedit.
    methods: fill_html,
    fill_src importing programid type trdir-name.
    endclass.
    Implementations *
    class screen_init implementation.
    method init_screen.
    data screen type ref to screen_init.
    create object screen.
    this = screen.
    endmethod.
    method constructor.
    data: events type cntl_simple_events,
    event like line of events,
    event_handler type ref to screen_handler,
    container_left type ref to cl_gui_container,
    container_right type ref to cl_gui_container,
    container_top type ref to cl_gui_container,
    container_bottom type ref to cl_gui_container.
    create object splitter_h
    exporting
    parent = cl_gui_container=>screen0
    rows = 1
    columns = 2.
    call method splitter_h->set_border
    exporting border = cl_gui_cfw=>false.
    call method splitter_h->set_column_mode
    exporting mode = splitter_h->mode_absolute.
    call method splitter_h->set_column_width
    exporting id = 1
    width = c_width.
    container_left = splitter_h->get_container( row = 1 column = 1 ).
    container_right = splitter_h->get_container( row = 1 column = 2 ).
    create object splitter_v
    exporting
    parent = container_left
    rows = 2
    columns = 1.
    call method splitter_v->set_border
    exporting border = cl_gui_cfw=>false.
    call method splitter_v->set_row_mode
    exporting mode = splitter_v->mode_absolute.
    call method splitter_v->set_row_height
    exporting id = 1
    height = c_height.
    container_top = splitter_v->get_container( row = 1 column = 1 ).
    container_bottom = splitter_v->get_container( row = 2 column = 1 ).
    create object picture
    exporting parent = container_top.
    create object tree
    exporting parent = container_bottom
    node_selection_mode =
    cl_gui_simple_tree=>node_sel_mode_single.
    create object event_handler
    exporting container = container_right.
    event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
    event-appl_event = ' '. "system event, does not trigger PAI
    append event to events.
    call method tree->set_registered_events
    exporting events = events.
    clear: event, events[].
    event-eventid = cl_gui_picture=>eventid_picture_dblclick.
    event-appl_event = ' '. "system event, does not trigger PAI
    append event to events.
    call method picture->set_registered_events
    exporting events = events.
    set handler: event_handler->handle_node_double_click for tree,
    event_handler->handle_picture_double_click for picture.
    call method: me->fill_picture,
    me->fill_tree.
    endmethod.
    method fill_picture.
    call method:
    picture->load_picture_from_sap_icons exporting icon = '@J4@',
    picture->set_display_mode
    exporting display_mode = picture->display_mode_fit_center.
    endmethod.
    method fill_tree.
    data: node_table type table of abdemonode,
    node type abdemonode,
    w_pgm type t_pgm,
    w_cdat type rdir_cdate,
    it_pgm type table of t_pgm,
    w_pgmkey type t_pgmkey.
    clear: a_id, it_pgmkey[].
    select distinct name cdat from trdir into (w_pgm-name, w_cdat)
    where cnam = c_me.
    w_pgm-year = w_cdat(4).
    append w_pgm to it_pgm.
    clear w_pgm.
    endselect.
    sort it_pgm.
    node-hidden = ' '. " All nodes are visible,
    node-disabled = ' '. " selectable,
    node-isfolder = 'X'. " a folder,
    node-expander = ' '. " have no '+' sign for expansion.
    loop at it_pgm into w_pgm.
    at new year.
    node-node_key = w_pgm-year.
    clear node-relatkey.
    clear node-relatship.
    node-text = w_pgm-year.
    node-n_image = ' '.
    node-exp_image = ' '.
    append node to node_table.
    endat.
    at new name.
    add 1 to a_id.
    node-node_key = w_pgmkey-id = a_id.
    w_pgmkey-name = w_pgm-name.
    node-relatkey = w_pgm-year.
    node-relatship = cl_gui_simple_tree=>relat_last_child.
    node-text = w_pgm-name.
    node-n_image = '@0P@'.
    node-exp_image = '@0P@'.
    append w_pgmkey to it_pgmkey.
    endat.
    append node to node_table.
    endloop.
    call method tree->add_nodes
    exporting table_structure_name = 'ABDEMONODE'
    node_table = node_table.
    endmethod.
    endclass.
    class screen_handler implementation.
    method constructor.
    create object: html_viewer exporting parent = container,
    editor exporting parent = container
    wordwrap_mode =
    cl_gui_textedit=>wordwrap_at_fixed_position
    wordwrap_position = 72.
    call method: fill_html,
    editor->set_readonly_mode exporting readonly_mode = 1.
    endmethod.
    method handle_node_double_click.
    data: w_name type programm,
    w_id type i,
    w_year(4) type c,
    w_pgmkey type t_pgmkey.
    w_name = node_key+4.
    w_id = w_name.
    clear w_name.
    read table it_pgmkey into w_pgmkey with key id = w_id
    binary search.
    if sy-subrc = 0.
    w_name = w_pgmkey-name.
    endif.
    w_year = node_key(4).
    if w_name is initial.
    call method: fill_html,
    html_viewer->set_visible exporting visible = 'X',
    editor->set_visible exporting visible = ' '.
    else.
    call method: fill_src exporting programid = w_name,
    editor->set_visible exporting visible = 'X',
    html_viewer->set_visible exporting visible = ' '.
    endif.
    call method cl_gui_cfw=>flush.
    endmethod.
    method handle_picture_double_click.
    call method: fill_html,
    html_viewer->set_visible exporting visible = 'X',
    editor->set_visible exporting visible = ' '.
    call method cl_gui_cfw=>flush.
    endmethod.
    method fill_html.
    call method html_viewer->show_url exporting url = c_myurl.
    endmethod.
    method fill_src.
    types t_line(72) type c.
    data src type table of t_line.
    read report programid into src.
    call method: editor->delete_text,
    editor->set_text_as_r3table exporting table = src[].
    endmethod.
    endclass.
    Data *
    data this_screen type ref to screen_init.
    Program execution *
    load-of-program.
    call screen 100.
    Dialog Modules PBO *
    module status_0100 output.
    set pf-status 'SCREEN_100'.
    set titlebar 'TIT_100'.
    this_screen = screen_init=>init_screen( ).
    endmodule.
    Dialog Modules PAI *
    module cancel input.
    leave program.
    endmodule.
    Reward if usefull

  • A problem with Threads and loops.

    Hi, I have some code that needs to be constantly running, like while(true)
          //code here
    }However, the code just checks to see if the user has input anything (and then if the user has, it goes to do some other stuff) so I don't need it constantly running and hogging up 98% of the CPU. So I made my class (which has the method that needs to be looped, call it ClassA) implement Runnable. Then I just added the method which needed to be looped into the public void run()
    I have another class which creates an instance of the above class (call it ClassB), and the main(String[] args) is in there.
    public static void main(String[] args)
              ClassA test = new ClassA();
              Thread thread = new Thread(test.getInstanceOfClassA());
              thread.start();
              while(true)
                           //I do not know what to put here
                   try
                        thread.sleep(100);
                   catch(InterruptedException iex)
         }However, the thread only calls run() once,(duh...) but I can't think of away to get it to run - sleep - run -sleep forever. Can someone help me?

    Hi, I have some code that needs to be constantly
    running, like while(true)
    //code here
    }However, the code just checks to see if the user has
    input anything (and then if the user has, it goes to
    do some other stuff) so I don't need it constantly
    running and hogging up 98% of the CPU. Where does the user input come from. Are you reading from an InputStream? If so, then your loop will be blocked anyway when reading from the InputStream until data is available. During that time, the loop will not consume processor cycles.
    public static void main(String[] args)
              ClassA test = new ClassA();
    Thread thread = new Thread(test.getInstanceOfClassA());I have never seen this idiom. If ClassA instanceof Runnable, you simply write new Thread(test).
              thread.start();
              while(true)
    //I do not know what to put
    do not know what to put here
                   try
                        thread.sleep(100);
                   catch(InterruptedException iex)
         }However, the thread only calls run() once,(duh...)Yeah, why would you want to call it more than once given that you have an infinite loop in ClassA.run()?
    Harald.
    Java Text Crunching: http://www.ebi.ac.uk/Rebholz-srv/whatizit/software

  • A problem with Threads and MMapi

    I am tring to execute a class based on Game canvas.
    The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
    The MIDI tone "Stammers".
    How to over come the problem?
    Thanks in advance
    Kobi
    See Code example below:
    import java.io.IOException;
    import java.io.InputStream;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.game.GameCanvas;
    import javax.microedition.media.Manager;
    import javax.microedition.media.MediaException;
    import javax.microedition.media.Player;
    public class MainScreenCanvas extends GameCanvas implements Runnable {
         private MainMIDlet parent;
         private boolean mTrucking = false;
         Image imgBackgound = null;
         int imgBackgoundX = 0, imgBackgoundY = 0;
         Player player;
         public MainScreenCanvas(MainMIDlet parent)
              super(true);
              this.parent = parent;
              try
                   imgBackgound = Image.createImage("/images/area03_bkg0.png");
                   imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
                   imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
              catch(Exception e)
                   System.out.println(e.getMessage());
          * starts thread
         public void start()
              mTrucking = true;
              Thread t = new Thread(this);
              t.start();
          * stops thread
         public void stop()
              mTrucking = false;
         public void play()
              try
                   InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
                   player = Manager.createPlayer(is, "audio/midi");
                   player.setLoopCount(-1);
                   player.prefetch();
                   player.start();
              catch(Exception e)
                   System.out.println(e.getMessage());
         public void run()
              Graphics g = getGraphics();
              play();
              while (true)
                   tick();
                   input();
                   render(g);
          * responsible for object movements
         private void tick()
          * response to key input
         private void input()
              int keyStates = getKeyStates();
              if ((keyStates & LEFT_PRESSED) != 0)
                   imgBackgoundX++;
                   if (imgBackgoundX > 0)
                        imgBackgoundX = 0;
              if ((keyStates & RIGHT_PRESSED) != 0)
                   imgBackgoundX--;
                   if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
                        imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
          * Responsible for the drawing
          * @param g
         private void render(Graphics g)
              g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
              this.flushGraphics();
    }

    You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
    However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
    You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
    Regds,
    SD
    N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
    Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM

  • Problem with Threads and a static variable

    I have a problem with the code below. I am yet to make sure that I understand the problem. Correct me if I am wrong please.
    Code functionality:
    A timer calls SetState every second. It sets the state and sets boolean variable "changed" to true. Then notifies a main process thread to check if the state changed to send a message.
    The problem as far I understand is:
    Assume the timer Thread calls SetState twice before the main process Thread runs. As a result, "changed" is set to true twice. However, since the main process is blocked twice during the two calls to SetState, when it runs it would have the two SetState timer threads blocked on its synchronized body. It will pass the first one, send the message and set "changed" to false since it was true. Now, it will pass the second thread, but here is the problem, "changed" is already set to false. As a result, it won't send the message even though it is supposed to.
    Would you please let me know if my understanding is correct? If so, what would you propose to resolve the problem? Should I call wait some other or should I notify in a different way?
    Thanks,
    B.D.
    Code:
    private static volatile boolean bChanged = false;
    private static Thread objMainProcess;
       protected static void Init(){
            objMainProcess = new Thread() {
                public void run() {
                    while( objMainProcess == Thread.currentThread() ) {
                       GetState();
            objMainProcess.setDaemon( true );
            objMainProcess.start();
        public static void initStatusTimer(){
            if(objTimer == null)
                 objTimer = new javax.swing.Timer( 1000, new java.awt.event.ActionListener(){
                    public void actionPerformed( java.awt.event.ActionEvent evt){
                              SetState();
        private static void SetState(){
            if( objMainProcess == null ) return;
            synchronized( objMainProcess ) {
                bChanged = true;
                try{
                    objMainProcess.notify();
                }catch( IllegalMonitorStateException e ) {}
        private static boolean GetState() {
            if( objMainProcess == null ) return false;
            synchronized( objMainProcess ) {
                if( bChanged) {
                    SendMessage();
                    bChanged = false;
                    return true;
                try {
                    objMainProcess.wait();
                }catch( InterruptedException e ) {}
                return false;
        }

    Thanks DrClap for your reply. Everything you said is right. It is not easy to make them alternate since SetState() could be called from different places where the state could be anything else but a status message. Like a GREETING message for example. It is a handshaking message but not a status message.
    Again as you said, There is a reason I can't call sendMessage() inside setState().
    The only way I was able to do it is by having a counter of the number of notifies that have been called. Every time notify() is called a counter is incremented. Now instead of just checking if "changed" flag is true, I also check if notify counter is greater than zero. If both true, I send the message. If "changed" flag is false, I check again if the notify counter is greater than zero, I send the message. This way it works, but it is kind of a patch than a good design fix. I am yet to find a good solution.
    Thanks,
    B.D.

  • Problem with Threads and "plase wait..."-Window

    Hi everyone,
    I have a problem that I'm not able to solve in any way... I have a time-consuming task (a file decryption) which I execute in a separate thread; I've used the SwingWorker class, like suggested by sun-tutorial, and it works right. The problem is that I have to wait that the decryption have finished before continuing with program-execution. Therefore I would like to display a "please wait"-window while the task runs. I've tryed all the possible ways I know but the problem is always the same: the waitWindow is displayed empty, the bounds are painted but the contents no; it's only painted when the decrypt-task has finished. Please help me, I have no more resources....
    decrypt-file code:
    public class DecryptFile {
      private String cryptedFileNameAndPath;
      private ByteArrayInputStream resultStream = null;
      // need for progress
      private int lengthOfTask;
      private int current = -1;
      private String statMessage;
      public DecryptFile(String encZipFileNameAndPath) {
        cryptedFileNameAndPath = encZipFileNameAndPath;
        //Compute length of task...
        // 0 for indeterminate
        lengthOfTask = 0;
      public ByteArrayInputStream getDecryptedInputStream() {
        return this.resultStream;
       * Called from ProgressBarDemo to start the task.
      public void go() {
        current = -1;
        final SwingWorker worker = new SwingWorker() {
          public Object construct() {
            return new ActualTask();
        worker.start();
       * Called from ProgressBarDemo to find out how much work needs
       * to be done.
      public int getLengthOfTask() {
        return lengthOfTask;
       * Called from ProgressBarDemo to find out how much has been done.
      public int getCurrent() {
        return current;
      public void stop() {
        current = lengthOfTask;
       * Called from ProgressBarDemo to find out if the task has completed.
      public boolean done() {
        if (current >= lengthOfTask)
          return true;
        else
          return false;
      public String getMessage() {
        return statMessage;
       * The actual long running task.  This runs in a SwingWorker thread.
      class ActualTask {
        ActualTask () {
          current = -1;
          statMessage = "";
          resultStream = AIUtil.getInputStreamFromEncZip(cryptedFileNameAndPath); //here the decryption happens
          current = 0;
          statMessage = "";
      }The code that calls decryption and displays waitWindow
          final WaitSplash wS = new WaitSplash("Please wait...");
          final DecryptFile cryptedTemplate = new DecryptFile (this.templateFile);
          cryptedTemplate.go();
          while (! cryptedTemplate.done()) {
            try {
              wait();
            } catch (Exception e) { }
          this.templateInputStream = cryptedTemplate.getDecryptedInputStream();
          wS.close();Thanks, thanks, thanks in advance!
    Edoardo

    Maybe you can try setting the priority of the long-running thread to be lower? so that the UI will be more responsive...

Maybe you are looking for

  • I restarted my macbook pro and it cannot start again! what can i DO??

    I restarted my macbook and when the  apple logo appeared back it started loading endlessly and it doesnt open !! what should I do ? the only thing it allows me to do is to shut it down. I did so and still when I reopen after the logo appears it is lo

  • ESATA card w/ drive connected causes Windows 7 bootup to hang

    I installed the NewerTech MAXPower eSATA 6G PCIe 2.0 card in slot 2 (PCI Express 2.0) of my Mac Pro (January 2008). My Mac Pro is configured with Mac OS X 10.6.x. It also has 64-bit Windows 7 installed via Boot Camp. The NewerTech eSATA card works fi

  • Windows 7 build 7601 this copy of windows is not genuine how to solve this

    my new pc is showing the messege windows 7 Build 7601 This copy of Windows is not genuine how to solve the issue

  • Displaying TOC topics in frame

    Using RoboHelp X5, I've created a frameset comprising two frames - a static no scroll top frame and a dynamic bottom frame which must display the topic clicked on the TOC. When I click a TOC topic in the compiled Help, it opens in the bottom frame an

  • Embedded a korean font in Flash

    Hello !!! I would like to embedded a font thanks Flash CS3, in order to get a .swf that handle the italic and bold korean font (is possible, one that looks like lucida for the latin characters). I've tried several that seemed to handle the korean but