工具函数:把一个工作区中非空字段…

网友投稿 278 2022-09-25

工具函数:把一个工作区中非空字段…

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:云原生中间件的技术演讲与未来趋势展望
下一篇:回归春节档!《唐人街探案3》官宣定档2021年大年初一!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~