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

Copy PR header te…

2017-06-17 09:22 465 查看
之前已经用badi实现了 po header text的copy
还有一种方法,exit
查找对应的出口








查看对应的Function 及include,可以看看输入参数,看看哪些值可以用到




添加测试代码




为方便管理和维护,也为了里面别太乱,我把代码封到一个include里面,

其实建议是用Function,直接copy
EXIT_SAPMM06E_012
或者自己建一个。

Function
里面,你用check
用return都只是退出Function,Function之外的不受影响。

但是如果你用include
,在include里面如果return了,include后面如果有别的代码,也就不执行了。

真出了bug的时候比较麻烦

参考代码

DATA : lt_tekpo  TYPE TABLE OF bekpo,

       ls_tekpo  TYPE bekpo,

       lt_lines  TYPE TABLE OF tline,

       lv_tdname TYPE thead-tdname,

       ls_header TYPE thead.
DATA:  lv_spras  TYPE thead-tdspras.

lt_tekpo[] = tekpo[].

LOOP AT lt_tekpo INTO ls_tekpo.

  "for header level

  lv_tdname = ls_tekpo-banfn.

  SELECT SINGLE spras INTO lv_spras FROM eban WHERE banfn = ls_tekpo-banfn.

  CALL FUNCTION 'READ_TEXT'

    EXPORTING

      client                  = sy-mandt

      id                      = 'B01'

      language                = lv_spras

      name                    = lv_tdname

      object                  = 'EBANH'

    TABLES

      lines                   = lt_lines

    EXCEPTIONS

      id                      = 1

      language                = 2

      name                    = 3

      not_found               = 4

      object                  = 5

      reference_check         = 6

      wrong_access_to_archive = 7

      OTHERS                  = 8.

  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

  ls_header-tdobject = 'EKKO'.

  ls_header-tdid     = 'F02'.

  ls_header-tdspras  = i_ekko-spras.

  CALL FUNCTION 'SAVE_TEXT'

    EXPORTING

      client   = sy-mandt

      header   = ls_header

      insert   = 'X'

    TABLES

      lines    = lt_lines

    EXCEPTIONS

      id       = 1

      language = 2

      name     = 3

      object   = 4

      OTHERS   = 5.

  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

ENDLOOP.

 

至于item
level的copy

,可以通过配置实现,在这里实现好像有问题

就是 ls_header-tdname

这个字段赋值问题。

因为还没有生成PO,所以

订单号
行项目号拼接 name的时候,前面要么留空,要么留0,

我看有人说可以用十个0代替,但是我测试没成功。

我分别对F01 F02
F03
赋值,拼接的时候分别用的
:仅仅行项目号、0

行项目、空格
行项目。

都没有成功,有兴趣你们自己可以试试。可能跟版本 note等有关系。

不过行项目的copy

可以在之前说的那个badi实现,其实没必要,直接spor配置最简单

不过有一点

 

就是点击copy PR的时候,header
text不会直接过来





只有点保存后,text才会生成,点保存的时候才会走那个出口

而之前那个BADI,不需要点保存,只要点copy,text就会带过来了。

带过来以后是可以修改的,修改完保存后,修改的内容不会被覆盖的,两种增强方法都可以,没问题。

另外本人开通了一个微信订阅号

欢迎关注:SAP学习记录
(SAPlearning )


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