首页 > 其他分享 >SAP实战中Submit的常见用法(方法二挺好用的,标准,自定义报表都可以用)

SAP实战中Submit的常见用法(方法二挺好用的,标准,自定义报表都可以用)

时间:2022-12-28 16:46:10浏览次数:58  
标签:自定义 mseg TYPE list Submit data 挺好用 so EQ

场景:系统MB52/MB51/MB5B等类似的报表,虽然数据很全面,执行效率也够快,但是经常会不满足用户需求(增添字段、添加查询条件等),很多ABAP会选择去COPY出标准程序,然后去做修改,强烈不推荐此种方式,弊端太大,容易使标准程序出现问题,且效率低(特别涉及MSEG等数据库表)。

我们可以使用SUBMIT,此语法可将获取系统标准报表数据,然后你就可以自己去加一层壳来实现自己的定制。

语法:

  1. SUBMIT {rep|(name)} [selscreen_options]
  2. [list_options]
  3. [job_options]
  4. [AND RETURN].
selscreen_options:主要是标准程序选择界面Field,通过F1去查看具体Field name

方式一:获取ALV报表结果数据(不局限于严格意义上的ALV Grid、LIST报表也能获取到值),关键代码:
  1. SUBMIT
  2.     TRY.
  3.         cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ).
  4.         ASSIGN lr_alv_data->* TO <lt_alv_data>.
  5.       CATCH cx_salv_bs_sc_runtime_info.
  6.         MESSAGE 'Unable to retrieve ALV data! Please try other conditions.' TYPE 'E'.
  7.     ENDTRY.

示例:获取MB5B执行结果,详细代码:
  1. *&---------------------------------------------------------------------*
  2. *&
  3. *& 获取MB5B数据 
  4. *&---------------------------------------------------------------------*
  5. DATA:lr_alv_data TYPE REF TO data. 
  6. FIELD-SYMBOLS : <lt_alv_data> TYPE ANY TABLE .
  7. FIELD-SYMBOLS : <lt_data> TYPE ANY. "LIKE LINE OF  it_tab . 
  8. *&---------------------------------------------------------------------*
  9. *& "计算特殊库存E的期初期末
  10. *&---------------------------------------------------------------------*
  11.     cl_salv_bs_runtime_info=>set( EXPORTING display  = abap_false
  12.                                             metadata = abap_false
  13.                                             data     = abap_true ).
  14.     CLEAR lr_alv_data.
  15.     UNASSIGN <lt_alv_data>.
  16.     SUBMIT rm07mlbd                                         "MB5B特殊库存及搜索条件
  17.            WITH matnr IN so_matnr
  18.            WITH werks IN so_werks
  19.            WITH lgort EQ so_lgort-low "循环获取每个库存地点的期初期末
  20.            WITH sobkz EQ 'E'
  21.            WITH datum IN so_budat
  22.            "库存类型-特殊库存
  23.            WITH lgbst EQ space
  24.            WITH bwbst EQ space
  25.            WITH sbbst EQ 'X'
  26.            "设置
  27.            WITH xsum EQ space
  28.            WITH pa_sumfl EQ 'X'
  29.            WITH xchar EQ space
  30.            WITH xnomchb EQ space
  31.            WITH xnomchb EQ space
  32.            WITH nosto EQ space
  33.            WITH pa_dbstd EQ 'X'
  34.            AND RETURN.
  35.     TRY.
  36.         cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ).
  37.         ASSIGN lr_alv_data->* TO <lt_alv_data>.
  38.       CATCH cx_salv_bs_sc_runtime_info.
  39.         MESSAGE 'Unable to retrieve ALV data! Please try other conditions.' TYPE 'E'.
  40.     ENDTRY.
  41.     cl_salv_bs_runtime_info=>clear_all( ).
  42.     "
  43.     IF <lt_alv_data> IS ASSIGNED.
  44.       UNASSIGN <lt_data>.
  45.       LOOP AT <lt_alv_data> ASSIGNING <lt_data>."即所需要内表数据
  46.       ENDLOOP.
  47.     ENDIF.

方式二:将执行结果放入MEMORY(此法用于结果不是很明确的ALV结构),关键代码:
  1. EXPORT export_list TO MEMORY ID 'MB51_EXPORT_LIST'.
  2. SUBMIT...
  3. IMPORT export_list FROM MEMORY ID 'MB51_EXPORT_LIST'.
示例:获取MB51执行结果数据,详细代码:
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZTEST_CALL_MB51
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *& 获取MB51数据
  7. *&---------------------------------------------------------------------*
  8. REPORT  ztest_call_mb51.
  9. TYPE-POOLS:abap.
  10. TABLES:mseg,mara,mard.
  11. DATA:
  12.       flag(01)    TYPE  c VALUE 'X', "Name for compatibility with MB03 "MAA EhP4
  13.       no_list(01) TYPE  c VALUE 'X'. "Do not show the list             "MAA EhP4
  14. DATA: BEGIN OF export_list OCCURS 0,
  15.         matnr TYPE mseg-matnr,
  16.         maktx TYPE makt-maktx,
  17.         werks TYPE mseg-werks,
  18.         name1 TYPE t001w-name1,
  19.         lgort TYPE mseg-lgort,
  20.         charg TYPE mseg-charg,                              "351455
  21.         bwtar TYPE mseg-bwtar,                              "351455
  22.         bwart TYPE mseg-bwart,
  23.         sobkz TYPE mseg-sobkz,
  24.         btext TYPE t156t-btext,
  25.         mblnr TYPE mseg-mblnr,
  26.         mjahr TYPE mseg-mjahr,
  27.         zeile TYPE mseg-zeile,
  28.         budat TYPE mkpf-budat,
  29.         erfmg TYPE mseg-erfmg,
  30.         erfme TYPE mseg-erfme,
  31.         lifnr TYPE mseg-lifnr,
  32.         vgart TYPE mkpf-vgart,
  33.       END OF export_list.
  34. SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
  35. SELECT-OPTIONS:so_werks FOR mseg-werks OBLIGATORY,
  36.                           so_matnr FOR mseg-matnr,
  37.                           so_mtart FOR mara-mtart,
  38.                           so_matkl FOR mara-matkl,
  39.                           so_lgort FOR mard-lgort.
  40. SELECT-OPTIONS so_mtr_i FOR mseg-matnr NO-DISPLAY .
  41. SELECTION-SCREEN: END OF BLOCK blk1.
  42. START-OF-SELECTION.
  43.   EXPORT flag TO MEMORY ID 'MB51_FLAG'.
  44.   EXPORT no_list TO MEMORY ID 'MB51_NOLIST' .
  45.   EXPORT export_list TO MEMORY ID 'MB51_EXPORT_LIST'.
  46.   SUBMIT rm07docs
  47.     WITH matnr IN so_matnr
  48.     WITH werks IN so_werks
  49.     WITH lgort IN so_lgort
  50.     WITH database EQ abap_true
  51.     WITH pa_dbstd EQ abap_true
  52.     WITH mb51_flag EQ flag
  53.     WITH mb51_nolist EQ no_list
  54.   EXPORTING LIST TO MEMORY AND RETURN.
  55.   IMPORT export_list FROM MEMORY ID 'MB51_EXPORT_LIST'.
  56.   FREE MEMORY ID 'MB51_EXPORT_LIST'.
  57.   LOOP AT export_list."export_list 为需要的内表数据
  58.   ENDLOOP.
  59. ***********************************************************************

标签:自定义,mseg,TYPE,list,Submit,data,挺好用,so,EQ
From: https://www.cnblogs.com/liaoyunbo/p/17010430.html

相关文章

  • spark自定义分区
    目录一、需求二、代码展示三、数据展示四、结果展示五、三种分区方式介绍一、需求    防止大量数据倾斜,自定义Partition的函数,map阶段使用元祖(int,String)int去模做......
  • layui自定义列表文件超链接
    <scripttype="text/html"id="operator_bar_files">{{#layui.each(d.files,function(index,item){}}{{#if(index<=1){}}<ahref="{{window.fil......
  • 常见的分词方法接口+ jieba自定义领域内的词表然后加载词表进行分词
    ​​中文分词常见方法_mandagod的博客_中文分词​​另外,我们收集了如下部分分词工具,供参考:中科院计算所NLPIR ​​http://ictclas.nlpir.org/nlpir/​​ansj分词器 ​​ht......
  • 006 使用动态代理实现自定义注解功能
    问题的提出:自定义一个注解,如@MyLog,当把此注解加在函数上时,该函数的调用会被自动日志。解题思路:创建函数所在对象的动态代理,当该函数被调用时,在代理中进行日志。两种方法:......
  • Vue自定义hook
    自定义hook函数什么是hook?——本质是一个函数,把setup函数中使用的CompositionAPI进行了封装。类似于vue2.x中的mixin。自定义hook的优势:复用代码,让setup中......
  • iOS6下自定义UI控件外观效果
    尽管iOS原生的UI控件就已经有很不错的显示效果,但是App开发者仍然希望自己的产品与众不同,所以自定义UI外观成了每个App产品开发必做之事。今天就来做一个在iOS6下实现自定义U......
  • 自定义异常
    自定义异常:       ......
  • ASP.NET 2.0中使用自定义provider (2)
     在teched2005上,有对asp.net2.0的介绍,其中讲到asp.net2.0提供了很多功能,让程序员做少很多东西,这引起了大家的疑惑:asp.net2.0的自定义能力如何?扩......
  • 【WPF】自定义一个自删除的多功能ListBox
    原文地址https://www.cnblogs.com/younShieh/p/17008534.html❤如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~❤我需要一个ListBox,他在界面上分为几......
  • SpringBoot - 自定义拦截器HandlerInterceptor
    1.实现HandlerInterceptor接口/***自定义拦截器*/publicclassMyInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(Htt......