Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Performance Issue with this code

Former Member
0 Kudos

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),                                               
   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[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
             AND VBAK~VBELN IN 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.



             AND VBAP~KWMENG IN 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
             AND VBAP~MATWA IN 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
             AND VBAP~POSNR IN 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
             AND VBAP~PSTYV IN 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
             AND VBAP~UEPOS IN 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
             AND MATERIALID~MATNR_EXT IN 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.

   
 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.


1 REPLY 1

Former Member
0 Kudos

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

Rob