用代碼查找包含在SAP CRM appointment里的business partner

  • 2020 年 1 月 21 日
  • 筆記

REPORT ZSEARCH_BP_IN_APPOINTMENT.          DATA: lv_use_es             TYPE char1.      DATA: lv_cursor             TYPE cursor.      DATA: lv_orderby            TYPE string.        DATA: lv_select_statement             TYPE string.      DATA: lt_select_statement   TYPE crmt_bp_odata_string_t.      DATA: lt_from_statement     TYPE crmt_bp_odata_string_t.      DATA: lt_where_statement    TYPE crmt_bp_odata_string_t.        FIELD-SYMBOLS: <lf_sel_opt>       TYPE /iwbep/s_cod_select_option.      FIELD-SYMBOLS: <lt_result_data>   TYPE STANDARD TABLE.      FIELD-SYMBOLS: <lt_package_data>  TYPE STANDARD TABLE.        DATA: lr_result_data       TYPE REF TO data.      DATA: lr_package_data      TYPE REF TO data.          DATA: lv_more_records_on_db           TYPE abap_bool.        DATA: lt_result TYPE crmt_bp_odata_account_sel_t,            lr_result TYPE REF TO crmt_bp_odata_account_sel_t.      DATA: lv_package_size TYPE i VALUE 80.      DATA: it_authgroup_range TYPE bup_augr_range_t,            ls_authgroup_range LIKE LINE OF it_authgroup_range.        GET REFERENCE OF lt_result INTO lr_result.        ASSIGN lr_result->* TO <lt_package_data>.        ls_authgroup_range-sign = 'I'.      ls_authgroup_range-option = 'EQ'.      APPEND ls_authgroup_range TO it_authgroup_range.        ls_authgroup_range-low = 'RTRD'.      APPEND ls_authgroup_range TO it_authgroup_range.        lv_select_statement = `account~partner      AS account_id, account~partner_guid AS account_guid, `      && `account~name_org1    AS name1, account~mc_name1     AS mc_name1, account~name_org2, account~name_last,`      && `account~name_first, account~name_grp1, account~name_grp2, `      && `account~title, account~title_aca1, account~birthdt      AS birthdate,`      && ` type AS category, account~xpcpt, account~persnumber`.        APPEND 'but000 AS account' TO lt_from_statement.        APPEND 'account~xdele = @space' TO lt_where_statement.        IF 0 = 1.        APPEND 'AND account~augrp IN @it_authgroup_range' TO lt_where_statement.      ENDIF.        lv_orderby = 'mc_name1 ASCENDING'.        OPEN CURSOR WITH HOLD @lv_cursor FOR         SELECT DISTINCT (lv_select_statement)              FROM (lt_from_statement)              WHERE (lt_where_statement)              ORDER BY (lv_orderby).          DO.        FETCH NEXT CURSOR @lv_cursor              INTO CORRESPONDING FIELDS OF TABLE @<lt_package_data>              PACKAGE SIZE @lv_package_size.          IF sy-subrc = 0.          IF lines( <lt_package_data> ) >=   80.            lv_more_records_on_db       =    abap_true.          ENDIF.          EXIT.        ENDIF.      ENDDO.      CLOSE CURSOR @lv_cursor.

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":