Tabelleneinträge autom. in Transport aufnehmen

Mit diesem kleinen Demo-Programm zeigen wir Ihnen, wie Sie einfach Tabelleneinträge in einen Transportauftrag aufnehmen können. In dem Programm werden Länder selektiert und mit Auswahlkästchen angezeigt. Nach Markierung einzelner Einträge können diese mit „Sichern“ in einen zu wählenden Auftrag aufgenommen werden.

 
REPORT zz_r3tr_tabu LINE-SIZE 255.
*** Variablen
DATA:
  lt_e071     LIKE e071             OCCURS 0 WITH HEADER LINE,
  lt_e071k    LIKE e071k            OCCURS 0 WITH HEADER LINE,
  lt_data     LIKE t005             OCCURS 0 WITH HEADER LINE,
  lv_checkbox TYPE c,
  tr_order    LIKE e071-trkorr,
  tr_task     LIKE e071-trkorr.
*** Selektionsbild
SELECT-OPTIONS:
  s_land1 FOR lt_data-land1.

START-OF-SELECTION.
*** Liststatus mit Funktionscode "SICH"
  SET PF-STATUS '1'.
*** Selektion der Länder
  SELECT * FROM t005 INTO TABLE lt_data
   WHERE land1 IN s_land1.
*** Ausgabe
  LOOP AT lt_data.
    WRITE /1 lv_checkbox AS CHECKBOX INPUT ON.
    WRITE    lt_data-land1.
  ENDLOOP.
END-OF-SELECTION.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN 'SICH'.
*** Sichern: Aufnahme der markierten Einträge
      REFRESH: lt_e071, lt_e071k.
*** Auswahl eines Auftrags
      CALL FUNCTION 'TRINT_ORDER_CHOICE'
           EXPORTING
                wi_order_type = 'W'
                wi_task_type  = 'Q'
                wi_category   = 'CUST'
           IMPORTING
                we_order      = tr_order
                we_task       = tr_task
           TABLES
                wt_e071       = lt_e071
                wt_e071k      = lt_e071k
           EXCEPTIONS
                OTHERS        = 6.
      CHECK sy-subrc = 0.
      DO.
*** Markierte Länder ermitteln
        READ LINE sy-index FIELD VALUE
              lv_checkbox lt_data-land1.
        IF sy-subrc > 0.
*** Ende der Liste
          EXIT.
        ELSEIF lv_checkbox <> space.
*** E071 füllen
          lt_e071-trkorr      = space.
          lt_e071-as4pos      = 0.
          lt_e071-pgmid       = 'R3TR'.
          lt_e071-object      = 'TABU'.
          lt_e071-obj_name    = 'T005'.
          lt_e071-objfunc     = 'K'.
          COLLECT lt_e071.
*** E071K - Schlüsseleinträge füllen
          lt_e071k-trkorr     = space.
          lt_e071k-pgmid      = 'R3TR'.
          lt_e071k-object     = 'TABU'.
          lt_e071k-objname    = 'T005'.
          lt_e071k-as4pos     = 0.
          lt_e071k-mastertype = 'TABU'.
          lt_e071k-mastername = 'T005'.
          lt_e071k-viewname   = space.
          lt_e071k-objfunc    = space.
*** Schlüssel basteln
          CONCATENATE sy-mandt lt_data-land1
                 INTO lt_e071k-tabkey.
          COLLECT lt_e071k.
        ENDIF.
      ENDDO.
      IF NOT lt_e071k[] IS INITIAL.
*** Aufnahme der Einträge in Transportauftrag
        CALL FUNCTION 'TR_APPEND_TO_COMM_OBJS_KEYS'
             EXPORTING
                  wi_trkorr = tr_task
             TABLES
                  wt_e071   = lt_e071
                  wt_e071k  = lt_e071k
             EXCEPTIONS
                  OTHERS    = 68.
        IF sy-subrc = 0.
          MESSAGE s000(vz)
             with 'Einträge aufgenommen in Transport' tr_order.
        ENDIF.
      ENDIF.
  ENDCASE.
 
image_pdfimage_print