REPORT ZDOWN_ANYTAB_BE no standard page heading.

*  Author Jayanta Narayan Choudhuri
*         Flat 302
*         395 Jodhpur Park
*         Kolkata 700 068
*       Email sss@cal.vsnl.net.in
*       URL:  http://www.geocities.com/ojnc

* This program can be run as background job at regular intervals
* Will be useful for identifying bugs in DELETE & UPDATE in production 

TABLES: DD02L, DD02T, DD03L, DD04T.

PARAMETERS pTable LIKE DD02L-TABNAME OBLIGATORY.

DATA: BEGIN OF MYTABLE,
          TABNAME   like    DD02L-TABNAME,
          AS4LOCAL  like    DD02L-AS4LOCAL,
          AS4VERS   like    DD02L-AS4VERS,
          DDTEXT    like    DD02T-DDTEXT,
      END OF MYTABLE.


DATA: code      type Table of rssource-line,
      prog(8)   type C,
      msg(120)  type C,
      lin(3)    type C,
      wrd(10)   type C,
      off(3)    type C.

Data: MyString  Type String.


    SELECT SINGLE TABNAME AS4LOCAL AS4VERS
      INTO CORRESPONDING FIELDS OF MYTABLE
      FROM DD03L
     WHERE TABNAME = pTable.

    If sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    Endif.

    Append 'Program SubPool.' to Code.
    Concatenate 'Tables:' pTable '.'  into MyString SEPARATED BY SPACE.
    Append MyString to Code.
    Append '' to Code.
    Append 'Form DoExport.' to Code.
    Append '' to Code.

    Append 'data : begin of I_TAB occurs 0.' to Code.
    Concatenate 'Include Structure ' pTable '.'  into MyString SEPARATED BY SPACE.
    Append MyString to Code.
    Append 'data : End   of I_TAB.' to Code.
    Append '' to Code.
    Append 'Data: RecString     type String,' to Code.
    Append '      WrkString(40) type C,' to Code.
    Append '      FlatFile      like RLGRAP-FILENAME,' to Code.
    Append '      RecLen        type I.' to Code.
    Append '' to Code.
    Append 'Constants: myTAB Type C Value %_HORIZONTAL_TAB.' to Code.
    Append '' to Code.
    Concatenate 'Select * From' pTable ' Into Table I_TAB.' into MyString SEPARATED BY SPACE.
    Append MyString to Code.
    Append '' to Code.
    Append 'IF SY-SUBRC <> 0.' to Code.
    Append '   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO' to Code.
    Append '           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.' to Code.
    Append 'ENDIF.' to Code.
    Append '' to Code.

*   Change c:\ to any Win32 or Unix Directory with trailing Slash
    Concatenate 'Concatenate  ''c:\' '@' pTable '!_' into MyString.
    Replace '@'  in MyString with ''' '''.
    Replace '!_'  in MyString with ''' ''_'' '.
    Append MyString to Code.
    Append ' Sy-Datum ''_'' Sy-Uzeit ''.dat'' into FlatFile.' to Code.
    Append '' to Code.

    Append 'Open Dataset FlatFile For Output In Text Mode Encoding Default.' to Code.
    Append '' to Code.
    Append 'Loop At I_TAB.' to Code.
    Append '    RecString = ''''.' to Code.

    SELECT *
      FROM DD03L
     WHERE TABNAME = MYTABLE-TABNAME
       AND AS4LOCAL = MYTABLE-AS4LOCAL
       AND AS4VERS = MYTABLE-AS4VERS.
      if DD03L-FIELDNAME <> '.INCLUDE'.
        If DD03L-INTTYPE = 'C'.
            Concatenate 'Concatenate RecString myTAB I_TAB-' DD03L-FIELDNAME
                        ' into RecString.' into MyString.
            Append MyString to Code.
        Else.
            Concatenate 'Write I_TAB-' DD03L-FIELDNAME ' to WrkString.' into MyString.
            Append MyString to Code.
            Append 'Replace All Occurrences Of '','' in WrkString with ''''.' to Code.
            Append 'Condense WrkString.' to Code.
            Append 'Concatenate RecString myTAB WrkString into RecString.' to Code.
        EndIf.
      EndIf.
    ENDSELECT.

    Append '' to Code.
    Append '    RecLen = strlen( RecString ).' to Code.
    Append '    Subtract 1 from RecLen.' to Code.
    Append '    Transfer RecString+1(RecLen) to FlatFile.' to Code.
    Append '' to Code.
    Append 'EndLoop.' to Code.
    Append '' to Code.
    Append 'Close Dataset FlatFile.' to Code.
    Append '' to Code.

*   Using Tcode SM69 create ZCOMPRESS as the compress utility of your choice
    Append 'DATA: ld_comline  LIKE sxpgcolist-name,' to Code.
    Append '      ld_param    LIKE sxpgcolist-parameters,' to Code.
    Append '      ld_status   LIKE extcmdexex-status,' to Code.
    Append '      ld_output   LIKE btcxpm OCCURS 0 WITH HEADER LINE,' to Code.
    Append '      ld_subrc    LIKE sy-subrc.' to Code.
    Append '' to Code.
    Append '  Refresh ld_output.' to Code.
    Append '  Move FlatFile to ld_param.' to Code.
    Append '  Move ''ZCOMPRESS'' to ld_comline. "Maintained using trans SM69' to Code.
    Append '' to Code.
    Append '  CALL FUNCTION ''SXPG_COMMAND_EXECUTE''' to Code.
    Append '       EXPORTING' to Code.
    Append '            commandname                   = ld_comline' to Code.
    Append '            additional_parameters         = ld_param' to Code.
    Append '       IMPORTING' to Code.
    Append '            status                        = ld_status' to Code.
    Append '       TABLES' to Code.
    Append '            exec_protocol                 = ld_output.' to Code.
    Append '' to Code.
    Append '  IF SY-SUBRC <> 0.' to Code.
    Append '     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO' to Code.
    Append '             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.' to Code.
    Append '  ENDIF.' to Code.
    Append '' to Code.

    Append 'EndForm.  "DoExport' to Code.

*   To take out the generated code for further editing
*   CALL FUNCTION 'GUI_DOWNLOAD'
*     EXPORTING
*       FILENAME                      = 'c:\jnc.ab4'
*     TABLES
*       DATA_TAB                      = CODE.
*
*   IF SY-SUBRC <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*   ENDIF.

    GENERATE SUBROUTINE POOL code   NAME    prog
                                    MESSAGE msg
                                    LINE    lin
                                    WORD    wrd
                                    OFFSET  off.

    IF SY-SUBRC NE 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
      PERFORM DoExport IN PROGRAM (prog).
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDIF.

    Source: geocities.com/ojnc