Code: Alles auswählen.
DATA: lv_repid TYPE sy-repid,
l_layout TYPE lvc_s_layo,
lt_fcat TYPE lvc_t_fcat,
ls_layout TYPE lvc_s_layo,
lt_events TYPE lvc_t_fcat,
z_title TYPE lvc_title.
FORM tabelle USING zzan*****.
CONCATENATE ' Pflege von der Anlage ' zzan***** INTO z_title RESPECTING BLANKS.
*l_layout-EDIT = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
i_grid_title = z_title
* I_GRID_SETTINGS =
is_layout_lvc = l_layout
it_fieldcat_lvc = lt_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = zzan*****
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM alv_itab_fcat
CHANGING ct_fcat TYPE lvc_t_fcat.
DATA: ls_fcat TYPE lvc_s_fcat.
* Field =
** ls_fcat-fieldname = 'GOV***'. "Feldname interne Tabelle
* ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
* ls_fcat-key = 'X'. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
* ls_fcat-reptext = ' Anlage'.
* APPEND ls_fcat TO ct_fcat.
* CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'CODE'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = 'X'. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Code '.
ls_fcat-col_pos = 1.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
** Field =
ls_fcat-fieldname = 'MATNR'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = 'X'. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Material '.
ls_fcat-col_pos = 2.
ls_fcat-no_zero = 'X'.
ls_fcat-col_pos = 2.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'MATTXT'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-no_zero = 'X'.
ls_fcat-reptext = ' Material-Text '.
ls_fcat-outputlen = 30.
ls_fcat-col_pos = 3.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'MATDESC'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Materialkurztext '.
ls_fcat-outputlen = 20.
ls_fcat-col_pos = 4.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'TOL_1'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' 1.Toleranz '.
ls_fcat-col_pos = 5.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'TOL_GW1'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Min.Menge '.
ls_fcat-col_pos = 6.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'TOL_2'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' 2.Toleranz '.
ls_fcat-col_pos = 7.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'TOL_GW2'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Max.Menge '.
ls_fcat-col_pos = 8.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'TOL_3'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' 3.Toleranz '.
ls_fcat-col_pos = 9.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'MEINH'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Mengeneinheit '.
ls_fcat-col_pos = 10.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'COMENGE'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Anlage '.
ls_fcat-col_pos = 11.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
* Field =
ls_fcat-fieldname = 'ARBPL'. "Feldname interne Tabelle
ls_fcat-ref_table = 'ZZGOV***'. "Tabellenname typisierte Tabelle
ls_fcat-key = ' '. "Spalte ist Key-Spalte (blau und fix beim Scrollen)
ls_fcat-reptext = ' Arbeitsplatz '.
ls_fcat-col_pos = 12.
APPEND ls_fcat TO ct_fcat.
CLEAR ls_fcat.
Naja, da möchte jemand, dass wir ihm die Aufgaben machen ..ralf.wenzel hat geschrieben:Und wo genau ist jetzt dein Problem?
Ralf *Herr Doktor, mir tut was weh
schon wie oben beschrieben wäre das Problem, " ich würde gerne mit dem Baustein bei der Ausgabe eine Zeile bearbeiten oder hinzufügen und dies dann in eine Z Tabelle weg schreiben und sichern.".ralf.wenzel hat geschrieben:Und wo genau ist jetzt dein Problem?
Ralf *Herr Doktor, mir tut was weh
Code: Alles auswählen.
*---------------------------------------------------------------------*
* Report ZZ_ALV_EDIT
*---------------------------------------------------------------------*
REPORT zz_alv_edit LINE-SIZE 1000.
*** Variablen
DATA:
*** Pointer für CREATE DATA
gref TYPE REF TO data,
*** Name der Datenbanktabelle
gv_sname LIKE dd02l-tabname VALUE 'MARA',
*** Feldkatalog
gt_fcat TYPE lvc_t_fcat.
*** Feld-Symbole
FIELD-SYMBOLS:
*** Feldkatalog
<fcat> TYPE lvc_s_fcat,
*** Feld der Struktur
<feld> TYPE ANY,
*** Arbeitsbereich der internen Tabelle
<wa> TYPE ANY,
*** Die interne Tabelle mit Struktur aus GV_SNAME
<itab> TYPE table.
*----------------------------------------------------------------------*
* CLASS lcl_events DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_events DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed sender.
ENDCLASS. "lcl_events DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_rohr_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_events IMPLEMENTATION.
METHOD handle_data_changed.
******************************************
*** HandleDataChanged ***
******************************************
DATA: ls_good TYPE lvc_s_modi.
*** alle Inhalte der geänderten Zellen in die interne Tabelle schreiben
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
*** Dazu auf die richtige Zeile in der ITAB positionieren:
READ TABLE <itab> ASSIGNING <wa> INDEX ls_good-row_id.
IF sy-subrc = 0.
*** Und das geänderte Feld dem Feldsymbol zuweisen
ASSIGN COMPONENT ls_good-fieldname OF STRUCTURE <wa> TO <feld>.
IF sy-subrc = 0.
*** Feldwert zuweisen
<feld> = ls_good-value.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_events IMPLEMENTATION
*** Variablen ALV
DATA:
ref_alv TYPE REF TO cl_gui_alv_grid,
ref_container TYPE REF TO cl_gui_custom_container,
ref_alv_events TYPE REF TO lcl_events.
*** Programmstart
START-OF-SELECTION.
*** Aufruf des Dynpros
CALL SCREEN 4000.
*&---------------------------------------------------------------------*
*& Form init
*&---------------------------------------------------------------------*
FORM init.
*** Container erzeugen
CHECK ref_alv IS INITIAL.
CREATE OBJECT ref_container
EXPORTING
container_name = 'ALV'.
TRY.
*** Erzeugung der Datenstrukturen zur Laufzeit
CREATE DATA gref TYPE STANDARD TABLE OF (gv_sname).
ASSIGN gref->* TO <itab>.
*** Einlesen der Daten
SELECT * FROM (gv_sname)
INTO TABLE <itab>
UP TO 10 ROWS.
*** Fehler abfangen
CATCH cx_sy_create_data_error.
WRITE 'Wrong Database!'.
ENDTRY.
*** Feldkatalog einlesen
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = gv_sname
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
OTHERS = 3.
*** Alle Felder editierbar machen
LOOP AT gt_fcat ASSIGNING <fcat>.
<fcat>-edit = 'X'.
ENDLOOP.
*** ALV erzeugen
PERFORM create_alv.
ENDFORM. "init
*&---------------------------------------------------------------------*
*& Module STATUS_4000 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_4000 OUTPUT.
*** Status
SET TITLEBAR '4000'.
SET PF-STATUS 'STLI' OF PROGRAM 'SAPMSSY0'.
*** Clear
CLEAR sy-ucomm.
*** Init ALV
PERFORM init.
ENDMODULE. " STATUS_4000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_4000 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_4000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR '%EX' OR 'RW'.
*** Liste
LEAVE TO LIST-PROCESSING.
SET PF-STATUS space.
*** Tabelleninhalt speichern
*** Hier die <itab> in deine Z-Tabelle schreiben.
*** Exit
SET SCREEN 0. LEAVE SCREEN.
ENDCASE.
ENDMODULE. " USER_COMMAND_4000 INPUT
*&---------------------------------------------------------------------*
*& Form create_alv
*&---------------------------------------------------------------------*
FORM create_alv .
*** ALV anbinden
CREATE OBJECT ref_alv
EXPORTING
i_parent = ref_container
i_appl_events = 'X'
EXCEPTIONS
OTHERS = 5.
*** Edit-Event extra registrieren
ref_alv->register_edit_event( i_event_id = cl_gui_alv_grid=>mc_evt_enter ).
*** Edit-Mode aktiv setzen
ref_alv->set_ready_for_input( i_ready_for_input = 1 ).
*** ...und EventHandler zuweisen
CREATE OBJECT ref_alv_events.
SET HANDLER ref_alv_events->handle_data_changed FOR ref_alv.
*** First Display
CALL METHOD ref_alv->set_table_for_first_display
CHANGING
it_fieldcatalog = gt_fcat
it_outtab = <itab>
EXCEPTIONS
OTHERS = 4.
*** Fokus auf das Grid setzen
cl_gui_alv_grid=>set_focus( ref_alv ).
*** Flush
CALL METHOD cl_gui_cfw=>flush.
ENDFORM. " create_alv
Jeder Anfänger ist erwünscht .. Aber wie Romaniac schon schrieb:reim95 hat geschrieben: Aber gut sowie SaskuAc schreibt, dass ich von euch eine Lösung erwarte, ist anscheinend hier kein Anfänger erwünscht der Unterstützung benötigt.
hat es eben für dich einen viel größeren Lerneffekt, wenn du es mit ( eventuell etwas mehr Aufwand ) selber heraus findest.Romaniac hat geschrieben:Es ist halt oft so dass viele hier was fragen ohne sich selbst die Mühe gemacht zu haben im Netz oderanderen Foren zu suchen, es ist halt in unserem Beruf so dass man sich manchmal entwas intensiver reinknien muss um was zu verstehen oder zu finden, der Lohn ist dass man es dann auch verstanden hat. Zum Thema editierbarer ALV gibt es sicher viele Treffer bei der Google Suche weil den so gut wieder jeder schon mal verwendet hat.
Eine komplette Logik für eine editierbare ALV-Tabelle zu schreiben für eine Z-Tabelle ist auch relativ (zeit-)aufwendig.. außerdem kann man nicht einfach Code den man selber für einen Kunden geschrieben hat kopieren - könnte Datenschutz bestimmungen verletzen, was jemanden den Job kosten könnte .. ( gut etwas extrem ... aber in der theorie möglich .. ) und ich bin ehrlich, das will ich nicht riskieren .. --> man müsste sich hinsetzen und Code entweder komplett neu schreiben oder eben soweit anpassen, dass nicht mehr zu erkennen ist, was oder wer dahinter steckt.ralf.wenzel hat geschrieben:Ich habe weder Zeit noch Lust, eine komplette Logik für das Bearbeiten und Speichern einer ALV-Tabelle in einer Z-Tabelle hier zu posten. Wenn jemand ein KONKRETES Problem hat, helfe ich gern.