Problem bei Zähler

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
57 Beiträge • Vorherige Seite 2 von 4 (current) Nächste
57 Beiträge Vorherige Seite 2 von 4 (current) Nächste

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
weiss nicht wie ich das auf meins anwende, muss ich nummer und die DATA SAchen wa1object etc dann auch deklareiren oder wird dies durch meine ersetzt?

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


Re: Problem bei Zähler

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
das ist doch eindeutig ein Beispiel-Coding, nicht die auf dich zugeschnittene Lösung. ;) also musst du es auf dein Programm anpassen. Aber um das zu können musst du halt verstehen was die einzelenen (unklaren) Befehle tun. Das bekommst du ganz sicher hin! :) und wenn trotz sap hilfe etwas unklar ist, helfen wir dir ja auch! :)
Gruß,
der Matze

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe es nun so probiert, aber leider tut sich nichts:

Code: Alles auswählen.

Form fehlend_dso.
  if miss_obj = 'X'.
  SORT l_t_rsdodso DESCENDING BY odsobject+6(2).

  DESCRIBE TABLE l_t_rsdodso LINES l_tabix.
  DO.
   CLEAR: ty_rsdodso, ty_rsdodso2.
   READ TABLE l_t_rsdodso INTO ty_rsdodso INDEX l_tabix.
   IF   sy-subrc EQ 0.
       SUBTRACT 1 FROM l_tabix.
       READ TABLE l_t_rsdodso INTO ty_rsdodso2 INDEX l_tabix.
  ENDIF.

  ADD 1 TO ty_rsdodso-odsobject+6(2).
   WHILE ty_rsdodso-odsobject+6(2) LT ty_rsdodso2-odsobject+6(2).
     WRITE: /01 'Fehlendes Objekt', ty_rsdodso-odsobject.
     ADD 1 TO ty_rsdodso-odsobject+6(2).
  ENDWHILE.
   IF ty_rsdodso2-odsobject IS INITIAL.
     EXIT.
  ENDIF.
ENDDO.
ENDIF.
Endform.
hatte davor das +6(2) weggelassen und es kam der Laufzeitfehler das eines der existierenden Objekte D1COSL01 nicht als Zahl interpretiert werden kann.

Re: Problem bei Zähler

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
hast du schon gedebuggt? Darüber erkennst du vielleicht woran es liegt.
Was ich mir nur grad so auf den ersten Blick frage: wie und wo besetzt du miss_obj ? also wann wird das auf X gesetzt und wann nicht. Aber debugge das ganze mal durch und schau dir jede von dir benutzte Variable dabei ein. da du vom logischen her ja weißt was du da sehen müsstest erkennst du so den Fehler und dann überlegen wir mal weiter.
Gruß,
der Matze

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Das ist eine Checkbox unter Parametern, und der Code indem ich es verwende lautet:

Code: Alles auswählen.

if objekt = 'O01'.
    PERFORM dso.
    PERFORM ODSO.
    if last_obj = 'X' and next_obj <> 'X' and miss_obj <> 'X'.
      PERFORM lastobj_dso.
    ELSEIF  next_obj = 'X' and last_obj <> 'X' and miss_obj <> 'X' .
      PERFORM nextobj_dso.
    ELSEIF last_obj = 'X' and next_obj = 'X' and miss_obj <> 'X'.
      PERFORM bothobj_dso.
      Elseif miss_obj = 'X' and last_obj <> 'X' and next_obj <> 'X'.
        PERFORM fehlend_dso.
    ELSEIF last_obj <> 'X' and next_obj <> 'X'.
      PERFORM allausg_dso.
    Endif.
  ENDIF.
Perform fehlend_dso, ist dann das Unterprogramm, welches das fehlende Objekt anzeigen soll..

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe den Fehler gefunden dank Debugger, danek Thanatos :)

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe doch noch ein Problem, das fumktioniert so nur, wenn es nur ein fehlendes Objekt gibt, Beispiel:
Es existiert 01,02,04 dann funktioniert es und ich bekomme die 03 vorgeschlagen
Existiert aber 01,02,05, dann funktioniert es nicht...

Re: Problem bei Zähler

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
patlau hat geschrieben:Existiert aber 01,02,05, dann funktioniert es nicht...
Heute morgen war ich in der KFZ-Werstatt. Hab dem Schrauber gesagt: "Auto ist kaputt, mach mal ganz" und bin gegangen. Der hat schön doof geschaut, aber wird den Fehler mit dem Kühlwasser schon irgendwann finden.

Hoffe du verstehst das Beispiel. "funktioniert nicht" aktzeptiere ich nicht einmal bei den Anwendern, die ich betreue. Von einem Entwickler erwarte ich eine detalierte Beschreibung, was nicht funktioniert und was er bereits versucht hat um das Problem zu lösen.

Deine "Fehlerbeschreibung" kann von: Coding wird erst garnicht aufgerufen, READ TABLE funktioniert nicht, es werden nicht alle fehlenden Sätze ausgeben bis hin zum DUMP wegen Endlosschleife alles sein.

Interessant für die Lösungfindung sind die ..., denn erst die würden beschreiben, was genau nicht funktioniert. Oder bist du nur mitteilsam und willst keine Lösung?
Gruß Hendrik

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Oppala sorry,

also detailierter:

Hier erstmal der Code

Code: Alles auswählen.

Form fehlend_iobj.

  if miss_obj = 'X'.
    SORT l_t_rsdiobj DESCENDING BY iobjnm+7(1).

    DESCRIBE TABLE l_t_rsdiobj LINES l_tabix.
    DO.
      CLEAR: ty_rsdiobj, ty_rsdiobj2.
      READ TABLE l_t_rsdiobj INTO ty_rsdiobj INDEX l_tabix.
      IF   sy-subrc EQ 0.
        SUBTRACT 1 FROM l_tabix.
        READ TABLE l_t_rsdiobj INTO ty_rsdiobj2 INDEX l_tabix.
      ENDIF.

      ADD 1 TO ty_rsdiobj-iobjnm+7(1).
      WHILE ty_rsdiobj-iobjnm+7(1) LT ty_rsdiobj2-iobjnm+7(1).
        WRITE: /01 'Ausgelassenes Objekt, welches zuerst erstellt werden muss: ', ty_rsdiobj-iobjnm.
        ADD 1 TO ty_rsdiobj-iobjnm+7(1).
      ENDWHILE.
      IF ty_rsdiobj2-iobjnm IS INITIAL.
        EXIT.
      ENDIF.
    ENDDO.
  ENDIF.
Endform.            
Ich habe Objekte welche durch einen Zähler am Ende identifiziert werden. Nun existieren beispielweise die Objekte XXXXXX01, XXXXXX02 und XXXXXX04.
Der Code sorgt dafür dass mir das fehlende Objekt XXXXXX03 angezeigt wird, da dies als nächstes erstellt werden soll. Dies funktioniert auch einwandfrei.

Existieren nun allerdings die Objekte XXXXXX01, XXXXXX02 und als nächstes XXXXXX05 funktioniert mein Programm nich, denn ich will dann das mir die beiden fehlenden Objekte XXXXXX03 und XXXXXX04 anzeigen lassen :)

Hoffe ich konnte mich verständliche rausdrücken

grüße

Re: Problem bei Zähler

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Es wäre zusätzlich hilfreich, wenn du die Einträge der Tabelle ganz oder auszugsweise hier zeigen könntest.
Die Struktur der Objektnummer ist nämlich nicht klar.

Es könnte daran liegen, dass du nur auf der letzten stelle sortierst.
SORT l_t_rsdiobj DESCENDING BY iobjnm+7(1).
Angenommen in deiner Tabelle wären folgende Einträge:
XXXXXX01, XXXXXX02, XXXXXX05, YYYYYY03, YYYYYY04
dann ist nach diesem Sortbefehl die Reihenfolge wie folgt:
XXXXXX01, XXXXXX02, YYYYYY03, YYYYYY04, XXXXXX05

und dann gibt es auf der letzten Stelle keine Lücke.

Ich würde den Sort auf die ganz Objeknummer machen, also:
SORT l_t_rsdiobj DESCENDING BY iobjnm

Beim Addieren ist das auch so eine Sache:
ADD 1 TO ty_rsdiobj-iobjnm+7(1).
Wenn der aktuelle Wert in ty_rsdiobj-iobjnm+7(1) gerade 9 ist, dann hast du ein Problem. Entweder es gibt einen Dump oder das Ergebnis ist 0.

Dann schon lieber: ty_rsdiobj-iobjnm+6(2) - ist auch nicht Perfekt, weil der gleiche Fehler dann bei 99 passiert.
Aber wie gesagt, die Struktur der Objektnummern ist nicht klar.

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Struktur der Objektnummern:

C (Name des Obejtks) 5(existens im ecc) SPIEL(Datenelementbeschr 5 Stellen) 01 (Zähler)

Habe die Sortierung geändert, ist aber nicht zwingend nötig, da alle Stellen des Objektnamens vom User definiert werden müssen.
Habe aber noch ein weiteres Problem und zwar funktioniert die erste Variante also praktisch mit nur einer Nummer als Lücke bei dem Infoobjekt nicht.

Anhand des Codes funktioniert dies:

Code: Alles auswählen.

if objekt = 'O01'.
    PERFORM dso.
    PERFORM ODSO.
    if miss_obj = 'X'.
      PERFORM fehlend_dso.
    elseif last_obj = 'X' and next_obj <> 'X' .
      PERFORM lastobj_dso.
    ELSEIF  next_obj = 'X' and last_obj <> 'X'.
      PERFORM nextobj_dso.
    ELSEIF last_obj = 'X' and next_obj = 'X' .
      PERFORM bothobj_dso.
    ELSEIF last_obj <> 'X' and next_obj <> 'X'.
      PERFORM allausg_dso.
    Endif.
  ENDIF.

Form fehlend_dso.
  if miss_obj = 'X'.
    SORT l_t_rsdodso DESCENDING BY odsobject.

    DESCRIBE TABLE l_t_rsdodso LINES l_tabix.
    DO.
      CLEAR: ty_rsdodso, ty_rsdodso2.
      READ TABLE l_t_rsdodso INTO ty_rsdodso INDEX l_tabix.
      IF   sy-subrc EQ 0.
        SUBTRACT 1 FROM l_tabix.
        READ TABLE l_t_rsdodso INTO ty_rsdodso2 INDEX l_tabix.
      ENDIF.

      ADD 1 TO ty_rsdodso-odsobject+7(2).
      WHILE ty_rsdodso-odsobject+7(2) LT ty_rsdodso2-odsobject+7(2).
        WRITE: /01 'Ausgelassenes Objekt, welches zuerst erstellt werden muss: ', ty_rsdodso-odsobject.
        ADD 1 TO ty_rsdodso-odsobject+7(2).
      ENDWHILE.
      IF ty_rsdodso2-odsobject IS INITIAL.
        EXIT.
      ENDIF.
    ENDDO.
  ENDIF.
Endform.                   
Dies jedoch nicht :

Code: Alles auswählen.

if objekt <> 'O01' and  objekt <> 'O02' and miss_obj <> 'X'.
    PERFORM infos.
  elseif objekt <> 'O01' and  objekt <> 'O02' and miss_obj = 'X'.
    PERFORM fehlend_iobj.
   ENDIF.

Form fehlend_iobj.

  if miss_obj = 'X'.
    SORT l_t_rsdiobj DESCENDING BY iobjnm.

    DESCRIBE TABLE l_t_rsdiobj LINES l_tabix.
    DO.
      CLEAR: ty_rsdiobj, ty_rsdiobj2.
      READ TABLE l_t_rsdiobj INTO ty_rsdiobj INDEX l_tabix.
      IF   sy-subrc EQ 0.
        SUBTRACT 1 FROM l_tabix.
        READ TABLE l_t_rsdiobj INTO ty_rsdiobj2 INDEX l_tabix.
      ENDIF.

      ADD 1 TO ty_rsdiobj-iobjnm+7(1).
      WHILE ty_rsdiobj-iobjnm+7(1) LT ty_rsdiobj2-iobjnm+7(1).
        WRITE: /01 'Ausgelassenes Objekt, welches zuerst erstellt werden muss: ', ty_rsdiobj-iobjnm.
        ADD 1 TO ty_rsdiobj-iobjnm+7(1).
      ENDWHILE.
      IF ty_rsdiobj2-iobjnm IS INITIAL.
        EXIT.
      ENDIF.
    ENDDO.
  ENDIF.
Endform.                   "fehlend_icu
Und zwar funktioniert beim unteren Code nicht, der Befehl "DESCRIBE TABLE l_t_rsdiobj LINES l_tabix" wie ich im Debugger rausgefunden habe.

Danach folgt das Problem bei mehreren Lücken der Objekte also wie oben existiert 01 02 und dann erst wieder 05.

Grüße

Re: Problem bei Zähler

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

was funktioniert denn daran nicht? hast du mal die Tabelle bei DESCRIBE TABLE angeklickt um zu schauen ob sie Werte hat? bleibt l_tabix = 0 ? Etwas präzisere Angaben wären bestimmt hilfreich :)
Gruß,
der Matze

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
JA l_tabix bleibt bei 0, das ist der Fehler, aber er müsste ja eig den Tabix auf die Anzahl der Einträge setzen oder?

Re: Problem bei Zähler

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Thanatos82 hat geschrieben:hast du mal die Tabelle bei DESCRIBE TABLE angeklickt um zu schauen ob sie Werte hat?
wäre grad für mich der einzig sinnvolle Grund dafür. Bitte mal debuggen und testen. Und dann herausfinden wo und warum es verloren geht.
Gruß,
der Matze

Re: Problem bei Zähler

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe das Problem gelöst, lag daran, dass das Select nciht richtig ausgeführt wurde, habe es aber hinbekommen.
Nun aber noch das andere Problem, das dies so nur klappt wenn ein Objekt ausgelassen worden ist, wie könnte ich das schaffen falls 2 oder mehrere fehelen?

Vergleichbare Themen

3
Antw.
2012
Views
Group by Zähler
von gs3rr4 » 16.07.2015 10:42 • Verfasst in ABAP® für Anfänger
5
Antw.
1274
Views
BAPI_ACC_DOCUMENT_CHECK - Zähler Positionen
von Rabea1103 » 27.09.2019 11:50 • Verfasst in ABAP® für Anfänger
10
Antw.
4610
Views
Zähler nebem Überschrifm FB 'REUSE_ALV_GRID_DISPLAY'
von managero » 02.07.2008 16:09 • Verfasst in Dialogprogrammierung
1
Antw.
10042
Views
Zähler für das Zählen von Reportaufrufen im Portal
von kaim77 » 01.03.2012 09:49 • Verfasst in Enterprise Portal
25
Antw.
4066
Views
Ausgabe für letztes erstelltes Objekt durch Zähler
von patlau » 14.05.2013 11:33 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 617
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2243
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8835