Сжатие строк в транспортном запросе

У меня есть код для запроса транспорта, и проблема в том, что он создает новый объект (насколько я понимаю) каждый раз, когда я нажимаю кнопку добавления к транзакции.

Код:

data lt_variable_changed type table of ztr_req .

  data:
    lf_e071  type  e071,
    lf_e071k type  e071k,
    lt_e071  type table of e071,
    lt_e071k type table of e071k.

  "before adding to transort request check for transport query
  if var_query is not initial.
    clear lt_variable_changed.

    call method grid->get_selected_rows                              " get index of row
      importing
        et_index_rows = lt_rows.


    if lt_rows is not initial.

      loop at lt_rows into ls_row.                           
        read table lt_variable index ls_row into ls_variable.
        append ls_variable to lt_variable_changed.
      endloop.

     

      lf_ev_order = 'EASK900417'. " Selected request
      lf_ev_task  = var_query.  "  Selected Task

      call function 'TR_ORDER_CHOICE_CORRECTION'  
        exporting
          iv_category            = 'SYST'
        importing
          ev_order               = lf_ev_order       " Selected request EASK900415
          ev_task                = lf_ev_task        " Selected Task    EASK900416
        exceptions
          invalid_category       = 1
          no_correction_selected = 2
          others                 = 3.
      if sy-subrc <> 0.
        exit.
      endif.

      lf_e071-pgmid = 'R3TR'.
      lf_e071-object = 'TABU'.
      lf_e071-obj_name = 'ZTR_REQ'.
      lf_e071-objfunc = 'K'.
      lf_e071-lang = sy-langu.
      append lf_e071 to lt_e071.

      "add all table entries in table zxa_header that need to be transported to lt_e071k
      loop at lt_variable_changed into ls_variable.

        lf_e071k-pgmid = 'R3TR'.
        lf_e071k-object = 'TABU'.
        lf_e071k-objname = 'ZTR_REQ'.
        lf_e071k-mastertype = 'TABU'.
        lf_e071k-mastername = 'ZTR_REQ'.
        lf_e071k-lang       = sy-langu.
        lf_e071k-tabkey     = |{ sy-mandt }{ ls_variable-num }|.

        append lf_e071k to lt_e071k.
        clear lf_e071k.
      endloop.


      call function 'TR_APPEND_TO_COMM_OBJS_KEYS'   
        exporting
          wi_trkorr                      = lf_ev_task
        tables
          wt_e071                        = lt_e071
          wt_e071k                       = lt_e071k
        exceptions
          others                         = 68.

    endif.
  endif.

в итоге 1 раз показывает (я выбрал 2 строчку добавить в задачу): выбрал 2 строки добавить в задачу

в результате 2 раза мне показывает(выбрал 3 строчку добавить в задачу): выбрал 3 строки добавить в задачу

Как вы можете видеть, он создает второй объект + добавляет 3 строки, которые я хочу добавить к задаче в первом объекте.

Пожалуйста, объясните мне, как я могу сделать это в 1 объекте программным способом (я знаю о сортировке и сжатии в se01).

Большое спасибо за любую информацию и удачи!


person letronas    schedule 06.08.2018    source источник
comment
Отвечает ли это на ваш вопрос? Добавить строки таблицы в транспортный запрос   -  person Suncatcher    schedule 01.06.2020


Ответы (1)


до сегодняшнего дня я пытался найти правильное решение, и я могу сказать, что есть только одно, что мы можем сделать, это использовать модуль «TR_SORT_AND_COMPRESS_COMM»:

call function 'TR_SORT_AND_COMPRESS_COMM'   
        exporting
          iv_trkorr                      = lf_ev_task    " Request

сделать сортировку и сжатие после добавления объектов и ключей к задаче

person letronas    schedule 14.08.2018