ABAP 选择屏幕自定义MESSAGE,调用MESSAGE后返回选择屏幕

 

选择屏幕中因为SELECT-OPTIONS无法判断两个输入值都为必填项,所以我在选择屏幕的PAI 事件中加入判断条件,但是直接调用MESSAGE E 回跳转界面,不能返回选择屏幕,所以用到以下方法。先设定MESSAGE类型为S,然后修改成E,这样可以正常显示回执信息,下一句是为了让消息语句执行完后返回选择屏幕界面,但LEAVE LIST-PROCESSING这句只能在START-OF-SELECTION中使用。

 

START-OF-SELECTION.

  PERFORM frm_judge_datetime.

form FRM_JUDGE_DATETIME .

IF s_cpudt-low IS INITIAL.
    MESSAGE S001(00) WITH '请输入所有必输字段' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.

  ENDIF.

endform.

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java类库JFreeChart绘制折线图并通过RFC接口传递给ABAP程序的示例代码: Java端代码: ```java import java.awt.Color; import java.awt.Font; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.RectangleInsets; public class LineChart { public static byte[] generateChart() throws Exception { // 创建数据集 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(212, "S1", "2016"); dataset.addValue(504, "S1", "2017"); dataset.addValue(1520, "S1", "2018"); dataset.addValue(1845, "S1", "2019"); dataset.addValue(2190, "S1", "2020"); // 创建折线图对象 JFreeChart chart = ChartFactory.createLineChart("Sales Volume", // 图表标题 "Year", // x轴标签 "Volume", // y轴标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向 true, // 是否显示图例 true, // 是否显示提示 false // 是否生成URL链接 ); // 设置折线图属性 chart.setBackgroundPaint(Color.WHITE); chart.setBorderVisible(false); chart.setAntiAlias(true); chart.setTextAntiAlias(true); chart.getTitle().setFont(new Font("宋体", Font.BOLD, 16)); chart.setPadding(new RectangleInsets(5, 5, 5, 5)); CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.setBackgroundPaint(Color.WHITE); plot.setRangeGridlinePaint(Color.LIGHT_GRAY); plot.setDomainGridlinePaint(Color.LIGHT_GRAY); plot.setAxisOffset(new RectangleInsets(5, 5, 5, 5)); plot.setOutlineVisible(false); // x轴属性 CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 12)); domainAxis.setLabelFont(new Font("宋体", Font.BOLD, 14)); domainAxis.setLowerMargin(0.02); domainAxis.setUpperMargin(0.02); domainAxis.setCategoryMargin(0.1); // y轴属性 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 12)); rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 14)); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); rangeAxis.setAutoRangeIncludesZero(true); rangeAxis.setLowerBound(0); rangeAxis.setUpperBound(2500); // 折线图渲染器 LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); renderer.setSeriesPaint(0, new Color(179, 54, 35)); renderer.setSeriesShapesVisible(0, true); renderer.setSeriesLinesVisible(0, true); // 将折线图保存为图片 BufferedImage bi = chart.createBufferedImage(700, 400); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi, "png", baos); return baos.toByteArray(); } public static void main(String[] args) throws Exception { generateChart(); } } ``` 将该代码打包成Java库,并将其注册到SAP系统中。 ABAP端代码: ```abap REPORT ztest_jfreechart. * 调用Java端的RFC函数 DATA: lv_java_conn TYPE REF TO cl_jco_destination, lv_function TYPE REF TO if_jco_function, lv_result TYPE REF TO cx_root. TRY. lv_java_conn = cl_jco_destination_manager=>get_destination( 'JAVA_SERVER' ). lv_function = lv_java_conn->get_function( 'com.example.LineChart.generateChart' ). lv_function->execute( ). CATCH cx_jco_exception INTO lv_result. MESSAGE lv_result->get_text( ) TYPE 'E'. ENDTRY. * 获取返回值 DATA: lv_image TYPE xstring. lv_function->get_export_parameter( 'RETURN' )->get( CHANGING lv_image ). * 将返回值保存为PNG图片 DATA: lv_file TYPE string. lv_file = '/tmp/chart.png'. OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE. TRANSFER lv_image TO lv_file. CLOSE DATASET lv_file. * 显示PNG图片 CALL FUNCTION 'WDY_BITMAP_FROM_FILE' EXPORTING filename = lv_file EXCEPTIONS cancelled = 1 file_not_fou = 2 wrong_format = 3 others = 4. ``` 该ABAP程序通过RFC接口调用Java端的RFC函数,获取绘制好的折线图,并将其保存为PNG图片,并通过SAP内置函数`WDY_BITMAP_FROM_FILE`显示在屏幕上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值