将一个变体从一个程序复制到另一个程序

2020-08-24 23:59发布

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

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


嗨,

我知道有一些方法可以将一个特定程序的所有变体复制到另一个程序,但是仅复制一个变体又如何呢? 有办法吗?

我可以尝试复制所有变体,然后再删除不需要的其他变体,但我担心,如果全部复制它们,则可能会覆盖其他程序中已经存在的其他变体。

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

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


嗨,

我知道有一些方法可以将一个特定程序的所有变体复制到另一个程序,但是仅复制一个变体又如何呢? 有办法吗?

我可以尝试复制所有变体,然后再删除不需要的其他变体,但我担心,如果全部复制它们,则可能会覆盖其他程序中已经存在的其他变体。

付费偷看设置
发送
2条回答
槿木_熙
1楼 · 2020-08-25 00:41.采纳回答

嗨。

我根据标准报告RSTRANSP和FM RS_COPY_SELECTION_SETS编写了以下程序,该程序可用于将单个变体从源程序复制到目标程序。 希望它能满足您的要求。

Dairo

Dairo

 REPORT YVARIANT_COPY MESSAGE-ID DB。
 表格:RSVAR,VARID,TADIR。
 数据LV_ERROR。

 资料:REPDEV的开头,
        OBJ_NAME,例如TADIR-OBJ_NAME,
        DEVCLASS像TADIR-DEVCLASS一样,
        像tadir-object这样的对象,
       REPDEV的结尾。
 数据:开始于L_REP_VAR发生10,
                像RSVAR-REPORT这样的报告,
                像RSVAR-VARIANT的变量。
 数据:L_REP_VAR的结尾。
 数据:带有标题行的L_OBJ_NAME像REPDEV占用100。
 范围:L_REP FOR RSVAR-REPORT,
         TADIR-PGMID的L_PGMID,
         L_OBJ用于TADIR-OBJECT。
 数据rs_report类似于rsvar-report。
 数据l_first。
 数据:l_split1(40),l_split2(40),l_split3(40),l_split4(40)。

 数据:带有标题行的I_VARID像VARID发生10,
         与标题行类似的I_VARIT VARIT OCCURS 10,
         I_VARI_VA喜欢带有标题行的VARI OCCURS 10,
         I_VARI_VB像带有标题行的VARI OCCURS 10,
         与标题行类似的I_VARIS VARIS占用10。
 数据:L_SYSPREFIX(4)值'SAP&',
         L_CUSPREFIX(4)值'CUS&'。
 数据:NON_LOCAL VALUE'Y'。
   类似于RSVAR-REPORT的DATA SOURCE_REPORT。
   数据TARGET_REPORT类似于RSVAR-REPORT。

 *块
 带标题标题文本001的REVA的选择屏幕开始。
 参数:报告类型RSVAR-报告义务,
                 REPORT_D类型RSVAR-REPORT强制。
 选择选项:对于RSVAR-VARIANT是VARIANT。
 块REVA的选择屏幕末端。

 选择开始。
   SOURCE_REPORT = REPORT。
   TARGET_REPORT = REPORT_D。

 *移动:" I"到l_pgmid-sign,
 *'EQ'到l_pgmid-option,
 *'LIMU'到l_pgmid-low。
 *附加l_pgmid。
   移动:"我"到L_PGMID-SIGN,
          'EQ'至L_PGMID-OPTION,
          " R3TR"到L_PGMID-LOW。
   APPEND L_PGMID。
   移动:"我"到L_OBJ-SIGN,
          'EQ'至L_OBJ-OPTION,
          'REPO'到L_OBJ-LOW。
   APPEND L_OBJ。
   移动:"我"到L_OBJ-SIGN,
          'EQ'至L_OBJ-OPTION,
          " REPS"到L_OBJ-LOW。
   APPEND L_OBJ。
   移动:"我"到L_OBJ-SIGN,
          'EQ'至L_OBJ-OPTION,
          'PROG'至L_OBJ-LOW。
   APPEND L_OBJ。
   移动:"我"到L_OBJ-SIGN,
          'EQ'至L_OBJ-OPTION,
          'FUGR'至L_OBJ-LOW。
   APPEND L_OBJ。
 *普吕丰根
   刷新L_REP。 清除L_REP。
   移动:"我"到L_REP-SIGN,
        'EQ'至L_REP-OPTION。

   从TADIR中选择OBJ_NAME DEVCLASS对象到表L_OBJ_NAME中
                       L_PGMID中的PGMID在哪里
                       L_OBJ中的AND对象
                       和OBJ_NAME的EQ报告。
   环游L_OBJ_NAME。
     检查L_OBJ_NAME-DEVCLASS NE'$ TMP'。
     如果l_obj_name-object eq'FUGR'。
       在l_obj_name-obj_name中搜索"/"。
       如果sy-subrc eq 0。
         如果sy-fdpos = 0。
           l_first ='/'。
           将l_obj_name-obj_name左移1位。
         其他。
           清除l_first。
         万一。
         在l_obj_name-obj_name中搜索"/"。
         如果sy-subrc eq 0。
           将'/'处的l_obj_name-obj_name拆分为l_split1 l_split2
            l_split3 l_split4。
         万一。
         l_split3 eq空间。
           连接l_first l_split1'/''SAPL'l_split2
              在字符模式下转换为l_rep-low。
         elseif l_split4 eq空间。
           连接l_first l_split1'/'l_split2'/''SAPL'l_split3
              在字符模式下转换为l_rep-low。
         其他。
           串联l_first l_split1'/'l_split2'/'l_split3'/'
              'SAPL'l_split4
              在字符模式下转换为l_rep-low。
         万一。
       其他。
         将" SAPL" l_obj_name连接到l_rep-low
             在字符模式下。
       万一。
     其他。
       移动:L_OBJ_NAME到L_REP-LOW。
     万一。
     APPEND L_REP。
   结局。
 * endselect。

   如果L_OBJ_NAME-DEVCLASS NE空间和L_OBJ_NAME-DEVCLASS NE'$ TMP'。
     NON_LOCAL ='Y'。
   ELSEIF L_OBJ_NAME-DEVCLASS EQ'$ TMP'。
     NON_LOCAL ='N'。
   否则。
     使用TARGET_REPORT NON_LOCAL执行GET_DEVCLASS(LSVARF07)。
   万一。


   描述表L_REP行SY-TFILL。
 ** Keine Program mit Entwicklungsklasse ne $ TMP。
   如果SY-TFILL = 0。
     讯息I275。 出口。
   万一。

 **瓦里安·欣祖莱森(Varianten hinzulesen)
   刷新:L_REP_VAR。 清除L_REP_VAR。
   选择*从L_REP中的VARHER WHERE REPORT
                       和各种变化。
     将VARID-REPORT移动到L_REP_VAR-REPORT。
     将VARID-VARIANT移动到L_REP_VAR-VARIANT。
     APPEND L_REP_VAR。
   ENDSELECT。

 ** Keine Varianten gefunden。
   描述表L_REP_VAR行SY-TFILL。
   如果SY-TFILL EQ 0。
     讯息I260。 出口。
   万一。

   从表后面的表I_varid中选择*
                        报告= SOURCE_REPORT。
   从变量中选择*附加表I_varit
                        其中langu = sy-langu
                        并报告= SOURCE_REPORT。
   从vari附加表I_vari_va中选择*
                        relid ='VA'
                        并报告= SOURCE_REPORT。
   从变量追加表I_vari_vb中选择*
                        relid ='VB'
                        并报告= SOURCE_REPORT。
   从表追加的变量中选择* I_varis
                        报告= SOURCE_REPORT。


   如果NON_LOCAL等于'Y'并且sy-mand和sy-MANDT。
 *仅开发类=/$ TMP,客户端000不需要
     从指定的vard客户端中选择*,附加表I_varid
                          报表= SOURCE_REPORT
                          和(如" SAP&%"的变体
                           或类似" CUS&%"的变体))。
     从指定的varit客户端中选择*,附加表I_varit
                          其中langu = sy-langu
                          并报告= SOURCE_REPORT
                          和(如" SAP&%"的变体
                           或类似" CUS&%"的变体)。
     从指定的vari客户中选择*,附加表I_vari_va
                          relid ='VA'
                          并报告= SOURCE_REPORT
                          和(如" SAP&%"的变体
                           或类似" CUS&%"的变体)。
     从指定的vari客户端中选择*,附加表I_vari_vb
                          relid ='VB'
                          并报告= SOURCE_REPORT
                          和(如" SAP&%"的变体
                           或类似" CUS&%"的变体)。
     从指定的varis客户端中选择*,附加表I_varis
                          报表= SOURCE_REPORT
                          和(如" SAP&%"的变体
                           或类似" CUS&%"的变体)。
   万一。
     在变量中删除I_VARID而不是变量。
     在变量中删除I_VARIT而不是变量。
     删除I_VARI_VA,其中VARIANT不是VARIANT。
     删除I_VARI_VB变量不在变量中的变量。
     在变量中删除I_VARIS的变量。

   循环到I_VARID。
     I_VARID-REPORT = TARGET_REPORT。
     I_VARID-ETIME = SY-UZEIT。
     I_VARID-EDAT = SY-DATUM。
     清除:I_VARID-AENAME,I_VARID-AETIME,I_VARID-PROTECTED,
            I_VARID-AEDAT。
     修改I_VARID。
   结局。

   在I_VARIT处循环播放。
     I_VARIT-REPORT = TARGET_REPORT。
     修改I_VARIT。
   结局。

   循环到I_VARI_VA。
     I_VARI_VA-REPORT = TARGET_REPORT。
     修改I_VARI_VA。
   结局。

   循环到I_VARI_VB。
     I_VARI_VB-REPORT = TARGET_REPORT。
     修改I_VARI_VB。
   结局。

   环游I_VARIS。
     I_VARIS-REPORT = TARGET_REPORT。
     修改I_VARIS。
   结局。

   从表I_VARID指定的插入VARID客户
          接受重复的密钥。
   如果SY-SUBRC <> 0。
     LV_ERROR ='X'。
   万一。
   表I_VARIT中指定的INSERT VARIT CLIENT
          接受重复的密钥。
   如果SY-SUBRC <> 0。
     LV_ERROR ='X'。
   万一。
   从表I_VARI_VA中指定插入VARI CLIENT
          接受重复的密钥。
    如果SY-SUBRC <> 0。
     LV_ERROR ='X'。
   万一。
   从表I_VARI_VB中指定插入VARI CLIENT
          接受重复的密钥。
     如果SY-SUBRC <> 0。
     LV_ERROR ='X'。
   万一。
   插入从表i_varis指定的varis客户端
          接受重复的密钥。
   如果SY-SUBRC <> 0。
     LV_ERROR ='X'。
   万一。

   如果LV_ERROR是INITIAL。
     消息"变体已成功复制。" 输入" I"。
   其他。
     消息"复制变体时出错" TYPE" E"。
   万一。

 选择结束。
 
haha101010
2楼-- · 2020-08-25 00:45

Redjie Badaguas

尝试使用功能模块RS_COPY_SELECTION_SETS,在那里 在导入参数中,我们有一个名为DEVC的字段。 您已经创建了"日期"字段,可以使用该字段尝试过滤要复制的变量。

注意!

一周热门 更多>