Skip to Content
0
Former Member
Jul 18, 2008 at 01:36 PM

ABAP Code for Backup the entire table data in the application server

669 Views

Hello Friends,

I have to create the table data Backup and Store the entire table data in the application server and also be able to restore the data back if needed.

this should be dynamic program for any table based on the table name given on the application server.. I have developed a program for this but its having problems with the Quantity, amount. Its not writing it correctly at the application level.

ANy Suggestions on this.

Below is the program for this.

Thanks,

Ster.

*---------------------------------------------------------------------*
* Report  YWMM_TABLE_DUMP                                             *
*---------------------------------------------------------------------*

REPORT ywmm_table_dump .

TABLES :
        dd03l.
* Type spool declaration
TYPE-POOLS:
        abap, slis.

DATA: i_table_data1  TYPE REF TO data.
DATA : it_dd03l LIKE dd03l OCCURS 0 WITH HEADER LINE.
*DATA : gt_fieldcat TYPE lvc_s_fcat.
DATA : i_fcat      TYPE STANDARD TABLE OF lvc_s_fcat,
       l_dr_line         TYPE   REF TO data,
       l_v_as4vers       TYPE as4vers.



FIELD-SYMBOLS: <f_table_data1>     TYPE STANDARD TABLE,
               <f_wa_table_data1>  TYPE ANY.

SELECTION-SCREEN: BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS: rb_copy RADIOBUTTON GROUP map DEFAULT 'X',
            rb_rest RADIOBUTTON GROUP map.

SELECTION-SCREEN: END   OF BLOCK bl1.

SELECTION-SCREEN: BEGIN OF BLOCK bl2 WITH FRAME TITLE text-002.
PARAMETERS: p_table  TYPE tabname OBLIGATORY,
            p_plfld TYPE dd03l-fieldname.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_bkfile TYPE localfile OBLIGATORY.
SELECTION-SCREEN: END   OF BLOCK bl2.

PERFORM get_data.
IF rb_copy = 'X'.
  PERFORM backup.
ELSEIF rb_rest = 'X'.
  PERFORM database_update.
ENDIF.
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data.

  CLEAR   i_fcat.
  REFRESH i_fcat.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
       EXPORTING
            i_structure_name = p_table  " Table Name
       CHANGING
            ct_fieldcat      = i_fcat
       EXCEPTIONS
            OTHERS           = 1.

  CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = i_fcat
  IMPORTING
    ep_table        = i_table_data1.
  IF sy-subrc = 0.
    ASSIGN i_table_data1->* TO <f_table_data1>.
  ELSE.
    WRITE: 'Error creating internal table'.
  ENDIF.

  IF rb_copy = 'X'.


    SELECT  * FROM (p_table) INTO CORRESPONDING FIELDS OF
              TABLE <f_table_data1> UP TO 20 ROWS.

  ELSEIF rb_rest = 'X'.

    CREATE DATA l_dr_line LIKE LINE OF <f_table_data1>.
    ASSIGN l_dr_line->* TO <f_wa_table_data1>.
*Get Data from Application Server

* Opening the dataset P_BKFILE given in the selection screen
    TRANSLATE p_bkfile TO LOWER CASE.
    OPEN DATASET p_bkfile FOR INPUT IN TEXT MODE." ENCODING DEFAULT.
    IF sy-subrc NE 0.
*    MESSAGE:
    ELSE.
      DO.
* Reading the file from application server
        READ DATASET p_bkfile INTO <f_wa_table_data1>.
        IF sy-subrc = 0.
          APPEND <f_wa_table_data1> TO <f_table_data1>.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
* Closing the dataset
      CLOSE DATASET p_bkfile.
    ENDIF.

  ENDIF.
ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  backup
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM backup.

  TRANSLATE p_bkfile TO LOWER CASE.

  OPEN DATASET p_bkfile FOR OUTPUT IN TEXT MODE.

  IF sy-subrc NE 0.
    WRITE: text-017.
    STOP.
  ELSE.
    LOOP AT <f_table_data1> ASSIGNING <f_wa_table_data1>.
      TRANSFER <f_wa_table_data1> TO p_bkfile.
    ENDLOOP.
  ENDIF.
  CLOSE DATASET p_bkfile.

ENDFORM.                    " backup
*&---------------------------------------------------------------------*
*&      Form  database_update
*&---------------------------------------------------------------------*

FORM database_update.

  DATA : i_mara_u TYPE STANDARD TABLE OF mara WITH HEADER LINE,
         i_ekpo_u TYPE STANDARD TABLE OF ekpo WITH HEADER LINE,
         i_eban_u TYPE STANDARD TABLE OF eban WITH HEADER LINE,
         i_resb_u TYPE STANDARD TABLE OF resb WITH HEADER LINE,
         i_plpo_u TYPE STANDARD TABLE OF plpo WITH HEADER LINE,
         i_stpo_u TYPE STANDARD TABLE OF stpo WITH HEADER LINE,
         i_vbap_u TYPE STANDARD TABLE OF vbap WITH HEADER LINE,
         i_vbrp_u TYPE STANDARD TABLE OF vbrp WITH HEADER LINE,
         i_lips_u TYPE STANDARD TABLE OF lips WITH HEADER LINE,
         i_afvc_u TYPE STANDARD TABLE OF afvc WITH HEADER LINE,
         i_asmd_u TYPE STANDARD TABLE OF asmd WITH HEADER LINE,
*           i_cooi_u TYPE STANDARD TABLE OF cooi WITH HEADER LINE,
         i_qmel_u TYPE STANDARD TABLE OF qmel WITH HEADER LINE,
         i_cooi_u TYPE STANDARD TABLE OF cooi WITH HEADER LINE,
         i_esll_u TYPE STANDARD TABLE OF esll WITH HEADER LINE,
         i_t165_u  TYPE STANDARD TABLE OF t165 WITH HEADER LINE,
         i_t165e_u TYPE STANDARD TABLE OF t165e WITH HEADER LINE,
         i_twpko_u TYPE STANDARD TABLE OF twpko WITH HEADER LINE,
         i_tpext_u TYPE STANDARD TABLE OF tpext WITH HEADER LINE,
         i_ce4mxpa_u TYPE STANDARD TABLE OF ce4mxpa WITH HEADER LINE,
         i_ce4mxpa_acct_u TYPE STANDARD TABLE OF ce4mxpa_acct WITH
                                                         HEADER LINE,
         i_zaim_u  TYPE STANDARD TABLE OF zaim WITH HEADER LINE,

         i_s012_d TYPE STANDARD TABLE OF s012 WITH HEADER LINE,
         i_s012_i TYPE STANDARD TABLE OF s012 WITH HEADER LINE,
         i_dummy  TYPE STANDARD TABLE OF mara.


  CASE p_table.
    WHEN 'MARA'.
*     Non-Key
      PERFORM move_to_table USING   <f_table_data1>
                            CHANGING i_mara_u[]
                                     i_mara_u.
      PERFORM update_table USING i_mara_u[].

  ENDCASE.

ENDFORM.                    " database_update
*&---------------------------------------------------------------------*
*&      Form  move_to_mara
*&---------------------------------------------------------------------*
FORM move_to_table USING    p_tab_from TYPE STANDARD TABLE
                   CHANGING p_tab_to   TYPE STANDARD TABLE
                            p_w_table.

  DATA:  l_wa_fcat TYPE lvc_s_fcat.

  FIELD-SYMBOLS: <f_field_from> TYPE ANY,
                 <f_field_to>   TYPE ANY.

  LOOP AT p_tab_from ASSIGNING <f_wa_table_data1>.

    LOOP AT i_fcat INTO l_wa_fcat.
      ASSIGN COMPONENT l_wa_fcat-fieldname
     OF STRUCTURE <f_wa_table_data1> TO <f_field_from>.
      ASSIGN COMPONENT l_wa_fcat-fieldname
     OF STRUCTURE p_w_table TO <f_field_to>.

      <f_field_to> = <f_field_from>.
    ENDLOOP.

    APPEND p_w_table TO p_tab_to.
  ENDLOOP.

ENDFORM.                    " move_to_mara
*&---------------------------------------------------------------------*
*&      Form  update_table
*&---------------------------------------------------------------------*

FORM update_table  USING p_table_update TYPE STANDARD TABLE.
  SELECT SINGLE *
    FROM dd03l
   WHERE fieldname = p_plfld
     AND tabname   = p_table
     AND keyflag   <> 'X'
     AND as4local = 'A'
     AND   as4vers = l_v_as4vers
     AND   ( comptype = 'E' OR comptype = space ).

  IF sy-subrc = 0.
*   Do update
    IF NOT p_table_update IS INITIAL.
      UPDATE (p_table) FROM TABLE p_table_update.
      IF sy-subrc = 0.
        COMMIT WORK.
      ELSE.
        ROLLBACK WORK.
        WRITE: text-003.
        STOP.
      ENDIF.
    ENDIF.
  ELSE.
*delete and insert.
    IF NOT p_table_update IS INITIAL.
*      DELETE (p_table).
      IF sy-subrc = 0.
        INSERT (p_table) FROM TABLE p_table_update.
        IF sy-subrc = 0.
          COMMIT WORK.
        ELSE.
          ROLLBACK WORK.
          WRITE: text-018.
          STOP.
        ENDIF.
      ELSE.
        ROLLBACK WORK.
        WRITE: text-018.
        STOP.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.                    " update_table

Edited by: Julius Bussche on Jul 18, 2008 1:43 PM

Please use a meaningfull subject title!