Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to store multiple files from SAp in to Application server?

Former Member
0 Kudos

Hi Guys,

Can anybody tell me how to store multiple files from SAP into Application server.in my application i have to get the data from SAP tables BSEG , BKPF , BSAK and BSIK that to daily i have to do.

Any Logic or Code for how to do is welcomed.

plz help me urgently.

Thanks,

Gopi

10 REPLIES 10

Former Member
0 Kudos

Hi Gopi,

Just get the data into the different internal tables and after that Loop on each table and use OPEN DATASET... CLOSE DATASET.

Just search in SDN you will find lots of program on downloading data on application server.

Revert back if further query.

Regards,

Atish

Former Member
0 Kudos

hello Gopi,

Better to use multiple open dataset command for ur requirement.

also use file transaction to get dynamic files.

open dataset p_file1 for output in text mode default encoding binary.

loop at ur table.

transfer tabledata to p_file

endloop.

Close dataset p_file.

open dataset p_file2 for output in text mode default encoding binary.

loop at ur table.

transfer tabledata to p_file2

endloop.

Close dataset p_file2.

Former Member
0 Kudos

You can repeat the same code by assigning different filename each time for different internal table.

OPEN DATASET FILENAME IN TEXT MODE.

LOOP AT ITAB1.

TRANSFER ITAB1 TO IT_FILELIST-FILENAME.

ENDLOOP.

CLOSE DATASET IT_FILELIST-FILENAME.

OPEN DATASET FILENAME IN TEXT MODE.

LOOP AT ITAB2.

TRANSFER ITAB2 TO IT_FILELIST-FILENAME.

ENDLOOP.

CLOSE DATASET IT_FILELIST-FILENAME.

...

Let me know if you need code with dynamic assignment of internal tables.

0 Kudos

Hi guys,

Thanks for all ur response.I am sending u the code which i wrote.

DATA: lc_intfid TYPE zbcdeintfid VALUE 'ZFIOF0320A'.

  • Get data file name

PERFORM get_file_name USING lc_intfid CHANGING wa_gl_file.

REPLACE ALL OCCURRENCES OF lc_intfid IN wa_gl_file WITH gc_intfid.

OPEN DATASET wa_gl_file FOR OUTPUT "Write to appl. server

IN TEXT MODE

ENCODING DEFAULT. "Open dataset Return code

IF sy-subrc NE 0.

WRITE: / ' File is Not Found'.

ENDIF.

MOVE 'GL_ACCOUNT_DATA_FILE ' TO header_line-file_name.

PERFORM header_rec.

TRANSFER header_line TO wa_gl_file.

LOOP AT it_ska1_trans INTO wa_gl_out. "Load data to SAP Server.

got_cha_cnt = got_cha_cnt + 1.

MOVE got_cha_cnt TO wa_gl_temp-lineno.

MOVE wa_gl_out TO wa_gl_temp-data_rec.

TRANSFER wa_gl_temp TO wa_gl_file.

ENDLOOP.

MOVE c_text_count TO trailer_line-numberofrecs.

MOVE got_cha_cnt TO trailer_line-tot_recs.

TRANSFER trailer_line TO wa_gl_file.

CLOSE DATASET wa_gl_file.

WRITE: / 'Total Transferred Records for this file ', got_cha_cnt

But i am getting error sgort dump "file not found."

at this point "TRANSFER header_line TO wa_gl_file."

Thanks,

Gopi.

0 Kudos

Hi Gopi,

You haven't paste the whole code.

This error clearly means that the file is not found or program unable to open the same.

When ever you use OPEN DATASET, always check for sy-subrc.

If it is 0 then only write the TRANSFER command otherwise through an error that "Unable to open/find file".

Regards,

Atish

0 Kudos

After SY-SUBRC NE 0, you are not exiting the processing. So in your case, your OPEN DATASET failed but you continued to go further to do TRANSFER.

Add the addition 'MESSAGE v_message' to the OPEN DATASET statement where v_message is a variable of char type and long enough to store a message. After the OPEN DATASET is executed and if it fails, you will find the error message in this variable.

0 Kudos

Hi Guys,

I have a Basic doubt.for that first we have to create any directory like that?

or Open dataset takes care of everything?.

can anybody tell me the General transaction code for seeing Application server?

Thanks,

Gopi.

0 Kudos

Hi Gopi,

The files on the application server you can see using FILE and AL11.

You just can't see application server directly, ask your BASIS, they will guide you.

OPEN DATASET doesn't create the directory for you, you have to create the same.

Do reward points to all useful answers.

Regards,

Atish

Message was edited by:

Atish Sarda

0 Kudos

Hi Gopi,

You can use AL11 to see the application server directories.

Regards,

donepudi

0 Kudos

Hi,

directories creates basis. If you have task to store data in application server you already should have information into which folder you have to do it. If you don't have this information because it is just for example training for next task then you can use your personal folder into which you have access. To get list of all available folders please look at attached code and form get_directories (you get the list of folders you see in transaction AL11). But don't forget: If you are using open dataset you have to have rights to access application folder!

Here you are code which I use to upload text files from local disc into application folder

Regards,

Karol



*&---------------------------------------------------------------------*
*& Report  FILE_PC_TO_SAP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  FILE_PC_TO_SAP.

DATA: BEGIN OF searchpoints OCCURS 100,
        DIRNAME(200)     TYPE c, " name of directory.
        sp_name(100)     TYPE c," name of entry. (may end with *)
      END OF searchpoints.

DATA: BEGIN OF isearchpoints OCCURS 10,
        dirname(75) TYPE c,            " name of directory.
        aliass(75)  TYPE c,            " alias for directory.
        svrname(75) TYPE c,            " svr where directory is availabl
        sp_name(75) TYPE c,            " name of entry. (may end with *)
        sp_cs(10)   TYPE c,            " ContainsString pattern for name
      END OF isearchpoints.


data: l_file type filetable.
data: l_rc   type i.
data: itab   type TABLE OF string.

data: g_tmp_file_path type rlgrap-filename.
data: wa_itab type string.
data: h_destin(100) type c.
data: dat      type string.

INITIALIZATION.

perform get_directories.

START-OF-SELECTION.

parameters: in_file type string OBLIGATORY LOWER CASE.
parameters: destin(100) type c OBLIGATORY LOWER CASE.

CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
   FILENAME                      = in_file
   "FILETYPE                      = 'BIN'
   FILETYPE                      = 'ASC'
   HAS_FIELD_SEPARATOR           = ' '
   HEADER_LENGTH                 = 0
   READ_BY_LINE                  = 'X'
   DAT_MODE                      = ' '
  TABLES
    DATA_TAB                     = itab
 EXCEPTIONS
   FILE_OPEN_ERROR               = 1
   FILE_READ_ERROR               = 2
   NO_BATCH                      = 3
   GUI_REFUSE_FILETRANSFER       = 4
   INVALID_TYPE                  = 5
   NO_AUTHORITY                  = 6
   UNKNOWN_ERROR                 = 7
   BAD_DATA_FORMAT               = 8
   HEADER_NOT_ALLOWED            = 9
   SEPARATOR_NOT_ALLOWED         = 10
   HEADER_TOO_LONG               = 11
   UNKNOWN_DP_ERROR              = 12
   ACCESS_DENIED                 = 13
   DP_OUT_OF_MEMORY              = 14
   DISK_FULL                     = 15
   DP_TIMEOUT                    = 16
   OTHERS                        = 17.

IF sy-SUBRC <> 0.
  write: / 'Error during loading input file!'.
ENDIF.

if h_destin is INITIAL.
  h_destin = in_file.
endif.

CONCATENATE destin h_destin into dat SEPARATED BY '/'.

*TRANSLATE dat TO UPPER CASE.

OPEN DATASET dat FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-SUBRC = 0.
  loop at itab into wa_itab.
     TRANSFER: wa_itab TO dat.
  endloop.

  CLOSE DATASET dat.

  write: / 'File uploaded!'.
ELSE.
  write: / 'Not possible to open dataset'.
ENDIF.

at selection-screen on value-request for in_file.

  perform select_input_file_name.
  loop at l_file into g_tmp_file_path.
    move g_tmp_file_path to in_file.

    h_destin = ''.
    SPLIT g_tmp_file_path at '\' into table itab.
    loop at itab into g_tmp_file_path.
      h_destin = g_tmp_file_path.
    endloop.
  endloop.

at selection-screen on value-request for destin.

  DATA: lt_dfies    TYPE TABLE OF dfies.
  DATA: lwa_dfies   TYPE dfies.

  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname    = '/BI0/PCO_AREA'
      lfieldname = 'CO_AREA'
    IMPORTING
      dfies_wa   = lwa_dfies.
  lwa_dfies-tabname = 'searchpoints'.
  lwa_dfies-REPTEXT   = 'Destination directory'.
  lwa_dfies-LENG      = 100.
  lwa_dfies-INTLEN    = 100.
  lwa_dfies-OUTPUTLEN = 100.
  lwa_dfies-fieldname = 'SP_NAME'.
  APPEND lwa_dfies TO lt_dfies.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD = 'SP_NAME'
      DYNPPROG = SY-REPID
      DYNPNR = SY-DYNNR
      DYNPROFIELD = 'destin'
      VALUE_ORG = 'S'
    TABLES
      VALUE_TAB = searchpoints
      FIELD_TAB = lt_dfies
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS = 3.

*&---------------------------------------------------------------------*
*&      Form  select_input_file_name
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form select_input_file_name.
*  call function 'F4_FILENAME'
*       exporting
*            program_name  = sy-repid
*            dynpro_number = sy-dynnr
*            field_name    = 'PATH'
*       importing
*            file_name     = g_tmp_file_path.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
  EXPORTING
  WINDOW_TITLE = 'Please choose a file'
  "default_extension = '*.TXT'
  "default_filename = 'C:\*.txt'
  initial_directory = 'C:\'
  file_filter = '*.*'
  CHANGING
  FILE_TABLE = l_file
  RC = l_RC
  EXCEPTIONS
  FILE_OPEN_DIALOG_FAILED = 1
  CNTL_ERROR = 2
  ERROR_NO_GUI = 3
  NOT_SUPPORTED_BY_GUI = 4
  OTHERS = 5.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

endform.                    "select_input_file_name


*&---------------------------------------------------------------------*
*&      Form  WRITE_DB_HOME
*&---------------------------------------------------------------------*
*       Write DB home directory
*----------------------------------------------------------------------*
*       no parameters
*----------------------------------------------------------------------*
FORM write_db_home.
  CASE sy-dbsys(3).
    WHEN 'ORA'.
      CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_ORAHOME'
                         ID 'VALUE' FIELD searchpoints-dirname.
*--- C5056155 Start of ALV -------------------------------*
*      PERFORM flip_flop(rsora000) USING cflag.
*      WRITE: / 'DIR_ORAHOME',       30 searchpoints-dirname.
      MOVE: 'DIR_ORAHOME'        TO searchpoints-sp_name.
      APPEND searchpoints.
*--- C5056155 End   of ALV -------------------------------*

    WHEN 'ADA'.
      CALL 'C_GETENV' ID 'NAME'  FIELD 'DBROOT'
                      ID 'VALUE' FIELD searchpoints-dirname.
*--- C5056155 Start of ALV -------------------------------*
*      PERFORM flip_flop(rsora000) USING cflag.
*      WRITE: / 'DIR_ADA_DBROOT',    30 searchpoints-dirname.
      MOVE: 'DIR_ADA_DBROOT'     TO searchpoints-sp_name.
      APPEND searchpoints.
*--- C5056155 End   of ALV -------------------------------*
    WHEN 'INF'.
      CALL 'C_GETENV' ID 'NAME'  FIELD 'INFORMIXDIR'
                      ID 'VALUE' FIELD searchpoints-dirname.
*--- C5056155 Start of ALV -------------------------------*
*      PERFORM flip_flop(rsora000) USING cflag.
*      WRITE: / 'DIR_INF_INFORMIXDIR', 30 searchpoints-dirname.
      MOVE: 'DIR_INF_INFORMIXDIR' TO searchpoints-sp_name.
      APPEND searchpoints..
*--- C5056155 End   of ALV -------------------------------*
    WHEN 'DB6'.
      CALL 'C_GETENV' ID 'NAME'  FIELD 'INSTHOME'
                      ID 'VALUE' FIELD searchpoints-dirname.
      IF sy-subrc = 0.
*--- C5056155 Start of ALV -------------------------------*
*        PERFORM flip_flop(rsora000) USING cflag.
*        WRITE: / 'DIR_DB2_HOME',    30 searchpoints-dirname.
        MOVE: 'DIR_DB2_HOME'       TO searchpoints-sp_name.
        APPEND searchpoints.
*--- C5056155 End   of ALV -------------------------------*
      ELSE.
        EXIT.
      ENDIF.
    WHEN OTHERS.
      EXIT.
  ENDCASE.
ENDFORM.                    " WRITE_DB_HOME

FORM get_directories.
* get the name and aliases of ALL userdefined directories
  SELECT * FROM user_dir INTO isearchpoints
    WHERE svrname = sy-uname.
    MOVE isearchpoints-dirname to searchpoints-dirname.
    MOVE isearchpoints-aliass  to searchpoints-sp_name.
    APPEND searchpoints.
  ENDSELECT.

  SELECT * FROM user_dir INTO isearchpoints
    WHERE svrname = 'all'.
    MOVE isearchpoints-dirname to searchpoints-dirname.
    MOVE isearchpoints-aliass  to searchpoints-sp_name.
    APPEND searchpoints.
  ENDSELECT.


* Get DB home
  IF sy-dbsys(3) = 'ADA'.
    PERFORM write_db_home.
  ENDIF.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_ATRA'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_ATRA'           TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_BINARY'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_BINARY'         TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory $DIR_CCMS
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_CCMS'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_CCMS'           TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_CT_LOGGING'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_CT_LOGGING'     TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_CT_RUN'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_CT_RUN'         TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_DATA'
                     ID 'VALUE' FIELD searchpoints-dirname.


  MOVE: 'DIR_DATA'           TO searchpoints-sp_name.
  APPEND searchpoints.

* Get DB home
  IF sy-dbsys(3) = 'DB6'.
    PERFORM write_db_home.
  ENDIF.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_DBMS'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_DBMS'           TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_EXECUTABLE'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_EXECUTABLE'     TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_EXE_ROOT'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_EXE_ROOT'       TO searchpoints-sp_name.
  APPEND searchpoints.

*get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_GEN'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_GEN'            TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_GEN_ROOT'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_GEN_ROOT'       TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_GLOBAL'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_GLOBAL'         TO searchpoints-sp_name.
  APPEND searchpoints.

  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_GRAPH_EXE'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_GRAPH_EXE'      TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_GRAPH_LIB'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_GRAPH_LIB'      TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_HOME'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_HOME'           TO searchpoints-sp_name.
  APPEND searchpoints.

* Get DB home
  IF sy-dbsys(3) = 'INF'.
    PERFORM write_db_home.
  ENDIF.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_INSTALL'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_INSTALL'        TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_INSTANCE'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_INSTANCE'       TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_LIBRARY'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_LIBRARY'        TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_LOGGING'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_LOGGING'        TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the files written by the memory inspector
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_MEMORY_INSPECTOR'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_MEMORY_INSPECTOR' TO searchpoints-sp_name.
  APPEND searchpoints.

* Get DB home
  IF sy-dbsys(3) = 'ORA'.
    PERFORM write_db_home.
  ENDIF.

*get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_PAGING'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_PAGING'         TO searchpoints-sp_name.
  APPEND searchpoints.

*get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_PUT'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_PUT'            TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_PERF'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_PERF'           TO searchpoints-sp_name.
  APPEND searchpoints.

  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_PROFILE'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_PROFILE'        TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_PROTOKOLLS'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_PROTOKOLLS'     TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_REORG'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_REORG'          TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_ROLL'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_ROLL'           TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_RSYN'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_RSYN'           TO searchpoints-sp_name.
  APPEND searchpoints.

* calculate directory for saphostagent (no sapparam available...)
  IF ( sy-opsys(3) = 'WIN' ) OR ( sy-opsys(3) = 'Win' ).
    DATA: windir_path(64),  programfiles_path(64).
*   hoping that ProgramFiles is set in service user environment
    CALL 'C_GETENV' ID 'NAME'  FIELD 'ProgramFiles'
                    ID 'VALUE' FIELD programfiles_path.

    IF programfiles_path IS INITIAL.
*     %ProgramFiles% not available. guess from windir
      CALL 'C_GETENV' ID 'NAME'  FIELD 'windir'
                      ID 'VALUE' FIELD windir_path.
*     e.g. S:\WINDOWS ==> S:\Program Files
      CONCATENATE windir_path(3) 'Program Files' INTO programfiles_path.
    ENDIF.

    CONCATENATE programfiles_path '\SAP\hostctrl'
                                             INTO searchpoints-dirname.
  ELSE.
*   on UNIX, the path is hard coded
    searchpoints-dirname = '/usr/sap/hostctrl'.
  ENDIF.

  MOVE: 'DIR_SAPHOSTAGENT' TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_SAPUSERS'
                     ID 'VALUE' FIELD searchpoints-dirname.
  IF searchpoints-dirname = '.'.
    IF sy-opsys = 'Windows NT'.
      searchpoints-dirname = '.\'.
    ELSE.
      searchpoints-dirname = './'.
    ENDIF.
  ENDIF.

  MOVE: 'DIR_SAPUSERS'       TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_SETUPS'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_SETUPS'         TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_SORTTMP'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_SORTTMP'        TO searchpoints-sp_name.
  APPEND searchpoints.

*get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_SOURCE'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_SOURCE'         TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_TEMP'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_TEMP'           TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_TRANS'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_TRANS'          TO searchpoints-sp_name.
  APPEND searchpoints.

  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_TRFILES'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_TRFILES'        TO searchpoints-sp_name.
  APPEND searchpoints.

* get name of directory with the error files
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD 'DIR_TRSUB'
                     ID 'VALUE' FIELD searchpoints-dirname.

  MOVE: 'DIR_TRSUB'          TO searchpoints-sp_name.
  APPEND searchpoints.

*  get the name of the current server.
  CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'rdisp/myname'
                     ID 'VALUE' FIELD searchpoints-dirname.

  data: h_ind type i.
  LOOP AT searchpoints.
    h_ind = sy-tabix.
    IF searchpoints-sp_name IS INITIAL.
      DELETE searchpoints INDEX h_ind.
    ENDIF.
  ENDLOOP.
ENDFORM.