Transportabgleich
Bei Transportaufträgen ist es schwierig, die Übersicht zu behalten. Da passiert es schnell, dass durch einen alten Transportauftrag ein jüngerer Sourcecode wieder überschrieben wird. Dieses Programm soll die Übersicht ein wenig einfacher machen. Das Programm zeigt sogar, welche Transporte noch vorher transportiert, bzw. welche nachträglich wieder eingespielt werden müssen um die Transportreihenfolge beizubehalten.
Dieses Programm listet alle noch nicht vollständig transportierten Transportaufträge eines oder mehrerer Benutzer auf.
Anhand eines Hakens oder eines Kreuzes wird angezeigt, ob der Auftrag bereits im Konsolidierungssystem ist und/ oder im Produktivsystem.
Positionieren Sie den Cursor auf einen Auftrag, um zu prüfen, ob vor dem Transport andere Aufträge importiert werden müssen, oder ob Aufträge nachtransportiert werden müssen.
Das Programm funktioniert nur für ABAP-Programme!
Dictionary-Objekte, Dynpros etc. werden nicht unterstützt!
Vorbereitungen
folgendes müssen sie nach dem einfügen des Quelltextes in den Editor machen:
1. Ersetzen Sie in der Parameters-Anweisung die Defaultwerte für Ihre Systeme.
2. Legen sie den PF-Status “LISTE” an:
(+) Listfunktionen einmischen!
Funktion CHCK Vor ICON_NEXT_STEP
Funktion CHCKR Nach ICON_PREVIOUS_STEP
Funktion REFR Refresh ICON_REFRESH
Quelltext
REPORT ZZTRANSCHECK LINE-SIZE 170 NO STANDARD PAGE HEADING. INCLUDE <icon>. TABLES: E070V, E070, E071, *E071. DATA: zicon_okay(4) VALUE icon_okay, zicon_activate(4) VALUE icon_activate, zicon_transport(4) VALUE icon_transport, zicon_cancel(4) VALUE icon_cancel. TYPES: BEGIN OF ts, date LIKE sy-datum, time LIKE sy-uzeit, END OF ts. DATA: current_ts TYPE ts, CHECK_TS TYPE TS, P_RUECK TYPE C, WT_E071 LIKE E071 OCCURS 0 WITH HEADER LINE, WT_E071K LIKE E071K OCCURS 0 WITH HEADER LINE, WT_E070V LIKE E070V OCCURS 0 WITH HEADER LINE, T071 LIKE E071 OCCURS 0 WITH HEADER LINE, X071 LIKE E071 OCCURS 0 WITH HEADER LINE, TARSYS_PROD(3), TARSYS_KONS(3), ICON_KONS(4), ICON_PROD(4), KONS_VORHANDEN, PROD_VORHANDEN, BEGIN OF t_e071_checked OCCURS 0, trkorr LIKE e070v-trkorr, as4user LIKE e070v-as4user, as4date LIKE e070v-as4date, as4time LIKE e070v-as4time, KONS, PROD, END OF t_e071_checked, vorhanden, xaktiv(40), DEST(20), korr LIKE e070-trkorr, aktuelle_zeile LIKE sy-index, xhotspot(8), we_de LIKE trpari-w_e07t, merk_user(12), LISTE_KONS LIKE ABAPLIST OCCURS 0 WITH HEADER LINE, LISTE_PROD LIKE ABAPLIST OCCURS 0 WITH HEADER LINE, liste_hrd LIKE abaplist OCCURS 0 WITH HEADER LINE, liste LIKE abaplist OCCURS 0 WITH HEADER LINE, v VALUE '|'. *>>> Eigentümer der Transportaufträge SELECT-OPTIONS: s_user FOR sy-uname DEFAULT sy-uname, *>>> Auftragsnummer s_trkorr FOR korr. *>>> Aufträge selektieren ab Datum PARAMETERS: p_datvon LIKE sy-datum DEFAULT sy-datum, *>>> Sofort prüfen p_check AS CHECKBOX DEFAULT space, *>>> Nur nicht vollständig transportierte anzeigen P_TRANS AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN ULINE. *>>> Konsolidierungssystem PARAMETERS: P_SYKONS(3) DEFAULT 'Q01', *>>> Produktivsystem P_SYPROD(3) DEFAULT 'P01'. INITIALIZATION. p_datvon = sy-datum - 30. TOP-OF-PAGE. PERFORM top_of_page. TOP-OF-PAGE DURING LINE-SELECTION. CHECK sy-lsind = 0. PERFORM top_of_page. START-OF-SELECTION. TARSYS_KONS = P_SYKONS. TARSYS_PROD = P_SYPROD. *>>> PF-Status: *>>> (+) Listfunktionen einmischen! *>>> CHCK Vor ICON_NEXT_STEP *>>> CHCKR Nach ICON_PREVIOUS_STEP *>>> REFR Refresh ICON_REFRESH SET PF-STATUS 'LISTE'. PERFORM ausgabe. AT USER-COMMAND. CASE sy-ucomm. WHEN 'REFR'. *** Liste aktualisieren sy-lsind = 0. aktuelle_zeile = sy-staro. PERFORM ausgabe. WHEN 'CHCK'. *** Vorwärtsprüfung: Vorher zu transportierende Aufträge CHECK e070v NE space. p_rueck = space. PERFORM check_objekte. WHEN 'CHCKR'. *** Rückwärtsprüfung: Nachzutransportierende Aufträge CHECK e070v NE space. p_rueck = 'X'. PERFORM check_objekte. ENDCASE. CLEAR e070v. AT LINE-SELECTION. CLEAR xhotspot. GET CURSOR FIELD xhotspot. CASE sy-ucomm. WHEN 'PICK'. IF e070v-trkorr NE space. *** Stückliste des Auftrags anzeigen CALL FUNCTION 'TR_EDITOR_COMM' EXPORTING wi_dequeue = 'X' wi_read_only = 'X' wi_trkorr = e070v-trkorr. ENDIF. ENDCASE. *---------------------------------------------------------------------* * FORM AUSGABE * *---------------------------------------------------------------------* FORM ausgabe. CLEAR merk_user. SELECT * FROM e070v INTO TABLE wt_e070v WHERE trkorr in s_trkorr AND trfunction IN ('K', 'W') AND trstatus = 'R' AND TARSYSTEM = TARSYS_KONS AND as4user IN s_user AND as4date GE p_datvon AND langu = sy-langu ORDER BY as4user as4date as4time trkorr. LOOP AT wt_e070v. IF wt_e070v-as4user <> merk_user. merk_user = wt_e070v-as4user. WRITE: / 'Für den Benutzer', wt_e070v-as4user COLOR 4, 'sind folgende Aufträge freigegeben:', / sy-uline(126). ENDIF. e070v = wt_e070v. PERFORM LIES_E070 USING TARSYS_PROD CHANGING PROD_VORHANDEN. PERFORM LIES_E070 USING TARSYS_KONS CHANGING KONS_VORHANDEN. if p_trans = 'X'. CHECK KONS_VORHANDEN = SPACE OR PROD_VORHANDEN = SPACE. endif. WRITE: /4 E070V-TRKORR(10), V. HIDE e070v-trkorr. CASE e070v-trfunction. WHEN 'R'. WRITE: 'Reparatur ', v. WHEN 'K'. WRITE: 'Änd.Auftrag', v. WHEN 'W'. WRITE: 'Customizing', v. WHEN OTHERS. WRITE: e070v-trfunction, v. ENDCASE. PERFORM WRITE_STATUS USING TARSYS_KONS. PERFORM WRITE_STATUS USING TARSYS_PROD. WRITE: e070v-as4date, v, e070v-as4time, v, e070v-as4text(60), v. IF e070v-strkorr NE space. WRITE: 'Transportiert mit:', e070v-strkorr. ENDIF. IF p_check = 'X' and ( KONS_VORHANDEN = SPACE OR PROD_VORHANDEN = SPACE ). PERFORM check_objekte. ENDIF. ENDLOOP. SCROLL LIST TO FIRST PAGE LINE aktuelle_zeile INDEX 1. CLEAR e070v-trkorr. ENDFORM. *---------------------------------------------------------------------* * FORM LIES_E070 * *---------------------------------------------------------------------* FORM lies_e070 USING dest CHANGING vorhanden. CLEAR korr. *-- Wenn Customizingaufgaben an einen anderen Transportauftrag * gehängt werden, so steht dieser in E070-STRKORR * Wenn STRKORR gefüllt ist, dann diesen Auftrag zum Lesen nehmen IF e070v-strkorr = space. korr = e070v-trkorr. ELSE. korr = e070v-strkorr. ENDIF. PERFORM read_tr USING dest korr vorhanden. ENDFORM. *---------------------------------------------------------------------* * FORM TOP_OF_PAGE * *---------------------------------------------------------------------* FORM top_of_page. WRITE: / sy-uline(126), /6 'Korrektur', 20 'Typ', 31 'KONS', 36 'PROD', / sy-uline(126). ENDFORM. *&---------------------------------------------------------------------* *& Form WRITE_STATUS *&---------------------------------------------------------------------* FORM write_status USING status. CASE status. WHEN TARSYS_KONS. CASE KONS_VORHANDEN. WHEN 'X'. ICON_KONS = ZICON_OKAY. WHEN 'A'. ICON_KONS = ZICON_ACTIVATE. WHEN 'W'. ICON_KONS = ZICON_TRANSPORT. WHEN ' '. ICON_KONS = ZICON_CANCEL. ENDCASE. IF ICON_KONS = ZICON_CANCEL. WRITE: ICON_KONS AS ICON NO-GAP, 34 '|'. ELSE. WRITE: ICON_KONS AS ICON NO-GAP, 34 '|'. ENDIF. CASE PROD_VORHANDEN. WHEN 'X'. ICON_PROD = ZICON_OKAY. WHEN 'A'. ICON_PROD = ZICON_ACTIVATE. WHEN 'W'. ICON_PROD = ZICON_TRANSPORT. WHEN ' '. ICON_PROD = ZICON_CANCEL. ENDCASE. IF ICON_PROD = ZICON_CANCEL. WRITE: ICON_PROD AS ICON HOTSPOT ON NO-GAP, 39 '|'. ELSE. WRITE: ICON_PROD AS ICON NO-GAP, 39 '|'. ENDIF. ENDCASE. ENDFORM. " WRITE_STATUS *&---------------------------------------------------------------------* *& Form CHECK_OBJEKTE *&---------------------------------------------------------------------* FORM check_objekte. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING TEXT = e070v-trkorr. SELECT * FROM e071 INTO TABLE x071 WHERE trkorr = e070v-trkorr. LOOP AT x071. e071 = x071. *e071 = e071. SELECT * FROM e071 INTO TABLE t071 WHERE pgmid = *e071-pgmid AND object = *e071-object AND obj_name = *e071-obj_name AND trkorr NE e071-trkorr. SELECT SINGLE * FROM e070 WHERE trkorr = x071-trkorr. current_ts-date = e070-as4date. current_ts-time = e070-as4time. REFRESH t_e071_checked. LOOP AT t071. SELECT SINGLE * FROM e070v WHERE trkorr = t071-trkorr. check_ts-date = e070v-as4date. check_ts-time = e070v-as4time. if p_rueck = space. CHECK check_ts < current_ts. else. check check_ts > current_ts. endif. CHECK e070v-trfunction = 'K'. *-- Konsolidierung vorhanden? --* PERFORM READ_TR USING TARSYS_KONS T071-TRKORR T_E071_CHECKED-KONS. *-- Produktiv vorhanden? --* PERFORM READ_TR USING TARSYS_PROD T071-TRKORR T_E071_CHECKED-PROD. *-- Sätze merken t_e071_checked-trkorr = e070v-trkorr. t_e071_checked-as4user = e070v-as4user. t_e071_checked-as4date = e070v-as4date. t_e071_checked-as4time = e070v-as4time. IF T_E071_CHECKED-KONS = SPACE OR T_E071_CHECKED-PROD = SPACE. APPEND t_e071_checked. ENDIF. ENDLOOP. CHECK NOT t_e071_checked[] IS INITIAL. *-- Ausgabe WRITE: /5 e071-pgmid COLOR COL_TOTAL, e071-object COLOR COL_TOTAL, e071-obj_name COLOR COL_TOTAL, e071-objfunc COLOR COL_TOTAL, e071-lockflag COLOR COL_TOTAL, e071-gennum COLOR COL_TOTAL. SORT t_e071_checked BY as4date DESCENDING as4time DESCENDING. LOOP AT t_e071_checked. SELECT SINGLE * FROM e070v WHERE trkorr = t_e071_checked-trkorr. WRITE: /10 t_e071_checked-trkorr, t_e071_checked-as4user, t_e071_checked-as4date, t_e071_checked-as4time. IF T_E071_CHECKED-KONS = 'X'. WRITE 'KONS' COLOR 5. ELSE. WRITE 'KONS' COLOR 6. ENDIF. IF T_E071_CHECKED-PROD = 'X'. WRITE 'PROD' COLOR 5. ELSE. WRITE 'PROD' COLOR 6. ENDIF. WRITE e070v-as4text INTENSIFIED OFF. HIDE e070v. ENDLOOP. ENDLOOP. ENDFORM. " CHECK_OBJEKTE *---------------------------------------------------------------------* * FORM READ_TR * *---------------------------------------------------------------------* FORM READ_TR USING DEST TYPE ANY tr LIKE korr vorhanden_flag. CALL FUNCTION 'TR_READ_COMM' DESTINATION dest EXPORTING wi_dialog = ' ' wi_sel_e070 = 'X' wi_trkorr = tr IMPORTING we_e070 = e070 we_e07t_doesnt_exist = we_de TABLES wt_e071 = wt_e071 wt_e071k = wt_e071k EXCEPTIONS not_exist_e070 = 1 no_authorization = 2 OTHERS = 3. IF sy-subrc = 0. vorhanden_flag = 'X'. ELSE. vorhanden_flag = space. ENDIF. ENDFORM. "read_tr
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024