RE: PERFORMANCE

REPORT ZCHECK .
*&                      TABLES/VIEWS
TABLES: mseg,
        ser03,
        objk,
       zprealert,
        vbrk,
        vbrp,
        zinftsalecntrl,
        vbfa.
*&                VARIABLES/STRUCTURES/INTERNAL TABLES
DATA: BEGIN OF it_mseg OCCURS 0,
        mblnr     LIKE mseg-mblnr,
        mjahr     LIKE mseg-mjahr,
        zeile     LIKE mseg-zeile,
      END OF it_mseg.
DATA: BEGIN OF it_ser03 OCCURS 0,
        obknr     LIKE ser03-obknr,
        mblnr     LIKE ser03-mblnr,
        zeile     LIKE ser03-zeile,
        bwart     LIKE ser03-bwart,
        charge    LIKE ser03-charge,
        datum     LIKE ser03-datum,
        werk      LIKE ser03-werk,
        lagerort  LIKE ser03-lagerort,
      END OF it_ser03.
DATA: BEGIN OF it_objk OCCURS 0,
        obknr LIKE objk-obknr,
        sernr LIKE objk-sernr,
        matnr LIKE objk-matnr,
      END OF it_objk.
DATA: BEGIN OF it_alert OCCURS 0,
        rsnno LIKE zprealert-rsnno,
***kdamle-27102004-start
        status LIKE zprealert-status,
***kdamle-27102004-end
      END OF it_alert.
DATA: BEGIN OF it_vbrk OCCURS 0,
        vbeln LIKE vbrk-vbeln,
        fkdat LIKE vbrk-fkdat,
        fkart LIKE vbrk-fkart,
        vkorg LIKE vbrk-vkorg,
        vtweg LIKE vbrk-vtweg,
        spart LIKE vbrk-spart,
        fksto LIKE vbrk-fksto,
      END OF it_vbrk.
DATA: BEGIN OF it_vbrp OCCURS 0,
        vbeln LIKE vbrp-vbeln,
        matnr LIKE vbrp-matnr,
        charg LIKE vbrp-charg,
      END OF it_vbrp.
DATA: BEGIN OF it_inftsale OCCURS 0,
        delivery    LIKE zinftsalecntrl-delivery,
        billingdoc  LIKE zinftsalecntrl-billingdoc,
      END OF it_inftsale.
DATA: BEGIN OF it_vbfa OCCURS 0,
        vbelv LIKE vbfa-vbelv,
        vbeln LIKE vbfa-vbeln,
      END OF it_vbfa.
DATA: BEGIN OF it_vbfa_1 OCCURS 0,
        vbelv   LIKE vbfa-vbelv,
        vbeln   LIKE vbfa-vbeln,
        vbtyp_v LIKE vbfa-vbtyp_v,
***kdamle-19052005-start
        vbtyp_n LIKE vbfa-vbtyp_n,
***kdamle-19052005-end
      END OF it_vbfa_1.
DATA: BEGIN OF it_vbfa_2 OCCURS 0,
        vbelv   LIKE vbfa-vbelv,
        vbeln   LIKE vbfa-vbeln,
        vbtyp_n LIKE vbfa-vbtyp_n,
***kdamle-19052005-start
        plmin   LIKE vbfa-plmin,
***kdamle-19052005-end
      END OF it_vbfa_2.
DATA: BEGIN OF it_out OCCURS 0,
        rsnno     LIKE zprealert-rsnno,
        matnr     LIKE objk-matnr,
        charg     LIKE ser03-charge,
        bwart     LIKE ser03-bwart,
        mblnr     LIKE ser03-mblnr,
        vbeln     LIKE vbrk-vbeln,
        datum     LIKE ser03-datum,
        zeile     LIKE ser03-zeile,
        werk      LIKE ser03-werk,
        lagerort  LIKE ser03-lagerort,
        fkdat     LIKE vbrk-fkdat,
        fkart     LIKE vbrk-fkart,
        vkorg     LIKE vbrk-vkorg,
        vtweg     LIKE vbrk-vtweg,
        spart     LIKE vbrk-spart,
***kdamle-27102004-start
        status    LIKE zprealert-status,
***kdamle-27102004-end
      END OF it_out.
***kdamle-05.10.2004-start
*display table as per o/p file structure
DATA: BEGIN OF it_disp OCCURS 0,
        rsnno     LIKE zprealert-rsnno,
        matnr     LIKE objk-matnr,
        charg     LIKE ser03-charge,
        bwart     LIKE ser03-bwart,
        mblnr     LIKE ser03-mblnr,
        zeile     LIKE ser03-zeile,
        werk      LIKE ser03-werk,
        lagerort  LIKE ser03-lagerort,
        datum     LIKE ser03-datum,
        vbeln     LIKE vbrk-vbeln,
        fkdat     LIKE vbrk-fkdat,
        fkart     LIKE vbrk-fkart,
        vkorg     LIKE vbrk-vkorg,
        vtweg     LIKE vbrk-vtweg,
        spart     LIKE vbrk-spart,
      END OF it_disp.
DATA : BEGIN OF it_formatted OCCURS 0,
        record(140),
       END OF it_formatted.
DATA: BEGIN OF it_dwn OCCURS 0,
        text1(15),
        text2(15),
        text3(15),
        text4(15),
        text5(15),
      END OF it_dwn.
*This table will contain uploaded mblnr or vbeln data
*in foreground, it will contain either mblnr or vbeln.
*in backround, it will first contain data uploaded from users machine
*and loaded on the application server.
*Then it is erased and filled with data which is read from application
*server since data from users machine cannot be read in background
DATA: BEGIN OF it_up OCCURS 0,
***kdamle-24052005-start
*positions swapped for vbeln and mblnr
        vbeln LIKE vbrk-vbeln,
        mblnr LIKE ser03-mblnr,
***kdamle-24052005-end
      END OF it_up.
***kdamle-05.10.2004-end
DATA : it_alv LIKE STANDARD TABLE OF it_out.
DATA: cntnr TYPE REF TO cl_gui_custom_container,
      grid TYPE REF TO cl_gui_alv_grid.
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
      s_fieldcat   LIKE LINE OF gt_fieldcat,
      alv_layout   TYPE slis_layout_alv.
DATA: ls_alv_event TYPE slis_alv_event,
      i_alv_event  TYPE slis_t_event.
DATA: gt_list_top_of_page   TYPE slis_t_listheader,
      infotxt               TYPE slis_listheader-info.
DATA: g_variant LIKE disvariant VALUE 'ZPPSALE',
      gx_variant LIKE disvariant.
DATA: lin TYPE i.
DATA: wkey LIKE vbfa-vbtyp_v.
DATA: v_datum LIKE sy-datum,
      v_uzeit LIKE sy-uzeit.
***kdamle-05.10.2004-start
CONSTANTS: hex(1) TYPE x VALUE '09',   "tab
           app_path TYPE rlgrap-filename
           VALUE '/bdcusers/mmdata/'.
DATA: fnam LIKE rlgrap-filename,
      l_path(100),
      flag(1),
      txt(500).
DATA: fnam1 LIKE rlgrap-filename.
DATA : BEGIN OF iline OCCURS 0,
         line(4000),
       END OF iline.
DATA : BEGIN OF i_tty OCCURS 0,
        line(300),
       END OF i_tty.
*required for pushbutton info
DATA: g_answer     TYPE c,
      g_lines_tab  TYPE popuptext OCCURS 0
      WITH HEADER LINE.
DATA: v_flagmtl,
      v_flaginv.
***kdamle-05.10.2004-end
***kdamle-08122004-start
DATA: v_msgtxt(150).
***kdamle-08122004-end
*&                      SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbrk-vbeln.
SELECT-OPTIONS: s_mblnr FOR ser03-mblnr.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN SKIP 1.
***kdamle-05.10.2004-start
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-007.
PARAMETERS: p_ufname LIKE rlgrap-filename.
*pushbuttons to give info and download file format
SELECTION-SCREEN: PUSHBUTTON /1(7)   help USER-COMMAND info,
                  PUSHBUTTON  33(25) down USER-COMMAND down.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-002.
PARAMETERS: S_VAR LIKE DISVARIANT-VARIANT.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_r1 RADIOBUTTON GROUP rbg1 DEFAULT 'X' USER-COMMAND ucomm,
            s_var LIKE disvariant-variant MODIF ID pr1.
PARAMETERS: p_r2 RADIOBUTTON GROUP rbg1,
            p_fname LIKE rlgrap-filename MODIF ID pr2.
PARAMETERS: p_r3 RADIOBUTTON GROUP rbg1,
            p_lfname LIKE rlgrap-filename MODIF ID pr3,
            p_fname1 LIKE rlgrap-filename MODIF ID pr4.
SELECTION-SCREEN END OF BLOCK blk3.
SELECTION-SCREEN BEGIN OF BLOCK blk4 WITH FRAME TITLE text-003.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(75) text-004 MODIF ID pr5.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(75) text-005 MODIF ID pr6.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(75) text-006 MODIF ID pr7.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK blk4.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
  PERFORM get_file.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname1.
  PERFORM get_lfile.
***kdamle-05.10.2004-start
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ufname.
  PERFORM get_ufile.
***kdamle-05.10.2004-end
*&               AT SELECTION SCREEN OUTPUT
***kdamle-05.10.2004-start
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF p_r1 = 'X'.
      IF screen-group1 = 'PR1'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ELSEIF screen-group1 = 'PR2'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR3'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR4'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR5'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR6'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR7'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ENDIF.
    ELSEIF p_r2 = 'X'.
      IF screen-group1 = 'PR1'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR2'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ELSEIF screen-group1 = 'PR3'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR4'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR5'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ELSEIF screen-group1 = 'PR6'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ELSEIF screen-group1 = 'PR7'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ENDIF.
    ELSEIF p_r3 = 'X'.
      IF screen-group1 = 'PR1'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR2'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR3'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ELSEIF screen-group1 = 'PR4'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ELSEIF screen-group1 = 'PR5'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR6'.
        screen-input     = '0'.
        screen-output    = '0'.
        screen-invisible = '1'.
      ELSEIF screen-group1 = 'PR7'.
        screen-input     = '1'.
        screen-output    = '1'.
        screen-invisible = '0'.
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.
*&                      INITIALIZATION
INITIALIZATION.
  MOVE '@0S@' TO help.
  MOVE '@49@ Upload File Format' TO down.
  PERFORM fill_infotext.
***kdamle-05.10.2004-end
*&                      AT SELECTION SCREEN
AT SELECTION-SCREEN.
  IF sy-ucomm = 'ONLI'
***kdamle-08122004-start
      AND p_r3 NE 'X'.
***kdamle-08122004-end
    IF NOT s_vbeln IS INITIAL
      AND NOT s_mblnr IS INITIAL
      AND NOT p_ufname IS INITIAL.
      MESSAGE e000(yw) WITH
        'Enter Either Mat. Doc. Or Inv. No. Or Upload File'.
    ELSEIF s_vbeln IS INITIAL
          AND s_mblnr IS INITIAL
          AND p_ufname IS INITIAL.
      MESSAGE e000(yw) WITH
        'Enter Either Mat. Doc. Or Inv. No. Or Upload File'.
    ENDIF.
    IF NOT s_mblnr IS INITIAL AND NOT p_ufname IS INITIAL.
      MESSAGE e000(yw) WITH
        'Enter Either Material Doc. Or Upload file name'.
    ELSEIF NOT s_vbeln IS INITIAL AND NOT p_ufname IS INITIAL.
      MESSAGE e000(yw) WITH
        'Enter Either Invoice No. Or Upload file name'.
    ENDIF.
  ENDIF.
***kdamle-05.10.2004-start
IF sscrfields-ucomm = 'INFO'.
  IF sy-ucomm = 'INFO'.
    CALL FUNCTION 'DD_POPUP_WITH_INFOTEXT'
         EXPORTING
              titel        = 'Text File Format'
              start_column = 10
              start_row    = 12
              end_column   = 85
              end_row      = 22
              infoflag     = ' '
         IMPORTING
              answer       = g_answer
         TABLES
              lines        = g_lines_tab.
ELSEIF sscrfields-ucomm = 'DOWN'.
  ELSEIF sy-ucomm = 'DOWN'.
    PERFORM fill_idwn.
  ENDIF.
  IF sy-ucomm = 'ONLI'.
    IF p_r2 = 'X'.
      IF p_fname IS INITIAL.
        SET CURSOR FIELD 'P_FNAME'.
        MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
      ENDIF.
    ENDIF.
    IF p_r3 = 'X'.
      IF p_lfname = space.
        SET CURSOR FIELD 'P_LFNAME'.
        MESSAGE e000(yw) WITH 'FileName on Server cannot be empty'.
      ENDIF.
      IF p_fname1 = space.
        SET CURSOR FIELD 'P_FNAME1'.
        MESSAGE e000(yw) WITH 'Local FileName cannot be empty'.
      ENDIF.
    ENDIF.
  ELSEIF sy-ucomm = 'SJOB'.
    IF p_r2 = 'X'.
      IF p_fname IS INITIAL.
        SET CURSOR FIELD 'P_FNAME'.
        MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
      ENDIF.
      IF p_fname CA ':' OR p_fname CA '/'  OR p_fname CA '\'.
        SET CURSOR FIELD 'P_FNAME'.
        MESSAGE e000(yw) WITH 'Enter only File Name for Background job'.
      ENDIF.
    ENDIF.
    IF p_r3 = 'X'.
      MESSAGE e000(yw) WITH
          'This option cannot be executed in Background mode'.
    ENDIF.
  ENDIF.
  IF p_fname CA '*'.
    MESSAGE e000(yw) WITH '* (star) not allowed in Filename'.
  ENDIF.
  IF sy-ucomm = 'ONLI' AND NOT p_ufname IS INITIAL.
*in foreground processing directly read input file from users machine
    PERFORM upload_file TABLES it_up.
  ELSEIF sy-ucomm = 'SJOB' AND NOT p_ufname IS INITIAL.
*download the file read input file from users machine onto the
*application server first as it cannot be read during background
*processing
    PERFORM download_to_app_server.
  ENDIF.
***kdamle-05.10.2004-end
*&               AT SELECTION SCREEN ON VALUE REQUEST
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
  PERFORM select_variant.
*&                      START OF SELECTION
START-OF-SELECTION.
***kdamle-05.10.2004-start
  IF sy-batch = 'X'.
    CLEAR it_up.
    CLEAR it_up[].
    PERFORM upload_app_server.
    READ TABLE it_up INDEX 1.
  ENDIF.
  IF p_r3 = 'X'.
    PERFORM create_local_file.
    EXIT.
  ENDIF.
  IF NOT s_mblnr IS INITIAL.
    SELECT mblnr mjahr zeile FROM mseg
                           INTO CORRESPONDING FIELDS OF TABLE it_mseg
                             WHERE mblnr IN s_mblnr
                               AND xauto NE 'X'.
    IF sy-subrc NE 0.
      MESSAGE s000(yw) WITH 'No Data Found'.
      STOP.
    ENDIF.
    PERFORM get_data_from_mtl.
  ELSEIF NOT p_ufname IS INITIAL AND NOT it_up-mblnr IS INITIAL.
    v_flagmtl = 'X'.
    IF NOT it_up[] IS INITIAL.
      SORT it_up BY mblnr.
      SELECT mblnr mjahr zeile FROM mseg
        INTO CORRESPONDING FIELDS OF TABLE it_mseg
        FOR ALL ENTRIES IN it_up
        WHERE mblnr = it_up-mblnr
          AND xauto NE 'X'.
    ENDIF.
    PERFORM get_data_from_mtl.
  ELSEIF NOT s_vbeln IS INITIAL.
    SELECT vbeln fkdat fkart vkorg vtweg spart FROM vbrk
                       INTO CORRESPONDING FIELDS OF TABLE it_vbrk
                           WHERE vbeln IN s_vbeln.
    IF sy-subrc NE 0.
      MESSAGE s000(yw) WITH 'No Data Found'.
      STOP.
    ENDIF.
    PERFORM get_data_from_inv.
  ELSEIF NOT p_ufname IS INITIAL AND NOT it_up-vbeln IS INITIAL.
    v_flaginv = 'X'.
    IF NOT it_up[] IS INITIAL.
      SORT it_up BY vbeln.
      SELECT vbeln fkdat fkart vkorg vtweg spart FROM vbrk
        INTO CORRESPONDING FIELDS OF TABLE it_vbrk
        FOR ALL ENTRIES IN it_up
        WHERE vbeln = it_up-vbeln.
    ENDIF.
    PERFORM get_data_from_inv.
  ENDIF.
***kdamle-05.10.2004-end
*&                      END OF SELECTION
END-OF-SELECTION.
***kdamle-05.10.2004-start
  IF NOT s_mblnr IS INITIAL OR v_flagmtl = 'X'.
***kdamle-05.10.2004-end
    CHECK NOT it_mseg[] IS INITIAL.
    PERFORM populate_output_1.
***kdamle-05.10.2004-start
  ELSEIF NOT s_vbeln IS INITIAL OR v_flaginv = 'X'.
***kdamle-05.10.2004-end
    PERFORM populate_output_2.
  ENDIF.
***kdamle-05.10.2004-start
  IF p_r1 = 'X'.
***kdamle-05.10.2004-end
    DESCRIBE TABLE it_out LINES lin.
    IF lin > 0.
      PERFORM create_f_catalog_0100.
      PERFORM set_defaults_grid.
      SET TITLEBAR 'DOC' WITH '[count ='
                              lin
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program = 'ZDOC_SRLST'
                is_layout          = alv_layout
                it_fieldcat        = gt_fieldcat
                i_default          = 'X'
                i_save             = 'A'
                is_variant         = g_variant
           TABLES
                t_outtab           = it_out.
    ELSE.
      MESSAGE s000(yw) WITH 'No Data Selected'.
    ENDIF.
***kdamle-05.10.2004-start
  ELSEIF p_r2 = 'X'.
    PERFORM create_disp_table.
    IF sy-batch = space.
      PERFORM online_download.
    ELSE.
      PERFORM download_data.
    ENDIF.
  ENDIF.
***kdamle-05.10.2004-end
*&      Form  POPULATE_OUTPUT_1
FORM populate_output_1.
SORT IT_SER03  BY MBLNR.
  SORT it_vbfa_1 BY vbeln.
  SORT it_vbfa_2 BY vbelv.
  SORT it_vbrk   BY vbeln.
  SORT it_objk   BY obknr.
  SORT it_alert  BY rsnno.
  LOOP AT it_ser03.
    it_out-charg     = it_ser03-charge.
    it_out-bwart     = it_ser03-bwart.
    it_out-zeile     = it_ser03-zeile.
    it_out-mblnr     = it_ser03-mblnr.
    it_out-datum     = it_ser03-datum.
    it_out-werk      = it_ser03-werk.
    it_out-lagerort  = it_ser03-lagerort.
    IF it_ser03-bwart = '601' OR it_ser03-bwart = '602'.
      wkey = 'J'.
    ELSE.
      wkey = 'T'.
    ENDIF.
    CLEAR it_vbfa_1.
    READ TABLE it_vbfa_1
               WITH KEY vbeln   = it_ser03-mblnr
                        vbtyp_v = wkey.
    IF sy-subrc EQ 0.
      IF it_ser03-bwart = '601' OR it_ser03-bwart = '602'.
        wkey = 'M'.
      ELSE.
        wkey = 'O'.
      ENDIF.
      CLEAR it_vbfa_2.
      READ TABLE it_vbfa_2
                 WITH KEY vbelv   = it_vbfa_1-vbelv
                          vbtyp_n = wkey.
      IF sy-subrc EQ 0.
        CLEAR it_vbrk.
        READ TABLE it_vbrk
                   WITH KEY vbeln = it_vbfa_2-vbeln
                   BINARY SEARCH.
        it_out-vbeln = it_vbrk-vbeln.
        it_out-fkdat = it_vbrk-fkdat.
        it_out-fkart = it_vbrk-fkart.
        it_out-vkorg = it_vbrk-vkorg.
        it_out-vtweg = it_vbrk-vtweg.
        it_out-spart = it_vbrk-spart.
      ENDIF.
    ENDIF.
    READ TABLE it_objk
               WITH KEY obknr = it_ser03-obknr
               BINARY SEARCH.
    IF sy-subrc EQ 0.
      LOOP AT it_objk WHERE obknr = it_ser03-obknr.
        it_out-matnr = it_objk-matnr.
        READ TABLE it_alert
                   WITH KEY rsnno = it_objk-sernr
                   BINARY SEARCH.
        IF sy-subrc EQ 0.
          it_out-rsnno = it_alert-rsnno.
***kdamle-27102004-start
          it_out-status = it_alert-status.
***kdamle-27102004-end
          APPEND it_out.
          CLEAR: it_alert, it_objk.
        ELSE.
          APPEND it_out.
          CLEAR: it_objk.
        ENDIF.
      ENDLOOP.
    ELSE.
      APPEND it_out.
      CLEAR: it_objk, it_ser03,
             it_out.
    ENDIF.
  ENDLOOP.
  REFRESH: it_ser03, it_objk, it_alert.
ENDFORM.                    " POPULATE_OUTPUT_1
*&      Form  POPULATE_OUTPUT_2
FORM populate_output_2.
  SORT it_vbrp   BY vbeln.
  SORT it_vbfa_1 BY vbeln.
  SORT it_vbfa_2 BY vbelv.
  SORT it_ser03  BY mblnr.
  SORT it_objk   BY obknr.
  SORT it_alert  BY rsnno.
  LOOP AT it_vbrk.
    it_out-vbeln = it_vbrk-vbeln.
    it_out-fkdat = it_vbrk-fkdat.
    it_out-fkart = it_vbrk-fkart.
    it_out-vkorg = it_vbrk-vkorg.
    it_out-vtweg = it_vbrk-vtweg.
    it_out-spart = it_vbrk-spart.
    READ TABLE it_vbrp
               WITH KEY vbeln = it_vbrk-vbeln.
***kdamle-19042005-start
   it_out-charg = it_vbrp-charg.
   it_out-matnr = it_vbrp-matnr.
***kdamle-19042005-end
    READ TABLE it_vbfa_1
               WITH KEY vbeln = it_vbrk-vbeln
               BINARY SEARCH.
    IF sy-subrc EQ 0.
      LOOP AT it_vbfa_1 WHERE vbeln = it_vbrk-vbeln.
        READ TABLE it_vbfa_2
                   WITH KEY vbelv = it_vbfa_1-vbelv
                   BINARY SEARCH.
        IF sy-subrc EQ 0.
          LOOP AT it_vbfa_2 WHERE vbelv = it_vbfa_1-vbelv.
            READ TABLE it_ser03
                       WITH KEY mblnr = it_vbfa_2-vbeln
                       BINARY SEARCH.
            IF sy-subrc EQ 0.
              LOOP AT it_ser03 WHERE mblnr = it_vbfa_2-vbeln.
                it_out-bwart     = it_ser03-bwart.
                it_out-zeile     = it_ser03-zeile.
                it_out-mblnr     = it_ser03-mblnr.
                it_out-datum     = it_ser03-datum.
                it_out-werk      = it_ser03-werk.
                it_out-lagerort  = it_ser03-lagerort.
***kdamle-19042005-start
                it_out-charg     = it_ser03-charge.
***kdamle-19042005-end
                READ TABLE it_objk
                           WITH KEY obknr = it_ser03-obknr
                           BINARY SEARCH.
                IF sy-subrc EQ 0.
                  LOOP AT it_objk WHERE obknr = it_ser03-obknr.
***kdamle-19042005-start
                    it_out-matnr = it_objk-matnr.
***kdamle-19042005-end
                    READ TABLE it_alert
                               WITH KEY rsnno = it_objk-sernr
                               BINARY SEARCH.
                    IF sy-subrc EQ 0.
                      it_out-rsnno = it_alert-rsnno.
                      APPEND it_out.
                      CLEAR: it_alert, it_objk.
                    ELSE.
                      APPEND it_out.
                      CLEAR: it_objk.
                    ENDIF.
                  ENDLOOP.
                ELSE.
                  APPEND it_out.
                  CLEAR: it_objk, it_ser03, it_out.
                ENDIF.
              ENDLOOP.
              CLEAR: it_ser03, it_objk, it_alert.
            ELSE.
              APPEND it_out.
            ENDIF.
          ENDLOOP.
        ELSE.
          APPEND it_out.
        ENDIF.
      ENDLOOP.
    ELSE.
      APPEND it_out.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " POPULATE_OUTPUT_2
*&      FORM  CREATE_F_CATALOG_0100
FORM create_f_catalog_0100.
  REFRESH gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'RSNNO'.
  s_fieldcat-ref_tabname = 'ZPREALERT'.
  s_fieldcat-ref_fieldname = 'RSNNO'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'RSN No.'.
  s_fieldcat-outputlen = '20'.
  s_fieldcat-fix_column = 'X'.
  s_fieldcat-key = 'X'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'MATNR'.
  s_fieldcat-ref_tabname = 'OBJK'.
  s_fieldcat-ref_fieldname = 'MATNR'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Material'.
  s_fieldcat-outputlen = '20'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'CHARG'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'CHARG'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Batch'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'BWART'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'BWART'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Movement'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'MBLNR'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'MBLNR'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Mat Doc'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-emphasize = 'X'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'ZEILE'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'ZEILE'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Item'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'WERK'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'WERK'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Plant'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'LAGERORT'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'LAGERORT'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'SLoc'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'DATUM'.
  s_fieldcat-ref_tabname = 'SER03'.
  s_fieldcat-ref_fieldname = 'DATUM'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Doc Date'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'VBELN'.
  s_fieldcat-ref_tabname = 'VBRK'.
  s_fieldcat-ref_fieldname = 'VBELN'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Invoice'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'FKDAT'.
  s_fieldcat-ref_tabname = 'VBRK'.
  s_fieldcat-ref_fieldname = 'FKDAT'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Inv Date'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'FKART'.
  s_fieldcat-ref_tabname = 'VBRK'.
  s_fieldcat-ref_fieldname = 'FKART'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Inv Type'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'VKORG'.
  s_fieldcat-ref_tabname = 'VBRK'.
  s_fieldcat-ref_fieldname = 'VKORG'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'S.Org'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'VTWEG'.
  s_fieldcat-ref_tabname = 'VBRK'.
  s_fieldcat-ref_fieldname = 'VTWEG'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'D.Chnl'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
  s_fieldcat-fieldname = 'SPART'.
  s_fieldcat-ref_tabname = 'VBRK'.
  s_fieldcat-ref_fieldname = 'SPART'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'Div'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
***kdamle-27102004-start
  s_fieldcat-fieldname = 'STATUS'.
  s_fieldcat-ref_tabname = 'ZPREALERT'.
  s_fieldcat-ref_fieldname = 'STATUS'.
  s_fieldcat-ddictxt = 'L'.
  s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                         'P Sts'.
  s_fieldcat-outputlen = '10'.
  s_fieldcat-tabname = 'IT_OUT'.
  APPEND s_fieldcat TO gt_fieldcat.
  CLEAR s_fieldcat.
***kdamle-27102004-end
ENDFORM.
*&      Form  SET_DEFAULTS_GRID
FORM set_defaults_grid.
  alv_layout-colwidth_optimize = 'X'.
  alv_layout-zebra = 'X'.
ENDFORM.                    " SET_DEFAULTS_GRID
*&      Form  SELECT_VARIANT
FORM select_variant.
  DATA: g_exit(1) TYPE c,
        g_save(1) TYPE c.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
       EXPORTING
            is_variant = g_variant
            i_save     = 'A'
       IMPORTING
            es_variant = g_variant
       EXCEPTIONS
            not_found  = 2.
  IF sy-subrc EQ 0.
    s_var = g_variant-variant.
  ELSE.
    MESSAGE s000(yw) WITH 'No Variant Found'.
  ENDIF.
ENDFORM.                    " SELECT_VARIANT
*&      Form  DISP_TOP_OF_PAGE
FORM disp_top_of_page.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            it_list_commentary = gt_list_top_of_page.
ENDFORM.                    " DISP_TOP_OF_PAGE
*&      Form  FILL_ALV_EVENTS
FORM fill_alv_events.
  DATA: ls_line TYPE slis_listheader.
  ls_alv_event-name = 'TOP_OF_PAGE'.
  ls_alv_event-form = 'DISP_TOP_OF_PAGE'.
  APPEND ls_alv_event TO i_alv_event.
  CLEAR: ls_alv_event,
         ls_line.
  ls_line-typ  = 'A'.
  ls_line-info = infotxt.
  APPEND ls_line TO gt_list_top_of_page.
ENDFORM.                    " FILL_ALV_EVENTS
*&      Form  GET_FILE
      text
-->  p1        text
<--  p2        text
FORM get_file.
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
       EXPORTING
            program_name = 'ZDOC_SRLST'
            field_name   = p_fname
            mask         = '.'
       CHANGING
            file_name    = p_fname.
  IF sy-subrc <> 0.
    MESSAGE e000(yw) WITH 'Error Uploading File' p_fname.
  ENDIF.
ENDFORM.                    " GET_FILE
*&      Form  GET_LFILE
      text
-->  p1        text
<--  p2        text
FORM get_lfile.
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
       EXPORTING
            program_name = 'ZDOC_SRLST'
            field_name   = p_fname1
            mask         = '.'
       CHANGING
            file_name    = p_fname1.
  IF sy-subrc <> 0.
    MESSAGE e000(yw) WITH 'Error Uploading File' p_fname1.
  ENDIF.
ENDFORM.                    " GET_LFILE
*&      Form  CREATE_LOCAL_FILE
      text
-->  p1        text
<--  p2        text
FORM create_local_file.
  IF p_lfname IS INITIAL  OR p_fname1 IS INITIAL.
    MESSAGE i000(yw) WITH 'File Name on Server and Local File Name '
                          ' are mandatory.'.
    STOP.
  ENDIF.
  CONCATENATE app_path p_lfname INTO l_path.
  CONDENSE l_path NO-GAPS.
  OPEN DATASET l_path FOR INPUT IN TEXT MODE.
  IF sy-subrc NE 0.
    MESSAGE i000(yw) WITH 'File' p_lfname 'does not exist'.
    STOP.
  ENDIF.
  DO.
    CLEAR : iline.
    READ DATASET l_path INTO iline.
    IF sy-subrc = 0.
      APPEND iline.
    ELSE.
      EXIT.
    ENDIF.
  ENDDO.
  CLOSE DATASET l_path.
  CALL FUNCTION 'WS_DOWNLOAD'
      EXPORTING
        BIN_FILESIZE            = ' '
        CODEPAGE                = ' '
          filename                =  p_fname1
           filetype                = 'DAT'
        ITEM                    = ' '
        MODE                    = ' '
        WK1_N_FORMAT            = ' '
        WK1_N_SIZE              = ' '
        WK1_T_FORMAT            = ' '
        WK1_T_SIZE              = ' '
        FILEMASK_MASK           = ' '
        FILEMASK_TEXT           = ' '
        FILETYPE_NO_CHANGE      = ' '
        FILEMASK_ALL            = ' '
        FILETYPE_NO_SHOW        = ' '
        SILENT                  = 'S'
        COL_SELECT              = ' '
        COL_SELECTMASK          = ' '
        NO_AUTH_CHECK           = ' '
   IMPORTING
        ACT_FILENAME            =
        ACT_FILETYPE            =
        FILESIZE                =
        CANCEL                  =
       TABLES
            data_tab                = iline
        FIELDNAMES              =
      EXCEPTIONS
           invalid_filesize        = 1
           invalid_table_width     = 2
           invalid_type            = 3
           no_batch                = 4
           unknown_error           = 5
           gui_refuse_filetransfer = 6
        CUSTOMER_ERROR          = 7
           OTHERS                  = 8
  IF sy-subrc EQ 0.
***kdamle-08122004-start
    CONCATENATE 'File ' p_fname1
                          ' Downloaded Successfully'
      INTO v_msgtxt SEPARATED BY space.
    MESSAGE s000(yw) WITH v_msgtxt+0(50)
                          v_msgtxt+50(50).
***kdamle-08122004-end
Delete processed file from App Server.
    IF sy-subrc EQ 0.
      CONCATENATE 'rm' l_path
          INTO txt SEPARATED BY space.
      CALL 'SYSTEM' ID 'COMMAND' FIELD txt
                    ID 'TAB'     FIELD i_tty[].
    ENDIF.
  ENDIF.
ENDFORM.                    " CREATE_LOCAL_FILE
*&      Form  ONLINE_DOWNLOAD
      text
-->  p1        text
<--  p2        text
FORM online_download.
  CALL FUNCTION 'WS_DOWNLOAD' "#nc
       EXPORTING
            filename = p_fname
            filetype = 'ASC'
       TABLES
            data_tab = it_formatted.
  IF sy-subrc EQ 0.
    MESSAGE s016(yw) WITH 'File '
                          p_fname
                          ' Downloaded Successfully'.
  ELSE.
    MESSAGE i000(yw) WITH 'Error Downloading File'
                          p_fname.
  ENDIF.
ENDFORM.                    " ONLINE_DOWNLOAD
*&      Form  DOWNLOAD_DATA
      text
-->  p1        text
<--  p2        text
FORM download_data.
*TRANSFERRING THE DATA TO THE FILE ON THE APPLICATION SERVER
  CONCATENATE app_path p_fname INTO fnam SEPARATED BY space.
  CONDENSE fnam NO-GAPS.
  IF fnam IS INITIAL.
    MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
  ENDIF.
  OPEN DATASET fnam FOR OUTPUT IN TEXT MODE.
  IF sy-subrc = 0.
    LOOP AT it_formatted.
      TRANSFER it_formatted TO fnam.
    ENDLOOP.
    CLOSE DATASET fnam.
    IF sy-subrc = 0.
      MESSAGE s016(yw) WITH 'File '
                            fnam+0(50)
                            fnam+50(50)
                            ' Downloaded Successfully'.
    ELSE.
      MESSAGE i000(yw) WITH

1)     AVOID SELECT *                                                          
2)     USE WHERE WITH AS MANY EQ AND RESTRICT DATA RETRIEVAL             
3)     AVOID SELECTS FROM THE SAME TABLE                                        
4)     USE BINARY SEARCH WHEN READING FROM INTERNAL TABLES                      
5)     CHECK IF INTERNAL TABLE IS SORTED BEFORE READING WITH BINARY SRCH       
6)     FETCH REQUIRED FIELDS USING TRANSPORTING WHEN READING INTERNAL TABLES    
7)     USE AS MANY PRIMARY AND SECONDARY INDEXES WHEN RETRIEVING DATA           
8)     USE SELECT SINGLE INSTEAD OF UP TO 1 ROWS                                
9)     USE BYPASSING BUFFER FOR ONE TIME USE TABLES                         
10)     USE INSERT <DBTAB> FROM TABLE <ITAB1> INSTEAD OF INSERT INTO <DBTAB>     
11)     USE WITH KEY WHEN READING FROM AN INTERNAL TAB                           
12)     SPECIFY KEYS WHEN SORTING AN INTERNAL TABLE                             
13)     HAVE TYPE DECLARATIONS FOR PARAMETERS PASSED IN SUBROUTINES            
14)     HAVE TYPE DECLARATIONS FOR FIELD-SYMBOLS                          
15)     USE WHILE ... ENDWHILE INSTEAD OF DO ... ENDDO                          
16)     DO NOT USE CHECK CONSTRUCT WITHIN LOOP ... ENDLOOP.    
17)     DO NOT USE CHECK CONSTRUCT WITHIN SELECT ... ENDSELECT   
18)     USE CASE STATEMENT INSTEAD OF IF ... ELSEIF ... ENDIF                  
19)     AVOID USING ORDER BY IN SELECT STATEMENTS. USE SORT BY INSTEAD           
20)     REMOVE BREAK-POINT FROM THE CODE                                         
21)     DO NOT USE AT EVENTS IN LOOP...ENDLOOP HAVING FROM OR TO OR WHERE CON  
22)     DO NOT USE ON CHANGE OF EVENTS IN SELECT...ENDSELECT                     
23)     DO NOT USE ON CHANGE OF EVENTS IN LOOP ... ENDLOOP                       
24)     USE %_HINTS IN THE WHERE CLAUSE TO SPECIFY THE INDEX TO BE USED.         
25)     AVOID USING NESTED SELECTS         
26)     USE GET <DTABLE> FIELDS F1 F2 F3 ... INSTEAD OF ONLY GET <DTABLE>        
27)     USE MODIFY <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
28)     USE UPDATE <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
29)     USE INSERT <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
30)     USE DELETE <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
31)     AVOID SELECT FROM CLUSTER AND POOL TABLES

Similar Messages

  • Quote Report - Performance

    I have created a quote report with narratives around the opportunity, opportunity-product, and account information. The report contains a pivot table.
    I'm getting very hit or miss performance results on the report. Sometimes the report runs faster for all opportunities compared to when its prompted with an opty id from a web link.
    Any thoughts? There doesn't seem to be one column that makes a difference.
    Also this is not an analytical report as the quotes need to be generated same day.

    Hi Shaik,
    Please remove all the join select queries and use 'for all entries' varaiant of the select query. Check whether you can create and use indexes in ur queries.
    Thanks and Regards,
    Saurabh Chhatre

  • IS NOT NULL and performance

    I have a performance issue with a query - it would be something like -
    select col1,col2, sum(col3), get_val(col_4)
    from table1
    where
    get_val(col_4) is not null
    group by col1,col2, get_val(col_4)
    I have simplified this but it is something similar. This works great - performance is great. Now I commented out the where clause as I needed to populate null values - and that's it the query does not retrieve the resultset - it keeps running forever. With the where clause it comes back in 60 seconds. There is only one row out of 560 rows that has null value for col_4 which i need to display.
    Any help is appreciated.

    The only difference I notice between the two sqls is HASH(UNIQUE) -
    with IS NOT NULL in where clause -
    SELECT STATEMENT     ALL_ROWS     1598     1     209
    HASH(UNIQUE)          1598     1     209
    HASH(GROUP BY)          1598     1     209
    When is not null is removed from the where clause -
    SELECT STATEMENT     ALL_ROWS     1598     1     206
    HASH(GROUP BY)          1598     1     206          
    I'm guessing that the index is being used in the first scenario and not in the second. Any idea/suggestion as to how to over come this?          
    Thanks

  • Issues with WebForm performance

    Hi,
    We had migrated a new application from UAT to PROD and we encounter webform performance issues with the following actions..
    After login, the first form you open it is
    always slow. After this you can switch from one form to another without a
    delay.
    Then once you change any data – the next time
    you access a form it gets delayed.
    The point to be noted is, it doesnt have any performance issues in the UAT environment and the configuration settings,essbase cache settings are all the same. We did try to move the EPM system to a new server to see if this is a hardware issue but no luck, the performance issues still exist. The consumption of the CPU/memory has been checked and it is proved that the form opening delay has nothing to do with lack of memory.
    The JVM head settings is set up at 4GB which is infact higher than that of the UAT environment(2GB).
    runs on Windows server2008,11.1.2.1.600 EPM serve, has planning,reporting,foundation on one server (32GB ram) and essbase on another server (32GB ram). Any help is appreciated.
    Please find attached the planning logs below and there is nothing mentioned in the hyperionplanning error logs.-----------------------------------------------------------------------------------------------------------------------------------------------------------------
    <Nov 5, 2013 8:05:43 PM CET> <Info> <Security> <BEA-090905> <Disabling CryptoJ JCE Provider self-integrity check for better startup performance. To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true>
    <Nov 5, 2013 8:05:43 PM CET> <Info> <Security> <BEA-090906> <Changing the default Random Number Generator in RSA CryptoJ from ECDRBG to FIPS186PRNG. To disable this change, specify -Dweblogic.security.allowCryptoJDefaultPRNG=true>
    <Nov 5, 2013 8:05:44 PM CET> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with Oracle JRockit(R) Version R28.0.2-11-135406-1.6.0_20-20100624-2119-windows-x86_64 from Oracle Corporation>
    <Nov 5, 2013 8:05:46 PM CET> <Info> <Management> <BEA-141107> <Version: WebLogic Server 10.3.4.0  Fri Dec 17 20:47:33 PST 2010 1384255 >
    <Nov 5, 2013 8:05:48 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING>
    <Nov 5, 2013 8:05:48 PM CET> <Info> <WorkManager> <BEA-002900> <Initializing self-tuning thread pool>
    <Nov 5, 2013 8:05:48 PM CET> <Notice> <Log Management> <BEA-170019> <The server log file C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\Planning0\logs\Planning0.log is opened. All server side log events will be written to this file.>
    <Nov 5, 2013 8:06:22 PM CET> <Notice> <Security> <BEA-090082> <Security initializing using security realm myrealm.>
    <Nov 5, 2013 8:06:28 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STANDBY>
    <Nov 5, 2013 8:06:28 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING>
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Calling getDomainConfiguration()
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Calling getRuntimeService()
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
      return com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean
      return com.bea:Name=EPMSystem,Type=Domain
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Domain location is 'C:\Oracle\Middleware\user_projects\domains\EPMSystem'
    Calling getRuntimeService()
      return com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Calling getConnection()
      return weblogic.management.jmx.mbeanserver.WLSMBeanServer@327b36fb
    Checking C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\Planning0\registry_update.xml file
    EPM_ORACLE_HOME: C:\Oracle\Middleware\EPMSystem11R1
    Template for PLANNING#11.1.2.0: C:\Oracle\Middleware\EPMSystem11R1\common\templates\applications\epm_planning_11.1.2.1.jar
    Dependencies for C:\Oracle\Middleware\EPMSystem11R1\common\templates\applications\epm_planning_11.1.2.1.jar: []
    BPMUI shared webapp not referenced from PLANNING#11.1.2.0
    Application name: PLANNING#11.1.2.0
    Application source: HyperionPlanning.ear
    Server name: Planning0
    Server port: 8300
    Server SSL port: 8343
    Application context: HyperionPlanning
    Registry product type: PLANNING_PRODUCT
    Registry physical web application type: PLANNING_WEBAPP
    weblogic.Name property is 'Planning0', seems to be WebLogic mode
    registry.isRegistryDatabaseCreated()true
    Registry was initialized sucessfully
    Executing pre custom update for PLANNING#11.1.2.0
    EPM_ORACLE_INSTANCE: C:\Oracle\Middleware\user_projects\epmsystem1
    Physical Web App found
    Web app already linked to some application server: false
    The registry was not modifyed because it already containse all sturctures
    Web app is already linked to the logical web app
    No needs to run custom updater for PLANNING#11.1.2.0
    loggingUpdatePLANNING.block file exist or the system is running in the Fusion mode, skipping logging.xml configuration
    Planning locale: en_US
    <Nov 5, 2013 8:06:39 PM CET> <Notice> <Log Management> <BEA-170027> <The Server has established connection with the Domain level Diagnostic Service successfully.>
    <Nov 5, 2013 8:06:39 PM CET> <Notice> <Cluster> <BEA-000197> <Listening for announcements from cluster using unicast cluster messaging>
    <Nov 5, 2013 8:06:39 PM CET> <Notice> <Cluster> <BEA-000133> <Waiting to synchronize with other running members of Planning.>
    <Nov 5, 2013 8:07:09 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to ADMIN>
    <Nov 5, 2013 8:07:09 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING>
    <Nov 5, 2013 8:07:09 PM CET> <Notice> <Cluster> <BEA-000162> <Starting "async" replication service with remote cluster address "null">
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090171> <Loading the identity certificate and private key stored under the alias DemoIdentity from the jks keystore file C:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\DemoIdentity.jks.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090169> <Loading trusted certificates from the jks keystore file C:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\DemoTrust.jks.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090169> <Loading trusted certificates from the jks keystore file C:\Oracle\Middleware\jrockit_160_20\jre\lib\security\cacerts.>
    <Nov 5, 2013 8:07:10 PM CET> <Alert> <Security> <BEA-090152> <Demo trusted CA certificate is being used in production mode: [
      Version: V3
      Subject: CN=CACERT, OU=FOR TESTING ONLY, O=MyOrganization, L=MyTown, ST=MyState, C=US
      Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
      Key:  Sun RSA public key, 512 bits
      modulus: 9550192877869244258838480703390456015046425375252278279190673063544122510925482179963329236052146047356415957587628011282484772458983977898996276815440753
      public exponent: 65537
      Validity: [From: Thu Mar 21 21:12:27 CET 2002,
                   To: Tue Mar 22 21:12:27 CET 2022]
      Issuer: CN=CACERT, OU=FOR TESTING ONLY, O=MyOrganization, L=MyTown, ST=MyState, C=US
      SerialNumber: [    33f10648 fcde0deb 4199921f d64537f4]
    Certificate Extensions: 1
    [1]: ObjectId: 2.5.29.15 Criticality=true
    KeyUsage [
      Key_CertSign
      Algorithm: [MD5withRSA]
      Signature:
    0000: 9D 26 4C 29 C8 91 C3 A7   06 C3 24 6F AE B4 F8 82  .&L)......$o....
    0010: 80 4D AA CB 7C 79 46 84   81 C4 66 95 F4 1E D8 C4  .M...yF...f.....
    0020: E9 B7 D9 7C E2 23 33 A4   B7 21 E0 AA 54 2B 4A FF  .....#3..!..T+J.
    0030: CB 21 20 88 81 21 DB AC   90 54 D8 7D 79 63 23 3C  .! ..!...T..yc#<
    ] The system is vulnerable to security attacks, since it trusts certificates signed by the demo trusted CA.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=thawte Primary Root CA - G3,OU=(c) 2008 thawte\, Inc. - For authorized use only,OU=Certification Services Division,O=thawte\, Inc.,C=US". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=T-TeleSec GlobalRoot Class 3,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=T-TeleSec GlobalRoot Class 2,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R3". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "OU=Security Communication RootCA2,O=SECOM Trust Systems CO.\,LTD.,C=JP". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=VeriSign Universal Root Certification Authority,OU=(c) 2008 VeriSign\, Inc. - For authorized use only,OU=VeriSign Trust Network,O=VeriSign\, Inc.,C=US". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=KEYNECTIS ROOT CA,OU=ROOT,O=KEYNECTIS,C=FR". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=GeoTrust Primary Certification Authority - G3,OU=(c) 2008 GeoTrust Inc. - For authorized use only,O=GeoTrust Inc.,C=US". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure[3]" is now listening on 127.0.0.1:8343 for protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure[1]" is now listening on fe80:0:0:0:0:5efe:a53:4816:8343 for protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure[4]" is now listening on 0:0:0:0:0:0:0:1:8343 for protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 10.83.72.22:8300 for protocols iiop, t3, CLUSTER-BROADCAST, ldap, snmp, http.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "Default[3]" is now listening on 127.0.0.1:8300 for protocols iiop, t3, CLUSTER-BROADCAST, ldap, snmp, http.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "Default[4]" is now listening on 0:0:0:0:0:0:0:1:8300 for protocols iiop, t3, CLUSTER-BROADCAST, ldap, snmp, http.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "Default[2]" is now listening on fe80:0:0:0:0:ffff:ffff:fffe:8300 for protocols iiop, t3, CLUSTER-BROADCAST, ldap, snmp, http.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "Default[1]" is now listening on fe80:0:0:0:0:5efe:a53:4816:8300 for protocols iiop, t3, CLUSTER-BROADCAST, ldap, snmp, http.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure[2]" is now listening on fe80:0:0:0:0:ffff:ffff:fffe:8343 for protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure" is now listening on 10.83.72.22:8343 for protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Nov 5, 2013 8:07:10 PM CET> <Warning> <Server> <BEA-002611> <Hostname "WIPLPRD01.svc.unicc.org", maps to multiple IP addresses: 10.83.72.22, 0:0:0:0:0:0:0:1>
    <Nov 5, 2013 8:07:10 PM CET> <Notice> <WebLogicServer> <BEA-000330> <Started WebLogic Managed Server "Planning0" for domain "EPMSystem" running in Production Mode>
    <Nov 5, 2013 8:07:12 PM CET> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING>
    <Nov 5, 2013 8:07:12 PM CET> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
    using java.library.path: C:\Oracle\Middleware\EPMSystem11R1/products/Planning/lib64;C:\Oracle\Middleware\EPMSystem11R1/bin;C:\Oracle\Middleware\EPMSystem11R1/common/EssbaseRTC-64/11.1.2.0/bin;C:\Oracle\MIDDLE~1\patch_wls1034\profiles\default\native;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\native\win\x64;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\bin;C:\Oracle\MIDDLE~1\modules\ORGAPA~1.1\bin;C:\Oracle\MIDDLE~1\JROCKI~1\jre\bin;C:\Oracle\MIDDLE~1\JROCKI~1\bin;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\native\win\x64\oci920_8
    EPM_ORACLE_HOME (C:\Oracle\Middleware\EPMSystem11R1) is set from JVM property "EPM_ORACLE_HOME".
    using Java property for Hyperion Home C:\Oracle\Middleware\EPMSystem11R1
    EPM_ORACLE_INSTANCE (C:\Oracle\Middleware\user_projects\epmsystem1) is set from JVM property[EPM_ORACLE_INSTANCE].
    Reaquired task list lease: Tue Nov 05 20:11:49 CET 2013: 1383678709156
    Seeking ESAPI.properties
      Found in 'org.owasp.esapi.resources' directory: C:\Oracle\Middleware\EPMSystem11R1\products\Planning\config\esapi\ESAPI.properties
    Loaded 'ESAPI.properties' properties file
    Seeking validation.properties
      Found in 'org.owasp.esapi.resources' directory: C:\Oracle\Middleware\EPMSystem11R1\products\Planning\config\esapi\validation.properties
    Loaded 'validation.properties' properties file
    Seeking antisamy-esapi.xml
      Found in 'org.owasp.esapi.resources' directory: C:\Oracle\Middleware\EPMSystem11R1\products\Planning\config\esapi\antisamy-esapi.xml
    EnterData_Inner Processing Time:424
    2013-11-05 20:14:47,454 INFO Thread-51 calcmgr.launch - Date/Time Started: 2013/11/05:20:14:47.452 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: WPA_Count By Planning user: wipoadmin Values entered for run-time prompts: [Variable] Wrk_Scenario:"Work_Plan_2014"[Variable] Funds:"Regular"[Variable] Units:"0001"
    - Date/Time Started: 2013/11/05:20:14:47.452 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: WPA_Count By Planning user: wipoadmin Values entered for run-time prompts: [Variable] Wrk_Scenario:"Work_Plan_2014"[Variable] Funds:"Regular"[Variable] Units:"0001"
    2013-11-05 20:14:54,066 INFO Thread-51 calcmgr.launch - Date/Time Ended: 2013/11/05:20:14:54.066 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: WPA_Count By Planning user: wipoadmin.
    - Date/Time Ended: 2013/11/05:20:14:54.066 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: WPA_Count By Planning user: wipoadmin.
    EnterData_Inner Processing Time:64
    EnterData_Inner Processing Time:15
    EnterData_Inner Processing Time:359
    EnterData_Inner Processing Time:2
    EnterData_Inner Processing Time:53
    EnterData_Inner Processing Time:4
    EnterData_Inner Processing Time:7
    EPM_ORACLE_INSTANCE (C:\Oracle\Middleware\user_projects\epmsystem1) is set from JVM property[EPM_ORACLE_INSTANCE].
    EPM_ORACLE_INSTANCE (C:\Oracle\Middleware\user_projects\epmsystem1) is set from JVM property[EPM_ORACLE_INSTANCE].
    EPM_ORACLE_INSTANCE (C:\Oracle\Middleware\user_projects\epmsystem1) is set from JVM property[EPM_ORACLE_INSTANCE].
    Setting HBR Mode to: 2
    In lookupBRLWA()
    Found HBR product = ESSBASE_PRODUCT
    Found HBR product = ESSBASE_PRODUCT
    Found HBR product = ESSBASE_PRODUCT
    HBR LWA Component = Default
    Default HBR = http://WIPLPRD01.svc.unicc.org:19000/eas
    In getDBDetails()
    Found HBR product = ESSBASE_PRODUCT
    In lookupBRLWA()
    Found HBR product = ESSBASE_PRODUCT
    Found HBR product = ESSBASE_PRODUCT
    =2013-11-05 20:35:08,234 WARN [ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' com.hyperion.hbr.security.HbrSecurityAPI - Error retrieving user by identity
    - Error retrieving user by identity
    Embedded HBR initialized.
    EnterData_Inner Processing Time:6
    EnterData_Inner Processing Time:867
    [Tue Nov 05 20:35:33 CET 2013] Planning successfully notified HBR repository.
    EnterData_Inner Processing Time:7
    2013-11-05 20:40:38,613 INFO Thread-67 calcmgr.launch - Date/Time Started: 2013/11/05:20:40:38.606 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: NonPersonnel_Calc By Planning user: wipoadmin Values entered for run-time prompts: [Variable] Funds:"Regular"[Variable] Units:"0001"[Variable] Wrk_Scenario:"Work_Plan_2014"
    - Date/Time Started: 2013/11/05:20:40:38.606 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: NonPersonnel_Calc By Planning user: wipoadmin Values entered for run-time prompts: [Variable] Funds:"Regular"[Variable] Units:"0001"[Variable] Wrk_Scenario:"Work_Plan_2014"
    2013-11-05 20:40:47,241 INFO Thread-67 calcmgr.launch - Date/Time Ended: 2013/11/05:20:40:47.241 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: NonPersonnel_Calc By Planning user: wipoadmin.
    - Date/Time Ended: 2013/11/05:20:40:47.241 CET Server/Application/Database: localhost/1415_WP/AWP Business Rule Name: NonPersonnel_Calc By Planning user: wipoadmin.
    EnterData_Inner Processing Time:44
    EnterData_Inner Processing Time:2
    EnterData_Inner Processing Time:525
    EnterData_Inner Processing Time:1
    Reaquired task list lease: Tue Nov 05 20:41:49 CET 2013: 1383680509246

    I already replied there but it seems no moderator is willing to approve my reply so it never shows up.
    So I'll try replying in here instead:
    I never thought it could be an emulator issue, I thought I had done something wrong to begin with. So I take having performance issues with tiled layer is not a common problem I suppose?
    I'm using MOTODEV SDK platform, A1200 model (motorola).

  • Apple DVI to Video Adapter performance issues in Lion

    I'm an active Apple DVI to Video Adapter user for a couple of years already and everything worked perfectly well until I've upgraded to Lion.
    Everything on my TV screen is lagging now, even mouse pointer, and there is no change to watch any movie like that.
    Does anyone have the same issue? Maybe someone could give me an advice of what could I do in order to improve graphics performance on TV screen using Apple DVI to Video Adapter? I'm using late 2007 MBP with 8600M GT video adapter.

    I am having the exact same problem.  I have a late 2007 MBP. I use it everyday where I teach.  I use the adapter to project on a large white screen using S-Video.  SInce the Lion update, it is very slow and has even completely crashed my computer a few times.  I realize the MBP is getting a bit dated, but the difference between Snow Leopard & Lion is remarkable.

  • Vendor performance report

    hai
    how to create an vendor performance report which display purchase order issued to a vendor, material supplied delivery times, payment terms, prices during a period of time.
        for this report what are the tables and fields we have to use pls give me sample report..
                  thank you..

    Hi,
    Against the RFQ's vendor submit quotations and the Based on the RFQ's data we have to compare the different Vendors with the respective data like terms and prices
    Fetch the data of all RFQ's from EKKO and EKPO tables
    and take the EKKO-KNUMV field and pass to KONV table and fetch the different prices based on the Condition types  for each RFQ and put it in a tabular format  and compare.
    see the sample code
    *& Report  ZRFQ_COMP
    *& Quotation Comparison Report
    REPORT  ZRFQ_COMP no standard page heading line-size 187 line-count 35.
    *&Tables
    Tables : ekko,
             ekpo,
             konp,
             a016.
    *&Data Decleration
    Data : v_pos type i value 19.
    Data : begin of it_rfq occurs 0,
            ebeln type ekko-ebeln,
            ekorg type ekko-ekorg,
            lifnr type ekko-lifnr,
            matnr type ekpo-matnr,
            WERKS type ekpo-WERKS,
           end of it_rfq.
    Data : begin of it_a016 occurs 0,
            ebeln type ekko-ebeln,
            knumh type knumh,
           end of it_a016.
    Data : begin of it_a363 occurs 0,
            werks type werks,
            lifnr type lifnr,
            matnr type matnr,
            knumh type knumh,
           end of it_a363.
    Data : begin of it_pr_details occurs 0,
            knumh type knumh,
            kschl type kschl,
            kbetr type kwert,
           end of it_pr_details.
    Data : begin of it_final occurs 0,
            ebeln type ebeln,
            lifnr type lifnr,
            name1 type lfa1-name1,
            pb00  type kbetr,
            zpac  type kbetr,
            zb00  type kbetr,
            ZIN1  type kbetr,
            JEC1  type kbetr,
            JHX1  type kbetr,
            JMOP  type kbetr,
            JMX1  type kbetr,
            JMX3  type kbetr,
            JSEP  TYPE KBETR,
            JVRD  type kbetr,
           end of it_final.
    Data : begin of it_vendorname occurs 0,
            lifnr type lifnr,
            name1 type lfa1-name1,
           end of it_vendorname.
    *&Selection Screen
    Selection-screen: begin of block blk1 with frame title text-001.
      parameters     : p_matnr like ekpo-matnr obligatory.
      select-options : s_ebeln for ekko-ebeln,
                       s_ekorg for ekko-ekorg,
                       s_lifnr for ekko-lifnr.
    Selection-screen: end of block blk1.
    *&Start-of-Selection.
    Start-of-selection.
      Select ekko~ebeln
             ekko~ekorg
             ekko~lifnr
             ekpo~matnr
             ekpo~werks
        into table it_rfq
        from ekko
       inner join ekpo
          on ekkoebeln eq ekpoebeln
        where ekko~ebeln in s_ebeln
          and ekko~ekorg in s_ekorg
          and ekko~lifnr in s_lifnr
          and ekpo~matnr eq p_matnr
          and ekko~bstyp eq 'A'.
      if sy-subrc eq 0.
    *--> Condition number from A tables.
      Perform get_connum.
    *--> Getting the Pricing Details from Konp Table.
      Perform get_prices.
    *--> Populate Vendor Name.
      Perform pop_vendor_name.
    *--> Populating the Final Internal table for Report.
      Perform pop_final_tab.
      else.
       message 'Purchase Document does not exist' type 'E'.
      endif.
    *&End-of-Selection.
    End-of-Selection.
    write :/ sy-vline,
           2 'Vendor Number',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 1.
      write at v_pos it_final-lifnr.
      v_pos = v_pos + 35.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Gross Price',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-pb00.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Packing & Forward',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-zpac.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Surcharge',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-zb00.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Installation',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-zin1.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Ed cess on BED%',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-jec1.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'A/P Secess set off',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-jhx1.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Basic Excise Duty',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-zpac.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'A/P BED set off',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-jmx1.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Ecess % set off',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-jmx3.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'Sec ED Cess on BED',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-jsep.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    write :/ sy-vline,
           2 'VAT%',
           19 sy-vline.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 20.
      write at v_pos it_final-jvrd.
      v_pos = v_pos + 16.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    *&Top-of-Page.
    Top-of-Page.
    format color 1.
    Write: 'Material Number :' color 1, p_matnr color 1.
    loop at it_final.
      v_pos = v_pos + 1.
      v_pos = v_pos + 35.
    endloop.
    write at: /(v_pos) sy-uline,/ sy-vline,2 'Vendor Name'.
    v_pos = 19.
    loop at it_final.
      write at v_pos sy-vline.
      v_pos = v_pos + 1.
      write at v_pos it_final-name1.
      v_pos = v_pos + 35.
    endloop.
    write at: v_pos sy-vline,
              /(v_pos) sy-uline.
    *&      Form  get_connum
          Condition number from A tables
    form get_connum .
        Select EVRTN
               knumh
          from a016
          into table it_a016
           for all entries in it_rfq
         where EVRTN eq it_rfq-ebeln.
        Select werks
               lifnr
               matnr
               knumh
          from a363
          into table it_a363
           for all entries in it_rfq
         where werks eq it_rfq-werks
           and lifnr eq it_rfq-lifnr
           and matnr eq it_rfq-matnr.
    endform.                    " get_connum
    *&      Form  get_prices
          Getting the Pricing Details from Konp Table.
    form get_prices .
      if not it_a016[] is initial.
        select knumh
               kschl
               kbetr
          from konp
          into table it_pr_details
           for all entries in it_a016
         where knumh eq it_a016-knumh.
      endif.
      if not it_a363[] is initial.
        select knumh
               kschl
               kbetr
          from konp
    appending table it_pr_details
           for all entries in it_a016
         where knumh eq it_a016-knumh.
      endif.
    endform.                    " get_prices
    *&      Form  pop_final_tab
          Populating the Final Internal table for Report
    form pop_final_tab .
    data : l_subrc like sy-subrc.
      sort it_a016 by ebeln.
      loop at it_rfq.
        clear l_subrc.
        read table it_a016 with key ebeln = it_rfq-ebeln
        binary search.
        if sy-subrc eq 0.
          loop at it_pr_details where knumh eq it_a016-knumh.
            it_final-ebeln = it_rfq-ebeln.
            it_final-lifnr = it_rfq-lifnr.
            read table it_vendorname with
            key lifnr = it_rfq-lifnr.
            it_final-name1 = it_vendorname-name1.
            case it_pr_details-kschl.
            when 'PBOO'.
              it_final-pb00 = it_pr_details-kbetr.
              if it_pr_details-kbetr eq 0.
               clear it_final.
               continue.
              endif.
            when 'ZPAC'.
              it_final-zpac = it_pr_details-kbetr.
            when 'ZB00'.
              it_final-ZB00 = it_pr_details-kbetr.
            when 'ZIN1'.
              it_final-ZIN1 = it_pr_details-kbetr.
            endcase.
          endloop.
        else.
          l_subrc = sy-subrc.
        endif.
        read table it_a363 with key lifnr = it_rfq-lifnr
                                    werks = it_rfq-werks
                                    matnr = it_rfq-matnr.
        if sy-subrc eq 0.
          loop at it_pr_details where knumh eq it_a016-knumh.
            it_final-ebeln = it_rfq-ebeln.
            it_final-lifnr = it_rfq-lifnr.
            read table it_vendorname with
            key lifnr = it_rfq-lifnr.
            it_final-name1 = it_vendorname-name1.
            case it_pr_details-kschl.
            when 'JEC1'.
              it_final-JEC1 = it_pr_details-kbetr.
            when 'JHX1'.
              it_final-JHX1 = it_pr_details-kbetr.
            when 'JMOP'.
              it_final-JMOP = it_pr_details-kbetr.
            when 'JMX1'.
              it_final-JMX1 = it_pr_details-kbetr.
            when 'JMX3'.
              it_final-JMX3 = it_pr_details-kbetr.
            when 'JSEP'.
              it_final-JSEP = it_pr_details-kbetr.
            when 'JVRD'.
              it_final-JVRD = it_pr_details-kbetr.
            endcase.
          endloop.
        elseif l_subrc ne 0.
       continue.
        endif.
        append it_final.
        clear  it_final.
      endloop.
    endform.                    " pop_final_tab
    *&      Form  pop_vendor_name
          Populate Vendor Name
    form pop_vendor_name .
      if not it_rfq[] is initial.
      Select lifnr
             name1
        from lfa1
        into table it_vendorname
       where lifnr eq it_rfq-lifnr.
      endif.
    endform.                    " pop_vendor_name
    Reward points if useful
    Regards
    Anji

  • FI-CA events to improve performance

    Hello experts,
    Does anybody use the FI-CA events to improve the extraction performance for datasources 0FC_OP_01 and 0FC_CI_01 (open and cleared items)?
    It seems that this specific exits associated to BW events have been developped especially to improve performance.
    Any documentation, guide should be appreciate.
    Thanks.
    Thibaud.

    Thanks to all for the replies
    @Sybrand
    Please answer first whether the column is stored in a separate lobsegment.
    No. Table,Index,LOB,LOB index uses the same TS. I missed adding this point( moving to separate TS) as part of table modifications.
    @Hemant
    There's a famous paper / blog post about CLOBs and Database Flashback. If I find it, I'll post the URL.
    Is this the one you are referring to
    http://laimisnd.wordpress.com/2011/03/25/lobs-and-flashback-database-performance/
    By moving the CLOB column to different block size , I will test the performance improvement it gives and will share the results.
    We dont need any data from this table. XML file contains details about finger prints and once the application server completes the job , XML data is deleted from this table.
    So no need of backup/recovery operations for this table. Client will be able to replay the transactions if any problem occurs.
    @Billy
    We are not performing XML parsing on DB side. Gets the XML data from client -> insert into table -> client selects from table -> Upon successful completion of the Job from client ,XML data gets deleted.
    Regarding binding of LOB from client side, will check on that side also to reduce round trips.
    By changing the blocksize, I can keep db_32K_cache_size=2G and keep this table in CACHE. If I directly put my table to CACHE, it will age out all other operation from buffer which makes things worse for us.
    This insert is part of transaction( Registration of a finger print) and this is the only statement taking time as of now compared to other statements in the transaction.
    Thanks,
    Arun

  • Report performance is very slow

    Hi all,
    I have a table with 25 million rows. I create a report on this table in which i need to use the following expression
    ifnull(abc_accr_int_val,0)+ifnull(xyz_mar_val_lcy,0)
    and this experession is group by asset description but the report output time is very high.Further there is no index on these columns in the database.
    Please guide me that did my approach is right ??? if no what is the right approach
    Regards

    Hi,
    Thanks for such a beautiful and informative answers I really appriciated it.
    I catch the problem and now want to share with U. As u know my prompt is on Date Column but I dont want to show this coloumn in my report.I only want that a user give a date and two columns are shown in report 1) asset_desc 2) total sum (which is sum of 2 columns as i discussed in this thread).
    Now before...after creating the prompt on Date field I edit the report view and delete this coloumn (Date) because I only want above 2 colomns and not Date column in my report. But all sorting is performed on date bec it is in prompt (where clause). When I add Date column in my report (to show date col) the speed of the report is like sql and data fetching speed same like sql. Now tell me is there any way that I delete this col from my report but it exist in answer criteria table ??????
    I have 19 Asset Desc which return by sql and answers request.
    Regards

  • Report Performance is slow

    Hi
    In our production one report is running very slow, for one moth its taking 10 to 12 min earlier it was took only 2 min for month data, we are confused why itu2019s happening. Query is running on multiprovider. On cube we are using only one aggregate and in the query designer we are using Hierarchy(Active) & virtual key figure.
    We have not changed anything recently on the query, why this suddenly report running very slow.
    Please advice 
    Thanks,
    Manu.

    Hi,
    Check whether the Aggregate is up-to-date and whether it is being used by your query or not?
    Also check the number of records as well, if the output is huge then it is obvious that the queries can take more time to run. As you are using Virtual Keyfigure, this generally degrades the query performance.
    Regards,
    rik

  • Report  performance with Hierarchies

    Hi
    How to improve query performance with hierarchies. We have to do lot of navigation's in the query and the volume of data size very big.
    Thanks
    P G

    HI,
    chk this:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1955ba90-0201-0010-d3aa-8b2a4ef6bbb2
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/ce7fb368-0601-0010-64ba-fadc985a1f94
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/4c0ab590-0201-0010-bd9a-8332d8b4f09c
    Query Performance – Is "Aggregates" the way out for me?
    /people/vikash.agrawal/blog/2006/04/17/query-performance-150-is-aggregates-the-way-out-for-me
    ° the OLAP cache is architected to store query result sets and to give all users access to those result sets.
    If a user executes a query, the result set for that query’s request can be stored in the OLAP cache; if that same query (or a derivative) is then executed by another user, the subsequent query request can be filled by accessing the result set already stored in the OLAP cache.
    In this way, a query request filled from the OLAP cache is significantly faster than queries that receive their result set from database access
    ° The indexes that are created in the fact table for each dimension allow you to easily find and select the data
    see http://help.sap.com/saphelp_nw04/helpdata/en/80/1a6473e07211d2acb80000e829fbfe/content.htm
    ° when you load data into the InfoCube, each request has its own request ID, which is included in the fact table in the packet dimension.
    This (besides giving the possibility to manage/delete single request) increases the volume of data, and reduces performance in reporting, as the system has to aggregate with the request ID every time you execute a query. Using compressing, you can eliminate these disadvantages, and bring data from different requests together into one single request (request ID 0).
    This function is critical, as the compressed data can no longer be deleted from the InfoCube using its request IDs and, logically, you must be absolutely certain that the data loaded into the InfoCube is correct.
    see http://help.sap.com/saphelp_nw04/helpdata/en/ca/aa6437e7a4080ee10000009b38f842/content.htm
    ° 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.
    see http://help.sap.com/saphelp_nw04/helpdata/en/33/dc2038aa3bcd23e10000009b38f8cf/content.htm
    Hope it helps!
    tHAK YOU,
    dst

  • Report performance problem

    Hi
    My problem is with performance in reports. The reports I use is 'Reports From SQL Query' and I have the following select statement.
    select * from lagffastadr
    where kommun like :bind_kommun
    and adrniva3 like :bind_adrniva3
    and adrnr like :bind_adrnr
    and adrlitt like :bind_adrlit
    and :bind_show = 1
    this works fine, but I have one big problem. The user may use wildcard to select all, %, this give me a new problem. The table I use contains NULL values. Then we don't get all the rows by using %, we get all that have a value. This can be solved by adding
    where (kommun like :bind_kommun OR kommun IS NULL)
    this will give me all the rows. But, then this will take a long time to evaluate since the sql query don't use the index that I have created. Is there another way to solve this or do I have to change all the NULL values in my database? (I rather not).
    thanks
    /Jvrgen Swensen

    It looks more like a query tuning problem. Please try the SQL, PL/SQL forum.
    You can expect a better answer there.
    Thanx,
    Chetan.

  • Report Performance Issue and Strange Execution Log Data

    Today we have had a report suddenly start taking a long time to execute.
    Looking at the Report Server executionLog3 table/view we have the following information for the query in question. 
     <Connection>
          <ConnectionOpenTime>1</ConnectionOpenTime>
          <DataSets>
            <DataSet>
              <Name>ReportDataset</Name>
              <RowsRead>7</RowsRead>
              <TotalTimeDataRetrieval>150013</TotalTimeDataRetrieval>
              <ExecuteReaderTime>3</ExecuteReaderTime>
            </DataSet>
          </DataSets>
        </Connection>
    Supposedly the time taken to retrieve the data is around 150 seconds.  However, running a profiler trace while running the report in SSRS shows the query executing in under 1 second.  
    Indeed running a profiler trace for anything on the server with a duration greater than 60 seconds isn't returning anything.  I can only assume the above data is wrong when it says 150 seconds to retrieve the data.  IT IS taking that long to run
    the report though - so the question is - where is the time going? 
    Why can't I find a slow query on the server but SSRS thinks there is? 
    LucasF
    EDIT: This was fixed by restarting the report server.  Any ideas on why this might occur? 

    Hi Lucas,
    According to your description, you find the <TotalTimeDataRetrieval> in ExecutionLog3 is larger than the profiler trace time.
    In Reporting Services, to analyze the performance of the report, we usually check the TimeDataRetrieval to find the time we spend on retrieving the data. It’s the time needed for SQL Server to retrieve the data of all datasets in your report. So in your
    scenario, please check if the TimeDataRetrieval is equal to the time in profiler trace.
    Reference:
    More tips to improve performance of SSRS reports
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu
    Qiuyun Yu
    TechNet Community Support

  • Report Performance with Bind Variable

    Getting some very odd behaviour with a report in APEX v 3.2.1.00.10
    I have a complex query that takes 5 seconds to return via TOAD, but takes from 5 to 10 minutes in an APEX report.
    I've narrowed it down to one particular bind. If I hard code the date in it returns in 6 seconds, but if I let the date be passed in from a parameter it takes 5+ minutes again.
    Relevant part of the query (an inline view) is:
    ,(select rglr_lect lect
    ,sum(tpm) mtr_tpm
    ,sum(enrols) mtr_enrols
    from ops_dash_meetings_report
    where meet_ev_date between to_date(:P35_END_DATE,'DD/MM/YYYY') - 363 and to_date(:P35_END_DATE,'DD/MM/YYYY')
    group by rglr_lect) RPV
    I've tried replacing the "to_date(:P35_END_DATE,'DD/MM/YYYY') - 363" with another item which is populated with the date required (and verified by checking session state). If I replace the :P35_END_DATE with an actual date the performance is fine again.
    The weird thing is that a trace file shows me exactly the same Explain Plan as the TOAD Explain where it runs in 5 seconds.
    Another odd thing is that another page in my application has the same inline view and doesn't hit the performance problem.
    The trace file did show some control characters (circumflex M) after each line of this report's query where these weren't anywhere else on the trace queries. I wondered if there was some sort of corruption in the source?
    No problems due to pagination as the result set is only 31 records and all being displayed.
    Really stumped here. Any advice or pointers would be most welcome.
    Jon.

    Don't worry about the Time column, the cost and cardinality are more important to see whther the CBO is making different decisions for whatever reason.
    Remember that the explain plan shows the expected execution plan and a trace shows the actual execution plan. So what you want to do is compare the query with bind variables from an APEX page trace to a trace from TOAD (or sqlplus or whatever). You can do this outside APEX like this...
    ALTER SESSION SET EVENTS '10046 trace name context forever, level 1';Enter and run your SQL statement...;
    ALTER SESSION SET sql_trace=FALSE;This will create a a trace file in the directory returned by...
    SELECT value FROM v$parameter WHERE name = 'user_dump_dest' Which you can use tkprof to format.
    I am assuming that your not going over DB links or anything else slightly unusual?
    Cheers
    Ben

  • Report Performance / Grouptree - Show GroupTree Expanded

    Hi there....
    I'm using Visual Studio / C# for an ASP.net app.
    Requirements are to display customer-created reports placed by admin in virtual IIS directory. This is working fine.
    However, we are experiencing some performance problems on a certain report written against a stored procedure.  When I run the stored procedure interactively, it has subsecond response. Interactive design of report with Crystal 10 displays refresh very quickly. But web page is slow. Every click on grouptree causes the report to regenerate.
    Here are my questions
    1. For performance , Should I simply store data with report, and refresh data upon loading the reportdocument
    2. Are there other options that I can set that do not cause Crystal to refresh upon every keypress/search/ etc.
    3. Can I cause crViewer to display the Group tree as expanded (simliar to asp:treeview1.expandall()
    Thanks!

    Thanks for your response Adam. In the time since I posted this thread, I have been able to exploit some of the features of the report document class, which is very nice in getting report parameters setting authentication etc.
    But the best I could do for my performance / postback issue was to simply use exportOptions to file pdf, excel..
      DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
                ( ( DiskFileDestinationOptions )doc.ExportOptions.DestinationOptions ).DiskFileName = Server.MapPath(_rptPath)
                reportDoc.Export();
    Then, I simply redirect to the newly created pdf
    Can I use crViewer in conjunction with reportDcoument class?

  • Report Performance Issue - Activity

    Hi gurus,
    I'm developing an Activity report using Transactional database (Online real time object).
    the purpose of the report is to list down all contacts related activities and activities NOT related to Contact by activity owner (user id).
    In order to fullfill that requirment I've created 2 report
    1) All Activities related to Contact -- Report A
    pull in Acitivity ID , Activity Type, Status, Contact ID
    2) All Activities not related to Contact UNION All Activities related to Contact (Base report) -- Report B
    to get the list of activities not related to contact i'm using Advanced filter based on result of another request which is I think is the part that slow down the query.
    <Activity ID not equal to any Activity ID in Report B>
    Anyone encountered performance issue due to the advanced filter in analytic before?
    any input is really appriciated
    Thanks in advanced,
    Fina

    Fina,
    Union is always the last option. If you can get all record in one report, do not use union.
    since all records, which you are targeting, are in the activity subject area, it is not nessecery to combine reports. add a column with the following logic
    if contact id is null (or = 'Unspecified') then owner name else contact name
    Hopefully, this is helping.

  • Report performance and data quality

    Hi,
    Can someone help give explanations to following questions :
    1.) Does BW Report show how current is my data?
    2.) What are the reason why the performance of my BW Report is slow?
    3.) What are the reason why my BW Report is have missing data?
    4.) Why is my BW Report have incorrect data?
    5.) Why doesnu2019t my BW Report Data match SAP R/3 Data?
    Thanks,
    Milind
    Please do not raise generic questions across multiple forums
    Edited by: Arun Varadarajan on Apr 9, 2010 2:08 AM

    Milind,
    1.) Does BW Report show how current is my data?
    You should be able to see the data currency when you run in the web - which method are you using - BEx or Web...?
    2.) What are the reason why the performance of my BW Report is slow?
    It could be due to anything - please search the forums for the same on how to identify possible performance bottlenecks
    3.) What are the reason why my BW Report is have missing data?
    It depends - Missing data loads etc etc
    4.) Why is my BW Report have incorrect data?
    You should be knowing that...? I can just say that it has incorrect data because ...." The sun rises in the east...".!!! more akin to asking "Why did the chicken cross the road"
    5.) Why doesnu2019t my BW Report Data match SAP R/3 Data?
    You should ask SAP that question...
    Honestly I am not sure what the reason behind such generic questions are.... if you are looking for answers - then you need to be more specific - if these are more like Interview Questions asked to you - I guess you should be able to answer them or ask further questions to clarify the question further....

Maybe you are looking for