Fast techniques for precisely selecting complex shapes

Are there any fast techniques that Photoshop has for selecting complex shapes, particularly outlines. I find that the Magnetic Lasso tool doesn't seem to work well when the shape is a thin outline nor does the Magic Wand seem to work well if the interiror of the shape is broken into more than one color.

There are so many ways to make selections, and the success of all of them depend upon the original image.  Making selections from channels and channel mixing work well - sometimes.  The quick selection tool works well for some things.  Then with a rough outline, using the refine edge tools speeds up the process.  It's really hard to say what works best, and there is so much information on the web about making selections.

Similar Messages

  • Selecting Difficult Shapes - Refine Edge Tool

    In Elements 11 it was announced that selecting difficult shapes like hair for cutting out people etc was a new feature.  I could find no guidance on how to do it in the program help or online.
    I actually now know how to do it now because I have a tutorial from Digital Photo Magazine, but there needs to be guidance available on this new feature for anyone else who wants to use it.  It didnt feature in the new guided edits or "How To" videos (Why not?)
    Mike Grantham

    Thanks Jon, it does give some guidance but isnt as good as the excellent guidance given in the UK Digital Photo Magazine CD in August 2012.  Hunting around, I did find http://download.photoshopelementsuser.com/LC/LearningCenter11/LC11-RefineEdge.mov which is clearer, although in this case it shows selecting the background, not the person (just select the person if you want to cut them out instead).  In the DP magazine it suggested doing a reasonably precise cut out with the polygonal lasso tool, doing the best you can around hair, then refining it with the refine edge brush.  The results are excellent!
    My main reason for posting this was to get Adobe to put something in help on this topic.  What good is it introducing a new feature in Elements then giving absolutely no guidance on how it works?!

  • How To... Change the Data Type for a SELECT-OPTIONS at run time.

    Hello,
    I am trying to restrict the values available for entry into a SELECT-OPTIONS at run time depending on user input.
    The logic is as follows. The user has two input fields. A PARAMETER field which has the type RSDIOBJNM and allows them to choose an InfoObject. And the user has a SELECT-OPTIONS field to allow them to select the Characteristic values for that InfoObject.
    I would like the following example to be possible:
    The user enters 0MATERIAL into the PARAMETER. When the user clicks on the SELECT-OPTIONS control code will derive a list of possible options the user can enter in the SELECT-OPTIONS. In this case only values found in the master data or at least no values greater than 18 characters.
    I have looked at the following function module SELECT_OPTIONS_RESTRICT and this do not appear to be helpful as they only restrict on the signs allowed for the values (unless I misunderstand, it is a complex function module!).
    The code I have so far is (thus the user enters a InfoObject into p_char1 and the select options so_char1 should only accept active values of that InfoObject):
    declaration of variables for user interface
      DATA c_char(32) TYPE c.
    declaration of count variable
      DATA i_count TYPE i.
    declaration of user interface
      SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
        PARAMETERS: p_ipack TYPE RSLOGDPID.
      SELECTION-SCREEN END OF BLOCK a1.
      SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
        PARAMETERS: p_char1 TYPE RSDIOBJNM.
        SELECT-OPTIONS: so_char1  for c_char NO INTERVALS.
        PARAMETERS: p_char2 TYPE RSDIOBJNM.
        SELECT-OPTIONS: so_char2  for c_char NO INTERVALS.
        PARAMETERS: p_char3 TYPE RSDIOBJNM.
        SELECT-OPTIONS: so_char3  for c_char NO INTERVALS.
      SELECTION-SCREEN END OF BLOCK b1.
    Is what I am trying to do possible???
    Thanks for any help. Ross.

    You really want to restrict possible values of a select-option based on another field, not change the length of type of the select-option field, right?
    Here is what you do:  Code a custom F4 value help for the select-option at event AT SELECTION-SCREEN ON VALUE REQUEST FOR..  The first thing you do here is read the value of the parameter field (p_ipack in your example).  You can use function module DYNP_VALUES_READ.  Based on this value, you can propose values for the select-option fields.  Note that the use can still enter whatever s(he) wishes in to the select-option field without pressing F4. In this case, you will have to code some input validations taking into account the value in the p_ipack field.

  • Direct Selection Tool - Shape Layers in Photoshop CC Issue

    I just upgraded to CC and the first major road block is the new way the direct selection tool works. In my CS6  work flow I would use the direct selection tool to jump between shape layers within the document layer. Then once the correct shape was selected I would click drag select the anchor points I want to adjust. This seems to be impossible now in CC. You can still jump between shape layers but you have to be in "All-Layers" which really hurts when I want to click drag to select specific anchor points because it selects all shapes below it. And with Active-layer selected you can't jump between shape layers with the tool but you can click drag select anchors with out selecting and shapes below the layer. The basically cut functionality right down the middle…
    Below I made a very simple video showing the issue (CS6 = first PSD and CC = 2nd PSD)
    https://www.dropbox.com/s/pjlvwzmli9ihczd/CCProblemBroadband.m4v
    As you can see in CS6 I could fly between layers and adjust everything with out ever changing to another tool or jumping to the layers window… I can no longer do that in CC with out having the dumb issue of also selecting the layers below it, which I don't find useful 99% of the time. Is there a setting to make this work like it did in CS4-CS6???? In my line of work, we work a lot with shape layers and this is causing more time to my work day.
    Thanks

    1000x this. My designs are 100% vector shapes, so if Adobe have changed this core behavior intentionally, they’ve just made my life a lot more difficult.
    We should be able to use the Direct Selection Tool to select a shape layer (similar to how the Move Tool has done) by clicking on any visible pixel. But then we should be able to freely drag-select points on that shape (starting from any neutral area) without selecting other shape layers. This is how it’s worked since before I can remember.
    Here’s why the two new selection modes don’t work:
    Active Layers - I can no longer freely select any visible shape. Instead I’m forced to make a time-consuming roundabout to the layer palette, where I have to squint to find my shape layer, and activate it manually before continuing. (Hitting “V” to select a layer, then “A” to get back to the D.S. Tool is nearly as cumbersome. Plus, I leave off the Move Tool's auto-select mode.)
    All Layers - Treats all my shapes as if they’re on one layer. Overlapping shapes are therefore impossible to work with -- mainly drag-selecting and deselecting points -- in situ.
    We either need a “legacy” setting, or some way to constrain selection on drag, via a key modifier or something. This “all or nothing" thing doesn’t work for me... and apparently for others. Why would they change such a thing?
    Or maybe there’s something I’m missing. Please let that be the case!

  • How to populate the ranges using FM for the SELECTs

    Hi,
    I am still working on the FM to create a generic extractor. I went through the debugger but I am still unable to determine how the ranges are populated. RSA3 always gives me zero values for the results.
    There is a RANGE statement in the sample FM and the following statements for SELECTs
      RANGES: L_R_CARRID  FOR SFLIGHT-CARRID,
              L_R_CONNID  FOR SFLIGHT-CONNID.
    and...
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CARRID'.
            MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
            APPEND L_R_CARRID.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
            MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
            APPEND L_R_CONNID.
          ENDLOOP.
    My question is how is L_R_CONNID and L_R_CARRID populated with low and high values for the SELECT statements? I tried to find the DS 0SAPI_SFLIGHT_SIMPLE to run and see how it is set up but there is no such DS.
    Would someone take the time to say something about this in  several sentences? I have my own code and it seems that it is not populating the values for the SELECTs when I debug from RSA3 when I provide the low and high values.
    Would I normally populate the low and high values from the InfoPackage 'Data Selection' tab once I have implemented in BW or ready to test in BW? That would mean I have to choose those fields as selections from RSO2. Anyway, I think I have asked about this but I am hoping to get an answer to get this going...
    Appreciate any replies.

    Hi
    Here is an example of an extractor that uses
    both method's, if the InfoPackage selection exist's
    it overrides the TVARV selection (which is the default).
    FUNCTION ZBW_TC_FORECAST_SO_EXTRACTOR.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR
    *"     VALUE(I_DSOURCE) TYPE  SBIWA_S_INTERFACE-ISOURCE OPTIONAL
    *"     VALUE(I_CHABASNM) TYPE  SBIWA_S_INTERFACE-CHABASNM OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SBIWA_S_INTERFACE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL
    *"     VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE OPTIONAL
    *"     VALUE(I_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL
    *"     VALUE(I_PRIVATE_MODE) OPTIONAL
    *"     VALUE(I_CALLMODE) TYPE  ROARCHD200-CALLMODE OPTIONAL
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_DATA STRUCTURE  ZBW_TC_FORECASTING_EXT_STR OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    *"      HIERARCHY_NOT_FOUND
    Change History                                                      *
    Mod. #  |  Date    |  Developer     |  Description                  *
    *RD3K915762|06/21/2005| SRangaraj      | Change selection of open SO   *
             |          |                | data to include deleted matls *
             |          |                | and obsolete items too        *
    RD3K915888|06/29/2005| SRANGARAJ      | Add ext matl grp and lab offce
             |          |                | filters for data-selection    *
    The input parameter I_DATAPAKID is not supported yet !
    Auxiliary Selection criteria structure
      DATA: L_S_SELECT TYPE SBIWA_S_SELECT.
    Maximum number of lines for DB table
      STATICS L_MAXSIZE TYPE SBIWA_S_INTERFACE-MAXSIZE.
    Parameter I_PRIVATE_MODE:
    Some applications might want to use this function module for other
    purposes as well (e.g. data supply for OLTP reporting tools). If the
    processing logic has to be different in this case, use the optional
    parameter I_PRIVATE_MODE (not supplied by BIW !) to distinguish
    between BIW calls (I_PRIVATE_MODE = SPACE) and other calls
    (I_PRIVATE_MODE = X).
    If the message handling has to be different as well, define Your own
    messaging macro which interprets parameter I_PRIVATE_MODE. When
    called by BIW, it should use the LOG_WRITE macro, otherwise do what
    You want.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    The input parameter I_DATAPAKID is not supported yet !
    Invalid second initialization call -> error exit
        IF NOT G_FLAG_INTERFACE_INITIALIZED IS INITIAL.
          IF 1 = 2. MESSAGE E008(R3). ENDIF.
          LOG_WRITE 'E'                    "message type
                    'R3'                   "message class
                    '008'                  "message number
                    ' '                    "message variable 1
                    ' '.                   "message variable 2
          RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDIF.
    Check InfoSource validity
        CASE I_DSOURCE.
          WHEN 'ZBW_TC_SO_EXTRACT'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E009(R3). ENDIF.
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      I_DSOURCE            "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDCASE.
    Check for supported update mode
       CASE I_UPDMODE.
         WHEN 'F'.
         WHEN OTHERS.
           IF 1 = 2. MESSAGE E011(R3). ENDIF.
           LOG_WRITE 'E'                  "message type
                     'R3'                 "message class
                     '011'                "message number
                     I_UPDMODE            "message variable 1
                     ' '.                 "message variable 2
           RAISE ERROR_PASSED_TO_MESS_HANDLER.
       ENDCASE.
    Check for obligatory selection criteria
       READ TABLE I_T_SELECT INTO L_S_SELECT WITH KEY FIELDNM = 'PGMID'.
       IF SY-SUBRC <> 0.
         IF 1 = 2. MESSAGE E010(R3). ENDIF.
         LOG_WRITE 'E'                    "message type
                   'R3'                   "message class
                   '010'                  "message number
                   'PGMID'                "message variable 1
                   ' '.                   "message variable 2
         RAISE ERROR_PASSED_TO_MESS_HANDLER.
       ENDIF.
        APPEND LINES OF I_T_SELECT TO G_T_SELECT.
    Fill parameter buffer for data extraction calls
        G_S_INTERFACE-REQUNR    = I_REQUNR.
        G_S_INTERFACE-ISOURCE   = I_DSOURCE.
        G_S_INTERFACE-MAXSIZE   = I_MAXSIZE.
        G_S_INTERFACE-INITFLAG  = I_INITFLAG.
        G_S_INTERFACE-UPDMODE   = I_UPDMODE.
        G_S_INTERFACE-DATAPAKID = I_DATAPAKID.
        G_FLAG_INTERFACE_INITIALIZED = SBIWA_C_FLAG_ON.
    Fill field list table for an optimized select statement
    (in case that there is no 1:1 relation between InfoSource fields
    and database table fields this may be far from beeing trivial)
        APPEND LINES OF I_T_FIELDS TO G_T_FIELDS.
    Fill range tables for fixed InfoSources. In the case of generated
    InfoSources, the usage of a dynamical SELECT statement might be
    more reasonable. BIW will only pass down simple selection criteria
    of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
        LOOP AT G_T_SELECT INTO L_S_SELECT.
          CASE L_S_SELECT-FIELDNM.
            WHEN 'PRDHA'.
              WGF_PRDHA_LENGTH = STRLEN( L_S_SELECT-LOW ).
              IF WGF_PRDHA_LENGTH = 6.  "PARTIAL PRDHA
                 WGF_PRDHA = L_S_SELECT-LOW.
                 CONCATENATE WGF_PRDHA '%' INTO WGF_PRDHA.
              ELSEIF WGF_PRDHA_LENGTH = 12.  "FULL PRDHA
              MOVE-CORRESPONDING L_S_SELECT TO L_R_PRDHA.
              APPEND L_R_PRDHA.
              ENDIF.
            WHEN 'MATKL'.
              MOVE-CORRESPONDING L_S_SELECT TO L_R_MATKL.
              APPEND L_R_MATKL.
          ENDCASE.
        ENDLOOP.
    reset the index of where we are in the gt_header table
      g_tabix = 0.
      perform populate_default_variables.
      perform get_data.
      perform build_detail.
        EXIT.
      ENDIF.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    First data package -> OPEN CURSOR
       IF G_COUNTER_DATAPAKID = 0.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between InfoSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
      DESCRIBE TABLE LT_DATA LINES l_count.
      IF g_tabix GE l_count.
        RAISE no_more_data.
      ENDIF.
    *CLEAN UP THE OUTPUT TABLE
      refresh E_T_DATA.
      LOOP AT LT_DATA FROM G_TABIX INTO LS_DATA.
        APPEND LS_DATA TO E_T_DATA.
    Set global counter
        g_tabix = g_tabix + 1.
      ENDLOOP.
       G_COUNTER_DATAPAKID = G_COUNTER_DATAPAKID + 1.
    ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.
    Forms
    ***INCLUDE LZBW_TC_FORECAST_SO_EXTF01 .
    *&      Form  populate_default_variables
          text
    -->  p1        text
    <--  p2        text
    FORM populate_default_variables.
      data: wlf_name like tvarv-name.
      clear: R_prdh3[], wlf_name.
    *get the exclusion range from tvarv for the product hierarchy in
    *question
      concatenate 'ZBW_EXL_' WGF_PRDHA(6) INTO WLF_NAME.
    SELECT LOW FROM TVARV INTO R_prdh3-low WHERE
                                 NAME = WLF_NAME.
      move:  'I'    to R_prdh3-sign,
             'EQ'   to R_prdh3-option.
      append R_prdh3.
      clear R_prdh3.
    ENDSELECT.
    {Start of insert by SRangaraj on June 29, 2005 >>RD3K915888
    CLEAR L_R_LABOR[].
    SELECT LOW FROM TVARV INTO L_R_LABOR-Low WHERE
                                 NAME = 'ZBW_TC_FORECAST_LAB_OFF'.
      move:  'I'    to L_R_LABOR-sign,
             'EQ'   to L_R_LABOR-option.
      append L_R_LABOR.
      clear L_R_LABOR.
    ENDSELECT.
    }End of insert by SRangaraj on June 29, 2005 >>RD3K915888
    ENDFORM.                    " populate_default_variables
    *&      Form  get_data
          text
    -->  p1        text
    <--  p2        text
    FORM get_data.
      data: wlf_lmeng like vbep-lmeng.
    *get all deliveries for date range for either a range of product hrchy
    *or a like value
      refresh int_records1.
      if wgf_prdha ne space.
        select ivbeln iposnr iKLMENG jvkorg i~werks
               imatnr imeins mprdha mmatkl
        from vbap as i
           INNER JOIN VBAK AS j
           ON ( jvbeln = ivbeln
                and j~vbtyp = 'C' )
           INNER JOIN vbuk AS k
           ON ( kvbeln = ivbeln
                and k~lfgsk <> 'C'
                and k~gbstk <> 'C' )
           INNER JOIN vbup AS l
           ON ( lvbeln = ivbeln and
                lposnr = iposnr
                and l~lfgsa <> 'C'
                and l~gbsta <> 'C' )
           INNER JOIN mara AS m
           ON ( mmatnr = imatnr
    {Start of insert by SRangaraj on June 21, 2005 >>RD3K915762
                and m~lvorm eq ' '
                and m~mstae ne '99'
    {Start of insert by SRangaraj on June 29, 2005 >>RD3K915888
                and m~extwg = '080' )
    }End of insert by SRangaraj on June 29, 2005 >>RD3K915888
           INNER JOIN marc AS n
           ON ( nmatnr = imatnr
                and nwerks = iwerks
                and n~lvorm eq ' ' )
    }End of insert by SRangaraj on June 21, 2005 >>RD3K915762
        into table int_records1 where ( i~abgru = '  '
                                     and i~klmeng > 0
                                     and m~prdha like wgf_prdha
                                     and m~matkl in l_r_matkl
    {Start of insert by SRangaraj on June 29, 2005 >>RD3K915888
                                     and m~labor in l_r_labor ).
    }End of insert by SRangaraj on June 29, 2005 >>RD3K915888
      elseif not l_r_prdha[] is initial and wgf_prdha = space.
        select ivbeln iposnr iKLMENG jvkorg i~werks
               imatnr imeins mprdha mmatkl
        from vbap as i
           INNER JOIN VBAK AS j
           ON ( jvbeln = ivbeln
                and j~vbtyp = 'C' )
           INNER JOIN vbuk AS k
           ON ( kvbeln = ivbeln
                and k~lfgsk <> 'C'
                and k~gbstk <> 'C' )
           INNER JOIN vbup AS l
           ON ( lvbeln = ivbeln and
                lposnr = iposnr
                and l~lfgsa <> 'C'
                and l~gbsta <> 'C' )
           INNER JOIN mara AS m
           ON ( mmatnr = imatnr
    {Start of insert by SRangaraj on June 21, 2005 >>RD3K915762
                and m~lvorm eq ' '
                and m~mstae ne '99'
    {Start of insert by SRangaraj on June 29, 2005 >>RD3K915888
                and m~extwg = '080' )
    }End of insert by SRangaraj on June 29, 2005 >>RD3K915888
           INNER JOIN marc AS n
           ON ( nmatnr = imatnr
                and nwerks = iwerks
                and n~lvorm eq ' ' )
    }End of insert by SRangaraj on June 21, 2005 >>RD3K915762
        into table int_records1 where ( i~abgru = '  '
                                     and i~klmeng > 0
                                     and m~prdha in l_r_prdha
                                     and m~matkl in l_r_matkl
    {Start of insert by SRangaraj on June 29, 2005 >>RD3K915888
                                     and m~labor in l_r_labor ).
    }End of insert by SRangaraj on June 29, 2005 >>RD3K915888
    endif.
        sort int_records1 by vbeln posnr.
        delete adjacent duplicates from int_records1 comparing
        vbeln posnr.
    *remove unnecessary records
        if not r_prdh3[] is initial.
        DELETE INT_RECORDS1 WHERE PRDHA+6(3) IN r_prdh3.
        endif.
    *get the schedule lines for all of the above records and
    *get the lowest schedule line date per so line item
         if not int_records1[] is initial.
         refresh int_records3.
         select vbeln posnr etenr mbdat into table int_records3
         from vbep for all entries in int_records1
                           where vbeln = int_records1-vbeln and
                                 posnr = int_records1-posnr and
                                 lmeng > 0.
         sort int_records3 by vbeln posnr etenr mbdat ascending.
         loop at int_Records1.
           loop at int_records3 where vbeln = int_records1-vbeln
                                  and posnr = int_records1-posnr.
             int_records1-mbdat = int_records3-mbdat.
             modify int_records1.
             exit.
            endloop.
         endloop.
         refresh int_records3. free int_records3.
         refresh int_records2.
    *get the deliveries and calculate the open quantities
        select vbelv posnv vbeln posnn rfmng plmin
                    from vbfa into table int_records2
                                  for all entries in int_Records1
                                  where vbelv = int_records1-vbeln
                                    and posnv = int_records1-posnr
                                    and VBTYP_N = 'J'. "Dels
    *calculate open quantities next
         loop at int_records1.
           clear wlf_lmeng.
           clear int_records2.
           loop at int_records2 where vbelv = int_records1-vbeln
                                    and posnv = int_records1-posnr.
           case int_records2-plmin.
             when '-'.
              wlf_lmeng = wlf_lmeng - int_records2-rfmng.
             when others.  "just add
              wlf_lmeng = wlf_lmeng + int_records2-rfmng.
            endcase.
           endloop.
           int_records1-klmeng = int_records1-klmeng - wlf_lmeng.
           int_records1-vbeln_dl = int_records2-vbeln.
           int_records1-posnr_dl = int_records2-posnn.
           modify int_records1.
        endloop.
        endif.
        delete int_records1 where klmeng le 0.
        refresh int_records2. free int_Records2.
    ENDFORM.                    " get_data
    *&      Form  build_detail
          text
    -->  p1        text
    <--  p2        text
    FORM build_detail.
        LOOP AT int_records1.
    *DO INDIVIDUAL MOVES - ITS FASTER THAN MOVE-CORRESPONDING
        move: int_records1-vkorg    to LS_DATA-VKORG,
              int_records1-werks    to LS_DATA-WERKS,
              int_records1-matnr    to LS_DATA-MATNR,
              int_records1-klmeng   to LS_DATA-KLMENG,
              int_records1-mbdat(6) to LS_DATA-YEARMONTH,
              int_records1-meins    TO LS_DATA-MEINS,
              int_records1-vbeln    TO LS_DATA-VGBEL,
              int_records1-posnr    TO LS_DATA-VGPOS,
              int_records1-vbeln_dl TO LS_DATA-VBELN,
              int_records1-posnr_dl TO LS_DATA-POSNR,
              int_records1-mbdat    to LS_DATA-WADAT_IST,
              int_records1-PRDHA    to LS_DATA-PRDHA,
              int_records1-matkl    to LS_DATA-MATKL.
        APPEND LS_DATA TO LT_DATA.
        clear: LS_DATA.
        ENDLOOP.
    ENDFORM.                    " build_detail

  • Advanced Development Techniques for Oracle Portal Components

    Hello friends,
    I have the following problem. I have a report and a form (on a
    view) in the same page, and when I select an item of the report
    the form is refreshed with the values associated to the selected
    item. The problem is that it makes it with delay, the first
    selection doesn't show anything and the remaining sample the
    data of the previous selection.
    This application has been developed as Ken Atkins explains in
    its document "Advanced Development Techniques for Oracle Portal
    Components."
    Oracle Portal Version: 3.0.9.8.0
    Thanks in advance.
    This is my code:
    -- REPORT --
    SELECT '<A HREF="http://mipc/portal30/
    ALFONSO.refrescar_contenido?
    p_variable=nombre_preferencia&p_variable_valor='||nombre_preferen
    cia||'&p_pagina=61">'||Preferencias||'</A>' nombre_link
    FROM ALFONSO.PREFERENCIAS
    -- PROCEDURE TO REFRESH THE PAGE --
    CREATE OR REPLACE PROCEDURE refrescar_contenido(p_varible IN
    VARCHAR2,
              p_variable_valor IN varchar2,p_pagina IN
    VARCHAR2) IS
    v_Sesion portal30.wwsto_api_session;
    BEGIN
    v_Sesion := portal30.wwsto_api_session.load_session
    ('CONTEXT','SESS_EMP');
    v_Sesion.set_attribute(p_varible, p_variable_valor);
    v_Sesion.save_session;
    owa_util.redirect_url('http://mipc/servlet/page?
    pageid='||ppagina||chr(38)||'_dad=portal30'||chr(38)
    ||'_schema=PORTAL30'||chr(38)||'_mode=3');
    END;
    -- FORM --
    -- ... BEFORE DISPLAYING THE PAGE
    alfonso.consulta_preferencia(p_session);
    -- PROCEDURE consulta_preferencia --
    CREATE OR REPLACE PROCEDURE consulta_preferencia(p_session in
    out PORTAL30.wwa_api_module_session) IS
    v_RowID VARCHAR2(100);
    v_Session portal30.wwsto_api_session;
    v_nombre VARCHAR2(40);
    BEGIN
    v_Session := portal30.wwsto_api_session.load_session
    ('CONTEXT','SESS_EMP');
    v_nombre := v_Session.get_attribute_as_varchar2
    ('nombre_preferencia');
    IF v_nombre IS NOT NULL THEN
    BEGIN
         SELECT rowidtochar(rowid) INTO v_RowID
         FROM ALFONSO.VISTAPREFERENCIAS
         WHERE nombre_preferencia = v_nombre;
    -- VISTAPREFERENCIAS it is the view in which the form is
    based.
    END;
    -- Tell the component that the query is coming from a link,
    and that the rowid
    -- is being used to query the correct context record.
    p_session.set_value (p_block_name=>'DEFAULT',
    p_attribute_name=>'_CALLED_FROM_LINK'
                   ,p_value=>'ROWID');
    -- Pass the rowid of the context record to query.
    p_session.set_value (p_block_name=>'DEFAULT',
    p_attribute_name=> '_ROWID'
                   ,p_value=> v_RowID);
    -- Now do the actual query, using the query button
    processing in the target module
    portal30.wwa_api_module_event.do_event
    ('DEFAULT','QUERY_TOP',1,'ON_CLICK',True,'',p_session);
    -- Save the session information, which includes the
    p_session.save_session;
    END IF;
    END;
    /

    You can make the report with a procedure from which you may call to a form by means of a link. It is a possibility, no??
    It is better a example:
    TABLE A
    campo1 VARCHAR2 (20)
    campo2 VARCHAR2 (20)
    CREATE OR REPLACE PROCEDURE REPORT IS
    v_cursor NUMBER;
    sentencia VARCHAR2(200);
    vnumfilas NUMBER;
    rowid_pref VARCHAR2(18);
    v_campo1 <schemaname>.A.campo1%TYPE;
    v_campo2 <schemaname>.A.campo2%TYPE;
    BEGIN
         htp.p('<HTML>');
         htp.p('<HEAD>');
         htp.p('</HEAD>');
         htp.p('<BODY>');
              sentencia := 'SELECT rowidtochar(rowid), campo1, campo2 FROM A';
              DBMS_SQL.PARSE(v_cursor,sentencia,DBMS_SQL.V7);
              DBMS_SQL.DEFINE_COLUMN(v_cursor,1,rowid_pref,18);
              DBMS_SQL.DEFINE_COLUMN(v_cursor,2,v_campo1,20);
              DBMS_SQL.DEFINE_COLUMN(v_cursor,3,v_campo2,20);
              vnumfilas := DBMS_SQL.EXECUTE(v_cursor);
              LOOP
              IF DBMS_SQL.FETCH_ROWS(v_cursor)=0 THEN
                        EXIT;
              END IF;
              DBMS_SQL.COLUMN_VALUE(v_cursor,1,rowid_pref);
              DBMS_SQL.COLUMN_VALUE(v_cursor,2,v_campo1);
              DBMS_SQL.COLUMN_VALUE(v_cursor,2,campo2);
              v_link := '<A href="PORTAL30.wwa_app_module.link?p_arg_names=_moduleid'||chr(38)||'p_arg_values=<form's moduleid>'||chr(38)||'p_arg_names=_rowid'||chr(38)||'p_arg_values='||rowid_pref||chr(34)||'>'||campo1||'</A> '||campo2||' <BR>';
                   htp.p(v_link);
                END LOOP;
         htp.p('</BODY>');
         htp.p('</HTML>');
    END;
    the form has to be based on the table A.
    I dont know if this example has errors, but have you the idea??
    I hope it helps you out.
    (Excuse my english)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Fast Updates for 8 million records..!!

    Hi All,
    I was wondering is there any fast method for updating 8 million records out of 10 million table?
    For eg :
    I am having a customer table of 10m records and columns are cust_id, cust_num and cust_name.
    i need to update 8m records out of 10m customer table as follows.
    update customer set cust_id=46 where cust_id=75;
    The above statement will update 8m records. And cust_id is indexed.
    But if i fire the above update statement we'll face rollback segment problem..
    Even if i use ROWNUM and commit after 100K records still its gonna take huge time and also i know CTAS will be lot lot faster but for this scenario i guess its not possible.. Right?
    Any help is much appreciated...
    Thanks.

    You didn't specify what version you're on, but have you looked at dbms_redefinition?
    create table cust (cust_num number, constraint cust_pk primary key (cust_num), cust_id number, name varchar2(10));
    create index cust_id_idx on cust(cust_id);
    insert into cust values( 1, 1, 'a');
    insert into cust values( 2, 2, 'b');
    insert into cust values( 3, 1, 'c');
    insert into cust values( 4, 4, 'd');
    insert into cust values( 5, 1, 'e');
    select * From cust;
    create table cust_int (cust_num number, cust_id number, name varchar2(10));
    exec dbms_redefinition.start_redef_table(user,'cust', 'cust_int', 'cust_num cust_num, decode(cust_id, 1, 99, cust_id) cust_id, name name');
    declare
    i pls_integer;
    begin
    dbms_redefinition.copy_table_dependents( user, 'cust', 'cust_int', copy_indexes=>dbms_redefinition.cons_orig_params, copy_triggers=>true, copy_constraints=>true, copy_privileges=>true, ignore_errors=>false, num_errors=>i);
    dbms_output.put_line('Errors: ' || i);
    end;
    exec dbms_redefinition.finish_redef_table(user, 'cust', 'cust_int');
    select * From cust;
    select table_name, index_name from user_indexes;
    You would probably want to run a sync_interim_table in there before the finish.
    Good luck.

  • Technique for importing DV directly into iMoviwithout using import function

    For those who don't want to spend extra time importing DV files, I offer the following technique which I deduced, tested and find very useful.
    I recently developed a very simple technique for getting DV clips into an iMovie06 project without importing them directly. First, I transform the clip, whatever the underlying codec, into DV and name the DV files in the order I want them to appear. (Use of free MPEG Streamclip is recommended)
    Then I create an iMovie06 project with the correct aspect ratio (4x3 or 16x9). Then I save and close the project in the same folder as the DV files.
    Then in Finder I right-click the iMovie06 project and use "show package contents" to reveal the contents of the project.
    I double click the Media folder and then select and drag all of the clips into the Media folder.
    Then I double click on the iMovie project. When it opens, it will announce that there are items in the trash. Those items are the clips which were just added to the folder prior to opening the project.
    Open the trash and systematically drag each clip into the clip menu spots in the sequence in which you wish to view them. Save the project and close the empty trash.
    The project is ready for further editing.
    This saves a great deal of time and seems to improve the video quality by avoiding a lengthy, second import process.
    Cheers.

    Yes, I have been using this with any longer import:
    http://www.sjoki.uta.fi/~shmhav/iMovieHD_6_bugs.html#quick_DVimport
    Just remember to take care that the .dv clip you are dropping in the Media folder is REALLY a plain DV stream .dv clip and that it is of the same video standard (PAL/NTSC) as the iMovie project.
    Some gotchas: iMovie HD 6 accepts even DV-encoded .mov files or wrong video standard .dv clips straight to its Media folder, but adding titles to such clips produces colorful artifacts to the rendered clip. Also notice that iMovie 4's Full Quality DV export preset exports a file with the .dv suffix but it is, in fact, a DV-encoded .mov if the source iMovie 4 project has chapters in it (this is not an issue with iMovie HD's Full Quality DV export anymore).

  • I would like to create chapters within my footage for Scene selection on the DVD menu

    I have edited footage using FCPX and exported it to allow me to use it in IDVD. I now would like to set chapter markers so that the DVD menues allow for scene selection. I believe that I may have to do this in FCPX before exporting it
    Can you tell me how to do it.
    Thank you

    This is one of the most embarrassing omissions in FCP X. There is no proper facility to add chapter markers and export them with your movie.
    The way I get around it is to make each chapter a separate project in its own right. I then export each of the chapters and when I bring them into my DVD Authoring application, it's a synch to add the chapter markers (between each file on the timeline) with precision.
    As you've already created your project (presumably in one hit) create a new project for each chapter then copy and paste the relevant clips into each 'chapter' project, then export.
    Alternatively, you can add chapter markers from within the preview window in Compressor if you have it - but it's quite fiddley and not very precise.
    Andy

  • How can I zoom in to audio waveforms for precision edits?

    In FCP 7, you can zoom into audio waveforms for precise edits. In FCP X, there seems to be a fairly coarse resolution to how far you can zoom into audio waveforms. I rely extensively on being able to see where subtle aspirants start and end, but I can't see the audio waveforms very clearly, no matter how far I enlarge the clips.
    Is there some hidden window or command that I'm missing?

    tonypatti wrote:
    I'm assuming you mean in the timeline. So you trim your clips in the timeline, and not in the clips window? I've noticed there is no Viewer window, as in FCP 7, and I used to refine my clips in that window, setting in and out points with simple keystrokes. Is this how we do it in X? In the Timeline window?
    It depends on my needs... Each event library-clip has its own timeline too...
    All you need to do is right-click the clip in the event library and select "Open in Timeline"
    There you can trim the audio or clip with much greater precision than in the event library itself...
    In FCPx -- EACH clip in the event library is contained within its own mini-project... That is why you can "open" it in its own timeline... The event library is so powerful in this way. You could even select a clip and hit "Open in Timeline" and drag another clip into that.... That would automatically turn the clip into a compound clip (which is essentially a project)... the possibilities are endless... And so is the zoom ;-)))) If you do it this way !
    PS -- You can create a short key for "open in timeline" should you find yourself annoyed with right-clicking all the time
    PPS -- You state "no viewer window".... As of 10.0.7 FCPx has TWO viewers.. One for events and one for the project... Hit ctrl+command + 3 to show/hide it...
    You should take your time with the app and NOT look at it as if it was FCP7
    Also the user guide is very well written !

  • Using BEGIN TRAN for a SELECT statement

    I have inherited a number of stored procedures that are using explicit transactions and structured error handling. 
    I have had to review the procs due to deadlocks occurring and have found that many of them are SELECT statements. 
    The syntax is like this:
    BEGIN TRAN
       BEGIN TRY
    SELECT ####
     END TRY
      BEGIN CATCH
      IF @@TRANCOUNT >0
    BEGIN
    ROLLBACK TRAN
    INSERT ErrorLog
    XXXXXX
    END CATCH
    IF @@TRANCOUNT > 0
    BEGIN
    COMMIT TRAN
    END
    It is very obvious that there is no purpose for explicit transactions in the select, but I am wondering if this could be a factor in the deadlocks.  From what I tested using BEGIN TRAN for a select still only uses a shared lock. 
    Is it possible that this is a factor in the deadlocks?
    David Dye My Blog

    There is no need of explicit transaction in select statement what exactly would you want to rollback, nothing. Although you might use error handling depending on complexity of select involved.
    Plus drawbacks is locks would be held for longer duration which MIGHT provide some help in deadlock
    Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
    My Technet Wiki Article
    MVP

  • "Advance Synchronization Techniques for Data Acqusition is not simple.

    I want to use a 6534 DIO to drive my instrument and a synchronized 6502E to do AI from the instrument. The developer zone tutorial "Advanced Synchronization Techniques for Data Acquisition" suggests some of what is necessary to change from using AO as the master to using some other operation. After installing an RTSI cable, "Synchronized AI,AO,DI,DO,CTR.vi" runs as-is. Has anyone successfully converted the "Synchronized AI,AO,DI,DO,CTR.vi" or something similar to having some other master than AO? I want to use DO as master, and have moved the start vi's to the initialization cases except that for DO, have removed DI completely,and have tried to get DO to transmit REC1 on RTSI1 and AI and AO to clock o
    n the RTSI1 signal. The modified VI runs to completion, but I get no input at AI.

    Hi Bhanu,
    I ran the program SAP_FACTVIEWS_RECREATE.It is also not fetching any data.In the monitor, the extraction shows yellow status and the Processing says NO DATA.I have not given any selections at infopackage level.
    Please let me know what do i do.
    Thanks in advance.
    Regards,
    Venkat

  • Need standard techniques for address duplicate checks.

    Hi ,
    I need to use sap standard techniques for standardization and duplicate check.
    I have checked the bogs
    Show Duplicates Button on  Accounts View
    Duplicate check for Business Partner
    I have checked ,BUT000 index is active  customizing table TSADRVGRPC.
    But still show duplicate button ,no pop up is triggered.
    Checked
    IMG => SAP NetWeaver => Application Server => Basis Services => Address Management => Duplicate Check
    BUT000 PARTNER  index active 90,0 SAP Business Partner
    BUT052  ADDRNUMBE   index active   Contact Person Relationships (SAP Business Partners)
    are maintained.
    Still i need to implement BUPA_ADDR_CHECK ?
    or any other BADI's ?
    Thanks,
    Anitha.

    Hi Ani,
    In order to have duplicate check activated in your system, you would need a TREX server and an RFC created between CRM and TREX. Once its in place follow steps:
    1. Goto SPRO->SAP NETWeaver->Application Server->Basis Services->Address Management->Duplicate check
    Here maintain limit for duplicates. Say if you maintain 70 here then only partners above similarity of 70% would be shown as duplicates.
    2. Activate Badis Address_search and address_update. If you dont want to activate these badis then create custom implementation of them.
    3. Go to t code SES_ADMIN.
    Here go to->customizing->system settings and give details like name of RFC connetion between crm and TREX server and then search engine as CL_COM_SE_TREX.
    come back and again in customizing->business addresses and indexes, create business object named BAS_BUPA with class CL_IC_INDEX_SES. Once you create this entry go to settings subnode and maintain object type as 1.
    Now come back to Ses_admin main screen and from top menu select index->create/activate indexes. Here select bas_bupa.
    4. Click on index immediately.
    5. Run report SIC_BAS_RSADRINI.
    See the magic of TREX...Duplicate check would start working...
    Now for standardization you can do it directly from SAP except for postal code, region, country but not for free text like street address, house number(Functional consultant can do it in SPRO). If you need this functionality then you need to have interface with third party system.
    Hope that helps,
    Regards,
    BJ

  • No data Exists for this selection in PSA.

    Hi Guys,
    I received an Error message with loading of 2lis_03_bf datasource..
    Error message when processing in the Business Warehouse
    Diagnosis
    An error occurred in the SAP BW when processing the data. The error is documented in an error message.
    System response
    A caller 01, 02 or equal to or greater than 20 contains an error meesage.
    Further analysis:
    The error message(s) was (were) sent by:
    PSA Table
    DETAILS Tab: Processing (data packet): Errors occurred
                       : Data Package 6 ( ? Records ) : Errors occurred
                       : Update PSA ( 0 Records posted ) : Errors occurred
                       : No data exists for this selection in PSA
    For DataPacket 6 (Records sent :21572 - Records Received : 0) 
    All other datapackets are updated fine with almost 10,00,000 records..Any help on this ,guys..
    Manythanks
    Arun

    Hi,
    While the load was in progress some one might have deleted the data in PSA or there might be a PSA deletion job running or there might be a PSA deletion chiain which includes this table. Check all these to find out how it got deleted.
    In order to load the data again you can do a reload and probably it works fine this time.
    Anup.

  • Asset Accounting Reports - Can they be run for any selection of dates

    Folks,
    I have a query - in Asset Accounting, can I run any of the reports (for current fiscal year and closed fiscal years) for any selection of start and end dates? so for example, if I want to run the Asset history sheet for fiscal 2007 (which has been closed in my books), can I run this report for say the month of July 2007 (July 1-31, 2007)?
    I was under the impression that asset reports for closed fiscal years could be run for the entire year ONLY!
    An early response would be appreciated.
    Thx,
    Sameer Aroskar

    Hi Sameer
    I think I did answer this in other forum but anyway here you go again !
    Select Transaction OARP >> Depreciation Lists >> RAGAFA01(Posted Depreciation) - Select this and Execute.
    Select the require company codes and necessary parameters then under Settings select the Depreciation Posting Period e.g. 4 for the required Report date which can be last day of the month from the required previous years. eg 30.04.2007 etc.
    Cheers !
    SA
    PS: award points if you find the answer useful.

Maybe you are looking for

  • PDF export with link to document defaulting to "Open a web link" instead of "Open a file"

    I have a MS Access database and I'm trying to export reports to PDF (I have Acrobat XI Pro) that include a hyperlink to another document on the same drive on my computer.  I have tested this with hyperlinked email addresses, and emails export fine to

  • Problem in PO

    hi friends when i m trying to create the PO I m getting the following error 1) Vendor's or manufacturer's QA system inadequate Kindly mail me the solution Urgent Please

  • Insert itab1 into itab2 as a coloumn

    Hi all, can any one tell me how should i insert the contents of one internal table suppose IT1 as a single coloumn   in another  internal table IT2.. My IT1 has 4 fields. data of these fields should come one below the other as a single coloumn. I sho

  • How can I get rid of this? script:chrome://messenger/content/mailWindows.js:173

    Hello, I have combed the internet for an answer but cannot find anything conclusive. Each time I open Thunderbird from scratch I get this message: script:chrome://messenger/content/mailWindows.js:173 This has been going on for several days now. Once

  • Emails from WCS saying that AP is down.Plz help

    Hi Experts, I am new to wireless and I am facing strange issue here. Hence need your help in order to resolve this. Everyday I am getting the  E-Mails from WCS. Error: WCS has detected one or more alarms of category AP and severity Critical in Virtua