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
  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/HARU/p/9295346.html
Copyright © 2011-2022 走看看