BAPI_BUPA_SEARCH - MAXSEL

I have an RFC that does business partner search using BAPI_BUPA_SEARCH. I want the ability to restrict the number of business partner retrieved.
The bapi has a structure OTHERS. In it there  is is a field MAXSEL. I specify 20 for MAXSEL in BAPI signature but still get more than 20 BPs.
How is MAXSEL used?

Hi Raynald,
The parameter MAXSEL has some limitations. E.g. : if you try searching for address specific attributes or communication data such as tel / fax, it doesn't always work. Reason  - the modules of Address management donot support the concept of maxsel.
BUPA_SEARCH makes a call to Address management modules internally, and thus it cannot take care of this parameter for some cases.
I'd suggest that you activate the search help BUPA_ADR. Look into note 595442. This creates a new search table BUTADRSEARCH that is in control of the BP, not address, but combines the address fields requierd for a quick search. This should solve the problem.
Cheers,
Rishu.

Similar Messages

  • Problem with searching for 'empty' emails with BAPI_BUPA_SEARCH

    Dear ABAP'ers.
    I have got a small problem with BAPI_BUPA_SEARCH.
    I Use this BAPI to search for Business Partners with the Email condition.
    I put rhe Email to lv_email variable, it works ok.
        lv_email = ' '
        CALL FUNCTION 'BAPI_BUPA_SEARCH'
          EXPORTING
            email = lv_email
          TABLES
            searchresult = lt_searchresult   <= returns no BuPas
            return       = ls_bapiret2  .
    But I need to have a possibility to search for such Business Partners who have got no email address. Unfortunatellu when I pass an empty lv_email to BAPI, it returns no Business Partners whilst such BuPas exist in database.
    Is there some possibility to search for those BuPas who have got no email address assigned?
    I will be thankful for help.
    Regards,
    P.

    Can you query ADR6 table where SMTP_ADDR = space.
    and pick the PERSNUMBER or ADDRNUMBER and pick the Patners related to that ..

  • BAPI_BUPA_SEARCH && mc_name1

    We use the function BAPI_BUPA_SEARCH to search for BP's.  This function has as input parameter: CENTRALDATA with the following fields:
    PARTNER - BU_PARTNER - CHAR     10
    MC_NAME1 - BU_MCNAME1 - CHAR 35      - Search Help Field 1 (Name 1/Last Name)
    MC_NAME2 - BU_MCNAME2 - CHAR 35      - Search Help Field 2 (Name 2/First Name)
    SEARCHTERM1 - BU_SORT1 - CHAR 20
    SEARCHTERM2 - BU_SORT2 - CHAR 20
    PARTNERCATEGORY - BU_TYPE - CHAR 1
    The problem is that MC_NAME1 has only 35 charaters. 
    In BUT000 the fields NAME_ORGx, NAME_FIRST and NAME_LAST all have 40 characters.
    When we now search a BP with a name of 40 characters the function does not find this BP.
    f.e.
    BP 1: NAME_ORG1 = "test name" ---> MC_NAME1 = "TEST NAME"
    BP 2: NAME_ORG1 = "test test name" ---> MC_NAME1 = "TEST TEST NAME"
    BP 3: NAME_ORG1 = "test test test test test test test  name" ---> MC_NAME1 = "TEST TEST TEST TEST TEST TEST TEST "
    The function BAPI_BUPA_SEARCH with parameter CENTRALDATA-MC_NAME1 = "name" will only find BP 1 and BP 2, BP 3 has no "name" in his MC_NAME1 anymore because of the lenght of this field.
    How can this issue be solved?
    Or do we need to use another function?
    Kind regards,
    Lieselot

    Hi Lieselot,
    I'm responding to your initial query...
    Your observations and analysis about the issue is quite correct - the name fields can store 40 characters, but the search takes only 35 characters into account. This is a technical limitation of the business partner search, and is a known issue in SAP.
    The limitation to repair it is that the name search fields are also used in the address components, so there are a lot of dependencies. Also, it is quite rare to see names more than 35 characters in length.
    Having said this, i recognize that this is a genuine requirement for you - and many customers have faced similar issues. The approach they follow when they are sure to have many many BP's with name >35 characters is this :
    Create a new field using EEW, and add this field to BUT000. This field can be of length 40 characters, and can be used to store the entire converted name. The search methods can now be modified to search by this Z field as well, so the search will always find even the long names.
    The solution is tedious to implement but if almost every other BP in your systems has a long name, its worth the effort in the long run.
    Hope this helps.
    Cheers,
    Rishu.

  • BAPI to search for customer in CRM based on search terms

    Hi,
    Could anyone please tell me if there is a function module in CRM to search for BP's based on search terms. ( Just as we could enter '*' in search terms in transaction BP and get a list of customers ).
    Thanks in advance,
    Sahil

    Hi Sahil,
    You can make use of BAPI_BUPA_SEARCH.
    In the import parameter CENTRALDATA you can pass the
    search terms.
    Ranjit

  • How to do search of business partner data, using a message from external sy

    Hi CRM Gems,
    please send the answer to the following question.
    1.How to do search of business partner data, using a message from external system. What FM’s, BAPI etc that can be used for this functionality?
    your answer will be valuble to me.
    Regards,
    Krishna..

    Hi krishna,
      Look at BAPI   BAPI_BUPA_SEARCH.
    Regards.
    Manuel

  • SENDING TEXT FILE AS AN ATTACHMENT

    Hi,
    I want to send an email as a TEXT file attachment.
    Thanks
    Vikranth Khimavath

    hi,
    Use the FM SO_NEW_DOCUMENT_ATT_SEND_API1 to send mail with an attachment. Here is the sample code.
    FUNCTION Z_SEND_MAIL.
    ""Local interface:
    *" IMPORTING
    *" VALUE(MESSAGE) TYPE STRING OPTIONAL
    *" VALUE(RECEIVER_MAIL) TYPE STRING OPTIONAL
    *" VALUE(TO) TYPE STRING OPTIONAL
    data for send function
    DATA doc_data TYPE sodocchgi1.
    DATA object_id TYPE soodk.
    DATA objcont TYPE TABLE OF soli INITIAL SIZE 10.
    DATA wa_objcont LIKE LINE OF objcont.
    DATA receiver TYPE TABLE OF somlreci1 INITIAL SIZE 1.
    DATA wa_receiver LIKE LINE OF receiver.
    move message
    TO doc_data-obj_descr .
    This is the subject for your mail.
    WRITE 'Sub:test Mail' TO doc_data-obj_descr.
    This is the body of your mail.
    concatenate ' Hi ' to into wa_objcont-line separated by space.
    append wa_objcont to objcont.
    wa_objcont-line = message.
    append wa_objcont to objcont.
    Specify receipent id.
    MOVE: RECEIVER_MAIL TO wa_receiver-receiver,
    'X' TO wa_receiver-express,
    'U' TO wa_receiver-rec_type.
    APPEND wa_receiver TO receiver.
    Finally call the function module.
    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
    EXPORTING
    document_data = doc_data
    put_in_outbox = 'X' "Save Document in Outbox
    COMMIT_WORK = 'X'
    IMPORTING
    new_object_id = object_id
    TABLES
    object_content = objcont
    receivers = receiver
    EXCEPTIONS
    too_many_receivers = 1
    document_not_sent = 2
    document_type_not_exist = 3
    operation_no_authorization = 4
    parameter_error = 5
    x_error = 6
    enqueue_error = 7.
    SUBMIT rsconn01 USING SELECTION-SET 'SAP&CONNECTINT' AND RETURN.
    ENDFUNCTION.
    REPORT RSCONN01 MESSAGE-ID XS NO STANDARD PAGE HEADING.
    INCLUDE <SYMBOL>. " 11.11.96
    TYPE-POOLS: SX.
    TYPE-POOLS: KKBLO.
    PARAMETERS: MODE(3) TYPE C DEFAULT '*',
    OUTPUT TYPE C DEFAULT ' '. "B20K072036 new parameter
    selection-screen skip.
    parameters maxjobs type sx_maxjobs default 1.
    parameters rfcgroup type bdfields-rfcgr.
    selection-screen skip.
    parameters maxpsize type sx_maxpsize default 1000.
    parameters minpsize type sx_minpsize default 20.
    parameters maxsel type sx_maxqrows default 20000.
    parameters timepo type sx_timepo default 2.
    parameters timeout type sx_arfctimeout default 100.
    parameters commit type sx_commit default 1.
    data address_types type sx_addrtab.
    data job_params type sxjobs.
    data jobdata type sxjobdata.
    --- initialization -
    initialization.
    get default parameters
    call function 'SX_JOBDATA_GET'
    changing
    jobdata = jobdata.
    give defaults to parameters
    maxjobs = jobdata-maxjobs.
    maxpsize = jobdata-maxpsize.
    minpsize = jobdata-minpsize.
    maxsel = jobdata-maxsel.
    timepo = jobdata-timepo.
    timeout = jobdata-arfc_timeout.
    commit = jobdata-commit_after.
    --- start-of-selection -
    start-of-selection.
    perform addr_type_to_table using mode
    changing address_types.
    job_params-maxjobs = maxjobs.
    job_params-rfcgroup = rfcgroup.
    job_params-maxpsize = maxpsize.
    job_params-minpsize = minpsize.
    job_params-maxsel = maxsel.
    job_params-timepo = timepo.
    job_params-arfc_timeout = timeout.
    job_params-commit_after = commit.
    call function 'SX_OBJECTS_SEND'
    exporting
    address_types = address_types
    output = output
    job_params = job_params
    exceptions
    others = 1.
    if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    exit.
    TABLES: SXADDRTYPE.
    DATA: selection type SX_ADDRTAB,
    NR_SO_OBJECTS TYPE I,
    OBJ_CAT TYPE SX_OBJ_CAT OCCURS 20 WITH HEADER LINE.
    if sy-batch = 'X'.
    message I078 with 'RSCONN01' SY-HOST SY-MANDT.
    endif.
    *fill selection table
    refresh selection.
    if mode = '*'.
    clear mode.
    endif.
    IF NOT ( MODE IS INITIAL ).
    SELECT SINGLE * FROM SXADDRTYPE WHERE ADDR_TYPE EQ MODE.
    IF SY-SUBRC NE 0.
    IF OUTPUT EQ 'X'.
    WRITE: MODE, TEXT-001, TEXT-002.
    ENDIF.
    EXIT.
    ENDIF.
    IF SXADDRTYPE-METHOD NE 'SAPCONNECT'.
    IF OUTPUT EQ 'X'.
    WRITE: MODE, TEXT-003, TEXT-004, TEXT-005.
    ENDIF.
    EXIT.
    ENDIF.
    append sxaddrtype-addr_type to selection.
    ELSE.
    select * from sxaddrtype
    where method = 'SAPCONNECT'
    and extern = sx_true.
    case sxaddrtype-addr_type.
    when 'INT' or 'FAX' or 'PAG' or
    'PRT' or 'RML' or 'X40'.
    append sxaddrtype-addr_type to selection.
    endcase.
    endselect.
    ENDIF.
    CALL FUNCTION 'SX_OBJECTS_SEND'
    EXPORTING
    ADDRESS_TYPES = SELECTION
    IMPORTING
    NR_SO_OBJECTS = NR_SO_OBJECTS
    TABLES
    OBJ_CAT = OBJ_CAT
    EXCEPTIONS
    INTERNAL_ERROR = 1
    OTHERS = 2.
    IF SY-SUBRC NE 0.
    IF OUTPUT EQ 'X'.
    Always write out this error message:
    WRITE: TEXT-006, SY-SUBRC.
    ENDIF.
    EXIT.
    ENDIF.
    IF NR_SO_OBJECTS = 0.
    IF OUTPUT EQ 'X'.
    WRITE: TEXT-007.
    ENDIF.
    EXIT.
    ENDIF.
    IF OUTPUT EQ 'X'.
    PERFORM DISPLAY_OBJECT_CATALOGUE.
    ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR MODE.
    PERFORM F_SHOW_ADDR_TYPES CHANGING MODE.
    AT SELECTION-SCREEN ON HELP-REQUEST FOR OUTPUT.
    PERFORM F_HELP_OUTPUT.
    *& Form addr_type_to_table
    text
    form addr_type_to_table using address_type type sx_addrtyp
    changing address_types type sx_addrtab.
    data adrtp_wa type sxaddrtype.
    data adrtp type sx_addrtyp.
    if address_type <> '*'.
    adrtp = address_type.
    endif.
    if not adrtp is initial.
    select single * from sxaddrtype into adrtp_wa
    where addr_type = adrtp.
    if sy-subrc <> 0.
    message i009 with adrtp.
    exit.
    endif.
    if adrtp_wa-method ne 'SAPCONNECT'.
    message i027 with adrtp.
    exit.
    endif.
    append adrtp_wa-addr_type to address_types.
    else.
    select * from sxaddrtype into adrtp_wa
    where method = 'SAPCONNECT'
    and extern = sx_true.
    case adrtp_wa-addr_type.
    when 'INT' or 'FAX' or 'PAG' or
    'PRT' or 'RML' or 'X40'.
    append adrtp_wa-addr_type to address_types.
    endcase.
    endselect.
    endif.
    endform. " addr_type_to_table
    *& Form DISPLAY_OBJECT_CATALOGUE
    Anzeige der Liste der zum Versenden selektierten Objekte
    --> p1 text
    <-- p2 text
    FORM DISPLAY_OBJECT_CATALOGUE.
    DATA: FIELD_LST TYPE KKBLO_T_FIELDCAT.
    DATA: FIELD_CAT TYPE KKBLO_FIELDCAT.
    DATA: IS_LAYOUT TYPE KKBLO_LAYOUT.
    IS_LAYOUT-NO_ZEBRA = 'X'.
    FIELD_CAT-REF_TABNAME = 'SXOBJCAT'.
    FIELD_CAT-NO_SUM = 'X'.
    FIELD_CAT-JUST = 'L'.
    FIELD_CAT-OUTPUTLEN = 3.
    FIELD_CAT-REPTEXT = 'Trc'.
    FIELD_CAT-FIELDNAME = 'DISPL_TRC'.
    FIELD_CAT-HOTSPOT = 'X'.
    FIELD_CAT-SYMBOL = 'X'.
    APPEND FIELD_CAT TO FIELD_LST.
    FIELD_CAT-SYMBOL = ' '.
    FIELD_CAT-OUTPUTLEN = 0.
    FIELD_CAT-HOTSPOT = ' '.
    FIELD_CAT-REPTEXT = ' '.
    CLEAR: FIELD_CAT-NO_ZERO, FIELD_CAT-KEY .
    FIELD_CAT-FIELDNAME = 'ID'. APPEND FIELD_CAT TO FIELD_LST.
    FIELD_CAT-FIELDNAME = 'TITLE'. APPEND FIELD_CAT TO FIELD_LST.
    FIELD_CAT-FIELDNAME = 'TYPE'. APPEND FIELD_CAT TO FIELD_LST.
    FIELD_CAT-FIELDNAME = 'NR_RECIP'. APPEND FIELD_CAT TO FIELD_LST.
    LOOP AT FIELD_LST INTO FIELD_CAT.
    FIELD_CAT-COL_POS = SY-TABIX.
    MODIFY FIELD_LST FROM FIELD_CAT.
    ENDLOOP.
    LOOP AT OBJ_CAT.
    OBJ_CAT-DISPL_TRC = SYM_PENCIL.
    MODIFY OBJ_CAT.
    ENDLOOP.
    CALL FUNCTION 'K_KKB_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = 'RSCONN01'
    I_CALLBACK_USER_COMMAND = 'CB_OL_UCOMM'
    I_CALLBACK_TOP_OF_PAGE = 'CB_OL_TOP'
    I_CALLBACK_PF_STATUS_SET = 'CB_OL_PFSTATUS'
    I_TABNAME = 'OBJ_CAT'
    IS_LAYOUT = IS_LAYOUT
    IT_FIELDCAT = FIELD_LST
    TABLES
    T_OUTTAB = OBJ_CAT
    EXCEPTIONS
    OTHERS = 1.
    ENDFORM. " DISPLAY_OBJECT_CATALOGUE
    *& Form CB_OL_PFSTATUS
    Callback Funktion (wird aus Listtool heraus gerufen) *
    --> p1 text
    <-- p2 text
    FORM CB_OL_PFSTATUS
    USING EXTAB TYPE KKBLO_T_EXTAB.
    SET PF-STATUS 'CATALOG' EXCLUDING EXTAB.
    SET TITLEBAR 'CAT'.
    ENDFORM. " CB_OL_PFSTATUS
    *& Form CB_OL_TOP
    Callback Funktion (wird aus Listtool heraus gerufen) *
    --> p1 text
    <-- p2 text
    FORM CB_OL_TOP.
    ENDFORM. " CB_OL_TOP
    *& Form CB_OL_UCOMM
    text *
    --> p1 text
    <-- p2 text
    FORM CB_OL_UCOMM
    USING UCOMM LIKE SY-UCOMM
    SELFIELD TYPE KKBLO_SELFIELD.
    DATA: NUMC5(5) TYPE N.
    NUMC5 = SELFIELD-TABINDEX.
    CASE UCOMM.
    WHEN 'PIC1'.
    CASE SELFIELD-SEL_TAB_FIELD.
    WHEN 'OBJ_CAT-DISPL_TRC' OR 'OBJ_CAT-TITLE' OR 'OBJ_CAT-ID'.
    READ TABLE OBJ_CAT INDEX SELFIELD-TABINDEX.
    IF SY-SUBRC NE 0.
    MESSAGE E042.
    ENDIF.
    SUBMIT RSWTTR01
    WITH P_TYPE = 'D'
    WITH P_UNAME = SPACE
    WITH P_OBJ = OBJ_CAT-ID AND RETURN.
    WHEN OTHERS.
    MESSAGE I041 WITH NUMC5 SELFIELD-SEL_TAB_FIELD UCOMM.
    ENDCASE.
    WHEN OTHERS.
    MESSAGE I041 WITH NUMC5 SELFIELD-SEL_TAB_FIELD UCOMM.
    ENDCASE.
    ENDFORM. " CB_OL_UCOMM
    *& Form F_SHOW_ADDR_TYPES
    text
    <--P_MODE text *
    FORM F_SHOW_ADDR_TYPES CHANGING A_TYPE.
    DATA: HELP_INFO LIKE HELP_INFO
    , sel_value like help_info-fldvalue
    , CUCOL LIKE SY-CUCOL
    , CUROW LIKE SY-CUROW
    , value like help_info-fldvalue value 'SE38'
    , IND LIKE SY-INDEX
    , C_SY_SUBRC(3) TYPE C
    DATA: BEGIN OF FIELDS OCCURS 5.
    INCLUDE STRUCTURE HELP_VALUE.
    DATA: END OF FIELDS.
    DATA: BEGIN OF LIST_OF_FIELDS OCCURS 5,
    NAME(21) TYPE C.
    DATA: END OF LIST_OF_FIELDS.
    DATA: BEGIN OF FULL_LIST OCCURS 5,
    ADDRESS_TYPE LIKE SXADDRTYPE-ADDR_TYPE,
    END OF FULL_LIST.
    REFRESH FIELDS.
    REFRESH LIST_OF_FIELDS.
    REFRESH FULL_LIST.
    HELP_INFO-TABNAME = 'SXADDRTYPE'.
    HELP_INFO-FIELDNAME = 'ADDR_TYPE'.
    SELECT * FROM SXADDRTYPE.
    IF SXADDRTYPE-METHOD NE 'SAPCONNECT'
    OR SXADDRTYPE-EXTERN NE SX_TRUE.
    CONTINUE.
    ENDIF.
    MOVE SXADDRTYPE-ADDR_TYPE TO FULL_LIST-ADDRESS_TYPE.
    APPEND FULL_LIST.
    ENDSELECT.
    MOVE '*' TO FULL_LIST-ADDRESS_TYPE.
    APPEND FULL_LIST.
    LIST_OF_FIELDS-NAME = 'SXADDRTYPE-ADDR_TYPE'.
    APPEND LIST_OF_FIELDS.
    CALL FUNCTION 'TRANSFER_NAMES_TO_FIELDS'
    EXPORTING
    SELECTFIELD = HELP_INFO-FIELDNAME
    TABLES
    FIELDS = FIELDS
    NAMELIST = LIST_OF_FIELDS
    EXCEPTIONS
    WRONG_FORMAT_GIVEN = 1
    OTHERS = 2.
    CALL FUNCTION 'HELP_VALUES_GET_WITH_VALUE'
    EXPORTING
    DISPLAY = ' '
    FIELDNAME = HELP_INFO-FIELDNAME
    TABNAME = HELP_INFO-TABNAME
    GIVEN_VALUE = HELP_INFO-FLDVALUE
    TITEL = TEXT-002
    IMPORTING
    SELECT_VALUE = HELP_INFO-FLDVALUE
    SELECT_INDEX = IND
    TABLES
    FIELDS = FIELDS
    VALUETAB = FULL_LIST
    EXCEPTIONS
    FIELD_NOT_IN_DDIC = 1
    MORE_THEN_ONE_SELECTFIELD = 2
    NO_SELECTFIELD = 3
    OTHERS = 4.
    C_SY_SUBRC = SY-SUBRC.
    CASE SY-SUBRC.
    WHEN '0'.
    READ TABLE FULL_LIST INTO A_TYPE INDEX IND.
    WHEN OTHERS.
    MESSAGE E022 WITH C_SY_SUBRC.
    ENDCASE.
    ENDFORM. " F_SHOW_ADDR_TYPES
    *& Form F_HELP_OUTPUT
    text
    --> p1 text
    <-- p2 text
    FORM F_HELP_OUTPUT.
    DATA: CANCELLED TYPE C,
    C_SY_SUBRC(8) TYPE C.
    CALL FUNCTION 'POPUP_DISPLAY_TEXT'
    EXPORTING
    LANGUAGE = SY-LANGU
    POPUP_TITLE = 'SAPconnect'
    TEXT_OBJECT = 'RSCONN01_F1_OUTPUT_40B'
    IMPORTING
    CANCELLED = CANCELLED
    EXCEPTIONS
    TEXT_NOT_FOUND = 1
    OTHERS = 2.
    C_SY_SUBRC = SY-SUBRC.
    IF SY-SUBRC NE 0.
    MESSAGE E035 WITH C_SY_SUBRC. leads to dump !
    ENDIF.
    ENDFORM. " F_HELP_OUTPUT
    Regards,
    Richa

  • Use of additional fields win IC Winclient BP Search

    Hi
    I’m trying to use the HOUSE_NUM2 field in structure CCMSEARCH_STRUCT to search for a BP in the IC Win Client (CIC0) in CRM.
    I can get the HTML page to pass the field back to CCMSEARCH_STRUCT, but after several dynamic function calls the program ends up calling FM BAPI_BUPA_SEARCH which does not have the field HOUSE_NUM2 as an input parameter.
    Is it possible to configure the search to call an FM that uses that field as well? (without repairing the SAP code)
    I have followed these steps:
    1) Copied O_ISU_BPFINDER_BUTTON to ZO_ISU_BPFINDER_BUTTON, changed the HTML and re-imported it. 
    The changes were to remove some fields (ie IBASE components) and add the new input field HOUSE_NUM2.
    Here is the relevant HTML tag:
    <TR>
      <TH align=left  width=28%><!%%STREET_NO%></TH>
         <TD width=72%><NOBR>      
           <INPUT name=HOUSE_NUM1 size=6 maxLength=10 type=TEXT/PLAIN>
           <INPUT name=STREET size=25 maxLength=60 type=TEXT/PLAIN>
           <INPUT name=HOUSE_NUM2 size=6 maxLength=10 type=TEXT/PLAIN>
              </NOBR></TD></TR>
    2) I have copied the entries for O_ISU_BPFINDER_BUTTON in transaction CRMC_CIC_SEARCH_CNTR and ensured that the followin entry is there: 
    ZO_ISU_BPFINDER_BUTTON     CCMADDRESSFIELDS  HOUSE_NUM2     X
    3) I have created a new search profile in transaction CRMC_CIC_SEARCH_RULE with the following setttings:
         HTML for BP Search = ZO_ISU_BPFINDER_BUTTON
         Under priorities: CCMADDRESSFIELDS     CCMCS_ADDR_SEARCH_CONTROL     1
         (This is the only relevant entry from what I can tell in Debug mode)
    Everything else works, and I can see the relevant data being passed to SAP, but by the time the actual search takes place in BAPI_BUPA_SEARCH HOUSE_NUM2 is not available as a search parameter.
    I have searched these forums and come across a couple of threads that seems to imply that it should just work if I follow these steps, but I can only assume that I am using an incorrect search Function Module
    Thanks for your help
    Regards Esti

    Hi Siva
    What is the transaction to look at this query?  I have not seen any evidence that the program accesses this query, but it is worth having a look I guess.
    The sequence of Function calls are:
    CCMCS_BP_SEARCH_RULES
    CCMCS_BP_SEARCH_CONTROL
    CCMCS_BP_ADDR_SEARCH2
    CCMCS_BP_SEARCH2
    (Up to this point it uses structure CCMADDRESSFIELDS, and has accesss to HOUSE_NUM2)
    Then it calls BAPI_BUPA_MAIN
    It might be that I will have to repair CCMCS_BP_SEARCH2 in the end, but I'd like to be sure that it is my only option, as I do not want to change SAP standard code unnecessarily.
    Cheers
    Esti

  • ALV Report to KSB1 Report-- KSB1 Report outputs in Non-ALV Format

    Hi Gurus,
    I am calling KSB1 from report ALV output.
    After execution of KSB1, Report outputs in Classical report format.
    While I execute KSB1 manually it shows in ALV Report.
    From my report how to retain output of KSB1 in ALV Format.
    Thanks in advance.

    Add some lines to BDC to force ALV display, like
    perform bdc_dynpro      using 'RKAEP000' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'KOSTL-LOW'.
    * Call the option
    perform bdc_field       using 'BDC_OKCODE'
                                  '=UCSS'.
    * Force grid
    perform bdc_dynpro      using 'SAPLKAE2' '0200'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'KAEP_SETT-MAXSEL'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'KAEP_SETT-USEGRD'
                                  record-USEGRD_004.
    perform bdc_field       using 'KAEP_SETT-MAXSEL'
                                  record-MAXSEL_005.
    * back to initial screen
    perform bdc_dynpro      using 'RKAEP000' '0100'.
    Regards,
    Raymond

  • BAPI_BUPA_SEARCH_2

    Please provide me a sample source code for execution of  "BAPI_BUPA_SEARCH" or "BAPI_BUPA_SEARCH_2" BAPI.
    Basic problem I am getting is at
    JCO.Structure addrDataStr=input.getStructure("ADDRESSDATA")
    I am not able to set the proper value in JCO.Structure. Please help me.
    Following is the code I am trying to execute
         JCO.Client mConnection = null;
        IRepository mRepository;
        public JCO.Function createFunction(String name) {
            try {
                return mRepository.getFunctionTemplate(name.toUpperCase()).getFunction();
            } catch (Exception ex) {
                ex.printStackTrace();
            return null;
        private void getBussinessPartner(){
            try {
                mConnection = JCO.createClient("800","userID","******","EN","SAPCRMSystem_IP","00");
                // Open the connection
                mConnection.connect();
                mRepository = new JCO.Repository("SharedRepository", mConnection);
                JCO.Function function = this.createFunction("BAPI_BUPA_SEARCH_2");
                // Fill in input parameters
                JCO.ParameterList input = function.getImportParameterList();
                JCO.Structure addrDataStr=input.getStructure("ADDRESSDATA"); //SEARCHRESULT
                addrDataStr.setValue("Germany","COUNTRY");
                //addrDataStr.setValue("Frankfurt", "CITY1");
                mConnection.execute(function);
                if(function.getExportParameterList()!=null){//It is always null
                    JCO.Structure returnStructure = function.getExportParameterList().getStructure(0);
                    for (int i = 0; i <  returnStructure.getFieldCount(); i++) {
                        System.out.println( returnStructure.getField(i).getName()+" : " + returnStructure.getString(i));
            }catch (Exception ex) {
                ex.printStackTrace();
                System.out.println("Caught an exception: \n" + ex);
            finally {
                // do not forget to close the mConnection connection
                if (mConnection != null) mConnection.disconnect();

    not needed now. resolved it.

  • ABAP interfacing to CRM

    Hi CRM Tech guys,
       plz tell me what are the reuirements in ABAP interfacing to CRM.  i want some function modules , bapis,  and needed middleware concepts.
    plz answer me.
    regards
    ram.

    Hi Ram Krishna,
    Some of the FM in CRM:
    GUID_CREATE     Create GUID for a Business Transaction
    BAPI_BUSPROCESSND_CREATEMULTI     Bapi to create Service Contracts programmatically. Pass the inputfields to be created in the contract.
    Note: BAPI_BUSPROCESSND_SAVE must be called after this function call to save the Service Contract.
    BAPI_BUSPROCESSND_SAVE     Bapi to save the Service Contracts.
    BAPI_ECRMISUTO_INIT     Initialize the creation of Ibase in CRM
    BAPI_ECRMISUTO_CREATEMULTIPLE     Create the Installed Base and its components.
    Note:
             Always call the function module 
             ‘BAPI_TRANSACTION_COMMIT’
             after call to any Bapi
    CRM_IBASE_INITIALIZE     Initialize the changes to be done in Ibase in CRM
    CRM_IBASE_SAVE     Call this FM to save the changes in the Ibase
    BAPI_BUPA_FRG0130_CREATE     Bapi to create Business Agreement for a customer
    BAPI_BUPA_ADDRESS_ADD      Add invoice address for business partner. Pass the address type as 'rechnung' to add invoice address
    BAPI_BUPA_BANKDETAIL_ADD        Add bank details for the business partner
    BAPI_BUPA_CREATE_FROM_DATA        BAPI for business partner creation as Organization, Person or Group in general role. Same BAPI can be used to create Contact Person for the Business Partner
    BAPI_BUPR_RELATIONSHIP_CREATE     Function module to establish the Business Partner and Contact Person
    Relationship. Pass the Relationship Category as ‘BUR001’
    BAPI_BUPA_ROLE_ADD        Add Role to Business Partner for e.g. Sold to Party ‘CRM001’, Contact Person ‘BUP001’
    BAPI_BUPA_TAX_ADD     BAPI Add Tax Number for the existing Business Partner
    BAPI_BUPA_FRG0040_CREATE     Create Classification Data for a Business Partner
    BAPI_BUPA_FRG0130_CREATE     Create Business Agreement
    BAPI_BUSPROCESSND_CREATEMULTI     BAPI to create Contract. Populate the Header and Line Item Details before calling the BAPI
    BAPI_BUPA_ADDRESSES_GET      Determine All Addresses
    BAPI_BUPA_ADDRESS_GETDETAIL        Read Address
    BAPI_BUPA_ADDRESS_GET_NUMBERS        Read Address Numbers
    BAPI_BUPA_BANKDETAILS_GET        Determine All Bank Details
    BAPI_BUPA_BANKDETAIL_GETDETAIL        Read Bank Details
    BAPI_BUPA_BANKDETAIL_NUMBERS        Read Bank Details Numbers
    BAPI_BUPA_CENTRAL_GETDETAIL        Read Central Data
    BAPI_BUPA_EXISTENCE_CHECK        Check Existence of Business Partner
    BAPI_BUPA_GET_NUMBERS        Read Business Partner Numbers
    BAPI_BUPA_RELATIONSHIPS_GET        Determine All BP Relationships
    BAPI_BUPA_ROLES_GET        Determine All Roles
    BAPI_BUPA_ROLE_EXISTENCE_CHECK        Check Existence of Role
    BAPI_BUPA_SEARCH        Search Business Partner for Telephone, E-Mail, Address
    BAPI_BUPA_STATUS_GETDETAIL      Business Partner: Read Status
    BAPI_BUPR_ACTIVITYP_EXISTCHECK      Check Existence of Contact Partner Relationship
    BAPI_BUPR_CONTP_ADDRESSES_GET        Read Contact Person Relationship Addresses
    BAPI_BUPR_CONTP_ADDR_GETDETAIL        Read Contact Person Relationship Addresses
    BAPI_BUPR_CONTP_GETDETAIL        Read Contact Person Relationship
    BAPI_BUPR_EMPLO_ADDRESSES_GET        Read Contact Person Relationship Addresses
    BAPI_BUPR_EMPLO_ADDR_GETDETAIL        Read Employee Relationship Address
    BAPI_BUPR_EMPLO_GETDETAIL        Read Employee Relationship
    BAPI_BUPR_RELATIONSHIP_GET        Read General Relationship
    BAPI_BUPR_RELSHIP_CHECKEXIST        Check Existence of General Relationship
    BAPI_BUPR_RELSHIP_GET_DETAIL        Read General Relationship
    BAPI_BUPR_RESP_EMPLO_CHEKEXIST        Read Relationship of Employee Responsible
    BUPA_PARTNER_CONTACT_SEARCH      Searches business partners for telephone, E-Mail, address
    ECRM_ISU_COMP_BY_ADDRESS     Check for Existence of Ibase
    CRM_ORDER_GET_HEADER_GUID     Get Header GUID for Item GUID pass ref_kind as b
    CRM_ORDERADM_H_READ_OW     Read the Header Details for a Business Transaction. Pass the Header guid.
    CRM_ORDERADM_I_READ_OW     Read the Line Item Details for a line item. Pass the line item guid.
    CRM_ORDER_READ     Get all the Service Contract details.
    Note: Pass the requested objects to fetch only the required details.
    This can also be used to get the details of activities/leads/opportunities etc.
    CRM_ORDER_GETSTATUS     Get status of the Service Contract
    Note: CRM_ORDER_READ Function Module
    1.     CRM_ORDER_READ is a function module which can be used to get the details of any business transaction based on the Header GUID, Item GUID or both.
    2.     Always pass the IT_REQUESTED_OBJECTS structure to this function module to fetch the required details only.
    3.     This function module can not be executed directly instead SAP has provided a report CRM_ORDER_READ for the same for testing purpose. We can pass Business Transaction Number (Object ID), Header GUID or Item GUID to this report to get the required details.
    For other Details: just go through : http://help.sap.com/saphelp_crm50/helpdata/en/1a/023d63b8387c4a8dfea6592f3a23a7/frameset.htm
    Hope it will help
    Regards,
    Arjun
    <b>Reward points if it helps</b>

  • How to search Business Partner filter by country

    As topic above, how to search Business Partner filter by country, which table is involve?
    Appreciate your kind effort
    Thx

    Hi
    1) you can use the function module 'BAPI_BUPA_SEARCH' to filter BP by country. In the address data field, you can enter country code (say IN for India) and this will return you the list of BP's belonging to the country.
    2) You can use view BBPV_BUPA_ADDR to see the BP's for a particular country.
    for this view, if you look at the "Table/Join Conditions" tab, you can see the underlying tables used for join ->
    BUT000 ->BuPA Master
    BUT020 ->BP Address table
    ADRC ->Address services.
    Hope the above info helps.
    Regards
    Nisha

  • Retreive email id during BP creation, before saving BP

    hi,
    I need the email ID that the user enters while creating a new BP. How do i get it? Is there any FM ?
    thanks,
    Shan.

    Hi,
    You can use below function Modules;
    BUPA_PARTNER_CONTACT_SEARCH :Searches business partners for telephone, E-Mail, address.
    BAPI_BUPA_SEARCH  :      Search Business Partner for Telephone, E-Mail, Address.
    *BAPI_BUPA_CENTRAL_GETDETAIL        *Read Central Data
    Regards,
    Amol Tambe
    SAP CRM Technical Consultant.

  • Post Code : Want to determine the list of Business Partner !!!

    Hi all
       I have given Post Code of BP.
       I want to determine the <b>list of Business Partner</b> present in the specified <b>Post Code Location</b>.
      Is their any direct way around to determine the list of
    Business Partner ?  or Please let me know the possible ways to determine the BPs with the given Post Code !!!!
    Many Thanks
    Jack

    Hi Jack,
    Have a look at BAPI_BUPA_SEARCH function module.
    Enter the Post Code in the ADDRESSDATA structure and it will return list of Business Partners for the same.
    Also ,have a look at BUPA_PARTNER_CONTACT_SEARCH function module.
    <b>Reward points if it helps.</b>
    Message was edited by: Amit Mishra

  • Function Module Required for fetching contact details from BUT000

    Hi Everybody.
    I have created a contact using transaction BP.
    these details according to me will get saved in standard table BUT000.
    Now i need standard FM used for fetching all these Contact details.
    Help me i am new to CRM.

    Hi Amit,
    Please check the following:
    Data Retrieval Function Modules:
    Name                                                             Description
    BAPI_BUPA_ADDRESSES_GET              Determine All Addresses
    BAPI_BUPA_ADDRESS_GETDETAIL                Read Address
    BAPI_BUPA_ADDRESS_GET_NUMBERS          Read Address Numbers
    BAPI_BUPA_BANKDETAILS_GET                Determine All Bank Details
    BAPI_BUPA_BANKDETAIL_GETDETAIL            Read Bank Details
    BAPI_BUPA_BANKDETAIL_NUMBERS               Read Bank Details Numbers
    BAPI_BUPA_CENTRAL_GETDETAIL               Read Central Data
    BAPI_BUPA_EXISTENCE_CHECK              Check Existence of Business Partner
    BAPI_BUPA_GET_NUMBERS                               Read Business Partner Numbers
    BAPI_BUPA_RELATIONSHIPS_GET               Determine All BP Relationships
    BAPI_BUPA_ROLES_GET                               Determine All Roles
    BAPI_BUPA_ROLE_EXISTENCE_CHECK          Check Existence of Role
    BAPI_BUPA_SEARCH                              Search Business Partner for Telephone, E-Mail, Address
    BAPI_BUPA_STATUS_GETDETAIL             Business Partner: Read Status
    BAPI_BUPR_ACTIVITYP_EXISTCHECK              Check Existence of Contact Partner Relationship
    BAPI_BUPR_CONTP_ADDRESSES_GET          Read Contact Person Relationship Addresses
    BAPI_BUPR_CONTP_ADDR_GETDETAIL          Read Contact Person Relationship Addresses
    BAPI_BUPR_CONTP_GETDETAIL              Read Contact Person Relationship
    BAPI_BUPR_EMPLO_ADDRESSES_GET        Read Contact Person Relationship Addresses
    BAPI_BUPR_EMPLO_ADDR_GETDETAIL        Read Employee Relationship Address
    BAPI_BUPR_EMPLO_GETDETAIL             Read Employee Relationship
    BAPI_BUPR_RELATIONSHIP_GET              Read General Relationship
    BAPI_BUPR_RELSHIP_CHECKEXIST             Check Existence of General Relationship
    BAPI_BUPR_RELSHIP_GET_DETAIL             Read General Relationship
    BAPI_BUPR_RESP_EMPLO_CHEKEXIST        Read Relationship of Employee Responsible
    BUPA_PARTNER_CONTACT_SEARCH           Searches business partners for telephone, E-Mail, address
    CRM_ORDER_READ                     Get all the Service Contract details.
    Hope this helps!
    Regards,
    Saumya

  • QUESTION on MAINTENANCE VIEW

    Hi gurus,
    I am not familiar with MAINTENANCE VIEW TABLE, can someone please tell me on how to create it and how can I use it for query or select.
    I hope someone can help me.
    Thanks in advance.

    hello gurus,
    im new to this community please help me out from this please explain what are different conditions are there for install and replace in this code pzzzzzzzzz its really urgent evening is my delivery
    THIS IS MIS SHOWS A LEAD TIME FOR DEVICES PERTAINING TO A SELECTION*
    CRITERIA FROM THE TIME OF ISSUE OF METER FROM THE DEPOT FOR NEW   *
    INSTALLATION / REPLACEMENT CONNECTION TO THE FIRST BILL          *
    Designer           : K SRIKANTH                                 *
    Programmer            : K SRIKANTH                                 *
    Programming Date      : 29/12/2004
    Change Tracking No     : D90K                                    *
    Program Title          : LEAD TIME REPORT FROM DEVICE * *
                        INSTALLATION/REPLACEMENT TO FIRST BILL *
    MODIFICATIONS                                                     *
    DATE       | BY      | DESCRIPTION       | Chg Trck No             *
    dd.mm.yy   | xxxxx   |                   |                         *
               |         |                   |                         *
               |         |                   |                         *
    ASSUMPTIONS:
    THE VALUES FROM THE TABLE V_EABL ARE SELECTED ONLY FOR METER       *
    READING REASON '01','02','03' & '22' FOR THE FIELD ABLESGR.
    THE VALUES FROM THE TABLE ETDZ ARE SELECTED ONLY FOR REGISTER
    CODE '01' FOR THE FIELD ZWKENN .
    THE NUMBER OF RECORDS FETCHED FROM TABLE EGERH, WHILE RUNNING IN   *
    FOREGROUND, DEPENDS UPON THE SELECTION CRITERIA. WHILE RUNNING IN  *
    BACKGROUND THIS CONDITION IS NOT APPLICABLE.                        *
    REPORT ZRDMD01A MESSAGE-ID ZS LINE-SIZE 150 .
    TYPE-POOLS : SLIS .
    TABLE DECLARATION*********************
    TABLES :
    IFLOT ,
    TE401 ,  "   Transactions reasons
    EGERH ,          " Historical Data of ISU Device Master Record
    EQUI ,           " Equipment master data
    EASTL,          " Billing data: Installation Structure at Device Level
    EANL ,          " Installation
    EVBS ,          " Premise
    EADRREGAREAA,   " Role-Spec. Allocation: Reg. Str. Area to Reg. StrGroup
    EHAUISU ,       " Connect. Obj.
    ILOA  ,          "  PM Object Location and Account Assignment
    EABLG ,         " MR Reasons in MR Document
    EABL  ,          "  MR Document
    EVER ,           " IS-U Cont.
    ERCH ,           "  Billing Doc. Data
    ERCHC    ,      "  Invoicing/Reversal History: ERCH
    ETYP ,
    ETDZ,
    EASTS ,
    V_EABL ,
    EADRREGAREAT .
    ***INTERNAL TABLE DECLARATION*****
    DATA : BEGIN OF ITCOM OCCURS 100,
             STATUS(50) TYPE C ,
            REGIOAREA LIKE EADRREGAREAA-REGIOAREA,
            DESCRIPT LIKE EADRREGAREAT-DESCRIPT ,
            V0_15 TYPE I,
            V16_30 TYPE I,
            V31_45 TYPE I,
            V46_60 TYPE I,
            V61_75 TYPE I,
            V76_90 TYPE I,
            V90 TYPE I,
            VNTAV TYPE I,
            TOTAL TYPE I ,
           REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP ,
          END OF ITCOM .
    DATA : ITFLD TYPE SLIS_T_FIELDCAT_ALV ,
           SFLD TYPE  SLIS_FIELDCAT_ALV ,
           ITH  TYPE  SLIS_T_FIELDCAT_ALV ,
           STH  TYPE  SLIS_FIELDCAT_ALV ,
           SIT  TYPE  SLIS_FIELDCAT_ALV,
           ITA  TYPE  SLIS_T_FIELDCAT_ALV ,
           IEVENTS TYPE SLIS_T_EVENT ,
           ALV_T_EVENT TYPE SLIS_T_EVENT WITH HEADER LINE,
           ITEVENTS TYPE SLIS_ALV_EVENT ,
             EVENTS TYPE SLIS_T_EVENT ,
            EVNTS  TYPE SLIS_ALV_EVENT ,
            EVNTS1  TYPE SLIS_ALV_EVENT ,
            EVNTS2  TYPE SLIS_ALV_EVENT ,
            EVNTS3  TYPE SLIS_ALV_EVENT ,
            EVENTS_SUMM TYPE SLIS_T_EVENT ,
            EVENTS_DETAIL TYPE SLIS_T_EVENT ,
            EVENTS_SPL TYPE SLIS_T_EVENT .
    DATA : ITHD TYPE SLIS_T_LISTHEADER ,
            HD TYPE SLIS_LISTHEADER ,
           ITD TYPE SLIS_T_LISTHEADER ,
            TD  TYPE SLIS_LISTHEADER .
    DATA : BEGIN OF ITFIN OCCURS 0,
        EQUNR   LIKE EGERH-EQUNR ,   " EQUIPMENT NUMBER
        ANLAGE  LIKE EASTL-ANLAGE  , "INSTLLATION NUMBER
        VSTELLE LIKE EANL-VSTELLE,   "PREMISE
        LOGIKNR LIKE EGERH-LOGIKNR,  "LOGICAL DEVICE NUMBER
        SERNR   LIKE EQUI-SERNR,     "DEVICE NUMBER
        VKONTO  LIKE EVER-VKONTO,    "CONTRACT NUMBER
        REGIOAREA LIKE EADRREGAREAA-REGIOAREA,
        REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP,
        LTPU(8)  TYPE C ,   "LEAD FROM PREMISE T UI
        LTUB(8)  TYPE C,    "LEAD FROM UTILITY INS TO BILLING INS
        LTBM(8)  TYPE C,    "LEAD FROM BI TO MR ORDER
        LTMA(8)  TYPE C,    "LEAD MR ORDER TO ACTUAL MR
        LTAB(8)  TYPE C,    "LEAD FROM ACTUAL MR TO SCHEDULE BILL ORDER
        LTBA(8)  TYPE C,    "LEAD TIME FROM SCHED BILL ORDER TO ACTUAL BILL
        SUM(8)  TYPE C ,    "TOTAL LEAD FROM UI TO ACTUAL BILL
        SERIAL  TYPE I ,
        BIS  LIKE  EGERH-BIS ,
           AB   LIKE  EGERH-AB,
           ZWGRUPPE LIKE EGERH-ZWGRUPPE ,
           EINBDAT LIKE EGERH-EINBDAT,
           AUSBDAT  LIKE EGERH-AUSBDAT,
           GERWECHS LIKE EGERH-GERWECHS,
           DEVLOC   LIKE EGERH-DEVLOC,
           SPARTE LIKE  EQUI-SPARTE,
            ANLART LIKE EANL-ANLART,
            HAUS  LIKE EVBS-HAUS,
            VBSART LIKE EVBS-VBSART,
            ABLBELNR LIKE EABLG-ABLBELNR,
           ABLESGR LIKE EABLG-ABLESGR ,
           ADAT LIKE V_EABL-ADAT ,
          VERTRAG LIKE EVER-VERTRAG,
              DESCRIPT(20) TYPE C, " LIKE EADRREGAREAT-DESCRIPT ,
             STATUS(40) TYPE C ,
         END OF ITFIN .
    DATA : ITAAA LIKE ITFIN OCCURS 100 WITH HEADER LINE ,
           ITBBB LIKE ITFIN OCCURS 100 WITH HEADER LINE .
    DATA : BEGIN OF ITTE4 OCCURS 100,
          GERWECHS LIKE TE401-GERWECHS,
          EAWKENNZE LIKE TE401-EAWKENNZE,
          EAWKENNZA LIKE TE401-EAWKENNZA,
          EAWKENNZW LIKE TE401-EAWKENNZW,
          GERWETXT  LIKE TE401T-GERWETXT ,
          END OF ITTE4 .
    DATA : BEGIN OF ITEAS OCCURS 100,
           ANLAGE LIKE EASTL-ANLAGE,
           LOGIKNR LIKE EASTL-LOGIKNR,
          BIS LIKE EASTL-BIS,
          AB LIKE EASTL-AB,
           ERDAT LIKE EASTL-ERDAT,
            END OF ITEAS .
    DATA : BEGIN OF ITDES OCCURS 0 ,
           LANGU LIKE EADRREGAREAT-LANGU,
           ROLE   LIKE EADRREGAREAT-ROLE ,
          REGIOAREA LIKE EADRREGAREAA-REGIOAREA ,
          DESCRIPT(20) type c ," LIKE EADRREGAREAT-DESCRIPT ,
          END OF ITDES .
    DATA : BEGIN OF ITMX1 OCCURS 0 ,
           EQUNR LIKE EGERH-EQUNR,
           BIS  LIKE  EGERH-BIS ,
           AB   LIKE  EGERH-AB,
           LOGIKNR LIKE EGERH-LOGIKNR,
           ZWGRUPPE LIKE EGERH-ZWGRUPPE ,
           EINBDAT LIKE EGERH-EINBDAT,
           AUSBDAT  LIKE EGERH-AUSBDAT,
           GERWECHS LIKE EGERH-GERWECHS,
           DEVLOC   LIKE EGERH-DEVLOC,
           MATNR LIKE EQUI-MATNR,
           SERNR LIKE EQUI-SERNR,
           SPARTE LIKE EQUI-SPARTE,
            ANLAGE LIKE EASTL-ANLAGE,
            ERDAT_EAS LIKE EASTL-ERDAT, "ERDAT_EAS
            VSTELLE LIKE EANL-VSTELLE,
            ANLART LIKE EANL-ANLART,
            ERDAT_EAN LIKE EANL-ERDAT, "ERDAT_EAN
             HAUS  LIKE EVBS-HAUS,
             VBSART LIKE EVBS-VBSART,
             ERDAT_EVB LIKE EVBS-ERDAT,  "ERDAT_EVB
            REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP,
             REGIOAREA LIKE EADRREGAREAA-REGIOAREA ,
             DESCRIPT(20) type c ,
              ABLBELNR LIKE V_EABL-ABLBELNR ,
            ABLESGR LIKE V_EABL-ABLESGR ,
            ADAT LIKE V_EABL-ADAT ,
            ADATSOLL LIKE V_EABL-ADATSOLL ,
            VERTRAG LIKE EVER-VERTRAG,
           VKONTO LIKE  EVER-VKONTO,
            BELNR LIKE ERCH-BELNR,
          VKONT LIKE ERCH-VKONT,
          BEGABRPE LIKE ERCH-BEGABRPE,
          ENDABRPE LIKE ERCH-ENDABRPE,
          ABRDATS LIKE ERCH-ABRDATS,
          BUDAT LIKE ERCHC-BUDAT,
           LFDNR LIKE ERCHC-LFDNR,
          END OF ITMX1 .
    DATA : BEGIN OF ITMX2 OCCURS 0,
           EQUNR LIKE EGERH-EQUNR,
           BIS  LIKE  EGERH-BIS ,
           AB   LIKE  EGERH-AB,
          LOGIKNR LIKE EGERH-LOGIKNR,
           ZWGRUPPE LIKE EGERH-ZWGRUPPE ,
           EINBDAT LIKE EGERH-EINBDAT,
           AUSBDAT  LIKE EGERH-AUSBDAT,
           GERWECHS LIKE EGERH-GERWECHS,
           DEVLOC   LIKE EGERH-DEVLOC,
           MATNR LIKE EQUI-MATNR,
           SERNR LIKE EQUI-SERNR,
           SPARTE LIKE EQUI-SPARTE,
            ANLAGE LIKE EASTL-ANLAGE,
            LOGIKNR LIKE EGERH-LOGIKNR,
            ERDAT LIKE EASTL-ERDAT, "ERDAT_EAS
            END OF ITMX2 .
    DATA : BEGIN OF ITMX4 OCCURS 0 ,
            ANLAGE  LIKE EANL-ANLAGE ,
            VSTELLE LIKE EANL-VSTELLE,
             HAUS  LIKE EVBS-HAUS,
             VBSART LIKE EVBS-VBSART,
             ERDAT LIKE EVBS-ERDAT,  "ERDAT_EVB
            REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP,
             REGIOAREA LIKE EADRREGAREAA-REGIOAREA ,
              DESCRIPT(20) type c ,
           ANLART LIKE EANL-ANLART,
             END OF ITMX4 .
    DATA : BEGIN OF ITEVE OCCURS 0 ,
            ANLAGE LIKE EVER-ANLAGE ,
             VKONTO LIKE  EVER-VKONTO,
            VERTRAG LIKE EVER-VERTRAG,
           SPARTE LIKE EVER-SPARTE ,
           END OF ITEVE .
    DATA : BEGIN OF ITMX3 OCCURS 0 ,
             EQUNR  LIKE V_EABL-EQUNR ,
            ABLBELNR LIKE V_EABL-ABLBELNR ,
            ABLESGR LIKE V_EABL-ABLESGR ,
            ADAT LIKE V_EABL-ADAT ,
            ADATSOLL LIKE V_EABL-ADATSOLL ,
             ANLAGE LIKE EVER-ANLAGE ,
             VKONTO LIKE  EVER-VKONTO,
            VERTRAG LIKE EVER-VERTRAG,
           SPARTE LIKE EVER-SPARTE ,
         VKONT LIKE ERCH-VKONT,
          BEGABRPE LIKE ERCH-BEGABRPE,
          ENDABRPE LIKE ERCH-ENDABRPE,
          ABRDATS LIKE ERCH-ABRDATS,
            BELNR LIKE ERCH-BELNR,
          LFDNR LIKE ERCHC-LFDNR,
           BUDAT LIKE ERCHC-BUDAT,
          SWERK LIKE ILOA-SWERK ,
            END OF ITMX3.
    data : BEGIN OF ITERC OCCURS 0 ,
          BEGABRPE LIKE ERCH-BEGABRPE,
          ENDABRPE LIKE ERCH-ENDABRPE,
          ABRDATS LIKE ERCH-ABRDATS,
          VERTRAG like ERCH-VERTRAG ,
          BELNR LIKE ERCH-BELNR,
          VKONT LIKE ERCH-VKONT ,
          LFDNR LIKE ERCHC-LFDNR,
           BUDAT LIKE ERCHC-BUDAT,
          END OF ITERC .
    DATA : BEGIN OF ITMX7 OCCURS 0,
          SRNO   TYPE I  ,
           STATUS(40) TYPE C ,
           REGIOAREA  LIKE EADRREGAREAA-REGIOAREA ,
           REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP ,
           DESCRIPT(20) TYPE C ," LIKE  EADRREGAREAT-DESCRIPT  ,
           V0_15  LIKE ITCOM-V0_15 ,
           V16_30 LIKE ITCOM-V16_30 ,
           V31_45 LIKE ITCOM-V31_45 ,
           V46_60 LIKE ITCOM-V46_60 ,
          V61_75 LIKE ITCOM-V61_75 ,
          V76_90 LIKE ITCOM-V76_90 ,
          V90   LIKE ITCOM-V90 ,
          VNTAV LIKE ITCOM-VNTAV  ,
          TOTAL TYPE I ,
             END OF ITMX7 .
    DATA : BEGIN OF ITETD OCCURS 0,
          EQUNR LIKE ETDZ-EQUNR ,
          ZWNUMMER LIKE ETDZ-ZWNUMMER,
          ZWKENN  LIKE ETDZ-ZWKENN ,
          LOGIKZW LIKE ETDZ-LOGIKZW ,
          ANLAGE  LIKE EASTS-ANLAGE ,
         BIS     LIKE EASTS-BIS,
          ZWNABR  LIKE EASTS-ZWNABR ,
          END OF ITETD .
      DATA : BEGIN OF ITEAN OCCURS 100,
          ANLAGE LIKE  EASTL-ANLAGE,
         SPARTE LIKE  EQUI-SPARTE,
          VSTELLE LIKE EANL-VSTELLE,
          ANLART LIKE EANL-ANLART,
          ERDAT LIKE EANL-ERDAT ,
             HAUS  LIKE EVBS-HAUS,
             VBSART LIKE EVBS-VBSART,
             ERDAT_EVBS LIKE EVBS-ERDAT,  "ERDAT_EVB
            REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP,
             REGIOAREA LIKE EADRREGAREAA-REGIOAREA ,
              DESCRIPT(20) type c ,
          END OF ITEAN .
    DATA : BEGIN OF ITSPL OCCURS 0 ,
            TPLNR LIKE IFLOT-TPLNR ,
            TPLMA LIKE IFLOT-TPLMA ,
            HAUS  LIKE EHAUISU-HAUS ,
            REGIOGROUP LIKE EADRREGAREAA-REGIOGROUP ,
            END OF ITSPL .
    DATA : BEGIN OF ITEGE OCCURS 0,
           EQUNR LIKE EGERH-EQUNR ,
           LOGIKNR LIKE EGERH-LOGIKNR,
           MATNR   LIKE EQUI-MATNR ,
           SERNR  LIKE EQUI-SERNR,
           SPARTE  LIKE EQUI-SPARTE,
           DEVLOC  LIKE EGERH-DEVLOC,
           END OF ITEGE .
    DATA : ITMOD LIKE ITMX2 OCCURS 0 WITH HEADER LINE ,
           WA_ITMX2 LIKE ITMX2 .
    DATA : WA-EQUNR LIKE EQUI-EQUNR ,
           WA-ANLAGE LIKE EASTL-ANLAGE .
      DATA : w_variant  like disvariant ,
             W_VARIANT_SAVE  TYPE C .
    DATA : REP-ID LIKE SY-REPID,
         W_REPID LIKE SY-REPID .
    DATA PUSH TYPE SSCRFIELDS-UCOMM .
    DATA  COUNT TYPE I .
    DATA : V13 TYPE I ,
           V17 TYPE  I.
    DATA CNT TYPE I .
    DATA VARIANT LIKE SY-TABIX .
    DATA :  SNT TYPE I ,
            PNT TYPE I ,
         V_COUNT TYPE I VALUE 1 .
    DATA: ylayout TYPE slis_layout_alv ,
         XLAYOUT TYPE SLIS_LAYOUT_ALV .
    DATA  KNT TYPE I VALUE 0  .
    DATA I_SORT TYPE slis_t_sortinfo_alv WITH HEADER LINE .
    DATA : V_DATE LIKE SY-DATUM ,
          V_DATUM(10) TYPE C ,
          GX_VARIANT LIKE DISVARIANT,
          G_VARIANT LIKE DISVARIANT,
                G_SAVE(1) TYPE C VALUE 'A',
                G_EXIT(1) TYPE C,
                N TYPE I ,
                M TYPE I ,
                C TYPE I VALUE 0 .
    DATA  G_REPID LIKE SY-REPID .
    DATA: GT_PRINT TYPE SLIS_PRINT_ALV.
    DATA YREPID LIKE SY-REPID .
    DATA: X_LAYOUT TYPE SLIS_LAYOUT_ALV ,
          Y_LAYOUT TYPE SLIS_LAYOUT_ALV ,
          Z_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA : TITLE LIKE SY-TITLE .
    DATA : V_ENTER TYPE I ,
           V_MODIFY TYPE I .
    ******************SELECTION SCREEN ************************
    SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001 .
    PARAMETERS P_SPART LIKE EQUI-SPARTE DEFAULT  '01' .
    SELECTION-SCREEN COMMENT 40(15)  TEXT-005 .
    SELECT-OPTIONS : S_SWERK FOR ILOA-SWERK DEFAULT  'M011',
                     S_RAREA FOR EADRREGAREAA-REGIOAREA ,
                     S_RGROUP FOR EADRREGAREAA-REGIOGROUP,
                     S_AB FOR EGERH-AB OBLIGATORY .
    SELECTION-SCREEN END OF BLOCK BL1 .
    SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-002 .
    SELECT-OPTIONS: S_SERNR FOR EQUI-SERNR ,
                    S_MATNR FOR EQUI-MATNR OBLIGATORY ,
                    S_VSTELL FOR EANL-VSTELLE ,
                    S_HAUS FOR EHAUISU-HAUS .
    SELECTION-SCREEN  END OF BLOCK BL2.
    SELECTION-SCREEN BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-003 .
    SELECT-OPTIONS: S_VKONTO FOR EVER-VKONTO .
    SELECTION-SCREEN END OF BLOCK BL3 .
    SELECTION-SCREEN BEGIN OF BLOCK BL4 WITH FRAME TITLE TEXT-004 .
    PARAMETERS: P_INSTA RADIOBUTTON GROUP RAD1 DEFAULT 'X' ,
                P_REPLC RADIOBUTTON GROUP RAD1 ,
                P_IP RADIOBUTTON GROUP RAD1 .
    SELECT-OPTIONS : S_GERWE FOR EGERH-GERWECHS .
    SELECTION-SCREEN END OF BLOCK BL4 .
    SELECTION-SCREEN BEGIN OF BLOCK BL5 WITH FRAME TITLE TEXT-006.
    PARAMETERS  : P_VARI LIKE DISVARIANT-VARIANT ."DEFAULT '/ALL'.
    SELECTION-SCREEN COMMENT 47(40) varname FOR FIELD P_VARI .
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN PUSHBUTTON /5(25) BUT1 USER-COMMAND UCSS .
    PARAMETERS: P_FIXVAR LIKE KAEP_SETT-FIXVAR NO-DISPLAY,
                P_MAXSEL LIKE KAEP_SETT-MAXSEL NO-DISPLAY DEFAULT 1000.
    SELECTION-SCREEN END OF BLOCK BL5.
    *******INITIALIZATION************************
    INITIALIZATION .
    SET PF-STATUS 'INST' .
    G_REPID = SY-REPID.
    PERFORM VARIANT_INIT.
    Default variant
      GX_VARIANT = G_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                I_SAVE     = G_SAVE
           CHANGING
                CS_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 0.
        P_VARI = GX_VARIANT-VARIANT.
      ENDIF.
      MOVE 'Further Settings' TO BUT1 .
    AT SELECTION SCREEN EVENT******
    AT SELECTION-SCREEN .
      CASE SY-UCOMM .
        WHEN 'UCSS' .
          CALL FUNCTION 'K_LINE_ITEM_TECH_SETTINGS_SET'
               CHANGING
                    C_FIXVAR = P_FIXVAR
                    C_MAXSEL = P_MAXSEL.
      ENDCASE .
      IF NOT S_RAREA IS INITIAL .
        SELECT SINGLE * FROM EADRREGAREAA
         WHERE REGIOAREA IN S_RAREA .
        IF  SY-SUBRC <> 0 .
          MESSAGE E058(00) WITH S_RAREA-LOW S_RAREA-HIGH.
          LEAVE TO LIST-PROCESSING .
        ENDIF .
      ENDIF.
      IF NOT S_MATNR IS INITIAL .
        SELECT SINGLE * FROM ETYP
              WHERE MATNR IN S_MATNR
              AND KOMBINAT = 'Z'.
          IF SY-SUBRC <> 0 .
            MESSAGE E411(EG) .
            LEAVE TO  LIST-PROCESSING .
          ENDIF.
       ENDIF.
    IF NOT S_SWERK IS INITIAL .
        SELECT SINGLE * FROM ILOA
              WHERE SWERK IN S_SWERK .
          IF SY-SUBRC <> 0 .
            MESSAGE E412(I0) .
            LEAVE TO LIST-PROCESSING .
          ENDIF.
    ENDIF.
    IF NOT S_RGROUP IS INITIAL .
        SELECT SINGLE * FROM EADRREGAREAA
              WHERE REGIOGROUP IN S_RGROUP .
          IF SY-SUBRC <> 0 .
            MESSAGE E025(E7) .
            LEAVE TO LIST-PROCESSING .
          ENDIF.
    ENDIF.
    IF NOT  S_HAUS IS INITIAL .
      SELECT SINGLE * FROM EHAUISU
        WHERE HAUS IN S_HAUS .
        IF SY-SUBRC <> 0 .
          MESSAGE E011(E9) WITH 'Connection Object' S_HAUS-LOW S_HAUS-HIGH .
            LEAVE TO LIST-PROCESSING .
          ENDIF.
    ENDIF.
    IF NOT  S_VSTELL IS INITIAL .
      SELECT SINGLE * FROM EANL
        WHERE VSTELLE IN S_VSTELL .
        IF SY-SUBRC <> 0 .
            MESSAGE E011(E9) WITH 'Premise' S_VSTELL-LOW S_VSTELL-HIGH .
            LEAVE TO LIST-PROCESSING .
          ENDIF.
    ENDIF.
    IF NOT  S_VKONTO IS INITIAL .
      SELECT SINGLE * FROM EVER
        WHERE VKONTO IN S_VKONTO .
        IF SY-SUBRC <> 0 .
            MESSAGE E001(>3) .
            LEAVE TO LIST-PROCESSING .
          ENDIF.
    ENDIF.
    IF NOT S_GERWE IS INITIAL .
      SELECT SINGLE * FROM TE401
       WHERE GERWECHS IN S_GERWE .
        IF SY-SUBRC <> 0 .
          MESSAGE E058(00) WITH S_GERWE-LOW S_GERWE-HIGH .
          LEAVE TO LIST-PROCESSING .
        ENDIF.
    ENDIF.
    IF NOT P_SPART IS INITIAL .
    SELECT SINGLE * FROM EQUI
      WHERE SPARTE = P_SPART .
        IF SY-SUBRC <> 0 .
          MESSAGE E058(00).
           LEAVE TO LIST-PROCESSING .
        ENDIF.
    ENDIF.
    CASE SY-UCOMM .
    WHEN '&LFO'.
    WRITE:/ ' DOCUMENTATION' .
    ENDCASE .
    PERFORM VARIANT_EXISTENCE .
    AT SELECTION-SCREEN OUTPUT .
      LOOP AT SCREEN .
        IF SCREEN-NAME = 'P_SPART' .
          SCREEN-INPUT = 0 .
          MODIFY SCREEN .
        ENDIF .
      ENDLOOP .
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI .
    PERFORM F4_FOR_VARIANT.
    ***************START OF SELECTION EVENT****************
    START-OF-SELECTION .
      IF P_INSTA = 'X' .
        PERFORM INSTALL .
      ELSEIF P_REPLC = 'X' .
        PERFORM REPLACE .
      ELSEIF P_IP = 'X' .
        PERFORM INS_REPL .
      ENDIF.
    IF SY-BATCH = ' ' .
      SELECT  A~EQUNR
             A~BIS
              A~AB
             A~LOGIKNR
              A~ZWGRUPPE
              A~EINBDAT
              A~AUSBDAT
              A~GERWECHS
              A~DEVLOC
              B~MATNR
              B~SERNR
              B~SPARTE
              D~ANLAGE
              D~LOGIKNR
              D~ERDAT  FROM ( ( EGERH AS A INNER JOIN EQUI AS B
                                    ON AEQUNR = BEQUNR )
                      INNER JOIN EASTL AS D ON ALOGIKNR = DLOGIKNR )
                                        AND   ABIS     = DBIS
                                        AND   AAB      = DAB )
              INTO TABLE ITMX2 UP TO P_MAXSEL ROWS
              FOR ALL ENTRIES IN ITTE4
              WHERE  A~GERWECHS = ITTE4-GERWECHS
              AND    A~BIS GE S_AB-LOW
              AND  A~AB IN S_AB
              AND A~KOMBINAT = 'Z'
              AND A~EINBDAT NE '00000000'
              AND A~AUSBDAT EQ '00000000'
              AND B~MATNR  IN S_MATNR
              AND B~SERNR IN S_SERNR
              AND B~SPARTE = P_SPART
              AND D~BIS GE S_AB-LOW .
             AND D~AB IN S_AB .
    ELSE.
        SELECT A~EQUNR
             A~BIS
              A~AB
             A~LOGIKNR
              A~ZWGRUPPE
              A~EINBDAT
              A~AUSBDAT
              A~GERWECHS
              A~DEVLOC
              B~MATNR
              B~SERNR
              B~SPARTE
              D~ANLAGE
              D~LOGIKNR
              D~ERDAT
              FROM ( ( EGERH AS A INNER JOIN EQUI AS B
                                    ON AEQUNR = BEQUNR )
                      INNER JOIN EASTL AS D ON ALOGIKNR = DLOGIKNR )
                                        AND   ABIS     = DBIS
                                        AND   AAB      = DAB )
              INTO  TABLE ITMX2
              FOR ALL ENTRIES IN ITTE4
              WHERE  A~GERWECHS = ITTE4-GERWECHS
              AND    A~BIS GE S_AB-LOW
              AND  A~AB IN S_AB
              AND A~KOMBINAT = 'Z'
              AND A~EINBDAT NE '00000000'
              AND A~AUSBDAT EQ '00000000'
              AND B~MATNR  IN S_MATNR
              AND B~SERNR IN S_SERNR
              AND B~SPARTE = P_SPART
              AND D~BIS GE S_AB-LOW .
             AND D~AB IN S_AB .
    ENDIF.
    SORT ITMX2 BY ANLAGE EQUNR .
    LOOP AT ITMX2 .
    IF ITMX2-ANLAGE =  WA_ITMX2-ANLAGE .
         MOVE-CORRESPONDING WA_ITMX2 TO ITMOD .
         APPEND ITMOD.
         CLEAR ITMOD .
        MOVE-CORRESPONDING ITMX2 TO ITMOD .
         APPEND ITMOD.
         CLEAR ITMOD .
    ENDIF.
    MOVE-CORRESPONDING ITMX2 TO WA_ITMX2  .
    ENDLOOP .
    SORT ITMOD BY ANLAGE EQUNR .
    DELETE ADJACENT DUPLICATES FROM ITMOD .
    IF NOT ITMOD[] IS INITIAL .
    SELECT A~EQUNR
           A~ZWNUMMER
           A~ZWKENN
           A~LOGIKZW
           B~ANLAGE
           B~ZWNABR
           FROM ( ETDZ AS A INNER JOIN EASTS AS B
                  ON ALOGIKZW = BLOGIKZW )
            INTO TABLE ITETD
            FOR ALL ENTRIES IN ITMOD
            WHERE A~EQUNR = ITMOD-EQUNR
            AND   A~BIS  GE S_AB-LOW
           AND   A~AB   IN S_AB
            AND   A~ZWNUMMER = 1
            AND   B~ZWNABR NE 'X' .
    SORT ITETD BY ANLAGE EQUNR .
    LOOP AT ITMX2 .
       LOOP AT ITETD WHERE ANLAGE EQ ITMX2-ANLAGE .
              V_ENTER =  1 .
            IF ITETD-EQUNR  EQ ITMX2-EQUNR .
               V_MODIFY =  1 .
               EXIT .
           ENDIF.
      ENDLOOP .
         IF V_ENTER = 1 AND V_MODIFY =  0 .
            DELETE ITMX2 .
         ENDIF.
         CLEAR : ITMX2 ,V_ENTER ,V_MODIFY .
    ENDLOOP .
    ENDIF.
    MESSAGE S015(ZS).
    IF NOT ITMX2[] IS INITIAL .
    SELECT  ANLAGE
             VSTELLE
             ANLART
             ERDAT
             FROM EANL INTO CORRESPONDING FIELDS OF TABLE ITEAN
             FOR ALL ENTRIES IN ITMX2
             WHERE ANLAGE = ITMX2-ANLAGE
             AND   SPARTE = P_SPART
             AND   VSTELLE IN S_VSTELL .
    ENDIF.
    SORT ITEAN BY ANLAGE .
    IF NOT ITEAN[] IS INITIAL .
    SELECT  E~ANLAGE
             E~VSTELLE
             F~haus
             F~VBSART
             F~ERDAT
             H~REGIOGROUP
             H~REGIOAREA
             L~DESCRIPT
         FROM ( ( ( ( EANL AS E INNER JOIN EVBS AS F
                           ON EVSTELLE = FVSTELLE )
                      INNER JOIN EHAUISU AS G ON FHAUS = GHAUS    )
                      INNER JOIN EADRREGAREAA AS H ON G~REGIOGROUP =
                                                            H~REGIOGROUP )
                      INNER JOIN EADRREGAREAT AS L ON H~REGIOAREA =
                                                           L~REGIOAREA   )
             INTO TABLE ITMX4
            FOR ALL ENTRIES IN ITEAN
             WHERE E~ANLAGE = ITEAN-ANLAGE
             AND   E~VSTELLE = ITEAN-VSTELLE
             AND   L~LANGU = SY-LANGU
             AND   H~REGIOGROUP IN S_RGROUP
             AND   H~REGIOAREA IN S_RAREA .
    ENDIF.
    *LOOP AT ITEAN .
    READ TABLE ITMX4 WITH KEY  VSTELLE = ITEAN-VSTELLE .
      IF SY-SUBRC EQ 0 .
         MOVE-CORRESPONDING ITMX4 TO ITEAN .
         ITEAN-ERDAT_EVBS = ITMX4-ERDAT .
         MODIFY ITEAN .
      ENDIF.
    *ENDLOOP .
    LOOP AT ITMX2 .
      ITMX1-ERDAT_EAS = ITMX2-ERDAT .
    MOVE-CORRESPONDING ITMX2 TO ITMX1 .
    READ TABLE ITEAN WITH KEY ANLAGE = ITMX2-ANLAGE .
       IF SY-SUBRC EQ 0 .
             ITMX1-ERDAT_EAN = ITEAN-ERDAT .
             MOVE-CORRESPONDING ITEAN TO ITMX1 .
       READ TABLE ITMX4 WITH KEY ANLAGE = ITMX2-ANLAGE .
        IF SY-SUBRC EQ 0 .
              ITMX1-ERDAT_EVB = ITMX4-ERDAT .
            MOVE-CORRESPONDING ITMX4 TO ITMX1 .
        ENDIF.
    WE WILL GET ONLY THOSE RECORDS THAT IS HAVING REGIO GROUP,DIVISON
        APPEND ITMX1.
        CLEAR ITMX1 .
      ENDIF.
    ENDLOOP .
    IF NOT ITMX4[] IS INITIAL .
    SELECT  EQUNR
             ABLBELNR
             ABLESGR
             ADAT
             ADATSOLL
             ANLAGE FROM V_EABL
             INTO TABLE ITMX3
             FOR ALL ENTRIES IN ITMX1
             WHERE ANLAGE = ITMX1-ANLAGE
            AND   EQUNR  = ITMX1-EQUNR
            AND  ADATSOLL GE S_AB-LOW
            ANd ( ABLESGR  EQ  '01'
            OR  ABLESGR  EQ  '02'
            OR  ABLESGR  EQ  '03'
            OR  ABLESGR  EQ  '22'  ) .
    SELECT  B~EQUNR
             A~ABLBELNR
             A~ABLESGR
             B~ADAT
             B~ADATSOLL
             A~ANLAGE
         FROM ( EABLG AS A INNER JOIN EABL AS B ON AABLBELNR = BABLBELNR
            INTO CORRESPONDING FIELDS OF TABLE ITMX3
            FOR ALL ENTRIES IN ITMX1
            WHERE A~ANLAGE = ITMX1-ANLAGE
            AND   B~EQUNR  = ITMX1-EQUNR
            AND  B~ADATSOLL GE S_AB-LOW
            AND  A~ABRDATS  GE S_AB-LOW
            AND ( A~ABLESGR EQ '01'
            OR  A~ABLESGR EQ '02'
            OR  A~ABLESGR EQ '03'
            OR  A~ABLESGR EQ '22'   ) .
    ENDIF.
    SELECT  ANLAGE
             VKONTO
             VERTRAG
             SPARTE
             FROM EVER INTO TABLE ITEVE
             FOR ALL ENTRIES IN ITMX1
             WHERE ANLAGE = ITMX1-ANLAGE
             AND   SPARTE = P_SPART .
    LOOP AT ITMX1 .
    READ TABLE  ITMX3 WITH KEY ANLAGE = ITMX1-ANLAGE
                                EQUNR  = ITMX1-EQUNR .
      IF SY-SUBRC EQ 0 .
       MOVE-CORRESPONDING ITMX3 TO ITMX1 .
       ENDIF.
      READ TABLE ITEVE WITH KEY ANLAGE = ITMX1-ANLAGE .
       IF SY-SUBRC EQ 0 .
          MOVE-CORRESPONDING ITEVE TO ITMX1 .
       ENDIF.
      MODIFY ITMX1 .
    ENDLOOP .
    SELECT J~BEGABRPE
             J~ENDABRPE
             J~ABRDATS
             J~VKONT
             j~vertrag
             K~BELNR
             K~LFDNR
             K~BUDAT
            FROM ( ERCH AS J INNER JOIN ERCHC AS K ON JBELNR = KBELNR )
            INTO CORRESPONDING FIELDS OF TABLE ITERC
             FOR ALL ENTRIES  IN ITMX1
             WHERE J~VERTRAG = ITMX1-VERTRAG
             AND   J~ADATSOLL GE S_AB-LOW .
    *SELECT BEGABRPE
            ENDABRPE
            ABRDATS
            VKONT
            vertrag
            K~BELNR
            K~LFDNR
            K~BUDAT
           FROM  ERCH     INTO CORRESPONDING FIELDS OF TABLE ITERC
            FOR ALL ENTRIES  in ITMX1
            WHERE VERTRAG = ITMX1-VERTRAG
            and   ADATSOLL GE S_AB-LOW .
    LOOP AT ITMX1 .
    READ TABLE ITERC WITH KEY VERTRAG = ITMX1-VERTRAG .
      IF SY-SUBRC EQ 0 .
        ITMX1-BEGABRPE = ITERC-BEGABRPE .
       ITMX1-ENDABRPE = ITERC-ENDABRPE .
       ITMX1-ABRDATS = ITERC-ABRDATS .
       ITMX1-BELNR = ITERC-BELNR .
       ITMX1-LFDNR = ITERC-LFDNR .
       ITMX1-BUDAT = ITERC-BUDAT .
       MODIFY ITMX1 TRANSPORTING BEGABRPE ENDABRPE ABRDATS  BELNR
          LFDNR BUDAT .
       ENDIF.
    ENDLOOP .
    MESSAGE S014(ZS) .
    LOOP AT ITMX1 .
    MOVE-CORRESPONDING ITMX1 TO ITFIN .
      ITFIN-LTPU = ITMX1-ERDAT_EAN - ITMX1-ERDAT_EVB .
      ITFIN-LTUB  = ITMX1-ERDAT_EAS - ITMX1-ERDAT_EAN .
    IF NOT ITMX1-ADATSOLL IS INITIAL AND ( NOT ITMX1-EINBDAT IS  INITIAL )
       ITFIN-LTBM  =  ITMX1-ADATSOLL - ITMX1-EINBDAT .
         ELSE .
             ITFIN-LTBM = 'NTAV'.
         ENDIF.
      IF NOT ITMX1-ADAT IS INITIAL  AND ( NOT ITMX1-ADATSOLL IS INITIAL ) .
        ITFIN-LTMA  =   ITMX1-ADAT - ITMX1-ADATSOLL .
      ELSE .
        ITFIN-LTMA = 'NTAV' .
      ENDIF.
      IF NOT ITMX1-ABRDATS IS INITIAL AND ( NOT ITMX1-ADAT IS INITIAL ) .
        ITFIN-LTAB  =   ITMX1-ABRDATS - ITMX1-ADAT .
      ELSE .
        ITFIN-LTAB =  'NTAV' .
      ENDIF.
      IF NOT ITMX1-BUDAT IS INITIAL AND ( NOT ITMX1-ABRDATS IS INITIAL ) .
           ITFIN-LTBA =   ITMX1-BUDAT - ITMX1-ABRDATS  .
    ELSE.
        ITFIN-LTBA = 'NTAV'.
      ENDIF.
      ITFIN-SUM = 0.
      IF ITFIN-LTPU NE 'NTAV' AND ITFIN-LTPU NE 'N/A'.
        ITFIN-SUM = ITFIN-SUM + ITFIN-LTPU.
      ENDIF.
      IF ITFIN-LTUB NE 'NTAV' AND ITFIN-LTUB NE 'N/A'.
        ITFIN-SUM = ITFIN-SUM + ITFIN-LTUB.
      ENDIF.
      IF ITFIN-LTBM NE 'NTAV' AND ITFIN-LTBM NE 'N/A'.
        ITFIN-SUM = ITFIN-SUM + ITFIN-LTBM.
      ENDIF.
      IF ITFIN-LTMA NE 'NTAV' AND ITFIN-LTMA NE 'N/A'.
        ITFIN-SUM = ITFIN-SUM + ITFIN-LTMA.
      ENDIF.
      IF ITFIN-LTAB NE 'NTAV' AND ITFIN-LTAB NE 'N/A'.
        ITFIN-SUM = ITFIN-SUM + ITFIN-LTAB.
      ENDIF.
      IF ITFIN-LTBA NE 'NTAV' AND ITFIN-LTBA NE 'N/A'.
        ITFIN-SUM = ITFIN-SUM + ITFIN-LTBA.
      ENDIF.
      APPEND ITFIN .
      CLEAR ITFIN .
    ENDLOOP .
    DELETE ADJACENT DUPLICATES FROM ITFIN .
    PERFORM SUMMARY .
    Message S013(ZS).
    PERFORM BACKGROUND .
    CLEAR: ITMX2[] ,ITSPL[],ITEGE[] ,ITTE4[],ITMX7[] .
    MESSAGE S017(ZS) .
    SUBROUTINES********************************
    FOR INSTALLATION********************************
    FORM INSTALL .
      SELECT GERWECHS
            EAWKENNZE
            EAWKENNZW
             FROM TE401 INTO CORRESPONDING FIELDS OF TABLE ITTE4
            WHERE GERWECHS IN S_GERWE
              AND  EAWKENNZE = 'X' .
    IF SY-SUBRC NE 0 .
       MESSAGE S002(ZS).
       LEAVE TO LIST-PROCESSING .
    ENDIF.
    ENDFORM .
    ************************REPLACE****************************
    FORM REPLACE .
      SELECT GERWECHS
             EAWKENNZE
             EAWKENNZW FROM TE401 INTO CORRESPONDING FIELDS OF TABLE ITTE4
        WHERE GERWECHS IN S_GERWE
        AND  EAWKENNZW = 'X' .
    IF SY-SUBRC NE 0.
       MESSAGE S003(ZS) .
       LEAVE TO LIST-PROCESSING .
    ENDIF.
    ENDFORM .
    ************************INSTALL/REPLACEMENT*********************
    FORM INS_REPL .
      SELECT GERWECHS
           EAWKENNZE
           EAWKENNZA
           EAWKENNZW FROM TE401 INTO CORRESPONDING FIELDS OF TABLE ITTE4
      WHERE GERWECHS IN S_GERWE
      AND ( EAWKENNZE = 'X'
      OR  EAWKENNZW = 'X'  ) .
    IF SY-SUBRC NE 0.
       MESSAGE S004(ZS) .
       LEAVE TO LIST-PROCESSING .
    ENDIF.
    ENDFORM .
    FIELD CATALOG FOR DETAILED REPORT ******************
    FORM FIELDCATALOG USING F_FIELDCAT .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'STATUS' .
      SFLD-SELTEXT_S = 'Details'.
      SFLD-SELTEXT_M = 'Details'.
      SFLD-JUST =   'L' .
      SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'EQUNR' .
      SFLD-SELTEXT_S = 'Equipment'.
      SFLD-SELTEXT_M = 'Equipment'.
      SFLD-JUST =   'L' .
      SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'ANLAGE' .
      SFLD-SELTEXT_S = 'Installat.'.
      SFLD-SELTEXT_M = 'Installation'.
      SFLD-JUST =   'L' .
      SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'SERNR' .
      SFLD-SELTEXT_S = 'Serial no.'.
      SFLD-SELTEXT_M = 'Serial number'.
      SFLD-JUST =   'L' .
    SFLD-KEY  = 'X' .
    SFLD-HOTSPOT = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'VKONTO' .
      SFLD-SELTEXT_S = 'Cont.Acct'.
      SFLD-SELTEXT_M = 'Contract Acct'.
      SFLD-JUST =   'L' .
    SFLD-KEY  = 'X' .
    SFLD-HOTSPOT = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'REGIOAREA' .
      SFLD-SELTEXT_S = 'Reg. area'.
      SFLD-SELTEXT_M = 'Reg. struc.area'.
      SFLD-JUST =   'L' .
      SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'REGIOGROUP' .
      SFLD-SELTEXT_S = 'RegStrGrp.'.
      SFLD-SELTEXT_M = 'Reg. Str. Grp.'.
      SFLD-JUST =   'L' .
      SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD  .
      SFLD-FIELDNAME = 'LTPU' .
      SFLD-SELTEXT_S = 'Prm-Util'.
      SFLD-SELTEXT_L = 'Premise to Utility installation in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'LTUB' .
      SFLD-SELTEXT_S = 'Util-BInst'.
      SFLD-SELTEXT_L = 'Utility to Billing installation in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'LTBM' .
      SFLD-SELTEXT_M = 'BInst-MRO'.
      SFLD-SELTEXT_L = 'Billing to Meter reading order in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'LTMA' .
      SFLD-SELTEXT_M = 'MRO-AcRead'.
      SFLD-SELTEXT_L = 'Meter reading order to actual reading in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'LTAB' .
      SFLD-SELTEXT_M = 'AcRead-BiOr'.
      SFLD-SELTEXT_L = 'Actual reading to Billing order in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'LTBA' .
      SFLD-SELTEXT_M = 'BiOr-AcBill'.
      SFLD-SELTEXT_L = 'Billing order to Actual billing in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'SUM' .
      SFLD-SELTEXT_M = 'TOTAL'.
      SFLD-SELTEXT_L = 'Total lead time in days'.
      SFLD-JUST =   'R' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'VSTELLE' .
      SFLD-SELTEXT_S = 'Premise'.
      SFLD-SELTEXT_M = 'Premise'.
      SFLD-JUST =   'L' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'LOGIKNR' .
      SFLD-SELTEXT_S = 'LogDev.no.'.
      SFLD-SELTEXT_M = 'Log. dev. no.'.
      SFLD-JUST =   'L' .
    SFLD-KEY  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'BIS' .
      SFLD-SELTEXT_M = 'Valid to'.
      SFLD-SELTEXT_L = 'Date at Which a Time Slice Expires'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'AB' .
      SFLD-SELTEXT_M = 'Valid from'.
      SFLD-SELTEXT_L = 'Date from which time slice is valid'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'ZWGRUPPE' .
      SFLD-SELTEXT_S = 'Reg. group'.
      SFLD-SELTEXT_M = 'Register group'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'EINBDAT' .
      SFLD-SELTEXT_S = 'Inst. date'.
      SFLD-SELTEXT_M = 'Install. date'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD.
      SFLD-FIELDNAME = 'AUSBDAT' .
      SFLD-SELTEXT_S = 'Remov.date'.
      SFLD-SELTEXT_M = 'Removal date'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'GERWECHS' .
      SFLD-SELTEXT_S = 'Reason'.
      SFLD-SELTEXT_M = 'Activity reason'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'DEVLOC' .
      SFLD-SELTEXT_S = 'Dev. loc.'.
      SFLD-SELTEXT_M = 'Device location'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'SPARTE' .
      SFLD-SELTEXT_S = 'Division'.
      SFLD-SELTEXT_M = 'Division'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'ANLART' .
      SFLD-SELTEXT_S = 'Inst. type'.
      SFLD-SELTEXT_M = 'Inst. type'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'HAUS' .
      SFLD-SELTEXT_S = 'Conn.obj.'.
      SFLD-SELTEXT_M = 'Connection obj.'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD .
      SFLD-FIELDNAME = 'VBSART' .
      SFLD-SELTEXT_S = 'Prem. type'.
      SFLD-SELTEXT_M = 'Premise type'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD.
      SFLD-FIELDNAME = 'ABBELNR' .
      SFLD-SELTEXT_S = 'Int.MRD ID'.
      SFLD-SELTEXT_M = 'Int. MR doc. ID'.
      SFLD-JUST =   'C' .
      SFLD-NO_OUT  = 'X' .
      APPEND SFLD TO ITFLD .
      CLEAR SFLD.
      SFLD-FIELDNAME = 'ABLESGR' .

Maybe you are looking for

  • Sharing files trouble: "..belongs to a domain..."

    Hello, I am trying to setup my business laptop to also network with my PC at home. I am able to access the internet without any trouble, but I am trying to enable file and printer sharing.  After running the network wizard on the PC, I try to run the

  • SSIS 2012 -Not Executing file from other server.

    Hi Experts ,  I am working on SQL 2012 I have a SSIS Package - 1) Execute SQL Task - calling Storeprocedure  my StoreProcesdure contain OpenRowser Query which Pull Data from Excel and Load into SQL Table. Scenario 1  On Development Server example IP:

  • Table access by index rowid taking more time

    Hi All I've a query like update tab1   set col1 = ( select col2 from                        tab2                  where tab1.id = tab2.id) table 1 has arnd 10,000 rows table 2 has arnd 1,700,000 rows and has a primay key on column id. This query is t

  • TP4 FileExplorer tree: change Folder icon when expanded/collapsed

    I am trying to create a tree similar with FileExplorer from the Demo application. I am trying to use two icons for every node: one for expanded node and another one for collapsed. I use a rowDisclosureListener tag rowDisclosureListener="#{menuBean.me

  • Need sql query logic for requirement

    Hi gurus, i have requirement. please find below details. For one item having lot of purchase orders,the output should display like that Item                        Po Numbers           FileName ========================================== A