Performance Issue with this code

Hi Gurus,
Can anyone please help tweak the performance of this program.
REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SPREPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]2 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]3 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]4 FOR VBAK-ERDAT.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]5 FOR VBAP-KWMENG.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]6 FOR VBAP-UEPOS.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]7 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP[code]REPORT ZSQ01_AUDITSALESORD4_1.
TABLES: VBAP, MATERIALID, VBAK, VBEP.
SELECTION-SCREEN: BEGIN OF BLOCK PROG WITH FRAME TITLE TEXT-F58.
SELECT-OPTIONS SP$00001 FOR VBAK-VBELN MEMORY ID AUN.
SELECT-OPTIONS SP$00002 FOR VBAP-POSNR MEMORY ID APO.
SELECT-OPTIONS SP$00003 FOR MATERIALID-MATNR_EXT.
SELECT-OPTIONS SP$00004 FOR VBAK-ERDAT.
SELECT-OPTIONS SP$00005 FOR VBAP-KWMENG.
SELECT-OPTIONS SP$00006 FOR VBAP-UEPOS.
SELECT-OPTIONS SP$00007 FOR VBAP-MATWA MEMORY ID MAT.
SELECT-OPTIONS SP$00008 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   KUNNR(10),                                              
   AUGRU(3),                                               
   KZTLF(1),                                               
   FILLER(12),                                             
END OF ITAB2_SALESORD4.
CONSTANTS: C_REASON_VR LIKE VBAK-AUGRU VALUE 'VR',                      
           C_REASON_EM LIKE VBAK-AUGRU VALUE 'EM'.
DATA: L_VBELN TYPE VBFA-VBELN,                             
      L_POSNR TYPE VBFA-POSNN,                             
      L_LVBELN TYPE VBFA-VBELN.                            
DATA: BEGIN OF ITAB_SUPER OCCURS 0,                        
      VBELN TYPE VBAP-VBELN,                               
     POSNR  TYPE VBAP-POSNR,                               
    END OF ITAB_SUPER.
START-OF-SELECTION.
  SELECT VBAK~ERDAT VBAK~VBELN VBAP~KWMENG VBAP~MATNR VBAP~MATWA
           VBAP~POSNR VBAP~PSTYV VBAP~UEPOS VBAP~VBELN VBAP~VRKME
            VBAP~ABGRU MATERIALID~MATNR_EXT MATERIALID~MATNR_INT
        VBAP~Z_PROM_SHP_DT VBAK~AUART VBAP~WERKS VBAK~BSTNK VBAK~KUNNR    VBAK~AUGRU  VBAP~KZTLF  
                              INTO (VBAK-ERDAT , VBAK-VBELN , VBAP-KWMENG , VBAP-MATNR , VBAP-MATWA
       , VBAP-POSNR , VBAP-PSTYV , VBAP-UEPOS , VBAP-VBELN , VBAP-VRKME
        , VBAP-ABGRU  , MATERIALID-MATNR_EXT , MATERIALID-MATNR_INT,
          VBAP-Z_PROM_SHP_DT, VBAK-AUART, VBAP-WERKS, VBAK-BSTNK,
          VBAK-KUNNR, VBAK-AUGRU, VBAP-KZTLF)
    FROM ( VBAK
           INNER JOIN VBAP
           ON VBAP~VBELN = VBAK~VBELN
           INNER JOIN MATERIALID
           ON MATERIALID~MATNR_INT = VBAP~MATNR )
           WHERE VBAK~ERDAT IN SP$00004
             AND VBAK~VBELN IN SP$00001
             AND VBAP~KWMENG IN SP$00005
             AND VBAP~MATWA IN SP$00007
             AND VBAP~POSNR IN SP$00002
             AND VBAP~PSTYV IN SP$00008
             AND VBAP~UEPOS IN SP$00006
             AND MATERIALID~MATNR_EXT IN SP$00003.
SELECT SINGLE VBELN POSNN
       FROM VBFA
       INTO (L_VBELN, L_POSNR)
       WHERE VBELV = VBAK-VBELN AND
       POSNV       = VBAP-POSNR AND
       VBTYP_N     = 'J'.
    IF SY-SUBRC = 0 AND NOT L_VBELN IS INITIAL.
      SELECT SINGLE VBELN
      FROM LIPS
      INTO L_LVBELN
      WHERE VBELN = L_VBELN AND
            POSNR = L_POSNR.
      IF SY-SUBRC NE 0.
        IF NOT VBAP-UEPOS IS INITIAL.                      
          MOVE VBAP-VBELN TO ITAB_SUPER-VBELN.             
          MOVE VBAP-UEPOS TO ITAB_SUPER-POSNR.             
          APPEND ITAB_SUPER.                               
        ENDIF.                                             
        CONTINUE.
      ENDIF.
    ENDIF.
    MOVE VBAK-VBELN TO ITAB2_SALESORD4-VBELN.              
    MOVE VBAK-AUART TO ITAB2_SALESORD4-AUART.              
    MOVE VBAP-POSNR TO ITAB2_SALESORD4-POSNR.              
    MOVE VBAP-WERKS TO ITAB2_SALESORD4-WERKS.              
    MOVE MATERIALID-MATNR_EXT TO ITAB2_SALESORD4-MATNR_EXT.
    MOVE VBAK-ERDAT TO ITAB2_SALESORD4-ERDAT.              
    MOVE VBAP-KWMENG TO ITAB2_SALESORD4-KWMENG.            
    MOVE VBAP-VRKME TO ITAB2_SALESORD4-VRKME.              
    MOVE VBAP-UEPOS TO ITAB2_SALESORD4-UEPOS.              
    MOVE VBAP-MATWA TO ITAB2_SALESORD4-MATWA.              
    MOVE VBAP-PSTYV TO ITAB2_SALESORD4-PSTYV.              
    MOVE VBAP-ABGRU TO ITAB2_SALESORD4-ABGRU.              
    MOVE VBAP-Z_PROM_SHP_DT TO ITAB2_SALESORD4-Z_PROM_SHP_DT.
    MOVE VBAK-BSTNK TO ITAB2_SALESORD4-BSTNK.              
    MOVE VBAK-KUNNR TO ITAB2_SALESORD4-KUNNR.              
    IF VBAK-AUGRU = C_REASON_VR.                           
      MOVE  C_REASON_EM TO ITAB2_SALESORD4-AUGRU.          
    ELSE.                                                  
      MOVE VBAK-AUGRU TO ITAB2_SALESORD4-AUGRU.            
    ENDIF.                                                 
    MOVE VBAP-KZTLF TO ITAB2_SALESORD4-KZTLF.              
    ITAB2_SALESORD4-KWMENG = ITAB2_SALESORD4-KWMENG * 1000.
    WRITE ITAB2_SALESORD4-KWMENG TO ITAB2_SALESORD4-KWMENG 
                    DECIMALS 0 RIGHT-JUSTIFIED.
    OVERLAY ITAB2_SALESORD4-KWMENG WITH '00000000000000000'.
    APPEND ITAB2_SALESORD4.                                
    CLEAR ITAB2_SALESORD4.                                 
  ENDSELECT.
  SORT ITAB2_SALESORD4 BY VBELN POSNR Z_PROM_SHP_DT.       
  SORT ITAB_SUPER BY VBELN POSNR.
  DATA: G_FILE LIKE RLGRAP-FILENAME,
        ZDFLTVAL11(40),
        ZDFLTVAL22(40).
  SELECT SINGLE Z_DFLT_VAL1 Z_DFLT_VAL2 INTO
                    (ZDFLTVAL11,ZDFLTVAL22)
                         FROM ZLE_LOG_DFLT_VAL
                                WHERE LGNUM = ' '
                             AND Z_DFLT_TYP = 'IMAS_SAP_SALESORD4_G1'.
  TRANSLATE ZDFLTVAL22 TO LOWER CASE.
  CONCATENATE ZDFLTVAL11 ZDFLTVAL22 INTO G_FILE.
  OPEN DATASET G_FILE FOR OUTPUT IN TEXT MODE.
  LOOP AT ITAB2_SALESORD4.
    READ TABLE ITAB_SUPER WITH KEY VBELN = ITAB2_SALESORD4-VBELN
                                     POSNR = ITAB2_SALESORD4-POSNR
                                    BINARY SEARCH.         
    IF SY-SUBRC EQ 0.
      CONTINUE.
    ENDIF.
    TRANSFER ITAB2_SALESORD4 TO G_FILE.
  ENDLOOP.
  CLOSE DATASET G_FILE.
[/code]8 FOR VBAP-PSTYV.
SELECTION-SCREEN: END OF BLOCK PROG.
DATA: BEGIN OF ITAB2_SALESORD4 OCCURS 0,
   VBELN(10),
   AUART(4),
   POSNR(6),
   WERKS(4),
   MATNR_EXT(40),
   ERDAT(8),
   KWMENG(19),
   VRKME(3),
   UEPOS(6),
   MATWA(40),
   PSTYV(4),
   ABGRU(2),
   Z_PROM_SHP_DT(8),                                       
   BSTNK(20),                                              
   K

The first SELECT looks a bit shaky. Have you done a performance trace (ST05) to find out where the problem is?
Rob

Similar Messages

  • Performance issue in this code

    public int[][] init(int[][] a, int m, int n){
      for(int j=0; j<n; j++){
        for(int i=0; i<m; i++){
          a[i][j] = i+j;
      return a;
    }Just a technical quest faced in one of the interview...
    There is a performance issue in this code. Can you identify, correct and justify your answer?
    Edited by: EJP on 17/10/2011 20:29

    mithu wrote:
    public int[][] init(int[][] a, int m, int n){
    for(int j=0; j<n; j++){
    for(int i=0; i<m; i++){
    a[i][j] = i+j;
    return a;
    }Just a technical quest faced in one of the interview...
    There is a performance issue in this code. Can you identify, correct and justify your answer?Not a good question at all. There's no performance issue here that can be positively identified by inspection. The only potentially significant one is, as EJP pointed out, loss of locality of reference because of the order of the loops. But even that's not a guarantee, since I don't think array layouts are defined by the spec. We could only determine for sure that that's a performance problem by profiling.

  • Flickr API and cflickr - performance issue with my code.

    I using cflickr to access the Flickr api and display photos in a lightbox. My code is working, but incredibly slow. I'm assuming that I'm going about it in an incorrect way and hoping someone can point out a better way to do what I'm trying to accomplish. My speed issues develop when I'm trying to extract the image descriptions within a loop that is outputing the images to the page.
    Here is an example of the code that I'm using:
    using the following to grab the photos:
    <cfset photos = cflickr.photosets_getPhotos(photoset_id=72157624340881708 , auth_token=token) />
    I am then using the following to loop through the array of photos and and also retrieve the description for each image.
    <div style="width:423px; margin: auto;" id="gallery">
            <cfloop from="1" to="#arraylen(photos.photoset.photo)#" index="i">
                <cfset p = photos.photoset.photo[i] />
                <cfset img_desc = cflickr.photos_getInfo(photo_id=p.id).photo.description />
                <cfset img_desc = replace(img_desc, 'TRIP', '<br />TRIP') />
                <cfset title = photos.photoset.photo[i].title />
                <cfset title = title & "<br />" & img_desc />
                <cfoutput>
                <a href="#cflickr.getPhotoUrl(p, '')#" title="#title#"><img src="#cflickr.getPhotoUrl(p, 's')#"  /></a>
                </cfoutput>
            </cfloop>
        </div>
    The problem with the code is when it is making the request for img_desc inside of the loop to the Flickr api. Each instance of that call is taking on average 300 to 400ms and the array has over 300 items so it times out. Should I be retrieveing all of the image descritpions at once before the loop and if so how would I best link these with image data that they belong with? It seems like I'm going about this in a rather inefficient manner.
    I was hoping that I could call a function that retrieved all of the data that I need in one call, but so far I've been unable to find that.

    ( Grrr... this forum trashes emails better than any application I have ever seen.  Here is what my previous response actually said ...)
    <cfset photos = cflickr.photosets_getPhotos(photoset_id=72157624340881708 , auth_token=token)>
    I cannot say I have used it. But the cfc usage seems to follow the API pretty closely. So I took a quick look at the flickr forums, and one person suggests you can grab the descriptions too by adding the "extras" parameter.
    http://www.flickr.com/groups/api/discuss/72157594456853637/#comment72157623785775034
    So try using:
        <cflickr.photosets_getPhotos(photoset_id=72157624340881708 ,
             auth_token=token, extras="description")>

  • Can you help me with the WHERE clause? Any issue with this code block?

    Hi,
    I am looking for blogs or any document on how to implement a Lookup during data loads in BW.
    The problem is that all those that I find on this site are mostly about u201CLookup in XIu201D
    I have read bits and hints on different postings on this site and this is the best I could do for the scenario shown below:
    I need to add the Chars: Char1, Char2, Char3 to CubeX
    so that I can display the data for these 3 Chars in a report.
    Char1 and Char2 are filled in ODS12 and Char3 is filled in Cube3.
    Can you help me write a routine so that while loading data to CubeX, it will read Char1, Char2, Char3 from ODS12 and Cube3; and make them available in CubeX?
    This is my attempt so far:   continue:
    u201C----
    select /bic/Char1 from /bic/ODS12
    select /bic/Char2 from /bic/ODS12
    select /bic/Char3 from /bic/Cube3
    into result
    WHERE u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026u2026
    and objvers = 'A' .        
    end select.
    u201C----
    1. What should be my WHERE clause?
    2. In the select statement, by studying samples on this where should there be an u201CMu201D in front of the ODS? e.g. select /bic/Char1 from /bic/MODS12
    If so, what is the significance and the other options?
    3. Should this code be in the Start routing of CubeX? Or any other possible location? Also, in the start routine does it matter where within the start routine this code needs to be placed?
    4. Can you please fix this code and add any lines I may be missing?
    Is what I am looking to do refer to as u201Cdoing a lookupu201D?
    Thanks

    ok

  • Performance issue of this code

    Hi folks,
    This report is working fine.But it is taking lot of time if i enter only company code.Could any one suggest me where is the problem.
    kaki
    REPORT  Z1F_RFKEPL00 no standard page heading
            line-size 140
            line-count 65
            message-id Z1.
    TABLES: LFA1,t005t,bsak,bseg,t001,skat.
    data: begin of t_bsak occurs 0,
            bukrs like bsak-bukrs,        "company code
            lifnr like bsak-lifnr,        "Vendor acc number
            augdt like bsak-augdt,        "Clearing date
            AUGBL like bsak-AUGBL,        "Clearing Document
            GJAHR like bsak-GJAHR,        "year
            belnr like bsak-belnr,        "Document number
            BUZEI like bsak-BUZEI,        "Line Item
            budat like bsak-budat,        "Posting Date in the Document
            bldat like bsak-bldat,        "Document date in document
            blart like bsak-blart,        "Document type
            BSCHL like bsak-BSCHL,        "Posting key
            WAERS like bsak-WAERS,        "Currency key
            CPUDT like bsak-cpudt,        "Accounting Document Entry Date
            SHKZG like bsak-shkzg,        "Debit/Credit Indicator
            DMBTR like bsak-dmbtr,        "Amount in local currency
            WRBTR like bsak-wrbtr,        "Amount in document currency
            SGTXT like bsak-sgtxt,        "Item Text
            SAKNR LIKE bsak-saknr,        "G/L Account Number
            hkont like bsak-hkont,        "General Ledger Account
            SKFBT LIKE BSAK-SKFBT,        "Amount Eligible for Cash Discount
            KOSTL LIKE BSEG-KOSTL,        "Cost center
            ktopl like t001-ktopl,        "chart of accounts
            txt20 like skat-txt20,        "Short test for the GL acc
            name1 like lfa1-name1,
            land1 like lfa1-land1,
            landx like t005t-landx,
          end of t_bsak.
    data: begin of t_header occurs 0,
            bukrs like bsak-bukrs,
            hkont like bsak-hkont,
            lifnr like bsak-lifnr,
            waers like bsak-waers,
            land1 like lfa1-land1,
            name1 like lfa1-name1,
            landx like t005t-landx,
          end of t_header.
    data: begin of t_lfa1 occurs 0,
            lifnr like lfa1-lifnr,
            name1 like lfa1-name1,
            land1 like lfa1-land1,
            landx like t005t-landx,
          end of t_lfa1.
    data: t_bseg like t_bsak occurs 0 with header line.
    data: t_data like t_bsak occurs 0 with header line.
    selection-screen begin of block blk1 with frame title text-001.
    select-options: s_lifnr for bsak-lifnr,
                    s_bukrs for bsak-bukrs.
    selection-screen end of block blk1.
    selection-screen begin of block blk2 with frame title text-002.
    parameters s_budat like bsik-budat default sy-datum.
    select-options: s_augdt for bsak-augdt.
    selection-screen end of block blk2.
    selection-screen begin of block blk3 with frame title text-003.
    parameters: stand as checkbox default 'X',
                park as checkbox.
    selection-screen end of block blk3.
    start-of-selection.
      perform process_data.
    top-of-page.
      perform set_page_header.
    *&      Form  process_data
          text
    form process_data.
      data: line like t_bsak occurs 0 with header line.
      data: l_wrbtr(10) type c.
      data: l_debit type bsak-wrbtr,l_credit type bsak-wrbtr,
            l_balance type bsak-wrbtr.
      data:l_hkont(10) type n.
      select BUKRS LIFNR AUGDT AUGBL GJAHR BELNR BUZEI BUDAT BLDAT
              CPUDT WAERS BLART BSCHL SHKZG DMBTR WRBTR SGTXT HKONT SKFBT
             from bsak
             into corresponding fields of table t_bsak
              where
              lifnr in s_lifnr and
              BUKRS in s_bukrs and
              budat le s_budat and                 " Open  items
              augdt in s_augdt order by lifnr.
      if sy-subrc ne 0.
        message i016.
        leave list-processing.
      endif.
      sort t_bsak by BUDAT.
      CHECK NOT t_bsak[] IS INITIAL.
      select MANDT BUKRS LIFNR AUGDT AUGBL GJAHR BELNR
             SHKZG DMBTR WRBTR SGTXT SKFBT KOSTL BSCHL hkont BUZEI
       into corresponding fields of table t_bseg from bseg
                FOR ALL ENTRIES IN t_bsak
                where belnr = t_bsak-belnr and
                      bukrs = t_bsak-bukrs and
                      gjahr = t_bsak-gjahr
                     ORDER BY PRIMARY KEY .
      loop at t_bsak.
    to get vendor name
        select single * from lfa1 where lifnr = t_bsak-lifnr.
        move lfa1-lifnr to t_header-lifnr.
        move lfa1-name1 to t_header-name1.
        move lfa1-land1 to t_header-land1.
        move t_bsak-bukrs to t_header-bukrs.
        move t_bsak-hkont to t_header-hkont.
        move t_bsak-waers to t_header-waers.
        if sy-subrc = 0.
          append t_header.
          clear t_header.
        endif.
    to get vendor country
        loop at t_header.
          select single * from t005t where land1 = t_header-land1 and
                                           SPRAS = 'E'.
          move t005t-landx to t_header-landx.
          if sy-subrc = 0.
            modify t_header.
            clear t_header.
          endif.
        endloop.
        loop at t_bseg where belnr = t_bsak-belnr and
                             bukrs = t_bsak-bukrs and
                             gjahr = t_bsak-gjahr.
          l_hkont = t_bseg-hkont.
    *To get chart of accounts
          select single * from t001 where bukrs = t_bseg-bukrs.
          move t001-ktopl to t_bseg-ktopl.
    *To get short text for the chart of accounts
          select single * from skat where ktopl = t_bseg-ktopl and
                                          saknr = l_hkont and
                                          spras = 'E'.
          t_data-bukrs = t_bsak-bukrs.
          t_data-lifnr = t_bsak-lifnr.
          t_data-augdt = t_bseg-augdt.
          t_data-AUGBL = t_bseg-AUGBL.
          t_data-GJAHR = t_bseg-GJAHR.
          t_data-belnr = t_bsak-belnr.
          t_data-BUZEI = t_bseg-BUZEI.
          t_data-budat = t_bsak-budat.
          t_data-bldat = t_bsak-bldat.
          t_data-blart = t_bsak-blart.
          t_data-BSCHL = t_bseg-BSCHL.
          t_data-WAERS = t_bsak-WAERS.
          t_data-CPUDT = t_bsak-cpudt.
          t_data-SHKZG = t_bseg-shkzg.
          t_data-DMBTR = t_bseg-dmbtr.
          t_data-WRBTR = t_bseg-wrbtr.
          t_data-SGTXT = t_bsak-sgtxt.
          t_data-SAKNR = t_bseg-saknr.
          t_data-hkont = t_bseg-hkont.
          t_data-SKFBT = t_bseg-SKFBT.
          t_data-KOSTL = t_bseg-KOSTL.
          t_data-ktopl = t_bseg-ktopl.
          t_data-txt20 = skat-txt20.
          append t_data.
          clear t_data.
        endloop.
      endloop.
      sort t_header by lifnr.
      delete adjacent duplicates from t_header.
    *Display----
    *to display header
      data: l_buzei type bseg-buzei.
      loop at t_header.
        write:/1(6) t_header-bukrs    color 2,
                7(8) t_header-hkont    color 2,
                18(10) t_header-lifnr   color 2.
        write:/30(10) t_header-name1.
        write:/30(10) t_header-landx.
        uline.
        loop at t_data where lifnr = t_header-lifnr.
          l_wrbtr = t_data-wrbtr.
          if t_data-wrbtr = t_data-skfbt.
            concatenate l_wrbtr '-' into l_wrbtr.
          endif.
          write:/15(11) t_data-BUDAT no-zero    color 7,
                  26(5) t_data-BLART            color 7,
                  30(12) t_data-belnr           color 7,
                  42(16) t_data-BLDAT           color 7,
                  58(5)  t_data-buzei           color 7,
                  63(12)  t_data-BSCHL          color 7,
                  75(9)  t_data-AUGDT           color 7,
                  84(35) t_data-AUGBL           color 7,
                  119(7) t_data-WAERS           color 7,
                  126(12) l_wrbtr               color 7.
          write:/55 t_data-sgtxt.
          write:/60(10) t_data-kostl,
                70(10) t_data-hkont,
                80(20) t_data-txt20.
          clear l_wrbtr.
        endloop.
        write:/1(6) t_data-bukrs    color 2,
               7(8) t_data-hkont    color 2,
               18(10) t_data-lifnr  color 2.
        uline.
        line[] = t_data[].
        loop at line where lifnr = t_header-lifnr.
          if line-shkzg = 'H'.
            l_debit = l_debit + line-wrbtr.
          endif.
          if line-shkzg = 'S'.
            l_credit = l_credit + line-wrbtr.
          endif.
        endloop.
       write:/1(6) t_data-bukrs    color 3,
              7(8) t_data-hkont    color 3,
              18(10) t_data-lifnr  color 3.
        write:/1(6) t_data-bukrs    color 3,
               7(11) t_data-hkont    color 3,
               18(102) t_data-lifnr  color 3.
        l_balance = l_debit -  l_credit.
       write:115(15) l_debit  color 3.   write:135(1) 'D' color 3.
       write:/115(15) l_credit color 3. write:135(1) 'C' color 3.
      for balnce
       write:/90(25) 'Bal.:' color 3.
       write:115(15) l_balance color 3.
        write:120(15) l_debit  color 3.
        write:138(2) 'D' color 3.
        write:/120(15) l_credit color 3.
        write:138(2) 'C' color 3.
      for balnce
        write:/90(00) 'Bal.:' color 3.
        write:120(15) l_balance color 3.
        clear: l_debit,l_credit,l_balance.
        uline.
      endloop.
    endform.                    "process_data
    *&      Form  set_page_header
          text
    FORM set_page_header.
      call function 'Z_REPORT_TITLE'
        EXPORTING
          line_size       = sy-linsz
          sy_title        = 'List of Vendor Line Items'
          uline           = 'X'
          first_page_only = ' '.
      write :1(15)  'Allocation'            color col_heading,
             15(10) 'Pstng'         color col_heading,
             25(5)  'Do'             color col_heading,
             30(10) 'Documnet'          color col_heading,
             40(10) 'Doc'        color col_heading,
             50(8)  'BusA'              color col_heading,
             58(5)  'LIm'        color col_heading,
             63(4)  'PK'         color col_heading,
             67(4)  'S'       color col_heading,
             71(4)  'P'       color col_heading,
             75(7)  'Clrg'       color col_heading,
             82(10) 'Clearing'       color col_heading,
             92(20) 'D/c discount Amnt'       color col_heading,
             112(5) 'Rsn'       color col_heading,
             117(2) 'G'       color col_heading,
             119(7)  'Curr-'       color col_heading,
             126(12) 'Amount in'       color col_heading,
             138(2)  'T'       color col_heading.
      write space.
      write :1(15)  'number'            color col_heading,
             15(10) 'date'            color col_heading,
             25(5)  'ty'      color col_heading,
             30(10) 'number'     color col_heading,
             40(18) 'date'         color col_heading,
             58(5)  ''        color col_heading,
             63(4)  ''         color col_heading,
             67(4)  'I'       color col_heading,
             71(4)  'K'       color col_heading,
             75(7)  'date'       color col_heading,
             82(24) 'doc.no'       color col_heading,
             105(20) 'in LC'       color col_heading,
             112(5) 'code'       color col_heading,
             117(2) 'L'       color col_heading,
             119(7) 'ency'       color col_heading,
             126(12) 'doc.curr.'       color col_heading,
             138(2) 'X'       color col_heading.
      write space.
      uline.
    ENDFORM.                    " set_page_header

    it will better to optimize the below part of your code -
    loop at t_bsak.
    to get vendor name
    select single * from lfa1 where lifnr = t_bsak-lifnr.
    move lfa1-lifnr to t_header-lifnr.
    move lfa1-name1 to t_header-name1.
    move lfa1-land1 to t_header-land1.
    move t_bsak-bukrs to t_header-bukrs.
    move t_bsak-hkont to t_header-hkont.
    move t_bsak-waers to t_header-waers.
    if sy-subrc = 0.
    append t_header.
    clear t_header.
    endif.
    to get vendor country
    loop at t_header.
    select single * from t005t where land1 = t_header-land1 and
    SPRAS = 'E'.
    move t005t-landx to t_header-landx.
    if sy-subrc = 0.
    modify t_header.
    clear t_header.
    endif.
    endloop.
    loop at t_bseg where belnr = t_bsak-belnr and
    bukrs = t_bsak-bukrs and
    gjahr = t_bsak-gjahr.
    l_hkont = t_bseg-hkont.
    *To get chart of accounts
    select single * from t001 where bukrs = t_bseg-bukrs.
    move t001-ktopl to t_bseg-ktopl.
    *To get short text for the chart of accounts
    select single * from skat where ktopl = t_bseg-ktopl and
    saknr = l_hkont and
    spras = 'E'.
    t_data-bukrs = t_bsak-bukrs.
    t_data-lifnr = t_bsak-lifnr.
    t_data-augdt = t_bseg-augdt.
    t_data-AUGBL = t_bseg-AUGBL.
    t_data-GJAHR = t_bseg-GJAHR.
    t_data-belnr = t_bsak-belnr.
    t_data-BUZEI = t_bseg-BUZEI.
    t_data-budat = t_bsak-budat.
    t_data-bldat = t_bsak-bldat.
    t_data-blart = t_bsak-blart.
    t_data-BSCHL = t_bseg-BSCHL.
    t_data-WAERS = t_bsak-WAERS.
    t_data-CPUDT = t_bsak-cpudt.
    t_data-SHKZG = t_bseg-shkzg.
    t_data-DMBTR = t_bseg-dmbtr.
    t_data-WRBTR = t_bseg-wrbtr.
    t_data-SGTXT = t_bsak-sgtxt.
    t_data-SAKNR = t_bseg-saknr.
    t_data-hkont = t_bseg-hkont.
    t_data-SKFBT = t_bseg-SKFBT.
    t_data-KOSTL = t_bseg-KOSTL.
    t_data-ktopl = t_bseg-ktopl.
    t_data-txt20 = skat-txt20.
    append t_data.
    clear t_data.
    endloop.
    endloop.
    You are selecting data from database inside the loop and specially you are populating t_header inside the loop and again looping on the same table to get value of t005t-landx. Here you are updating even those records which are already update by initial loop pass so multiple updation for already updated records.
    Thanks,
    Rajeev

  • Performance issue with this complex query

    Please ignore this thread(post)
    This query fetches a lot of data and takes more than 4 t0 5 hrs to retrieve them.
    I have tried to get the explain plan the display cursor and the TKPROF for the same but then the query utilizes more than 100GB temp space and it fails to generate any.
    What I have is the spool file which is pasted below along with the query.
    Database version: 11g
    I'm looking forward for suggestions how to improve the performance of this statement
    Please ignore this thread(post)
    Edited by: user13319084 on May 30, 2011 12:34 AM

    You provide no information that can be used in answering your question on how to improve the query.
    In absence of technical information, all that we can discuss is conceptual issues. Like why is the query that complex? A common answer is that the underlying data model lacks the intelligence and this now requires the intelligence to be build into the query.
    You need to look at the data model and the query in order to address this performance problem - and make sure that the actual business requirements is clearly identified and understood.

  • Performance issue with this query.

    Hi Experts,
    This query is fetching 500 records.
    SELECT
    RECIPIENT_ID ,FAX_STATUS
    FROM
    FAX_STAGE WHERE LOWER(FAX_STATUS) like 'moved to%'
    Execution Plan
    | Id  | Operation                   | Name                | Rows  | Bytes | Cost (%CPU)|
    |   0 | SELECT STATEMENT            |                     |   159K|    10M|  2170   (1)|
    |   1 |  TABLE ACCESS BY INDEX ROWID| FAX_STAGE           |   159K|    10M|  2170   (1)|
    |   2 |   INDEX RANGE SCAN          | INDX_FAX_STATUS_RAM | 28786 |       |   123   (0)|
    Note
       - 'PLAN_TABLE' is old version
    Statistics
              1  recursive calls
              0  db block gets
             21  consistent gets
              0  physical reads
              0  redo size
            937  bytes sent via SQL*Net to client
            375  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             19  rows processed
    Total number of records in the table.
    SELECT COUNT(*) FROM FAX_STAGE--3679418
    Distinct reccords are low for this column.
    SELECT DISTINCT FAX_STATUS FROM FAX_STAGE;
    Completed
    BROKEN
    Broken - New
    moved to - America
    MOVED to - Australia
    Moved to Canada and australia
    Functional based indexe on FAX_STAGE(LOWER(FAX_STATUS))
    stats are upto date.
    Still the cost is high
    How to improve the performance of this query.
    Please help me.
    Thanks in advance.

    With no heavy activity on your fax_stage table a bitmap index might do better - see  CREATE INDEX
    I would try FTS (Full Table Scan) first as 6 vs. 3679418 is low cardinality for sure so using an index is not very helpful in this case (maybe too much Exadata oriented)
    There's a lot of web pages where you can read: full table scans are not always evil and indexes are not always good or vice versa Ask Tom &amp;quot;How to avoid the full table scan&amp;quot;
    Regards
    Etbin

  • Performance issue with JavaFX code

    Hi, I'm experienced in Java, but not in JavaFX. I wrote simple LIFE cellular automata, it has two options: randomize cells, and take a step forward in simulation. My problem is that following simulation steps are slower and slower. NetBeans profiler suggests that if I take more steps in simulation then get method's self time (get$impl$$bound$int__int method exactly) is getting slower in time -- at first it takes about 0.054 (270/5000) ms per call, but later the average jumps to 0.55 (12709/23000) ms per call. I don't really know how bind mechanism works, could this be a bind issue? Maybe I create many unneccessary objects? Here's the code:
    import java.lang.Math;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.paint.Color;
    import javafx.scene.Scene;
    import javafx.scene.shape.Rectangle;
    import javafx.stage.Stage;
    import javafx.ext.swing.SwingButton;
    import java.lang.System;
    var tab : CellTable = CellTable {
         width: 10
         height: 10
    def rects =
    for (i in [0..tab.width-1]) {
         for (j in [0..tab.height-1]) {
              Rectangle {
                   x: 20 * i + 1
                   y: 20 * j + 1
                   width: 17
                   height: 17
                   stroke: Color.RED
                   fill: bind if (tab.get(i, j)) Color.RED else Color.WHITE;
    def stage = Stage {
         title: "LIFE"
         resizable: false
         scene: Scene {
              width: 200
              height: 250
              content: [
                   rects,
                   SwingButton {
                        text: "random!"
                        translateX: 0
                        translateY: 210
                        width: 100
                        action: function() {
                             tab.random();
                   SwingButton {
                        text: "next>"
                        translateX: 100
                        translateY: 210
                        width: 100
                        action: function() {
                             tab.next();
    class CellTable {
         postinit {
              for (i in [0..width-1]) {
                   for (j in [0..height-1]) {
                        insert false into cells;
                        insert false into tmp;
              xrange = [0..width-1];
              yrange = [0..height-1];
         var cells : Boolean[];
         var tmp : Boolean[];
         var width : Integer;
         var height : Integer;
         var xrange : Integer[];
         var yrange : Integer[];
         function random() {
              for (x in [0..width-1]) {
                   for (y in [0..height-1]) {
                        set(x, y, Math.random() < 0.5);
         function next() {
              for (x in xrange) {
                   for (y in yrange) {
                        var ct = 0;
                        for (xx in [-1..1]) {
                             for (yy in [-1..1]) {
                                  if (get((x + width + xx) mod width, (y + height + yy) mod height)) {
                                       ++ct;
                        if (get(x,y)) {
                             --ct;
                             tmp[idx(x,y)] = (ct == 2 or ct == 3);
                        } else {
                             tmp[idx(x,y)] = (ct == 3);
              for (x in xrange) {
                   for (y in yrange) {
                        set(x, y, tmp[idx(x, y)]);
         function idx(x : Integer, y : Integer) : Integer {
              return x * height + y;
         bound function get(x : Integer, y : Integer) : Boolean {
              return cells[idx(x,y)];
         function set(x : Integer, y : Integer, b : Boolean) {
              cells[idx(x,y)] = b;
    }I would be very grateful if anyone could tell me what could be the issue or at least what should I check to figure it out.

    I tried to solve your problem.
    First, I eliminated the keyword 'bound' from the function in CellTable class. Then I rewrite the value of 'fill' attribute in the Rectangle as below :
    fill: bind if (tab.cells[tab.idx(i, j)]) Color.RED else Color.WHITE;As a result, I found your code ran faster than before. But I don't know why it became so.
    Could it be that the 'bound function' creates some new Boolean instances every time it was called ???
    Sorry, I can not help you.
    I hope anyone would tell me why the 'bound function' made the code slower.

  • Performance issue with the code

    hi,
    i have below code.for printing it is taking enough time..
    which way i can improve the performance of below piece of code and what changes i will do for improving performance??
    kindly help me..
    form get_komgd.
      tables: kotd994.                     "kondd
      data : tfill_auswahl type i.
      data: begin of auswahl occurs 10,
               kappl like kotd994-kappl ,
               kschl like kotd994-kschl ,
               vkorg like kotd994-vkorg ,
               vtweg like kotd994-vtweg ,
               spart like kotd994-spart ,
               kvgr1 like kotd994-kvgr1 ,
               matwa like kotd994-matwa ,
               datbi like kotd994-datbi ,
               datab like kotd994-datab ,
               knumh like kotd994-knumh ,
               smatn like kondd-smatn,
               meins like kondd-meins,
                 sugrd like kondd-sugrd,
         end of auswahl.
      tables: kondd.
      select * from  kondd
             where  smatn       = ltap-matnr.
        select * from  kotd994
               where  kappl       = 'V'
             and    kschl       = vbak-kschl
               and    vkorg       = vbak-vkorg
               and    vtweg       = vbak-vtweg
         and    spart       = vbak-spart
               and    kvgr1       = vbak-kvgr1
         and    matwa       = vbak-matwa
               and    datbi       >= sy-datum
               and    datab       <= sy-datum
               and    knumh       = kondd-knumh    .
        endselect.
        if sy-subrc = 0.
       and kotd994-kvgr1(1) = 'Z'.
          move-corresponding kotd994 to auswahl.
          move-corresponding kondd to auswahl.
          append auswahl   .
        endif.                             " sy-subrc = 0.
    write: / auswahl.
      endselect.
      describe table auswahl lines tfill_auswahl.
      if tfill_auswahl = 1.
        komgd-matwa = auswahl-matwa.
      else.
        clear komgd-matwa.
      endif.                               " tfill_auswahl = 1.
    endform.                               " ZHX_GET_COSTUMER_NR

    Hi,
    Using two select statements will take more time.
    Rather use this sample code:
    select *    from kondd in to corresponding fields of table auswahl
            where smatn = ltap-matnr.
        select *      from kotd994 into corresponding fields of auswahl
                 for all entries of auswahl
                  where kappl = 'V'
                  and vkorg = vbak-vkorg
                  and vtweg = vbak-vtweg
                  and kvgr1 = vbak-kvgr1
                  and datbi >= sy-datum
                  and datab <= sy-datum
                  and knumh = auswahl-knumh .
    however, in the structure of auswahl maintain the field of knumh as well, so that we can pass the values in the second select directly.
    This will improve the performance very well.
    if possible, try and use the primary key combinations in the where clause while extracting the data.

  • Performance issues with Bapi BAPI_MATERIAL_AVAILABILITY...

    Hello,
    I have a Z program to check ATP which is working with Bapi BAPI_MATERIAL_AVAILABILITY....
    As I am in the retail system we have performance issues with this bapi due the huge amount of articles in the system we need to calculate the ATP.
    any  way to  improve  the  performance?
    Thanks and best regards
    L

    The BAPI appears to execute for only one plant/material, etc., at a time, so I would have to concentrate on making data retrieval and post-bapi processing as efficient as possible.  In your trace output, how much of your overall time is consumed by the BAPI?  How much by the other code?  You might find improvements there...

  • Performance issues with Spry

    Hi all,
    I'm facing some performance issues with Spry. I'm using it
    for handling a menubar acting as a rollover menu : its color
    changes under mouse cursor, and a submenu does appear at the same
    time.
    I have no problem when working with Firefox, but in IE6, it
    renders too slowly
    Is there something I've missed in the configuration or code
    (or is there some tips for this kind of problem) ?
    For information, I used UL and LI html tags, and I've
    configured Spry to render these as a menubar (with multiple levels)
    Thanks for your response

    Sorry, there are no public access to this application
    :-(

  • Performance issue with a Custom view

    Hi ,
    I am pretty new to performance tuning and facing a performance issue with a custom view.
    Execution time for view query is good but as soon as I append a where caluse to view query ,the execution time increases.
    Below is the view query:
    CREATE OR REPLACE XXX_INFO_VIEW AS
    SELECT csb.system_id license_id,
    cst.name license_number ,
    csb.system_type_code license_type ,
    csb.attribute3 lac , -- license authorization code
    csb.attribute6 lat , -- license admin token
    csb.attribute12 ols_reg, -- OLS Registration allowed flag
    l.attribute4 license_biz_type ,
    NVL (( SELECT 'Y' l_supp_flag
    FROM csi_item_instances cii,
    okc_k_lines_b a,
    okc_k_items c
    WHERE c.cle_id = a.id
    AND a.lse_id = 9
    AND c.jtot_object1_code = 'OKX_CUSTPROD'
    AND c.object1_id1 = cii.instance_id||''
    AND cii.instance_status_id IN (3, 510)
    AND cii.system_id = csb.system_id
    AND a.sts_code IN ('SIGNED', 'ACTIVE')
    AND NVL (a.date_terminated, a.end_date) > SYSDATE
    AND ROWNUM < 2), 'N') active_supp_flag,
    hp.party_name "Customer_Name" , -- Customer Name
    hca.attribute12 FGE_FLAG,
    (SELECT /*+INDEX (oklt OKC_K_LINES_TL_U1) */
    nvl(max((decode(name, 'eSupport','2','Enterprise','1','Standard','1','TERM RTU','0','TERM RTS','0','Notfound'))),0) covName --TERM RTU and TERM RTS added as per Vijaya's suggestion APR302013
    FROM OKC_K_LINES_B oklb1,
    OKC_K_LINES_TL oklt,
    OKC_K_LINES_B oklb2,
    OKC_K_ITEMS oki,
    CSI_item_instances cii
    WHERE
    OKI.JTOT_OBJECT1_CODE = 'OKX_CUSTPROD'
    AND oklb1.id=oklt.id
    AND OKI.OBJECT1_ID1 =cii.instance_id||''
    AND Oklb1.lse_id=2
    AND oklb1.dnz_chr_id=oklb2.dnz_chr_id
    AND oklb2.lse_id=9
    AND oki.CLE_ID=oklb2.id
    AND cii.system_id=csb.system_id
    AND oklt.LANGUAGE=USERENV ('LANG')) COVERAGE_TYPE
    FROM csi_systems_b csb ,
    csi_systems_tl cst ,
    hz_cust_accounts hca,
    hz_parties hp,
    fnd_lookup_values l
    WHERE csb.system_type_code = l.lookup_code (+)
    AND csb.system_id = cst.system_id
    AND hca.cust_account_id =csb.customer_id
    AND hca.party_id= hp.party_id
    AND cst.language = USERENV ('LANG')
    AND l.lookup_type (+) = 'CSI_SYSTEM_TYPE'
    AND l.language (+) = USERENV ('LANG')
    AND NVL (csb.end_date_active, SYSDATE+1) > SYSDATE)
    I have forced an index to avoid Full table scan on OKC_K_LINES_TL and suppressed an index on CSI_item_instances.instance id to make the view query fast.
    So when i do select * from XXX_INFO_VIEWit executes in a decent time,But when I try to do
    select * from XXX_INFO_VIEW where active_supp_flag='Y' and coverage_type='1'
    it takes lot of time.
    Execution plan is same for both queries in terms of cost but with WHERE clause Number of bytes increases.
    Below are the execution plans:
    View query:
    SELECT STATEMENT ALL_ROWS Cost: 7,212 Bytes: 536,237 Cardinality: 3,211                                         
         10 COUNT STOPKEY                                    
              9 NESTED LOOPS                               
                   7 NESTED LOOPS Cost: 1,085 Bytes: 101 Cardinality: 1                          
                        5 NESTED LOOPS Cost: 487 Bytes: 17,043 Cardinality: 299                     
                             2 TABLE ACCESS BY INDEX ROWID TABLE CSI.CSI_ITEM_INSTANCES Cost: 22 Bytes: 2,325 Cardinality: 155                
                                  1 INDEX RANGE SCAN INDEX CSI.CSI_ITEM_INSTANCES_N07 Cost: 3 Cardinality: 315           
                             4 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_ITEMS Cost: 3 Bytes: 84 Cardinality: 2                
                                  3 INDEX RANGE SCAN INDEX OKC.OKC_K_ITEMS_N2 Cost: 2 Cardinality: 2           
                        6 INDEX UNIQUE SCAN INDEX (UNIQUE) OKC.OKC_K_LINES_B_U1 Cost: 1 Cardinality: 1                     
                   8 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_B Cost: 2 Bytes: 44 Cardinality: 1                          
         12 TABLE ACCESS BY INDEX ROWID TABLE AR.HZ_CUST_ACCOUNTS Cost: 2 Bytes: 7 Cardinality: 1                                    
              11 INDEX UNIQUE SCAN INDEX (UNIQUE) AR.HZ_CUST_ACCOUNTS_U1 Cost: 1 Cardinality: 1                               
         28 SORT AGGREGATE Bytes: 169 Cardinality: 1                                    
              27 NESTED LOOPS                               
                   25 NESTED LOOPS Cost: 16,549 Bytes: 974,792 Cardinality: 5,768                          
                        23 NESTED LOOPS Cost: 5,070 Bytes: 811,737 Cardinality: 5,757                     
                             20 NESTED LOOPS Cost: 2,180 Bytes: 56,066 Cardinality: 578                
                                  17 NESTED LOOPS Cost: 967 Bytes: 32,118 Cardinality: 606           
                                       14 TABLE ACCESS BY INDEX ROWID TABLE CSI.CSI_ITEM_INSTANCES Cost: 22 Bytes: 3,465 Cardinality: 315      
                                            13 INDEX RANGE SCAN INDEX CSI.CSI_ITEM_INSTANCES_N07 Cost: 3 Cardinality: 315
                                       16 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_ITEMS Cost: 3 Bytes: 84 Cardinality: 2      
                                            15 INDEX RANGE SCAN INDEX OKC.OKC_K_ITEMS_N2 Cost: 2 Cardinality: 2
                                  19 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_B Cost: 2 Bytes: 44 Cardinality: 1           
                                       18 INDEX UNIQUE SCAN INDEX (UNIQUE) OKC.OKC_K_LINES_B_U1 Cost: 1 Cardinality: 1      
                             22 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_B Cost: 5 Bytes: 440 Cardinality: 10                
                                  21 INDEX RANGE SCAN INDEX OKC.OKC_K_LINES_B_N2 Cost: 2 Cardinality: 9           
                        24 INDEX UNIQUE SCAN INDEX (UNIQUE) OKC.OKC_K_LINES_TL_U1 Cost: 1 Cardinality: 1                     
                   26 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_TL Cost: 2 Bytes: 28 Cardinality: 1                          
         43 HASH JOIN Cost: 7,212 Bytes: 536,237 Cardinality: 3,211                                    
              41 NESTED LOOPS                               
                   39 NESTED LOOPS Cost: 7,070 Bytes: 485,792 Cardinality: 3,196                          
                        37 HASH JOIN Cost: 676 Bytes: 341,972 Cardinality: 3,196                     
                             32 HASH JOIN RIGHT OUTER Cost: 488 Bytes: 310,012 Cardinality: 3,196                
                                  30 TABLE ACCESS BY INDEX ROWID TABLE APPLSYS.FND_LOOKUP_VALUES Cost: 7 Bytes: 544 Cardinality: 17           
                                       29 INDEX RANGE SCAN INDEX (UNIQUE) APPLSYS.FND_LOOKUP_VALUES_U1 Cost: 3 Cardinality: 17      
                                  31 TABLE ACCESS FULL TABLE CSI.CSI_SYSTEMS_B Cost: 481 Bytes: 207,740 Cardinality: 3,196           
                             36 VIEW VIEW AR.index$_join$_013 Cost: 187 Bytes: 408,870 Cardinality: 40,887                
                                  35 HASH JOIN           
                                       33 INDEX FAST FULL SCAN INDEX (UNIQUE) AR.HZ_CUST_ACCOUNTS_U1 Cost: 112 Bytes: 408,870 Cardinality: 40,887      
                                       34 INDEX FAST FULL SCAN INDEX AR.HZ_CUST_ACCOUNTS_N2 Cost: 122 Bytes: 408,870 Cardinality: 40,887      
                        38 INDEX UNIQUE SCAN INDEX (UNIQUE) AR.HZ_PARTIES_U1 Cost: 1 Cardinality: 1                     
                   40 TABLE ACCESS BY INDEX ROWID TABLE AR.HZ_PARTIES Cost: 2 Bytes: 45 Cardinality: 1                          
              42 TABLE ACCESS FULL TABLE CSI.CSI_SYSTEMS_TL Cost: 142 Bytes: 958,770 Cardinality: 63,918           
    Execution plan for view query with WHERE clause:
    SELECT STATEMENT ALL_ROWS Cost: 7,212 Bytes: 2,462,837 Cardinality: 3,211                                         
         10 COUNT STOPKEY                                    
              9 NESTED LOOPS                               
                   7 NESTED LOOPS Cost: 1,085 Bytes: 101 Cardinality: 1                          
                        5 NESTED LOOPS Cost: 487 Bytes: 17,043 Cardinality: 299                     
                             2 TABLE ACCESS BY INDEX ROWID TABLE CSI.CSI_ITEM_INSTANCES Cost: 22 Bytes: 2,325 Cardinality: 155                
                                  1 INDEX RANGE SCAN INDEX CSI.CSI_ITEM_INSTANCES_N07 Cost: 3 Cardinality: 315           
                             4 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_ITEMS Cost: 3 Bytes: 84 Cardinality: 2                
                                  3 INDEX RANGE SCAN INDEX OKC.OKC_K_ITEMS_N2 Cost: 2 Cardinality: 2           
                        6 INDEX UNIQUE SCAN INDEX (UNIQUE) OKC.OKC_K_LINES_B_U1 Cost: 1 Cardinality: 1                     
                   8 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_B Cost: 2 Bytes: 44 Cardinality: 1                          
         12 TABLE ACCESS BY INDEX ROWID TABLE AR.HZ_CUST_ACCOUNTS Cost: 2 Bytes: 7 Cardinality: 1                                    
              11 INDEX UNIQUE SCAN INDEX (UNIQUE) AR.HZ_CUST_ACCOUNTS_U1 Cost: 1 Cardinality: 1                               
         28 SORT AGGREGATE Bytes: 169 Cardinality: 1                                    
              27 NESTED LOOPS                               
                   25 NESTED LOOPS Cost: 16,549 Bytes: 974,792 Cardinality: 5,768                          
                        23 NESTED LOOPS Cost: 5,070 Bytes: 811,737 Cardinality: 5,757                     
                             20 NESTED LOOPS Cost: 2,180 Bytes: 56,066 Cardinality: 578                
                                  17 NESTED LOOPS Cost: 967 Bytes: 32,118 Cardinality: 606           
                                       14 TABLE ACCESS BY INDEX ROWID TABLE CSI.CSI_ITEM_INSTANCES Cost: 22 Bytes: 3,465 Cardinality: 315      
                                            13 INDEX RANGE SCAN INDEX CSI.CSI_ITEM_INSTANCES_N07 Cost: 3 Cardinality: 315
                                       16 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_ITEMS Cost: 3 Bytes: 84 Cardinality: 2      
                                            15 INDEX RANGE SCAN INDEX OKC.OKC_K_ITEMS_N2 Cost: 2 Cardinality: 2
                                  19 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_B Cost: 2 Bytes: 44 Cardinality: 1           
                                       18 INDEX UNIQUE SCAN INDEX (UNIQUE) OKC.OKC_K_LINES_B_U1 Cost: 1 Cardinality: 1      
                             22 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_B Cost: 5 Bytes: 440 Cardinality: 10                
                                  21 INDEX RANGE SCAN INDEX OKC.OKC_K_LINES_B_N2 Cost: 2 Cardinality: 9           
                        24 INDEX UNIQUE SCAN INDEX (UNIQUE) OKC.OKC_K_LINES_TL_U1 Cost: 1 Cardinality: 1                     
                   26 TABLE ACCESS BY INDEX ROWID TABLE OKC.OKC_K_LINES_TL Cost: 2 Bytes: 28 Cardinality: 1                          
         44 VIEW VIEW APPS.WRS_LICENSE_INFO_V Cost: 7,212 Bytes: 2,462,837 Cardinality: 3,211                                    
              43 HASH JOIN Cost: 7,212 Bytes: 536,237 Cardinality: 3,211                               
                   41 NESTED LOOPS                          
                        39 NESTED LOOPS Cost: 7,070 Bytes: 485,792 Cardinality: 3,196                     
                             37 HASH JOIN Cost: 676 Bytes: 341,972 Cardinality: 3,196                
                                  32 HASH JOIN RIGHT OUTER Cost: 488 Bytes: 310,012 Cardinality: 3,196           
                                       30 TABLE ACCESS BY INDEX ROWID TABLE APPLSYS.FND_LOOKUP_VALUES Cost: 7 Bytes: 544 Cardinality: 17      
                                            29 INDEX RANGE SCAN INDEX (UNIQUE) APPLSYS.FND_LOOKUP_VALUES_U1 Cost: 3 Cardinality: 17
                                       31 TABLE ACCESS FULL TABLE CSI.CSI_SYSTEMS_B Cost: 481 Bytes: 207,740 Cardinality: 3,196      
                                  36 VIEW VIEW AR.index$_join$_013 Cost: 187 Bytes: 408,870 Cardinality: 40,887           
                                       35 HASH JOIN      
                                            33 INDEX FAST FULL SCAN INDEX (UNIQUE) AR.HZ_CUST_ACCOUNTS_U1 Cost: 112 Bytes: 408,870 Cardinality: 40,887
                                            34 INDEX FAST FULL SCAN INDEX AR.HZ_CUST_ACCOUNTS_N2 Cost: 122 Bytes: 408,870 Cardinality: 40,887
                             38 INDEX UNIQUE SCAN INDEX (UNIQUE) AR.HZ_PARTIES_U1 Cost: 1 Cardinality: 1                
                        40 TABLE ACCESS BY INDEX ROWID TABLE AR.HZ_PARTIES Cost: 2 Bytes: 45 Cardinality: 1                     
                   42 TABLE ACCESS FULL TABLE CSI.CSI_SYSTEMS_TL Cost: 142 Bytes: 958,770 Cardinality: 63,918

    Hi,
    You should always try using primary index fields, if not possible then secondary index fields.
    Even if you cannot do anything from either of the two then try this,
    Use Less distinct fields on the top.
    In your case , you can use bukrs ,gjahr ,werks on the top in the where condition..then followed by less distinct values..
    Even when you use secondary index if you have 4 fields in your sec index and you are using only two fields from the top then the index is useful only upto that two fields provided they are in sequence.

  • Performance issue with respect to IW39

    Issue with T-Code IW39
    the main performance issue was with respect to view used by this T-Code VIAUFKST which joins the below mentioned tables.
    Tables     Entries
    ILOA     5622178
    AFIH     1213478
    AFKO     1703628
    AUFK     2202962
    We have observed that our Index used are varying based on the selection criteria and on the the most used selection criteria (planner group) is not taking the right index. Any suggestions to resolve this would be highly appreciated. Thanks
    Regards,
    Akilesh

    Hello Rob,
    Thanks for your response. Yes our table statistics are upto date and we have also applied the following notes so far to resolve this issue.
    917570 -- Poor performance when refreshing in list
    1081681 -- DB2-z/OS: Bad performance accessing table JEST
    1061894 -- MAM: Incorrect results returned from Order get
    1023923 -- F4 help uses table AFIH instead of VIAUFKST for PM orders
    1052102 -- Data collection: Performance - access to tables AUFK/COBRB
    1014797 -- CO summarization: Perfomance (2) - access to COBRB table
    1033587 -- Order selection: Performance - Access to AUFK/COBRB table

  • Performance issue with BSEG

    Hi,
              I am having serious performance issue due to BSEG table .I am having a change request in which I have to solve the performance issue with regard to BSEG. The situation was that previously they had used select * on both BKPF and BSEG. I removed the select * and selected only those fields which are required as shown below. I also tried using cursors. But the problem is happening in the TEST server where BSEG is having more than 1 crore entries. I have gone through some threads but still not able to understand how to solve this problem. Please help
    select bukrs belnr gjahr bldat bstat from bkpf into table T_BKPF_p
                                                    WHERE BUKRS IN sd_bukrs AND
                                                    BLDAT < s_bldat-low
                                                    and  BSTAT = ' ' .
    select bukrs belnr gjahr shkzg dmbtr hkont from bseg into table T_BSEG_C
                                            FOR ALL ENTRIES IN t_BKPF_p
                                            WHERE BUKRS = T_bkpf_p-bukrs
                                            AND   BELNR = T_bkpf_p-belnr
                                            AND   GJAHR = T_bkpf_p-gjahr
                                            AND   HKONT = SKB1-SAKNR.

    Hi Kunal,
    Here is my take on your issue.
    In your select statement on BKPF you are selecting every BKPF record for a specified company code and blank document status that was created before a specified date. If your company has implemented SAP 10 years ago, and your user enters todays date and leaves the company code field blank you will effectively be retrieving almost all the records from BKPF (excluding the ones created today or those with non-blank document status). This would effectively be a huge amount of data. After that you are looking for the corresponding BSEG records for all the records that you have selected in BKPF.
    My question to you is why do you need to look at all the records before a given date? Why not ask the user to enter a smaller date range and make the document date and the company code a mandatory entry? You do not have to look at 10 years worth of data especially if you are running this online (as opposed to in the background).
    Your BSEG select looks correct. There is very little that you can do except for adding BUZEI to the field list. If you use for all entries and do not include the entire primary key you could lose data.
    TABLES: bkpf,
            skb1.
    SELECT-OPTIONS: s_bldat  FOR bkpf-bldat OBLIGATORY,
                    sd_bukrs FOR bkpf-bukrs OBLIGATORY.
    TYPES: BEGIN OF ty_bkpf,
            bukrs TYPE bkpf-bukrs,
            belnr TYPE bkpf-belnr,
            gjahr TYPE bkpf-gjahr,
            bldat TYPE bkpf-bldat,
            bstat TYPE bkpf-bstat,
          END OF ty_bkpf,
          BEGIN OF ty_bseg,
            bukrs TYPE bseg-bukrs,
            belnr TYPE bseg-belnr,
            gjahr TYPE bseg-gjahr,
            buzei TYPE bseg-buzei,
            shkzg TYPE bseg-shkzg,
            dmbtr TYPE bseg-dmbtr,
            hkont TYPE bseg-hkont,
          END OF ty_bseg.
    DATA: t_bkpf_p TYPE TABLE OF ty_bkpf,
          t_bseg_c TYPE TABLE OF ty_bseg.
    SELECT bukrs
           belnr
           gjahr
           bldat
           bstat
    FROM bkpf
    INTO TABLE t_bkpf_p
    WHERE bukrs IN sd_bukrs
    AND   bldat IN s_bldat
    AND   bstat EQ space .
    IF NOT t_bkpf_p[] IS INITIAL.
      SELECT bukrs
             belnr
             gjahr
             buzei
             shkzg
             dmbtr
             hkont
        FROM bseg
        INTO TABLE t_bseg_c
        FOR ALL ENTRIES IN t_bkpf_p
        WHERE bukrs EQ t_bkpf_p-bukrs
        AND   belnr EQ t_bkpf_p-belnr
        AND   gjahr EQ t_bkpf_p-gjahr
        AND   hkont EQ skb1-saknr.
    ENDIF.

  • Performance Issue with SXMB_MONI

    Hi All,
    I have a typical performance issue with SXMB_MONI, when I trigger this T.code it is taking around 20-24 hrs to execute.
    Here I have found some tables which actually stores these processed xml messages,
    SXMSPFADDRESS
    SXMSPFRAWH
    RSXMB_REMOTE_SERVICE
    SXMSPFAGG
    SXMSCONFVL
    SXMSPMAST
    SXMSPEMAS, SXMSPERROR, SXMSPMAST & SXMSPVERS.
    SXMSPMAST, SXMSPMAST2, SXMSCLUR, SXMSCLUR2,
    SXMSCLUP, SMXSLUP2, SXMSPFRAWH,
    Here I want to increase the performance of sxmb_moni, firstly I want to know from which tables does the sxmb_moni fetches data and more over is it a single table or multiple table.
    And please suggest any technique which can decrease the latency time in executing sxmb_moni.
    Regards,
    Vijay N

    Hi,
    Periodically you need to archive the XI messages, that allows you to maintain sufficient performance level.
    Create archive jobs in SXMB_ADM to archive data which is 15 days old from XI related growing tables like SXMSCLUR, SXMSPEMAS, SXMSPHIST, SXMSPMAST, SXMSPVERS, SXMSPFRAW ,SWWWIHEAD. This archive job created archive files at the OS Level
    For XI tables refer
    /people/gourav.khare2/blog/2007/12/12/interesting-abap-tables-in-xi-150-part-i
    SXMSPMAST, SXMSCLUP, SXMSPCLUR
    the last two are cluster tables
    and you won't get XML messages directly from them
    have a look inside them
    The classes that reads this information in SXMB_MONI are abap classes,
    (can be seen at SE24) it is quite difficult to use them,
    you might debug SXMB_MONI or use SE30 and see all the classes
    that have been used.
    You can use value mapping if you are not looking at picking up values from application system.It is just like SM30 transcation.You can get the info under SAP XI->Design and Configuration->Configuration->Value Mapping.
    Also see the
    these tables,
    /SAPDMC/LSOMAP Field Mapping
    /SAPTRX/SCAOTMAP
    /SAPTRX/SCCNDMAP /SAPTRX/SCEVTMAP
    /SAPTRX/SCFUNMAP /SAPTRX/SCSOMAP
    /people/udo.martens/blog/2006/02/16/own-logging-of-xi-messages
    message-mappings: stored in which database-table?
    sxmb_moni, table sxmspmast, Messages with ICON_LED_RED, report RSXMB_SELECT
    http://help.sap.com/saphelp_nw04s/helpdata/en/44/a1b46c4c686341e10000000a114a6b/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ef/45393c3eb3036be10000000a11402f/frameset.htm
    Thanks
    Swarup

Maybe you are looking for

  • How do I transfer songs from my old ipod touch to the new ipod nano?

    I just got the new Ipod nano and I want to get the music i already have to transfer from my old ipod touch to the new nano, how can I do this?

  • PLEASE HELP! Installation errors with creative suite 5.5 design premium?

    I recently tried to install creative suite 5.5 design premium on to my home computer with windows vista home premium and it was all going fine then right at the end of the installation this message popped up please help?? Exit Code: 7 ---------------

  • Performance of workspace manager

    I have created versioned tables in Oracle 9.2. It sits in DEC Unix OS. I have experienced performance degredation after versioning the tables. The largest table has about 20 million rows. Do I need to analyze the base table generated by versioning th

  • Creating Index for PDF documents

    Hello, I am trying to index a column in one of my tables that contains a BLOB object that is a PDF for each record. I want to create an index on that column so I can search through the contents of these PDFs. I have tried several times to create the

  • Help with Reference Error 1074

    Can someone point me to discover what I did wrong here in this package ? package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.geom.Matrix; import flash.display.BitmapData; import flash.events.