Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286441
  • 博文数量: 62
  • 博客积分: 2966
  • 博客等级: 少校
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-07 23:16
个人简介

Be a simple man

文章分类

全部博文(62)

文章存档

2012年(6)

2011年(15)

2010年(6)

2009年(3)

2008年(5)

2007年(27)

我的朋友

分类: 项目管理

2011-04-01 14:19:29

 

In DLC Report, I use this method to process DTP dynamic

 

GET  the DTP technical name:

 

    CALL METHOD p_r_request->get_dtptext

      RECEIVING

        r_dtptext i_dtptext.

 

Example:

Transformation: ODSO ZDC_TO68 -> ODSO ZDC_TO68

 

**local data declarations

    DATAls_load_date TYPE /bi0/oiload_date.

    DATAlt_zdc_to61 TYPE STANDARD TABLE OF /bic/azdc_to6100.

 

    FIELD-SYMBOLS   LIKE LINE OF SOURCE_PACKAGE.

    FIELD-SYMBOLS LIKE LINE OF lt_zdc_to61.

 

    DATAi_dtptext TYPE rsbkdtptext.

 

*get the DTP technical name

********************************************************************

    CALL METHOD p_r_request->get_dtptext

      RECEIVING

        r_dtptext i_dtptext.

 

*DTP to restate employee attributes

    IF i_dtptext 'ZDC_TO68 -> ZDC_TO68 Restatement'.

    "Emp Experience Attr

********************************************************************

*get the last date when data was loaded to DSO ZDC_TO68

      SELECT SINGLE load_date

      INTO ls_load_date

      FROM /bic/pzdata_tgt WHERE /bic/zdata_tgt 'ZDC_TO68'

                           AND objvers 'A'.

      IF sy-subrc 0.

*get all employee experience changes since the last load date

        SELECT *

        FROM /bic/azdc_to6100

        INTO TABLE lt_zdc_to61[]

        WHERE  load_date GE ls_load_date.

      ENDIF.

 

*Overwrite the transaction records with the latest employee

*experience attributes

      IF NOT lt_zdc_to61[] IS INITIAL.

        LOOP AT SOURCE_PACKAGE ASSIGNING .

          LOOP AT lt_zdc_to61 ASSIGNING 

               WHERE /bic/zdcr_nti2 =  -createdby

                 AND validfrom      LE -calday

                 AND validto        GE -calday.

            -/bic/zdcr_shid -/bic/zdcr_shid.

            -/bic/zdcr_poid -/bic/zdcr_poid.

            -/bic/zdcr_pjid -/bic/zdcr_pjid.

          ENDLOOP.

        ENDLOOP.

      ENDIF.

*end of restatement of employee attributes

 

************************************************************************************

*DTP to credit PL transactions for a corresponding RA transaction

    ELSEIF i_dtptext 'ZDC_TO68 -> ZDC_TO68 RA-PL'.   "RA-PL

************************************************************************************

 

*begin of RA-PL processing

 

      DATA :lt_pl TYPE STANDARD TABLE OF /bic/azdc_to5200.

      DATA :wa_ra TYPE _ty_s_sc_1.

      DATA :wa_pl TYPE /bic/azdc_to5200.

 

*Source Package has all RL records from the last load date - 1.

*Get the corresponding PL's for the RA's in Source Package from

*source dso ZDC_TO52

 

      SELECT FROM /bic/azdc_to5200

         INTO TABLE lt_pl

         FOR ALL ENTRIES IN SOURCE_PACKAGE

         WHERE material        SOURCE_PACKAGE-material

           AND /bic/zbatch     SOURCE_PACKAGE-/bic/zbatch

           AND /bic/zcdmin_ds  SOURCE_PACKAGE-calday

           AND /bic/ztrn_type  'PL'.

      IF sy-subrc EQ 0.

 

        SORT lt_pl BY doc_number material /bic/zbatch

                      /bic/zcdmin_ds /bic/zctmin_ds ASCENDING.

 

*Delete adjacent duplicates in internal table IT_PL

        DELETE ADJACENT DUPLICATES FROM lt_pl

        COMPARING doc_number material /bic/zbatch /bic/zcdmin_ds.

        SORT lt_pl BY material /bic/zbatch /bic/zcdmin_ds.

 

*append PL records to source-package if

*the PL occured after RA and the users are different

        LOOP AT SOURCE_PACKAGE INTO wa_ra

          WHERE /bic/ztrn_type  'RA'.

          READ TABLE lt_pl INTO wa_pl

                  WITH KEY material        wa_ra-material

                           /bic/zbatch     wa_ra-/bic/zbatch

                           /bic/zcdmin_ds  wa_ra-calday

                            BINARY SEARCH.

          IF sy-subrc 0.

            IF    wa_pl-/bic/zctmin_ds >  wa_ra-/bic/zctmin_ds

              AND wa_pl-/bic/zuser_min <> wa_ra-createdby.

              wa_ra-doc_number     wa_pl-doc_number.

              wa_ra-/bic/zrapl_cnt '1'.

              wa_ra-/bic/ztrn_type 'PL'.

              wa_ra-/bic/zctmin_ds wa_pl-/bic/zctmin_ds.

              wa_ra-createdby      wa_pl-/bic/zuser_min.

              wa_ra-calday         wa_pl-/bic/zcdmin_ds.

              APPEND wa_ra TO SOURCE_PACKAGE.

              CLEAR wa_ra.

              CLEAR wa_pl.

            ENDIF.

          ENDIF.

          ENDLOOP.

 

阅读(1371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~