Professional Documents
Culture Documents
IF Is Initial
IF Is Initial
IF LV_PAGE IS INITIAL.
LV_PAGE = 100.
MV_SELECT_MAX = LV_PAGE + IO_TECH_REQUEST_CONTEXT->GET_SKIP( ) + IO_T
ECH_REQUEST_CONTEXT->GET_TOP( ) + 10.
ELSE.
MV_SELECT_MAX = LV_PAGE + IO_TECH_REQUEST_CONTEXT->GET_SKIP( ) + IO_T
ECH_REQUEST_CONTEXT->GET_TOP( ) + 10.
ENDIF.
* - Retrieve data from database ---------------------------------------
* - incase count is asked for
IF IO_TECH_REQUEST_CONTEXT->HAS_COUNT( ) = ABAP_TRUE.
ES_RESPONSE_CONTEXT-COUNT = GET_BP_NUM_GUID_COUNT( ).
RETURN.
ELSE.
CLEAR ES_RESPONSE_CONTEXT-INLINECOUNT.
ENDIF.
"read requested filters
"fetch data from DB's
"Send if according to requested filters
IF LINES( MT_FILTERS_ALL ) GE 1.
GET_BP_NUM_GUID( ).
"incase there were some issues with authorizations
CLEAR LT_PARTNER_SELOP.
SORT LT_GUIDS ASCENDING.
LOOP AT MT_PARTNER_NUM_GUID ASSIGNING FIELD-SYMBOL(<FS_PARTNER>).
LT_PARTNER_SELOP = VALUE #( BASE LT_PARTNER_SELOP ( SIGN = 'I' OPTI
ON = 'EQ' LOW = <FS_PARTNER>-PARTNER ) ).
ENDLOOP.
SELECT DISTINCT
BP~PARTNER,
BP~PARTNER_GUID,
BP~SOURCE,
BP~AUGRP,
BP~BPEXT,
BP~TITLE,
BP~NAME_FIRST,
BP~NAME_LAST,
BP~NAME_LAST2,
BP~NAMEMIDDLE,
BP~NAME_LST2,
BP~TITLE_ACA1,
BP~TITLE_ROYL,
BP~INITIALS,
BP~LANGU_CORR,
BP~BIRTHDT,
BP~NAMCOUNTRY,
YBP~YSUFFIX ,
YBP~YCOMPANY1,
YBP~YOCCUPATION,
YBP~YRESP_SAL_DEALER,
YBP~YRESP_SRC_DEALER,
YBP~YRSALESP,
YBP~YRSERVP,
CONNECT~YY_PORSCHE_ID_UC,
VEHICLE~YYVIN,
VEHICLE~YYLICENCEPLATE,
EMAIL~SMTP_ADDR,
TELEPHONE~TELNR_LONG,
IMPORTER~IMP_NUMBER,
COMMLINK~ADDRNUMBER
FROM BUT000 AS BP
INNER JOIN YIMPORTER AS IMPORTER ON IMPORTER~AUGRP_CUST = BP~AU
GRP
LEFT OUTER JOIN YBPARTNER AS YBP ON BP~PARTNER_GUID = YBP~PAREN
T_ID
LEFT OUTER JOIN YCRMA3000_PCC AS CONNECT ON BP~PARTNER_GUID = C
ONNECT~PARENT_ID
LEFT OUTER JOIN YVEH_ALL AS VEHICLE ON BP~PARTNER = VEHICLE~YYC
USTOMER
LEFT OUTER JOIN ADR6 AS EMAIL ON BP~ADDRCOMM = EMAIL~ADDRNUMBER
LEFT OUTER JOIN BUT020 AS COMMLINK ON BP~PARTNER = COMMLINK~PAR
TNER
LEFT OUTER JOIN ADR2 AS TELEPHONE ON COMMLINK~ADDRNUMBER = TELE
PHONE~ADDRNUMBER
LEFT OUTER JOIN ADR2 AS MOBILE ON BP~ADDRCOMM = MOBILE~ADDRNUMB
ER
UP TO @MV_SELECT_MAX ROWS INTO TABLE @DATA(LT_RESULTS) WHERE BP
~PARTNER IN @LT_PARTNER_SELOP.
DELETE ADJACENT DUPLICATES FROM LT_RESULTS COMPARING PARTNER.
IF LINES( LT_RESULTS ) GT MV_SELECT_MAX AND IS_PAGING IS INITIAL.
LS_PAGING-TOP = MV_SELECT_MAX.
CALL METHOD /IWBEP/CL_MGW_DATA_UTIL=>PAGING
EXPORTING
IS_PAGING = LS_PAGING
CHANGING
CT_DATA = LT_RESULTS.
ENDIF.
ELSE.
**********************************************************************
SELECT SINGLE IS_ACTIVE FROM CRM_ACE_USERS
INTO @DATA(LV_ACTIVE)
WHERE USR_NAME = @SY-UNAME.
SELECT SINGLE * FROM CRM_ACE_USER_OTS
INTO @DATA(LS_OTS)
WHERE USR_NAME = @SY-UNAME
AND CRM_OBJECT_TYPE = 'ACCOUNTCRM'.
IF LV_ACTIVE = ABAP_TRUE AND SY-SUBRC = 0.
"Get Accounts using SalesOrg as a filter
SELECT DISTINCT BP~PARTNER, BP~PARTNER_GUID INTO TABLE @LT_PARTNER
UP TO @MV_SELECT_MAX ROWS
FROM BUT000 AS BP
INNER JOIN YIMPORTER AS IMPORTER ON IMPORTER~AUGRP_CUST = BP~AU
GRP
INNER JOIN CRM_ACE2_BP_ACL AS ACL ON ACL~OBJECT_GUID = BP~PARTN
ER_GUID
INNER JOIN CRM_ACE2_BP_GRP AS GRP ON ACL~ACEGROUP_ID = GRP~ACEG
ROUP_ID
INNER JOIN CRM_ACE2_BP_UCT AS UCT ON GRP~ACEGROUP_ID = UCT~ACEG
ROUP_ID
WHERE
IMPORTER~MAIN_IMPORTER EQ @ABAP_TRUE AND
( BP~BPKIND EQ @YIF_CRMA5627_API_BP~BP_KIND_CUSTOMER OR B
P~BPKIND EQ @YIF_CRMA5627_API_BP~BP_KIND_PROSPECT ) AND
BP~XDELE EQ @ABAP_FALSE
AND UCT~USR_NAME = @SY-UNAME
ORDER BY BP~PARTNER.
DELETE ADJACENT DUPLICATES FROM LT_PARTNER COMPARING PARTNER.
CLEAR LT_PARTNER_SELOP.
LOOP AT LT_PARTNER ASSIGNING <FS_PARTNER>.
LT_PARTNER_SELOP = VALUE #( BASE LT_PARTNER_SELOP ( SIGN = 'I' OP
TION = 'EQ' LOW = <FS_PARTNER>-PARTNER ) ).
ENDLOOP.
SELECT DISTINCT
BP~PARTNER,
BP~PARTNER_GUID,
BP~SOURCE,
BP~AUGRP,
BP~BPEXT,
BP~TITLE,
BP~NAME_FIRST,
BP~NAME_LAST,
BP~NAME_LAST2,
BP~NAMEMIDDLE,
BP~NAME_LST2,
BP~TITLE_ACA1,
BP~TITLE_ROYL,
BP~INITIALS,
BP~LANGU_CORR,
BP~BIRTHDT,
BP~NAMCOUNTRY,
YBP~YSUFFIX ,
YBP~YCOMPANY1,
YBP~YOCCUPATION,
YBP~YRESP_SAL_DEALER,
YBP~YRESP_SRC_DEALER,
YBP~YRSALESP,
YBP~YRSERVP,
CONNECT~YY_PORSCHE_ID_UC,
VEHICLE~YYVIN,
VEHICLE~YYLICENCEPLATE,
EMAIL~SMTP_ADDR,
TELEPHONE~TELNR_LONG,
IMPORTER~IMP_NUMBER,
COMMLINK~ADDRNUMBER
FROM BUT000 AS BP
INNER JOIN YIMPORTER AS IMPORTER ON IMPORTER~AUGRP_CUST = BP~AU
GRP
LEFT OUTER JOIN YBPARTNER AS YBP ON BP~PARTNER_GUID = YBP~PAREN
T_ID
LEFT OUTER JOIN YCRMA3000_PCC AS CONNECT ON BP~PARTNER_GUID = C
ONNECT~PARENT_ID
LEFT OUTER JOIN YVEH_ALL AS VEHICLE ON BP~PARTNER = VEHICLE~YYC
USTOMER
LEFT OUTER JOIN ADR6 AS EMAIL ON BP~ADDRCOMM = EMAIL~ADDRNUMBER
LEFT OUTER JOIN BUT020 AS COMMLINK ON BP~PARTNER = COMMLINK~PAR
TNER
LEFT OUTER JOIN ADR2 AS TELEPHONE ON COMMLINK~ADDRNUMBER = TELE
PHONE~ADDRNUMBER
LEFT OUTER JOIN ADR2 AS MOBILE ON BP~ADDRCOMM = MOBILE~ADDRNUMB
ER
INTO TABLE @LT_RESULTS WHERE BP~PARTNER IN @LT_PARTNER_SELOP.
DELETE ADJACENT DUPLICATES FROM LT_RESULTS COMPARING PARTNER.
IF LINES( LT_RESULTS ) GT MV_SELECT_MAX AND IS_PAGING IS INITIAL.
LS_PAGING-TOP = MV_SELECT_MAX.
CALL METHOD /IWBEP/CL_MGW_DATA_UTIL=>PAGING
EXPORTING
IS_PAGING = LS_PAGING
CHANGING
CT_DATA = LT_RESULTS.
ENDIF.
ELSE.
SELECT DISTINCT BP~PARTNER, BP~PARTNER_GUID INTO TABLE @LT_PARTNER
UP TO @MV_SELECT_MAX ROWS
FROM BUT000 AS BP
INNER JOIN YIMPORTER AS IMPORTER ON IMPORTER~AUGRP_CUST = BP~AUG
RP
WHERE
IMPORTER~MAIN_IMPORTER EQ @ABAP_TRUE AND
( BP~BPKIND EQ @YIF_CRMA5627_API_BP~BP_KIND_CUSTOMER OR BP
~BPKIND EQ @YIF_CRMA5627_API_BP~BP_KIND_PROSPECT ) AND
BP~XDELE EQ @ABAP_FALSE
ORDER BY BP~PARTNER.
DELETE ADJACENT DUPLICATES FROM LT_PARTNER COMPARING PARTNER.
LOOP AT LT_PARTNER ASSIGNING <FS_PARTNER>.
LT_PARTNER_SELOP = VALUE #( BASE LT_PARTNER_SELOP ( SIGN = 'I' OP
TION = 'EQ' LOW = <FS_PARTNER>-PARTNER ) ).
ENDLOOP.
SELECT DISTINCT
BP~PARTNER,
BP~PARTNER_GUID,
BP~SOURCE,
BP~AUGRP,
BP~BPEXT,
BP~TITLE,
BP~NAME_FIRST,
BP~NAME_LAST,
BP~NAME_LAST2,
BP~NAMEMIDDLE,
BP~NAME_LST2,
BP~TITLE_ACA1,
BP~TITLE_ROYL,
BP~INITIALS,
BP~LANGU_CORR,
BP~BIRTHDT,
BP~NAMCOUNTRY,
YBP~YSUFFIX ,
YBP~YCOMPANY1,
YBP~YOCCUPATION,
YBP~YRESP_SAL_DEALER,
YBP~YRESP_SRC_DEALER,
YBP~YRSALESP,
YBP~YRSERVP,
CONNECT~YY_PORSCHE_ID_UC,
VEHICLE~YYVIN,
VEHICLE~YYLICENCEPLATE,
EMAIL~SMTP_ADDR,
TELEPHONE~TELNR_LONG,
IMPORTER~IMP_NUMBER,
COMMLINK~ADDRNUMBER
FROM BUT000 AS BP
INNER JOIN YIMPORTER AS IMPORTER ON IMPORTER~AUGRP_CUST = BP~AU
GRP
LEFT OUTER JOIN YBPARTNER AS YBP ON BP~PARTNER_GUID = YBP~PAREN
T_ID
LEFT OUTER JOIN YCRMA3000_PCC AS CONNECT ON BP~PARTNER_GUID = C
ONNECT~PARENT_ID
LEFT OUTER JOIN YVEH_ALL AS VEHICLE ON BP~PARTNER = VEHICLE~YYC
USTOMER
LEFT OUTER JOIN ADR6 AS EMAIL ON BP~ADDRCOMM = EMAIL~ADDRNUMBER
LEFT OUTER JOIN BUT020 AS COMMLINK ON BP~PARTNER = COMMLINK~PAR
TNER
LEFT OUTER JOIN ADR2 AS TELEPHONE ON COMMLINK~ADDRNUMBER = TELE
PHONE~ADDRNUMBER
LEFT OUTER JOIN ADR2 AS MOBILE ON BP~ADDRCOMM = MOBILE~ADDRNUMB
ER
INTO TABLE @LT_RESULTS WHERE BP~PARTNER IN @LT_PARTNER_SELOP.
DELETE ADJACENT DUPLICATES FROM LT_RESULTS COMPARING PARTNER.
"if entries are more than 100 take care of it
IF LINES( LT_RESULTS ) GT MV_SELECT_MAX AND IS_PAGING IS INITIAL.
LS_PAGING-TOP = MV_SELECT_MAX.
CALL METHOD /IWBEP/CL_MGW_DATA_UTIL=>PAGING
EXPORTING
IS_PAGING = LS_PAGING
CHANGING
CT_DATA = LT_RESULTS.
ENDIF.
ENDIF.
**********************************************************************
* LOOP AT LT_PARTNER_FINAL INTO LS_PARTNER.
* TRY.
* LS_SINGLE_BP_ENTITY = ME->BP_GET_ENTITY( EXPORTING IV_BP_ID
= LS_PARTNER-PARTNER ).
* APPEND LS_SINGLE_BP_ENTITY TO ET_ENTITYSET.
* ENDTRY.
* ENDLOOP.
ENDIF.
IF IS_PAGING IS NOT INITIAL.
"skip & top
CALL METHOD /IWBEP/CL_MGW_DATA_UTIL=>PAGING
EXPORTING
IS_PAGING = IS_PAGING
CHANGING
CT_DATA = LT_RESULTS.
ENDIF.
IF IT_ORDER IS NOT INITIAL.
"order by
CALL METHOD /IWBEP/CL_MGW_DATA_UTIL=>ORDERBY
EXPORTING
IT_ORDER = IT_ORDER
CHANGING
CT_DATA = LT_RESULTS.
ENDIF.
** $inlinecount query option for all count entries.
IF IO_TECH_REQUEST_CONTEXT->HAS_INLINECOUNT( ) = ABAP_TRUE.
ES_RESPONSE_CONTEXT-INLINECOUNT = LINES( LT_RESULTS ).
ELSE.
CLEAR ES_RESPONSE_CONTEXT-INLINECOUNT.
ENDIF.
"assemble partners
LOOP AT LT_RESULTS ASSIGNING FIELD-SYMBOL(<FS_RESULTS>).
LT_SELOP = VALUE #( BASE LT_SELOP ( SIGN = 'I' OPTION = 'EQ' LOW = <F
S_RESULTS>-PARTNER ) ).
LT_SELOP_COMP = VALUE #( BASE LT_SELOP_COMP ( SIGN = 'I' OPTION = 'EQ
' LOW = <FS_RESULTS>-PARTNER_GUID ) ).
ENDLOOP.
"get customer status
GET_CUSTOMER_STATUS( LT_SELOP ).
"get company name
GET_COMPANY_NAME( LT_SELOP_COMP ).
"get language
SELECT MANDT,LAND1,INTCA FROM T005 INTO TABLE @DATA(LT_LANG).
SORT MT_CUST_STATUS ASCENDING BY PARTNER.
SORT MT_COMPANY_NAME ASCENDING BY ADDRN.
"add data for a Trip
LOOP AT LT_RESULTS ASSIGNING FIELD-SYMBOL(<FS_TABLE>).
READ TABLE MT_CUST_STATUS ASSIGNING FIELD-SYMBOL(<FS_CUST_STATUS>) WI
TH KEY PARTNER = <FS_TABLE>-PARTNER BINARY SEARCH.
READ TABLE MT_COMPANY_NAME ASSIGNING FIELD-SYMBOL(<FS_COMPANY>) WITH
KEY ADDRN = <FS_TABLE>-ADDRNUMBER BINARY SEARCH.
IF <FS_TABLE>-NAMCOUNTRY IS NOT INITIAL.
READ TABLE LT_LANG ASSIGNING FIELD-SYMBOL(<FS_LANG>) WITH KEY LAND1
= <FS_TABLE>-NAMCOUNTRY BINARY SEARCH.
ENDIF.
APPEND INITIAL LINE TO ET_ENTITYSET ASSIGNING FIELD-
SYMBOL(<FS_ENTITYSET>).
<FS_ENTITYSET>-BUSINESSPARTNERID = <FS_TABLE>-PARTNER.
<FS_ENTITYSET>-AUTHGROUP = <FS_TABLE>-AUGRP.
<FS_ENTITYSET>-NAMEFIRST = <FS_TABLE>-NAME_FIRST.
<FS_ENTITYSET>-NAMELAST = <FS_TABLE>-NAME_LAST.
<FS_ENTITYSET>-NAMEMIDDLE = <FS_TABLE>-NAMEMIDDLE.
<FS_ENTITYSET>-DATEOFBIRTH = <FS_TABLE>-BIRTHDT.
<FS_ENTITYSET>-EMAILADDRESS = <FS_TABLE>-SMTP_ADDR.
IF <FS_COMPANY> IS ASSIGNED.
<FS_ENTITYSET>-COMPANYNAME1 = <FS_COMPANY>-COMPANY.
ENDIF.
<FS_ENTITYSET>-CORRESPONDENCELANG = <FS_TABLE>-LANGU_CORR.
<FS_ENTITYSET>-INITIALS = <FS_TABLE>-INITIALS.
<FS_ENTITYSET>-EXTERNALID = <FS_TABLE>-BPEXT.
IF <FS_LANG> IS ASSIGNED.
<FS_ENTITYSET>-LANGUAGE = <FS_LANG>-INTCA.
ENDIF.
<FS_ENTITYSET>-TITLE = <FS_TABLE>-TITLE.
<FS_ENTITYSET>-LICENCEPLATE = <FS_TABLE>-
YYLICENCEPLATE.
<FS_ENTITYSET>-PORSCHEID = <FS_TABLE>-
YY_PORSCHE_ID_UC.
<FS_ENTITYSET>-VEHICLEIDENTIFICATION = <FS_TABLE>-YYVIN.
<FS_ENTITYSET>-NAMEBIRTH = <FS_TABLE>-NAME_LST2.
<FS_ENTITYSET>-NAMELASTOTHER = <FS_TABLE>-NAME_LAST2.
<FS_ENTITYSET>-MOBILENUMBER = <FS_ENTITYSET>-
MOBILENUMBER.
<FS_ENTITYSET>-TELEPHONENUMBER = <FS_TABLE>-TELNR_LONG.
<FS_ENTITYSET>-TITLEACA1 = <FS_TABLE>-TITLE_ACA1.
<FS_ENTITYSET>-TITLEROYAL = <FS_TABLE>-TITLE_ROYL.
<FS_ENTITYSET>-RESPONSIBLESALESDEALERID = <FS_TABLE>-
YRESP_SAL_DEALER.
<FS_ENTITYSET>-RESPONSIBLESALESPERSONID = <FS_TABLE>-YRSALESP.
<FS_ENTITYSET>-RESPONSIBLESERVICEDEALERID = <FS_TABLE>-
YRESP_SRC_DEALER.
<FS_ENTITYSET>-RESPONSIBLESERVICEPERSONID = <FS_TABLE>-YRSERVP.
<FS_ENTITYSET>-SOURCE = <FS_TABLE>-SOURCE.
<FS_ENTITYSET>-PAGIMPORTERID = <FS_TABLE>-IMP_NUMBER.
<FS_ENTITYSET>-SUFFIX = <FS_TABLE>-YSUFFIX.
<FS_ENTITYSET>-OCCUPATION = <FS_RESULTS>-YOCCUPATION.
IF <FS_CUST_STATUS> IS ASSIGNED.
<FS_ENTITYSET>-CUSTOMERSTATUS = <FS_CUST_STATUS>-STATUS.
ENDIF.
ME->GET_HASH( CHANGING CS_ENTITY = <FS_ENTITYSET>
EXCEPTIONS NO_HASH_CALC = 1 ).
ENDLOOP.