Copy PR header text to PO header when ME21N(增强方法2)_SAP刘梦_新浪博客

之前已经用badi实现了 po header text的copy
还有一种方法,exit
查找对应的出口
Copy <wbr>PR <wbr>header <wbr>text <wbr>to <wbr>PO <wbr>header <wbr>when <wbr>ME21N(增强方法2)

Copy <wbr>PR <wbr>header <wbr>text <wbr>to <wbr>PO <wbr>header <wbr>when <wbr>ME21N(增强方法2)
查看对应的Function 及include,可以看看输入参数,看看哪些值可以用到
Copy <wbr>PR <wbr>header <wbr>text <wbr>to <wbr>PO <wbr>header <wbr>when <wbr>ME21N(增强方法2)

添加测试代码
Copy <wbr>PR <wbr>header <wbr>text <wbr>to <wbr>PO <wbr>header <wbr>when <wbr>ME21N(增强方法2)

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

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

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

但是如果你用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 levelcopy ,可以通过配置实现,在这里实现好像有问题

就是 ls_header-tdname 这个字段赋值问题。

因为还没有生成PO,所以 订单号 行项目号拼接 name的时候,前面要么留空,要么留0

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

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

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

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

不过有一点

 

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

Copy <wbr>PR <wbr>header <wbr>text <wbr>to <wbr>PO <wbr>header <wbr>when <wbr>ME21N(增强方法2)

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

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

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


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

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

PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值