Skip to Content
author's profile photo
Former Member

program to update a Z Table dynamically

Hi Experts,

Can anyone please help me by providing any program to update the Z table dynamically.

Thank You

Ravi Kanth Yechuri

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

4 Answers

  • author's profile photo
    Former Member
    Feb 12, 2008 at 09:59 PM

    what is your requirement?? when do you want to update the table??

    Can you please elaborate??

    Thanks,

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      i've a program which exports a table in excel and you can modify the excel and again import it into the system....

      <REMOVED BY MODERATOR> .... I think it will solv your problem...

      *****************************************************************************************

      REPORT zsptud01 LINE-SIZE 80
                      LINE-COUNT 65
                      NO STANDARD PAGE HEADING.
      
      TABLES: dd02l, dd03l.
      
      * selection screen
      SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-b00.
      *
      SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.
      PARAMETERS: tabname     LIKE dd02l-tabname OBLIGATORY.
      SELECTION-SCREEN END OF BLOCK b01.
      *
      SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-b03.
      PARAMETERS: path(30)    TYPE c DEFAULT 'C:\SAPWorkdir'.
      SELECTION-SCREEN END OF BLOCK b03.
      *
      SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE text-b04.
      PARAMETERS: p_exp RADIOBUTTON GROUP radi,
                  p_imp RADIOBUTTON GROUP radi,
                  p_clear     AS CHECKBOX.
      SELECTION-SCREEN END OF BLOCK b04.
      
      SELECTION-SCREEN END OF BLOCK b00.
      
      * data
      DATA: q_return     LIKE syst-subrc,
            err_flag(1)  TYPE c,
            answer(1)    TYPE c,
            w_text1(62)  TYPE c,
            w_text2(40)  TYPE c,
            winfile(128) TYPE c,
            w_system(40) TYPE c,
            winsys(7)    TYPE c,
            zname(8)     TYPE c,
            w_line(80)   TYPE c.
      
      * internal tables
      DATA : BEGIN OF textpool_tab OCCURS 0.
              INCLUDE STRUCTURE textpool.
      DATA : END OF textpool_tab.
      
      * table for subroutine pool
      DATA : itab(80) OCCURS 0.
      
      * events
      INITIALIZATION.
      *authority-check object 'ZISC_TCODE'
      *           id 'TCD' field 'ZIBSC_TABLE'.
      *  if sy-subrc <> 0.
      *   message e057(ZIBSC).
      *  endif.
      
      
      *  PERFORM check_system.
      *
      AT SELECTION-SCREEN ON tabname.
      
        PERFORM check_table_exists.
      *
      START-OF-SELECTION.
      
        PERFORM init_report_texts.
        PERFORM request_confirmation.
      *
      END-OF-SELECTION.
        IF answer = 'J'.
          PERFORM execute_program_function.
        ENDIF.
      *
      TOP-OF-PAGE.
        PERFORM process_top_of_page.
      
      * forms
      *---------------------------------------------------------------------*
      *       FORM CHECK_TABLE_EXISTS                                      *
      *---------------------------------------------------------------------*
      FORM check_table_exists.
        SELECT SINGLE * FROM dd02l
        INTO CORRESPONDING FIELDS OF dd02l
        WHERE tabname = tabname.
        CHECK syst-subrc NE 0.
        MESSAGE e402(mo) WITH tabname.
      ENDFORM.
      *---------------------------------------------------------------------*
      *       FORM INIT_REPORT_TEXTS                                        *
      *---------------------------------------------------------------------*
      FORM init_report_texts.
        READ TEXTPOOL syst-repid
        INTO textpool_tab LANGUAGE syst-langu.
        LOOP AT textpool_tab
        WHERE id EQ 'R' OR id EQ 'T'.
          REPLACE '&1............................'
          WITH tabname INTO textpool_tab-entry.
          MODIFY textpool_tab.
        ENDLOOP.
      ENDFORM.
      *---------------------------------------------------------------------*
      *       FORM REQUEST_CONFIRMATION                                     *
      *---------------------------------------------------------------------*
      FORM request_confirmation.
      
      * import selected, confirm action
        IF p_imp = 'X'.
      *   build message text for popup
          CONCATENATE 'Data for table'
                       tabname
                       'will be imported' INTO w_text1 SEPARATED BY space.
      *   check if delete existing selected, and change message text
          IF p_clear = ' '.
            w_text2 = 'and appended to the end of existing data'.
          ELSE.
            w_text2 = 'Existing Data will be deleted'.
          ENDIF.
      
          CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
               EXPORTING
                    defaultoption  = 'N'
                    textline1      = w_text1
                    textline2      = w_text2
                    titel          = 'Confirm Import of Data'
                    cancel_display = ' '
               IMPORTING
                    answer         = answer
               EXCEPTIONS
                    OTHERS         = 1.
        ELSE.
      *   export selected, set answer to yes so export can continue
          answer = 'J'.
        ENDIF.
      ENDFORM.
      *---------------------------------------------------------------------*
      *       FORM EXECUTE_PROGRAM_FUNCTION                                 *
      *---------------------------------------------------------------------*
      FORM execute_program_function.
        PERFORM build_file_name.
        CLEAR: q_return,err_flag.
      
        IF p_imp = 'X'.
          PERFORM check_file_exists.
          CHECK err_flag = ' '.
          PERFORM func_import.
        ELSE.
          PERFORM func_export.
        ENDIF.
      ENDFORM.
      *---------------------------------------------------------------------*
      *       FORM BUILD_FILE_NAME                                          *
      *---------------------------------------------------------------------*
      FORM build_file_name.
        MOVE path TO winfile.
        WRITE '\' TO winfile+30.
        WRITE tabname TO winfile+31.
        WRITE '.TAB' TO winfile+61(4).
        CONDENSE winfile NO-GAPS.
      ENDFORM.
      *---------------------------------------------------------------------*
      *       FORM CHECK_FILE_EXISTS                                        *
      *---------------------------------------------------------------------*
      FORM check_file_exists.
      
        CALL FUNCTION 'WS_QUERY'
             EXPORTING
                  filename = winfile
                  query    = 'FE'
             IMPORTING
                  return   = q_return
             EXCEPTIONS
                  OTHERS   = 1.
      
        IF syst-subrc NE 0 OR q_return NE 1.
          err_flag = 'X'.
        ENDIF.
      ENDFORM.
      *---------------------------------------------------------------------*
      *     FORM func_export                                              *
      *---------------------------------------------------------------------*
      FORM func_export.
        CLEAR itab. REFRESH itab.
      
        APPEND 'PROGRAM SUBPOOL.' TO itab.
      
        APPEND 'FORM DOWNLOAD.' TO itab.
        APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.
        CONCATENATE 'INCLUDE STRUCTURE'
                    tabname
                    '.' INTO w_line SEPARATED BY space.
        APPEND w_line TO itab.
        APPEND 'DATA: END OF IT_TAB.' TO itab.
      
        CONCATENATE 'SELECT * FROM'
                    tabname
                    'INTO TABLE IT_TAB.' INTO w_line  SEPARATED BY space.
        APPEND w_line TO itab.
      
        APPEND 'CALL FUNCTION ''WS_DOWNLOAD''' TO itab.
        APPEND 'EXPORTING' TO itab.
        CONCATENATE 'filename = ' ''''
                    winfile '''' INTO w_line SEPARATED BY space.
        APPEND w_line TO itab.
        APPEND 'filetype = ''DAT''' TO itab.
        APPEND 'TABLES' TO itab.
        APPEND 'DATA_TAB = IT_TAB.' TO itab.
      
        APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.
      
        APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.
        APPEND 'WRITE: /1 syst-vline,' TO itab.
        APPEND '''EXPORT'',' TO itab.
        APPEND '15 ''data line(s) have been exported'',' TO itab.
        APPEND '68 syst-index,' TO itab.
        APPEND '80 syst-vline.' TO itab.
        APPEND 'ULINE.' TO itab.
      
        APPEND 'ENDFORM.' TO itab.
      
        GENERATE SUBROUTINE POOL itab NAME zname.
        PERFORM download IN PROGRAM (zname).
      ENDFORM.
      *---------------------------------------------------------------------*
      *       FORM func_import                                              *
      *---------------------------------------------------------------------*
      FORM func_import.
        CLEAR itab. REFRESH itab.
        APPEND 'PROGRAM SUBPOOL.' TO itab.
      
        APPEND 'FORM UPLOAD.' TO itab.
        APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.
        CONCATENATE 'INCLUDE STRUCTURE'
                    tabname
                    '.' INTO w_line SEPARATED BY space.
        APPEND w_line TO itab.
        APPEND 'DATA: END OF IT_TAB.' TO itab.
        APPEND 'DATA: BEGIN OF IT_TAB2 OCCURS 0.' TO itab.
        CONCATENATE 'INCLUDE STRUCTURE'
                    tabname
                    '.' INTO w_line SEPARATED BY space.
        APPEND w_line TO itab.
        APPEND 'DATA: END OF IT_TAB2.' TO itab.
      
        APPEND 'CALL FUNCTION ''WS_UPLOAD''' TO itab.
        APPEND 'EXPORTING' TO itab.
        CONCATENATE 'filename = ' ''''
                    winfile '''' INTO w_line SEPARATED BY space.
        APPEND w_line TO itab.
        APPEND 'filetype = ''DAT''' TO itab.
        APPEND 'TABLES' TO itab.
        APPEND 'DATA_TAB = IT_TAB.' TO itab.
      
        IF p_clear = 'X'.
          CONCATENATE 'SELECT * FROM'
                      tabname
                      'INTO TABLE IT_TAB2.' INTO w_line SEPARATED BY space.
          APPEND w_line TO itab.
      
          APPEND 'LOOP AT IT_TAB2.' TO itab.
          CONCATENATE 'DELETE'
                      tabname
                      'FROM IT_TAB2.' INTO w_line SEPARATED BY space.
          APPEND w_line TO itab.
          APPEND 'ENDLOOP.' TO itab.
          APPEND 'COMMIT WORK.' TO itab.
        ENDIF.
      
        APPEND 'LOOP AT IT_TAB.' TO itab.
        CONCATENATE 'MODIFY'
                    tabname
                    'FROM IT_TAB.' INTO w_line SEPARATED BY space.
        APPEND w_line TO itab.
        APPEND 'ENDLOOP.' TO itab.
      
        APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.
      
        APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.
        APPEND 'WRITE: /1 syst-vline,' TO itab.
        APPEND '''IMPORT'',' TO itab.
        APPEND '15 ''data line(s) have been imported'',' TO itab.
        APPEND '68 syst-index,' TO itab.
        APPEND '80 syst-vline.' TO itab.
        APPEND 'ULINE.' TO itab.
      
        APPEND 'ENDFORM.' TO itab.
      
        GENERATE SUBROUTINE POOL itab NAME zname.
        PERFORM upload IN PROGRAM (zname).
      ENDFORM.
      
      *---------------------------------------------------------------------*
      *       FORM PROCESS_TOP_OF_PAGE                                      *
      *---------------------------------------------------------------------*
      FORM process_top_of_page.
        FORMAT COLOR COL_HEADING INTENSIFIED ON.
        ULINE.
      
        CONCATENATE syst-sysid
                    syst-saprl
                    syst-host INTO w_system SEPARATED BY space.
      
        WRITE : AT /1(syst-linsz) w_system CENTERED.
        WRITE : AT 1 syst-vline, syst-uname.
        syst-linsz = syst-linsz - 11.
        WRITE : AT syst-linsz syst-repid(008).
        syst-linsz = syst-linsz + 11.
        WRITE : AT syst-linsz syst-vline.
      
        LOOP AT textpool_tab WHERE id EQ 'R'.
          WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.
        ENDLOOP.
        WRITE : AT 1 syst-vline, syst-datum.
        syst-linsz = syst-linsz - 11.
        WRITE : AT syst-linsz syst-tcode(004).
        syst-linsz = syst-linsz + 11.
        WRITE : AT syst-linsz syst-vline.
      
        LOOP AT textpool_tab WHERE id EQ 'T'.
          WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.
        ENDLOOP.
        WRITE : AT 1 syst-vline, syst-uzeit.
        syst-linsz = syst-linsz - 11.
        WRITE : AT syst-linsz 'Page', syst-pagno.
        syst-linsz = syst-linsz + 11.
        WRITE : AT syst-linsz syst-vline.
        ULINE.
      
        FORMAT COLOR COL_HEADING INTENSIFIED OFF.
        LOOP AT textpool_tab WHERE id EQ 'H'.
          WRITE : AT /1(syst-linsz) textpool_tab-entry.
        ENDLOOP.
      
        ULINE.
      ENDFORM.
      

      Edited by: Alvaro Tejada Galindo on Feb 12, 2008 6:01 PM

  • Feb 12, 2008 at 10:19 PM

    if you have data in itab and table to be updated is of same structure.

    then use:

    modify Ztable from itab. <<<<< all the data in itab will be updated into Ztable.. based on the primary key fields.

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo
    Former Member
    Feb 12, 2008 at 10:49 PM

    Hi,

    The program given has to be modified everytime in excel sheet but this cant be done every time that to by functional guys..

    Can you help me by providing a program to update the table directly by giving input values in field selection options when they run that program

    With Regards,

    Ravi Kanth Yechuri.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      you can modify the program...

      instead of uploading and downloading in excel.. you can pass the data to internal table and then update the database table with update statement.... only little change needed

  • author's profile photo
    Former Member
    Feb 13, 2008 at 11:27 PM

    Hi,

    Can Any one help me on this.

    With Regards,

    Ravi Kanth

    Add comment
    10|10000 characters needed characters exceeded