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

时间:2008-11-10 19:22:01

标签: unix sap abap

你会认为这很明显,但通过文档,SAP论坛,谷歌搜索等搜索,我已经非常失败了。我正在使用以下代码在solaris文件系统上的ABAP中创建一个文件:

OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

生成的文件是根据预定义的管理员用户拥有和分组的,这很好,但粘性检票口是权限设置为660 / rw-rw ----,这意味着我无法检查结果。有没有办法(可能使用模糊定义的TYPE添加?)我可以在新文件中指定结果权限吗?

谢谢!

3 个答案:

答案 0 :(得分: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.

显然,这将是一个两步的过程,但它确实有效。

答案 1 :(得分:3)

这适用于4.6B:

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

希望这有帮助。

干杯, 的Heiko

答案 2 :(得分:1)

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