应用服务器文件操作语句及其功能:
语句 | 功能 | 说明 |
OPEN DATASET | 打开文件 | 打开一个文件以供后续读取操作;或打开一个文件以供后续写入操作 |
READ DATASET | 读取文件操作 | 从文件中读取数据岛程序的数据结构中 |
TRAMSFER | 将数据写入文件 | 将程序中的数据写入文件 |
CLOSE DATASET | 关闭文件 | 关闭文件,标识文件处理结束 |
DELETE DATASET | 删除文件 | 删除应用服务器上的数据文件 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
写入文件程序 *&---------------------------------------------------------------------* *& Report ZTCXHTEST_WRITE_FILE *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTCXHTEST_WRITE_FILE. DATA: fname(60) TYPE c VALUE 'samplefile.txt'. TYPES: BEGIN OF line, col1(1) TYPE c, col2(10) TYPE c, END OF line. TYPES itab TYPE line OCCURS 10. DATA: lin TYPE line, tab TYPE itab. DO 5 TIMES. lin-col1 = sy-index. lin-col2 = sy-index ** 2. APPEND lin TO tab. ENDDO. OPEN DATASET fname FOR OUTPUT IN TEXT MODE ENCODING UTF-8. LOOP AT tab INTO lin. TRANSFER lin TO fname. ENDLOOP. CLOSE DATASET fname. ---------------------------------------------- 读取文件 *&---------------------------------------------------------------------* *& Report ZTCXHTEST_READ_FILE *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTCXHTEST_READ_FILE. DATA: fname(60) TYPE c VALUE 'samplefile2.txt', text1(12) TYPE c VALUE 'abcdefghijkl', text2(5) TYPE c, len TYPE i. OPEN DATASET fname FOR OUTPUT IN BINARY MODE. TRANSFER text1 TO fname. CLOSE DATASET fname. OPEN DATASET fname FOR INPUT IN BINARY MODE. DO. READ DATASET fname INTO text2 LENGTH len. WRITE: / sy-subrc, text2, len. IF sy-subrc <> 0. EXIT. ENDIF. ENDDO. CLOSE DATASET fname. ------------------------------------------------ *&---------------------------------------------------------------------* *& Report ZTCXHTEST_OPERATE_ON_APPSERVER 将结构体写入文件 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTCXHTEST_OPERATE_ON_APPSERVER. TABLES bkpf. DATA dsn(20) TYPE c VALUE 'bbkpf.dat'. DATA rec LIKE bbkpf. OPEN DATASET dsn FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. IF sy-subrc <> 0. EXIT. ENDIF. SELECT * FROM bkpf UP TO 10 ROWS. CLEAR rec. rec-stype = '1'. rec-tcode = 'FB01'. rec-bldat = sy-datum. rec-bukrs = bkpf-bukrs. rec-belnr = bkpf-belnr. rec-blart = bkpf-blart. TRANSFER rec TO dsn. ENDSELECT. CLOSE DATASET dsn. OPEN DATASET dsn FOR INPUT IN TEXT MODE ENCODING DEFAULT. DO. READ DATASET dsn INTO rec. IF sy-subrc <> 0. EXIT. ENDIF. WRITE: / rec. ENDDO. CLOSE DATASET dsn. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/1709.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
评论列表(3条)
最近在做接口,从第三方系统传回的数据往sap insert的时候随机报DBSQL_DUPLICATE_KEY_ERROR错误,理论上应该会有数据丢失,但是比较了第三方系统和SAP内insert的数据,发现并无丢失,猜测有可能是HANA数据库bug。
因此计划在insert内表到透明表前先将数据写一份到ABAP服务器上备份,以便今后再出现dump的时候好和透明表里的数据做比较。
逻辑如下:
*—–debug for DBSQL_DUPLICATE_KEY_ERROR———-
DATA lv_filetmp TYPE rlgrap-filename.
lv_filetmp = ‘/usr/sap/sapteam/oms_instrface.txt’.
OPEN DATASET lv_filetmp FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT gt_zthyordreturn_ins.
TRANSFER gt_zthyordreturn_ins TO lv_filetmp.
ENDLOOP.
CLOSE DATASET lv_filetmp.
*—-endof debug for DBSQL_DUPLICATE_KEY_ERROR———-
*—-insert.
INSERT zthyreturnord FROM TABLE gt_zthyordreturn_ins.
为免程序出错,先人工登录sap服务器,创建lv_filetmp文件。
文件的权限需要授权给prdadm,chown oms_instrface.txt prdadm:sapsys