Zum Inhalt springen

Table control, Daten einfügen, bearbeiten, löschen??


Buerger

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es handelt sich um ABAP (SAP).

nehm mal die anweisung "DELETE its WHERE mark = 'X'." raus bzw schreibe nur delete its. an der stelle, wo das X ist, ist das programm ja bereits.

wie kommsts du auf 'MOVE its TO ZARTIKEL' ?

Hast du mal den debugger gestartet? kommt er überhaupt an die stelle?

gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...