Felder mehrerer Tabellen zählen

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

Re: Felder mehrerer Tabellen zählen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Kai999 hat geschrieben:Danke Ralf für die Antwort, aber wie gesagt, ich bin ein Anfänger und weiß jetzt nicht wie ich das als Coding eingeben soll. Kannst du ein Beispiel posten?
Du willst die Lösung und ich finde das das suboptimal. Du willst ja was lernen, ich lass mal die Implementierung weg.

Code: Alles auswählen.

*----------------------------------------------------------------------*
*       CLASS lcl_abapforum DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_abapforum DEFINITION CREATE PUBLIC FINAL.

  PUBLIC SECTION.

    TYPES:
      BEGIN OF _list_entry,
        fieldname TYPE fieldname,
        counter TYPE i,
      END OF _list_entry,

      _list_table TYPE STANDARD TABLE OF _list_entry.

    CLASS-DATA:
      "! application object
      application TYPE REF TO lcl_abapforum.

    METHODS:
      "! object constructor
      "!
      "! @parameter tabname               | name of requested table
      "! @raising   cx_create_error       | Table does not exist
      constructor
        IMPORTING
          tabname TYPE tabname
        RAISING cx_create_error,

      "! count filled zz-fields
      "!
      count.

  PRIVATE SECTION.

    DATA:
      "! name of requested table
      "! (from user input)
      tabname    TYPE tabname,

      "! list of fieldnames, beginning with ZZ
      zz_fieldnames TYPE STANDARD TABLE OF fieldname,
 
     "! result list
      list_table TYPE _list_table.

    METHODS:
      "! check if table exists
      "!
      "! @parameter tabname               | name of requested table
      "! @parameter result                | indicator: table exists
      "! @raising   cx_dd_parameter_error | Table does not exist
      table_exists
        IMPORTING
          tabname TYPE tabname
        RETURNING
          value(result) TYPE abap_bool
        RAISING
          cx_dd_parameter_error,

      "! get fieldnames beginning with ZZ...
      "!
      get_zz_fieldnames.

ENDCLASS. " lcl_abapforum

*----------------------------------------------------------------------*
*       CLASS lcl_abapforum IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_abapforum IMPLEMENTATION.
*......
ENDCLASS. " lcl_abapforum

PARAMETERS:
  "! user input: requested table's name
  tabname TYPE tabname MATCHCODE OBJECT dd_tabl.

START-OF-SELECTION.

  TRY.
      " object creation
      CREATE OBJECT lcl_abapforum=>application
        EXPORTING
          tabname = tabname.

      lcl_abapforum=>application->count( ).

      " application result in lcl_abapforum->application->list_table
      " use for alv or whatever you want

    CATCH cx_create_error.
* Fehlermeldung....
  ENDTRY.
So, jetzt ist die Arbeit gemacht, jetzt brauchst du es wirklich nur noch zuzunähen.....


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Kai999

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Felder mehrerer Tabellen zählen

Beitrag von Kai999 (ForumUser / 39 / 3 / 0 ) »
Vielen Dank Ralf!

Re: Felder mehrerer Tabellen zählen

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Ein Beispiel

Code: Alles auswählen.

REPORT zz_test.

TYPES: BEGIN OF ty_counter,
         fieldname TYPE dd03l-fieldname,
         counter   TYPE i,
       END OF ty_counter,
       tt_counter TYPE STANDARD TABLE OF ty_counter.

DATA: gv_tabname TYPE dd02l-tabname,
      gt_dd03l   TYPE TABLE OF dd03l,
      gs_dd03l   TYPE dd03l,
      gt_counter TYPE tt_counter,
      gs_counter TYPE ty_counter,
      where_cond TYPE string.

PARAMETERS p_tab TYPE dd02l-tabname.

START-OF-SELECTION.

* 1. Prüfen, ob Tabelle überhaupt existiert. 
  SELECT SINGLE tabname FROM dd02l INTO gv_tabname
    WHERE tabname EQ p_tab.
  IF sy-subrc NE 0.
    WRITE: / 'Tabelle', p_tab, 'unbekannt'.
    RETURN.
  ENDIF.

* 2. Felder mit ZZ besorgen 
  SELECT * FROM dd03l INTO TABLE gt_dd03l
    WHERE tabname = p_tab
    AND   fieldname LIKE 'ZZ%'.

* wenn keine ZZ_Felder vorhanden, entpsrehcende Nachricht ausgeben 
  IF gt_dd03l IS INITIAL.
    WRITE: / 'Keine ZZ_Felder vorhanden'.
  ENDIF.

* 3. Arbeitsvorrat abarbeiten und Ergebnis in eine Tabelle GT_COUNTER stellen 
  LOOP AT gt_dd03l INTO gs_dd03l.
    gs_counter-fieldname = gs_dd03l-fieldname.
    "where Bedingung dynamisch aufbauen 
    CLEAR where_cond.
    CONCATENATE gs_dd03l-fieldname 'ne space' INTO where_cond SEPARATED BY space.
    
    "Select Count Abfrage
    SELECT COUNT( * ) FROM (p_tab) INTO gs_counter-counter WHERE (where_cond).
    
    "Ergebnis wegschreiben
    APPEND gs_counter TO gt_counter.
    CLEAR gs_counter.
  ENDLOOP.

* Ergebnis ausgeben. 
  LOOP AT gt_counter INTO gs_counter.
    WRITE: / gs_counter-fieldname, gs_counter-counter.
  ENDLOOP.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
Kai999


Re: Felder mehrerer Tabellen zählen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
PeterPaletti hat geschrieben:Ein Beispiel
Super, nu muss er gar nix mehr selbst machen. Genau DAS wollte ich verhindern. Genau wie das Vermitteln schlechten Programmierstils.

Und wenn das Feld numerisch ist, gibt dein Programm falsche Ergebnisse aus.


Ralf

Edit: Falsches "nicht" gelöscht

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
gtoXX

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Felder mehrerer Tabellen zählen

Beitrag von Kai999 (ForumUser / 39 / 3 / 0 ) »
Hallo, ich weiß, dass du es nur gut meinst Ralf, aber mach dich mal locker. Ich habe mir dein Code genau angeschaut und fand es ehrlich gesagt für einen Anfänger zu kompliziert. Kannst mir glauben, dass ich bis eben selber an meinem Code dran war und die Nachricht vom Peter eben erst gesehen habe. Ich muss sagen, dass ich einen ähnlichen geschrieben habe und jetzt fast alles nachvollziehen kann. Jetzt kann ich die Codes vergleichen und anpassen.
Vielen Dank an dieser Stelle PeterPaletti!

Gruß
Kai

Re: Felder mehrerer Tabellen zählen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Wenn dein Code so aussieht wie seiner, ist das Kind schon im Brunnen. Prozedural, Ungarische Notation, programmlokale / "globale" Felder...

Das meinte ich mit Programmierstil - mein Ansatz sollte genau das verhindern.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Felder mehrerer Tabellen zählen

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
@Ralf: Deine letzten beiden Postings hier sind genau die Antworten, mit denen du dir immer wieder selbst in den Fuß schießt. Einzig die Kritik ob des Postings einer vollständigen Lösung lasse ich gelten. Aber alles andere ist deine persönliche Meinung und es ist eine Unverschämtheit Peters Code als schlechten Programmierstil zu bezeichnen. Deine Haltung bezüglich HN ist bekannt, aber nicht jeder der das anders sieht ist ein schlechter Programmierer. Und der ganze mit Sermon mit " Prozedural, Ungarische Notation, programmlokale / "globale Felder" ..." ist nur dadurch zu erklären dass du entweder schlechte Laune oder keinen Schimmer von Didaktik hast. Und ich fürchte es ist Letzteres, da dein Coding zwar technisch schöner und moderner ist als Peters, aber leider mit viel zu viel Brimborium das letztlich Gefragte versteckt

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
Unit605Murdock

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Felder mehrerer Tabellen zählen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Natürlich poste ich hier meine Meinung - was auch sonst?

Prozedurale Programmierung ist lt. SAP ebenso obsolet wie "globale" Variablen. Demzufolge ist sowas schlechter Stil. Unabhängig davon, wer es macht. Bei Fünfzeilern ist sowas noch egal, aber wenn einer so anfängt, schreibt er nach meiner Erfahrung auch 3.000 Zeilen einfach untereinander. Dann bekommt man nie ein Gefühl für gutes OO-Design (fatal vor dem Hintergrund, dass S/4 vor der Tür steht). Und das wiederum führt dann dazu, dass eine Anwendung von mir, die extra fast prozedural ist und wirklich nur Factory und Vererbung nutzt (wofür es gute Gründe gibt, alles idiotensicher dokumentiert), gelöscht und prozedural neu geschrieben wird, weil von einem halben Dutzend Programmierern sich kein einziger findet, der das verstehen will. Was würdest du sagen, wenn du dein Auto in die Werkstatt bringst, um die Reifen wechseln zu lassen, und dort sagt man "der ist zu modern, der hat ABS, das pack ich nicht an".

Und diese Einstellung führt dann dazu, dass Anwendungen so komplex und unmodularisiert sind, dass selbst hier ein sehr erfahrener Programmierer sagt, dass man komplexe Programme eh neu schreiben muss,wenn sich signifikant etwas ändert (also: dass man sie nicht warten kann).

Kapselt man dagegen in unterschiedliche Einheiten, schreibt man eben nicht zwingend alles neu, weil man voneinander unabhängige Module hat, die über definierte Schnittstellen miteinander kommunizieren.

BTW: Ich schieße mir nicht in den Fuß - meine letzten beiden Kunden sind gerade von dem Umstand, dass ich diesen missionarischen Eifer habe und meinen Standpunkt mit Verve vertrete, sehr angetan.... Wollte ich Werbung machen für mich, müsste ich das genau SO machen. Ich mache aber keine Werbung, ich habe diese Woche drei Projekte in HH abgelehnt. Ein anderes war ein EWM-Projekt ca. 300km entfernt. "Das ist mir zu weit" -- "Wie hoch muss der Stundensatz sein, damit Ihnen das nicht mehr zu weit ist?"

Mir geht es um die Sache, um ordentliches Arbeiten, wie man es von einem Software-Ingenieur (denn nichts anderes ist ein Informatiker) erwarten kann. Beim neuen Pamama-Kanal (der zum großen Teil übrigens von deutschen Ingenieuren gebaut wird), wird auch nicht einfach gebuddelt. Jeder 1-€-Schokoriegel, den du kaufen kannst, unterliegt einer besseren Planung und einem besseren Qualitätsmanagement als viele SAP-Anwendungen, die jeweils fünfstellige Beträge kosten.

Das muss aufhören, DAS ist der Grund, warum ich da so hinterher bin. Weil "funktioniert doch auch so" einfach nicht gut genug ist.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Felder mehrerer Tabellen zählen

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Lieber Ralf,
deine Erklärungen in allen Ehren. Ich stimme dir ja sogar in den meisten Sachen zu. Wenn du auf eine Frage hier im Forum geantwortet hättest, wo es darum ginge wie man sinnvoll ein Programm aufbaut wäre das ja auch alles angemessen. Aber du befindest dich hier im Noob-Forum und da ist das von dir abgelieferte Coding leider didaktisch - sagen wir mal - suboptimal. Deine Beweggründe keine fertige Lösung posten zu wollen zeigen immerhin, dass du dem Fragenden helfen willst selber eine Lösung zu erarbeiten. Aber ich habe gerade mal deinen Quelltext im Editor angeschaut - 98 Zeilen. Weißt du - früher in der Schule/Studium hat man die wichtigen Stellen eines Gedichts, Romans, Fachbuchs mit nem Textmarker markiert und das Wesentliche vom Beiwerk zu trennen. Und bei Goethe und Shakespeare ist das Beiwerk durchaus nicht nebensächlich, auch wenn die wesentlichen Aussagen kompakter gemacht werden könnten. Aber die literarische Qualität deines Postings kann sich leider nicht mit den alten Meistern messen, so dass ich mal lieber den Maßstab für Fachbücher anlege - und hier stellt man fest, dass der für die Fragestellung wichtige Inhalt leider untergeht. Man beginnt das Lernen einer Programmiersprache (oder evtl. gar Programmieren an sich) nicht damit sich mit den Metaeigenschaften von Programmen oder darüber liegenen Paradigmen zu beschäftigen, sondern indem man zunächst die Grundlagen lernt. Danach erst kommt der nicht nur von dir für wichtig erachtete Überbau.
Und genau hier kommt dann wieder dir prozedurale Programmierung zum Tragen - du brauchst einfach viel weniger Beiwerk um kurz! das Wesentliche zu erläutern.

Und ganz zum Schluss noch ein (angebliches) Zitat eines nicht ganz unbekannten Informatikers. Leider gibt es keine Quelle die das genau zitiert - aber es scheint die Ansicht desjenigen im Allgemeinen ganz gut wiederzuspiegeln und auch wenn das Zitat nicht von ihm oder nicht so von ihm sein sollte zeigt es doch ganz gut, dass OO nicht als Lösung aller Probleme von durchaus wegweisenden Personen angesehen wird.
Edsger W. Dijkstra hat geschrieben:Object-oriented programming is an exceptionally bad idea which could only have originated in California.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Felder mehrerer Tabellen zählen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Aha, das Paradigma ist nicht Betandteil der Grundlagen.

Dann muss ich ja kein Physik mehr lernen, wenn ich Flugzeuge bauen will. Ich baue einfach ERST Flugzeuge und fange dann später an, die physikalischen Grundlagem zu lernen?

Ich persönlich (der diesen Vorzug nie hatte, ich habe IT autodidaktisch in den 80ern gelernt) halte viel davon, erst zu verstehen, wie Zahlen funktionieren, ehe ich Mathematik studiere. Und ja, ich habe Mathematik-Studenten erlebt, die erst im Studium das Wort Axiom zu, ersten Mal gehört haben.

Heute lernen Kinder erst "Frei Schnauze" zu schreiben und erst dann die Regeln dazu. Was dabei herauskommt, sehe ich jedem Tag.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

8
Antw.
6345
Views
RFC Baustein zum Auslesen mehrerer Tabellen
von y20frank » 28.01.2005 22:54 • Verfasst in ABAP® für Anfänger
2
Antw.
1518
Views
Zählen in einer Tabellen
von hmaxi96 » 13.04.2016 10:12 • Verfasst in ABAP® für Anfänger
7
Antw.
680
Views
Gruppenwechsel zwecks Zählen in internen Tabellen
von Bastian599 » 27.07.2020 11:08 • Verfasst in ABAP® für Anfänger
3
Antw.
4597
Views
Felder und Tabellen in Smartforms
von nicetoknow » 05.03.2012 10:21 • Verfasst in ABAP® für Anfänger
4
Antw.
4989
Views
richtige Felder in Tabellen finden
von mel_phisto » 11.05.2005 10:20 • Verfasst in Material Management & Produktionsplanung

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

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2410
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9000