Tips and Tricks for the ABAP® Programming Language

ZFAV – Upload and Download of SAPGUI Favorites

Upload and Download of Favorites (From Version SAP relases 4.6x)

Parameters:
P_UNAME SAP User
P_LANGU Sprache
P_EXP Export
P_IMP Import
P_TYPE Übertragungsformat der Daten
P_PATH Pfad
P_TEST Testmodus

ABAP-Source-Code

You can copy and paste the source code directly into the ABAP-Workbench.

REPORT ZFAV .
*
**********************         HEADER                    **************
*
* Copyright (c) 2001 by xxxx xxx, 44318 Anywhere, http://xxxxx
* or: Copyright (c) 2001 by X.X. from X.
*
*     You can use or modify this report for your own work as long
*               as you don't try to sell or republish it.
*      In no event will the author be liable for indirect, special,
*        Incidental, or consequental damages (if any) arising out of
*                       the use of this report.
*//////////////////////////////////////////////////////////////////////*
* Append your coding here ...
*&---------------------------------------------------------------------*
*& Report  ZFAV                                                        *
*& Favoriten Upload/Downl.                                             *
*& Rel. 4.6B                                                           *
*&---------------------------------------------------------------------*
*& Author : Klaus Todebusch                                            *
*&---------------------------------------------------------------------*
*-- Data  ---------------
DATA :   g_file(128)   TYPE c.
DATA :   g_path(80)    TYPE c.
DATA :   g_end(8)      TYPE c.
DATA :   g_subrc       LIKE sy-subrc.

*-- Parameters -----------
PARAMETERS: p_uname LIKE sy-uname DEFAULT sy-uname.
PARAMETERS: p_langu LIKE sy-langu DEFAULT sy-langu.
SELECTION-SCREEN SKIP.
PARAMETERS:     p_imp  RADIOBUTTON GROUP act .
PARAMETERS:     p_exp  RADIOBUTTON GROUP act DEFAULT 'X'.

SELECTION-SCREEN ULINE.
SELECTION-SCREEN BEGIN OF BLOCK fil.
PARAMETERS:     p_type LIKE rlgrap-filetype DEFAULT 'ASC'.
PARAMETERS:     p_path LIKE g_path DEFAULT 'C:\TEMP\XXX.MEN'.

PARAMETERS: p_test AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END   OF BLOCK fil.

*-- Data  ---------------
DATA: it_user_nodes TYPE TABLE OF bxmnodes1 WITH HEADER LINE.
DATA: it_fav_nodes TYPE TABLE OF bxmnodes  WITH HEADER LINE.
*-- DL Itab
DATA: BEGIN OF it_pcf OCCURS 0,
       line(4096) TYPE c.
DATA: END OF it_pcf.

*-----------------------------------------------------------------------
* INITIALIZATION
*-----------------------------------------------------------------------
INITIALIZATION.
  REPLACE 'XXX' WITH sy-uname INTO p_path.
  CONDENSE p_path NO-GAPS.
  sy-title = 'Upload/Download Favoritenliste 4.6B'.
*-----------------------------------------------------------------------
* START-OF-SELECTION
*-----------------------------------------------------------------------
START-OF-SELECTION.

  CLEAR it_user_nodes[].
  CLEAR it_fav_nodes[].

  g_file = p_uname.

  IF p_uname <> sy-uname.
    MESSAGE w398(00) WITH 'Current User <> User to be modified!'.
  ENDIF.
* -- Hauptverarbeitung
  IF p_imp  = 'X'.
    PERFORM import_fav         TABLES it_fav_nodes.
    PERFORM write_fav_db       TABLES it_fav_nodes.
  ELSEIF p_exp  = 'X'.
    PERFORM export_fav         TABLES it_fav_nodes.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  DATA_EXPORT
*&---------------------------------------------------------------------*
FORM data_export TABLES   pit_pcf
                 USING    p_file.
  IF p_test <> 'X'.
    CALL FUNCTION 'DOWNLOAD'
         EXPORTING
              filename                = p_file
              filetype                = p_type
         TABLES
              data_tab                = pit_pcf
         EXCEPTIONS
              file_open_error         = 1
              file_write_error        = 2
              invalid_filesize        = 3
              invalid_table_width     = 4
              invalid_type            = 5
              no_batch                = 6
              unknown_error           = 7
              gui_refuse_filetransfer = 8
              OTHERS                  = 9.
    IF sy-subrc NE 0.
      WRITE: / 'Fehler beim schreiben für Datei' , p_file.
    ENDIF.
  ENDIF.
ENDFORM.                               " DATA_EXPORT
*&---------------------------------------------------------------------*
*&      Form  DATA_IMPORT
*&---------------------------------------------------------------------*
FORM data_import TABLES   pit_pcf
                 USING    p_file p_subrc.
  IF p_test <> 'X'.
    CALL FUNCTION 'UPLOAD'
         EXPORTING
              filename                = p_file
              filetype                = p_type
         TABLES
              data_tab                = pit_pcf
         EXCEPTIONS
              conversion_error        = 1
              file_open_error         = 2
              file_read_error         = 3
              invalid_table_width     = 4
              invalid_type            = 5
              no_batch                = 6
              unknown_error           = 7
              gui_refuse_filetransfer = 8
              OTHERS                  = 9.
    IF sy-subrc NE 0.
      WRITE: / 'Fehler beim lesen der Datei' , p_file.
      p_subrc = sy-subrc .
    ENDIF.
  ENDIF.
ENDFORM.                               " DATA_IMPORT

*&---------------------------------------------------------------------*
*&      Form  IMPORT_FAV
*&---------------------------------------------------------------------*
FORM import_fav TABLES   pit_fav_nodes STRUCTURE it_fav_nodes.
  g_file = p_path.
  PERFORM data_import  TABLES it_fav_nodes USING  g_file g_subrc .
ENDFORM.                               " IMPORT_FAV
*&---------------------------------------------------------------------*
*&      Form  EXPORT_FAV
*&---------------------------------------------------------------------*
FORM export_fav TABLES   pit_fav_nodes STRUCTURE it_fav_nodes.
  CALL FUNCTION 'BX_FAVOS_READ_ALL_NODES'
       EXPORTING
            user_name              = p_uname
            language               = p_langu
*            SORT_NODES             = ' '
*            GENERATE_URL           = ' '
*            REPLACE_RFC_VARIABLES  = ' '
       TABLES
            output_nodes_and_texts = it_fav_nodes
*            GENERATED_URLS         =
            .

  g_file = p_path.
  PERFORM data_export  TABLES it_fav_nodes USING  g_file .
ENDFORM.                               " EXPORT_FAV

*&---------------------------------------------------------------------*
*&      Form  WRITE_FAV_DB
*&---------------------------------------------------------------------*
FORM write_fav_db TABLES   pit_fav_nodes STRUCTURE it_fav_nodes.
* --> Favoriten wegschreiben
  IF p_test <> 'X'.
    CALL FUNCTION 'BX_FAVOS_WRITE_ALL_NODES'
         EXPORTING
              user_name             = p_uname
              target_client         = sy-mandt
         TABLES
              input_nodes_and_texts = pit_fav_nodes.
  ENDIF.

ENDFORM.                               " WRITE_FAV_DB