Feldeingabe und zu aendernde Ausgabe ?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Feldeingabe und zu aendernde Ausgabe ?

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

Ich habe ein etwas dummes Problem - sitze wohl offensichtlich auf der Leitung .. :oops:

Und zwar möchte ich bei meinem Report, die Datensätze aus der marc-Tabelle ausgeben, die ich selektiere.
Die drei Parametereingaben sind Pflichtfelder.

Das Irritierende an dem Ganzen ist jetzt, dass der Parameter oitaxgrp ein Zieleingabefeld ist, bzw. das was in das Feld oitaxgrp vom User eingegeben wird, dieser Wert soll in der Tabelle marc (marc-oitaxgrp) geändert werden.
??? Wie mache ich das am Schnellsten und am Einfachsten?

Da es ja nach derzeitigem Stand logisch ist, dass nix ausgegeben werden kann, weil wenn ich z.B. im Feld oitaxgrp den Wert eingebe, den es in der Tabelle marc gibt, dann erscheint der Datensatz mit dem existierenden Wert als Liste in der Ausgabe, wenn ich jedoch als User einen anderen Wert in das Feld oitaxgrp eingebe, dann kann ja logischerweise nix in der Liste als Ausgabe aufscheinen, weil es eben diesen Wert mit dem jeweiligen Datensatz in der Tabelle marc nicht gibt!
Das Problem ist, dass das Feld m. den existierenden Werten das gleiche Feld ist wie das zu ändernde Feld!
Oder?
Ich hoffe, dass ich das Problem verständlich erklärt habe!?
Danke!
lg

Code: Alles auswählen.

DATA:
  it_data TYPE TABLE OF marc,
  wa_data LIKE LINE OF it_data.

DATA:
  zaehler TYPE i.

*Selektionsschirm
SELECTION-SCREEN BEGIN OF BLOCK selection WITH FRAME TITLE text-001.
PARAMETERS:
  p_matnr  LIKE marc-matnr OBLIGATORY,
  p_werks  LIKE marc-werks OBLIGATORY,
  p_oitaxg LIKE marc-oitaxgrp OBLIGATORY.
SELECTION-SCREEN END OF BLOCK selection.

SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-002.
PARAMETERS:
  p_test AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b03.


START-OF-SELECTION.

  SELECT * FROM marc INTO TABLE it_data
    WHERE mmsta <> 'CE'
      AND mmsta <> 'CP'
      AND mmsta <> 'NP'
      AND matnr    = p_matnr
      AND werks    = p_werks
      AND oitaxgrp = p_oitaxg.


  LOOP AT it_data INTO wa_data.

*Alle Datensätze werden ausgegeben
    IF p_test = 'X'.

      WRITE: / wa_data-matnr, wa_data-werks, wa_data-oitaxgrp.
      zaehler = zaehler + 1.

    ELSE.

      IF wa_data-matnr = p_matnr.


        SELECT SINGLE * FROM marc INTO wa_data
          WHERE matnr = p_matnr.
        IF sy-subrc = 0.
          WRITE: / wa_data-matnr, wa_data-oitaxgrp.
          zaehler = zaehler + 1.
        ENDIF.


        wa_data-oitaxgrp = p_oitaxg.
        UPDATE marc FROM wa_data.

        IF sy-subrc = 0.
          WRITE: / wa_data-matnr, wa_data-werks, wa_data-oitaxgrp.
          zaehler = zaehler + 1.

        ELSE.
          WRITE: / 'Update konnte nicht durchgeführt werden!'.
        ENDIF.

*Zusatz, um zu prüfen, ob noch weitere artikel mit
*den selben kriterien vorhanden sind
      ELSE.
        WRITE: / 'Material nicht definiert:', wa_data-matnr,
                  wa_data-werks, wa_data-oitaxgrp.
      ENDIF.


    ENDIF.


  ENDLOOP.

  WRITE: / zaehler.


END-OF-SELECTION.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Wie wärs mit einem p_oitaxg2 ????

Dann hast eins für die Selection und eins welches deinen Wert ändert.

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

Danke für die Antwort!

Ja, an das habe ich, gleich nachdem ich mein Problem gepostet habe, auch gedacht ..
... DATA:
v_oitaxg(2) TYPE c. ...

...
IF wa_data-matnr = p_matnr.

SELECT SINGLE * FROM marc INTO wa_data
WHERE matnr = p_matnr.
IF sy-subrc = 0.
WRITE: / 'Datensatz vor der Änderung: ',wa_data-matnr,
wa_data-oitaxgrp.
zaehler = zaehler + 1.
ENDIF.


v_oitaxg = p_oitaxg.

wa_data-oitaxgrp = v_oitaxg.
UPDATE marc FROM wa_data.

IF sy-subrc = 0.
WRITE: / 'Datensatz nach der Änderung: ',wa_data-matnr,
wa_data-werks, v_oitaxg.
zaehler = zaehler + 1.

ELSE.
WRITE: / 'Update konnte nicht durchgeführt werden!'.
ENDIF.

*Zusatz, um zu prüfen, ob noch weitere artikel mit
*den selben kriterien vorhanden sind
* ELSE.
* WRITE: / 'Material nicht definiert:', wa_data-matnr,
* wa_data-werks, wa_data-oitaxgrp.
ENDIF.
...


Nur funkt. das offensichtlich auch nicht so ganz .. :-(
Oder denke ich da ganz falsch und viel zu kompliziert ?
Hab' ich was vergessen ?
Ist meine Zuweisung falsch ?
- ich muss das doch zuweisen, damit das neue Feld überhaupt einen Wert bekommt, oder ?
Wie mache ich das richtig ?
:?

Danke!

lg

Re: Feldeingabe und zu aendernde Ausgabe ?

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Machs mal so:

DATA:
it_data TYPE TABLE OF marc,
wa_data LIKE LINE OF it_data.

DATA:
zaehler TYPE i.

*Selektionsschirm
SELECTION-SCREEN BEGIN OF BLOCK selection WITH FRAME TITLE text-001.
PARAMETERS:
p_matnr LIKE marc-matnr OBLIGATORY,
p_werks LIKE marc-werks OBLIGATORY,
p_oitaxg LIKE marc-oitaxgrp OBLIGATORY.
p_oitaxg2 LIKE marc-oitaxgrp OBLIGATORY.
SELECTION-SCREEN END OF BLOCK selection.

SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-002.
PARAMETERS:
p_test AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b03.


START-OF-SELECTION.

SELECT * FROM marc INTO TABLE it_data
WHERE mmsta <> 'CE'
AND mmsta <> 'CP'
AND mmsta <> 'NP'
AND matnr = p_matnr
AND werks = p_werks
AND oitaxgrp = p_oitaxg.


LOOP AT it_data INTO wa_data.

*Alle Datensätze werden ausgegeben
IF p_test = 'X'.

WRITE: / wa_data-matnr, wa_data-werks, wa_data-oitaxgrp.
zaehler = zaehler + 1.

ELSE.

IF wa_data-matnr = p_matnr.


SELECT SINGLE * FROM marc INTO wa_data
WHERE matnr = p_matnr.
IF sy-subrc = 0.
WRITE: / wa_data-matnr, wa_data-oitaxgrp.
zaehler = zaehler + 1.
ENDIF.


* wa_data-oitaxgrp = p_oitaxg.
wa_data-oitaxgrp = p_oitaxg2.

UPDATE marc FROM wa_data.

IF sy-subrc = 0.
WRITE: / wa_data-matnr, wa_data-werks, wa_data-oitaxgrp.
zaehler = zaehler + 1.

ELSE.
WRITE: / 'Update konnte nicht durchgeführt werden!'.
ENDIF.

*Zusatz, um zu prüfen, ob noch weitere artikel mit
*den selben kriterien vorhanden sind
ELSE.
WRITE: / 'Material nicht definiert:', wa_data-matnr,
wa_data-werks, wa_data-oitaxgrp.
ENDIF.


ENDIF.


ENDLOOP.

WRITE: / zaehler.


END-OF-SELECTION.

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

Danke für die Hilfe!

Stimmt :oops: - so funkt. ;-)
.. ich wollte halt auf Biegen und Brechen dafür ein und dasselbe oitaxgrp-Feld verwenden, aber diese Version ist natürlich logischer und auch am Einfachsten ..

thx,
lg

Seite 1 von 1

Vergleichbare Themen

7
Antw.
8323
Views
Write-Ausgabe vor Alv-Grid Ausgabe
von L0w-RiDer » 14.08.2019 14:09 • Verfasst in ABAP® für Anfänger
1
Antw.
3151
Views
Ausgabe DB
von Clarins » 21.05.2017 14:53 • Verfasst in ABAP® für Anfänger
0
Antw.
3372
Views
ALV-Ausgabe
von eddi89 » 16.12.2009 15:49 • Verfasst in ABAP Objects®
3
Antw.
4681
Views
ALV Ausgabe
von Spyder » 26.05.2011 12:09 • Verfasst in ABAP® Core
13
Antw.
8167
Views
ALV Ausgabe
von holderda » 11.06.2014 10:41 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.