Code: Alles auswählen.
LOOP AT lt_le ASSIGNING <ls_le> WHERE vgabe <> '9'.
IF sy-subrc = 0.
APPEND <ls_le> TO lt_re.
DELETE lt_le.
ENDIF.
ENDLOOP.
hat mich bissle abgeschreckt, wobei ich mir nicht vorstellen kann, was da schlimmes passieren soll wenn man nur abfragen macht und das Befehl sich auf interne Tabellen bezeiht.Diese Anweisung sollte nur von Spezialisten verwendet werden.
Eine profunde Kenntnis des zugehörigen Umfelds ist unerlässlich.
Dieses Umfeld ist nicht Teil von ABAP und hier nicht dokumentiert.
Code: Alles auswählen.
SORT lt_le BY vgabe DESCENDING.
lt_re = lt_le.
delete lt_le where vgabe <> '9'.
delete lt_re where vgabe = '9'.
Code: Alles auswählen.
SORT lt_le BY vgabe.
READ TABLE lt_le TRANSPORTING NO FIELDS BINARY SEARCH WITH KEY vgabe = '9'.
IF sy-subrc EQ 0.
ld_index = sy-tabix.
LOOP AT lt_le ASSIGNING <ls_le> FROM ld_index.
IF <ls_le>-vgabe NE '9'.
EXIT.
ENDIF.
APPEND <ls_le> TO lt_re.
DELETE lt_le.
ENDLOOP.
ENDIF.
Code: Alles auswählen.
LOOP AT lt_le ASSIGNING <ls_le> WHERE vgabe EQ '9'.
APPEND <ls_le> TO lt_re
DELETE lt_le.
ENDLOOP.
Jetzt oute ich mich mal als unwissender. Welche meinst du?black_adept hat geschrieben:Befehlszusätze für blockweises Löschen und Appendieren verwendet werden.
Das finde ich nicht. Nicht umsonst gibts von SAP die Schulung BC 490.black_adept hat geschrieben:Die ganze Diskussion um die Laufzeit sieht in meinem Augen wie Schmuck am Nachthemd aus.
Ach: DELETE ... FROM ... TO ... und INSERT LINES OF ... FROM ... TO ... INTO TABLE ... usw.a-dead-trousers hat geschrieben:Jetzt oute ich mich mal als unwissender. Welche meinst du?black_adept hat geschrieben:Befehlszusätze für blockweises Löschen und Appendieren verwendet werden.
Die Aussage bezog sich nicht auf LZ-Optimierungen allgemein, sondern auf diesen speziellen Fall. Wenn der LZ-Unterschied eklatant ist, bin ich ein eifriger Verfechter auch hinreichend komplexer Codings um dies zu bewerkstelligen.a-dead-trousers hat geschrieben: Das finde ich nicht. Nicht umsonst gibts von SAP die Schulung BC 490....
lg ADT
Code: Alles auswählen.
APPEND LINES OF itab1 TO 100 TO itab2.
DELETE itab1 TO 100.
Code: Alles auswählen.
APPEND LINES OF ITAB1 TO 100 TO ITAB2.
DELETE ITAB1 TO 100.
LOOP AT ITAB2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ITAB2-WRBTR1
IMPORTING
output = ITAB2-WRBTR1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ITAB2-WRBTR3
IMPORTING
output = ITAB2-WRBTR3.
* Belegkopf
ls_doc_header-co_area = ITAB2-KRKRS. "Kostenrechnungskreis
ls_doc_header-docdate = ITAB2-WRBTR10. "Belegdatum
ls_doc_header-postgdate = ITAB2-WRBTR11. "Buchungsdatum
ls_doc_header-doc_hdr_tx = ITAB2-BLTXT. "Belegkopftext
ls_doc_header-username = sy-uname. "User-Name
* Positionen aufbauen
* Pos. 1
ls_doc_item-send_cctr = ITAB2-WRBTR1. "Sender-Kostenstelle
ls_doc_item-acttype = ITAB2-WRBTR2. "Leistungsart
ls_doc_item-actvty_qty = ITAB2-WRBTR6. "Menge
ls_doc_item-rec_cctr = ITAB2-WRBTR3. "Empfänger-KST
ls_doc_item-rec_order = ITAB2-WRBTR4. "Empfänger-Auftrag
ls_doc_item-rec_wbs_el = ITAB2-WRBTR5. "Empfänger-KTR
ls_doc_item-activityun = ITAB2-WRBTR7. "Leistungseinheit
ls_doc_item-person_no = ITAB2-WRBTR8. "Gerätebezeichnung
ls_doc_item-seg_text = ITAB2-WRBTR9. "Segmenttext
APPEND ls_doc_item TO lt_doc_items.
ENDLOOP.
* BAPI rufen
CALL FUNCTION 'BAPI_ACC_ACTIVITY_ALLOC_POST'
EXPORTING
doc_header = ls_doc_header
* IGNORE_WARNINGS = ' '
IMPORTING
doc_no = ls_docno
TABLES
doc_items = lt_doc_items
return = lt_return
* CRITERIA =
* CUSTOMER_FIELDS =
.
REFRESH ITAB2.
APPEND LINES OF ITAB1 TO 100 TO ITAB2.
DELETE ITAB1 TO 100.
LOOP at ITAB2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ITAB2-WRBTR1
IMPORTING
output = ITAB2-WRBTR1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ITAB2-WRBTR3
IMPORTING
output = ITAB2-WRBTR3.
* Belegkopf
ls_doc_header-co_area = ITAB2-KRKRS. "Kostenrechnungskreis
ls_doc_header-docdate = ITAB2-WRBTR10. "Belegdatum
ls_doc_header-postgdate = ITAB2-WRBTR11. "Buchungsdatum
ls_doc_header-doc_hdr_tx = ITAB2-BLTXT. "Belegkopftext
ls_doc_header-username = sy-uname. "User-Name
* Positionen aufbauen
* Pos. 1
ls_doc_item-send_cctr = ITAB2-WRBTR1. "Sender-Kostenstelle
ls_doc_item-acttype = ITAB2-WRBTR2. "Leistungsart
ls_doc_item-actvty_qty = ITAB2-WRBTR6. "Menge
ls_doc_item-rec_cctr = ITAB2-WRBTR3. "Empfänger-KST
ls_doc_item-rec_order = ITAB2-WRBTR4. "Empfänger-Auftrag
ls_doc_item-rec_wbs_el = ITAB2-WRBTR5. "Empfänger-KTR
ls_doc_item-activityun = ITAB2-WRBTR7. "Leistungseinheit
ls_doc_item-person_no = ITAB2-WRBTR8. "Gerätebezeichnung
ls_doc_item-seg_text = ITAB2-WRBTR9. "Segmenttext
APPEND ls_doc_item TO lt_doc_items.
ENDLOOP.
* BAPI rufen
CALL FUNCTION 'BAPI_ACC_ACTIVITY_ALLOC_POST'
EXPORTING
doc_header = ls_doc_header
* IGNORE_WARNINGS = ' '
IMPORTING
doc_no = ls_docno
TABLES
doc_items = lt_doc_items
return = lt_return
* CRITERIA =
* CUSTOMER_FIELDS =
.
Du musst nach dem ersten BAPI-Call nicht nur itab2 sondern auch die BAPI-Tabellen (lt_doc_items) löschen/refreshen/clearen.Stegemann90 hat geschrieben:Kannst du mir da vll noch einmal weiterhelfen?