Feld wird mir nicht richtig gefüllt

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Feld wird mir nicht richtig gefüllt

Beitrag von Bernd_AD (ForumUser / 4 / 1 / 0 ) »
Hallo Experten,

ich möchte eine kleine Tabelle als ALV ausgeben. In einem Feld (ev_Umsatz) wird mir ein errechneter Wert aus einem FB mitgegeben. Mein Problem ist nun, dass ich entweder gar nichts bekomme, oder aber die Summe aller Werte oder aber nur den letzten gefundenen Wert, je nach dem wo ich den Clear positioniert habe.
Ich hoffe ich habe mich einigermaßen ausdrücken können, mein ganzes Programmier-wissen habe ich nur aus Foren und Codingbeispiele aus dem Web, also bitte nicht zu laut mit dem Kopf schütteln ob meiner Vorgehensweise :-)

Vielen Dank für Eure Bemühungen.

Hier der Code:

Code: Alles auswählen.

REPORT zbr_bonus_lst_1.


TYPE-POOLS: slis.  " SLIS contains all the ALV data types

TABLES: kna1, knvv.

TYPES: BEGIN OF tp_list,
*         sel,
         kunnr     TYPE kunnr,
         land1     TYPE land1_gp,
         name1     TYPE name1_gp,
         name2     TYPE name2_gp,
         stras     TYPE stras_gp,
         ort01     TYPE ort01_gp,
         pstlz     TYPE pstlz,
         telf1     TYPE telf1,
         ev_umsatz TYPE bonba,
       END OF tp_list.


*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: gt_list     TYPE STANDARD TABLE OF tp_list,
      gs_list     TYPE tp_list,
      gt_kna1     TYPE STANDARD TABLE OF kna1,
      gs_kna1     TYPE kna1,
      it_fieldcat TYPE slis_t_fieldcat_alv,
      wa_fieldcat TYPE slis_fieldcat_alv.

FIELD-SYMBOLS: <fs> LIKE LINE OF gt_list.

DATA: ev_umsatz TYPE bonba.


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_kunnr FOR kna1-kunnr.

SELECTION-SCREEN END OF BLOCK b1.

PARAMETERS: p_jahr TYPE n LENGTH 4.

*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM get_data.

END-OF-SELECTION.

  LOOP AT gt_list INTO gs_list.


    CALL FUNCTION 'Z_SD_GET_BONBA'
      EXPORTING
        if_fk_jahr = p_jahr
        if_kunnr   = gs_list-kunnr
      IMPORTING
        ef_bonba   = ev_umsatz.

 ENDLOOP.

    LOOP AT gt_list ASSIGNING <fs>.

      <fs>-ev_umsatz = ev_umsatz .

    ENDLOOP.




*Build field catalog
  wa_fieldcat-fieldname  = 'KUNNR'.    " Fieldname in the data table
  wa_fieldcat-seltext_m  = 'Kundennummer'.   " Column description in the output
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'NAME1'.
  wa_fieldcat-seltext_m  = 'Name'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'NAME2'.
  wa_fieldcat-seltext_m  = 'Name2'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'STRAS'.
  wa_fieldcat-seltext_m  = 'Strasse'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'PSTLZ'.
  wa_fieldcat-seltext_m  = 'PLZ'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'ORT01'.
  wa_fieldcat-seltext_m  = 'Ort'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'LAND1'.
  wa_fieldcat-seltext_m  = 'LKZ'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'TELF1'.
  wa_fieldcat-seltext_m  = 'Telefon'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.

  wa_fieldcat-fieldname  = 'ev_umsatz'.
  wa_fieldcat-seltext_m  = 'Bonusumsatz'.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR: wa_fieldcat.


*Pass data and field catalog to ALV function module to display ALV list
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat   = it_fieldcat
    TABLES
      t_outtab      = gt_list
    EXCEPTIONS
      program_error = 1
      OTHERS        = 2.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data .

*Fetch data from the database
  SELECT a~kunnr a~name1 a~name2 a~stras a~pstlz a~ort01 a~land1 a~telf1 FROM kna1 AS a
  INNER JOIN knvv AS b ON a~kunnr = b~kunnr
     INTO CORRESPONDING FIELDS OF TABLE gt_list
        WHERE vkorg = '1600' AND vtweg = '30' AND a~kunnr IN s_kunnr .


ENDFORM.

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


Re: Feld wird mir nicht richtig gefüllt

Beitrag von Aba ( / / 0 / 3 ) »
Hallo,

so wie ich das sehe, liegt dein Problem in der Platzierung der Zuweisung des ev_umsatz Wertes. Du machst ja erst einen Loop über die gt_list und lässt da per FB für jeden Eintrag den ev_umsatz berechnen. Da du diesen innerhalb des Loops aber nicht direkt wieder in deine gt_list schreibst, enthält er nur den letzten Wert, sprich den Wert, der zu deinem letzten Loop Durchgang gehört. Die Zuweisung deines ev_umsatz Wertes erfolgt dann ja im zweiten Loop. Es müssten dann alle Zeilen den gleichen ev_umsatz Wert erhalten, da er sich in dem zweiten Loop ja nicht mehr ändert.

Probier es mal wie folgt:

Code: Alles auswählen.

LOOP AT gt_list ASSIGNING FIELD-SYMBOL(<fs_list>).

   CALL FUNCTION 'Z_SD_GET_BONBA'
   EXPORTING
      if_fk_jahr = p_jahr
      if_kunnr = <fs_list>-kunnr
   IMPORTING
      ef_bonba = <fs_list>-ev_umsatz.

ENDLOOP.

Re: Feld wird mir nicht richtig gefüllt

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Die Antwort ist richtig. Der Funktionsbaustein, der die Werte beschafft, und die nachfolgende Verwertung der beschafften Werte müssen in demselben Schleifendurchlauf liegen.

Noch was anderes: Bernd_AD, wenn Dein Ziel darin besteht, autodidaktisch ABAP zu erlernen, dann ist das zwar löblich, aber achte bitte darauf, wie alt die Quellen sind, die Du zum Erkenntnisgewinn heranziehst. Dein Programmierstil ist ziemlich antik, was darauf hindeutet, dass Du aus veralteten Quellen lernst. Codingbeispiele aus dem ersten Jahrzehnt dieses Jahrtausends mögen technisch noch funktionieren, sind aber in fast allen Fällen nicht mehr das, was man sich heute noch angewöhnen sollte.

Nur als Beispiel: Deinen TYPE-POOLS-Befehl kannst Du ersatzlos wegstreichen. Von heutigen SAP-Releases wird er aus Gründen der Abwärtskompatibilität toleriert; er ist aber heute funktionslos. Es ist also völlig egal, ob er dasteht oder nicht.

Auch den TABLES-Befehl sollte man heute vermeiden (von bestimmten, speziellen Fällen abgesehen).

Re: Feld wird mir nicht richtig gefüllt

Beitrag von Bernd_AD (ForumUser / 4 / 1 / 0 ) »
Hallo Aba,

vielen Dank, so funktioniert es. Einfach super!

@DeathAndPain, habe so meine Schwierigkeiten zu erkennen, wann was veraltet ist oder nicht. Wo lernt man denn heutzutage "modernes" ABAP zu programmieren?

Schönes Wochenende und
bleibt gesund!
Bernd

Re: Feld wird mir nicht richtig gefüllt

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
Die Codezentrale ist eine gute Informationsquelle für modernes ABAP.
Gut sind in der Regel auch die SAP-Blogs in der Kategorie "Entwicklung" im Allgemeinen und die Blog posts von Horst Keller im Speziellen.

Lernen an sich muss man halt leider immer noch selbst und dabei seine eigenen Präferenzen finden (Kurs, Onlinekurs, Selbststudium, Bücher, ...). 😃

Re: Feld wird mir nicht richtig gefüllt

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Und generell lohnt es sich, auf die Möglichkeiten zu setzen, die das ABAP-Release 7.40 mit seinen gravierenden Neuerungen gebracht hat. Zugegebenermaßen wirst Du vermutlich erst etwas Übung mit den Grundlagen sammeln müssen, bevor Du diese Neuerungen wirklich verstehen kannst, aber dennoch kann ich Dir nur raten, da mal reinzuschauen: https://blogs.sap.com/2015/10/25/abap-7 ... reference/

Dadurch sind sehr viele alte Befehle und Konstruktionen mehr oder weniger ersatzlos durch weitaus bessere Codingmöglichkeiten (kürzer und viel besser zu lesen, sobald man sich daran gewöhnt hat) ersetzt worden. Den alten Kram fasst man nicht mal mehr mit spitzen Fingern an, sobald man den Charme der 7.40er-Syntax erkannt hat. (Hat mit Objektorientierung übrigens nichts zu tun, auch wenn man es im OO-Kontext natürlich genauso verwenden kann.)

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4264
Views
Feld wird nicht gefüllt
von KleinerEisbaer » 17.07.2008 11:29 • Verfasst in ABAP® für Anfänger
3
Antw.
2399
Views
Feld wird im Join nicht gefüllt
von Barney » 14.12.2016 10:10 • Verfasst in ABAP® für Anfänger
3
Antw.
1973
Views
IDoc-Feld wird nicht gefüllt
von Margolwes » 09.08.2019 16:04 • Verfasst in ABAP® Core
12
Antw.
1143
Views
Warum wird bei meinem INSERT nur ein Feld gefüllt?
von Sonne1234 » 17.01.2020 10:39 • Verfasst in ABAP® für Anfänger
4
Antw.
4869
Views
FI Mahndruck Feld MAHND-XBLNR manchmal falsch gefüllt.
von bilal » 06.02.2007 13:44 • Verfasst in Financials

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 / 2452
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9038