Append mehrer Zeilen mit VALUE #

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

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

Append mehrer Zeilen mit VALUE #

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hallo zusammen,

baue gerade eine Batchmappe auf und da ist der Befehl Value # ja sehr praktisch. Nur ist mir eben aufgefallen dass die Tabelle jedesmal überschrieben wird, ich will die Zeilen aber abhängig von Bedingungen füllen:

Code: Alles auswählen.

    LOOP AT me->t_agreements ASSIGNING FIELD-SYMBOL(<lw_agreements>).

* Neuer Vertrag
      AT NEW waers.
        me->t_bdc = VALUE #( ( program = 'SAPMM06E' dynpro = '0200' dynbegin = abap_true )
                             ( fnam = 'EKKO-LIFNR'  fval = <lw_agreements>-lifnr )
                             ( fnam = 'RM06E-EVART' fval = <lw_agreements>-evart )
                             ( fnam = 'RM06E-VEDAT' fval = sy-datum )
                             ( fnam = 'EKKO-EKORG'  fval = <lw_agreements>-ekorg )
                             ( fnam = 'EKKO-EKGRP'  fval = <lw_agreements>-ekgrp )
                             ( fnam = 'BDC_OKCODE'  fval = '/00' )

                             ( program = 'SAPMM06E' dynpro = '0201' dynbegin = abap_true )
                             ( fnam = 'EKKO-KDATB'  fval = sy-datum )
                             ( fnam = 'EKKO-KDATE'  fval = <lw_agreements>-kdate )
                             ( fnam = 'EKKO-WAERS'  fval = <lw_agreements>-waers )
                             ( fnam = 'EKKO-ZTERM'  fval = <lw_agreements>-zterm )
                             ( fnam = 'EKKO-IHREZ'  fval = <lw_agreements>-ihrez )
                             ( fnam = 'BDC_OKCODE'  fval = '/00' ) ).
      ENDAT.

* alle Positionen
      ADD 1 TO ln_index.

      me->t_bdc = VALUE #(  ( program = 'SAPMM06E' dynpro = '0220' dynbegin = abap_true )
                            ( fnam = 'EKPO-EMATN(' && ln_index && ')' fval = <lw_agreements>-ematn )
                            ( fnam = 'EKPO-IDNLF(' && ln_index && ')' fval = <lw_agreements>-idnlf )
                            ( fnam = 'EKPO-KTMNG(' && ln_index && ')' fval = <lw_agreements>-ktmng )
                            ( fnam = 'EKPO-ETFZ1(' && ln_index && ')' fval = <lw_agreements>-etfz1 )
                            ( fnam = 'EKPO-ETFZ2(' && ln_index && ')' fval = <lw_agreements>-etfz2 )
                            ( fnam = 'EKPO-ABUEB(' && ln_index && ')' fval = <lw_agreements>-abueb )
                            ( fnam = 'EKPO-WERKS(' && ln_index && ')' fval = <lw_agreements>-werks )
                            ( fnam = 'EKPO-NETPR(' && ln_index && ')' fval = <lw_agreements>-netpr ) ).
Ich bräuchte sowas wie:

Code: Alles auswählen.

       APPEND VALUE #(  ( program = 'SAPMM06E' dynpro = '0220' dynbegin = abap_true )
                        ( fnam = 'BDC_OKCODE'  fval = '=NP' ) ) to  me->t_bdc.
das geht aber nur mit einer Zeile.

Hat da jemand einen Tipp?

Danke,

Gruß Wolfgang
Geht nicht gibts nicht

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


Re: Append mehrer Zeilen mit VALUE #

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hab es gefunden, mit <BASE itab> als erstes Argument funktioniert es: ( hier gefunden https://blogs.sap.com/2014/09/29/abap-n ... pressions/ )

Code: Alles auswählen.

      me->t_bdc = VALUE #( BASE me->t_bdc
                          ( program = 'SAPMM06E' dynpro = '0220' dynbegin = abap_true )
                          ( fnam = 'EKPO-EMATN(' && ln_index && ')' fval = <lw_agreements>-ematn )
                          ( fnam = 'EKPO-IDNLF(' && ln_index && ')' fval = <lw_agreements>-idnlf )
                          ( fnam = 'EKPO-KTMNG(' && ln_index && ')' fval = <lw_agreements>-ktmng )

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

Geht nicht gibts nicht

Re: Append mehrer Zeilen mit VALUE #

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Oder so:

Code: Alles auswählen.

TYPES: BEGIN OF ty_test,
         eins TYPE c LENGTH 1,
         zwei TYPE c LENGTH 2,
         drei TYPE c LENGTH 3,
       END OF ty_test,
       ty_test_t TYPE STANDARD TABLE OF ty_test WITH DEFAULT KEY.
DATA lt_test TYPE ty_test_t.

APPEND LINES OF VALUE ty_test_t( ( eins = 'A' zwei = 'a' )
                                 ( eins = 'a' drei = 'c' ) ) TO lt_test.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Thomas R.


Re: Append mehrer Zeilen mit VALUE #

Beitrag von DeathAndPain (Top Expert / 1939 / 257 / 412 ) »
Ohne es getestet zu haben, würde ich aber vermuten, dass die Version mit BASE ein Stück performanter ist, denn die APPEND LINES OF-Version baut erst aus einzeln spezifizierten Zeilen per VALUE # eine temporäre interne Tabelle auf, zerlegt diese dann per LINES OF wieder in ihre einzelnen Zeilen, um diese dann an die Zieltabelle anzufügen, wohingegen man dem System bei der BASE-Variante direkt sagt, dass er die einzeln spezifizierten Zeilen ohne Umweg über eine namenlose temporäre Tabelle an die Zieltabelle anfügen soll.

Wieviel das ausmacht, wäre zu testen.

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Hakk (ForumUser / 5 / 1 / 0 ) »
Hi wieso machst du es nicht mit der Lösung?

manuell mit Feldsymbolen (~30% langsamer als die beiden vorherigen Varianten)

LOOP AT itab1 ASSIGNING FIELD-SYMBOL(<wa_1>).
APPEND INITIAL LINE TO itab2 ASSIGNING FIELD-SYMBOL(<wa_2>).

******* und hier deine Logik zur Befüllung...

MOVE-CORRESPONDING <wa_1> TO <wa_2>.
ENDLOOP.

Re: Append mehrer Zeilen mit VALUE #

Beitrag von DeathAndPain (Top Expert / 1939 / 257 / 412 ) »
Warum sollte man sich für eine Lösung entscheiden, von der Du selber sagst, dass sie 30% langsamer ist? Schlechter zu lesen wäre sie meiner Meinung nach obendrein.

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Hakk (ForumUser / 5 / 1 / 0 ) »
Also es ist 30 % langsamer als wenn du tab1 = tab2 machst. Und nichts für ungut, wenn du den Lösungsansatz nicht verstehst dann frag doch nicht in die Foren rein. Und sogar wenn es 200 % langsamer wäre, ich denke nicht dass irgend jemanden dich Programme schreiben lässt, bei denen es darauf ankommt ob diese eine Millisekunde langsamer sind...

Re: Append mehrer Zeilen mit VALUE #

Beitrag von DeathAndPain (Top Expert / 1939 / 257 / 412 ) »
Was bringt Dich zu der Vermutung, dass ich den Lösungsansatz nicht verstehe? Hier wurde eine Lösung geboten, und dann kamst Du mit einer kosmetisch schlechteren Lösung, die obendrein weniger performant ist. Das hat mich zu der Frage bewegt, wozu Du diese auf der ganzen Linie unterlegene Lösung noch geboten hast.

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Hakk (ForumUser / 5 / 1 / 0 ) »
Wieso ist die Lösung langsamer? Hast du es getestet? Es ist 30 % langsamer als die Anweisung tab1 = tab2. Oh man mach du ruhig dein Batch-Input, sagt schon einiges...

Re: Append mehrer Zeilen mit VALUE #

Beitrag von DeathAndPain (Top Expert / 1939 / 257 / 412 ) »
Ich mache Batch Input?!?

Ich bin dann mal hier raus; das ist mir zu blöd...

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hakk hat geschrieben:
14.09.2020 08:56
Wieso ist die Lösung langsamer? Hast du es getestet? Es ist 30 % langsamer als die Anweisung tab1 = tab2. Oh man mach du ruhig dein Batch-Input, sagt schon einiges...
Erst ALLES lesen, dann denken, dann schreiben...
Geht nicht gibts nicht

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Hakk (ForumUser / 5 / 1 / 0 ) »
Für was machst du deine Batch-Mappe wenn nicht für einen Batch-Input?

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hakk hat geschrieben:
29.09.2020 18:50
Für was machst du deine Batch-Mappe wenn nicht für einen Batch-Input?
Hast Du es noch immer nicht geschnallt? DeathAndPain hat nur auf einen Beitrag geantwortet in dem von einem Batch Input gesprochen wurde, der aber garnicht das Thema war.

Folgende Benutzer bedankten sich beim Autor Romaniac für den Beitrag:
DeathAndPain

Geht nicht gibts nicht

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Hakk (ForumUser / 5 / 1 / 0 ) »
Ah ok, aber meine Lösung hat er trotzdem nicht richtig zugeordnet oder? Ist ja dann doch performant. Dann machst du ja denn Batch Input oder nicht?

Re: Append mehrer Zeilen mit VALUE #

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hakk hat geschrieben:
10.09.2020 19:22
Also es ist 30 % langsamer als wenn du tab1 = tab2 machst. Und nichts für ungut, wenn du den Lösungsansatz nicht verstehst dann frag doch nicht in die Foren rein. Und sogar wenn es 200 % langsamer wäre, ich denke nicht dass irgend jemanden dich Programme schreiben lässt, bei denen es darauf ankommt ob diese eine Millisekunde langsamer sind...
Sorry, Du schlägst eine Lösung mit LOOP vor wo es wesentlich eleganter mit VALUE geht und schreibst noch selbst dass es 30% langsamer ist, wirfst dann aber den anderen vor dass sie einen simplen LOOP mit Feldsymbolzuweisung nicht verstehen??? Und im gleichen Atemzug wirfst ihm den Batch Input vor die Füße der gar nicht von ihm stammt?

Es geht bei Deinen Antworten auch garnicht um den fachlichen Inhalt an sich sondern um die Art und Weise wie Du die Leute angehst weil Sie Deine Lösung diskutieren! Das passiert hier meist sehr sachlich und vor allem fundiert und wenn damit nicht klar kommst (oder es nicht verstehst) dann such Dir ein anderes Forum zum stänkern!

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

Geht nicht gibts nicht

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2040
Views
Mehrer Änhänge per Mail verschicken
von godevilgo » 28.04.2006 15:08 • Verfasst in ABAP® Core
2
Antw.
2139
Views
Selektion mehrer Excel-Sheets
von Ludo » 20.01.2005 14:50 • Verfasst in ABAP® Core
6
Antw.
1088
Views
Mehrer Selects in eine Tabelle bringen
von burggartenkind » 25.07.2019 13:44 • Verfasst in ABAP® für Anfänger
2
Antw.
1791
Views
Initialer Aufruf mehrer Dynpros erkennen
von pohlmann-schwarza » 19.06.2008 15:02 • Verfasst in ABAP® für Anfänger
3
Antw.
3217
Views
Vergleich mehrer Variablen auf gleichen Wert
von donossi » 27.09.2012 17:58 • 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
Gestern von Bright4.5 1 / 532
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2162
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8757