您的位置:首页 > 运维架构

月TOP合并层

2016-01-29 12:06 417 查看


PROGRAM trans_routine.

*---------------------------------------------------------------------*
*       CLASS routine DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform DEFINITION.

  PUBLIC SECTION.

*  Attributs

    DATA:

      p_check_master_data_exist

            TYPE RSODSOCHECKONLY READ-ONLY,
*-    Instance for getting request runtime attributs;
*     Available information: Refer to methods of
*     interface 'if_rsbk_request_admintab_view'

      p_r_request

            TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.

  PRIVATE SECTION.

    TYPE-POOLS: rsd, rstr.

*   Rule specific types

    TYPES:

      BEGIN OF _ty_s_TG_1,
*      Field: RECORD.

        RECORD           TYPE RSARECORD,
*      InfoObject: ZMATERIAL 物料.

        /BIC/ZMATERIAL           TYPE /BIC/OIZMATERIAL,
*      InfoObject: ZGRID 网格值.

        /BIC/ZGRID           TYPE /BIC/OIZGRID,
*      InfoObject: ZSTORE 店铺主数据.

        /BIC/ZSTORE           TYPE /BIC/OIZSTORE,
*      InfoObject: ZFLAG2 标志2.

        /BIC/ZFLAG2           TYPE /BIC/OIZFLAG2,
*      InfoObject: ZBZIRK 合并片区.

        /BIC/ZBZIRK           TYPE /BIC/OIZBZIRK,
*      InfoObject: ZSYB 事业部.

        /BIC/ZSYB           TYPE /BIC/OIZSYB,
*      InfoObject: ZCHANNEL 渠道.

        /BIC/ZCHANNEL           TYPE /BIC/OIZCHANNEL,
*      InfoObject: ZXM_DD 督导姓名.

        /BIC/ZXM_DD           TYPE /BIC/OIZXM_DD,
*      InfoObject: ZPQJL 片区经理.

        /BIC/ZPQJL           TYPE /BIC/OIZPQJL,
*      InfoObject: ZZJNAME 总监名称.

        /BIC/ZZJNAME           TYPE /BIC/OIZZJNAME,
*      InfoObject: ZCLASSL 产品大类.

        /BIC/ZCLASSL           TYPE /BIC/OIZCLASSL,
*      InfoObject: ZCLASSM 产品中类.

        /BIC/ZCLASSM           TYPE /BIC/OIZCLASSM,
*      InfoObject: ZCLASSS 产品小类.

        /BIC/ZCLASSS           TYPE /BIC/OIZCLASSS,
*      InfoObject: ZBRAND 品牌.

        /BIC/ZBRAND           TYPE /BIC/OIZBRAND,
*      InfoObject: ZFLAG 标志.

        /BIC/ZFLAG           TYPE /BIC/OIZFLAG,
*      InfoObject: 0CALMONTH 日历年/月.

        CALMONTH           TYPE /BI0/OICALMONTH,
*      InfoObject: 0RECORDMODE BW 增量处理: 更新模式.

        RECORDMODE           TYPE RODMUPDMOD,
*      InfoObject: 0CALMONTH2 日历月.

        CALMONTH2           TYPE /BI0/OICALMONTH2,
*      InfoObject: 0CALQUART1 季度.

        CALQUART1           TYPE /BI0/OICALQUART1,
*      InfoObject: 0CALYEAR 日历年.

        CALYEAR           TYPE /BI0/OICALYEAR,
*      InfoObject: 0CALQUARTER 日历年/季度.

        CALQUARTER           TYPE /BI0/OICALQUARTER,
*      InfoObject: 0CUSTOMER 客户编号.

        CUSTOMER           TYPE /BI0/OICUSTOMER,
*      InfoObject: 0DISTR_CHAN 分销渠道.

        DISTR_CHAN           TYPE /BI0/OIDISTR_CHAN,
*      InfoObject: ZQDLX 渠道.

        /BIC/ZQDLX           TYPE /BIC/OIZQDLX,
*      InfoObject: ZATWTBCC 尺寸文本.

        /BIC/ZATWTBCC           TYPE /BIC/OIZATWTBCC,
*      InfoObject: ZATWTBYS 颜色文本.

        /BIC/ZATWTBYS           TYPE /BIC/OIZATWTBYS,
*      InfoObject: ZPER_DD 督导ID.

        /BIC/ZPER_DD           TYPE /BIC/OIZPER_DD,
*      InfoObject: ZAREA_MAR 片区经理.

        /BIC/ZAREA_MAR           TYPE /BIC/OIZAREA_MAR,
*      InfoObject: ZZJCODE 总监编号.

        /BIC/ZZJCODE           TYPE /BIC/OIZZJCODE,
*      InfoObject: ZPRTK3 物料K3码.

        /BIC/ZPRTK3           TYPE /BIC/OIZPRTK3,
*      InfoObject: ZDTLQTY 零售数量.

        /BIC/ZDTLQTY           TYPE /BIC/OIZDTLQTY,
*      InfoObject: 0BASE_UOM 基本计量单位.

        BASE_UOM           TYPE /BI0/OIBASE_UOM,
*      InfoObject: ZDTLFTAMT 实收金额.

        /BIC/ZDTLFTAMT           TYPE /BIC/OIZDTLFTAMT,
*      InfoObject: 0LOC_CURRCY 本币.

        LOC_CURRCY           TYPE /BI0/OILOC_CURRCY,
*      InfoObject: ZZJXJ_AMT 经销总额.

        /BIC/ZZJXJ_AMT           TYPE /BIC/OIZZJXJ_AMT,
*      InfoObject: ZRTRLAMT 终端零售总额(即按终端零售单价计算得的总金额).

        /BIC/ZRTRLAMT           TYPE /BIC/OIZRTRLAMT,
*      InfoObject: ZNTJAMT 南通成本价总额.

        /BIC/ZNTJAMT           TYPE /BIC/OIZNTJAMT,
*      InfoObject: ZSLPX 按数量排序.

        /BIC/ZSLPX           TYPE /BIC/OIZSLPX,
*      InfoObject: ZJEPX 按金额排序.

        /BIC/ZJEPX           TYPE /BIC/OIZJEPX,
*      InfoObject: ZSYBSLTOP 事业部数量排名.

        /BIC/ZSYBSLTOP           TYPE /BIC/OIZSYBSLTOP,
*      InfoObject: ZSYBJETOP 事业部金额排名.

        /BIC/ZSYBJETOP           TYPE /BIC/OIZSYBJETOP,

      END   OF _ty_s_TG_1.

    TYPES:

      _ty_t_TG_1        TYPE STANDARD TABLE OF _ty_s_TG_1

                        WITH NON-UNIQUE DEFAULT KEY.

*$*$ begin of global - insert your declaration only below this line  *-*
... "insert your code here
*$*$ end of global - insert your declaration only before this line   *-*

    METHODS

      new_record__end_routine

        IMPORTING

          source_segid             type rstran_segid

          source_record            type sytabix

        EXPORTING

          record_new               type sytabix.

    METHODS

      end_routine

        IMPORTING

          request                  type rsrequest

          datapackid               type rsdatapid

          segid                    type rsbk_segid

        EXPORTING

          monitor                  type rstr_ty_t_monitors

        CHANGING

          RESULT_PACKAGE              type _ty_t_TG_1

        RAISING

          cx_rsrout_abort

          cx_rsbk_errorcount.

    METHODS

      inverse_end_routine

        IMPORTING

          i_th_fields_outbound         TYPE rstran_t_field_inv

          I_R_SELSET_OUTBOUND          TYPE REF TO CL_RSMDS_SET

          i_is_main_selection          TYPE rs_bool

          i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set

          i_r_universe_inbound         TYPE REF TO CL_RSMDS_UNIVERSE

        CHANGING

          c_th_fields_inbound          TYPE rstran_t_field_inv

          c_r_selset_inbound           TYPE REF TO CL_RSMDS_SET

          c_exact                      TYPE rs_bool.
ENDCLASS.                    "routine DEFINITION

*$*$ begin of 2nd part global - insert your code only below this line  *
... "insert your code here
*$*$ end of 2nd part global - insert your code only before this line   *

*---------------------------------------------------------------------*
*       CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.

*----------------------------------------------------------------------*
*       Method end_routine
*----------------------------------------------------------------------*
*       Calculation of result package via end routine.
*       Note: Update of target fields depends on rule assignment in
*       transformation editor. Only fields that have a rule assigned,
*       are updated to the data target.
*----------------------------------------------------------------------*
*   <-> result package
*----------------------------------------------------------------------*

  METHOD end_routine.
*=== Segments ===

    FIELD-SYMBOLS:

      <RESULT_FIELDS>    TYPE _ty_s_TG_1.

    DATA:

      MONITOR_REC     TYPE rstmonitor.

*$*$ begin of routine - insert your code only below this line        *-*
... "insert your code here
*--  fill table "MONITOR" with values of structure "MONITOR_REC"
*-   to make monitor entries
... "to cancel the update process
*    raise exception type CX_RSROUT_ABORT.

   DATA: l_t_ZSYB TYPE STANDARD TABLE OF _ty_s_TG_1,

         l_t_ZSYB1 TYPE STANDARD TABLE OF _ty_s_TG_1,

          l_wa_ZSYB LIKE LINE OF l_t_ZSYB,

          l_wa_result TYPE _ty_s_TG_1,

          l_t_result TYPE _ty_t_TG_1,

          l_line TYPE I,

          l_datum type sy-datum.

Break-POINT.

L_T_ZSYB[] = RESULT_PACKAGE[].
LOOP AT L_T_ZSYB INTO L_WA_ZSYB.
IF L_WA_ZSYB-/BIC/ZFLAG2 = 'D1'.
APPEND L_WA_ZSYB TO L_T_ZSYB1.
ENDIF.
ENDLOOP.

CLEAR:L_WA_RESULT,L_WA_ZSYB.
LOOP AT RESULT_PACKAGE INTO L_WA_RESULT.
LOOP AT L_T_ZSYB1 INTO L_WA_ZSYB
WHERE /BIC/ZSYB = L_WA_RESULT-/BIC/ZSYB

 AND CALMONTH = L_WA_RESULT-CALMONTH

 AND /BIC/ZMATERIAL = L_WA_RESULT-/BIC/ZMATERIAL

 AND /BIC/ZGRID = L_WA_RESULT-/BIC/ZGRID.

 L_WA_RESULT-/BIC/ZSYBSLTOP = L_WA_ZSYB-/BIC/ZSLPX.

ENDLOOP.
MODIFY RESULT_PACKAGE FROM L_WA_RESULT.
ENDLOOP.

LOOP AT L_T_ZSYB INTO L_WA_ZSYB.
IF L_WA_ZSYB-/BIC/ZFLAG2 = 'D2'.
APPEND L_WA_ZSYB TO L_T_ZSYB1.
ENDIF.
ENDLOOP.

CLEAR:L_WA_RESULT,L_WA_ZSYB.
LOOP AT RESULT_PACKAGE INTO L_WA_RESULT.
LOOP AT L_T_ZSYB1 INTO L_WA_ZSYB
WHERE /BIC/ZSYB = L_WA_RESULT-/BIC/ZSYB

 AND CALMONTH = L_WA_RESULT-CALMONTH

 AND /BIC/ZMATERIAL = L_WA_RESULT-/BIC/ZMATERIAL

 AND /BIC/ZGRID = L_WA_RESULT-/BIC/ZGRID.

 L_WA_RESULT-/BIC/ZSYBJETOP = L_WA_ZSYB-/BIC/ZJEPX.

 ENDLOOP.
MODIFY RESULT_PACKAGE FROM L_WA_RESULT.
ENDLOOP.

*$*$ end of routine - insert your code only before this line         *-*

  ENDMETHOD.                    "end_routine
*----------------------------------------------------------------------*
*       Inverse method inverse_end_routine
*----------------------------------------------------------------------*
*       This subroutine needs to be implemented only for direct access
*       (for better performance) and for the Report/Report Interface
*       (drill through).
*       The inverse routine should transform a projection and
*       a selection for the target to a projection and a selection
*       for the source, respectively.
*       If the implementation remains empty all fields are filled and
*       all values are selected.
*----------------------------------------------------------------------*
*       Customer comment:
*----------------------------------------------------------------------*

  METHOD inverse_end_routine.

*   IMPORTING
*     i_r_selset_outbound          TYPE REF TO cl_rsmds_set
*     i_th_fields_outbound         TYPE HASHED TABLE
*     i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set
*     i_r_universe_inbound         TYPE REF TO cl_rsmds_universe
*   CHANGING
*     c_r_selset_inbound           TYPE REF TO cl_rsmds_set
*     c_th_fields_inbound          TYPE HASHED TABLE
*     c_exact                      TYPE rs_bool

*$*$ begin of inverse routine - insert your code only below this line*-*
... "insert your code here
*$*$ end of inverse routine - insert your code only before this line *-*

  ENDMETHOD.                    "inverse_end_routine

  METHOD new_record__end_routine.

***** IMPLEMENTATION  is only visible in generated program *****

  ENDMETHOD.
ENDCLASS.                    "routine IMPLEMENTATION
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: