将实际数据复制到计划数据。

2020-09-12 18:54发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

我的要求是使用BADI将实际数据复制到计划数据。 我也可以使用Logic脚本,但是我的客户希望在BADI中实现该脚本,因为它们可以灵活地使用ABAP。

我有一个模型(zsales_001),它具有以下尺寸:

1。 帐户

2。 类别

3。 实体

4。 产品

5。 时间

6。 Z_Keyfigure(具有ZKF1和ZKF2)。

我已经附上了示例源数据。

数据从IC1(BW)流向BPC模型。

现在,我的要求是通过将ZKEY1和ZKEY2的值增加到10%,将2015.01的实际数据复制到计划类别2015.02。

我已经附上了样本目标数据

我已经编写了BADI,但是在调试BADI时未执行。 请指教。

方法IF_UJ_CUSTOM_LOGIC〜EXECUTE。


   类型:开始于TY_ZSALES_BPC2_1,
            ZACCOUNT TYPE STRING,
            ZCATEGORY TYPE STRING,
            ZENTITY TYPE STRING,
            ZPRODUCT TYPE STRING,
            ZTIME类型/BI0/OICALMONTH,
            ZZ_KEYFIG TYPE STRING,
          END OF TY_ZSALES_BPC2_1。


   数据:IS_ZSALES_BPC2_1类型TY_ZSALES_BPC2_1,
          IS_TEMP TYPE TY_ZSALES_BPC2_1,
          IS_TEMP_2类型TY_ZSALES_BPC2_1,
          TY_ZSALES_BPC2_1的IT_TEMP类型标准表,
          TY_ZSALES_BPC2_1的IT_TEMP_2类型标准表,
          TY_ZSALES_BPC2_1的IT_ZSALES_BPC2_1类型标准表。

   如果CT_DATA不是INITIAL。
     IT_TEMP [] = CT_DATA []。
     在IT_TEMP处进入IS_TEMP。
       IS_TEMP_2 = IS_TEMP。
       IS_TEMP_2-ZCATEGORY ='计划'。
       将IS_TEMP_2附加到IT_TEMP_2。
     结局。
       按ZACCOUNT ZCATEGORY ZENTITY ZPRODUCT ZTIME排序IT_TEMP_2。
       从IT_TEMP_2删除相邻的重复项。
       CT_DATA [] = IT_TEMP_2 []。
   万一。
 方法。
 
下面是一段逻辑脚本代码:

 * XDIM_MEMBERSET TIME = 2015.01
 * XDIM_MEMBERSET CATEGORY = ACTUAL
 * XDIM_MEMBERSET帐户= PL010
 * START_BADI ZUJ_CUSTOM_LOGIC_FILT_001
 * END_BADI。

此致

Praveen。

 


(9.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

我的要求是使用BADI将实际数据复制到计划数据。 我也可以使用Logic脚本,但是我的客户希望在BADI中实现该脚本,因为它们可以灵活地使用ABAP。

我有一个模型(zsales_001),它具有以下尺寸:

1。 帐户

2。 类别

3。 实体

4。 产品

5。 时间

6。 Z_Keyfigure(具有ZKF1和ZKF2)。

我已经附上了示例源数据。

数据从IC1(BW)流向BPC模型。

现在,我的要求是通过将ZKEY1和ZKEY2的值增加到10%,将2015.01的实际数据复制到计划类别2015.02。

我已经附上了样本目标数据

我已经编写了BADI,但是在调试BADI时未执行。 请指教。

方法IF_UJ_CUSTOM_LOGIC〜EXECUTE。


   类型:开始于TY_ZSALES_BPC2_1,
            ZACCOUNT TYPE STRING,
            ZCATEGORY TYPE STRING,
            ZENTITY TYPE STRING,
            ZPRODUCT TYPE STRING,
            ZTIME类型/BI0/OICALMONTH,
            ZZ_KEYFIG TYPE STRING,
          END OF TY_ZSALES_BPC2_1。


   数据:IS_ZSALES_BPC2_1类型TY_ZSALES_BPC2_1,
          IS_TEMP TYPE TY_ZSALES_BPC2_1,
          IS_TEMP_2类型TY_ZSALES_BPC2_1,
          TY_ZSALES_BPC2_1的IT_TEMP类型标准表,
          TY_ZSALES_BPC2_1的IT_TEMP_2类型标准表,
          TY_ZSALES_BPC2_1的IT_ZSALES_BPC2_1类型标准表。

   如果CT_DATA不是INITIAL。
     IT_TEMP [] = CT_DATA []。
     在IT_TEMP处进入IS_TEMP。
       IS_TEMP_2 = IS_TEMP。
       IS_TEMP_2-ZCATEGORY ='计划'。
       将IS_TEMP_2附加到IT_TEMP_2。
     结局。
       按ZACCOUNT ZCATEGORY ZENTITY ZPRODUCT ZTIME排序IT_TEMP_2。
       从IT_TEMP_2删除相邻的重复项。
       CT_DATA [] = IT_TEMP_2 []。
   万一。
 方法。
 
下面是一段逻辑脚本代码:

 * XDIM_MEMBERSET TIME = 2015.01
 * XDIM_MEMBERSET CATEGORY = ACTUAL
 * XDIM_MEMBERSET帐户= PL010
 * START_BADI ZUJ_CUSTOM_LOGIC_FILT_001
 * END_BADI。

此致

Praveen。

 


(9.0 kB)
付费偷看设置
发送
1条回答
歪着头看世界
1楼-- · 2020-09-12 19:10

首先-在我看来,使用badi执行复制绝对是很奇怪的(没有额外的灵活性!)标准复制程序包(或脚本逻辑)可以毫无问题地完成这项工作!

如果您想训练自己写巴迪语-请阅读:

https://archive.sap.com/kmuuid2/20f4252d-98ca-2b10-e689-f85085ae2d12/How%20to%20Pass%20Parameters%20to%20Custom%20Logic%20BADI%20using%20START_BADI。 pdf

在此描述中您唯一不需要的-您无需创建自定义链即可运行脚本逻辑,使用标准。

要调试badi执行,请在badi代码的开头插入无限循环,然后使用SM50进行调试。

P.S。 BPC帮助中提供了非常简单的自定义逻辑badi示例:

https://help.sap.com/viewer/ a2049170bfeb4178ace32222842c3ec1/10.1/zh-CN/f04254a006574fed9a65f3661a07e3e7.html

查看脚本以运行它:

* START_BADI DECD

QUERY = ON//将数据获取到ct_data

WRITE = ON//写入ct_data的结果

YEAR = 1

PERCENTAGE = 10

* END_BADI


一周热门 更多>