Zum Inhalt springen

Buerger

Mitglieder
  • Gesamte Inhalte

    13
  • Benutzer seit

  • Letzter Besuch

  1. Vielen Dank schon einmal!! Ich habe das ganze bei mir jetzt nochmal umgeschrieben und es sieht nun so aus: *&---------------------------------------------------------------------* REPORT ZARTIKELDATENVERWALTEN. TABLES ZARTIKEL. DATA: okcode TYPE sy-ucomm, saveok TYPE okcode. DATA: line TYPE i, step TYPE i, limit TYPE i, fill TYPE i, c TYPE i. DATA: wa TYPE TABLE OF ZARTIKEL, its TYPE TABLE OF ZARTIKEL, itartikel TYPE ZARTIKEL, waartikel TYPE ZARTIKEL. SELECT * FROM ZARTIKEL INT O TABLE its. DESCRIBE TABLE its LINES line. CONTROLS: ARTIKEL TYPE TABLEVIEW USING SCREEN 1060. CALL SCREEN 1060. MODULE V1 INPUT. CASE okcode. WHEN 'DELETE'. DELETE its WHERE PICK = 'X'. ENDCASE. ENDMODULE. MODULE EXIT INPUT. IF okcode = 'EXIT'. LEAVE TO TRANSACTION 'ZTRANS'. ENDIF. ENDMODULE. FORM bla. IF waartikel-ARTIKEL_NR IS INITIAL. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = '01' object = 'ZNUMMERA' IMPORTING number = waartikel-ARTIKEL_NR. ENDIF. ENDFORM. module user_command_1060 input. CASE okcode. WHEN 'NEXT-LINE'. line = line + 1. limit = fill - step. IF line > limit. line = limit. ENDIF. WHEN 'PREV_LINE'. line = line - 1. IF line < 0. line = 0. ENDIF. WHEN 'NEXT_PAGE'. line = line + step. limit = fill - step. IF line > limit. line = limit. ENDIF. WHEN 'PREV_PAGE'. line = line - step. IF line < 0. line = 0. ENDIF. WHEN 'LAST_PAGE'. line = fill - step. WHEN 'FIRST_PAGE'. line = 0. WHEN 'NEXT'. c = line + 1. ENDCASE. ENDMODULE. module status_1060 output. DATA: line_count TYPE i. DESCRIBE TABLE its LINES line_count. ARTIKEL-lines = line_count + 5. endmodule. module pass_data output. READ TABLE its INTO ZARTIKEL INDEX artikel-current_line. endmodule. module modify_data INPUT. MODIFY ITS INDEX ARTIKEL-CURRENT_LINE FROM waartikel. endmodule. module function input. okcode = sy-ucomm. CASE okcode. WHEN 'DELETE'. DELETE FROM ZARTIKEL WHERE PICK = 'X'. ENDCASE. endmodule. dazu PAI/PBO: PROCESS BEFORE OUTPUT. MODULE status_1060. LOOP WITH CONTROL ARTIKEL. MODULE pass_data. ENDLOOP. PROCESS AFTER INPUT. module user_command_1060. LOOP WITH CONTROL ARTIKEL. MODULE modify_data. ENDLOOP. MODULE FUNCTION. Mein Table-Control wird dann auch gefüllt, klicke ich dann aber eine Zeile an, so und klicke auf DELETE, so läuscht er im TABLE CONTROL alle sichtbaren Zeilen raus. Ich möchte aber ja nur eine Zeile löschen, undzwar die, die ich angeklickt habe. Habt Ihr vielleicht eine Idee, wo mein Fehler liegt?? Zudem möchte ich dann natürlich auch, dass die Zeile, die ich im Table Control lösche, auch in der Tabelle ZARTIKEL gelöscht wird, hab Ihr dazu auch eine Idee?? Ich würde mich über so gute Antworten wie zuletzt wieder sehr freuen. Buerger
  2. Vielen schonmal für die schnelle Rückmeldung. Das mit der DELETE-Anweisung werde ich gleich nach Feierabend um 19 Uhr ausprobieren, vielleicht hilft das ja schon weiter. "MOVE its TO ZARTIKEL" wollte ich nutzen, um ZARTIKEL dann auch zu realisieren, dass ein Datensatz gelöscht ist...
  3. Hi, ich habe ein Table Control erstellt, welches Daten einliest. Nun möchte ich diese Daten gerne in Bezug auf die Tabelle einfügen, bearbeiten oder löschen. Hierfür habe ich bereits 3 Button erstellt. Aber wie can ich jetzt Aktionen auf die einzelnen Knöpfe legen?? Dies funktioniert bei mir nämlich noch gar nicht.... Das ist mein Code für die interne Tabelle: BEGIN OF its OCCURS 0, mark TYPE C VALUE ' ', artikel_nr TYPE ZARTIKEL-ARTIKEL_NR, artikel_typ TYPE ZARTIKEL-TYPE, bezeichnung TYPE ZARTIKEL-BEZEICHNUNG, preis TYPE ZARTIKEL-PREIS, mwst TYPE ZARTIKEL-MWST, END OF its. und dies mein Code für die zu löschenden Zeilen im Table Control: WHEN 'DELETE'. LOOP AT its WHERE mark EQ 'X'. DELETE its WHERE mark = 'X'. MOVE its TO ZARTIKEL. ENDLOOP. ENDCASE. ENDMODULE: und mein PBO und PAI: PROCESS BEFORE OUTPUT. LOOP AT its INTO ZARTIKEL WITH CONTROL ARTIKEL. ENDLOOP. PROCESS AFTER INPUT. MODULE EXIT. LOOP AT its. MODULE V1. ENDLOOP. MODULE user_command_1060. Wenn ich nun den Table Control öffne und die Zeile markiere, welche ich löschen will und meinen Löschen-Button klicke, passiert gar nichts. Weder in meiner internen Tabelle noch in meiner eigentlichen Tabelle ZARTIKEL. Könnt Ihr mir sagen, was ich hier falsch mache?? Besten Dank schonmal im Voraus. Buerger
  4. So, es läuft, wie ich es mir vorstelle... Vielen Dank erstmal an Euch alle für die Hilfe Hier ist mal der Quellcode: REPORT ZTEST4. INCLUDE <icon>. MOVE ´Neues Kundenkonto erstellen´ TO sy-title. TABLES: ZKUNDEN. PARAMETERS: pkdnr LIKE ZKUNDEN-KUNDEN_NR, pvor LIKE ZKUNDEN-VORNAME, pnach LIKE ZKUNDEN-NACHNAME, pstrasse LIKE ZKUNDEN-STRASSE, pplz LIKE ZKUNDEN-PLZ, port LIKE ZKUNDEN-ORT, pemail LIKE ZKUNDEN-EMAIL, ptelefon LIKE ZKUNDEN-TELEFONNUMMER, pmobil LIKE ZKUNDEN-MOBIL. DATA wakunden LIKE ZKUNDEN. START-OF-SELECTION. Wakunden-KUNDEN_NR = pkdnr. Wakunden-VORNAME = pvor. Wakunden-NACHNAME = pnach. Wakunden-STRASSE = pstrasse. Wakunden-PLZ = pplz. Wakunden-ORT = port. Wakunden-EMAIL = pemail. Wakunden-TELEFONNUMMER = ptelefon. IF wakunden-KUNDEN_NR IS INITIAL. CALL FUNCTION ´NUMBER_GET_NEXT´ EXPORTING Nr_range_nr = ´01´ Object = ´ZANUMMERN´ IMPORTING Number = wakunden-KUNDEN_NR. ENDIF. MOVE wakunden TO ZKUNDEN. WRITE: / wakunden-KUNDEN_NR. Habt ihr noch ne Idee, wie ich schon bei Eingabe eines neuen Datensatzes überprüfen kann, ob der Datzensatz in der Tabelle ZTABLE schon vorhanden ist?? Muss ich dafür die interne Tabelle "wakunden" benutzen?? Viele Grüße Buerger
  5. Hallo, und vielen Dank für die Antwort. Ich glaube, bei dem Aufbau der Tabelle itskunden mache ich einen Fehler. Nach Deinem Tipp mit den [], der ja wirklich Sinn macht, gibt mir das System nämlich in der MOVE-Anweisung MOVE pkdnr-low TO itskunden-KUNDEN_NR an, dass die Tabelle itskunden überhaupt keine interne Tabelle ist. Sie wird wohl nicht richtig aufgebaut. Zudem wirdx sie auch nicht mit Daten befüllt, was ich durch die Breakpoint-Anweisung erfahren habe. Wie würde ich denn eine interne Tabelle, auch in Bezug auf das Einfügen in die interne Tabelle, aufbauen? Beim Testen gebe ich alle Daten ein, bis auf die Kundennummern. Hierfür habe ich mir einen Nummernkreisintervall erstellt, welche ich durch die Anweisung IF wakunden-KUNDEN_NR is INITIAL. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = '01' object = 'ZANUMMERN' IMPORTING number = wakunden-KUNDEN_NR ENDIF fülle. Den Tipp habe ich aus einem anderen Forum. Ich hab auch zuerst ein ABAP-Buch benutzt. Dieses war aber nicht gut, so dass ich mich jetzt hauptsächlich durch das Skript meines Professors, wie auch durch verschiedene Internetseiten. Dort habe ich auch den Tipp mit dem LOOP her. Vorher hatte ich das ganze ja anders gemacht, womit ich damals zumindest das Eintragen in die Tabelle schaffen konnte. Leider ließ sich dort allerdings immer nur maximal 1 bzw. 2 Einträge erstellen und zudem wurde die Kundennummer schon bei dem zweiten Datensatz nicht eingetragen. (Siehe hierzu meinen 1. Beitrag). Ich hoffe, dass Du mir bei der Frage, wie ich eine interne Tabelle aufbaue, weiterhelfen kannst?? Ciaoi Buerger
  6. Nein, die Felnder des Arbeitsbereiches sind von Anfang an nicht gefüllt. Ich kann dort dann neue Daten eingeben, die ich dann in der Datenbank haben möchte. Bei diesem Transfer hapert es aber ja leider. Mein Code hat sich nun auch etwas geändert. Er sieht nun so aus: REPORT ZTEST3. INCLUDE <icon>. MOVE 'Neues Kundenkonto erstellen' TO sy-title. TABLES: ZKUNDEN. DATA: itskunden TYPE TABLE OF ZKUNDEN with header line. SELECT-OPTIONS: pkdnr FOR ZKUNDEN-KUNDEN_NR, pvor FOR ZKUNDEN-VORNAME, pnach FOR ZKUNDEN-NACHNAME, pstrasse FOR ZKUNDEN-STRASSE, pplz FOR ZKUNDEN-PLZ, port FOR ZKUNDEN-ORT, pemail FOR ZKUNDEN-EMAIL, ptelefon FOR ZKUNDEN-TELEFONNUMMER, pmobil FOR ZKUNDEN-MOBIL. DATA wakunden LIKE itskunden. LOOP AT pkdnr. MOVE pkdnr-low TO itskunden-KUNDEN_NR. append itskunden. clear itskunden. endloop. LOOP at pvor. MOVE pvor-low TO itskunden-VORNAME. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at pnach. MOVE pnach-low TO itskunden-NACHNAME. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at pstrasse. MOVE pstrasse-low TO itskunden-STRASSE. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at pplz. MOVE pplz-low TO itskunden-PLZ. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at port. MOVE port-low TO itskunden-ORT. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at pemail. MOVE pemail-low TO itsku nden-EMAIL. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at ptelefon. MOVE ptelefon-low TO itskunden-TELEFONNUMMER. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP at pmobil. MOVE pmobil-low TO itskunden-MOBIL. MODIFY itskunden index sy-tabix. clear itskunden. endloop. LOOP AT itskunden INTO wakunden. IF wakunden-KUNDEN_NR is INITIAL. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = '01' object = 'ZANUMMERN' IMPORTING number = wakunden-KUNDEN_NR. ENDIF. INSERT INTO ZKUNDEN VALUES wakunden. WRITE: wakunden-KUNDEN_NR. ENDLOOP. Die Sachen die ich dann in der Eingabemaske eintrage werden leider immernoch nicht in die Tabelle ZKUNDEN eingetragen.... Die interne Tabelle wollte ich als Zwischenspeicher nutzen, da ich nicht weiß, ob und wie ich denn die Daten die ich in die Eingabemaske eintrage in die Datenbank ZKUNDEN bekomme. Das mit dem Reporting ist mir nun auch schon bewusst geworden. Das nächste Programm werde ich dann mit dem Abfangen von Exceptions versehen, um Fehlern schonmal vorzubeugen. Die Eingabemaske fülle ich dabei mit ganz simplen Daten: PKDNR: "value0" TO "KUNDENNUMMER" PVOR: "value1" TO "VORNAME" PNACH: "value2" TO "NACHNAME" PSTRASSE: "value3" TO "STRASSE" PPLZ: "value4" TO "PLZ" PORT: "value5" TO "ORT" PEMAIL: "value6" TO "EMAIL" PTELEFON: "value7" TO "TELEFONNUMMER" PMOBIL: "value8" TO "MOBILNUMMER" Die ""-Felder sind dabei die Eingabefelder!! Warum ich zwei Eingabefelder habe, weiß ich leider selbst nicht. Dies wurde mir von einem anderen Forum empfohlen.... Was meinst Du/Ihr denn, wo ich jetzt noch was in meinem Code ändern sollte??
  7. Das hab ich mal gemacht. Die Werte sind nun: SY-SUBRC = 0 SY-TABIX = 1 SY-DBCNT = 1 Was bedeutet dies?? Es werden in der itskunden auch keine Einträge angezeigt, obwohl ja eigentlich welche angelegt sein müssen. Also zumindest die Einträge, die ich vorher über die erste Maske eingebe.... Habt Ihr ne Idee wo, was hier mein Fehler ist??
  8. Leider komme ich wieder mal nicht weiter.... Mein Programm legt mir nun, nach Angabe der Daten im Formular, einen Kunden mit einer Kundennummer ein. Starte ich dann das Programm neue, kann ich in dem dann wiedergeöffneten Kundenformular weitere Daten eingeben. Gebe ich diese nun ein und sicher diese wieder, so wird mir aber leider kein neuer Kunde angelegt. Dies ist mein aktueller Quellcode: REPORT ZTEST3. INCLUDE <icon>. MOVE 'Neues Kundenkonto erstellen' TO sy-title. TABLES: ZKUNDEN. DATA: itskunden TYPE TABLE OF ZKUNDEN with header line. SELECT KUNDEN_NR INTO TABLE itskunden FROM ZKUNDEN. PARAMETERS: pkdnr LIKE ZKUNDEN-KUNDEN_NR, pvor LIKE ZKUNDEN-VORNAME, pnach LIKE ZKUNDEN-NACHNAME, pstrasse LIKE ZKUNDEN-STRASSE, pplz LIKE ZKUNDEN-PLZ, port LIKE ZKUNDEN-ORT, pemail LIKE ZKUNDEN-EMAIL, ptelefon LIKE ZKUNDEN-TELEFONNUMMER, pmobil LIKE ZKUNDEN-MOBIL. DATA wakunden LIKE ZKUNDEN. START-OF-SELECTION. wakunden-KUNDEN_NR = pkdnr. wakunden-VORNAME = pvor. wakunden-NACHNAME = pnach. wakunden-STRASSE = pstrasse. wakunden-PLZ = pplz. wakunden-ORT = port. wakunden-EMAIL = pemail. wakunden-TELEFONNUMMER = ptelefon. wakunden-MOBIL = pmobil. IF wakunden-KUNDEN_NR IS INITIAL. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = '01' object = 'ZANUMMERN' IMPORTING number = wakunden-KUNDEN_NR. ENDIF. INSERT INTO ZKUNDEN VALUES wakunden. WRITE: wakunden-KUNDEN_NR. Ich weiß zur Zeit mal leider wieder einfach nicht mehr weiter, da ich schon sämtlich Sachen umgeschrieben hab und es immer noch nicht klappt..... Kann mir vielleicht nochmal jemand helfen und weiß eventuell wo mein Problem liegt?? Also, warum er mir nur einen Kundensatz in der Tabelle erzeugen kann?? Ich wäre Euch sehr sehr dankbar.
  9. OK, auch dieses Problem konnte ich lösen. Die Zeile muss so aussehen: object = ZKUNDEN-KUNDEN_NR Das ganze lässt sich nun ohne Fehler kompilieren. Allerdings kommt nun immer ein Fehler, wenn ich das Kundenformular ausfülle und auf bestätigen drücke: "CALL_FUNCTION_CONFLICT_TYPE The call to the function module "NUMBER_GET_NEXT" is incorrect: The function module interface allows you to specify only field of a particular type under OBJECT. The field "ZKUNDEN-KUNDEN_NR" specified hier has a different field type." Ich hoffe, dass jemand von Euch weiß, wie ich hier jetzt weiterkomme, denn ich glaube, dass ich ziemlich nah an meinem ZIel bin. Also, auf viele nützliche Antworten. Ciaoi Buerger
  10. Okidoki, ich habe das es hinbekommen, die Nummern einzurichten. Nun versuche ich Sie in meinen Code zu integrieren, was bisher so aussieht. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = '01' object = KUNDEN_NR (dies ist mein primärschlüsselfeld in der Tabelle) IMPORTING number = pkdnr. Nun wirft das Programm mir folgenden Fehler: --------- Field "KUNDEN_NR" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement --------- Was bedeutet dieser Fehler?? Oder was mache ich falsch, wenn ich object = KUNDEN_NR (dies ist mein primärschlüsselfeld in der Tabelle) aufrufe?? Muss ich eventuell was an meiner Domain (ZKUNDEN_NR) bzw. an meinem Feld KUNDEN_NR in der Tabelle ZKUNDEN ändern?? Ciaoi Buerger
  11. Vielen Dank. Das hat schonmal super geklappt (fast). Ich habe die Transaktion SNRO aufgerufen. Dort gebe ich dann als nächstes einen Namen für mein Objekt ein ("ZANUMMERN"). Danach klicke ich auf das weiße Blatt "CREATE", gebe einen Short- und LongText ein. Desweiteren gebe ich als: Subobject data element: ZARTIKEL_NR Number length domain: NUM8 Warning % 10 Main memory buffering: on No. of numbers in buffer 10 Group table: ZARTIKEL (eine meiner Tabellen) Subobject field in group table: LEER Fld No Range Element: ARTIKEL_NR (der Primärschlüssel der Tabelle ZARTIKEL) Field int./ex. no. range no.: BEZEICHNUNG / ARTIKEL_TYP ein und speicher erstmal über die Diskette, was gut klappt. Klicke ich nun auf die Diskette zum speichern, so wird hierbei ein Fehler angezeigt: "DOMAIN ZARTIKEL_NR of data elment ZARTIKEL_NR does not have value table" Wisst ihr warum dieser Fehler auftaucht?? Hab ich irgendwas bei der Pflege des Datentypen bzw. der Domain vergessen?? Ich würde mich sehr freuen, wenn mir dort wieder jemand weiter helfen kann. Cu Buerger
  12. Guten Tag!! Ich sitze gerade an einem Abap-Projekt für die Schule. Dort habe ich nun ein Formular programmiert, in den die ein Kunde seine Dateneingeben kann und diese dann in die Datenbank (ZKUNDEN) übertragen werden. REPORT ZTEST3. INCLUDE <icon> MOVE ´Neues Kundenkonto erstellen´ TO sy-title. TABLES: ZKUNDEN. PARAMETERS: pkdnr LIKE ZKUNDEN-KUNDEN_NR, pvor LIKE ZKUNDEN-VORNAME, pnach LIKE ZKUNDEN-NACHNAME, pstrasse LIKE ZKUNDEN-STRASSE, pplz LIKE ZKUNDEN-PLZ, port LIKE ZKUNDEN-ORT, pemail LIKE ZKUNDEN-EMAIL, ptelefon LIKE ZKUNDEN-TELEFONNUMMER, pmobil LIKE ZKUNDEN-MOBIL. DATA: wakunden LIKE ZKUNDEN. START-OF-SELECTION. wakunden-KUNDEN_NR = pkdnr. wakunden-VORNAME = pvor. wakunden-NACHNAME = pnach. wakunden-STRASSE = pstrasse. wakunden-PLZ = pplz. wakunden-ORT = port. wakunden-EMAIL = pemail. wakunden-TELEFONNUMMER = ptelefon. wakunden-MOBIL = pmobil. INSERT INTO ZKUNDEN VALUES wakunden. WRITE: ´Ihre neue Kundennummer ist die: ´, wakunden-KUNDEN_NR. wenn ich nun gewissen Daten in das Eingabeformular eingebe und bestätige, wird auch ein Datensatz in der Tabelle "ZKUNDEN" erstellt. Allerdings muss ich dann die Kundenummer immer selbst eingeben. Ein Kunde kennt aber bei Anlegen eines neuen Kundenkontos ja seine Kundennummer noch gar nicht. Wie kann ich denn zum Beispiel von irgendwo Kundenummern zuweisen, die ich selbst vorher erstelle. Muss ich dafür eine interne Tabelle anlegen, und wenn ja, wie erstelle ich diese in diesem Fall genau?? bzw., wie kann ich es schaffen, dass ich einem Kunden, der ein neues Kundenkonto über das Formular erstellt, eine Nummer oder einen anderen Eintrag, zuweise?? Ich hoffe, hier ist jemand, der das Problem versetht und mir weiter helfen kann. Ciaoi Buerger

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...