赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 1677|回复: 4

[ABAP问题] 怎么样COPY一个完整的标准程序到一个新建的程序中并保持所有功能一样?

[复制链接]
发表于 2013-6-28 16:58:41 | 显示全部楼层 |阅读模式
5赛跑币
如题:

怎么去操作?

因为我COPY过来的程序运行时会有一些不同;

是否COPY的程序不能保持一致性?不至于某些功能缺失?



最佳答案

查看完整内容

这个完全可以的,有些功能SAP标准程序不能满足客户需求时,我们可以COPY一个标准程序进行修改的。 但是还是建议你查看一下你修改的标准程序有没有预留出口,增强什么,或者是通过后台配置来实现,在前面提的这些都无法实现的提前下,再去COPY标准程序修改。 个人意见,仅供参考!




上一篇:运行MRP后零件无结果
下一篇:FICO与MM的集成点
本楼点评(0) 收起
发表于 2013-6-28 16:58:42 | 显示全部楼层
这个完全可以的,有些功能SAP标准程序不能满足客户需求时,我们可以COPY一个标准程序进行修改的。
但是还是建议你查看一下你修改的标准程序有没有预留出口,增强什么,或者是通过后台配置来实现,在前面提的这些都无法实现的提前下,再去COPY标准程序修改。


个人意见,仅供参考!
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2013-6-28 19:05:51 | 显示全部楼层
找到了问题的所在,不知道这样的操作可不可行!COPY 程序是没有问题了,问题是要更改标准程序中的某些代码,不知道合法不?
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2013-6-28 19:07:47 | 显示全部楼层
本帖最后由 ronnieshuai 于 2013-6-28 19:15 编辑

  data : l_s_mmim_rep_print  type  mmim_rep_print.

  clear: alv_keyinfo, alv_variant, alv_layout, alv_print.
  alv_repid = sy-repid.
  CLEAR alv_variant.
  alv_variant-report = alv_repid.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = 'A'
    CHANGING
      cs_variant = alv_variant
    EXCEPTIONS
      not_found  = 2.

  IF sy-subrc = 0.
    alv_def = alv_variant-variant.
*   save the initial, e.g. default variant                  "n579976
    move alv_variant-variant to  alv_default_variant.       "n579976
  ENDIF.

* Printing settings
  alv_layout-get_selinfos = 'X'.
  alv_layout-group_change_edit = 'X'.

DATA GS_TAB TYPE mmim_rep_print.
DATA GT_TAB LIKE TABLE OF GS_TAB.

SELECT * FROM mmim_rep_print INTO CORRESPONDING FIELDS OF TABLE GT_TAB.
GS_TAB-selinfo = 'X'.
GS_TAB-gridcontrol = 'X'.
GS_TAB-report = SY-REPID.
GS_TAB-MANDT = SY-MANDT.
APPEND GS_TAB TO GT_TAB.

CLEAR GS_TAB.

select single *            from mmim_rep_print
    into  l_s_mmim_rep_print
      where report = sy-repid.


READ TABLE GT_TAB INTO l_s_mmim_rep_print WITH KEY report = sy-repid.

  if sy-subrc = 0.
    if l_s_mmim_rep_print-selinfo = 'X'.
      alv_print-no_print_selinfos = ' '.
    else.
      alv_print-no_print_selinfos = 'X'.
    endif.

    if l_s_mmim_rep_print-coverpage = 'X'.
      alv_print-no_coverpage = ' '.
    else.
      alv_print-no_coverpage = 'X'.
    endif.

    if l_s_mmim_rep_print-listinfo = 'X'.
      alv_print-no_print_listinfos = ' '.
    else.
      alv_print-no_print_listinfos = 'X'.
    endif.

    if l_s_mmim_rep_print-gridcontrol = 'X'.
      alv_detail_func = 'REUSE_ALV_GRID_DISPLAY'.
    else.
      alv_detail_func = 'REUSE_ALV_LIST_DISPLAY'.
    endif.

*   consider customizing settings regarding the             "n555893
*   colourization of numeric fields                         "n555893
    if l_s_mmim_rep_print-color = 'X'.                      "n555893
*     the customizing says : use no colors                  "n555893
      clear                  alv_colourize_fields.          "n555893
    else.                                                   "n555893
*     no restrictions -> work with colours                  "n555893
      move  'X'              to  alv_colourize_fields.      "n555893
    endif.                                                  "n555893

  else.
*   MMIM_REP_PRINT entry missing / work with colours        "n555893
    move  'X'                to  alv_colourize_fields.      "n555893

    alv_print-no_print_selinfos  = 'X'.
    alv_print-no_coverpage       = ' '.
    alv_print-no_print_listinfos = 'X'.
    alv_detail_func = 'REUSE_ALV_LIST_DISPLAY'.
  endif.

本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2013-6-28 19:11:19 | 显示全部楼层
本帖最后由 ronnieshuai 于 2013-6-28 19:14 编辑

红色是我加入的,黄色是系统的,如果我不加上我自己的代码,我发现黄色这个系统标准代码是抽不到数据的,因为这张数据库表中的REPORT程序名就没有我们客制的程序名,所以抽不到数据,这样的话,抽不到SY-SUBRC就没有办法返回成功为0的值,后续就进行到ELSE这后的语,这样我们COPY过来的标准程序就没有办法完全一致,所以我这样去更改,不知道能不能行?是否合法?是否合逻辑?

PS.另外说一下,这个如上代码是一个标准程序中的一个PERFORM中的代码,除了我添加的红色字部份代码

本楼点评(0) 收起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-6-5 11:03 , Processed in 0.248997 second(s), 40 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

快速回复 返回顶部 返回列表