Thanks again.
I am not modifying an existing segment, but adding new ones. I am still missing something when it comes to getting the types right. Here is what I have now and the 'check' error message.
------------------------------------------------------------------------------------------------------------------------------------
method IF_EX_MDM_BUPA_INBOUND~BEFORE_APPL_INBOUND.
break ckwende.
DATA: it_adrc TYPE STANDARD TABLE OF ADRC,
wa_adrc TYPE ADRC,
idoc_line TYPE edidd,
lv_addrnumber TYPE ADRC-ADDRNUMBER,
st_e1adrmas TYPE E1ADRMAS,
st_e1bpad1vl TYPE E1BPAD1VL,
lv_businesspartner TYPE CHAR10,
lv_bptype TYPE CHAR4,
lv_tabix TYPE sy-tabix.
DATA: ls_idoc_data TYPE edidd.
* Get BP type and customer/vendor number.
LOOP AT idoc_data INTO idoc_line WHERE segnam EQ 'E1ADRMAS'.
st_e1adrmas = idoc_line-sdata.
ENDLOOP.
MOVE st_e1adrmas-obj_id TO lv_businesspartner.
MOVE st_e1adrmas-obj_type TO lv_bptype.
* Get address number for ADRC lookup based on if customer or vendor number.
IF lv_bptype EQ 'LFA1'.
SELECT adrnr FROM LFA1 INTO lv_addrnumber
WHERE lifnr EQ lv_businesspartner.
ENDSELECT.
ELSEIF lv_bptype EQ 'KNA1'.
SELECT adrnr FROM KNA1 INTO lv_addrnumber
WHERE kunnr EQ lv_businesspartner.
ENDSELECT.
ELSE.
EXIT.
ENDIF.
* Look up non-default (non-blank NATION) address versions using address number.
SELECT * FROM ADRC INTO wa_adrc
WHERE NATION NE SPACE and ADDRNUMBER EQ lv_addrnumber.
APPEND wa_adrc TO it_adrc.
ENDSELECT.
* Get position for new segments.
LOOP AT idoc_data INTO idoc_line WHERE segnam EQ 'E1BPAD1VL'.
lv_tabix = sy-tabix.
ENDLOOP.
* Fill new segment structure from ADRC internal table and append new address segment into idoc.
IF NOT it_adrc IS INITIAL.
LOOP AT it_adrc INTO wa_adrc. "working area for current line in table
CLEAR st_e1bpad1vl.
st_e1bpad1vl-addr_vers = wa_adrc-nation.
st_e1bpad1vl-name = wa_adrc-name1.
st_e1bpad1vl-name_2 = wa_adrc-name2.
st_e1bpad1vl-sort1 = wa_adrc-sort1.
st_e1bpad1vl-sort2 = wa_adrc-sort2.
st_e1bpad1vl-street = wa_adrc-street.
st_e1bpad1vl-city = wa_adrc-city1.
st_e1bpad1vl-country = wa_adrc-country.
st_e1bpad1vl-to_date = wa_adrc-date_to.
st_e1bpad1vl-langu = wa_adrc-langu.
st_e1bpad1vl-postl_cod1 = wa_adrc-post_code1.
st_e1bpad1vl-region = wa_adrc-region.
st_e1bpad1vl-time_zone = wa_adrc-time_zone.
ls_idoc_data = st_e1bpad1vl.
MODIFY idoc_data FROM ls_idoc_data INDEX lv_tabix. "TRANSPORTING sdata.
ENDLOOP.
ENDIF.
endmethod.
-------------------------------------------------------------------------------------------------------------------------------------