ich bin neu hier und das ist quasi mein Eröffnungs-Thread bei dem ich auch gleich eine ganze Menge fragen habe..
Ich bin ursprünglich Entwickler und seit ca 1,5 Jahren als BIler tätig.. habe viel Erfahrung mit SAP Werkzeugen(Data Integrator, BO) und jetzt seit 6 Monaten BW und ca 1 Monat ABAP..
Soo, kurz mal zu meiner derzeitigen Situation:
ich habe ein ALV Grid mit einer Tabelle in der die Nutzer verschiedene Daten eingeben. Es gibt dort aber ein Feld das als Beschreibung dient welches ca 600 Zeichen lang sein soll.
Da das nicht Möglich ist(denke ich?) in einem ALV Grid habe ich ein PopUp über den FB 'TERM_CONTROL_EDIT' welches 'EDIT_TEXT' aufruft und in diesem PopUp soll dann eine Beschreibung mit 600 Zeichen eingegeben werden welches nach dem Speichern zurück in das ALV Grid übergeht und dort entweder im Hintergrund oder in der Tabelle aufgeteilt wird..
es gibt ein Demo Programm in dem das mit dem PopUp wunderbar funktioniert: "BCALV_GRID_03".. ich habe davon eine Kopie erstellt und es dort auch geschafft aus dem PopUp nur eine Eingabemaske mit einem großen Feld zu machen..
Soo.. nun zu meinem Problem, ich habe einen Event-Handler per Class zu meinem ALV Grid hinzugefügt bei dem ich einen Doppelklick abfange und dann eine "Form" aufrufe in dem dann der FB 'TERM_CONTROL_EDIT' steht..
Ich bekomme aber die Fehlermeldung dass CALL SCREEN in Modaler Dialogbox nicht zulässig sei.
Vielleicht kann mir auch noch jemand an der Stelle verraten ob es Möglich is verschiedene _einzelne_ Felder in dem ALV zu sperren oder nicht sichtbar zu machen?
Weiß jetzt gar nicht welchen Code ich dazu posten soll..
Meine Empfehlung:
Verwende zwei Felder in deiner Tabelle. Eines davon ist vom Typ TLINETAB und wird über den Feldkatalog (LVC_T_FCAT) nicht angeboten (TECH = 'X' oder überhaupt weglassen). Das zweite Feld ist vom Typ TEXT255 (255 Zeichen = max. Länge eines Feldes im ALV) und wird angezeigt. Als Editor verwendest du den Baustein EDIT_TEXT direkt.
Über den Editor bearbeitest du den TLINETAB-Text direkt und wenn der Editor wieder geschlossen wird aktualisierst du einfach den TEXT255 entsprechend.
Damit EDIT_TEXT richtig funktioniert musst du im Schnittstellenparameter HEADER das Feld FORM auf ein vorhandenes SabScript-Formular für die Ermittlung der Absatz- und Zeichenformate setzten (z.B. 'SYSTEM')
Was das CALL SCREEN Problem angeht:
Normalerweise ist es möglich aus einem Popup ein weiteres Poup oder ein normales Fenster zu öffnen. Der sog. Dynpro-Stack hat nur eine Begrenzung von max. 6 Dynpros die so hintereinander aufgerufen werden dürfen. Einzige Ausnahme bilden die sog. SubScreens. Darin ist es nicht erlaubt weitere Dynpros aufzurufen.
Was das "Styling" von Feldern angeht:
Man kann das entweder im Feldkatalog für die ganze Spalte angeben (EDIT, STYLE usw.) oder mithilfe einer Styletabelle in der Ausgabestruktur für einzelne Zellen. Mehr dazu in der Online-Hilfe des ALV-Grid, Stichwort "Feldkatalog" bzw. "Einfärben von Zellen"
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
Ich habe jetzt in meiner Tabelle den TEXT255 Datentyp verwendet. Mein ALV Grid erlaubt mir aber keine 255 Zeichen. Maximal 128. Leider wären aber auch 255 nicht genug, es müssen definitiv 600 sein..
Ich habe es auch nicht hinbekommen den FB 'EDIT_TEXT' in meinem event handler zu hinterlegen anstelle des TERM_CONTROL_EDIT.. bzw. ich habe es irgendwie nicht so ganz verstanden. Was meinst du mit Editor? Und wie setze ich das um?
Ich habe in meinem Event Handler den EDIT_TEXT mit seinen Parametern hinterlegt aber beim Doppelklick passiert gar nichts..
Und nebenbei Danke für die Info mit den sperren. Werde das noch überprüfen sobald ich die aktuellen Hürden überwunden habe..
Das es am Ende 600 Zeichen sind hat mit der Datenbank zu tun oder?
Ist aber kein Problem, da die Beschränkung von 128 Zeichen ja nur für die Anzeige im ALV gilt. Du musst halt nur bei jeder Datenbankoperation nicht die ALV-Anzeigespalte verwenden sondern deine interne Spalte mit 600 Zeichen.
Was den Editor betrifft, komm ich immer mehr zur Überzeugung, dass der EDIT_TEXT für deine Ansprüche zu "mächtig" ist. Du brauchst ja keine Text-Formatierungen usw. Den TLINETAB kannst du dann weglassen und einfach nur ein normales Textfeld mit 600 Zeichen verwenden das nicht angezeigt wird.
http://de.scribd.com/doc/7203294/TEXT-E ... AP-Objects
Das wäre ein Beispiel wie du dir einen einfachen Text-Editor basteln kannst. Den kannst du dann auch z.B. in einem Popup verwenden (CALL SCREEN ... STARTING AT ... ENDING AT ...)
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
Also ich steht total auf dem Schlauch. 600 Zeichen ist die Anforerung, die müssen später in einen Cube rein, aufgeteilt in 10 InfoObjekten. Das habe ich bereits umgesetzt, nur ich schaffe es nicht ein Popup zu öffnen indem ich ein Textfeld habe für die 600 Zeichen. Das Popup habe ich, nur es lässt nicht öffnen wegen dem Fehler mit dem CALL SCREEN..
Wenn ich in meiner internen Tabelle ein textfeld mit 600 Zeichen definiere dann gibt mir mein ALV Grid trotzdem nur 128 Zeichen.. :-/
ne, ich meine, dass du zwei Textfelder verwendest eines für die Anzeige und eines für die Speicherung auf der Datenbank. Sobald du über den Editor (der ja noch nicht funktioniert ) etwas änderst wird diese Änderung auch in dem 600 Zeichenfeld eingetragen und zusätzlich das Feld für die Anzeige aktualisiert.
Wegen dem Call Screen... Wie ist dein ALV-Grid denn eingebettet? (Custom-Container, Dialogbox usw.)
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.