1

简单地说,gui_upload 函数在哪里上传 Application Server 中的文件。如何找到它们的位置,或者是否有任何 tcode 可以找到最后上传的文件或按名称搜索?

谢谢。

4

3 回答 3

4

gui_upload函数不会将文件上传到应用程序服务器。它只是从表示层读取一个文件到一个内部表中。然后,您将需要使用其他一些函数将此内部表写入应用程序服务器上的文件。

希望这可以帮助。

于 2013-03-29T09:07:43.503 回答
1

我可以确认之前的两个答案。例如,如果您想将文本/csv 文件上传到应用程序服务器,您可以使用以下代码。

使用 GUI_UPLOAD 将提供的输入文件实际读取到内部表中:

lv_filename = p_filebp.
CLEAR lt_data_tab.

IF NOT lv_filename IS INITIAL.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = lv_filename
    TABLES
      data_tab                = lt_data_tab
    EXCEPTIONS
      file_open_error         = 1
      OTHERS                  = 17.

  IF sy-subrc <> 0.
    EXIT.
  ENDIF.
ENDIF.

检查文本文件中是否有数据,是否已正确传输到内部表中。如果是这样,请将其上传到应用程序服务器上的文件。您可以自己提供一个您希望看到此上传的路径:

READ TABLE lt_data_tab INDEX 1.
IF sy-subrc <> 0.
  WRITE: / 'No data in input file.'.
ELSE.
  CONCATENATE '/interfaces/' sy-sysid '/CRM_ACTIVITIES/' sy-datum '_INPUT.CSV' INTO p_serinp.

  OPEN DATASET p_serinp FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

  IF sy-subrc NE 0.
    EXIT.
  ENDIF.

  LOOP AT lt_data_tab.
    TRANSFER lt_data_tab TO p_serinp.
    CLEAR lt_data_tab.
  ENDLOOP.

  CLOSE DATASET p_serinp.

  IF sy-subrc = 0.
    CLEAR gd_error_text.

    CONCATENATE 'Download to file: ' p_serinp ' is finished.'
    INTO gd_error_text SEPARATED BY space.

    WRITE: / gd_error_text.
  ENDIF.
ENDIF.

请记住,使用 OPEN DATASET 语句,您可以在网络上的任何位置写入文件。如果至少您获得了所需的授权。

事务 AL11可用于探索 SAP 系统上的现有文件夹和文件。

于 2013-04-17T09:43:34.660 回答
0

我手头没有 ABAP 堆栈,但我相信您正在寻找的是命令 OPEN DATASET 或类似的东西。这处理在应用程序服务器上读取和写入文件。通过 OPEN DATASET 处理的文件可以在事务 AL11 中找到。

于 2013-04-12T05:30:02.730 回答