SRM 7.0 catalog call, method launch_catalog

Hi,
can anyone tell me, how to call a catalog in web dynpro for Abap? I want to call al catalog similar to SRM 7.0.
In SRM 7.0 the class /SAPSRM/CL_CH_WD_NAVI_SERV and the method LAUNCH_CATALOG is used to call a catalog.
Does anyone have an example how to use this class/methode, especially for HOOK_URL.
The catalog I want to call is defined in the IMG under "Web-Services: ID and Description".
Best regards,
Elke

Hi Jason,
I am also facing the same concern. I have done all the below configurations
1.) As per the SAP note 1643978, I have configured the Launch catalog in LPD_CUST
2.) And the group access has also been assigned to the user as per the above note
3.) In reference to the folder permissions on portal content, the access has been given according to the note - 1260119
After doing all the changes, the external punch out catalog links are still dead. Could you please advise if there is any other activity which needs to be performed. Thanks in advance for your help.
Best Regards,
Bharathi

Similar Messages

  • SRM-MDM Dynamic catalog call structure and implicit search criteria

    Hi experts,
    We need to define the catalog call criteria for the SRM-MDM.
    Our client requires content visualitzation restrictions but there is not any logic indentified to determine the records that must be viewed for every user.
    Now, in their Non-SAP catalog, they are using users lists to which they assign the catalog records.
    There are more than 150 users lists and is posible too to assign some catalog records to only 1 or 2 users, by user id.
    We want to reproduce this scenario in SRM-MDM.
    We are analysing two alternatives:
    First alternative: badi BBP_CAT_CALL_ENRICH implementation for mask dynamic determination and custom z.
    We've though in creating one mask for every user list.
    Then, in SRM create a custom table with the userid and the user list id (mask equivalent). A user can belong to more than one user list.
    Finally implement the BBP_CAT_CALL_ENRICH, searching in the z table the users id and obtaining the specific masks for this users and pass these masks as catalog call parameters dynamicly.
    Is posible to use the BBP_CAT_CALL_ENRICH badi to pass dynamic parameters?
    (in this case, maybe we could use a new org.est. attibute to assign user id and mask, instead of the custom table).
    Second aternative: implicit search criteria based on a new org. est. atribute for mask
    Is posible to create new implicit search criteria for org. est. atributes?
    We could assign to every user the masks in the org. est. and then, create a new parameter which could look for the mask value in the org.est.
    Thanks in advance

    Hi Silvia,
    I am not sure of the answer to the second part of the query but as for the usage of the BBP_CAT_CALL_ENRICH catalog in combination with various masks for the users to access catalog subsets, this should work quite well, best to try it out in a DEV environment and see how it goes.
    Regards,
    Jason

  • Definition of SRM Backend URL when calling a shop

    Hi,
    we installed the SRM portal and SRM 7.0 Backend on a server with full qualified host name "internal.server.int". The portal and the backend are accessed by the customer (internal network) with URLs "srmportal.company.com" and "srmbackend.company.com". Most stuff works fine, but when calling an external shop, the application /sap/sapsrm/outbound_hdlr is being called with the hostname "internal.server.int" and not with srmbackend.company.com as it should be. Therefore SSO is not working and the user is being asked to logon with password and username. When accessing the portal with the original server ID, everything works fine.
    We changed the parameters
    gw/alternative_hostnames
    icm/host_name_full
    to "srmbackend.company.com" but still the application /sap/sapsrm/outbound_hdlr is being called wit the wrong URL.
    Now my question is where the information of hostname and port is being taken from to call the application /sap/sapsrm/outbound_hdlr. Is it a profile parameter or customizing or...?
    Thanks a lot for your help,
    Fabian

    Hi,
    we changed the two parameters in the Catalog Call Structure:
    BYPASS_INB_HANDLER       X    (Fixed Value)
    BYPASS_OUTB_HANDLER   X    (Fixed Value)
    Now it seems to work.
    Thanks to all,
    Fabian

  • XSRF error when returning to SRM from external catalog

    Hello,
    We recently applied support package stack 19 to our SRM 5.0 development system, and after doing so found that some of our configured catalogs began producing an XSRF error when attempting to populate the SRM shopping cart with items from the catalog. The symptoms encountered are practically identical with those described in Note 1615697 ("Return to SRM application from Catalogs result in Dump"). This error did not occur prior to applying support packages.
    In an effort to resolve the problem, we applied the following Notes that described the same or similar symptoms:
    1551982: Cross Site Request Forgery Protection for stateless BSP
    1596088: frequent dumps in ITS services
    1607780: Update #5 to security note 1522651
    1613427: ITS Services lead to XSRF Dumps
    1615697: Return to SRM application from Catalogs result in Dump
    1619323: Frequent Dump issue in ITS
    1621525: Dump in Vendor list service
    1629031: BBP_BACKGROUND_APPROVAL service results in dump
    1632110: Quotation search help fields results in a Dump
    1634612: Frequent Dump issue in ITS in Search screens
    1650207: BBP_POC service results in XSRF dump
    1658516: Applets sheitern an XSRF-Schutz (COOKIE_NOT_FOUND)
    1675491: ITS: CALL BROWSER and termination of a session
    This did result in some of our catalogs working that previously were dumping, but we are still having issues with at least two and possibly other catalogs. These are external vendor catalogs using the OCI interface.
    The error occurs at the time of transmitting items from the catalog back into the SRM shopping cart. The catalog screen is replaced with an error screen with the messages "The URL https://<<our SRM dev system>>:/sap/bc/gui/sap/its/bbpsc03/ was not called due to an error" and "A:ITS_P:019 XSRF no sec_sesstoken". The shopping cart in the SRM system is lost after this error occurs. No short dump is recorded, but the SM21 system log records the ITS_P 019 error against tcode BBPSC03, program SAPLBBP_SC_UI_ITS.
    Most of our catalogs, internal and external, are fine after applying the Notes. Just two external vendor catalogs still exhibit this error.
    I experimented with adding a new parameter after the Return URL in the catalog configuration in SPRO with name = ~SAP_SESSTOKEN, value = `SAP_SESSTOKEN`, and type = SAP Field, based upon Note 1481392, but this did not make any change in the behavior.
    I have patched the kernel (7.00) to pl335 (pl310 is delivered with sps19).
    Anyone else having this sort of issue?
    Best regards,
    Matt

    Hi,
    What is the error/message you are getting?Please xplain in detail.
    Also see these related threads for more pointers:
    External Catalog gives HTTP 404 not found error on return
    External catalog set-up
    External Catalog integration with SAP
    Re: OCI External Catalog and Shopping Cart Mapping
    Help - Error while transferring item to shopping cart from external catalog
    BR,
    Disha.
    DO reward points for useful answers.

  • Catalog Call Structure Thumbnail

    Hello all.  Years ago, I added thumbnails of company logos to catalog call links in the shopping wizard.  This was probably SRM 3.0 or so...I'm pretty sure I used "Path for Symbol for Service" in the Define External Web Services field.  Now, with webdynpro, the documentation isn't changed at all.  I think this is pointing to a folder from the old ITS.  They wouldn't just let functionality just drop out like that would they?  Anybody know how this might be easily done today?  (SRM 7.0)

    Hi Galen,
    I was not aware of this functionality, however, in most cases, the requirement for company logos is in the catalog application so it may be that with the introduction of WD UI this was missed.
    Regards,
    Jason

  • Product catalog call structure config

    For each catalog there is a call structure defined in SAP SRM , My question is i have a Product catalog created in system with Logical system as XYZ SAPR/3 ( this is under subscreen techinical settings) ... after some days some budy changed it with different sap logical system how to track the change in call structure technical setting parameter. Is there any standard report to track the changes in product catalog call structure config.

    Hi
    A change to the logical system in catalog call structure would have to have an associated change request in the TMS, perhaps you can check there with the transport admin as to who changed the BBP_WS_VC cluster.
    Regards,
    Jason

  • Call method "cl_alv_table_create= create_dynamic_table"

    Hi SDN Community,
    Is it possible to create dynamic tables. I tried it by call method "cl_alv_table_create=>create_dynamic_table", but the "new_table" of output parameters is empty after the call is executed.
    Please suggest.
    Thank You.
    Pankaj.

    Hi Pankaj,
    Try the code written below and let me know whether it works?
    report  z_dynamic_itab_test .
    include z_table_fs_top.
    include z_table_fs_forms.
    initialization.
      perform clear_fields.
    start-of-selection.
      perform fetch_data.
    end-of-selection.
    *&  Include           Z_TABLE_FS_TOP
    Type Pools                                                           *
    type-pools: slis,
                rsds.
    Tables                                                               *
    tables :sscrfields,                "Fields on selection screens
            dd03l.                     "Table Fields
    Types                                                                *
    types: begin of t_dd03l,
            tabname like dd03l-tabname,              "Table Name
            fieldname like dd03l-fieldname,          "Field Name
            keyflag   like dd03l-keyflag,            "Key Flag
            rollname  like dd03l-rollname,           "Roll Name
            position like dd03l-position,            "Position
            ddtext(30),                              "Description
           end of t_dd03l.
    types : begin of t_fname,                        "To hold the field names
              fld like dd03l-fieldname,
            end of t_fname.
    Internal Tables                                                      *
    data : it_dd03l   type table of t_dd03l,       "To hold the field names of dd03l.
           it_flds    type table of rsdsfields,    "To hold the field names
           it_fields  type table of dd03l,         "To hold the field names
           it_cat     type table of lvc_s_fcat,    "To hold Field Catalog
           it_fname   type table of t_fname.
    Work areas                                                           *
    data: wa_dd03l  like line of it_dd03l,     "Workarea for IT_DD03L
          wa_flds   like line of it_flds,      "Workarea for IT_FLDS
          wa_fields like line of it_fields,    "Workarea for IT_FIELDS
          wa_cat    like line of it_cat ,      "Workarea for IT_CAT
          wa_fname  like line of it_fname.     "Workarea for IT_FNAME
    *SELECTION SCREEN WITH BLOCK DEFINITION.
    selection-screen begin of block b2 with frame title text-004.
    parameters: p_tbname type dd03l-tabname.
    select-options: s_field for dd03l-fieldname no intervals.
    selection-screen end of block b2.
    Variables                                                            *
    data : lv_where type string,
           lv_cnt   type i value '1',
           v_records type i.
    data : gv_where_cl(100) type c.              "Variable to hold Where clause
    data: wa_flname(5) type c.
    data: wa_fldcat type lvc_s_fcat.
    data: it_fldcat type lvc_t_fcat.
    data: it type ref to data.
    DECLARATION OF FIELD SYMBOLS :
    field-symbols: <fs_table> type table.
    field-symbols: <fs_temp> type any,
                   <fs_final> type any.
    *&  Include           Z_TABLE_FS_FORMS
    *&      Form  clear_fields
         To clear all work areas and refresh all internal tables.
    form clear_fields .
      clear wa_dd03l.
      clear wa_flds.
      clear wa_fields.
      clear wa_cat.
      clear wa_fname.
      refresh it_dd03l.
      refresh it_flds.
      refresh it_fields.
      refresh it_cat.
      refresh it_fname.
    endform.                    " clear_fields
    *&      Form  FETCH_DATA
          Fetch data from different tables
    form fetch_data .
      describe table s_field lines v_records.
    Populate it_flds from s_field, to hold the fields to be Selected.
      if s_field is not initial.
        loop at s_field.
          wa_flname = s_field-low.
          write: s_field-low.
        BUILD FIELD CATALOG FOR ALL FIELDS.
          wa_flds-fieldname = wa_flname.
          append wa_flds to it_flds.
        endloop.
      endif.
    Populate the Where clause as a string.
    if s_where[] is not initial.
       loop at s_where.
         concatenate lv_where s_where-low into lv_where separated by space.
       endloop.
    endif.
    Populate it_dd03l, to hold the field names from DD03L.
      select tabname
             fieldname
             keyflag
             rollname
             position
             from dd03l
             into table it_dd03l
             where tabname eq p_tbname
                   and fieldname ne 'MANDT'.
      if sy-subrc = 0.
        sort it_dd03l by position.
        delete it_dd03l where fieldname cp '.INCLU*'.          ""CP = Covers Pattern
      endif.
    Populate it_fname, with fields which have to be selected (entered in selection).
      loop at it_dd03l into wa_dd03l.
      Read table it_flds.
        read table it_flds into wa_flds with key fieldname = wa_dd03l-fieldname.
        if sy-subrc = 0.
        Move data from it_dd03l to it_fname
          wa_fname-fld = wa_dd03l-fieldname.
          append wa_fname to it_fname.
          clear wa_fname.
        endif.
      endloop.
    *TO CHECK IF TABLE EXISTS.
      call function 'SCPR_DB_TABLE_EXIST'
        exporting
          tabname        = p_tbname
        exceptions
          tab_dont_exist = 1
          others         = 2.
      if sy-subrc <> 0.
        if sy-subrc = 1.
        GIVE A POP UP.
          call function 'POPUP_TO_DECIDE_INFO'
            exporting
              textline1    = 'Table Does Not Exist !'
              titel        = 'Invalid Table Name'
              start_column = 25
              start_row    = 6.
        endif.
      endif.
    SELECT ALL RECORDS FROM DD03L.
      select *
      into table it_fields
      from dd03l
      where tabname = p_tbname.
      if sy-subrc = 0.
        sort it_fields by position.
        delete it_fields where fieldname cp '.INCLU*'.         "CP = Covers Pattern.
      endif.
    Populate IT_CAT with fields which are REQUIRED.
    Display upto 150 fields only.
      loop at it_fields into wa_fields to 150.
      Read table it_fname
        read table it_fname into wa_fname with key fld = wa_fields-fieldname.
        if sy-subrc = 0.
        Move data from it_fields
          wa_cat-tabname = p_tbname.
          wa_cat-fieldname = wa_fields-fieldname.
          wa_cat-col_pos = lv_cnt.
          wa_cat-inttype    = wa_fields-inttype.
          wa_cat-datatype = wa_fields-datatype.
          wa_cat-intlen = wa_fields-intlen.
          wa_cat-seltext = wa_fields-fieldname.
          wa_cat-decimals = wa_fields-decimals.
          wa_cat-ref_field = wa_fields-fieldname.
          wa_cat-ref_table = p_tbname.
          append wa_cat to it_cat.
          clear wa_cat.
          lv_cnt = lv_cnt + 1.
        endif.
      endloop.
    CREATE A DYNAMIC INTERNAL TABLE.
      call method cl_alv_table_create=>create_dynamic_table
        exporting
          it_fieldcatalog = it_cat
        importing
          ep_table        = it.
    ASSIGN IT TO <FS>.
      assign it->* to <fs_table>.
    *Select the data from the table given as input and populate
    it into the dynamic internal table created based on the where
    condition.
      select (it_fname)
             from (p_tbname)
             into table <fs_table>
             where (lv_where).
      if sy-subrc <> 0.
        message 'No data found' type 'I'.
      endif.
    *Displaying dynamic internal table .
      loop at <fs_table> assigning <fs_temp>.
       write:/ <fs_temp> quickinfo 'CONTENTS'.
      endloop.
    endform.                    " FETCH_DATA
    Best Regards,
    Deepa Kulkarni

  • SRM validate the Catalog Item when copying from old templates

    Do SRM validate the Catalog Item when copying from old templates and previous shopping carts? Is this standard functionality?
    Thanks,
    Rajan

    Continuation to my previous post:
    My findings based on the analysis I did. Might help people who are looking for similar info.
    As Jason mentioned, the Subroutine name is CATALOG_CONTENT_VALIDATE_GET
    This is under package BBP_SC --> Function Group: BBP_SC_APP
    After making a webservice call to get catalog details, the mapping is done as below.
      IF sy-subrc EQ 0.
        READ TABLE lt_enriched_item INDEX 1.
        IF sy-subrc EQ 0.
          ls_item_validate-price      = lt_enriched_item-price.
          ls_item_validate-currency   = lt_enriched_item-currency.
          ls_item_validate-price_unit = lt_enriched_item-price_unit.
          ls_item_validate-deliv_date = lt_enriched_item-deliv_date.
          ls_item_validate-leadtime   = lt_enriched_item-leadtime.
          ls_item_validate-unit       = lt_enriched_item-unit.
        ELSE.
          lv_validate_item_exception = gc_yes.
        ENDIF.
      ELSE.
        lv_validate_item_exception = gc_yes.
      ENDIF.
    If you go one level deeper into subroutine  PERFORM sc_itm_copy_to_basket, you can see that following validations are performed.
    If EITHER price, currency or price unit changes, we get the message u201C&: Price changed due to catalog validationu201D
    If UOM changes, we get the message u201C&: Unit of measure changed in catalog; item not transferredu201D
    When Delivery date or lead time changes, no message is raised but the new values are copied.
    In a nut shell, the fields that are considered for validation are Price, Currency, Price Unit, UOM, Delivery date, Lead Time.
    Thanks,
    Seyed

  • Error calling methods CL_GUI_FRONTEND_SERVICES

    Hi all,
    I have a requirement in BAPI (integrating solman to portal) to download file from app. server to local directory. I used the below FM to get temp directory of presntation server.
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_TEMP_DIRECTORY
       CHANGING
         TEMP_DIR             =  LV_TEMP_DIR
       EXCEPTIONS
         CNTL_ERROR           = 1
         ERROR_NO_GUI         = 2
         NOT_SUPPORTED_BY_GUI = 3
         others               = 4.
       CALL METHOD cl_gui_cfw=>flush.
    It works fine in R3, but when i called it from portal it shows Access not possible using 'NULL' object reference with a short dump .
    st22 shows
    Error in ABAP application program.
    The current ABAP program "CL_GUI_FRONTEND_SERVICES======CP" had to be
    terminated because one of the
    statements could not be executed.
    This is probably due to an error in the ABAP program.
    An exception occurred. This exception is dealt with in more detail belo
    . The exception, which is assigned to the class 'CX_SY_REF_IS_INITIAL',
    neither
    caught nor passed along using a RAISING clause, in the procedure
    "GET_TEMP_DIRECTORY" "(METHOD)"
    Since the caller of the procedure could not have expected this exceptio
    to occur, the running program was terminated.
    The reason for the exception is:
    Attempt to access a component using 'NULL' object reference (points
    to nothing).
    An object reference must point to an object (an instance of a class)
    before you can use it to access components (variable:
    "CL_GUI_FRONTEND_SERVICES=>HANDLE").
    Either the reference has not yet been set, or it has been reset to
    'NULL' by a CLEAR statement.
    When i put external break point and the dump comes during execution of CALL METHOD cl_gui_cfw=>flush.
    Is it not possible to use CL_GUI_FRONTEND_SERVICES in RFC ??.
    thanks and regards
    Jijo

    Hi,
    the dump is because you cannot use that function from a BSP application, which runs in internet or intranet. The procedure in this case is different:
    DATA: flights  TYPE flighttab,
            flight   LIKE LINE OF flights,
            appl     TYPE string,
            filetype TYPE string,
            output   TYPE string,
            output2  TYPE xstring,
            response     TYPE REF TO if_http_response,
            l_len        TYPE i,
            seatsmax     TYPE string,
            seatsocc     TYPE string.
      appl = 'application/msexcel'.
      filetype = 'attachment;filename=mi archivo.xls'.
      SELECT * FROM sflight
         INTO TABLE flights
         UP TO 20 ROWS.
      LOOP AT flights INTO flight.
        seatsmax = flight-seatsmax. CONDENSE seatsmax.
        seatsocc = flight-seatsocc. CONDENSE seatsocc.
        CONCATENATE output
        flight-carrid cl_abap_char_utilities=>horizontal_tab
        flight-connid cl_abap_char_utilities=>horizontal_tab
        flight-fldate cl_abap_char_utilities=>horizontal_tab
        flight-planetype cl_abap_char_utilities=>horizontal_tab
        seatsmax cl_abap_char_utilities=>horizontal_tab
        seatsocc cl_abap_char_utilities=>horizontal_tab
        cl_abap_char_utilities=>cr_lf
        INTO output.
      ENDLOOP.
      response = runtime->server->response.
      response->delete_header_field( name = if_http_header_fields=>cache_control ).
      response->delete_header_field( name = if_http_header_fields=>expires ).
      response->delete_header_field( name = if_http_header_fields=>pragma ).
      response->set_header_field( name = if_http_header_fields=>content_type
                                  value = appl ).
      response->set_header_field( name = 'content-disposition'
                                  value = filetype ).
      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          text     = output
          mimetype = 'text/unicode; charset=utf-16le'
        IMPORTING
          buffer   = output2.
      CONCATENATE cl_abap_char_utilities=>byte_order_mark_little
                  output2 INTO output2 IN BYTE MODE.
      l_len = XSTRLEN( output2 ).
      response->set_data( data = output2
                          length = l_len ).
      navigation->response_complete( ).
    This is the code for downloading an Excel file.

  • CALL METHOD cl_gui_frontend_services= file_save_dialog

    Hi,
    I want to use 'CALL METHOD cl_gui_frontend_services=>file_save_dialog', to choose a path for saving my txt files.  I only want the user to be able to choose the path and not have to supply a filename aswell.  My filenames are standard in the program and I don't want them to be changed by the user.
    Is there another method which is designed for this or is there a simple parameter I have missed?
    Thanks and regards,
    Simon.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_f.
       PERFORM f_search_help_pa_f1.
    FORM f_search_help_pa_f1 .
       CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
         EXPORTING
           program_name  = sy-repid
           dynpro_number = sy-dynnr
         CHANGING
           file_name     = pa_f
         EXCEPTIONS
           mask_too_long = 1
           OTHERS        = 2.
       IF sy-subrc <> 0.
         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       ENDIF.
    ENDFORM.                    " f_search_help_pa_f1
    Try this
    Regards

  • *ERROR IN OLE CALL - METHOD CALL ERROR...*

    HI ..
    When trying to Upload a file using BDC with Vista OS, we are getting the following error..
    ERROR IN OLE CALL - METHOD CALL ERROR...
    There is no problem with BDC as its working fine with XP & other OS.
    Pls help!!

    Seems that you are working with microsoft files.
    Maybe you are using deprecated functions like WS_EXCEL

  • MDM catalog Search UI is showing SRM-MDM Service catalog instead of Product

    Hi Experts,
    We are working on SRM7.0 with MDM. We have one Development environment where MDM is working fine.
    We made a copy of Existing MDM repository to new Server and Created new SRM-MDM environment for demo setup.
    We have nade SRM instance as a copy of Development and when we try to connect to the MDM after making all changes to the search ui as same as Development we are getting search UI page of catalog as SRM-MDM Service catalog instead of SRM-MDM Product catalog.
    I can able to acess the new repository through MDM Data manager it is fine.
    The products in repository are not displayed in search ui page as only service view of catalog is shown.
    Kindly reply if you have any idea or sugession.
    Regards,
    B.N.Karthikeyan.

    Hi,
    Login into the SRM -MDM repository ---> Go to General configuration settings --> select tab 'General'
    On default 'Service' radio button will be seected change the the radio button  to the ''Product' and save. Catalog will work as Product catalog.
    Regards,
    Chandolu Ramesh

  • How to call methods from within run()

    Seems like this must be a common question, but I cannot for the life of me, find the appropriate topic. So apologies ahead of time if this is a repeat.
    I have code like the following:
    public class MainClass implements Runnable {
    public static void main(String args[]) {
    Thread t = new Thread(new MainClass());
    t.start();
    public void run() {
    if (condition)
    doSomethingIntensive();
    else
    doSomethingElseIntensive();
    System.out.println("I want this to print ONLY AFTER the method call finishes, but I'm printed before either 'Intensive' method call completes.");
    private void doSomethingIntensive() {
    System.out.println("I'm never printed because run() ends before execution gets here.");
    return;
    private void doSomethingElseIntensive() {
    System.out.println("I'm never printed because run() ends before execution gets here.");
    return;
    }Question: how do you call methods from within run() and still have it be sequential execution? It seems that a method call within run() creates a new thread just for the method. BUT, this isn't true, because the Thread.currentThread().getName() names are the same instead run() and the "intensive" methods. So, it's not like I can pause one until the method completes because they're the same thread! (I've tried this.)
    So, moral of the story, is there no breaking down a thread's execution into methods? Does all your thread code have to be within the run() method, even if it's 1000 lines? Seems like this wouldn't be the case, but can't get it to work otherwise.
    Thanks all!!!

    I (think I) understand the basics.. what I'm confused
    about is whether the methods are synced on the class
    type or a class instance?The short answer is; the instance for non-static methods, and the class for static methods, although it would be more accurate to say against the instance of the Class for static methods.
    The locking associated with the "sychronized" keyword is all based around an entity called a "monitor". Whenever a thread wants to enter a synchronized method or block, if it doesn't already "own" the monitor, it will try to take it. If the monitor is owned by another thread, then the current thread will block until the other thread releases the monitor. Once the synchronized block is complete, the monitor is released by the thread that owns it.
    So your question boils down to; where does this monitor come from? Every instance of every Object has a monitor associated with it, and any synchronized method or synchonized block is going to take the monitor associated with the instance. The following:
      synchronized void myMethod() {...is equivalent to:
      void myMethod() {
        synchronized(this) {
      ...Keep in mind, though, that every Class has an instance too. You can call "this.getClass()" to get that instance, or you can get the instance for a specific class, say String, with "String.class". Whenever you declare a static method as synchronized, or put a synchronized block inside a static method, the monitor taken will be the one associated with the instance of the class in which the method was declared. In other words this:
      public class Foo {
        synchronized static void myMethod() {...is equivalent to:
      public class Foo{
        static void myMethod() {
          synchronized(Foo.class) {...The problem here is that the instance of the Foo class is being locked. If we declare a subclass of Foo, and then declare a synchronized static method in the subclass, it will lock on the subclass and not on Foo. This is OK, but you have to be aware of it. If you try to declare a static resource of some sort inside Foo, it's best to make it private instead of protected, because subclasses can't really lock on the parent class (well, at least, not without doing something ugly like "synchronized(Foo.class)", which isn't terribly maintainable).
    Doing something like "synchronized(this.getClass())" is a really bad idea. Each subclass is going to take a different monitor, so you can have as many threads in your synchronized block as you have subclasses, and I can't think of a time I'd want that.
    There's also another, equivalent aproach you can take, if this makes more sense to you:
      static final Object lock = new Object();
      void myMethod() {
        synchronized(lock) {
          // Stuff in here is synchronized against the lock's monitor
      }This will take the monitor of the instance referenced by "lock". Since lock is a static variable, only one thread at a time will be able to get into myMethod(), even if the threads are calling into different instances.

  • Call method http_client- response- get_header_fields for PDF and for TIFF

    Hi,
    I am using a Function Module..
    APAR_EBPP_GET_INVOICE_DETAIL to display the TIFF images on the Biller Direct side.
    The above function module is used to retrieve the PDF documents from the document repository.
    In Similar way I am trying to do the TIFF Images too.
    But in this method
    call method http_client->response->get_header_fields
        changing fields.
    For PDF the table fields is as follows
                NAME                                       VALUE                                  
        1     ~response_line----
    |HTTP/1.1 200 (OK)                         |
        2     ~server_protocol----
    |HTTP/1.1                                  |
        3     ~status_code----
    |200                                       |
        4     ~status_reason----
    |(OK)                                      |
        5     content-length----
    |7136                                      |
        6     content-type----
    |application/pdf                           |
        7     server                                |Microsoft-IIS/6.0                         |
        8     x-powered-by                    |ASP.NET                                   |
        9     date                                 |Tue, 24 Feb 2009 18:09:35 GMT             |
       10     connection                       |close                                     |
    For TIFF the table fields are as follows:
        1     ~response_line----
                   |HTTP/1.1 500 (internal server error)        |
        2     ~server_protocol----
                 |HTTP/1.1                                    |
        3     ~status_code----
                     |500                                         |
        4     ~status_reason----
                   |(internal server error)                     |
        5     content-length----
                   |105                                         |
        6     content-type----
                     |text/plain                                  |
        7     server----
                              |Microsoft-IIS/6.0                           |
        8     x-powered-by                 |ASP.NET                                     |
        9     date                         |Tue, 24 Feb 2009 18:26:39 GMT               |
       10     connection                   |close                                       |
    The error message is Internal Server error..
    This is in HTTP2_Get Function Module.
    What would be the reason for HTTP/1.1 500 Internal Server error.
    Any suggestions are welcome..
    Thanks,
    Chaitanya

    Hi Niranjan,
    can you please check if you have imported the whole chain of certificates. Certificates usually diplayed in 3 levels in the Explorer. like
    Verisign - L1
    >>> Versign--  L2
    >>>>>>>>>>>>XYZ.com -- L3
    Extract all the 3 certificates and Put in Strust and do exit soft and hard in SMICM and restart the service.
    Its better to create a RFC destination of Type H and Do the Connection test for HTTPS configuration. If the connection test comes OK then u can be sure of the configuration.

  • How to Call Methods in Ecatt?

    Hello Gurus,
    I dont find CALLMETHOD or CALLSTATIC commands in Ecatt. I am using R/3 4.7 version of SAP.
    My question also is how to call methods. I have a scenario where my test script execution depends on the return type of method. Say if the return type of method is A only then I should run the script else the script should not be executed.
    Your help in this regard is highly appreciated.
    Regards,
    GS.

    >
    Get Started wrote:
    > Hello Gurus,
    >
    > I dont find CALLMETHOD or CALLSTATIC commands in Ecatt. I am using R/3 4.7 version of SAP.
    >
    > My question also is how to call methods. I have a scenario where my test script execution depends on the return type of method. Say if the return type of method is A only then I should run the script else the script should not be executed.
    >
    > Your help in this regard is highly appreciated.
    >
    > Regards,
    > GS.
    Hi GS,
    Please use the command "CallMethod" and it is available with latest SAP version.
    You have to provide the Object Instance Parameter and Instance Method.
    Regards,
    SSN.

Maybe you are looking for

  • IPhone 5 really slow, freezing since software update

    I have been beyond disapponted with the iphone 5 thus far. When i initially got it it was very slow, especially using the keyboard in messaging, and did this weird thing where it would just randomly dim and then I could not the screen to fully illumi

  • ICal wont open due to issue with Webex plugin how do i get it to open or remove plugin

    Whenever I try to open iCal i get the message iCal quit unexpectedly while using the Webex Plugin plugin. don't know what to do next.

  • How can I get rid of "Jagged Edges" in FCP from .psd/.tif/.tga text files?

    Hi guys, I posted this once before but don't know if anyone looked at it or not. I am getting "Jagged Edges" in .psd/ .jpg/ .tif/ .tga text files when I edit them in FCP5.1.4. What is going wrong? It is getting very frustrating for me at this point.

  • Spatial update via Java library

    I'm trying to update the geometry value from null to a STRUCT geometry. This has worked fine for a long time (so the code should be OK), but suddenly it fails with the errormessage: ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine OR

  • Changing search results display

    When I search in my iTunes library, I hate the layout of the window that shows my results. It's confusing, and not as easy to find what I want in the results. I liked the old look better. Is there a way to change the way the results window looks.