如何在SAP ABAP中创建文件时设置(Unix)权限?

6

您可能会认为这很明显,但是通过文档、SAP论坛、谷歌等搜索,我一直没有成功。我正在使用以下代码在Solaris文件系统上创建一个ABAP文件:

OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

生成的文件根据预定义的管理员用户进行所有权和分组,这很好,但麻烦在于权限设置为660/rw-rw----,这意味着我无法查看结果。有没有一种方法(可能使用那个含糊定义的TYPE添加?)可以指定新文件的结果权限?

谢谢!

3个回答

4

前往SM69,创建逻辑系统命令,可以将其命名为ZCHMOD。

将该命令映射到chmod,然后使用正确的参数进行调用(在命令行中使用man chmod查看帮助)。

CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
  EXPORTING
    commandname                   = 'ZCHMOD'
    additional_parameters         = l_par
    operatingsystem               = l_os
  TABLES
    exec_protocol                 = it_log
  EXCEPTIONS
    no_permission                 = 1
    command_not_found             = 2
    parameters_too_long           = 3
    security_risk                 = 4
    wrong_check_call_interface    = 5
    program_start_error           = 6
    program_termination_error     = 7
    x_error                       = 8
    parameter_expected            = 9
    too_many_parameters           = 10
    illegal_command               = 11
    wrong_asynchronous_parameters = 12
    cant_enq_tbtco_entry          = 13
    jobcount_generation_error     = 14
    OTHERS                        = 15.

显然,这需要分为两个步骤完成,但是它是有效的。

3

这在4.6B版本中有效:

        CONCATENATE 'chmod ugo=rw ' lc_filename
          INTO lc_chmod SEPARATED BY space.
        CALL 'SYSTEM' ID 'COMMAND' FIELD lc_chmod.

希望这能帮到你。
祝好, Heiko

对于公共写入存在疑虑,请尝试使用“ug=rw,o=r”。 - Jonathan Leffler

1
在RZ10中添加参数install/umask。默认值为007,您可以更改它:000、002等。因此,创建的文件将是-rw-rw-rw-,-rw-rw-r--...

问候,您可能不希望为 所有 新文件设置此掩码。 - tomdemuyt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接