ABAP寫數據到SAP服務器文件並讀取


一、在應用服務器中打開文件OPEN DATASET [options]此句打開文件。如果不指定任何模式選項,則文件將按二進制模式打開。如果系統不能打開文件,則將系統字段SY-SUBRC設置為8,否則SY-SUBRC返回0
二、打開文件讀取OPEN DATASET FOR INPUT IN TEXT MODE ENCODING DEFAULT .(以TXT文件打開)
三、打開文件寫入OPEN DATASET FOR OUTPUT IN TEXT MODE ENCODING DEFAULT .(以TXT文件打開寫入,這種是打開文件完全重寫)
四、打開文件追加 OPEN DATASET FOR APPENDING IN TEXT MODE ENCODING DEFAULT .(以TXT文件打開寫入,這種是打開文件追加記錄)
五、關閉應用服務器上的文件 CLOSE DATASET .
六、刪除應用服務器上的文件 DELETE DATASET .
七、向應用服務器上文件上寫入數據TRANSFER to [LENGTH ].
八、向應用服務器上文件上讀取數據READ DATASET INTO [LENGTH ].
常用事務代碼:
1.AL11,服務器上的文件
2.CG3Y 下載文件
3.CG3Z 上傳文件
注:以上文字內容來自http://blog.csdn.net/lbxp521/article/details/6741534

以下代碼來自http://blog.sina.com.cn/s/blog_4a3450310101jlhg.html
保存內表數據到服務器程序

REPORT  ydownvbak.
TABLES:vbak,vbap.
DATA:BEGIN OF wa_itab ,
     vbeln LIKE vbak-vbeln,
     vkorg LIKE vbak-vkorg,
     erdat LIKE vbak-erdat,
     kunnr LIKE vbak-kunnr,
     posnr LIKE vbap-posnr,
     matnr LIKE vbap-matnr,
     kwmeng LIKE vbap-kwmeng,
END OF wa_itab.
DATA:itab LIKE wa_itab OCCURS 0 WITH HEADER LINE.
DATA:g_file LIKE rlgrap-filename.
DATA:s_file LIKE rlgrap-filename.
DATA:menge(20).
DATA:line(1000) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_erdat FOR vbak-erdat,
               s_vbeln FOR vbak-vbeln,
               s_kunnr FOR vbak-kunnr,
               s_vkorg FOR vbak-vkorg.
PARAMETERS:p_client AS CHECKBOX,
           p_dnfile LIKE rlgrap-filename DEFAULT 'D:\',
           p_server AS CHECKBOX,
           p_sefile LIKE rlgrap-filename DEFAULT '/usr/sap/tmp/'.
SELECTION-SCREEN END OF BLOCK bl1 .
INITIALIZATION.
  t1 = '選擇條件'.
START-OF-SELECTION.
  PERFORM sub_read_data.

END-OF-SELECTION.
  PERFORM sub_write_data.
*&---------------------------------------------------------------------*
*&      Form  SUB_READ_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_read_data .
  SELECT vbak~vbeln vkorg vbak~erdat kunnr posnr matnr kwmeng
  INTO TABLE itab
  FROM vbak
  JOIN vbap ON vbap~vbeln = vbak~vbeln
  WHERE vbak~vbeln IN s_vbeln
    AND vbak~erdat IN s_erdat
    AND vkorg IN s_vkorg
    AND kunnr IN s_kunnr.
ENDFORM.                    " SUB_READ_DATA
*&---------------------------------------------------------------------*
*&      Form  SUB_WRITE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_write_data .
  IF p_client = 'X'.
    CONCATENATE p_dnfile 'SD' sy-datum sy-uzeit '.TXT' INTO g_file. "文本格式
    CALL FUNCTION 'WS_DOWNLOAD'
      EXPORTING
        filename = g_file
        filetype = 'DAT'
      TABLES
        data_tab = itab.  "被下載的內表
  ENDIF.
  IF p_server = 'X'.
    CONCATENATE p_sefile 'SD' sy-datum '.txt' INTO s_file. "服務器保存的目錄和文件名
    OPEN DATASET s_file FOR OUTPUT IN TEXT MODE  ENCODING DEFAULT .  "打開文件
    if sy-subrc = 0.
    LOOP AT itab INTO wa_itab.
      menge = wa_itab-kwmeng.
      CONCATENATE wa_itab-vkorg
                  wa_itab-kunnr
                  wa_itab-vbeln
                  wa_itab-erdat
                  wa_itab-posnr
                  wa_itab-matnr
                  menge
      INTO line SEPARATED BY ''.
      TRANSFER line TO s_file .
      IF sy-subrc NE 0 .
        MESSAGE 'ERROR!!' type 'E'.
      ENDIF.
      CLEAR line .
    ENDLOOP.
    CLOSE DATASET s_file.
    else.
      MESSAGE 'OPEN ERROR!!' type 'E'.
    endif.
  ENDIF.
ENDFORM.                    " SUB_WRITE_DATA

讀取服務器上的文件:

REPORT  YDOWNFILE.
data:p_file LIKE rlgrap-filename value '/usr/sap/tmp/SD20111130.txt'.
data:p_line(100).
OPEN DATASET p_file for INPUT in TEXT MODE ENCODING DEFAULT.
if sy-subrc ne 0.
  MESSAGE '讀取文件出錯!' type 'E'.
endif.
do.
  READ DATASET p_file INTO p_line.
  if sy-subrc ne 0.
   exit.
  else.
  write:/ p_line.
 endif.
enddo.

CLOSE DATASET p_file.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM