Sei sulla pagina 1di 6

*&---------------------------------------------------------------------*

*& Include ZMT_INCLUDE_SITE_MASTER


*&---------------------------------------------------------------------*
CLASS lcl_sitemast DEFINITION.
PUBLIC SECTION.
DATA: lt_edidc TYPE TABLE OF edidc,
lt_control TYPE TABLE OF edidc.
data: lt_edidd TYPE TABLE OF edidd,
gs_edidd type edidd.
data: ls_sitemast type ZECOM_SITEMAS.
METHODS: Fetch_data,
send_idoc.
ENDCLASS.

CLASS lcl_sitemast IMPLEMENTATION.


method fetch_Data.
endmethod.
METHOD send_idoc.
* append s_partn to lt_range.
***** data: ls_sitenam type char10.
* data: ls_sitenam type RANGE OF char10.
* ls_sitenam = s_partn.
***** CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
***** EXPORTING
***** INPUT = s_partn
***** IMPORTING
***** OUTPUT = ls_sitenam .
.

select kunnr, SORTL, NAME1, BAHNS, ADRNR, STRAS, MCOD1, MCOD2, MCOD3,
LAND1,TELF1,BAHNE,TELF2,REGIO,ANRED,PSTLZ,ORT01, werks
from kna1 into table @DATA(lt_kna1) where KUNNR IN @s_partn. " in
@s_partn.

IF lt_kna1 IS NOT INITIAL.


R_partn-LOW = S_partn-LOW+6(4).
R_partn-HIGH = S_partn-HIGH+6(4).
R_partn-OPTION = 'BT'.
R_partn-SIGN = 'I'.
append R_partn to R_partn .
if R_partn-high is INITIAL.
select WERKS, ECOM_WH_CODE, TEXT from ZMT_WH_MAPPING into table
@data(lt_ZMT_WH_MAPPING) " FOR ALL ENTRIES IN @lt_kna1
where werks = @R_partn-low. " @lt_kna1-WERKS.
else.
select WERKS, ECOM_WH_CODE, TEXT from ZMT_WH_MAPPING into table
@lt_ZMT_WH_MAPPING " FOR ALL ENTRIES IN @lt_kna1
where werks in @R_partn. " @lt_kna1-WERKS.
endif.
sort lt_ZMT_WH_MAPPING by WERKS ECOM_WH_CODE.
DELETE ADJACENT DUPLICATES FROM lt_ZMT_WH_MAPPING COMPARING WERKS
ECOM_WH_CODE.
select ADDRNUMBER, STREET, HOUSE_NUM1, STR_SUPPL1, STR_SUPPL2, STR_SUPPL3 from
adrc
into table @data(it_adrc) for ALL ENTRIES IN
@lt_kna1 where addrnumber eq @lt_kna1-ADRNR.

select WERKS, kunnr, ADRNR, ZLATITUDE, ZLONGITUDE from T001W into table
@data(lt_too1w)
where kunnr IN @s_partn. " in @s_partn.
if not lt_too1w is INITIAL.
select ADDRNUMBER, STREET, HOUSE_NUM1, STR_SUPPL1, STR_SUPPL2, STR_SUPPL3 from
adrc
into table @data(it_adrcorg) for ALL ENTRIES IN
@lt_too1w where addrnumber eq @lt_too1w-ADRNR.

select PARTNER1, PARTNER2 from BUT050 into table @data(lt_but50) " FOR ALL
ENTRIES IN @lt_too1w
* where PARTNER1 = @lt_too1w-WERKS and
where RELTYP = 'BUR001'.

clear ls_but50.
loop at lt_but50 into ls_but50.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = ls_but50-PARTNER1
IMPORTING
OUTPUT = ls_but50-PARTNER1
.

read table lt_too1w ASSIGNING FIELD-SYMBOL(<fs_50>) with key werks =


ls_but50-PARTNER1 .
if sy-subrc <> 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ls_but50-PARTNER1
IMPORTING
OUTPUT = ls_but50-PARTNER1
.
delete lt_but50 where pARTNER1 = ls_but50-pARTNER1 and pARTNER2 =
ls_but50-pARTNER2.
endif.
clear ls_but50.
ENDLOOP.
if lt_but50 is not INITIAL.
select partner, addrnumber from but020 into table @data(lt_but020) FOR ALL
ENTRIES IN
@lt_but50 where PARTNER = @lt_but50-PARTNER2.
endif.
if not lt_but020 is INITIAL.

* select ADDRNUMBER, STREET, HOUSE_NUM1, STR_SUPPL1, STR_SUPPL2, STR_SUPPL3


from adrc
* into table @data(it_adrcprson) for ALL ENTRIES IN
* @lt_but020 where addrnumber eq @lt_but020-ADDRNUMBER.
select ADDRNUMBER, STREET, HOUSE_NUM1, STR_SUPPL1, STR_SUPPL2, STR_SUPPL3
from adrc
into table @it_adrcprson for ALL ENTRIES IN
@lt_but020 where addrnumber eq @lt_but020-ADDRNUMBER.
loop at it_adrcprson ASSIGNING FIELD-SYMBOL(<fs_adrper>).
read table lt_but020 into data(ls_but20) with key ADDRNUMBER = <fs_adrper>-
addrnumber.
if sy-subrc = 0.
read table lt_but50 into data(ls_but50) with key PARTNER2 = ls_but20-
PARTNER.
if sy-subrc = 0.
<fs_adrper>-kunnr = ls_but50-PARTNER1.
endif.
endif.
ENDLOOP.

endif.
endif.

select PARTNER, NAME_FIRST, NAME_LAST, NAMEMIDDLE, NAME_ORG1, NAME_ORG3


from but000 into table @data(lt_but000) for ALL ENTRIES
IN @lt_kna1 where PARTNER eq @lt_kna1-kunnr.
select PARTNER1, PARTNER2 from BUT051 into table @data(lt_but051) for all
ENTRIES IN
@lt_kna1 where PARTNER1 eq @lt_kna1-kunnr.
if not lt_but051 is INITIAL.
select PARTNER, NAME_FIRST,
NAME_LAST, NAMEMIDDLE from BUT000 into table @data(lt_but000n) for ALL ENTRIES
IN @lt_but051
where PARTNER eq @lt_but051-PARTNER2.
endif.
ENDIF.
clear ls_butfin.
loop at lt_but051 ASSIGNING FIELD-SYMBOL(<fs_but51>).
read table lt_but000n into data(ls_butname) with key partner = <fs_but51>-
PARTNER2.
if sy-subrc = 0.
ls_butfin-PARTNER1 = <fs_but51>-PARTNER1.
ls_butfin-PARTNER2 = <fs_but51>-PARTNER2.
ls_butfin-NAME_FIRST = ls_butname-NAME_FIRST.
ls_butfin-NAME_LAST = ls_butname-NAME_LAST.
ls_butfin-NAMEMIDDLE = ls_butname-NAMEMIDDLE.
append ls_butfin to lt_butfin.
clear ls_butfin.
endif.
ENDLOOP.
if lt_kna1 is not initial.

loop at lt_kna1 ASSIGNING FIELD-SYMBOL(<fs_kna1>).


***** read table lt_ZMT_WH_MAPPING into data(ls_ZMT_WH_MAPPING) with key werks =
<fs_kna1>-werks.
LOOP AT lt_ZMT_WH_MAPPING into data(ls_ZMT_WH_MAPPING) WHERE werks =
<fs_kna1>-werks.
***** if sy-subrc = 0.
CONCATENATE <fs_kna1>-werks '_' ls_ZMT_WH_MAPPING-ECOM_WH_CODE into ls_whcode.
***** endif.
ls_sitemast-ORGCODE = ls_whcode. " <fs_kna1>-werks. " SORTL.
ls_sitemast-ORGKEY = ls_whcode. " <fs_kna1>-werks. " SORTL.
ls_sitemast-ORGNAME = ls_ZMT_WH_MAPPING-TEXT. " <fs_kna1>-NAME1.
ls_sitemast-PARNTORGCODE = <fs_kna1>-BAHNS.
ls_sitemast-PRICEORGCODE = <fs_kna1>-BAHNS.
ls_sitemast-PRIMENTRPZKEY = <fs_kna1>-BAHNS.
ls_sitemast-TAXPAYERID = 'TAX pay ID'.
ls_sitemast-TAXJURISDICTION = 'TAX jursdiction' .
ls_sitemast-TAXEXEMPTCERT = 'TAX ext Cert'.

* read table it_adrc into data(ls_adrc) with key ADDRNUMBER = <fs_kna1>-ADRNR.


read table it_adrcorg into data(ls_adrc) with key ADDRNUMBER = <fs_kna1>-ADRNR.
if sy-subrc = 0.
* CONCATENATE ls_adrc-HOUSE_NUM1 ls_adrc-STREET into data(ls_adrnrstrt) SEPARATED
BY space.
ls_sitemast-ADDRESSLINE1AA = ls_adrc-HOUSE_NUM1.
ls_sitemast-ADDRESSLINE1A = ls_adrc-STREET. "ls_adrnrstrt. " ls_adrc-STREET.
" <fs_kna1>-ADRNR.
ls_sitemast-ADDRESSLINE1B = ls_adrc-STR_SUPPL1. " <fs_kna1>-STRAS.
ls_sitemast-ADDRESSLINE1C = ls_adrc-STR_SUPPL2. " <fs_kna1>-MCOD1.
ls_sitemast-ADDRESSLINE2ABC = ls_adrc-STR_SUPPL3. " <fs_kna1>-MCOD2.
endif.
ls_sitemast-CITYABC = <fs_kna1>-MCOD3.
ls_sitemast-COMPANY = <fs_kna1>-BAHNS.
ls_sitemast-COUNTRY = <fs_kna1>-LAND1.
ls_sitemast-DAYPHONE = <fs_kna1>-TELF1.
ls_sitemast-EMAILID = <fs_kna1>-BAHNE.
ls_sitemast-MOBILEPHONE = <fs_kna1>-TELF2.
ls_sitemast-STATE = <fs_kna1>-REGIO.
ls_sitemast-TITLE = <fs_kna1>-ANRED.
ls_sitemast-ZIPCODE = <fs_kna1>-PSTLZ.
ls_sitemast-CITY2 = <fs_kna1>-ORT01.
ls_sitemast-STATE2 = <fs_kna1>-REGIO.
* read table it_adrcprson into data(ls_adrcp) with key ADDRNUMBER = <fs_kna1>-
ADRNR.
read table it_adrcprson into data(ls_adrcp) with key kunnr = <fs_kna1>-kunnr.
if sy-subrc = 0.
ls_sitemast-ADDRESSLINE2XA = ls_adrcp-HOUSE_NUM1.
ls_sitemast-ADDRESSLINE2X = ls_adrcp-STREET. "ADRNR. "<fs_kna1>-ADRNR.
ls_sitemast-ADDRESSLINE2Y = ls_adrcp-STR_SUPPL1. " STRAS. "<fs_kna1>-STRAS.
ls_sitemast-ADDRESSLINE2Z = ls_adrcp-STR_SUPPL2. " MCOD1. " <fs_kna1>-MCOD1.
ls_sitemast-ADDRESSLINE2XYZ = ls_adrcp-STR_SUPPL3. " MCOD2. " <fs_kna1>-MCOD2.
endif.
ls_sitemast-CITY3XYZ = <fs_kna1>-ORT01.
ls_sitemast-COMPANYXYZ = <fs_kna1>-BAHNS.
ls_sitemast-COUNTRYXYZ = <fs_kna1>-LAND1.
ls_sitemast-ZIPCODEXYZ = <fs_kna1>-PSTLZ.
ls_sitemast-DESCRIPTION = <fs_kna1>-NAME1.
ls_sitemast-GLN = ''. " <fs_kna1>-SORTL.
ls_sitemast-IDENTBYPARNT = ls_whcode. " <fs_kna1>-werks. " <fs_kna1>-SORTL.
read table lt_too1w into data(ls_too1w) with key kunnr = <fs_kna1>-kunnr.
if sy-subrc = 0.
ls_sitemast-LATITUDE = ls_too1w-ZLATITUDE. " 'LATITUDE 1234567'.
ls_sitemast-LONGITUDE = ls_too1w-ZLONGITUDE. " 'LONGITUDE 12345'.
endif.
ls_sitemast-NODEORGCODE = ls_whcode. " <fs_kna1>-werks. " <fs_kna1>-SORTL.
* ls_sitemast-NODETYPE = <fs_kna1>-NAME1.
* ls_sitemast-NODETYPE = <fs_kna1>-NAME1.
ls_sitemast-SHIPNODE = ls_whcode. " <fs_kna1>-werks. " <fs_kna1>-SORTL.
ls_sitemast-SHIPNODEKEY = ls_whcode. " <fs_kna1>-werks. " <fs_kna1>-SORTL.
* ls_sitemast-BAHNE = <fs_kna1>-BAHNE.
read table lt_but000 into data(ls_but000) with key PARTNER = <fs_kna1>-kunnr.
if sy-subrc = 0.
ls_sitemast-ADDRESSID = ls_but000-NAME_ORG1.
ls_sitemast-NODETYPE = ls_but000-NAME_ORG3.
endif.
read table lt_butfin into data(ls_but000n) with key PARTNER1 = <fs_kna1>-
kunnr.
if sy-subrc = 0.
ls_sitemast-FIRSTNAME = ls_but000n-NAME_FIRST.
ls_sitemast-LASTNAME = ls_but000n-NAME_LAST.
ls_sitemast-MIDDLENAME = ls_but000n-NAMEMIDDLE.
endif.
gs_edidd-segnam = 'ZECOM_SITEMAS'.
gs_edidd-sdata = ls_sitemast.
append gs_edidd to lt_edidd.
clear: gs_edidd.
endloop.
ENDLOOP.

***** if lt_invtory is not initial.


***** gt_invtory = VALUE #( FOR gs_invtr IN lt_invtory
***** INDEX INTO v_index
***** (
***** MATNR = gs_invtr-matnr
***** werks = gs_invtr-werks
***** LABST = gs_invtr-labst
***** ) ).
*****
*****
*****
***** loop at gt_invtory ASSIGNING FIELD-SYMBOL(<fs_inventry>).
*****
***** ls_zinventry-matnr = <fs_inventry>-matnr.
***** ls_zinventry-werks = <fs_inventry>-werks.
***** ls_zinventry-labst = <fs_inventry>-labst.
*****
***** gs_edidd-segnam = 'ZECOM_SITEMAS'.
***** gs_edidd-sdata = ls_zinventry.
*****
***** append gs_edidd to lt_edidd.
***** clear: gs_edidd.
*****
***** endloop.

* lt_edidd = VALUE #( FOR gs_final IN gt_invtory


* INDEX INTO v_index1
* (
* segnum = v_index1
* segnam = 'ZECOM_INVTRY'
* sdata = gs_final
* ) ).

* lt_edidd = VALUE #( FOR gs_final IN gt_invtory


* INDEX INTO v_index1
* ( segnum = v_index1
* segnam = 'ZECOM_INVT'
* sdata = gs_final
* ) ).

DATA(ls_control) = VALUE edidc(


mestyp = 'ZECOM_SITEMASTERMT'
doctyp = 'ZECOM_SITEMASTER'
direct = '1'
rcvpor = 'SAPMPD'
rcvprn = 'MPDCLNT001'
rcvprt = 'LS' ).

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'


EXPORTING
master_idoc_control = ls_control
* OBJ_TYPE = ''
* CHNUM = ''
TABLES
communication_idoc_control = lt_edidc
master_idoc_data = lt_edidd
EXCEPTIONS
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
OTHERS = 5.
IF sy-subrc = 0.
call function 'DB_COMMIT'
exporting
iv_default = abap_true.
call function 'DEQUEUE_ALL'
exporting
_synchron = 'X'.
COMMIT WORK.
DATA(ls_edidc) = VALUE #( lt_edidc[ 1 ] OPTIONAL ) .
IF sy-subrc = 0.
DATA(v_msg) = | IDOC { ls_edidc-docnum } |.
WRITE : /10 v_msg.
ENDIF.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
endif.

ENDMETHOD.
ENDCLASS.

Potrebbero piacerti anche