导语:最近在写通用接口生成器,因为最终是要面向用户使用的,让用户通过配置完成接口开发,实现【零代码】,所以就要在程序里加很多友好的提示性报错,其中就用到了弹窗报错,在这里分享一下。
SAP有一个标准的ALV展示弹窗,这里就不详细说ALV弹窗怎么实现了,直接调用就好了,后期会专门写一篇如何创建OOALV弹窗。
标准的函数名为:【UPC_ALV_POPUP】,可以自己定义位置以及长宽高,入参的内表可以随意定义,不局限于示例中的bapiret2,内表参考的数据库表描述会直接展示在弹窗的抬头,这个函数我一般只用来做提示性的报错,或数据展示,因为看起来没有什么按钮可以用。
具体实现代码如下:
DATA:lv_message(40).
DATA:et_return TYPE TABLE OF bapiret2.
"检查接口信息是否为空
IF gt_yh001h1 IS INITIAL.
lv_message = '接口信息不能为空,请检查!' .
PERFORM frm_message_return(zyh_forms) TABLES et_return
USING 'E' 'ZYH' '000' '接口:' p_prog lv_message ''.
ENDIF.
IF et_return[] IS NOT INITIAL.
CALL FUNCTION 'UPC_ALV_POPUP'
EXPORTING
it_outtab = et_return
i_structure_name = 'BAPIRET2'
i_start_column = 30 "位置列
i_start_row = 5 "位置行
i_window_width = 100 "窗口宽度
i_window_heigth = 15 "窗口高度
i_window_title = '单据无法保存:存在以下错误'.
EXIT. "退出后续处理
ENDIF.
以下是FORM的代码,我习惯把通用的FORM放在一个专门REPORT里,这样可以提高代码的复用性,不用每次都粘在程序里,直接调用就好了
REPORT zyh_forms.
"弹窗报错FORMS.
FORM frm_message_return TABLES ct_return STRUCTURE bapiret2
USING iv_msgty iv_msgid iv_msgno iv_msgv1 iv_msgv2 iv_msgv3 iv_msgv4.
DATA: lw_return TYPE bapiret2.
lw_return-type = iv_msgty.
lw_return-id = iv_msgid.
lw_return-number = iv_msgno.
.
*LW_RETURN-LOG_NO = .
*LW_RETURN-LOG_MSG_NO = .
lw_return-message_v1 = iv_msgv1.
lw_return-message_v2 = iv_msgv2 .
lw_return-message_v3 = iv_msgv3.
lw_return-message_v4 = iv_msgv4.
* MESSAGE ID iv_msgid TYPE iv_msgty NUMBER iv_msgno WITH iv_msgv1 iv_msgv2 iv_msgv3 iv_msgv4 INTO
* lw_return-message .
CONCATENATE iv_msgv1 iv_msgv2 iv_msgv3 iv_msgv4 INTO lw_return-message.
*LW_RETURN-PARAMETER = .
*LW_RETURN-ROW = .
*LW_RETURN-FIELD = .
*LW_RETURN-SYSTEM = .
APPEND lw_return TO ct_return.
ENDFORM.
效果展示:
作者:小飞猪猪猪猪猪猪猪–CSDN
注意:转发请注明作者