Wie kann ich Felder beim erstellen des IDOCs noch manipulieren z.B. bei der Standard ALE SST HRMD_ABA
Bei der BAdI Ausgangsverarbeitung bei den HR Stammdaten kann das Business Add-In HRALE00OUTBOUND_IDOC in der Ausgangsverarbeitung verwendet werden.
Mit der Methode IDOC_DATA_FOR_RECEIVER_MODIFY können die Daten des IDocs empfängerabhängig bearbeitet werden.
Hier noch ein Beispiel Coding wie man dies tun kann.
METHOD if_ex_hrale00outbound_idoc~idoc_data_for_receiver_modify.
************************************************************************
**************************** *******************************
*************************** MREGOTZ ******************************
**************************** *******************************
************************************************************************
*&H
*&H BADI : HRALE00OUTBOUND_IDOC
*&H Implementierung : Z_HRMD_ABA_INIT
*&H Methode : IDOC_DATA_FOR_RECEIVER_MODIFY
*&H PROGRAMMTITEL : IF_EX_HRALE00OUTBOUND_IDOC~IDOC_DATA_FOR_RECEIVER_MODIFY
*&H ZWECK : Manipulation IDOC Felder die ins CRM geschickt werden
*&H AUTOR : Regotz Michel
*&H DATUM : 14.11.2015
*&H VORAUSSETZUNGEN : HRMD_ABA
*&H SAP-MODUL : HR/IDOC Verarbeitung
*&H
*&H Company/Department : T-Systems AG
*&H Phone : +41 76 334 86 22 (Mobil)
*&H E-Mail : Michel.Regotz@T-Systems.com
*&H
************************************************************************
************************************************************************
* Datendeklaration
************************************************************************
DATA: gt_idoc_data TYPE edidd_tt,
gs_idoc_data LIKE LINE OF gt_idoc_data.
DATA: gs_e1p0002 TYPE e1p0002,
gs_e1p0006 TYPE e1p0006.
************************************************************************
* IDOC Daten Manipulieren
************************************************************************
IF receiver = 'I42_075'.
************************************************************************
* E1P0002
************************************************************************
"Lese im IDOC die Zeile mit dem IT0002
READ TABLE idoc_data INTO gs_idoc_data WITH KEY segnam = 'E1P0002'.
BREAK-POINT.
"Wandle den IDOC String in eine Struktur um
gs_e1p0002 = gs_idoc_data-sdata.
"Lösche den vorhandenen String
CLEAR gs_idoc_data-sdata.
"Lösche die Felder die man im IDOC entfernen möchte
CLEAR:
gs_e1p0002-refex,
gs_e1p0002-ordex,
gs_e1p0002-itbld.
"Wandle die bearbeitete Struktur wieder in einen String um.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = gs_e1p0002
IMPORTING
ex_container = gs_idoc_data-sdata
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
IF sy-subrc <> 0.
"Mache nichts
ENDIF.
"Schreibe die Daten ins IDOC
BREAK-POINT.
MODIFY idoc_data FROM gs_idoc_data TRANSPORTING sdata WHERE segnam = 'E1P0002'.
************************************************************************
* E1P0006
************************************************************************
"Lese im IDOC die Zeile mit dem IT0006
READ TABLE idoc_data INTO gs_idoc_data WITH KEY segnam = 'E1P0006'.
BREAK-POINT.
"Wandle den IDOC String in eine Struktur um
gs_e1p0006 = gs_idoc_data-sdata.
"Lösche den vorhandenen String
CLEAR gs_idoc_data-sdata.
"Lösche die Felder die man im IDOC entfernen möchte
CLEAR:
gs_e1p0006-itxex,
gs_e1p0006-refex,
gs_e1p0006-ordex,
gs_e1p0006-itbld.
"Initialisiere die Felder Strasse Ort PLZ und Land
CLEAR:
gs_e1p0006-stras,
gs_e1p0006-ort01,
gs_e1p0006-pstlz,
gs_e1p0006-land1.
"Befülle die Felder Strasse Ort PLZ und Land neu.
gs_e1p0006-stras = 'Hillibilly'.
gs_e1p0006-ort01 = 'NewYork'.
gs_e1p0006-pstlz = '9999'.
gs_e1p0006-land1 = 'US'.
"Wandle die bearbeitete Struktur wieder in einen String um.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = gs_e1p0006
IMPORTING
ex_container = gs_idoc_data-sdata
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
IF sy-subrc <> 0.
"Mache nichts
ENDIF.
"Schreibe die Daten ins IDOC
BREAK-POINT.
MODIFY idoc_data FROM gs_idoc_data TRANSPORTING sdata WHERE segnam = 'E1P0006'.
ELSE.
"mache nichts
ENDIF.
ENDMETHOD.