工具函数:把一个工作区中非空字段值付给另一个工作区相同字段_SAP刘梦_新浪博客...

本文介绍了如何使用SAP ABAP中的ZFM_MOVE_CORRESPONDING函数来完成工作区结构之间的字段赋值。通过实例演示了函数的调用方式和关键参数的使用,同时强调了在赋值操作后的子进程判断的重要性,以避免程序崩溃。文章还提供了测试程序以供读者实践验证。
摘要由CSDN通过智能技术生成
工具函数:把一个工作区中非空字段值付给另一个工作区相同字段

工具函数:把一个工作区中非空字段值付给另一个工作区相同字段

FUNCTION ZFM_MOVE_CORRESPONDING .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(IS_INPUT) OPTIONAL
*"     REFERENCE(IV_STRUCTURE) OPTIONAL
*"  CHANGING
*"     REFERENCE(CS_INPUT) OPTIONAL
*"----------------------------------------------------------------------


   FIELD-SYMBOLS :
                《 L_FIELD》       TYPE  ANY ,                                  "从工作区结构
                《 L_FIELD_C 》  TYPE  ANY .                                  "到工作区结构
*
   DATA  : LT_IDETAILS  TYPE ABAP_COMPDESCR_TAB  WITH  HEADER  LINE .
   DATA  : LR_REF_TABLE_DES  TYPE  REF  TO CL_ABAP_STRUCTDESCR .


  LR_REF_TABLE_DES ?=
        CL_ABAP_TYPEDESCR =>DESCRIBE_BY_NAME ( IV_STRUCTURE  ) .

   CLEAR LT_IDETAILS[] .
  LT_IDETAILS[]  = LR_REF_TABLE_DES ->COMPONENTS[] .

   "循环判断结构每个字段
   LOOP  AT LT_IDETAILS .
     ASSIGN  COMPONENT LT_IDETAILS -NAME  OF  STRUCTURE IS_INPUT  TO  L_FIELD   .
     IF SY-SUBRC = 0 AND  IS NOT INITIAL.
       ASSIGN  COMPONENT LT_IDETAILS -NAME  OF  STRUCTURE CS_INPUT  TO  《  L_FIELD_C   .
IF SY-SUBRC 0
           《  L_FIELD_C   =   L_FIELD .
endif.
     ENDIF .
   ENDLOOP .



ENDFUNCTION .


测试程序:
REPORT  YLM_TEST026.


DATA: LW_SPFLI LIKE SPFLI.
DATA: LW_SPFLI2 LIKE SPFLI.

SELECT SINGLE * FROM SPFLI INTO LW_SPFLI.


CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
  EXPORTING
    IS_INPUT     = LW_SPFLI
    IV_STRUCTURE = 'SPFLI'
  CHANGING
    CS_INPUT     = LW_SPFLI2.

IF 1 = 2.

ENDIF.


注释:因为字段负号中尖括号会被web解码时误读,故外面加了书名号: 《  L_FIELD_C  

字段符合赋值后,必须判断subr再操作,不然可能会dump

欢迎关注订阅号: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值