level 5
求助关于smartform的设计问题
整个表分成三部分,第一部分表头加明细,第二部分全是明细,并且内容过多一直在第二部分不停的换页,一直换页到第三部分明细加表尾结束
2020年01月10日 08点01分
1
level 5
我只知道设计三个page写死的,根本不知道怎么实现中间那块的需求,求大神指点一下
2020年01月10日 08点01分
2
level 11
你写的复杂了, 需要完全靠逻辑控制, 这很麻烦的.. 你需要在外面计算大量参数, 算出什么时候第2页输出完,, 把强行换页的参数传输进来, 第3页就根据那个参数进行换页.. 其实SAP有自动换页的...
2020年01月14日 09点01分
3
level 11
DATA: gs_fname TYPE rs38l_fnam,
gs_options TYPE ssfcompop,
gs_control TYPE ssfctrlop.
第1步: 获取smartform的函数
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = p_name
IMPORTING fm_name = gs_fname
EXCEPTIONS no_form = 1
no_function_module = 2
OTHERS = 3.
第2步: 打开smartform函数
gs_control-no_open = 'X'.
gs_control-no_close = 'X'.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
control_parameters = gs_control
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
第3步: 循环抬头内表lt_head, 只包含第一页签和第三页签的数据.
LOOP AT lt_head INTO ls_head.
第4步: 循环所有数据的内表, 按抬头的matnr, 把相同matnr的数据都给最终打印的行项目内内表lt_item_print.
REFRESH: lt_item_print.
LOOP AT lt_item INTO ls_item where matnr = ls_head-matnr.
APPEND ls_item TO lt_item_print.
CLEAR: ls_item.
ENDLOOP.
" 第5步: 调用打印函数
CALL FUNCTION gs_fname
EXPORTING
control_parameters = gs_control
gs_head = ls_head
TABLES gt_item = lt_item_print[]
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CLEAR: ls_head.
ENDLOOP.
第6步: 关闭smartform函数
CALL FUNCTION 'SSF_CLOSE'.
2020年01月14日 09点01分
5
level 11
smartforms中的main窗口自带延续换页输出数据功能, 只要你控制matnr控制好给行项目的参数, 就能自动达到换页的功能..
2020年01月14日 09点01分
6