Hi, you can use the attached and linked report instead of getting requests one after the other in the systems you work with,
Simple to use, you give the request number or task number to the top (if you give the request, all the tasks under it are automatically added)

If you check Release, it will send it to the queue of the target system,

The “TOC:” prefix is added to the beginning of the request definition, if you used 60 full characters in the definition, the last 5 characters are removed.

*&---------------------------------------------------------------------*
*& Report ZTOC
*&---------------------------------------------------------------------*
************************************************************************
*----------------------------------------------------------------------*
* Description : TOC oluşturma programı
************************************************************************
REPORT ZTOC.
TABLES: e070, e071.
*** SELECTION-SCREEN ***
SELECTION-SCREEN : BEGIN OF SCREEN 200.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE tblock1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) treq FOR FIELD s_trtt.
SELECT-OPTIONS s_trtt FOR e071-trkorr NO INTERVALS OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) ttrgt FOR FIELD s_trgt.
SELECT-OPTIONS s_trgt FOR e070-tarsystem NO INTERVALS NO-EXTENSION OBLIGATORY DEFAULT 'XXX'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) tlib FOR FIELD chk_lib.
PARAMETERS: chk_lib AS CHECKBOX DEFAULT space.
* chk_stms AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN : END OF SCREEN 200.
*** AT SELECTION-SCREEN ***
AT SELECTION-SCREEN.
INITIALIZATION.
tblock1 = 'TOC Oluşturma'.
treq = 'Request:'.
ttrgt = 'Hedef Sistem:'.
tlib = 'Release edilsin mi?'.
*----------------------------------------------------------------------*
* CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
TYPES: ty_range_trkorr TYPE RANGE OF e071-trkorr,
BEGIN OF ty_e071,
trkorr TYPE e071-trkorr,
strkorr TYPE e070-strkorr,
as4text TYPE e07t-as4text,
END OF ty_e071.
DATA gt_e071 TYPE STANDARD TABLE OF ty_e071.
DATA gt_message TYPE esp1_message_tab_type.
CLASS-METHODS: main.
PRIVATE SECTION.
CLASS-DATA lo_report TYPE REF TO lcl_report.
METHODS: request_sorgula IMPORTING i_r_trkorr TYPE ty_range_trkorr,
toc_olustur IMPORTING i_desc TYPE e07t-as4text OPTIONAL
i_request_tipi TYPE trfunction
RETURNING VALUE(r_request) TYPE e070-trkorr,
tasklar_dahil_et IMPORTING i_req_task TYPE e070-trkorr
i_req_dest TYPE e070-trkorr,
release_et IMPORTING i_request TYPE e071-trkorr,
mesajlari_goster,
kontrol_et RETURNING VALUE(r_continuar) TYPE flag,
mesaj_ekle IMPORTING i_msgid TYPE sy-msgid
i_msgty TYPE sy-msgty
i_msgno TYPE sy-msgno
i_msgv1 TYPE sy-msgv1 OPTIONAL
i_msgv2 TYPE sy-msgv2 OPTIONAL
i_msgv3 TYPE sy-msgv3 OPTIONAL
i_msgv4 TYPE sy-msgv4 OPTIONAL.
ENDCLASS. "lcl_report DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
METHOD main.
"initial
CALL SELECTION-SCREEN 200.
CHECK sy-subrc EQ 0.
CREATE OBJECT lo_report.
FIELD-SYMBOLS <e071> TYPE ty_e071.
DATA l_request TYPE e070-trkorr.
"taskları ve requestleri toparla
lo_report->request_sorgula( i_r_trkorr = s_trtt[] ).
"kopya oluştur
l_request = lo_report->toc_olustur( i_request_tipi = 'T' ).
"toc'a taskları ekle
LOOP AT lo_report->gt_e071 ASSIGNING <e071>.
lo_report->tasklar_dahil_et(
EXPORTING
i_req_task = <e071>-trkorr
i_req_dest = l_request ).
ENDLOOP.
lo_report->release_et( i_request = l_request ).
lo_report->mesajlari_goster( ).
lcl_report=>main( ).
ENDMETHOD. "main
METHOD mesaj_ekle.
FIELD-SYMBOLS <message> TYPE esp1_message_wa_type.
APPEND INITIAL LINE TO me->gt_message ASSIGNING <message>.
<message>-msgid = i_msgid.
<message>-msgty = i_msgty.
<message>-msgno = i_msgno.
<message>-msgv1 = i_msgv1.
<message>-msgv2 = i_msgv2.
<message>-msgv3 = i_msgv3.
<message>-msgv4 = i_msgv4.
ENDMETHOD. "mesaj_ekle
METHOD mesajlari_goster.
CHECK me->gt_message[] IS NOT INITIAL.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = me->gt_message.
ENDMETHOD. "mesajlari_goster
METHOD toc_olustur.
CHECK lo_report->kontrol_et( ) EQ 'X'.
DATA: l_desc TYPE e07t-as4text,
l_msgv2 TYPE sy-msgv2.
DATA ls_request_header TYPE trwbo_request_header.
FIELD-SYMBOLS: <trtt> LIKE LINE OF s_trtt,
<e071> TYPE ty_e071.
IF i_desc IS INITIAL.
LOOP AT s_trtt ASSIGNING <trtt>.
READ TABLE me->gt_e071 ASSIGNING <e071> WITH KEY strkorr = <trtt>-low.
IF sy-subrc EQ 0 AND <e071> IS ASSIGNED.
l_desc = |TOC:{ <e071>-as4text(55) } |.
ENDIF.
* IF sy-tabix EQ 1.
* l_desc = 'TOC: ' && ' ' && <trtt>-low.
* ELSE.
* l_desc = l_desc && ' ' && <trtt>-low.
* ENDIF.
ENDLOOP.
ELSE.
l_desc = i_desc.
ENDIF.
CALL FUNCTION 'IW_C_CREATE_TRANSPORT_REQUEST'
EXPORTING
description = l_desc
transport_kind = i_request_tipi
langu = sy-langu
IMPORTING
commfile = r_request.
IF sy-subrc <> 0.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'TOC Oluştururken hata oldu').
ELSE.
l_msgv2 = r_request.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'S'
i_msgno = '001'
i_msgv1 = 'TOC başarıyla oluşturuldu '
i_msgv2 = l_msgv2 ).
ENDIF.
"hedefi belirle
"1 - oku
DATA: ls_request TYPE trwbo_request.
ls_request-h-trkorr = r_request.
CALL FUNCTION 'TR_READ_REQUEST'
EXPORTING
iv_read_e070 = 'X'
iv_read_e07t = 'X'
iv_read_e070c = 'X'
iv_read_e070m = 'X'
iv_read_objs_keys = 'X'
iv_read_attributes = 'X'
CHANGING
cs_request = ls_request
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'Request bulunamadı' ).
ENDIF.
DATA header TYPE trheader.
MOVE-CORRESPONDING ls_request-h TO header.
"2 - değiştir
DATA: ls_e070 TYPE e070,
ls_e07t TYPE e07t,
ls_e070c TYPE e070c,
ls_e070m TYPE e070m,
lv_sel_e070m TYPE trboolean VALUE ' ',
l_send_save_message TYPE trboolean.
MOVE-CORRESPONDING header TO ls_e070.
MOVE-CORRESPONDING header TO ls_e07t.
MOVE-CORRESPONDING header TO ls_e070c.
IF s_trgt-low IS INITIAL.
ls_e070-tarsystem = '/XXX/'.
ELSE.
ls_e070-tarsystem = s_trgt-low.
ENDIF.
* DATA lr_target_system TYPE RANGE OF e070-tarsystem.
* SELECT sign opti low high
* INTO TABLE lr_target_system
* FROM tvarvc WHERE name EQ 'ZTARGET_SYSTEM'.
* SELECT SINGLE low
* INTO ls_e070-tarsystem
* FROM tvarvc WHERE name EQ 'ZTARGET_SYSTEM'.
IF ls_e070-tarsystem IS INITIAL.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'STVARV tablosunda hedef sistem oluşmadı'
i_msgv2 = 'ZTARGET_SYSTEM parametresini elle oluşturun.' ).
RETURN.
ENDIF.
DATA trkorr TYPE trkorr.
trkorr = r_request.
CALL FUNCTION 'TRINT_UPDATE_COMM_HEADER'
EXPORTING
wi_e070 = ls_e070
wi_e07t = ls_e07t
wi_e070c = ls_e070c
is_e070m = ls_e070m
wi_sel_e070 = 'X'
wi_sel_e07t = 'X'
wi_sel_e070c = ' '
iv_sel_e070m = lv_sel_e070m
EXCEPTIONS
OTHERS = 1.
* CALL FUNCTION 'TRINT_UPDATE_COMM'
* EXPORTING
* wi_trkorr = trkorr
* wi_e070 = ls_e070
* IMPORTING
* we_e070 = ls_e070.
IF sy-subrc <> 0.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'Hedef sistem bulunamadı.' ).
ENDIF.
ENDMETHOD. "toc_olustur
METHOD request_sorgula.
SELECT e71~trkorr
e70~strkorr
e7t~as4text
FROM e071 AS e71
INNER JOIN e070 AS e70 ON e71~trkorr = e70~trkorr
LEFT JOIN e07t AS e7t ON e7t~trkorr = e70~trkorr
AND e7t~langu = sy-langu
INTO TABLE me->gt_e071
WHERE e70~strkorr IN s_trtt.
IF me->gt_e071[] IS INITIAL.
SELECT e71~trkorr
e70~strkorr
e7t~as4text
FROM e071 AS e71
INNER JOIN e070 AS e70 ON e71~trkorr = e70~trkorr
INNER JOIN e07t AS e7t ON e7t~trkorr = e70~trkorr
AND e7t~langu = sy-langu
INTO TABLE me->gt_e071
WHERE e70~trkorr IN s_trtt.
IF me->gt_e071[] IS INITIAL.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'Veri bulunamadı').
ENDIF.
ENDIF.
SORT me->gt_e071[] BY trkorr.
DELETE ADJACENT DUPLICATES FROM me->gt_e071 COMPARING trkorr.
ENDMETHOD. "request_sorgula
METHOD kontrol_et.
READ TABLE me->gt_message WITH KEY msgty = 'E' TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
r_continuar = 'X'.
ENDIF.
ENDMETHOD. "kontrol_et
METHOD tasklar_dahil_et.
CHECK lo_report->kontrol_et( ) EQ 'X'.
CALL FUNCTION 'TR_COPY_COMM'
EXPORTING
wi_dialog = 'X'
wi_trkorr_from = i_req_task
wi_trkorr_to = i_req_dest
wi_without_documentation = 'X'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'Taskları eklerken hata' ).
ELSE.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'S'
i_msgno = '001'
i_msgv1 = 'Tasklar başarıyla eklendi.' ).
ENDIF.
ENDMETHOD. "tasklar_dahil_et
METHOD release_et.
DATA lv_release_et TYPE abap_bool.
* " Tamamlandıysa requesti release et
IF chk_lib EQ abap_true.
lv_release_et = abap_false.
ELSE.
lv_release_et = abap_true.
ENDIF.
CHECK lo_report->kontrol_et( ) EQ 'X'.
CALL FUNCTION 'TRINT_RELEASE_REQUEST'
EXPORTING
iv_trkorr = i_request
iv_dialog = 'X'
iv_as_background_job = ''
iv_success_message = 'X'
iv_without_objects_check = 'X'
iv_without_docu = 'X'
iv_without_locking = 'X'
iv_display_export_log = 'X'
iv_ignore_warnings = ' '
iv_simulation = lv_release_et
EXCEPTIONS
cts_initialization_failure = 1
enqueue_failed = 2
no_authorization = 3
invalid_request = 4
request_already_released = 5
repeat_too_early = 6
object_lock_error = 7
object_check_error = 8
docu_missing = 9
db_access_error = 10
action_aborted_by_user = 11
export_failed = 12
execute_objects_check = 13
release_in_bg_mode = 14
release_in_bg_mode_w_objchk = 15
error_in_export_methods = 16
object_lang_error = 17
OTHERS = 18.
IF sy-subrc <> 0.
me->mesaj_ekle(
EXPORTING
i_msgid = sy-msgid
i_msgty = sy-msgty
i_msgno = sy-msgno
i_msgv1 = sy-msgv1
i_msgv2 = sy-msgv2
i_msgv3 = sy-msgv3
i_msgv4 = sy-msgv4 ).
ENDIF.
* CALL FUNCTION 'TR_RELEASE_REQUEST'
* EXPORTING
* iv_trkorr = i_request
* iv_dialog = ''
* iv_as_background_job = 'X'
* iv_success_message = 'X'
* EXCEPTIONS
* OTHERS = 0.
IF NOT lo_report->kontrol_et( ).
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'E'
i_msgno = '001'
i_msgv1 = 'Requesti release ederken hata oluştu.' ).
ELSE.
me->mesaj_ekle(
EXPORTING
i_msgid = '00'
i_msgty = 'S'
i_msgno = '001'
i_msgv1 = 'Request release edildi.' ).
ENDIF.
ENDMETHOD. "release_et
ENDCLASS. "lcl_report IMPLEMENTATION
*** START-OF-SELECTION ***
START-OF-SELECTION.
"raporu çalıştır
lcl_report=>main( ).