table control

Benutzeroberflächen in SAP Systemen.

table control

Postby Beate4743 » Thu Jan 13, 2011 2:25 pm

hallo leute,
ich habe ein table control! wo ich beliebig zeilen hinzufügen und löschen kann! starte ich das tc soll alles nicht eingabebereit sein!! läuft auch! und wenn ich eine zeile hinzufügen möchte soll unten eine leere zeile dran gehängt werden und eingabebereit seiN! klappt auch.. nun möchte ich aber wenn die neue leere zeile erscheint, dass die anderen vollen zeilen trotzdem gesperrt bleiben!! sprich dass man nur einmal was anlegen und löschen kann aber nicht darin was ändern kann! ich habe auch zwei bilder hochgeladen ;)

danke
Beate4743
...
...
 
Posts: 214
Joined: Mon Oct 26, 2009 8:18 am

Postby Ines3642 » Thu Jan 13, 2011 3:54 pm

Hi! Wie "sperrst" Du denn das TC für die Eingabe?
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby Beate4743 » Thu Jan 13, 2011 4:07 pm

in dem ich screen-input auf 0 setze...
Beate4743
...
...
 
Posts: 214
Joined: Mon Oct 26, 2009 8:18 am

Postby Jonny2227 » Thu Jan 13, 2011 4:17 pm

Sali,

warum nutz du ein TableControl und kein ALV ?
Nun entweder alles ist eingabebereit oder nicht - einzelne Zeilen geht beim TableControl & ALV nicht aber du kannst ja etwaige Änderungen etc. dahingehend blockieren - dass du prüfst welche Zeile gerade geändert werden soll und wenns nicht die letzte "neue" Zeile ist - die Änderungen halt blockieren ! Wäre jetzt mein Ansatz dazu

Gruss
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm

Postby Ines3642 » Thu Jan 13, 2011 10:20 pm

Dem muss ich leider widersprechen - zumindest im ALV weiß ich, dass man einzelne Zeilen, sogar einzelne Zellen sperren kann, weil ich es selbst schon gemacht habe...

Ich habe grob in Erinnerung, dass es bei TCs auch geht, über SCREEN-INPUT eben. Muss ich morgen am System mal testen.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby Salma1291 » Fri Jan 14, 2011 12:16 am

Hi.
im TC ist es recht einfach einzelne Zellen / Spalten zu sperren / bearbeiten.

Beim TC sieht ja die Ablauflogik in der Regel in etwa so aus:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. process before output.
  2. ..
  3. * PBO FLOW LOGIC FOR TABLECONTROL 'TC_VAR'
  4.  MODULE TC_VAR_CHANGE_TC_ATTR.   " <<< &#40;1&#41;
  5. ...
  6.   loop at   it_var into wa_var
  7.        with control tc_var
  8.        cursor tc_var-current_line.
  9.        MODULE TC_VAR_CHANGE_FIELD_ATTR. "<<< "&#40;2&#41;
  10.  
GeSHi ©


in (1) können die Attribute der Spalten bearbeiteT werden z.B. die komplette Spalte Input/Ouput auf off/on setzen

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ...
  2. field-symbols <fs_col>             type SCXTAB_COLUMN.
  3. ...
  4. *selektierte Spalten -> input off
  5. module TC_VAR_CHANGE_TC_ATTR output.
  6.   loop at  tc_var-cols ASSIGNING <fs_col> where selected = 'X'.
  7.      <fs_col>-screen-input = '0'.
  8.  
GeSHi ©


oder bei (2) die Zelle und damit kann auch die Zeile auf input off gesetzt werden. Dieses Mpdul wird pro Zeile aufgerufen die Systemtabelle Screen
bezieht sich auf die Felder einer Tabellenzeile

Annahme es gibt ein Feld MARK
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ...
  2. * ist die Zeile markiert -> input off
  3. module TC_VAR_CHANGE_FIELD_ATTR output.
  4.   if wa_var-mark = 'X'.
  5.      loop at screen.
  6.         screen-input = '0'.
  7.         modify screen.
  8.      endloop.
  9.   endif.
  10. endmodule.    
  11.  
GeSHi ©


Gruss Edwin
Salma1291
...
...
 
Posts: 197
Joined: Tue Feb 27, 2007 6:26 pm

Postby Beate4743 » Fri Jan 14, 2011 8:37 am

das habe ich eigentlich alles so gemacht: es klappt aber nicht!! die zeile wird nicht eingabebereit. hier mein code

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   LOOP AT gt_equi INTO gs_equi WITH CONTROL tc_equi
  2.                                     CURSOR tc_equi-current_line.
  3.  
  4.     module zeile.
  5.  
  6.  
GeSHi ©


Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. MODULE zeile OUTPUT.
  2.  
  3.   LOOP AT SCREEN.
  4.     CASE screen-group1.
  5.       WHEN 'ON'.
  6.         IF gs_equi-mark = 'X'.
  7.           screen-input = 1.
  8.           MODIFY SCREEN.
  9.         ELSE.
  10.           screen-input = 0.
  11.           MODIFY SCREEN.
  12.         ENDIF.
  13.     ENDCASE.
  14.  
  15. ENDMODULE.                 " ZEILE  OUTPUT
GeSHi ©
Beate4743
...
...
 
Posts: 214
Joined: Mon Oct 26, 2009 8:18 am

Postby Jonny2227 » Fri Jan 14, 2011 9:21 am

Sali,

also wenn man die Klasse cl_gui_alv_grid benutzt ist es mE nicht möglich, dass man einzelen Zeilen editierbar macht und andere nicht - aber man kann ja immer noch dazu lernen - wäre nett dann zu erfahren wie das geht - danke !
Bei der cl_salv.. Klasse geht es sicher schon - weil man da ja auf jedes einzelen Element zugreifen kann und somit die Eigenschaften für jedes einzelne element unterschiedlich gestalten kann.


Gruss Jens
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm

Postby Josie2243 » Fri Jan 14, 2011 11:16 am

jensschladitz hat geschrieben:also wenn man die Klasse cl_gui_alv_grid benutzt ist es mE nicht möglich, dass man einzelen Zeilen editierbar macht und andere nicht - aber man kann ja immer noch dazu lernen - wäre nett dann zu erfahren wie das geht - danke !


Doch das geht über ALV-Styles.
Hier: http://bb1.gate2app.com/viewtopic.php?p=37993#37993 habe ich das mal für den REUSE_ALV beschrieben. Der benutzt selber auch wieder den OO-ALV, also muss er das auch können. Beispiel für den OO-ALV habe ich jetzt nicht, aber es ist möglich.
Josie2243
....
....
 
Posts: 908
Joined: Wed Feb 15, 2006 4:05 pm

Postby Ines3642 » Fri Jan 14, 2011 11:27 am

Da war ich wohl zu langsam...

cl_gui_alv_grid=>mc_style_disabled ist das Zauberwort! :)
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Next

Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 2 guests