Moin MrB.,
vielen Dank für die schnelle Antwort. Du hast natürlich Recht; das Thema ist sehr komplex und die Antwortmöglichkeiten damit sehr eingeschränkt. Ich versuch's nun aber Mal mit dem Coding aus dem Exit:
Data: Z_AG(1).
Data: Z_BE(10).
Data: Z_XBLNR(20).
Data: Z_Belnr(10).
IF avik_in-bukrs = ' '.
IF IDOC_DATA_INDEX = 1.
LOOP AT IDOC_CONTROL.
IF IDOC_CONTROL-DIRECT = '2' and IDOC_CONTROL-RCVPRT = 'LI' and IDOC_CONTROL-RCVPRN ='0000000005'.
LOOP AT IDOC_DATA.
IF IDOC_DATA-SEGNAM = 'E1EDKA1' and IDOC_DATA-SDATA+0(2) = 'AG' and IDOC_DATA-SDATA+20(1) = '4'.
Z_AG = IDOC_DATA-SDATA+20(1).
ELSEIF IDOC_DATA-SEGNAM = 'E1EDKA1' and IDOC_DATA-SDATA+0(2) = 'BE' and IDOC_DATA-SDATA+3(10) = '0000000005'.
Z_BE = IDOC_DATA-SDATA+3(10).
ELSEIF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '009'.
Z_XBLNR = IDOC_DATA-SDATA+3(20).
ELSEIF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '010'.
Z_BELNR = IDOC_DATA-SDATA+3(10).
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDIF.
IF Z_AG = '4' and Z_BE = '0000000005'.
LOOP AT IDOC_DATA.
IF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '009'.
IDOC_DATA-SDATA+3(10) = Z_BELNR.
* MODIFY IDOC_DATA.
ELSEIF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '010'.
IDOC_DATA-SDATA+3(20) = Z_XBLNR.
* MODIFY IDOC_DATA.
ENDIF.
MODIFY IDOC_DATA.
ENDLOOP.
ENDIF.
ENDIF.
Das funktioniert soweit, dass immerhin die korrekte Referenznummer (XBLNR) der ersten IDOC Position gefunden wird. Dann sehe ich beim Debuggen aber, dass die im oberen Teil abgefragten Segmente aus dem IDOC mit "Schrott" gefüllt sind und somit die weiteren Rechnungsdaten nicht mehr gefunden werden. Eventuell liegt es aber auch nur an einem falschen "Loop" auf den obernen Teil...
Das "Modify Data" im unteren Teil habe ich bereits an die jetzige Stelle gesetzt, aber ohne Änderung des Ergebnisses.
Aber - ich möchte niemanden über Gebühr belasten; wenn das Ganze tatsächlich zu komplex ist, können wir es an dieser Stelle auch gerne abbrechen. Ich werde mich am übernächsten WE ggf. mit einem befreundeten SAP Freelancer treffen, der schon sehr lange im SAP-Geschäft ist und der auch programmiert. Ich selber will ja kein Programmierer werden, habe aber ab und zu den Ehrgeiz, solche Probleme zu lösen bzw. mit Hilfe zu lösen und die Lösung auch zu verstehen.![]()
Für jegliche Hilfestellung erstmal vielen Dank!
Grüße
der Prof.
vielen Dank für die schnelle Antwort. Du hast natürlich Recht; das Thema ist sehr komplex und die Antwortmöglichkeiten damit sehr eingeschränkt. Ich versuch's nun aber Mal mit dem Coding aus dem Exit:
Data: Z_AG(1).
Data: Z_BE(10).
Data: Z_XBLNR(20).
Data: Z_Belnr(10).
IF avik_in-bukrs = ' '.
IF IDOC_DATA_INDEX = 1.
LOOP AT IDOC_CONTROL.
IF IDOC_CONTROL-DIRECT = '2' and IDOC_CONTROL-RCVPRT = 'LI' and IDOC_CONTROL-RCVPRN ='0000000005'.
LOOP AT IDOC_DATA.
IF IDOC_DATA-SEGNAM = 'E1EDKA1' and IDOC_DATA-SDATA+0(2) = 'AG' and IDOC_DATA-SDATA+20(1) = '4'.
Z_AG = IDOC_DATA-SDATA+20(1).
ELSEIF IDOC_DATA-SEGNAM = 'E1EDKA1' and IDOC_DATA-SDATA+0(2) = 'BE' and IDOC_DATA-SDATA+3(10) = '0000000005'.
Z_BE = IDOC_DATA-SDATA+3(10).
ELSEIF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '009'.
Z_XBLNR = IDOC_DATA-SDATA+3(20).
ELSEIF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '010'.
Z_BELNR = IDOC_DATA-SDATA+3(10).
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDIF.
IF Z_AG = '4' and Z_BE = '0000000005'.
LOOP AT IDOC_DATA.
IF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '009'.
IDOC_DATA-SDATA+3(10) = Z_BELNR.
* MODIFY IDOC_DATA.
ELSEIF IDOC_DATA-SEGNAM = 'E1EDP02' and IDOC_DATA-SDATA+0(3) = '010'.
IDOC_DATA-SDATA+3(20) = Z_XBLNR.
* MODIFY IDOC_DATA.
ENDIF.
MODIFY IDOC_DATA.
ENDLOOP.
ENDIF.
ENDIF.
Das funktioniert soweit, dass immerhin die korrekte Referenznummer (XBLNR) der ersten IDOC Position gefunden wird. Dann sehe ich beim Debuggen aber, dass die im oberen Teil abgefragten Segmente aus dem IDOC mit "Schrott" gefüllt sind und somit die weiteren Rechnungsdaten nicht mehr gefunden werden. Eventuell liegt es aber auch nur an einem falschen "Loop" auf den obernen Teil...
Das "Modify Data" im unteren Teil habe ich bereits an die jetzige Stelle gesetzt, aber ohne Änderung des Ergebnisses.
Aber - ich möchte niemanden über Gebühr belasten; wenn das Ganze tatsächlich zu komplex ist, können wir es an dieser Stelle auch gerne abbrechen. Ich werde mich am übernächsten WE ggf. mit einem befreundeten SAP Freelancer treffen, der schon sehr lange im SAP-Geschäft ist und der auch programmiert. Ich selber will ja kein Programmierer werden, habe aber ab und zu den Ehrgeiz, solche Probleme zu lösen bzw. mit Hilfe zu lösen und die Lösung auch zu verstehen.

Für jegliche Hilfestellung erstmal vielen Dank!
Grüße
der Prof.