ABAP Report

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

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

ABAP Report

Beitrag von Fritz (ForumUser / 3 / 5 / 0 ) »
Hallo zusammen,
ich möchte einen ABAP-Report erstellen, der Lieferanten ausgeben soll. Hierzu soll vorerst eine Eingabe erfolgen und zwar der Buchungskreis und die Postleitzahl. Danach soll eine Liste aller passenden Lieferanten ausgegeben werden mit den Details: Name, Adresse und Bankverbindung. Da ich ein relativer ABAP Anfänger bin habe ich es bis jetzt noch nicht hinbekommen. Über Hilfe und Tipps würde ich mich freuen.

Mein Ansatz:

REPORT Z_Lieferant.

TABLES
LFA1.
TABLES
LFB1.
TABLES
LFBK.

SELECT-OPTIONS pstlz FOR LFA1-pstlz.
PARAMETERS p_BUKRS(4) TYPE c.

IF sy-subrc <> 0.
WRITE: 'Keine Übereinstimmung gefunden'.
RETURN.
ENDIF.

SELECT * FROM LFA1.
WRITE: LFA1-NAME1.
WRITE: LFA1-ADRNR.

SELECT * FROM LFBK.
WRITE: LFBK-LIFNR.

Was muss ich ergänzen damit es funktioniert? Vielen Dank schon mal.
Gruß Fritz

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


Re: ABAP Report

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »

Code: Alles auswählen.

REPORT  Z_Lieferant.

TABLES: LFA1, LFB1, LFBK.

SELECT-OPTIONS pstlz FOR LFA1-pstlz.
PARAMETERS p_BUKRS(4) TYPE c.

START-OF-SELECTION.

SELECT * FROM LFA1 WHERE ... "<-- Leider hab ich die Tabellenstruktur gerade nicht zur Hand
   WRITE: LFA1-NAME1.
   WRITE: LFA1-ADRNR.
ENDSELECT.

IF sy-subrc <> 0.
 WRITE: 'Keine Übereinstimmung gefunden'.
 RETURN.
 ENDIF.

SELECT * FROM LFBK WHERE ... "<-- Leider hab ich die Tabellenstruktur gerade nicht zur Hand
   WRITE: LFBK-LIFNR.
ENDSELECT.
So in der Art?

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Fritz

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ABAP Report

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
guten Morgen Fritz,

mit dem Vorschlag von ADT hast du schon mal einen ersten Einstieg. So wie du die Aufgabe beschrieben hast wird es aber noch nicht ganz ausreichen. Du möchtest ja die Selektion über PLZ und Buchungskreis einschränken, diese Informationen sind aber in zwei verschiedenen Tabellen abgelegt. PLZ in LFA1 und BUKRS in LFB1. Nimmst du in beiden Feldern Einschränkungen vor, so müsstest du zuerst Einträge aus der LFA1 lesen und anschliessend zu den gefundenen Einträgen die Einträge aus LFB1 sowie die Bankverbindungen aus der LFBK. Ich würde an dieser Stelle die Daten aus LFA1+LFB1 mit einem Join in eine interne Tabelle lesen und anschliessend die entsprechenden LFBK-Einträge. Wenn ich es schaffe, dann reiche ich heute noch ein Codebeispiel nach...

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
Fritz

schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: ABAP Report

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »

Code: Alles auswählen.

REPORT  Z_Lieferant.

TABLES: lfa1, lfb1.

TYPES: BEGIN OF t_lieferanten,
  lifnr TYPE lifnr,
  bukrs TYPE bukrs,
  name1 TYPE name1_gp,
  name2 TYPE name2_gp,
  name3 TYPE name3_gp,
  name4 TYPE name4_gp,
  ort01 TYPE ort01_gp,
  ort02 TYPE ort02_gp,
  pfach TYPE pfach,
  pstl2 TYPE pstl2,
  pstlz TYPE pstlz,
  stras TYPE stras_gp,
END OF t_lieferanten.

DATA: gt_lieferanten TYPE SORTED TABLE OF t_lieferanten
        WITH UNIQUE KEY lifnr bukrs,
      wa_lieferanten LIKE LINE OF gt_lieferanten.

DATA: wa_lfbk LIKE lfbk.

PARAMETERS: p_bukrs LIKE lfb1-bukrs DEFAULT '0001'.
SELECT-OPTIONS: o_pstlz FOR lfa1-pstlz.

START-OF-SELECTION.

  "Lieferanten lesen: Buchungskreis, Name, Adresse...
  "nur Lieferanten die nicht zum Löschen vorgemerkt sind
  SELECT lfa1~lifnr lfb1~bukrs lfa1~name1 lfa1~name2 lfa1~name3
         lfa1~name4 lfa1~ort01 lfa1~ort02 lfa1~pfach lfa1~pstl2
         lfa1~pstlz lfa1~stras
    FROM lfa1 JOIN lfb1 ON lfa1~lifnr = lfb1~lifnr
                        AND lfb1~bukrs = p_bukrs
    APPENDING table gt_lieferanten
    WHERE lfa1~pstlz IN o_pstlz
      AND lfa1~loevm = ''.

  LOOP AT gt_lieferanten INTO wa_lieferanten.

    WRITE: wa_lieferanten-lifnr,
           wa_lieferanten-bukrs,
           wa_lieferanten-name1,
           "... weitere Adressfelder
           wa_lieferanten-stras,
           wa_lieferanten-pstlz,
           wa_lieferanten-ort01.
    NEW-LINE.

    "zum Lieferanten die Bankverbindung lesen
    "ggf. die Gültigkeit der Bankverbindung beachten! KOVON, KOBIS
    SELECT * FROM lfbk INTO wa_lfbk WHERE lifnr = wa_lieferanten-lifnr.
      WRITE: '            ',
             wa_lfbk-banks,
             wa_lfbk-bankl,
             wa_lfbk-bankn.
      "hier weitere Felder für Bankverbindung einfügen...
      NEW-LINE.
    ENDSELECT.

    IF sy-subrc <> 0.
      WRITE: '      keine Bankverbindung gepflegt'. NEW-LINE.
    ENDIF.

  ENDLOOP.

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
Fritz

schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: ABAP Report

Beitrag von Fritz (ForumUser / 3 / 5 / 0 ) »
Vielen Dank für eure Hilfe das hat mir wirklich sehr geholfen! Mittlerweile habe ich alles so weit wie ich es haben möchte. Nur bei der Ausgabe wird alles plump untereinander geschrieben. Ich hätte gerne, dass nach jedem Lieferanten eine Leerzeile erfolgt. Ich bekomme es momentan irgendwie nicht hin.

Mein derzeitiger Code:

Code: Alles auswählen.

REPORT  Z_Lieferant.

TABLES: lfa1, lfb1.

TYPES: BEGIN OF t_lieferanten,
  lifnr TYPE lifnr,
  bukrs TYPE bukrs,
  name1 TYPE name1_gp,
  name2 TYPE name2_gp,
  name3 TYPE name3_gp,
  name4 TYPE name4_gp,
  ort01 TYPE ort01_gp,
  ort02 TYPE ort02_gp,
  pstlz TYPE pstlz,
  stras TYPE stras_gp,
END OF t_lieferanten.

 


DATA: gt_lieferanten TYPE SORTED TABLE OF t_lieferanten
        WITH UNIQUE KEY lifnr bukrs,
      wa_lieferanten LIKE LINE OF gt_lieferanten.

DATA: wa_lfbk LIKE lfbk.

PARAMETERS: p_bukrs LIKE lfb1-bukrs DEFAULT '0001'.
SELECT-OPTIONS: o_pstlz FOR lfa1-pstlz.

START-OF-SELECTION.


  SELECT lfa1~lifnr lfb1~bukrs lfa1~name1 
         lfa1~ort01 lfa1~pstlz lfa1~stras
    FROM lfa1 JOIN lfb1 ON lfa1~lifnr = lfb1~lifnr
                        AND lfb1~bukrs = p_bukrs
    APPENDING TABLE gt_lieferanten
    WHERE lfa1~pstlz IN o_pstlz
      AND lfa1~loevm = ''.
    
    IF sy-subrc <> 0. 
 WRITE: 'Es liegen keine Treffer vor!'. 
 RETURN. 
 ENDIF.

 LOOP AT gt_lieferanten INTO wa_lieferanten.

    WRITE: 
           'Name:' , wa_lieferanten-name1,
           'Straße:' , wa_lieferanten-stras,
           'Postleitzahl:' , wa_lieferanten-pstlz,
           'Ort:' , wa_lieferanten-ort01.
    NEW-LINE.
    
    SELECT * FROM lfbk INTO wa_lfbk WHERE lifnr = wa_lieferanten-lifnr.
      WRITE: 
             
             'Bankschlüssel:' , wa_lfbk-bankl,
             'Bankkontennummer:' , wa_lfbk-bankn, 
             'Länderschlüssel der Bank:' , wa_lfbk-banks.
     
            
      NEW-LINE.
    ENDSELECT.

    IF sy-subrc <> 0.
      WRITE: 'Keine Bankverbindung gepflegt'. NEW-LINE.
    ENDIF.
    LOOP.

  ENDLOOP.
  ENDLOOP.
LG Fritz

Re: ABAP Report

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
Ganz am Ende von deinem Coding ist ein "leeres" LOOP...ENDLOOP:
Füg an dieser Stelle stattdessen ein NEW-LINE ein. Dann sollte zwischen den Einträgen immer eine Leerzeile sein.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Fritz

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ABAP Report

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
Also ich würde die new-lines ganz weglassen. Stattdessen nicht "write:", sondern "write:/", dann fängt er automatisch in einer neuen Zeile an. Und wenn du einen Absatz (Leerzeile) brauchst, schreibst du einfach "SKIP." ins Coding.

Beispiel:

Code: Alles auswählen.

REPORT ZPTEST.

WRITE:/
             'Bankschlüssel:' , '12345678',
             'Bankkontennummer:' , '1237797',
             'Länderschlüssel der Bank:' , 'DE'.
SKIP.
 
WRITE:/
             'Bankschlüssel:' , '98645445',
             'Bankkontennummer:' , '1258744',
             'Länderschlüssel der Bank:' , 'DE'.

Folgende Benutzer bedankten sich beim Autor miru77 für den Beitrag:
Fritz


Re: ABAP Report

Beitrag von Fritz (ForumUser / 3 / 5 / 0 ) »
Danke euch für die Hilfe :up: . Ich habe nun was ich haben wollten.
LG

Seite 1 von 1

Vergleichbare Themen

5
Antw.
2778
Views
ABAP Report
von swonny » 05.12.2007 09:03 • Verfasst in ABAP® für Anfänger
3
Antw.
2609
Views
ABAP-Coding CO-Report
von sap-junior » 24.09.2015 10:01 • Verfasst in ABAP® Core
3
Antw.
1246
Views
Fehler bei Variantenerstelleung mit ABAP-Report
von paolo1992 » 13.01.2015 17:44 • Verfasst in ABAP® für Anfänger
1
Antw.
1605
Views
E-mail aus ABAP Report versenden
von Gast » 07.02.2006 14:03 • Verfasst in ABAP® Core
0
Antw.
825
Views
Problem mit Spaltenausgabe im ABAP-Report
von Ingo » 10.01.2012 15:29 • 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

Aktuelle Forenbeiträge

Mahnung erstellen
vor 23 Stunden von wreichelt 2 / 42
Absprung VA02 Position
Gestern von gs3rr4 gelöst 3 / 56
OPD Druck im SPOOL
Gestern von Manfred K. 1 / 34

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.

Aktuelle Forenbeiträge

Mahnung erstellen
vor 23 Stunden von wreichelt 2 / 42
Absprung VA02 Position
Gestern von gs3rr4 gelöst 3 / 56
OPD Druck im SPOOL
Gestern von Manfred K. 1 / 34

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
Gestern von Manfred K. 1 / 34
Export von Spools in XLSX
vor 6 Tagen von abapamateur 1 / 451