zoukankan      html  css  js  c++  java
  • the comparison report with policy in different MC.(不同系统之间的RFC调用)

    *&---------------------------------------------------------------------*
    *& Report  ZDM_ICM_PFO_COMPARISON
    *&---------------------------------------------------------------------*
    *&Created by James on 2018/05/30
    *&---------------------------------------------------------------------*
    *& the comparison report with policy in different MC.
    *&---------------------------------------------------------------------*
    
    REPORT  ZDM_ICM_PFO_COMPARISON.
    TABLES:ZDM_COMM_CONTR.
    *&---------------------------------------------------------------------*
    *&  DATA DEFINE
    *&---------------------------------------------------------------------*
    TYPES:
      BEGIN OF TY_POLNR,
        POLNR TYPE CHAR10,
      END OF TY_POLNR,
      TT_POLNR TYPE TABLE OF TY_POLNR,
    
      BEGIN OF TY_COMM_CONTR,
        POLNR            TYPE   CHAR10,
        COVNR            TYPE   CHAR10,
        COMM_CONTRNR     TYPE   CHAR20,
        COMM_ROLE        TYPE   CHAR4,
        MC               TYPE   CHAR5,
        DIR_PERC         TYPE   DEC5,
        INDIR_PERC       TYPE   DEC5,
        VALID_FR         TYPE   DATS,
        VALID_TO         TYPE   DATS,
        OWNER_FLG        TYPE   CHAR1,
        PREV_CONTRNR     TYPE   CHAR20,
      END OF TY_COMM_CONTR,
      TT_COMM_CONTR TYPE SORTED TABLE OF TY_COMM_CONTR WITH UNIQUE KEY POLNR
                                                                       COMM_CONTRNR
                                                                       COMM_ROLE.
    DATA:
      POLNR TYPE CHAR10,
      GT_I  TYPE TABLE OF TY_COMM_CONTR,
      GT_D  TYPE TABLE OF TY_COMM_CONTR.
    *&---------------------------------------------------------------------*
    *&  PARAMETERS DEFINITION
    *&---------------------------------------------------------------------*
    SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.
    SELECT-OPTIONS:
      P_POLNR FOR POLNR OBLIGATORY.
    PARAMETERS:
      P_MC_D  TYPE CHAR10 OBLIGATORY,
      P_MC_I  TYPE CHAR10 OBLIGATORY,
      P_DEST  TYPE RFCDES-RFCDEST.
    SELECTION-SCREEN END OF BLOCK B01.
    *&---------------------------------------------------------------------*
    *&  INITIALIZATION
    *&---------------------------------------------------------------------*
    INITIALIZATION.
      CLEAR:
        GT_I,
        GT_D.
    *&---------------------------------------------------------------------*
    *&  START-OF-SELECTION
    *&---------------------------------------------------------------------*
    START-OF-SELECTION.
      PERFORM GET_DATA.
      PERFORM COMPARE_DATA.
    
    *&---------------------------------------------------------------------*
    *&      Form  GET_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM GET_DATA .
      DATA:
        LT_MC_D TYPE  TT_COMM_CONTR,
        LT_MC_I TYPE  TT_COMM_CONTR.
    
      SELECT POLNR
             COVNR
             COMM_CONTRNR
             COMM_ROLE
             MC
             DIR_PERC
             INDIR_PERC
             VALID_FR
             VALID_TO
             OWNER_FLG
             PREV_CONTRNR
        INTO CORRESPONDING FIELDS OF TABLE LT_MC_D
        FROM ZDM_COMM_CONTR
        WHERE MC     =  P_MC_D
        AND   POLNR  IN P_POLNR.
    
      SELECT POLNR
             COVNR
             COMM_CONTRNR
             COMM_ROLE
             MC
             DIR_PERC
             INDIR_PERC
             VALID_FR
             VALID_TO
             OWNER_FLG
             PREV_CONTRNR
         INTO CORRESPONDING FIELDS OF TABLE LT_MC_I
        FROM  ZDM_COMM_CONTR
        WHERE MC     =  P_MC_I
        AND   POLNR  IN P_POLNR.
    
       IF LT_MC_I IS NOT INITIAL AND
          LT_MC_D IS NOT INITIAL.
         GT_I = LT_MC_I.
         GT_D = LT_MC_D.
       ELSE.
        MESSAGE 'Can not found any data' TYPE 'E'.
       ENDIF.
    
    ENDFORM.                    " GET_DATA
    *&---------------------------------------------------------------------*
    *&      Form  COMPARE_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM COMPARE_DATA .
      DATA:
        LT_MC_D  TYPE TT_COMM_CONTR,
        LT_MC_I  TYPE TT_COMM_CONTR,
        LT_POLNR TYPE TABLE OF TY_POLNR,
        LS_POLNR TYPE TY_POLNR.
    
      FIELD-SYMBOLS:
        <FS_D> TYPE TY_COMM_CONTR,
        <FS_I> TYPE TY_COMM_CONTR.
    
      CLEAR:
       LT_MC_D,
       LT_MC_I,
       LT_POLNR,
       LS_POLNR.
      UNASSIGN:
        <FS_D>,
        <FS_I>.
    
      LT_MC_I = GT_I.
      LT_MC_D = GT_D.
    
      LOOP AT LT_MC_I ASSIGNING <FS_I>.
        READ TABLE LT_MC_D ASSIGNING <FS_D>
          WITH TABLE KEY POLNR         = <FS_I>-POLNR
                         COMM_CONTRNR  = <FS_I>-COMM_CONTRNR
                         COMM_ROLE     = <FS_I>-COMM_ROLE.
        IF SY-SUBRC = 0 .
    
    *     Has difference
          IF <FS_I>-COVNR        <> <FS_D>-COVNR        OR
             <FS_I>-DIR_PERC     <> <FS_D>-DIR_PERC     OR
             <FS_I>-INDIR_PERC   <> <FS_D>-INDIR_PERC   OR
             <FS_I>-VALID_FR     <> <FS_D>-VALID_FR     OR
             <FS_I>-VALID_TO     <> <FS_D>-VALID_TO     OR
             <FS_I>-OWNER_FLG    <> <FS_D>-OWNER_FLG    OR
             <FS_I>-PREV_CONTRNR <> <FS_D>-PREV_CONTRNR .
    
             LS_POLNR-POLNR      =  <FS_I>-POLNR.
             APPEND LS_POLNR TO LT_POLNR.
          ENDIF.
        ELSE.
          LS_POLNR-POLNR = <FS_I>-POLNR.
          APPEND LS_POLNR TO LT_POLNR.
        ENDIF.
        CLEAR LS_POLNR.
      ENDLOOP.
    
      LOOP AT LT_MC_D ASSIGNING <FS_D>.
        READ TABLE LT_MC_I ASSIGNING <FS_I>
          WITH TABLE KEY POLNR         = <FS_D>-POLNR
                         COMM_CONTRNR  = <FS_D>-COMM_CONTRNR
                         COMM_ROLE     = <FS_D>-COMM_ROLE.
        IF SY-SUBRC = 0 .
    *     Has difference
          IF <FS_I>-COVNR        <> <FS_D>-COVNR        OR
             <FS_I>-DIR_PERC     <> <FS_D>-DIR_PERC     OR
             <FS_I>-INDIR_PERC   <> <FS_D>-INDIR_PERC   OR
             <FS_I>-VALID_FR     <> <FS_D>-VALID_FR     OR
             <FS_I>-VALID_TO     <> <FS_D>-VALID_TO     OR
             <FS_I>-OWNER_FLG    <> <FS_D>-OWNER_FLG    OR
             <FS_I>-PREV_CONTRNR <> <FS_D>-PREV_CONTRNR .
    
             LS_POLNR-POLNR      =  <FS_I>-POLNR.
             APPEND LS_POLNR TO LT_POLNR.
          ENDIF.
        ELSE.
          LS_POLNR-POLNR = <FS_D>-POLNR.
          APPEND LS_POLNR TO LT_POLNR.
        ENDIF.
        CLEAR LS_POLNR.
      ENDLOOP.
    
      DELETE ADJACENT DUPLICATES FROM LT_POLNR COMPARING POLNR.
    * Call RFC
      CALL FUNCTION 'ZDM_PM_UPDATE_DELTA_SCOPE'
      DESTINATION p_dest
      EXPORTING
         mc = P_MC_D
    *    so_polnr  = s_polnr[]
      TABLES
         T_POLICY = LT_POLNR.
    
    ENDFORM.                    " COMPARE_DATA
  • 相关阅读:
    scikit_learn 官方文档翻译(集成学习)
    机器学习之SVM与逻辑回归的联系和区别
    有序数组寻找中位数以及寻找K大元素
    有向图算法之拓扑排序
    机器学习之离散型特征处理--独热码(one_hot_encoding)
    计算广告学(2)--广告有效性模型
    机器学习实战--k-均值聚类
    SonarQube 扫描代码,SonarQube 进行代码质量检查
    Docker 搭建 Nexus3
    informix 安装 linux 客户端
  • 原文地址:https://www.cnblogs.com/HARU/p/9295346.html
Copyright © 2011-2022 走看看