Created by Jerry Wang, last modified on Jul 19, 2014

根据PPR id搜索出对应的instance:

通过item relation拿到所有的item:

通过PRPItemVPRuleRel拿到该item所有的rule:

进而拿到所有的rule parameter:

使用如下代码打印指定ppr的所有rule信息:

class ZCL_CRM_PPR_TOOL definitionpublicfinalcreate public .
public section.class-methods CLASS_CONSTRUCTOR .class-methods GET_PRP_BY_IDimporting!IV_PRP_ID type CRMT_PRP_IDreturningvalue(RO_INSTANCE) type ref to CL_CRM_BOL_ENTITY .class-methods PRINT_ITEM_RULEimporting!IO_PRP_ROOT type ref to CL_CRM_BOL_ENTITY .class-methods INIT_LOG .class-methods INSERT_APP_LOGimporting!IV_ID type SYMSGNO!IV_VALUE type ANY optional!IV_VALUE2 type ANY optional!IV_VALUE3 type ANY optional!IV_VALUE4 type ANY optional .class-methods SAVE_APP_LOG .
protected section.
private section.class-data SO_BOL_CORE type ref to CL_CRM_BOL_CORE .class-data SO_APP_HANDLER type BALLOGHNDL .class-data ST_APP_LOG type CRMT_SOC_APP_LOG .
ENDCLASS.
CLASS ZCL_CRM_PPR_TOOL IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CRM_PPR_TOOL=>CLASS_CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>method CLASS_CONSTRUCTOR.so_bol_Core = cl_crm_bol_core=>get_instance( ).so_bol_core->load_component_set( 'PRP' ).init_log( ).endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CRM_PPR_TOOL=>GET_PRP_BY_ID
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_PRP_ID                      TYPE        CRMT_PRP_ID
* | [<-()] RO_INSTANCE                    TYPE REF TO CL_CRM_BOL_ENTITY
* +--------------------------------------------------------------------------------------</SIGNATURE>method GET_PRP_BY_ID.DATA:ls_query_parameters       TYPE genilt_query_parameters,lt_selection_parameter    TYPE genilt_selection_parameter_tab,ls_selection_parameter    TYPE genilt_selection_parameter.ls_query_parameters-MAX_HITS = 1.ls_selection_parameter-OPTION     = 'EQ'.ls_selection_parameter-ATTR_NAME  = 'PRP_ID'.ls_selection_parameter-SIGN       = 'I'.ls_selection_parameter-LOW        = iv_prp_id.APPEND ls_selection_parameter TO lt_selection_parameter.DATA(lo_collection) = so_bol_core->dquery( iv_query_name               = 'PRPAdvSearch'is_query_parameters         = ls_query_parametersit_selection_parameters     = lt_selection_parameter ).ASSERT lo_collection->size( ) = 1.ro_instance = lo_collection->get_first( ).endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CRM_PPR_TOOL=>INIT_LOG
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>method INIT_LOG.DATA:   ls_log   TYPE bal_s_log,ls_mdef  TYPE bal_s_mdef.ls_log-object    = 'CRM_PRP'.ls_log-subobject = 'UU_DELETE'.CALL FUNCTION 'BAL_LOG_CREATE'EXPORTINGi_s_log                 = ls_logIMPORTINGe_log_handle            = ls_mdef-log_handleEXCEPTIONSlog_header_inconsistent = 1OTHERS                  = 2.ASSERT sy-subrc = 0.CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_SET'EXPORTINGi_s_msg_defaults = ls_mdef.so_app_handler = ls_mdef-log_handle.endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CRM_PPR_TOOL=>INSERT_APP_LOG
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_ID                          TYPE        SYMSGNO
* | [--->] IV_VALUE                       TYPE        ANY(optional)
* | [--->] IV_VALUE2                      TYPE        ANY(optional)
* | [--->] IV_VALUE3                      TYPE        ANY(optional)
* | [--->] IV_VALUE4                      TYPE        ANY(optional)
* +--------------------------------------------------------------------------------------</SIGNATURE>method INSERT_APP_LOG.DATA: lv_log        TYPE bal_s_msg,lv_timestamp  TYPE timestampl,lv_value1     TYPE string,lv_value2     TYPE string,lv_value3     TYPE string,lv_value4     TYPE string.lv_log-msgid = 'ZPRP'.lv_log-msgno   = iv_id.lv_log-msgty   = 'I'.lv_value1      = iv_value.lv_value2      = iv_value2.lv_value3      = iv_value3.lv_value4      = iv_value4.lv_log-msgv1   = lv_value1.lv_log-msgv2   = lv_value2.lv_log-msgv3   = lv_value3.lv_log-msgv4   = lv_value4.GET TIME STAMP FIELD lv_timestamp.lv_log-time_stmp = lv_timestamp.APPEND lv_log TO st_app_log.endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CRM_PPR_TOOL=>PRINT_ITEM_RULE
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_PRP_ROOT                    TYPE REF TO CL_CRM_BOL_ENTITY
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD print_item_rule.DATA(item_collection) = io_prp_root->get_related_entities( iv_relation_name = 'PRPItemRel' ).DATA(item_iterator) = item_collection->get_iterator( ).DATA(item) = item_iterator->get_first( ).WHILE item IS NOT INITIAL.DATA(item_id) = item->get_property_as_string( 'PRP_I_ID' ).DATA(item_guid) = item->get_property_as_string( 'GUID' ).insert_app_log( iv_id = '000' iv_value = item_id iv_value2 = item_guid ).DATA(rule_collection) = item->get_related_entities( iv_relation_name = 'PRPItemVPRuleRel' ).IF rule_collection IS INITIAL OR rule_collection->size( ) = 0.item = item_iterator->get_next( ).CONTINUE.ENDIF.DATA(ruleset) = rule_collection->get_first( ).DATA(ruleset_guid) = ruleset->get_property_as_string( 'GUID' ).insert_app_log( iv_id = '002' iv_value = ruleset_guid  ).DATA(rule_paras) = ruleset->get_related_entities( iv_relation_name = 'PRPRuleParamRel' ).DATA(rule_iterator) = rule_paras->get_iterator( ).DATA(rule_para) = rule_iterator->get_first( ).WHILE rule_para IS NOT INITIAL.DATA(rule_guid) = rule_para->get_property_as_string( 'GUID' ).DATA(parent_guid) = rule_para->get_property_as_string( 'PARENT_GUID' ).DATA(rule_value) = rule_para->get_property_as_string( 'RULE_LOW' ).DATA(rule_name) = rule_para->get_property_as_string( 'FIELDNAME' ).insert_app_log( iv_id = '001' iv_value = rule_guid iv_value2 = parent_guidiv_value3 = rule_value iv_value4 = rule_name ).rule_para = rule_iterator->get_next( ).ENDWHILE.item = item_iterator->get_next( ).ENDWHILE.save_app_log( ).ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CRM_PPR_TOOL=>SAVE_APP_LOG
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>method SAVE_APP_LOG.DATA: ls_msg LIKE LINE OF st_app_log.LOOP AT st_app_log INTO ls_msg.CALL FUNCTION 'BAL_LOG_MSG_ADD'EXPORTINGi_log_handle = so_app_handleri_s_msg      = ls_msg.ENDLOOP.CHECK st_app_log IS NOT INITIAL.CALL FUNCTION 'BAL_DB_SAVE'EXPORTINGi_save_all = 'X'.init_log( ).endmethod.
ENDCLASS.

PPR mass create report

Created by Jerry Wang, last modified on Apr 14, 2014

可以使用该wiki介绍的report在系统里批量生成PPR数据:

指定需要生成的PPR 个数:

执行report后可以在status栏看到PPR的创建情况:

report执行完毕后会打印出生成的PPR 信息:

可以在UI上搜索出通过report创建的PPR:

SELECTION-SCREEN BEGIN OF BLOCK rad1
                          WITH FRAME TITLE host.
  PARAMETERS: p_pre type char20 OBLIGATORY,
              p_exc type abap_bool DEFAULT abap_false,
              p_o_pre type char20 OBLIGATORY DEFAULT 'ParentObj',
              p_o_txt type char20 OBLIGATORY DEFAULT 'Parent',
              p_rank type CRMT_PRP_IL_ADM_H-prp_rank.

SELECTION-SCREEN END OF BLOCK rad1.

SELECTION-SCREEN BEGIN OF BLOCK rad2
                          WITH FRAME TITLE child.
  PARAMETERS: c_pre type char20 OBLIGATORY,
              c_exc type abap_bool DEFAULT abap_false,
              c_o_pre type char20 OBLIGATORY DEFAULT 'ChildObj',
              c_o_txt type char20 OBLIGATORY DEFAULT 'Child',
              c_rank type CRMT_PRP_IL_ADM_H-prp_rank.

SELECTION-SCREEN END OF BLOCK rad2.

SELECTION-SCREEN BEGIN OF BLOCK rad3
                          WITH FRAME TITLE same.
  PARAMETERS:
              s_itm type char20 OBLIGATORY DEFAULT 'ITEMID',
              s_itmt type char30 OBLIGATORY DEFAULT 'ITEM Description',
              s_pro type comm_product-product_id OBLIGATORY DEFAULT 'ARNO_TEST004',
              s_sa  type CRMT_PRP_IL_ORGDATA-sales_org OBLIGATORY DEFAULT 'O 50000732',
              s_ch  type CRMT_PRP_IL_ORGDATA-DIS_CHANNEL OBLIGATORY DEFAULT '01',
              s_ca type CRMT_PRP_IL_PRODUCT-CATEGORY_ID OBLIGATORY DEFAULT 'BASE_FS_BNDL',
              s_des type string OBLIGATORY DEFAULT 'PRP Description',
              s_cat TYPE COMM_CATEGORY-CATEGORY_ID DEFAULT 'OBJ_0401' OBLIGATORY,
              s_fam TYPE COMM_PRODUCT-OBJECT_FAMILY DEFAULT '0401' OBLIGATORY,
              s_from type CRMT_PRP_IL_VP-date_valid_from OBLIGATORY,
              s_to type CRMT_PRP_IL_VP-date_valid_to OBLIGATORY.

SELECTION-SCREEN END OF BLOCK rad3.

SELECTION-SCREEN BEGIN OF BLOCK rad4
                          WITH FRAME TITLE run.
  PARAMETERS: count type i OBLIGATORY DEFAULT 1,
              start type i DEFAULT 0.

SELECTION-SCREEN END OF BLOCK rad4.

data: lo_core               type ref to cl_crm_bol_core,
      lo_collection         type ref to if_bol_entity_col,
      lo_root_entity        type ref to cl_crm_bol_entity,
      lr_PRPItemRel         type ref to cl_crm_bol_entity,
      lr_PRPItemProdRel     type ref to cl_crm_bol_entity,
      lr_category           type ref to cl_crm_bol_entity,
      lr_sale               type ref to cl_crm_bol_entity,
      lr_object             type ref to cl_crm_bol_entity,
      lr_account            type ref to cl_crm_bol_entity,
      lr_valid              type ref to cl_crm_bol_entity,
      lr_host               type ref to cl_crm_bol_entity,
      lr_reference          type ref to cl_crm_bol_entity,
      lr_handler            type ref to cl_crm_bol_entity,
      lo_transaction        type ref to if_bol_transaction_context,
      lr_fac                type ref to cl_crm_bol_entity_factory,
      lt_param              type crmt_name_value_pair_tab,
      ls_param              type crmt_name_value_pair,
      lv_success            type abap_bool,
      lv_input_invalid      type abap_bool,
      lv_header_failed      type abap_bool,
      lv_exclude            type abap_bool,
      lv_index              type string,
      lv_msg                type string,
      lv_mode               type i,
      lv_rank               type CRMT_PRP_IL_ADM_H-prp_rank,
      lv_p                  type string,
      lv_c                  type string,
      ls_prp                type CRMT_PRP_IL_ADM_H,
      lv_object_id          type comm_product-product_id,
      lv_object_descr       type string,
      lv_changed            type abap_bool,
      lo_glb_msg_cont       type ref to cl_crm_genil_global_mess_cont,
      lt_msg                type crmt_genil_message_tab,
      ls_msg                type crmt_genil_message.

CONSTANTS: c_mode_p TYPE i VALUE 1,
           c_mode_c TYPE i VALUE 2.

INITIALIZATION.
  host = 'Maintain Settings for Host PPR'.
  child = 'Maintain Settings for Referenced PPR'.
  same = 'These settings are shared with Host and Referenced PPR'.
  run = 'Specify Mass Create Option'.

START-OF-SELECTION.

lo_core = cl_crm_bol_core=>get_instance( ).
lo_core->load_component_set( 'PRP' ).
lo_core->load_component_set( 'PROD_ALL' ).
lo_transaction = lo_core->get_transaction( ).
PERFORM check_input.
CHECK lv_input_invalid = abap_false.
PERFORM main.

FORM create_prp_header USING prp_id TYPE char20 CHANGING prp TYPE REF TO cl_crm_bol_entity.

DATA: lv_ppr_id TYPE  CRMT_PRP_IL_ADM_H-prp_id.

lr_fac   = lo_core->get_entity_factory( 'PRPHeader' ).
  clear: lt_param,prp,lv_header_failed, lv_ppr_id,lv_rank, lv_exclude.

ls_param-name = 'PRP_ID'.
  IF lv_mode = c_mode_p.
     CONCATENATE p_pre lv_index INTO lv_ppr_id.
     lv_rank = p_rank.
     lv_exclude = p_exc.
  ELSE.
     CONCATENATE c_pre lv_index INTO lv_ppr_id.
     lv_rank = c_rank.
     lv_exclude = c_exc.
  ENDIF.
  ls_param-value = lv_ppr_id.
  append ls_param to lt_param.

ls_param-name = 'PRP_TYPE'.
  ls_param-value = '0010'.
  append ls_param to lt_param.

ls_param-name = 'DESCRIPTION'.
  CONCATENATE s_des lv_index INTO ls_param-value.
  append ls_param to lt_param.

ls_param-name = 'PRP_EXCLUSION_H'.
  ls_param-value = lv_exclude.
  append ls_param to lt_param.

IF lv_rank IS NOT INITIAL.
     ls_param-name = 'PRP_RANK'.
     ls_param-value = lv_rank.
     APPEND ls_param TO lt_param.
  ENDIF.

prp = lr_fac->create( lt_param ).

if prp is initial.
    PERFORM display_msg.
    lv_header_failed = abap_true.
  ELSE.
    lr_sale = prp->create_related_entity( 'PRPOrgDSalesOrgRel' ).
    lr_sale->set_property( iv_attr_name = 'SALES_ORG' iv_value = s_sa ).
    lr_sale->set_property( iv_attr_name = 'DIS_CHANNEL' iv_value = s_ch ).
  ENDIF.
ENDFORM.

FORM create_validity.
  lr_valid = lr_prpitemrel->create_related_entity( 'PRPItemVPFromToRel' ).
  CHECK lr_valid IS NOT INITIAL.
  lr_valid->set_property( iv_attr_name = 'DATE_VALID_FROM' iv_value = s_from ).
  lr_valid->set_property( iv_attr_name = 'DATE_VALID_TO' iv_value = s_to ).
  lo_core->modify( ).
ENDFORM.

FORM create_prp_item USING prp_header TYPE REF TO cl_crm_bol_entity.
  DATA: lv_item_id TYPE CRMT_PRP_IL_ADM_I-prp_i_id,
        lv_item_text type CRMT_PRP_IL_ADM_I-DESCRIPTION.

lr_PRPItemRel = prp_header->get_related_entity( 'PRPItemRel' ).
  CHECK lr_PRPItemRel IS NOT INITIAL.
  CONCATENATE s_itm lv_index INTO lv_item_id.
  CONCATENATE s_itmt lv_index INTO lv_item_text.
  lr_PRPItemRel->set_property( iv_attr_name = 'PRP_I_ID' iv_value = lv_item_id ).
  lr_PRPItemRel->set_property( iv_attr_name = 'PRP_I_TYPE' iv_value = '1' ).
  lr_PRPItemRel->set_property( iv_attr_name = 'DESCRIPTION' iv_value = lv_item_text ).
  lr_PRPItemRel->set_property( iv_attr_name = 'LANGUAGE' iv_value = 'EN' ).
  lo_core->modify( ).
ENDFORM.

FORM create_item_product.
  lr_PRPItemProdRel = lr_PRPItemRel->create_related_entity( 'PRPItemProdRel' ).

CHECK lr_PRPItemProdRel IS NOT INITIAL.
  lr_PRPItemProdRel->set_property( iv_attr_name = 'PRODUCT_ID' iv_value = s_pro ).
  lr_PRPItemProdRel->set_property( iv_attr_name = 'PRODUCT_ID_TYPE' iv_value = 'PRODUCT_ID' ).
  lr_PRPItemProdRel->set_property( iv_attr_name = 'PRODUCT_TYPE' iv_value = '01' ).
  lr_PRPItemProdRel->set_property( iv_attr_name = 'TYPE' iv_value = '1' ).
  lo_core->modify( ).
ENDFORM.

FORM create_category.
  lr_category = lr_prpitemrel->create_related_entity( 'PRPItemProdCategoryRel' ).
  CHECK lr_category IS NOT INITIAL.
  lr_category->set_property( iv_attr_name = 'CATEGORY_ID' iv_value = s_ca ).
  lo_core->modify( ).
ENDFORM.

FORM create_prp USING id TYPE char20 CHANGING pref TYPE REF TO cl_crm_bol_entity.
   PERFORM create_prp_header USING id CHANGING pref.
   CHECK lv_header_failed = abap_false.
   PERFORM create_prp_item USING pref.
   PERFORM create_item_product.
   PERFORM create_item_obj.
   PERFORM create_category.
   PERFORM create_validity.
   PERFORM save_single.
ENDFORM.

FORM main.
   DO count TIMES.
     lv_index = sy-index + start.
     lv_mode = c_mode_p.
     PERFORM create_prp USING p_pre CHANGING lr_host.
     lv_mode = c_mode_c.
     PERFORM create_prp USING c_pre CHANGING lr_reference.
     PERFORM append_ref_prp USING lr_host.
     PERFORM save_single.
     PERFORM output.
     lo_core->reset( ).
   ENDDO.
ENDFORM.

FORM output.
     CLEAR: lv_p, lv_c.
     lv_p = p_pre && lv_index.
     lv_c = c_pre && lv_index.
     CONCATENATE 'Host PPR: ' lv_p ' Reference PPR: ' lv_c INTO lv_msg.
     WRITE:/ lv_msg COLOR COL_POSITIVE INTENSIFIED ON.
     PERFORM display_progress USING sy-index count lv_msg.
ENDFORM.

FORM create_object.
  DATA: lr_fac_object TYPE ref to cl_crm_bol_entity_factory.
        lr_fac_object   = lo_core->get_entity_factory( 'Product' ).

PERFORM get_obj_id.
  clear lt_param.
  ls_param-name = 'PRODUCT_ID'.
  ls_param-value = lv_object_id.

APPEND ls_param TO lt_param.

ls_param-name = 'PRODUCT_TYPE'.
  ls_param-value = '01'.
  APPEND ls_param TO lt_param.

ls_param-name = 'ROOT_CAT_ID'.
  ls_param-value = s_cat.
  APPEND ls_param TO lt_param.

ls_param-name = 'ROOT_HIER_ID'.
  ls_param-value = 'R3PRODSTYP'.
  APPEND ls_param TO lt_param.

ls_param-name = 'SHORT_TEXT'.
  ls_param-value = lv_object_descr.
  APPEND ls_param TO lt_param.

ls_param-name = 'OBJECT_FAMILY'.
  ls_param-value = s_fam.
  APPEND ls_param TO lt_param.

lr_fac_object->create( lt_param ).

ENDFORM.

FORM get_obj_id.
   CLEAR: lv_object_id, lv_object_descr.
   IF lv_mode = c_mode_p.
      CONCATENATE p_o_pre lv_index INTO lv_object_id.
      CONCATENATE p_o_txt lv_index INTO lv_object_descr.
   ELSE.
      CONCATENATE c_o_pre lv_index INTO lv_object_id.
      CONCATENATE p_o_txt lv_index INTO lv_object_descr.
   ENDIF.
ENDFORM.

FORM create_item_obj.

lr_object = lr_prpitemrel->create_related_entity( 'PRPItemProdIndObjectRel' ).
CHECK lr_object IS NOT INITIAL.

PERFORM create_object.
lr_object->set_property( iv_attr_name = 'TYPE' iv_value = '30' ).
lr_object->set_property( iv_attr_name = 'PRODUCT_ID' iv_value = lv_object_id ).
lr_object->set_property( iv_attr_name = 'PRODUCT_ID_TYPE' iv_value = 'PRODUCT_ID' ).
lr_object->set_property( iv_attr_name = 'PRODUCT_TYPE' iv_value = '01' ).
lo_core->modify( ).
ENDFORM.

FORM append_ref_prp USING parent TYPE REF TO cl_crm_bol_entity.

lr_handler = parent->get_related_entity( 'PRPItemRel' ).
  lr_handler = lr_handler->create_related_entity( 'PRPItemVPPRPRel' ).
  CHECK lr_handler IS NOT INITIAL.
  CONCATENATE c_pre lv_index INTO lv_c.
  lr_handler->set_property( iv_attr_name = 'REF_PRP_ID' iv_value = lv_c ).
  lo_core->modify( ).
ENDFORM.

FORM save_single.
  lv_changed = lo_transaction->check_save_needed( ).

check lv_changed eq abap_true.
  lv_success = lo_transaction->save( ).
  if lv_success = abap_true.
     lo_transaction->commit( ).
  else.
     lo_transaction->rollback( ).
     PERFORM display_msg.
  ENDIF.

ENDFORM.

FORM display_msg.
  lo_glb_msg_cont = lo_core->get_global_message_cont( ).
  call method lo_glb_msg_cont->if_genil_message_container~get_messages
    exporting
      iv_message_type = if_genil_message_container=>mt_all
    importing
      et_messages     = lt_msg.
  loop at lt_msg into ls_msg.
    write:/ ls_msg-message.
  endloop.
ENDFORM.

FORM check_input.
   IF count <= 0 OR count > 100000.
      WRITE:/ 'Specify number of PPR you want to mass create: between 1 and 100000' COLOR COL_NEGATIVE INTENSIFIED ON.
      lv_input_invalid = abap_true.
   ENDIF.

IF start < 0 OR start > 100000.
      WRITE:/ 'Specify start index: between 1 and 100000' COLOR COL_NEGATIVE INTENSIFIED ON.
      lv_input_invalid = abap_true.
   ENDIF.
ENDFORM.

FORM display_progress USING current type i total type i text type string.
   DATA: percent TYPE i.

percent = current * 100 / total.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
        PERCENTAGE    = percent
        text          = text.
ENDFORM.

PPR data model相关推荐

  1. An eventually consistent data model for Erlang (and Riak)

    CAP理论指出:一个分布式系统不可能同时满足一致性(Consistency).可用性(Availibility)和分区容忍性(Partition Tolerance)这三个需求,最多只能同时满足其中的 ...

  2. vs2010下使用ADO.NET Entity Data Model

    使用vs2010中的mvc3创建项目,同时想使用ADO.NET Entity Data Model来做数据库访问,可是创建项目后中不到 ADO.NET Entity Data Model. 一下是解决 ...

  3. ADO.NET Entity Data Model入门实例

    ADO.NET Entity Data Model入门实例 快速开发一个网站,最繁琐的地方可能要算数据库访问和ORM了,还好.net中这个很强大,可以省去好多体力劳动. 这里就给个快速使用ADO.NE ...

  4. 四、物理数据模型PDM(Physical Data Model )

    一.     PDM 介绍 物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设 ...

  5. SAP Cloud SDK‘s Virtual Data Model

    官网链接 SAP S/4HANA Cloud 和 On-Premise 公开的大部分服务都是 OData 服务. OData 是一种 RESTful API 协议,具有两个关键特性: 每个服务都由元数 ...

  6. Entity Data Model (EDM) 深入分析, Part 3

    EntityClient 实体框架(Entity Framework)在ADO.NET 3.5 提供程序的基础上引入新的 ADO.NET 提供程序 EntityClient.Entity-Client ...

  7. 大数据入门9:半结构化数据模型(Semi-structured Data Model)

    文章目录 半结构化数据模型(Semi-structured Data Model) 1. 几种数据模型 2. 半结构化模型特征 3. XML和JSON 4. 树状数据结构(Tree Data Stru ...

  8. 图解图库JanusGraph系列-一文知晓“图数据“底层存储结构(JanusGraph data model)

    图解图库JanusGraph系列-一文知晓"图数据"底层存储结构(JanusGraph data model) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新 图数据 ...

  9. DSF data model

    Data Model指的是由DSF服务检索的数据的自然结构,创建一个debugger的用户接口的一个巨大挑战是:目标上可用的数据量远远大于实际提供给用户的数量.因此,调试服务需要将数据分解为具有适当粒 ...

最新文章

  1. 自己动手调试Android源码(超简单)
  2. Failed to resolve: 之一
  3. postgres复制表结构
  4. 扫地机器人什么牌子好?专业人士推荐这五款高端产品
  5. jQuery来实现一个ajax实例
  6. Flutter APP UI Components
  7. MySQL 5.5 到MySQL 5.6半同步复制(SSL)
  8. C#获取程序运行时间
  9. echarts全国城市经纬坐标json文件
  10. 耐得住寂寞,拥得了繁华
  11. 如何升级maven版本
  12. audio音频使用天坑
  13. LeetCode——150. 逆波兰表达式求值(Evaluate Reverse Polish Notation)[中等]——分析及代码(Java)
  14. 那些令人发燥的JAVA虚引用
  15. 稀里糊涂的解决了 cuda 和cudnn的安装以及conda安装pytorch出现的torch.cuda.is_available()为false的问题
  16. 由于高精度事件计时器(HPET)驱动过时导致AMD机器装Win10的卡死蓝屏问题记录
  17. pentaho SPARK
  18. 写给那些冷门专业的大学生,敢问出路在何方?
  19. 大一学生HTML个人网页作业作品——火影忍者动漫7页面带特效带轮播(HTML+CSS+JavaScript)
  20. 简单了解认识通信过程中的物理层

热门文章

  1. Python输出中文乱码问题
  2. C# 路由(Route)
  3. the Differences between abstract class interface in C#接口和抽象类的区别
  4. Spring中DispacherServlet与WebApplicationContext、ServletContext的关系和工作机制
  5. sklearn自学指南(part44)--生成数据集
  6. python观察日志(part19)--关于iPython中的In[]和Out[]
  7. python基础(part10)--函数
  8. python sort、sorted 高级用法
  9. SAP HANA Schemas 和 HDI Containers
  10. TypeScript 里的枚举类型 enum