设为首页 收藏本站
查看: 1388|回复: 0

[经验分享] SAP CRM BOL编程基础,代码+详细注释

[复制链接]

尚未签到

发表于 2019-2-3 11:07:35 | 显示全部楼层 |阅读模式
**************更新操作***************************  "让我们修改服务合同的描述"从结果列表获取现在的entity  "每个集拥有一个总是指向我们当前访问的记录的指针,通常我们在BOL的语言中称之为焦点"因此get current返回拥有焦点的对象,所以就是我们在上面的循环中曾经最后访问的对象 将会被下面的语句取得 lr_entity ?= lr_result->if_bol_bo_col~get_current( ).IF lr_entity IS BOUND.  "我们从不对initial状态的对象引用进行操作,这个检查在bol中是十分重要的  

  

  

  
  "我们能直接在这个lr_entity中使用字符串设置属性吗?
  

  
  "答案是不能,这是一个动态查询对象,通常这些类型的对象的所有的属性都是只读的
  

  
  "DESCRIPTION是BTAdminH对象的属性,我们需要使用relations获取它我们需要从MODEL中观察我们抵达目标对象所需要的关系是什么.事务代码GENIL_MODEL_BROWSER中可以浏览这些bol对象的关系
  

  
  "在我们的场景中,我们有lr_entity变量中的BTQRSrvcon作为源.这个对象有关系'聚合BTADV***vCon子级基数1'
  

  
  "将会给出对象BTOrder.
  

  

  
  "同样BTOrder有关系'组成 BTOrderHeader子级基数1', 通过它将取得对象BTAdminH,这个对象有一个属性‘DESCRIPTION’
  

  
  "当寻找关系时,观察关系的子级基数。如果子级基数是0...1,这个关系将会总是能获取到单一的entity。如果是0...n的话,这个关系将可以获取多个entity.
  

  

  
  " 如果子级基数是0...1,使用 GET RELATED ENTITY.
  

  
  " 如果子级基数是0...n,使用 GET_RELATED_ENTITIES.
  

  

  
  DATA: lr_order TYPE REF TO cl_crm_bol_entity.  "首先读取BTORDER
  

  
  "参数iv_mode将携带一个值'b',代表绕过缓冲区.
  

  
  "这意味着,框架将会忽视bol缓冲区中存在的值,通过触发相关的api从数据库读取目标entity的值。
  

  
  "这将降低性能,所以只应在需要的情况使用它,比如你在读取一个特别的、第一次读取的enetity。
  

  
  TRY.      CALL METHOD lr_entity->get_related_entity        EXPORTING
  

  
          iv_relation_name = 'BTADV***vCon'
  

  
          iv_mode          = cl_crm_bol_entity=>bypassing_buffer
  

  
        RECEIVING
  

  
          rv_result        = lr_order.    CATCH cx_crm_genil_model_error .  ENDTRY.  "我们取得了订单,接下来读取BTAdminH.
  

  

  
  DATA:  lr_header TYPE REF TO cl_crm_bol_entity.  IF lr_order IS BOUND.    TRY.        CALL setsetsssss v lr_order->get_related_entity          EXPORTING
  

  
            iv_relation_name = 'BTOrderHeader'
  

  
            iv_mode          = cl_crm_bol_entity=>bypassing_buffer
  

  
          RECEIVING
  

  
            rv_result        = lr_header.      CATCH cx_crm_genil_model_error .    ENDTRY.  ENDIF.  "获取到了BTadminH,之后修改它的DESCRIPTION属性.
  

  
  IF lr_header IS BOUND.    "在修改任何BOL的对象前,我们需要锁定它
  

  
    "这由lock方法完成
  

  
    IF  lr_header->lock( ) = abap_true.  "如果我们获取了锁, 接下来继续
  

  
      "我们使用set_* 方法来修改BOL对象的属性.
  

  
      lr_header->set_property_as_string( EXPORTING iv_attr_name = 'DESCRIPTION'
  

  
      iv_value = 'changed'  ).    ENDIF.    "一旦修改结束,我们需要通知框架这个改变已经发生
  

  
    "使用core类实现它
  

  
    lr_core->modify( ).    "接着从entity获取transaction,并且检查它是否可以保存
  

  

  
    DATA: lr_transaction TYPE REF TO if_bol_transaction_context.
  

  

  
    lr_transaction ?= lr_header->get_transaction( ).    IF lr_transaction IS BOUND.      IF lr_transaction->check_save_possible( ) EQ abap_true.        "如果可以保存,接下来保存transaction并且commit修改。
  

  
        IF lr_transaction->save( ) EQ abap_true.
  

  

  
          lr_transaction->commit( ).        ENDIF.        "我们修改了对象的描述,再次读取它,以获取新的值。
  

  
        lr_header->get_property_as_value( EXPORTING iv_attr_name = 'DESCRIPTION'
  

  
                 IMPORTING ev_result = lv_descr ).      ENDIF.    ENDIF.  ENDIF.ENDIF.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-671229-1-1.html 上篇帖子: SAP CRM 客户控制器与数据绑定 下篇帖子: SAP联席CEO:可能向甲骨文授权HANA平台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表