Quantcast
Channel: SCN: Message List - ABAP Development
Viewing all articles
Browse latest Browse all 10425

Re: IDoc Segment Additions in Class

$
0
0

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.


-------------------------------------------------------------------------------------------------------------------------------------


12-8-2013 4-37-03 PM.jpg


Viewing all articles
Browse latest Browse all 10425

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>