Showing posts with label BOL Programming. Show all posts
Showing posts with label BOL Programming. Show all posts

How to use BOL Query Service in CRM 7.0

This simple program is used to demonstrate how to use SAP BOL Query service in CRM 7.0

The Code :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
*&---------------------------------------------------------------------*
*& Report  ZTEST_SB_BOL_READ
*&
*&---------------------------------------------------------------------*
*&***********DEMO Code for http://abap-explorer.blogspot.com/***********
*&
*&---------------------------------------------------------------------*
 
REPORT  ztest_sb_bol_read.
DATA :v_bol_core TYPE REF TO cl_crm_bol_core,
      v_qs TYPE REF TO cl_crm_bol_query_service,
      v_iterator TYPE REF TO if_bol_entity_col_iterator,
      v_search_result_coll TYPE REF TO if_bol_entity_col,
      v_btorder TYPE REF TO cl_crm_bol_entity,
      v_btheader TYPE REF TO cl_crm_bol_entity.
 
DATA: wa_btADMINH TYPE CRMST_ADMINH_BTIL,
      i_btadminh TYPE STANDARD TABLE OF CRMST_ADMINH_BTIL INITIAL SIZE 0.
 
DATA: v_alv TYPE REF TO cl_salv_table,
      v_columns TYPE REF TO cl_salv_columns_table.
 
PARAMETERS: p_bp TYPE bu_partner OBLIGATORY.
 
AT SELECTION-SCREEN OUTPUT.
  DATA: l_i_seltexts TYPE STANDARD TABLE OF rsseltexts INITIAL SIZE 0,
        l_wa_seltexts TYPE rsseltexts.
 
  CLEAR l_wa_seltexts.
  l_wa_seltexts-name = 'P_BP'.
  l_wa_seltexts-kind = 'P'.
  l_wa_seltexts-text = 'Business Partner'.
  APPEND l_wa_seltexts TO l_i_seltexts.
 
  CALL FUNCTION 'SELECTION_TEXTS_MODIFY'
    EXPORTING
      program                     = sy-repid
    TABLES
      seltexts                    = l_i_seltexts
    EXCEPTIONS
      program_not_found           = 1
      program_cannot_be_generated = 2
      OTHERS                      = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
 
START-OF-SELECTION.
 
  v_bol_core = cl_crm_bol_core=>get_instance( ).
  v_bol_core->start_up( 'CRMIC_DEFAULT' ).
  v_qs = cl_crm_bol_query_service=>get_instance( 'BTQuery1O' ).
 
  CALL METHOD v_qs->set_property
    EXPORTING
      iv_attr_name = 'BP_NUMBER'
      iv_value     = p_bp.
 
  v_search_result_coll = v_qs->get_query_result( ).
  IF v_search_result_coll IS BOUND.
    v_iterator = v_search_result_coll->get_iterator( ).
  ENDIF.
  IF v_iterator IS BOUND.
    v_btorder = v_iterator->get_first( ).
  ENDIF.
 
  WHILE v_btorder IS BOUND.
    v_btheader = v_btorder->get_related_entity( 'BTOrderHeader' ).
    v_btheader->get_properties( IMPORTING es_attributes = wa_btadminh ).
 
      APPEND wa_btadminh TO i_btadminh.
    v_btorder = v_iterator->get_next( ).
  ENDWHILE.
 
END-OF-SELECTION.
 
  IF i_btadminh IS NOT INITIAL.
 
    TRY.
        CALL METHOD cl_salv_table=>factory
          IMPORTING
            r_salv_table = v_alv
          CHANGING
            t_table      = i_btadminh.
      CATCH cx_salv_msg .                               "#EC NO_HANDLER
 
    ENDTRY.
 
    v_columns = v_alv->get_columns( ).
    v_columns->set_optimize( abap_true ).
    v_alv->display( ).
 
 
  ELSE.
    MESSAGE i001(00) WITH 'No data found!'.
    LEAVE LIST-PROCESSING.
  ENDIF.

When tested :