Tiffy Geschrieben 5. April 2005 Geschrieben 5. April 2005 Hallo, ich habe ein Problem in meiner ABAP Programmierung. Es geht um das einfügen einer neuen Zeile im Table Control bzw. das freigeben aller Tabellenzeilen. Kann mir hier vielleicht jemand weiterhelfen oder mir sagen wo ich eine Lösung finden kann? Es ist ziemlich wichtig, da das zu meinem Abschlussprojekt gehört und ich nur noch diese Woche Zeit dafür habe! Danke! Zitieren
MAJOR_TOM Geschrieben 5. April 2005 Geschrieben 5. April 2005 Ahnung von ABAP => ja :cool: Ahnung vom TableControl (Mangels bisheriger Notwendigkeit) => nein :floet: Schau mal unter folgenden Links: AbapForum SAP Hilfe SapGenie Zitieren
hmaas Geschrieben 5. April 2005 Geschrieben 5. April 2005 Es geht um das einfügen einer neuen Zeile im Table Control bzw. das freigeben aller Tabellenzeilen. Hast du das Tablecontrol selbst erstellt oder den Wizzard genommen? Was willst du denn beim einfügen machen? Eine Zeile auf dem Screen mehr ausgeben, also anstatt 9 Zeilen jetzt 12 Zeilen oder eine neue Zeile mit Daten einfügen? Wenn du nur eine neue Datenzeile einfügen willst ist das nicht schwer. Du hast eine interne Tabelle, z.B. ITAB, die alle deine Daten beinhaltet. Beim PBO sendest du die Daten mit einem Steploop aus ITAB an das Table Control. Wenn du nun während PAI diese interne Tabelle veränderst, wird die Änderung beim nächten PBO wieder zum Table Control übertragen. Wenn du eine neue Zeile brauchst musst du diese einfach mittels APPEND hinten dran hängen bzw. mittels INSERT einfügen. Wenn du mit freigeben initialisieren meinst musst du dementsprechend ITAB mittels REFRESH initilisieren. Pönk Zitieren
hmaas Geschrieben 5. April 2005 Geschrieben 5. April 2005 Wenn du mit freigeben initialisieren meinst musst du dementsprechend ITAB mittels REFRESH initilisieren. Nachtrag: Schau dir dazu auch den Befehl "REFRESH CONTROL ctrl FROM SCREEN scr." an. Gruß Pönk Zitieren
Tiffy Geschrieben 5. April 2005 Autor Geschrieben 5. April 2005 In meinem Table Control sollen Daten erfasst werden und anschließen in einer Datenbanktabelle gespeichert werden. Wenn man den Table Control aufruft sind nur die zeilen zur Bearbeitung freigegeben, die schon in der DB-Tabelle vorhanden sind. Neue Datensätze kann ich nicht anlegen weil die Zeilen grau hinterlegt sind. Habe das schon mit dem Wizzard probiert. Aber dann funktioniert der Rest meiner Verarbeitung nicht mehr. Dann habe ich versucht den Teil der Zeile hinzufügen aus dem vom Wizzard erstellten Quellcode in meinen selbst erstellten einzubauen. Aber auch daran bin ich gescheitert. Zitieren
SaPaul Geschrieben 5. April 2005 Geschrieben 5. April 2005 In meinem Table Control sollen Daten erfasst werden und anschließen in einer Datenbanktabelle gespeichert werden. Wenn man den Table Control aufruft sind nur die zeilen zur Bearbeitung freigegeben, die schon in der DB-Tabelle vorhanden sind. Neue Datensätze kann ich nicht anlegen weil die Zeilen grau hinterlegt sind. Habe das schon mit dem Wizzard probiert. Aber dann funktioniert der Rest meiner Verarbeitung nicht mehr. Dann habe ich versucht den Teil der Zeile hinzufügen aus dem vom Wizzard erstellten Quellcode in meinen selbst erstellten einzubauen. Aber auch daran bin ich gescheitert. Du legst auf dem Dnypro oder im Status einen Button mit dem Icon "ICON_INSERT_ROW" an (dieses mit dem grünen Plus, ist auch im Dictionary). Hinter dem Funktionscode im PAI legst du dann folgenden Code: WHEN 'ADD_LINE'. CLEAR SAVE_OK. CLEAR ITAB. APPEND ITAB. Dadurch erzeugst du eine neue leere Tabellenzeile. Eine andere Möglichkeit habe ich bisher noch nicht gefunden, da die Daten, die einfach nur so im Table Control eingetragen werden, ohne dass eine entsprechende Zeile in der ITAB vorhanden sind, nicht vom PC an den Server weitergegeben werden. Zitieren
Tiffy Geschrieben 5. April 2005 Autor Geschrieben 5. April 2005 Habe das getestet. Allerdings überschreibt er später im PBO, wenn er die Daten in den Table Control schreibt, diesen Eintrag wieder. Habe ich den Quellcode falsch aufgebaut, oder funktioniert dieser Lösungsvorschlag nicht? Zitieren
hmaas Geschrieben 5. April 2005 Geschrieben 5. April 2005 Wenn man den Table Control aufruft sind nur die zeilen zur Bearbeitung freigegeben, die schon in der DB-Tabelle vorhanden sind. Entweder du machst es wie SaPaul, oder du setzt die Properties richtig. Ich beschreib hier den Weg für den grafichen ScreenPainter, wenn du noch den alten hast weiß ich auch nicht weiter: Also dein Dynpro im SreenPainter aufrufen. Für jedes Feld der Tabellenzeile: Auf das Feld doppeltklicken, dann popen die Properties auf, im unteren Teil hast du die Attribute, hier auf den Reiter Programm wechseln, Checkbox 'nur Ausgabe' muss Blank sein, Checkbox 'Eingabefeld' muss ein 'X' haben, speichern und das wars. Gruß Pönk Zitieren
Tiffy Geschrieben 6. April 2005 Autor Geschrieben 6. April 2005 Vielen Dank für die Hilfe. Habe gerade noch ein wenig daran gebastelt und mit ein bissl tricksen und dem vorgeschlagenen Code von SaPaul habe ich eine neue Zeile hinzufügen können. Vielen Dank! ) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.