Skip to content

Instantly share code, notes, and snippets.

@js1972
Created August 7, 2014 04:49
Show Gist options
  • Save js1972/ec6caf0b166c7018f45c to your computer and use it in GitHub Desktop.
Save js1972/ec6caf0b166c7018f45c to your computer and use it in GitHub Desktop.
Get SAP document partner addresses. Function SD_PARTNER_READ can be used to read the partner addresses for sales documents such as deliveries. The benefit of using this function is that it correctly gets the correct data when the user has overwritten the default partner address.
method get_address_as_gdt.
data addresses type standard table of sadrvb with empty key.
data partners type standard table of vbpavb with empty key.
data(country) = value land1_gp( ).
data(state) = value regio( ).
clear: r_result, addresses, partners.
r_result-internal_id-content = me->ship_to_party.
call function 'SD_PARTNER_READ'
exporting
f_vbeln = me->delivery
tables
i_xvbadr = addresses
i_xvbpa = partners.
try.
data(address_number) = partners[ parvw = c_ship_to_partner_internal ]-adrnr. " 'WE' Ship-to
append addresses[ adrnr = address_number ]-name1 to r_result-address-organisation_formatted_name.
r_result-address-postal_address-city_name = addresses[ adrnr = address_number ]-ort01.
r_result-address-postal_address-street_name = addresses[ adrnr = address_number ]-stras.
r_result-address-postal_address-country_code = addresses[ adrnr = address_number ]-land1.
r_result-address-postal_address-region_code-content = addresses[ adrnr = address_number ]-regio.
r_result-address-postal_address-street_postal_code = addresses[ adrnr = address_number ]-pstlz.
data(email) = value zemail( ).
email-uri-content = addresses[ adrnr = address_number ]-email_addr.
append email to r_result-address-communication-email.
"get region name
data(langu) = cl_abap_syst=>get_language( ).
country = addresses[ adrnr = address_number ]-land1.
state = addresses[ adrnr = address_number ]-regio.
select single bezei into r_result-address-postal_address-region_name
from t005u
where land1 = country
and bland = state
and spras = langu.
"get supplemental street address
data adrc_addresses type standard table of adrc with empty key.
call function 'ADDR_SELECT_ADRC_SINGLE'
exporting
addrnumber = address_number
tables
et_adrc = adrc_addresses
exceptions
address_not_exist = 1
parameter_error = 2
internal_error = 3
address_blocked = 4
others = 5.
if sy-subrc = 0.
append adrc_addresses[ 1 ]-str_suppl1 to r_result-address-postal_address-street_prefix_name.
endif.
catch cx_sy_itab_line_not_found.
"no address details found - exit
endtry.
endmethod.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment