ABAP 参照TR创建副本TR并释放

2023-11-19

简介

一般项目中为了后期传输的统一性,都会采用传输副本请求的方式来避免出现一个需求有过多的工作台TR的情况。但是常规的创建副本请求的方式不是很便捷,因此本文介绍一种参照已有TR创建副本TR的样例。

效果

在这里插入图片描述
在这里插入图片描述

代码

*&---------------------------------------------------------------------*
*& Report YSTMS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ystms.
TYPE-POOLS:trwbo,stms.

TABLES:
  e07t,e070.

DATA:
  lt_e071            TYPE tr_objects,
  lt_e071k           TYPE tr_keys,
  lt_users           TYPE scts_users,
  ls_request_header  TYPE trwbo_request_header,
  lt_request_headers TYPE TABLE OF trwbo_request_header.
DATA ls_syst TYPE syst.

DATA:
  ls_request_from TYPE trwbo_request_header,
  ls_request_to   TYPE trwbo_request_header,
  ls_e07t         TYPE e07t,
  ls_user         LIKE LINE OF lt_users.

DATA:es_request TYPE trwbo_request.


DATA f_msg_text(80).
DATA lt_request_infos TYPE stms_wbo_requests.
DATA ls_request_infos TYPE LINE OF stms_wbo_requests.

DATA s_transport_request TYPE e070.
DATA s_request_text TYPE e07t.

*************************************************

PARAMETERS: "p_jira   TYPE string,
            p_trkorr TYPE trdyse01sn-tr_trkorr OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_trkorr.

  PERFORM value_trkorr.

START-OF-SELECTION.
  p_trkorr = condense( p_trkorr ).
  SELECT SINGLE *
    FROM e070
    INTO CORRESPONDING FIELDS OF ls_request_from
    WHERE trkorr EQ p_trkorr.

  ls_request_from-trkorr = p_trkorr.

  CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS'
    EXPORTING
      iv_trkorr          = p_trkorr
    IMPORTING
      et_request_headers = lt_request_headers
    EXCEPTIONS
      invalid_input      = 1
      OTHERS             = 2.

  LOOP AT lt_request_headers INTO ls_request_header
    WHERE NOT tarsystem IS INITIAL.
    ls_request_from-tarsystem = ls_request_header-tarsystem.
    EXIT.
  ENDLOOP.

* 获取请求号中的对象
  CALL FUNCTION 'TR_GET_OBJECTS_OF_REQ_AN_TASKS'
    EXPORTING
      is_request_header      = ls_request_from
      iv_condense_objectlist = 'X'
    IMPORTING
      et_objects             = lt_e071
      et_keys                = lt_e071k
    EXCEPTIONS
      invalid_input          = 1
      OTHERS                 = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    RAISE no_old_object.
  ENDIF.

  DELETE lt_e071 WHERE pgmid EQ 'CORR'.

  SELECT *
    INTO ls_e07t
    UP TO 1 ROWS
    FROM e07t
    WHERE trkorr EQ p_trkorr.
  ENDSELECT.

  CONCATENATE
    'Copy of'(010)
    p_trkorr '-'
    ls_e07t-as4text
    INTO ls_e07t-as4text
    SEPARATED BY space.

* create new request
  CALL FUNCTION 'TR_INSERT_REQUEST_WITH_TASKS'
    EXPORTING
      iv_type           = 'T'
      iv_text           = ls_e07t-as4text
      iv_target         = ls_request_from-tarsystem
      it_users          = lt_users
    IMPORTING
      es_request_header = ls_request_to
    EXCEPTIONS
      insert_failed     = 1
      enqueue_failed    = 2
      OTHERS            = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    PERFORM delete_new_request USING ls_request_to-trkorr.

    RAISE new_request.
  ENDIF.


* append object of old request to new request
  CALL FUNCTION 'TR_REQUEST_CHOICE'
    EXPORTING
      iv_suppress_dialog   = 'X'
      iv_request           = ls_request_to-trkorr
      it_e071              = lt_e071
      it_e071k             = lt_e071k
    IMPORTING
      es_request           = ls_request_to
    EXCEPTIONS
      invalid_request      = 1
      invalid_request_type = 2
      user_not_owner       = 3
      no_objects_appended  = 4
      enqueue_error        = 5
      cancelled_by_user    = 6
      recursive_call       = 7
      OTHERS               = 8.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    PERFORM delete_new_request USING ls_request_to-trkorr.
    RAISE append_objects.
  ENDIF.




*fill instance attribute  s_transport_request
  SELECT SINGLE * FROM e070 INTO s_transport_request
                  WHERE trkorr = ls_request_to-trkorr.

  IF sy-subrc <> 0.
    CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
      EXPORTING
        iv_request                 = ls_request_to-trkorr
*       IV_TARGET_SYSTEM           =
*       IV_DOCU_ONLY               =
*       IV_HEADER_ONLY             =
*       IV_MONITOR                 = 'X'
*       IV_VERBOSE                 =
*       IS_QUEUE                   =
*       IT_REQUESTS                =
      IMPORTING
        et_request_infos           = lt_request_infos
      EXCEPTIONS
        read_config_failed         = 1
        table_of_requests_is_empty = 2
        system_not_available       = 3
        OTHERS                     = 4.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*     MESSAGE e806(tr) WITH if_transport_request RAISING not_exists.
    ELSE.
      LOOP AT lt_request_infos INTO ls_request_infos WHERE e070-trkorr IS NOT INITIAL..
        MOVE ls_request_infos-e07t TO s_request_text.
        MOVE ls_request_infos-e070 TO s_transport_request.
        EXIT.
      ENDLOOP.
      IF sy-subrc IS NOT INITIAL.
        MESSAGE e806(tr) WITH p_trkorr RAISING not_exists.
      ENDIF.
    ENDIF.


  ELSE.
*fill instance attribute S_REQUEST_TEXT
    SELECT SINGLE * FROM e07t
                    INTO s_request_text
                    WHERE trkorr = ls_request_to-trkorr.
  ENDIF.
  DATA(out) = |{ ls_request_to-trkorr }  { ls_e07t-as4text }|.
  WRITE: out.

* release new request
  CALL FUNCTION 'TR_RELEASE_REQUEST'
    EXPORTING
      iv_trkorr                  = ls_request_to-trkorr
      iv_dialog                  = 'X'
*     IV_AS_BACKGROUND_JOB       = ' '
*     IV_SUCCESS_MESSAGE         = 'X'
      iv_display_export_log      = ' '
* IMPORTING
*     ES_REQUEST                 =
*     ET_DELETED_TASKS           =
    EXCEPTIONS
      cts_initialization_failure = 1
      enqueue_failed             = 2
      no_authorization           = 3
      invalid_request            = 4
      request_already_released   = 5
      repeat_too_early           = 6
      object_check_error         = 7
      docu_missing               = 8
      db_access_error            = 9
      action_aborted_by_user     = 10
      export_failed              = 11
      OTHERS                     = 12.
  IF sy-subrc <> 0.
    ls_syst = sy.
    PERFORM delete_new_request USING ls_request_to-trkorr.
    MESSAGE ID ls_syst-msgid TYPE 'S' NUMBER ls_syst-msgno
           WITH ls_syst-msgv1 ls_syst-msgv2 ls_syst-msgv3 ls_syst-msgv4  RAISING release_request.
  ELSE.
*    MESSAGE i888(sabapdocu) WITH '复制的请求号' ls_request_to-trkorr '已经释放'.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  delete_new_request
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM delete_new_request USING p_trkorr.

  CALL FUNCTION 'TR_DELETE_COMM'
    EXPORTING
      wi_dialog                     = ' '
      wi_trkorr                     = p_trkorr
*   IMPORTING
*     ET_DELETED_TASKS              =
    EXCEPTIONS
      file_access_error             = 1
      order_already_released        = 2
      order_contains_c_member       = 3
      order_contains_locked_entries = 4
      order_is_refered              = 5
      repair_order                  = 6
      user_not_owner                = 7
      delete_was_cancelled          = 8
      ordernumber_empty             = 9
      tr_enqueue_failed             = 10
      objects_free_but_still_locks  = 11
      order_lock_failed             = 12
      no_authorization              = 13
      wrong_client                  = 14
      project_still_referenced      = 15
      successors_already_released   = 16
      OTHERS                        = 17.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                        "delete_new_request
*&---------------------------------------------------------------------*
*&      Form  VALUE_TRKORR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM value_trkorr .

  DATA: lv_trfunctions LIKE  trpari-w_longstat,
        lv_trstatus    LIKE  trpari-w_longstat,
        lv_trkorr      TYPE  e070-trkorr,
        ls_dynpfield   LIKE dynpread,
        lt_dynpfields  LIKE dynpread    OCCURS 0.


  CALL FUNCTION 'TR_F4_REQUESTS'
    EXPORTING
      iv_username         = space
      iv_trkorr_pattern   = lv_trkorr
      iv_trfunctions      = lv_trfunctions
      iv_trstatus         = lv_trstatus
    IMPORTING
      ev_selected_request = lv_trkorr.

  p_trkorr = lv_trkorr.


ENDFORM.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ABAP 参照TR创建副本TR并释放 的相关文章

  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 基于java的学生成绩在线管理系统设计与实现

    基于java的学生成绩在线管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的学生成绩在线管理系统设计与实现的研究背景和动机是设计一个可以方便管理学生成绩的系统 该系统可以方便地记录学生的成绩 并为老师和学生提供查询和统计功能
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】毕业生就业管理微信小程序_lm9q0

    腾讯公司在2017年1月19日发布了一款不需要下载 不需要卸载 不需要存储的软件叫微信小程序 受到了很多人的喜欢 微信小程序自2017年发布至今 依托微信的社交属性和庞大的用户基数 已经渗透到生活的方方面面 1 微信小程序可以将基于微信平台
  • 面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

    面试官随便问几个问题就知道你究竟做没做过微信支付宝支付 你知道直连模式和服务商模式吗 网上的课程一般给你演示的都是直连模式 而企业中有不少是申请成为了服务商 因为里面有佣金提成 我粗俗地解释 直连模式 就是说你是一个会做生意的老板 自己会搞
  • (2024最新整理)Java最全八股文及答案!

    Java的特点 Java是一门面向对象的编程语言 面向对象和面向过程的区别参考下一个问题 Java具有平台独立性和移植性 Java有一句口号 Write once run anywhere 一次编写 到处运行 这也是Java的魅力所在 而实
  • 计算机Java项目|尤文图斯足球俱乐部网上商城系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|学生成绩管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|电影购票系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 学Python,一个月从小白到大神?看你怎么学!

    Python是一门超强大而且超受欢迎的编程语言 它被用在各种领域 比如网站开发 数据分析 人工智能和机器学习 学会Python会给你创造很多职业机会 所以绝对是值得一试的 但你有没有过这样的梦想 一个月时间 从Python小白变成Pytho
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th
  • 软件测试/测试开发|给你剖析闭包与装饰器的魔力

    测试管理班是专门面向测试与质量管理人员的一门课程 通过提升从业人员的团队管理 项目管理 绩效管理 沟通管理等方面的能力 使测试管理人员可以更好的带领团队 项目以及公司获得更快的成长 提供 1v1 私教指导 BAT 级别的测试管理大咖量身打造
  • 计算机Java项目|java游戏账号交易系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • RTKLIB源码解析(一)、单点定位(pntpos.c)

    目录 pntpos satposs estpos raim fde estvel ephclk satpos satsys seleph eph2clk ephpos eph2pos rescode lsq valsol matmul do
  • 计算机视觉入门之构建一个扫描仪

    源代码 import the necessary packages from transform import four point transform from skimage filters import threshold local
  • tengine [emerg] invalid IPv6 address in resolver “[fe80::1%enp2s0]“ in .../nginx.conf:137

    错误 nginx emerg invalid IPv6 address in resolver fe80 1 enp2s0 in usr local nginx conf nginx conf 137 解决 1 vim etc resolv
  • kafka(三)重平衡

    历史文章 kafka 一 kafka的基础与常用配置 文章目录 一 kafka消费者组 二 重平衡 Rebalance 2 1 重平衡触发条件 2 2 重平衡策略 2 2 1 Range 平均分配 2 2 2 RoundRobin 轮询分配
  • 独家

    作者 Damir Yalalov 翻译 陈超 校对 赵茹萱 本文约1100字 建议阅读5分钟 本文介绍了ChatGPT如何解决简单的机器学习任务并给出了鸢尾花分类和城市预测两个案例 一句话概括 ChatGPT可以帮助你完成简单的机器学习任务
  • ldconfig: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

    libcuda so
  • 【宠粉福利】这次我们准备了 iPhone 12、AirPods Pro、罗技鼠标等大礼等你来领!...

    喜迎开学季 C 站开豪礼 最高可开 iphone 12 盲盒开出的不只是一份礼物 更是对于一切美好的期待 拆开一个盲盒 就像开始一场未知的爱丽丝梦游仙境 为 两点一线 朝九晚九 的生活 埋下一刻期待的种子 去收获一份未知的惊喜 这次 价格再
  • CentOS 7 关闭网络限制

    1 安装CentOS 7 3操作系统mini版本即可 2 设置关闭Selinux 编辑 etc selinux config vi etc selinux config SELINUX disabled 重启机器 查看selinux状态 s
  • C++中的namespace

    namespace中文意思是命名空间或者叫名字空间 传统的C 只有一个全局的namespace 但是由于现在的程序的规模越来越大 程序的分工越来越细 全局作用域变得越来越拥挤 每个人都可能使用相同的名字来实现不同的库 于是程序员在合并程序的
  • 手撕计算机网络——应用层(四):P2P

    前言 进入应用层学习也有了一段时间了 接下来的这篇文章中小荔枝会将应用层P2P结构体系于我们客户 端系统体系在分发文件中的机理进行整理 希望今天能结束应用层学习哈哈哈 运输层我来啦 目录 前言 一 P2P的自拓展性 二 BitTorrent
  • 【高德地图API】从零开始学高德JS API(八)——地址解析与逆地址解析

    摘要 无论是百度LBS开放平台 还是高德LBS开放平台 其调用量最高的接口 必然是定位 其次就是地址解析了 又称为地理编码 地址解析 就是将地址转换为经纬度 而逆地址解析 就是将经纬度转换为地址 经纬度一般是由专业测绘机构用GPS采集 然后
  • Shell——脚本执行命令和控制语句

    前言 在正常情况下 shell按顺序执行每一条语句 直至碰到文件尾 if选择结构示例 if后面紧跟判断条件 then后面是执行语句 fi是结束标志 多重if结构示例 case多选结构 通常用于在一系列模式中匹配某个变量的值 命令 只在cas
  • CH7-查找

    文章目录 1 查找的基本概念 2 线性表的查找 2 1 顺序查找 线性查找 算法2 1 0 类型定义 算法2 1 1 顺序查找 算法2 1 2 改进后的顺序查找 性能分析 2 2 折半查找 二分或对分查找 算法2 2 1 非递归算法 算法2
  • 基于容器PaaS云技术平台方案

    本文以容器技术建设 PaaS 平台即服务 云平台的解决方案为例 分析其如何实现系统资源的集中管理 动态分配 监控 共享和调度 如何实现应用的统一部署和业务连续性保障 实现多数据中心的高可用 推动系统架构及流程的调整 应对云计算时代所带来的变
  • 分析研究<<一战到底>>节目规则演变

    分析研究 lt lt 一战到底 gt gt 节目规则演变 一 研究范围 江苏卫视2012年3月2日推出益智答题类节目 研究时间截止 2014年1月4日星期六 二 规则演变 1 初始规则 2012年3月2日规则 1 每期参加节目的有11人 分
  • 01-ZooKeeper快速入门

    1 Zookeeper概念 Zookeeper是Apache Hadoop项目下的一个子项目 是一个树形目录服务 zookeeper翻译过来就是 动物园管理员 它是用来管理Hadoop 大象 Hive 蜜蜂 Pig 小猪 的管理员 简称ZK
  • C语言程序设计 现代方法(第2版)电子书pdf下载

    C语言程序设计 现代方法 第2版 下载链接 https pan baidu com s 1XIKYGAxGhRTscgibAj3kgQ 提取码获取方式 关注下面微信公众号 回复关键字 1129
  • 关于猜数字游戏以及关机指令

    这几天学习到了一些没有接触过的东西 因此在这里记录下 首先是猜数字游戏 这个小程序特别简单 只要知道相关的几个关键函数就能明白 它的主要函数有rand 返回随机数 以及srand 用来设置随机数的起点 以及time 代码如下 include
  • 【QTUM量子链中国区】零撸180元攻略

    QTUM量子链中国区 于2020年1月7日正式上线 实名认证 无需上传 通过后赠送体验矿机一台 周期30天 总产量10QTUM 价值130元 进入官方QQ群可以目测到 这个新出的项目非常火爆 问题是 QTUM量子链中国区和著名的QTUM量子
  • ABAP 参照TR创建副本TR并释放

    简介 一般项目中为了后期传输的统一性 都会采用传输副本请求的方式来避免出现一个需求有过多的工作台TR的情况 但是常规的创建副本请求的方式不是很便捷 因此本文介绍一种参照已有TR创建副本TR的样例 效果 代码 Report YSTMS