CDC synchronization - how to make it perform

For synchronization between a transactional database and a data warehouse we've been using synchronous CDC. Performance is still somewhat an issue.
The situation is as follows (simplified):
EMP table. This is a large table (40 million + records) with a lot of mutations. The CDC log table contains about 3 million entries (records) each day, which are used to update the data warehouse. About 50% of the changes consists of updates.
The data of the describer view looks something like
operation$;empno;name
I;1;John
UU;1;John
UN;2;John
Since PK updates are allowed, all data manipulations needs to be processed to the data warehouse (to another EMP-like table). At this moment this is done via an old-fashioned for loop.
Since PK updates are allowed (and an additional functional identifier is not an option at this point in time) the mutations need to be processed sequential. Is there a faster 'bulk' option to do just this?

Maybe you can try something like this:
MERGE INTO emp e
   USING (SELECT   cep1.operation$, cep1.empno, cep1.NAME,
                   TO_NUMBER (NULL) chg_empno, TO_CHAR (NULL) chg_name
              FROM cdc_v_emp cep1
             WHERE cep1.operation$ = 'I'
          UNION ALL
          SELECT   cep2.operation$, cep1.empno, cep1.NAME, cep2.empno,
                   cep2.NAME
              FROM cdc_v_emp cep1, cdc_v_emp cep2
             WHERE cep1.cscn$ = cep2.cscn$
               AND cep1.rsid$ = cep2.rsid$
               AND cep1.operation$ = 'UU'
               AND cep2.operation$ = 'UN'
          ORDER BY cep1.cscn$, cep1.rsid$) c
   ON (e.empno = c.empno)
   WHEN MATCHED THEN
      UPDATE
         SET e.empno = c.chg_empno, e.NAME = c.chg_name
   WHEN NOT MATCHED THEN
      INSERT (e.empno, e.NAME)
      VALUES (c.empno, c.NAME);:)
PS: Note that I changed the order (and name) of some columns in the "USING" query.
.

Similar Messages

  • During synchronization, how to make the iPhone data will not be replaced by data from iTunes, but otherwise?

    Well, I recently iTunes has Buge and when I reopened everything was gone. I did not backup later, so my library is composed only of my purchases on the iTunes Store. I want to sync my iPhone with iTunes, but if I make this sync, iTunes will erase all data on the iPhone and replace with data from the iTunes library. But I want the opposite, that is to say replace iTunes data with data from the iPhone. How do I do this?
    Thank you in advance!
    PS: I know that many will tell me that iTunes syncing only occurs from iTunes to iPhone, not vice versa, or need to use an extraction program .. But is it any other solution?

    Dudley,
    Try this Knowledge Base Article:
    iCal, Mac OS X 10.5: Empty "Home" and "Work" calendars may appear after installing Leopard
    Since you have a .Mac account, have you been using .Mac Backup?
    ;~)

  • How to make OBPM 10.3g solutions highly scalable and performant?

    Hi experts,
    I would like to request some advice on how to make Oracle BPM 10.3g based solutions highly scalable. In our organisation, we are rolling out few processes (3-5) on OBPM 10.3g, with couple of 100 concurrent users on each. But going forward, we expect at least 50 processes, with concurrent users on each process reaching upto 500-1000. We understand that each process could be packaged as separate OBPM project, targeted to separate OBPM engine, where each engine itself is targeted to a separate WebLogic server cluster. Is this the correct approach?
    Apart from above, are there any additional factor/apporach that we must consider while implementing our solution?
    Is there any documentation that discusses how to improve the performance/scalability of OBPM 10.3g solutions?
    We would highly appreciate any pointers.. Many thanks.
    Brgds,
    Amit

    LoadRunner is one of the more popular means of performance testing BPM....
    [http://www8.hp.com/us/en/software/software-product.html?compURI=tcm:245-935779&pageTitle=loadrunner-software]

  • Hello I have a problem related to synchronization. When you synchronize ipad Section 3 "Other" takes as much memory up to 8 gigobayt. How to make the section "Other" did not increase? Thank you.

    Hello
    I have a problem related to synchronization.
    When you synchronize ipad Section 3 "Other" takes as much memory up to 8 gigobayt.
    How to make the section "Other" did not increase?
    Thank you.

    DOCUMENTS AND DATA IS ALSO WHERE YOUR MAIL INFORMATION IS STORED SO IF YOU ARE A "HOARDER" IN EMAIL, GO INTO THE GMAIL, HOTMAIL, ICLOUD ETC WHATEVER YOU USE, AND DELETE YOUR TRASH, SENT, DRAFTS, ETC.
    THAT SHOULD HELP A LOT.

  • How to make Performa invoice in MM

    hi
    anybudy tell me how to make performa invoice in MM

    Hi,
    Performa Invoce will create only in SD  for Billing  --  VF01 t-code
    Not MM.
    Performa Invoice will  create aganist the sales order & delivery doc.
    SAM
    Edited by: Saminathan Gopalan on Jun 25, 2010 3:35 PM

  • How to make a clip art (diagram )interactive report?

    Hello ABAPers,
                           I want help from you. I have a requirement like ..when i am excuteing a report i should get a clip art and the clipart which i got i have to double click on it there by i should get the details of that clip art. I have succeed till getting the clip art and from here i am not getting the idea how to make the clipart(diagram) active so tht when i am doubleing it i should get the details.
    The code that i am using to get the clip art just copy and execute you will get the output till clipart.
    *& Report  ZCLIPART_IR                                                 *
    REPORT  ZCLIPART_IR.
    START OF DO NOT CHANGE***********************************
    DATA: docking TYPE REF TO cl_gui_docking_container,
          picture_control_1 TYPE REF TO cl_gui_picture,
          url(256) TYPE c .
    DATA: query_table LIKE w3query OCCURS 1 WITH HEADER LINE,
          html_table LIKE w3html OCCURS 1,
          return_code LIKE  w3param-ret_code,
          content_type LIKE  w3param-cont_type,
          content_length LIKE  w3param-cont_len,
          pic_data LIKE w3mime OCCURS 0,
          pic_size TYPE i.
    END OF DO NOT CHANGE***********************
    DATA : sum(4) , num1(4) , num2(4).
    PARAMETERS: p_dummy(4) DEFAULT '4' .
    PARAMETERS: p_dummy1(4) DEFAULT '5' .
    AT SELECTION-SCREEN OUTPUT.
      PERFORM show_pic.
      START-OF-SELECTION.
    *& Form show_pic
    FORM show_pic.
       DATA: repid LIKE sy-repid.
             repid = sy-repid.
      CREATE OBJECT picture_control_1 EXPORTING parent = docking.
      CHECK sy-subrc = 0.
      CALL METHOD picture_control_1->set_3d_border
        EXPORTING
          border = 5.
      CALL METHOD picture_control_1->set_display_mode
        EXPORTING
          display_mode = cl_gui_picture=>display_mode_stretch.
      CALL METHOD picture_control_1->set_position
        EXPORTING
          height = 50
          left   = 40
          top    = 30
          width  = 190.
    CHANGE POSITION AND SIZE ABOVE****************
    IF url IS INITIAL.
    REFRESH query_table.
        query_table-name  = '_OBJECT_ID'.
    CHANGE IMAGE NAME BELOW UPLOADED IN SWO0*****************
        query_table-value = 'ENJOYSAP_LOGO'.
        APPEND query_table.
        CALL FUNCTION 'WWW_GET_MIME_OBJECT'
          TABLES
            query_string        = query_table
            html                = html_table
            mime                = pic_data
          CHANGING
            return_code         = return_code
            content_type        = content_type
            content_length      = content_length
          EXCEPTIONS
            object_not_found    = 1
            parameter_not_found = 2
            OTHERS              = 3.
        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 FUNCTION 'DP_CREATE_URL'
          EXPORTING
            type     = 'image'
            subtype  = cndp_sap_tab_unknown
            size     = pic_size
            lifetime = cndp_lifetime_transaction
          TABLES
            data     = pic_data
          CHANGING
            url      = url
          EXCEPTIONS
            OTHERS   = 1.
            ENDIF.
            CALL METHOD picture_control_1->load_picture_from_url
        EXPORTING
          url = url.
    ENDFORM.
    Thks and waiting for your replies.

    Hi ataran,
    in case, your version of iMovie is able to import the footage, have a read here:
    http://www.apple.com/ilife/tutorials/imovie/

  • How to make fields editable in an custom enhancement

    Hi Experts,
    My requirement is to perform some custom validations against a field FKONT(BSEG) at the line item level of FB60 and display appropriate message and make the incorrect field editable.
    I have implemented an implicit enhancement point in include MF05AFGENJ.
    The error messages are coming but I am unable to make the GL account, cost center and profit center fields editable.
    Please let me know how to make the above fields editable after displaying the error message.
    For reference, I have done the coding like this:
    IF sy-tcode = 'FB60' .
    CHECK GL_ITEMS IS NOT INITIAL.
    DATA: L_COUNT TYPE I,
          L_STRING TYPE STRING,
          L_FKONT TYPE FIPLS,
          L_TABIX TYPE SY-TABIX,
          G_FLAG TYPE C.
    DATA: WA_ZZFSTP LIKE ZZFSTP.          "Work area for ZZFSTP table
    CONSTANTS:C_MK TYPE TXJCD VALUE 'MK0000000'.
    *-- Validating the Financial budget item field
    IF GL_ITEMS-FKONT IS NOT INITIAL.
    SELECT SINGLE FKONT
                        INTO L_FKONT
                        FROM ZFSTP
                        WHERE FKONT = GL_ITEMS-FKONT.  "cost center
    IF SY-SUBRC NE 0.
       CLEAR: G_FLAG.
       G_FLAG = 'X'.
       MESSAGE W003(ZZFI) WITH 'Please enter 'Financial' 'Budget Item Field' DISPLAY LIKE 'E'.
       EXIT.
    ENDIF.
    *-- Copying the first line item financial budget item field to all the line items in the internal table
    DESCRIBE TABLE GL_ITEMS LINES L_COUNT.
    IF L_COUNT > 1.
      READ TABLE GL_ITEMS INDEX 1.
      IF SY-SUBRC = 0.
            CLEAR: L_FKONT.
            L_FKONT = GL_ITEMS-FKONT.
    *-- Assign the tax jurisdiction codes in all the line items
             LOOP AT GL_ITEMS.
               CLEAR: L_TABIX.
               L_TABIX = SY-TABIX.
               GL_ITEMS-FKONT = L_FKONT.
               GL_ITEMS-TXJCD = C_MK.
    *-- Copy the first financial budget item number and tax jurisdiction code MK0000000 in all line items
               MODIFY GL_ITEMS INDEX L_TABIX TRANSPORTING FKONT TXJCD.
    *-- Populate tax jurisdiction and FKONT financial budget item number in XBSEG table
               L_TABIX = L_TABIX + 1.  "top record in XBSEG is for header
               READ TABLE XBSEG INDEX L_TABIX.
               IF SY-SUBRC = 0.
                 XBSEG-FKONT = L_FKONT.
                 XBSEG-TXJCD = C_MK.
                 MODIFY XBSEG INDEX L_TABIX.
               ENDIF.
             ENDLOOP.
      ENDIF.
    ENDIF. "describe statement
    CLEAR: WA_ZZSTP.
    *-- Validate the amount and GL account against the FKONT(financial budget item) number
    SELECT SINGLE FKONT
                  ZZWRBTR
                  ZZHKONT
                  ZZKOSTL
                  ZZPRCTR
           INTO CORRESPONDING FIELDS OF WA_ZZFSTP
           FROM ZFSTP
           WHERE FKONT EQ GL_ITEMS-FKONT.
    IF sy-subrc EQ 0.
    IF BSEG-WRBTR > WA_ZZFSTP-ZWRBTR.
           CLEAR: G_FLAG.
           G_FLAG = 'X'.
           MESSAGE W003(ZZFI) WITH 'Amount entered' 'cannot be' 'greater than ' WA_ZFSTP-ZZWRBTR DISPLAY LIKE 'E'.
           EXIT.
    ELSE.
             CLEAR: G_FLAG.
            G_FLAG = 'X'.
            SET CURSOR FIELD 'GL_ITEMS-HKONT'.
            MESSAGE W003(ZZFI) WITH 'Incorrect GL account' 'number entered for' 'given financial' 'budget item number'.
            EXIT.
           ELSE.
    *-- Check for cost center and profit center at line item level
             LOOP AT GL_ITEMS.
    *-- Both cost center and profit center is initial.
                IF GL_ITEMS-KOSTL IS INITIAL AND GL_ITEMS-PRCTR IS INITIAL.
                    CLEAR: G_FLAG.
                    G_FLAG = 'X'.
                    SET CURSOR FIELD 'GL_ITEMS-PRCTR' LINE SY-STEPL.
                    SET CURSOR FIELD 'GL_ITEMS-KOSTL' LINE SY-STEPL.
                    MESSAGE W003(ZZFI) WITH 'Please enter' 'cost center' 'or' 'profit center'.
                    EXIT.
    *-- Either cost center or profit center is initial
                ELSEIF GL_ITEMS-KOSTL IS INITIAL AND GL_ITEMS-PRCTR IS NOT INITIAL.
                    CHECK GL_ITEMS-PRCTR NE WA_ZZFSTP-ZPRCTR.
                      CLEAR: G_FLAG.
                      G_FLAG = 'X'.
                      SET CURSOR FIELD 'GL_ITEMS-PRCTR' LINE SY-STEPL.
                      MESSAGE W003(ZZFI) WITH 'Incorrect profit' 'center entered' 'for given' 'financial budget item' DISPLAY LIKE 'E'.
                      EXIT.
                ELSEIF GL_ITEMS-KOSTL IS NOT INITIAL AND GL_ITEMS-PRCTR IS INITIAL.
                   CHECK GL_ITEMS-KOSTL NE WA_ZFSTP-ZKOSTL.
                      CLEAR: G_FLAG.
                      G_FLAG = 'X'.
                      SET CURSOR FIELD 'GL_ITEMS-KOSTL' LINE SY-STEPL.
                      MESSAGE W003(ZZFI) WITH 'Incorrect cost' 'center entered' 'for given' 'financial budget item' DISPLAY LIKE 'E'.
                      EXIT.
                ENDIF.
             ENDLOOP.
           ENDIF. "GL Account
    ENDIF. "Amount check
    ENDIF. "SY-SUBRC check
    ENDIF.
    EXPORT G_FLAG FROM G_FLAG TO MEMORY ID 'ZER'.
    Please let me know how to make GLaccount,cost center and profit center fields editable.
    Regards,
    Sangeeta.

    Hi.. chaek the below links. may be useful to u.
    Making Table control records Editable / Non-editable
    Table control with both Editable and non Editable fields
    Regards,
    KP.

  • How do I improve performance while doing pull, push and delete from Azure Storage Queue

           
    Hi,
    I am working on a distributed application with Azure Storage Queue for message queuing. queue will be used by multiple clients across the clock and thus it is expected that it would be heavily loaded most on the time in usage. business case is typical as in
    it pulls message from queue, process the message then deletes the message from queue. this module also sends back a notification to user indicating process is complete. functions/modules work fine as in they meet the logical requirement. pretty typical queue
    scenario.
    Now, coming to the problem statement. since it is envisaged that the queue would be heavily loaded most of the time, I am pushing towards to speed up processing of the overall message lifetime. the faster I can clear messages, the better overall experience
    it would be for everyone, system and users.
    To improve on performance I did multiple cycles for performance profiling and then improving on the identified "HOT" path/function.
    It all came down to a point where only the Azure Queue pull and delete are the only two most time consuming calls outside. I can further improve on pull, which i did by batch pulling 32 message at a time (which is the max message count i can pull from Azure
    queue at once at the time of writing this question.), this returned me a favor as in by reducing processing time to a big margin. all good till this as well.
    i am processing these messages in parallel so as to improve on overall performance.
    pseudo code:
    //AzureQueue Class is encapsulating calls to Azure Storage Queue.
    //assume nothing fancy inside, vanila calls to queue for pull/push/delete
    var batchMessages = AzureQueue.Pull(32); Parallel.ForEach(batchMessages, bMessage =>
    //DoSomething does some background processing;
    try{DoSomething(bMessage);}
    catch()
    //Log exception
    AzureQueue.Delete(bMessage);
    With this change now, profiling results show that up-to 90% of time is only taken by the Azure Message delete calls. As it is good to delete message as soon as processing is done, i remove it just after "DoSomething" is finished.
    what i need now is suggestions on how to further improve performance of this function when 90% of the time is being eaten up by the Azure Queue Delete call itself? is there a better faster way to perform delete/bulk delete etc?
    with the implementation mentioned here, i get speed of close to 25 messages/sec. Right now Azure queue delete calls are choking application performance. so is there any hope to push it further.
    Does it also makes difference in performance which queue delete call am making? as of now queue has overloaded method for deleting message, one which except message object and another which accepts message identifier and pop receipt. i am using the later
    one here with message identifier nad pop receipt to delete message from queue.
    Let me know if you need any additional information or any clarification in question.
    Inputs/suggestions are welcome.
    Many thanks.

    The first thing that came to mind was to use a parallel delete at the same time you run the work in DoSomething.  If DoSomething fails, add the message back into the queue.  This won't work for every application, and work that was in the queue
    near the head could be pushed back to the tail, so you'd have to think about how that may effect your workload.
    Or, make a threadpool queued delete after the work was successful.  Fire and forget.  However, if you're loading the processing at 25/sec, and 90% of time sits on the delete, you'd quickly accumulate delete calls for the threadpool until you'd
    never catch up.  At 70-80% duty cycle this may work, but the closer you get to always being busy could make this dangerous.
    I wonder if calling the delete REST API yourself may offer any improvements.  If you find the delete sets up a TCP connection each time, this may be all you need.  Try to keep the connection open, or see if the REST API can delete more at a time
    than the SDK API can.
    Or, if you have the funds, just have more VM instances doing the work in parallel, so the first machine handles 25/sec, the second at 25/sec also - and you just live with the slow delete.  If that's still not good enough, add more instances.
    Darin R.

  • Do you have an idea how to improve the performance ?

    Hi All,
    Greeting,
    I'm doing SEM IP. Regarding the performance, do you have some thought about this ?
    So I have planning report for project report . As we know, if we forecast against project, means the date itself is the life of the project itself.
    It means it could be more than 10 years (forecast period) and 10 years (actual period). Currently I segregate between actual and forecast into different info cube .
    But the performance of the planning report is slow now. Do you have an idea about this how to increase the performance. The performance I mentioned here is when we're going to the report (after putting in the value in the selection screen).
    The other question, at this moment, I have a multiprovider than this multi provider consist 2 info cubes ( actual and forecast ). Than my aggregation is sitting on top of that multi-provider .
    My question whether that's approach correct or not ? Or do we have to create 1 aggregate (only for forecast), than I have multi-provider consisting forecasting aggregation and actual cube .
    than my query will sit on top of that multi-provider ?
    Which one is better ??
    Thanks a lot all,
    really need your help,

    Hi,
       For the performance tuning, you can consider any of the following three methods,
    1. Indices
    With an increasing number of data records in the InfoCube, not only the load but also the query performance can be reduced. This is attributed to the increasing demands on the system for maintaining indexes. The indexes that are created in the fact table for each dimension allow you to easily find and select the data.
    2. Partitioning
    By using partitioning you can split up the whole dataset for an InfoCube into several, smaller, physically independent and redundancy-free units. Thanks to this separation, performance is increased when reporting, or also when deleting data from the InfoCube.
    3. Aggregates 
    Aggregates make it possible to access InfoCube data quickly in Reporting. Aggregates serve, in a similar way to database indexes, to improve performance.
    4. Compressing the Infocube
    Infocube compression means aggregation of the data ignoring the request idu2019s. After compression, the system need not perform aggregation using the request ID every time you execute a query.
    And I feel that as per your scenario, you need to do first compress the data based on user requirements and have only the required data in the infocube.
    And for the approach regarding the Aggregation level design, choosing between the two approaches depends on the user requirements. For example,
    If you have aggregation level created on top of multiprovider containing actual and forecast cube, in your report (created on top of aggregation level) you can view the key figure values present in both the cubes, which is not possible in the other approach.
    So this approach is suited if your requirement is to view the records from both the cubes in your report (Comparing planning and actual values).
    The second approach is used if your requirement is only to report on planning forecast cube.
    Hopes this solves your issue.
    Regards,
    Balajee

  • MOVED: how to make a good flow in the case?

    This topic has been moved to Off Topic Technical.
    how to make a good flow in the case?

    Browser variation is something we must all deal with.  For best results, begin projects with a clear idea of what type of layout you need (1-column, 2-column, 3-column or Multi-column grid).  Then get a CSS Layout that meets your requirements.
    PVII CSS Templates are rock solid & thoroughly tested to perform well in all browsers (commercial product)
    http://www.projectseven.com/products/index.htm
    CSS Layout Magic (commercial extension for Dreamweaver)
    http://www.projectseven.com/products/templates/pagepacks/cssmagic/index.htm
    Nancy O.
    Alt-Web Design & Publishing
    Web | Graphics | Print | Media  Specialists 
    http://alt-web.com/
    http://twitter.com/altweb

  • How to make use of SE37- Function Module & how to find out the table?

    Hi ,
    1.Could anyone help me what's this SE37-Function module is all about,How to make use of this?
    For Eg,If i want to delete a BOM permanently from the system then I have to use the Function module CM_DB_DEL_FROM_ROOT_BOM.
    But after giving the particular name what should i do?
    Please help me.
    2.How to find out the respective table for a particular field sya for T code-COGI, T code MFBF,where its values are getting populated.,Please help in this issue.
    Thanks in adavnce for spending some time
    Raj.S

    Hi Raj
    Function Modules
    Function modules are procedures that are defined in special ABAP programs only, so-called function groups, but can be called from all ABAP programs. Function groups act as containers for function modules that logically belong together. You create function groups and function modules in the ABAP Workbench using the Function Builder.
    Function modules allow you to encapsulate and reuse global functions in the SAP System. They are managed in a central function library. The SAP System contains several predefined functions modules that can be called from any ABAP program. Function modules also play an important role during updating  and in interaction between different SAP systems, or between SAP systems and remote systems through remote communications.
    Unlike subroutines, you do not define function modules in the source code of your program. Instead, you use the Function Builder. The actual ABAP interface definition remains hidden from the programmer. You can define the input parameters of a function module as optional. You can also assign default values to them. Function modules also support exception handling. This allows you to catch certain errors while the function module is running. You can test function modules without having to include them in a program using the Function Builder.
    The Function Builder  also has a release process for function modules. This ensures that incompatible changes cannot be made to any function modules that have already been released. This applies particularly to the interface. Programs that use a released function module will not cease to work if the function module is changed.
    Check this link
    http://help.sap.com/saphelp_nw2004s/helpdata/en/9f/db988735c111d1829f0000e829fbfe/content.htm
    You can execute function module in SE37ie you can perform the activiites defined in the function module by executing it.
    By deleting BOM you mention the FM name in se37 and execute. In some function module it will ask input parameters as developed in the program , you have to give the input parameters and execute.

  • How to improve the performance of one program in one select query

    Hi,
    I am facing performance issue in one program. I have given some part of the code of the program.
    it is taking much time below select query. How to improve the performance.
    Quick response is highly appreciated.
    Program code
    DATA: BEGIN OF t_dels_tvpod OCCURS 100,
    vbeln LIKE tvpod-vbeln,
    posnr LIKE tvpod-posnr,
    lfimg_diff LIKE tvpod-lfimg_diff,
    calcu LIKE tvpod-calcu,
    podmg LIKE tvpod-podmg,
    uecha LIKE lips-uecha,
    pstyv LIKE lips-pstyv,
    xchar LIKE lips-xchar,
    grund LIKE tvpod-grund,
    END OF t_dels_tvpod,
    DATA: l_tabix LIKE sy-tabix,
    lt_dels_tvpod LIKE t_dels_tvpod OCCURS 10 WITH HEADER LINE,
    ls_dels_tvpod LIKE t_dels_tvpod.
    SELECT vbeln INTO TABLE lt_dels_tvpod FROM likp
    FOR ALL ENTRIES IN t_dels_tvpod
    WHERE vbeln = t_dels_tvpod-vbeln
    AND erdat IN s_erdat
    AND bldat IN s_bldat
    AND podat IN s_podat
    AND ernam IN s_ernam
    AND kunnr IN s_kunnr
    AND vkorg IN s_vkorg
    AND vstel IN s_vstel
    AND lfart NOT IN r_del_types_exclude.
    Waiting for quick response.
    Best regards,
    BDP

    Bansidhar,
    1) You need to add a check to make sure that internal table t_dels_tvpod (used in the FOR ALL ENTRIES clause) is not blank. If it is blank skip the SELECt statement.
    2)  Check the performance with and without clause 'AND lfart NOT IN r_del_types_exclude'. Sometimes NOT causes the select statement to not use the index. Instead of 'lfart NOT IN r_del_types_exclude' use 'lfart IN r_del_types_exclude' and build r_del_types_exclude by using r_del_types_exclude-sign = 'E' instead of 'I'.
    3) Make sure that the table used in the FOR ALL ENTRIES clause has unique delivery numbers.
    Try doing something like this.
    TYPES: BEGIN OF ty_del_types_exclude,
             sign(1)   TYPE c,
             option(2) TYPE c,
             low       TYPE likp-lfart,
             high      TYPE likp-lfart,
           END OF ty_del_types_exclude.
    DATA: w_del_types_exclude TYPE          ty_del_types_exclude,
          t_del_types_exclude TYPE TABLE OF ty_del_types_exclude,
          t_dels_tvpod_tmp    LIKE TABLE OF t_dels_tvpod        .
    IF NOT t_dels_tvpod[] IS INITIAL.
    * Assuming that I would like to exclude delivery types 'LP' and 'LPP'
      CLEAR w_del_types_exclude.
      REFRESH t_del_types_exclude.
      w_del_types_exclude-sign = 'E'.
      w_del_types_exclude-option = 'EQ'.
      w_del_types_exclude-low = 'LP'.
      APPEND w_del_types_exclude TO t_del_types_exclude.
      w_del_types_exclude-low = 'LPP'.
      APPEND w_del_types_exclude TO t_del_types_exclude.
      t_dels_tvpod_tmp[] = t_dels_tvpod[].
      SORT t_dels_tvpod_tmp BY vbeln.
      DELETE ADJACENT DUPLICATES FROM t_dels_tvpod_tmp
        COMPARING
          vbeln.
      SELECT vbeln
        FROM likp
        INTO TABLE lt_dels_tvpod
        FOR ALL ENTRIES IN t_dels_tvpod_tmp
        WHERE vbeln EQ t_dels_tvpod_tmp-vbeln
        AND erdat IN s_erdat
        AND bldat IN s_bldat
        AND podat IN s_podat
        AND ernam IN s_ernam
        AND kunnr IN s_kunnr
        AND vkorg IN s_vkorg
        AND vstel IN s_vstel
        AND lfart IN t_del_types_exclude.
    ENDIF.

  • How to make Address Book obey Preferences? I run MacBook Pro 4.1 laptop,  Mac OS X 10.6.8  Address Book 5.0.3 (883) Preferences set at ... General First name following Last name   Sort for Last name Address Format Canada Font size Large Phone format set a

    How to make Address Book obey Preferences?
    I run MacBook Pro 4.1 laptop,  Mac OS X 10.6.8
    Address Book 5.0.3 (883) 
    Preferences set at ...
    General
    First name following Last name 
    Sort for Last name
    Address Format Canada
    Font size Large
    Phone format set at
    +1.123.456.7890
    When application quits - it's all forgotten and it self-resets to
    unwanted configuration.

    Whenever you remove system modifications, they must be removed completely, and the only way to do that is to use the uninstallation tool, if any, provided by the third-party developers, or to follow their instructions. If the software has been incompletely removed, you may have to re-download or even reinstall it in order to finish the job.
    Here are some general guidelines. Suppose you want to remove something called “BrickYourMac.” First, consult the product's Help menu, if there is one, for instructions. Finding none there, look on the developer's website, say www.brickyourmac.com. (That may not be the actual name of the site; if necessary, search the Web for the product name.) If you don’t find anything on the website or in your search, email the developer. While you're waiting for a response, download BrickYourMac.dmg and open it. There may be an application in there such as “Uninstall BrickYourMac.” If not, open “BrickYourMac.pkg” and look for an Uninstall button.
    If you can’t remove software in any other way, you’ll have to erase your boot volume and perform a clean reinstallation of OS X. Never install any third-party software unless you're sure you know how to uninstall it; otherwise you may create problems that are very hard to solve.
    Trying to remove complex system modifications by hunting for files by name often will not work and may make the problem worse. The same goes for "utilities" that purport to remove software.

  • How to make a single payment for different open  items with same due date

    Hi,
    I have created a payment method  and selected "Payment per due day " option in payment method company code settings.
    Even I have selected that option, Payment will not happen grouping for the items with same due date
    for ex : I have two open items with one due date and another open item with another due date so when I am trying performing F110 system should make a single payment for the item with same due date and seperate payment for another item.
    But system making single payment for all items
    Could you please suggest anything how to make a seperate payment with due date.
    Regards
    VK GUPTA

    Hi,
    Please check Vendor Master data: FK02 ->company code data -> Payment transaction accounting: unflag 'individual payment'.
    Make a test and let me know if it's okay.
    regards

  • How to make the Page UP and down work on a table control screen?

    Dear all,
    Can some one suggest how to make the table control screen work with Page Up and Page down controls.
    when I press on Page down it works for the first time and after that i need to select the table to make it work the second time. it there a way I can make the index on the screen stay on the table control at all times.
    Regard,
    Vj

    Take this code as a referance:
    Sample code for vertical scrolling in PAI processing will look like this:
    MODULE user_command_XXXX INPUT. (XXXX is screen no.)
      CASE ok_code.
        WHEN 'P--'.
          CLEAR ok_code.
          PERFORM paging USING 'P--'.
        WHEN 'P-'.
          CLEAR ok_code.
          PERFORM paging USING 'P-'.
        WHEN 'P+'.
          CLEAR ok_code.
          PERFORM paging USING 'P+'.
        WHEN 'P++'.
          CLEAR ok_code.
          PERFORM paging USING 'P++'.
    *&      Form  PAGING
    *       Form to do scrolling for screen XXXX
    *      -->CODE   OKCODE value (P--, P-, P+, P++ )
    FORM paging USING code.
      DATA: i TYPE i,
            j TYPE i.
      CASE code.
        WHEN 'P--'. <table control name>-top_line = 1.
        WHEN 'P-'.
          <table control name>-top_line =
                  <table control name>-top_line - line_count.
          IF <table control name>-top_line LE 0.
            <table control name>-top_line = 1.
          ENDIF.
        WHEN 'P+'.
          i = <table control name>-top_line + line_count.
          j = <table control name>-lines - line_count + 1.
          IF j LE 0. j = 1. ENDIF.
          IF i LE j.
            <table control name>-top_line = i.
          ELSE.
            <table control name>-top_line = j.
          ENDIF.
        WHEN 'P++'.
          <table control name>-top_line =
                 <table control name>-lines - line_count + 1.
          IF <table control name>-top_line LE 0.
            <table control name>-top_line = 1.
          ENDIF.
      ENDCASE.
    ENDFORM.                               " PAGING
    Regards,
    Ravi

Maybe you are looking for

  • TS3899 Mail going to wrong folder

    I have contact emails in my phone that are sending to my junk mail folder instead of my inbox.  One contact is even marked as VIP.  Can you help with this?

  • Adobe Acrobat 8 Standard Question - Converting PDF to word document

    Question:  I currently have Adobe Acrobat 8.  I need to convert a PDF to word document.  I know how to do that but the outcome of the word document sometimes varies as to retaining the exact formatting.  How can I retain exact formatting?  Is there s

  • App store shows new update for program I did not purchase

    App store shows new update for program I did not purchase. This is "CodeBox". When I push button to download update it shows "uknown error". For normal other updates - "update all" not working anymore. How to delete this line from updates section now

  • SAP Query Exchange Rate from Sales Order

    I have created a SAP query which has has a field which converts the sales invoice values in a foreign currency to the local currency using function 'CONVERT_TO_LOCAL_CURRENCY' this uses the rates stored in OB08. Now we want to change this so that the

  • Concatenate values in adf

    I have two transient attributes ... After the user enters the value in both of these fields in UI I want to concatenate both of them and send it to one db table column for example if the user entered 3 in the first field and 5 in the second field...