标签:文件 FS 检查 接口 DATASET ABAP 授权 基础知识
ABAP文件接口包含如下语句:
-
OPEN DATASET
-
TRANSFER
-
READ DATASET
-
GET DATASET
-
SET DATASET
-
TRUNCATE DATASET
-
CLOSE DATASET
-
DELETE DATASET
可以使用以上语句编辑当前应用服器上的文件。但是应用服务器上的文件,通常不适合作为应用程序数据的持久存储库,因为这种数据被保存的方式特定于平台,并且只有当前的应用服务器可以访问,这个可能会对于多个应用服务器的系统来说有问题。但是来自应用服务器的文件可以用来和其他系统交换数据。
一些基本知识:
1.物理和逻辑文件名
在文件接口的所有语句中使用文件的物理名字,特定平台通过物理名字定位文件,这就是为什么文件不能够在一个程序里被多次打开。文件的物理名字通常由路径描述和文件名组成,文件名可以有空格,空格是文件名的一部分,实际的符号取决于应用服务器的操作系统。如果一个文件名没有路径描述,自动使用配置参数DIR_HOME(RZ11可以查看)的目录。
为了编写平台独立程序,推荐创建文件的逻辑名字,对每个平台逻辑路径是和实际的物理文件路径关联的。系统中提供以下功能维护文件的逻辑名字:
-
非特定客户端的文件逻辑名(事务码FILE)
-
有客制活动的特定客户端的文件逻辑名(SF01)
一些相关函数和方法:
-
FILE_GET_NAME:对逻辑文件名,确定对于当前平台物理文件名是有效,然后可以在文件接口语句中使用。
-
在SAP GUI输入的逻辑文件名的输入框,可以使用函数FILE_LOGFILE_ALIAS_PBO,FILE_LOGFILE_ALIAS_PAI和FILE_LOGFILE_ALIAS_F4,这些函数创建一个列表框,检查输入的值,并且调用一个合适的输入帮助。
-
类CL_FS_PATH包含了分析,变换或者生成文件名和路径条目
2.文件访问授权
文件的授权访问包括自动授权检查和文件名验证。
自动授权检查是在数据访问的时候自动进行以下授权检查:
-
在操作系统的检查
-
独立于程序的访问权限检查
-
对特殊文件的授权检查
-
对无效文件的给用户和程序的授权检查
(1)在操作系统的检查
从应用服务器上操作系统角度来看,所有的文件被AS ABAP访问,因此AS ABAP操作系统的用户必须有权限读写所有要被ABAP文件接口操作的文件和目录,如果这个授权不存在,文件接口语句只能部分使用,或者不能使用。由于操作系统的授权执行语句失败,返回sy-subrc不等于0。
(2)独立于程序的访问权限检查
使用语句OPEN DATASET,READ DATASET,TRANSFER和DELETE访问文件的时候,自动检查验证表SPTH中的条目,表中的条目控制了从ABAP程序到文件的读,写和是否被备份。在数据表SPTH,通常可以禁止指定文件的读写访问,独立于授权对象 ,而且对于存在的文件,授权检查可以在授权对象的基础进行,数据表SPTH中的授权组来自表SPTHB(SPTHT:文本,视图:V_SPT)。
SPTH表如下:
列 |
含义 |
PATH |
文件的路径。 |
SAVEFLAG |
'X':PATH中的路径被包含到备份过程。 |
FS_NOREAD |
'X':代表路径不能通过ABAP访问,这个设置重写FS_NOWRITE和FS_BRGRU,同样的还有在授权对象S_DATASET上的授权检查。 |
FS_NOWRITE |
'X':代表路径不能通过ABAP进行写访问。这个设置设置重写FS_BRGRU,同样的还有在授权对象S_DATASET上的授权检查。 |
FS_BRGRU |
定义授权组。通过这种方式多行上的文件可以组合到一起。在评估数据库表SPTH。为当前用户做授权对象S_PATH的检查包含两个字段RS_BRGRU和ACTVT。用这种方式,访问PATH中指定的文件可以给不同的用户授权。如果没有输入名字,不会进行授权对象S_PATH的检查。 |
说明:和在ABAP程序中使用授权对象S_DATASET(见下面)授权检查比较,使用授权对象S_PATH授权检查是独立的。因此,检查不限于单个文件,也包含所有PATH列通用指定的文件。
例子:
PATH |
SAVEFLAG |
FS_NOREAD |
FS_NOWRITE |
FS_BRGRU |
* |
- |
X |
X |
- |
/tmp |
- |
- |
- |
- |
/tmp/myfiles |
X |
- |
- |
FILE |
在/tmp中的文件,所有的程序可以读,写,只有拥有授权组FILE授权的用户可以读写访问/tmp/myfiles,这个路径的文件也设计用来备份。
(3)对特殊文件的授权检查
每次PSE文件(扩展名.pse,Personal Security Environment)被访问,当前用户会被授权对象S_RZL_ADM进行授权检查,默认ACTVT=‘01’。
(4)对无效文件用户和程序的授权检查
每次使用ABAP文件接口进行文件的打开或者删除,都会使用授权对象S_DATASET对当前用户和程序进行授权检查。这个授权对象包含的授权字段有PROGRAM(程序名),FILENAME(被打开的文件名),ACTVT(Delete,Read,Write,Read with Filter,Write with Filter),如果用户或者程序没有必要的授权,不可处理的异常会出现。为了避免这个,可是使用函数AUTHORITY_CHECK_DATSET在相关ABAP语句之前检查授权是否存在。
3.锁
文件接口没有包含任何的集成锁机制确保只有一个ABAP程序在同一时刻被访问。如果多个用户在同一个时刻写一个文件,结果是不可预期的,为了避免这个问题,使用SAP锁或者明确的文件名,比如UUID。当应用层的多个应用服务器试图在同一时刻访问同一个文件,尽管有SAP锁,冲突依旧可以出现,例如,当操作系统在将数据写到文件之前保存数据到buffer。
4.文件接口的系统类:CL_ABAP_FILE_UTILITIES
标签:文件,FS,检查,接口,DATASET,ABAP,授权,基础知识 来源: https://www.cnblogs.com/mach-arch/p/16243364.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。