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: 80
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 11 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: 80
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 11 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: 3639
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 268 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
Expert
 
Beiträge: 590
Registriert: 05.05.2006, 10:14
Dank erhalten: 144 mal
Ich bin: Entwickler/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
Aufbau und Größe einer SAP Farm
vor 37 Minuten von Paul 0 Antw.
CALL TRANSACTION bei DB-Abfrage und Doppelklick eines Wertes
vor 8 Minuten von lausek 1 Antw.
Partnerrolen im SD Beleg
vor 2 Stunden von SAP_ENTWICKLER 0 Antw.
READ_TEXT - MARA
vor 58 Minuten von Django90 5 Antw.
Konditionsart für ein Material auslesen
vor 16 Stunden von wreichelt 1 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 KNA1
26.01.2018, 18:25 von deejey 5 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.

 

Wer ist online?

Mitglieder in diesem Forum: Google Adsense [Bot]