gelöst Append mehrer Zeilen mit VALUE #


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

gelöst Append mehrer Zeilen mit VALUE #

Beitragvon Romaniac » 09.01.2018, 18:14

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(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-ematn )
                            ( fnam = 'EKPO-IDNLF(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-idnlf )
                            ( fnam = 'EKPO-KTMNG(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-ktmng )
                            ( fnam = 'EKPO-ETFZ1(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-etfz1 )
                            ( fnam = 'EKPO-ETFZ2(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-etfz2 )
                            ( fnam = 'EKPO-ABUEB(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-abueb )
                            ( fnam = 'EKPO-WERKS(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-werks )
                            ( fnam = 'EKPO-NETPR(' &amp;&amp; ln_index &amp;&amp; ')' 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
Romaniac
ForumUser
 
Beiträge: 62
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 9 mal
Ich bin: Freiberufler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Append mehrer Zeilen mit VALUE #

Beitragvon Romaniac » 09.01.2018, 18:34

Hab es gefunden, mit <BASE itab> als erstes Argument funktioniert es: ( hier gefunden https://blogs.sap.com/2014/09/29/abap-news-for-740-sp08-start-value-for-constructor-expressions/ )

Code: Alles auswählen
      me->t_bdc = VALUE #( BASE me->t_bdc
                          ( program = 'SAPMM06E' dynpro = '0220' dynbegin = abap_true )
                          ( fnam = 'EKPO-EMATN(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-ematn )
                          ( fnam = 'EKPO-IDNLF(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-idnlf )
                          ( fnam = 'EKPO-KTMNG(' &amp;&amp; ln_index &amp;&amp; ')' fval = <lw_agreements>-ktmng )
Geht nicht gibts nicht
Romaniac
ForumUser
 
Beiträge: 62
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 9 mal
Ich bin: Freiberufler/in

Re: Append mehrer Zeilen mit VALUE #

Beitragvon ewx » 09.01.2018, 19:36

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.

Für diese Nachricht hat ewx einen Dank bekommen :
Thomas R.
ewx
Top Expert
 
Beiträge: 3463
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 228 mal

Re: Append mehrer Zeilen mit VALUE #

Beitragvon DeathAndPain » 16.01.2018, 12:19

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.
DeathAndPain
Specialist
 
Beiträge: 324
Registriert: 05.05.2006, 10:14
Dank erhalten: 84 mal
Ich bin: Entwickler/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
QM Probenanlage, User-Exit gesucht
vor 6 Stunden von SAP_ENTWICKLER 0 Antw.
Felder in SAP Script
vor 11 Stunden von a-dead-trousers 1 Antw.
"Lagerort Kunde" aus IDOC im Lieferplan speichern
Gestern von Alexander D. 0 Antw.
ALV Hotspot Popup
vor 38 Minuten von a-dead-trousers 6 Antw.
PDF wird falsch gedruckt
vor 34 Minuten von a-dead-trousers 7 Antw.

  Ähnliche Beiträge beta
Selektion mehrer Excel-Sheets
26.01.2005, 17:15 von Ludo 2 Antw.
Mehrer Änhänge per Mail verschicken
05.05.2006, 13:31 von quercus 2 Antw.
Append Struktur generieren
17.11.2005, 09:06 von SwordMaster 1 Antw.
gelöst dynamischer Append / Field-Symbols
08.05.2003, 08:50 von Hermann 8 Antw.
Füllen einer itab mit APPEND
06.12.2004, 13:24 von Gast 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!