【被懒神训斥:好久没写代码的第二天】
确实好久没写了,因为现在的工作内容更多偏向于业务,不过想了想,代码是自己的根本,所以今天决定每天一更,把以前的笔记回顾
【SAMRTFORM】
业务前提:
在传统的SMARTFORM的开发过程中,当SMARTFORM激活成功之后,系统会自动生成一个函数
截图如下:
缺点:
可以看到,如上截图,CALL FUNCTION的时候,系统自动生成的SMARTFORM函数的名称很难识别,如果遇到懒一点开发人员,不打注释,后面去找这个函数对应的SMARTFORM,会很烦躁,这个时候SSF_FUNCTION_MODULE_NAME的好处就体现出来了。
SSF_FUNCTION_MODULE_NAME好处:
方便后期运维,找问题简单点,而且可以写个函数/方法,后期直接调函数,把SMARTFORM的命名当作一个入参,这样所有的打印,都调用一个函数即可
使用方法如下
DATA:fm_name1 TYPE rs38l_fnam,
lt_print TYPE TABLE OF ztfico037,
ls_print TYPE ztfico037.
LOOP AT gt_data INTO gs_data.
ls_print-jahrper = gs_data-jahrper .
ls_print-werks = gs_data-werks .
ls_print-cpname = gs_data-cpname .
ls_print-wgshul = gs_data-wgshul .
ls_print-danjia = gs_data-danjia .
ls_print-chanzhi = gs_data-chanzhi .
APPEND ls_print TO lt_print.
CLEAR:ls_print,gs_data.
ENDLOOP.
*用函数调用SMARTFORMS的名称
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSFFICO037' "SAMRTFORMS的命名
IMPORTING
fm_name = fm_name1
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
*调用打印数据函数
CALL FUNCTION fm_name1
TABLES
gt_data = lt_print.
IF sy-subrc <> 0.
ENDIF.