CRM开发总结1:线索增强程序
来源:互联网 发布:vip视频解析源码heml 编辑:程序博客网 时间:2024/05/17 00:03
效果
配置树
"最外层框架添加按钮
“增加BLOCK
METHOD eh_onzrefresh.
* Added by wizard: Handler for event 'ZREFRESH'*---------------------------初始化----------------------------*
DATA: lr_header TYPE REF TO cl_crm_bol_entity,
lr_btheaderpartnerset TYPE REF TO cl_crm_bol_entity,
lr_btpartner_pft_0006_main TYPE REF TO cl_crm_bol_entity,
lr_col TYPE REF TO if_bol_entity_col, "增强关系的对象集
lr_entity01 TYPE REF TO cl_crm_bol_entity,
it_kcmx TYPE STANDARD TABLE OF ztab0000av_bol_attr,
it_kcmx_new TYPE STANDARD TABLE OF ztab0000av_bol_attr,
wa_kcmx_new TYPE ztab0000av_bol_attr, "库存明细 ZEXT_BOL_RELAT00000U
wa_kcmx TYPE ztab0000av_bol_attr, "库存明细 ZEXT_BOL_RELAT00000U
wa_kchj TYPE ztab0000bf_bol_attr, "库存合计 ZEXT_BOL_RELAT00000Y
rv_result TYPE REF TO cl_crm_bol_entity,
lw_es_attributes TYPE crmst_adminh_btil,
lw_es_attributes_brfore TYPE crmst_adminh_btil,
lw_crmst_partner_btil TYPE crmst_partner_btil,
lr_property_acces TYPE REF TO if_bol_bo_property_access.
DATA:BEGIN OF lw_zsd021,
matnr TYPE matnr,
lfimg TYPE lfimg.
DATA END OF lw_zsd021.
DATA lt_zsd021 LIKE STANDARD TABLE OF lw_zsd021.
DATA:
lr_kcmx_new TYPE REF TO if_bol_entity_col,
lr_core TYPE REF TO cl_crm_bol_core, "CRM核心类
lr_transaction TYPE REF TO if_bol_transaction_context,
lv_lines TYPE sytabix.
lr_core = cl_crm_bol_core=>get_instance( ).
lr_core->start_up( 'BT' ).
lr_header ?= me->typed_context->btadminh->collection_wrapper->get_current( ).
*-----------------------------更新月份 START--------------------------------*
"月份取开始日期前6位
DATA lr_btheaderdatesset TYPE REF TO cl_crm_bol_entity.
DATA lr_btdatesallcust_sales TYPE REF TO cl_crm_bol_entity.
DATA lw_crmst_date_btil TYPE crmst_date_btil.
CALL METHOD lr_header->get_properties "去增强字段zzssyf
IMPORTING
es_attributes = lw_es_attributes.
IF lw_es_attributes-zzssyf IS INITIAL.
CALL METHOD lr_header->get_related_entity "取开始日期 位置:BTDatesAllCust_SALES <- BTHeaderDatesSet <- BTOrderHeader
EXPORTING
iv_relation_name = 'BTHeaderDatesSet'
RECEIVING
rv_result = lr_btheaderdatesset.
CALL METHOD lr_btheaderdatesset->get_related_entity
EXPORTING
iv_relation_name = 'BTDatesAllCust_SALES'
RECEIVING
rv_result = lr_btdatesallcust_sales.
lr_btdatesallcust_sales->get_properties( IMPORTING es_attributes = lw_crmst_date_btil ).
lw_es_attributes-zzssyf = lw_crmst_date_btil-fromdate+0(6).
CALL METHOD lr_header->set_properties
EXPORTING
is_attributes = lw_es_attributes.
ENDIF.
*-----------------------------更新月份 END--------------------------------*
CALL METHOD lr_header->get_related_entities "判断当前库存明细是否有值 ZEXT_BOL_RELAT00000U <- BTOrderHeader
EXPORTING
iv_relation_name = 'ZEXT_BOL_RELAT00000U'
RECEIVING
rv_result = lr_kcmx_new.
CALL METHOD lr_kcmx_new->size
RECEIVING
rv_result = lv_lines.
IF lv_lines = 0."若 库存明细BLOCK 为空,则初始化BLOCK ,否则刷新 金额 和 库存合计表
*-----------------------------库存明细 START--------------------------------*
TRY.
CALL METHOD lr_header->get_related_entity "取客户号partner_no BTPartner_PFT_0006_MAIN <- BTHeaderPartnerSet <- BTOrderHeader
EXPORTING
iv_relation_name = 'BTHeaderPartnerSet'
RECEIVING
rv_result = lr_btheaderpartnerset.
CATCH cx_crm_genil_model_error .
ENDTRY.
TRY.
CALL METHOD lr_btheaderpartnerset->get_related_entity
EXPORTING
iv_relation_name = 'BTPartner_PFT_0006_MAIN'
RECEIVING
rv_result = lr_btpartner_pft_0006_main.
CATCH cx_crm_genil_model_error .
ENDTRY.
CALL METHOD lr_btpartner_pft_0006_main->get_properties
IMPORTING
es_attributes = lw_crmst_partner_btil.
"ERP取发货数量
DATA: lt_siteselect TYPE TABLE OF siteselect INITIAL SIZE 0,
ls_siteselect TYPE siteselect.
CALL FUNCTION 'SMOF0_READ_SITESELECT' "取配置的目标系统
TABLES
to_siteselect = lt_siteselect.
READ TABLE lt_siteselect INTO ls_siteselect
WITH KEY sitetypeid = cl_smw1_siteprovider=>c_sitetype_r3oltp.
IF sy-subrc = 0.
CALL FUNCTION 'Z_CRM_GET_LIKP'
DESTINATION ls_siteselect-rfcdest
EXPORTING
kunnr = lw_crmst_partner_btil-partner_no
zyf = lw_es_attributes-zzssyf
TABLES
zsd021 = lt_zsd021.
ENDIF.
*-----------------------------库存明细 END--------------------------------*
*-----------------------------初期库存 START--------------------------------*
DATA:
lv_dyn_query TYPE REF TO cl_crm_bol_dquery_service,
lr_root TYPE REF TO cl_crm_bol_entity, "SR根对象
lr_partner TYPE REF TO cl_crm_bol_entity.
DATA:lv_result TYPE REF TO if_bol_entity_col,
lr_entity TYPE REF TO cl_crm_bol_entity,
wa_result TYPE crmst_query_r_opp_btil.
DATA: lt_parameters TYPE crmt_name_value_pair_tab,
ls_parameters TYPE crmt_name_value_pair.
lv_dyn_query = cl_crm_bol_dquery_service=>get_instance( 'BTQLeadDoc' ).
DATA lv_string TYPE string.
lv_dyn_query->insert_selection_param( iv_index = '1'
iv_attr_name = 'TEMPLATE_TYPE'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = 'D' )."设置取值模板
DATA lv_currdate TYPE sy-datum.
DATA lv_newdate TYPE sy-datum.
lv_currdate+0(6) = lw_es_attributes-zzssyf."取上个月单据的库存明细
lv_currdate+6(2) = '01'.
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
EXPORTING
currdate = lv_currdate
backmonths = 1
IMPORTING
newdate = lv_newdate.
lv_string = lw_crmst_partner_btil-partner_no.
CALL METHOD lv_dyn_query->add_selection_param "设置筛选条件
EXPORTING
iv_attr_name = 'BU_PARTNER'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = lv_string
* iv_high =
.
"月份设置为前一个月
lv_string = lv_newdate+0(6).
CALL METHOD lv_dyn_query->add_selection_param
EXPORTING
iv_attr_name = 'ZZSSYF'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = lv_string
* iv_high =
.
"状态设置为已过帐
CALL METHOD lv_dyn_query->add_selection_param
EXPORTING
iv_attr_name = 'STATUS_AREA'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = 'E0003ZCRMLEAD'
* iv_high =
.
DATA:
lr_btadvslea TYPE REF TO cl_crm_bol_entity,
lr_btorderheader TYPE REF TO cl_crm_bol_entity,
lr_kcmx TYPE REF TO if_bol_entity_col.
lv_result = lv_dyn_query->get_result( ).
lr_entity ?= lv_result->get_first( ).
IF lr_entity IS BOUND.
TRY.
CALL METHOD lr_entity->get_related_entity "取上月库存
EXPORTING
iv_relation_name = 'BTADVSLea'
RECEIVING
rv_result = lr_btadvslea.
CALL METHOD lr_btadvslea->get_related_entity
EXPORTING
iv_relation_name = 'BTOrderHeader'
RECEIVING
rv_result = lr_btorderheader.
CALL METHOD lr_btorderheader->get_related_entities
EXPORTING
iv_relation_name = 'ZEXT_BOL_RELAT00000U'
RECEIVING
rv_result = lr_kcmx.
CALL METHOD lr_kcmx->get_first
RECEIVING
rv_result = lr_property_acces.
WHILE lr_property_acces IS BOUND.
CALL METHOD lr_property_acces->get_properties
IMPORTING
es_attributes = wa_kcmx.
IF wa_kcmx-zzqmkcsl > 0.
APPEND wa_kcmx TO it_kcmx.
ENDIF.
CALL METHOD lr_kcmx->get_next
RECEIVING
rv_result = lr_property_acces.
ENDWHILE.
CATCH cx_crm_genil_model_error .
ENDTRY.
ENDIF.
*-----------------------------初期库存 END--------------------------------*
*-----------------------------整合数据 START--------------------------------*
LOOP AT it_kcmx INTO wa_kcmx.
wa_kcmx_new-zzcpbh = wa_kcmx-zzcpbh.
wa_kcmx_new-zzcqkcsl = wa_kcmx-zzqmkcsl.
APPEND wa_kcmx_new TO it_kcmx_new.
ENDLOOP.
LOOP AT lt_zsd021 INTO lw_zsd021.
READ TABLE it_kcmx_new INTO wa_kcmx_new WITH KEY zzcpbh = lw_zsd021-matnr.
IF sy-subrc = 0.
wa_kcmx_new-zzbyfhsl = lw_zsd021-lfimg.
MODIFY it_kcmx_new FROM wa_kcmx_new INDEX sy-tabix.
ELSE.
wa_kcmx_new-zzcpbh = lw_zsd021-matnr.
wa_kcmx_new-zzbyfhsl = lw_zsd021-lfimg.
APPEND wa_kcmx_new TO it_kcmx_new.
ENDIF.
CLEAR wa_kcmx_new.
ENDLOOP.
LOOP AT it_kcmx_new INTO wa_kcmx_new.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_kcmx_new-zzcpbh
IMPORTING
output = wa_kcmx_new-zzcpbh.
MODIFY it_kcmx_new FROM wa_kcmx_new.
ENDLOOP.
*-----------------------------整合数据 END----------------------------------*
*-----------------------------单价 START--------------------------------*
*产品编号=COMM_PRODUCT-PRODUCT_ID,
*COMM_PRODUCT-PRODUCT_GUID=CNCCRMPRCUS505-PRODUCT_GUID,
*销售组织=CNCCRMPRCUS505-SALES_ORG,
*分销渠道=CNCCRMPRCUS505-DIS_CHANNEL,
*销售办事处=CNCCRMPRCUS505-SALES_OFFICE
*CNCCRMPRCUS505-RELEASE_STATUS(发布状态) ='', CNCCRMPRCUS505-KSCHL(条件类型)=Z000,
*盘点日期在 CNCCRMPRCUS505-TIMESTAMP_FROM有效期自(截止前8位)和CNCCRMPRCUS505-TIMESTAMP_TO有效期自(截止前8位)之间,CNCCRMPRCUS505-KBETR金额
*添加修改:20160613
*CNCCRMPRCUS505-PRODUCT_GUID=COMM_PR_UNIT-PRODUCT_GUID,
*CNCCRMPRCUS505-KMEIN=COMM_PR_UNIT-UNIT;
*基本单价=【CNCCRMPRCUS505-KBETR/CNCCRMPRCUS505-KPEIN】*【COMM_PR_UNIT-NUMERATOR/COMM_PR_UNIT-DENOMINATOR】;
DATA lw_organ TYPE crmst_orgset_btil.
DATA lr_orgman TYPE REF TO cl_crm_bol_entity.
TRY.
CALL METHOD lr_header->get_related_entity "取组织BLOCK内容
EXPORTING
iv_relation_name = 'BTHeaderOrgmanSet'
RECEIVING
rv_result = lr_orgman.
CATCH cx_crm_genil_model_error.
ENDTRY.
CALL METHOD lr_orgman->get_properties
IMPORTING
es_attributes = lw_organ.
IF it_kcmx_new IS NOT INITIAL.
DATA lt_comm_product TYPE STANDARD TABLE OF comm_product.
DATA lw_comm_product TYPE comm_product.
SELECT * FROM comm_product INTO CORRESPONDING FIELDS OF TABLE lt_comm_product
FOR ALL ENTRIES IN it_kcmx_new
WHERE product_id = it_kcmx_new-zzcpbh.
DATA lt_cnccrmprcus505 TYPE STANDARD TABLE OF cnccrmprcus505.
DATA lw_cnccrmprcus505 TYPE cnccrmprcus505.
DATA lt_comm_pr_unit TYPE STANDARD TABLE OF comm_pr_unit.
DATA lw_comm_pr_unit TYPE comm_pr_unit.
DATA lt_t006a TYPE STANDARD TABLE OF t006a.
DATA lw_t006a TYPE t006a.
IF lt_comm_product IS NOT INITIAL .
SELECT * FROM cnccrmprcus505 INTO CORRESPONDING FIELDS OF TABLE lt_cnccrmprcus505
FOR ALL ENTRIES IN lt_comm_product
WHERE sales_org = lw_organ-sales_org
AND dis_channel = lw_organ-dis_channel
AND sales_office = lw_organ-sales_office
AND product = lt_comm_product-product_guid
AND release_stat = ''
AND kschl = 'Z000'.
DATA lt_comm_prshtext TYPE STANDARD TABLE OF comm_prshtext.
DATA lw_comm_prshtext TYPE comm_prshtext.
SELECT * FROM comm_prshtext INTO CORRESPONDING FIELDS OF TABLE lt_comm_prshtext
FOR ALL ENTRIES IN lt_comm_product
WHERE product_guid = lt_comm_product-product_guid
AND langu = sy-langu.
SELECT * FROM comm_pr_unit INTO CORRESPONDING FIELDS OF TABLE lt_comm_pr_unit
FOR ALL ENTRIES IN lt_comm_product
WHERE product_guid = lt_comm_product-product_guid
AND is_base_unit = 'X'.
IF lt_comm_pr_unit IS NOT INITIAL.
SELECT * FROM t006a INTO CORRESPONDING FIELDS OF TABLE lt_t006a
FOR ALL ENTRIES IN lt_comm_pr_unit
WHERE msehi = lt_comm_pr_unit-unit.
ENDIF.
ENDIF.
ENDIF.
*-----------------------------单价 END--------------------------------*
ELSE."刷新 金额 和 库存合计表
CALL METHOD lr_kcmx_new->get_first
RECEIVING
rv_result = lr_property_acces.
WHILE lr_property_acces IS BOUND.
CALL METHOD lr_property_acces->get_properties
IMPORTING
es_attributes = wa_kcmx_new.
APPEND wa_kcmx_new TO it_kcmx_new.
CALL METHOD lr_kcmx_new->get_next
RECEIVING
rv_result = lr_property_acces.
ENDWHILE.
ENDIF.
*-----------------------------整合数据 START--------------------------------*
""刷新 金额 和 库存合计表
CLEAR wa_kchj.
LOOP AT it_kcmx_new INTO wa_kcmx_new.
wa_kcmx_new-zzxh = sy-tabix.
READ TABLE lt_comm_product INTO lw_comm_product WITH KEY product_id = wa_kcmx_new-zzcpbh.
IF sy-subrc = 0.
READ TABLE lt_comm_prshtext INTO lw_comm_prshtext WITH KEY product_guid = lw_comm_product-product_guid.
IF sy-subrc = 0.
wa_kcmx_new-zzcpmc = lw_comm_prshtext-short_text.
ENDIF.
READ TABLE lt_cnccrmprcus505 INTO lw_cnccrmprcus505 WITH KEY product = lw_comm_product-product_guid.
IF sy-subrc = 0.
READ TABLE lt_comm_pr_unit INTO lw_comm_pr_unit WITH KEY product_guid = lw_comm_product-product_guid.
IF sy-subrc = 0.
*添加修改:20160613
*CNCCRMPRCUS505-PRODUCT_GUID=COMM_PR_UNIT-PRODUCT_GUID,
*CNCCRMPRCUS505-KMEIN=COMM_PR_UNIT-UNIT;
*基本单价=【CNCCRMPRCUS505-KBETR/CNCCRMPRCUS505-KPEIN】*【COMM_PR_UNIT-NUMERATOR/COMM_PR_UNIT-DENOMINATOR】;
wa_kcmx_new-zzdj = ( lw_cnccrmprcus505-kbetr / lw_cnccrmprcus505-kpein ) * ( lw_comm_pr_unit-numerator / lw_comm_pr_unit-denominator ).
READ TABLE lt_t006a INTO lw_t006a WITH KEY msehi = lw_comm_pr_unit-unit.
IF sy-subrc = 0.
wa_kcmx_new-zzdw = lw_t006a-msehl.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
wa_kcmx_new-zzbyfxl = wa_kcmx_new-zzcqkcsl - wa_kcmx_new-zzqmkcsl + wa_kcmx_new-zzbyfhsl.
wa_kcmx_new-zzcqkcje = wa_kcmx_new-zzdj * wa_kcmx_new-zzcqkcsl.
wa_kcmx_new-zzbyfhje = wa_kcmx_new-zzdj * wa_kcmx_new-zzbyfhsl.
wa_kcmx_new-zzqmkcje = wa_kcmx_new-zzdj * wa_kcmx_new-zzqmkcsl.
wa_kcmx_new-zzbyfxje = wa_kcmx_new-zzdj * wa_kcmx_new-zzbyfxl .
wa_kchj-zzcqkcslhj = wa_kchj-zzcqkcslhj + wa_kcmx_new-zzcqkcsl.
wa_kchj-zzcqkcjehj = wa_kchj-zzcqkcjehj + wa_kcmx_new-zzcqkcje.
wa_kchj-zzbyfhslhj = wa_kchj-zzbyfhslhj + wa_kcmx_new-zzbyfhsl.
wa_kchj-zzbyfhjehj = wa_kchj-zzbyfhjehj + wa_kcmx_new-zzbyfhje.
wa_kchj-zzqmkcslhj = wa_kchj-zzqmkcslhj + wa_kcmx_new-zzqmkcsl.
wa_kchj-zzqmkujehj = wa_kchj-zzqmkujehj + wa_kcmx_new-zzqmkcje.
wa_kchj-zzbyfxslhj = wa_kchj-zzbyfxslhj + wa_kcmx_new-zzbyfxl.
wa_kchj-zzbyfxjehj = wa_kchj-zzbyfxjehj + wa_kcmx_new-zzbyfxje.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = wa_kcmx_new-zzcpbh
IMPORTING
output = wa_kcmx_new-zzcpbh.
MODIFY it_kcmx_new FROM wa_kcmx_new.
ENDLOOP.
"整合后数据为 it_kcmx_new wa_kchj
*-----------------------------整合数据 END----------------------------------*
*-----------------------------写入数据 START--------------------------------*
DATA lv_entity_kcmx TYPE REF TO cl_crm_bol_entity.
DATA lv_entity_kchj TYPE REF TO cl_crm_bol_entity.
DATA lr_kchj TYPE REF TO if_bol_entity_col.
CALL METHOD lr_header->get_related_entities "在抬头组件中删除明细BLOCK数据
EXPORTING
iv_relation_name = 'ZEXT_BOL_RELAT00000U'
RECEIVING
rv_result = lr_kcmx_new.
CALL METHOD lr_kcmx_new->get_first
RECEIVING
rv_result = lv_entity_kcmx.
WHILE lv_entity_kcmx IS BOUND .
lv_entity_kcmx->delete( ).
CALL METHOD lr_kcmx_new->get_next
RECEIVING
rv_result = lv_entity_kcmx.
ENDWHILE.
DELETE it_kcmx_new WHERE zzcpbh IS INITIAL.
LOOP AT it_kcmx_new INTO wa_kcmx_new.
CALL METHOD lr_header->create_related_entity "写入明细
EXPORTING
iv_relation_name = 'ZEXT_BOL_RELAT00000U'
RECEIVING
rv_result = lv_entity_kcmx.
CALL METHOD lv_entity_kcmx->set_properties
EXPORTING
is_attributes = wa_kcmx_new.
ENDLOOP.
CALL METHOD lr_header->get_related_entity "写入合计
EXPORTING
iv_relation_name = 'ZEXT_BOL_RELAT00000Y'
RECEIVING
rv_result = lv_entity_kchj.
CALL METHOD lv_entity_kchj->set_properties
EXPORTING
is_attributes = wa_kchj.
*-----------------------------写入数据 END----------------------------------*
"清空变量
CLEAR lv_entity_kcmx.
CLEAR lv_entity_kchj.
CLEAR lr_kchj.
CLEAR it_kcmx_new.
CLEAR it_kcmx.
CLEAR lt_zsd021.
ENDMETHOD.
0 0
- CRM开发总结1:线索增强程序
- SAP CRM中间件增强(1)
- CRM事件增强
- CRM事件增强补遗
- 小程序开发总结1
- 基于SSH框架-CRM客户资源管理系统-简单小项目开发记录-CRM功能总结-01
- CRM开发总结2:BOL找字段层级关系
- 微信小程序开发实践经验总结(1)
- CRM项目技术总结
- CRM项目总结
- CRM项目总结
- sap crm 项目总结
- 网脉CRM系统总结
- CRM项目总结
- CRM项目总结
- 程序开发网站总结
- 学习程序开发总结
- 微信小程序开发总结
- CENTOS6.5彻底卸载MYSQL
- String ,StringBuffer和StringBuilder最佳用法
- [转]openfire的配置和逻辑简要
- Button按钮的倒计时实现的一个帮助类
- 直接使用CRecordset,不使用CRecordset的派生类
- CRM开发总结1:线索增强程序
- Python基础(一)(基于Python2.7)
- WPF中设置TextBox为空,背景为文字提示
- 关于通过注解反射实现findViewById(int x);的原理
- 【mybatis】mybatis产生过程和执行流程
- uuid in python
- 动态区间第k小 分块 O(nlogn*sqrt(nlogn))
- Xutils工具的使用
- openfire的启动流程