You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个用户的$TMP对象转移至单个包/文件夹?

批量转移多用户$TMP对象至指定包的解决方案

方法1:通过SE03工具批量处理

  1. 启动事务码SE03,在对象目录条目分类下选择「更改对象目录条目」,点击执行。
  2. 在筛选界面:
    • 「对象类型」:可按需选择(如程序PROG、函数组FUGR等),若要覆盖所有类型可留空或全选
    • 「所有者」:输入需要处理的多个用户名,用逗号分隔(如USER1,USER2,USER3)
    • 「对象目录」:输入$TMP,仅筛选临时对象
  3. 执行筛选后,选中所有需要转移的对象条目(可通过顶部「全选」按钮批量选择)。
  4. 点击工具栏的「更改对象目录」,在弹出窗口中输入目标包名称,同时指定一个传输请求(若需传输),确认后完成批量转移。

方法2:通过ABAP程序批量更新

如果SE03的筛选逻辑无法满足需求,可编写简单的ABAP程序直接操作TADIR表(操作前务必备份数据):

REPORT Z_MOVE_TMP_OBJECTS.

PARAMETERS: p_target TYPE tadir-devclass OBLIGATORY,
            p_users TYPE string OBLIGATORY, " 多用户用逗号分隔,如USER1,USER2
            p_trkorr TYPE e070-trkorr OPTIONAL.

DATA: lt_users TYPE TABLE OF xubname,
      ls_tadir TYPE tadir,
      lt_tadir TYPE TABLE OF tadir.

* 拆分用户列表
SPLIT p_users AT ',' INTO TABLE lt_users.

* 查询符合条件的$TMP对象
SELECT * FROM tadir
  INTO TABLE lt_tadir
  WHERE devclass = '$TMP'
    AND uname IN @lt_users.

IF sy-subrc = 0.
  LOOP AT lt_tadir INTO ls_tadir.
    ls_tadir-devclass = p_target.
    MODIFY tadir FROM ls_tadir TRANSPORTING devclass
      WHERE obj_name = ls_tadir-obj_name
        AND obj_type = ls_tadir-obj_type.
    " 如果需要绑定传输请求,需更新E071表
    IF p_trkorr IS NOT INITIAL.
      INSERT e071 FROM VALUE #( trkorr = p_trkorr
                                obj_name = ls_tadir-obj_name
                                obj_type = ls_tadir-obj_type
                                devclass = p_target )
        ON DUPLICATE KEY UPDATE devclass = p_target.
    ENDIF.
  ENDLOOP.
  COMMIT WORK.
  WRITE: / '成功转移', lines(lt_tadir), '个对象至包', p_target.
ELSE.
  WRITE: / '未找到符合条件的$TMP对象'.
ENDIF.

执行程序时,输入目标包、待处理的用户列表(逗号分隔),可选指定传输请求,即可完成批量转移。

注意事项

  • 确保拥有S_DEVELOP权限,且目标包已存在(若不存在需先通过SE21创建)
  • 转移对象时,若对象已被锁定,需先解锁(可通过SM12查看并处理锁定)
  • 若需要将对象传输至其他系统,务必指定有效的传输请求,避免对象丢失

内容的提问来源于stack exchange,提问作者Priyanka Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:00:11