data: lv_guid type crmd_orderadm_h-guid.
data: ls_crmd_order_index type crmd_order_index.
data: lt_crmd_order_index type TABLE OF crmd_order_index.
DATA it_tab TYPE TABLE OF ls_tab.
DATA ls_tab like LINE OF it_tab.
DATA ls_tab1 like LINE OF it_tab.
DATA it_partner_no TYPE TABLE OF ls_partner_no.
DATA ls_partner_no LIKE LINE OF it_partner_no.
DATA adr_tab TYPE TABLE OF adr6.
DATA ph_tab TYPE TABLE OF adr2.
DATA ls_adr_tab like LINE OF adr_tab.
DATA ls_ph_tab like LINE OF ph_tab.
data lS_SEARCH_PARAMS TYPE ZIFBST_SEARCH_SRV_ORDER.
data LT_SERVICE_ORDER TYPE ZIFBTT_SRV_ORDER.
data Ls_SERVICE_ORDER LIKE LINE OF lT_SERVICE_ORDER.
data ls_items type ZIFBST_ITEM.
data ls_franch type ls_fran.
data it_franch type TABLE OF ls_fran.
SELECT * from crmd_order_index as A INNER JOIN crmd_orderadm_h as b
on b~guid = a~header INTO CORRESPONDING FIELDS OF TABLE it_partner_no
where b~object_id = LV_SRV_ORDER_NO and b~process_type = 'ZSRO' and
a~object_type = 'BUS2000116' and ( ( a~pft_1 = 'X' and a~pft_0 = ' ')
or ( a~pft_0 = 'X' and a~pft_1 = ' ' ) ).
SELECT * from but000 AS a INNER JOIN but020 as b on
a~partner = b~partner INNER JOIN adrc as c on
b~ADDRNUMBER = c~ADDRNUMBER
INTO CORRESPONDING FIELDS OF TABLE
it_tab FOR ALL ENTRIES IN it_partner_no
WHERE a~PARTNER = it_partner_no-partner_no .
SELECT * FROM adr6
INTO CORRESPONDING FIELDS OF TABLE adr_tab
FOR ALL ENTRIES IN it_tab WHERE ADDRNUMBER = it_tab-ADDRNUMBER.
SELECT * from adr2 INTO CORRESPONDING FIELDS OF TABLE ph_tab
FOR ALL ENTRIES IN it_tab WHERE ADDRNUMBER = it_tab-ADDRNUMBER
and flgdefault = 'X'..
LOOP at it_tab into ls_tab.
MOVE-CORRESPONDING ls_tab to ls_tab1.
LOOP at adr_tab into ls_adr_tab WHERE ADDRNUMBER = ls_tab-ADDRNUMBER.
ls_tab1-smtp_addr = ls_adr_tab-smtp_addr.
ENDLOOP.
LOOP at ph_tab into ls_ph_tab WHERE ADDRNUMBER = ls_tab-ADDRNUMBER.
ls_tab1-telnr_long = ls_ph_tab-telnr_long.
ENDLOOP.
MODIFY it_tab FROM ls_tab1.
ENDLOOP.
BREAK-POINT.
LOOP at it_tab into ls_tab.
LOOP at it_partner_no INTO ls_partner_no
WHERE partner_no = ls_tab-partner.
if ls_partner_no-pft_0 = 'X'.
MOVE-CORRESPONDING ls_tab to ls_franchisee.
ENDIF.
if ls_partner_no-pft_1 = 'X'.
MOVE-CORRESPONDING ls_tab to ls_customer.
ENDIF.
ENDLOOP.
ENDLOOP.
ls_job-name = ' '.
INSERT ls_job INTO TABLE it_job.
INSERT ls_job INTO TABLE it_job.
INSERT ls_job INTO TABLE it_job.
lS_SEARCH_PARAMS-customer = ls_customer-partner.
CALL FUNCTION 'Z_IFBFM_GET_SERVICE_ORDERS'
EXPORTING
is_search_params = lS_SEARCH_PARAMS
IMPORTING
ET_SERVICE_ORDERS = LT_SERVICE_ORDER
.
SORT LT_SERVICE_ORDER DESCENDING BY from_date.
BREAK-POINT.
SELECT * from but000
INTO CORRESPONDING FIELDS of table it_franch
FOR ALL ENTRIES IN LT_SERVICE_ORDER
where partner = LT_SERVICE_ORDER-franchisee.
LOOP at LT_SERVICE_ORDER INTO ls_SERVICE_ORDER.
if ls_SERVICE_ORDER-srv_order_no = LV_SRV_ORDER_NO.
lv_fdate = ls_SERVICE_ORDER-from_date.
else.
LOOP at it_franch INTO ls_franch
WHERE partner = ls_SERVICE_ORDER-FRANCHISEE.
" READ TABLE it_franch INTO ls_franch INDEX sy-tabix.
MOVE-CORRESPONDING ls_SERVICE_ORDER to LS_SERVICE_ORDERS.
CONCATENATE ls_franch-name_org1 ls_franch-name_org2
into
ls_SERVICE_ORDERs-franchisee_name .
READ TABLE ls_SERVICE_ORDER-items INTO ls_items INDEX 1.
LS_SERVICE_ORDERS-product = ls_items-ordered_prod.
append LS_SERVICE_ORDERS to it_SERVICE_ORDERS.
CLEAR LS_SERVICE_ORDERS.
CLEAR LS_SERVICE_ORDER.
CLEAR LS_items.
CLEAR ls_franch .
ENDLOOP.
ENDIF.
ENDLOOP.