<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Performance Issue with this code in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-with-this-code/m-p/2414456#M538809</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Gurus,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can anyone please help tweak the performance of this program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;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.


&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 Jun 2007 21:06:16 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-06-19T21:06:16Z</dc:date>
    <item>
      <title>Performance Issue with this code</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-with-this-code/m-p/2414456#M538809</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Gurus,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can anyone please help tweak the performance of this program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;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.


&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jun 2007 21:06:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-with-this-code/m-p/2414456#M538809</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-19T21:06:16Z</dc:date>
    </item>
    <item>
      <title>Re: Performance Issue with this code</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-with-this-code/m-p/2414457#M538810</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The first SELECT looks a bit shaky. Have you done a performance trace (ST05) to find out where the problem is?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jun 2007 21:14:39 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-with-this-code/m-p/2414457#M538810</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-19T21:14:39Z</dc:date>
    </item>
  </channel>
</rss>

