SAP实战中Submit的常见用法-调用标准程序
2017-07-28 13:42
1066 查看
场景:系统MB52/MB51/MB5B等类似的报表,虽然数据很全面,执行效率也够快,但是经常会不满足用户需求(增添字段、添加查询条件等),很多ABAP会选择去COPY出标准程序,然后去做修改,强烈不推荐此种方式,弊端太大,容易使标准程序出现问题,且效率低(特别涉及MSEG等数据库表)。 我们可以使用SUBMIT,此语法可将获取系统标准报表数据,然后你就可以自己去加一层壳来实现自己的定制。 语法: SUBMIT {rep|(name)} [selscreen_options] [list_options] [job_options] [AND RETURN]. 复制代码 selscreen_options:主要是标准程序选择界面Field,通过F1去查看具体Field name 方式一:获取ALV报表结果数据(不局限于严格意义上的ALV Grid、LIST报表也能获取到值),关键代码: SUBMIT TRY. cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ). ASSIGN lr_alv_data->* TO <lt_alv_data>. CATCH cx_salv_bs_sc_runtime_info. MESSAGE 'Unable to retrieve ALV data! Please try other conditions.' TYPE 'E'. ENDTRY. 复制代码 示例:获取MB5B执行结果,详细代码: *&---------------------------------------------------------------------* *& *& 获取MB5B数据 *&---------------------------------------------------------------------* DATA:lr_alv_data TYPE REF TO data. FIELD-SYMBOLS : <lt_alv_data> TYPE ANY TABLE . FIELD-SYMBOLS : <lt_data> TYPE ANY. "LIKE LINE OF it_tab . *&---------------------------------------------------------------------* *& "计算特殊库存E的期初期末 *&---------------------------------------------------------------------* cl_salv_bs_runtime_info=>set( EXPORTING display = abap_false metadata = abap_false data = abap_true ). CLEAR lr_alv_data. UNASSIGN <lt_alv_data>. SUBMIT rm07mlbd "MB5B特殊库存及搜索条件 WITH matnr IN so_matnr WITH werks IN so_werks WITH lgort EQ so_lgort-low "循环获取每个库存地点的期初期末 WITH sobkz EQ 'E' WITH datum IN so_budat "库存类型-特殊库存 WITH lgbst EQ space WITH bwbst EQ space WITH sbbst EQ 'X' "设置 WITH xsum EQ space WITH pa_sumfl EQ 'X' WITH xchar EQ space WITH xnomchb EQ space WITH xnomchb EQ space WITH nosto EQ space WITH pa_dbstd EQ 'X' AND RETURN. TRY. cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ). ASSIGN lr_alv_data->* TO <lt_alv_data>. CATCH cx_salv_bs_sc_runtime_info. MESSAGE 'Unable to retrieve ALV data! Please try other conditions.' TYPE 'E'. ENDTRY. cl_salv_bs_runtime_info=>clear_all( ). " IF <lt_alv_data> IS ASSIGNED. UNASSIGN <lt_data>. LOOP AT <lt_alv_data> ASSIGNING <lt_data>."即所需要内表数据 ENDLOOP. ENDIF. 复制代码 方式二:将执行结果放入MEMORY(此法用于结果不是很明确的ALV结构),关键代码: EXPORT export_list TO MEMORY ID 'MB51_EXPORT_LIST'. SUBMIT... IMPORT export_list FROM MEMORY ID 'MB51_EXPORT_LIST'. 复制代码 示例:获取MB51执行结果数据,详细代码: *&---------------------------------------------------------------------* *& Report ZTEST_CALL_MB51 *& *&---------------------------------------------------------------------* *& *& 获取MB51数据 *&---------------------------------------------------------------------* REPORT ztest_call_mb51. TYPE-POOLS:abap. TABLES:mseg,mara,mard. DATA: flag(01) TYPE c VALUE 'X', "Name for compatibility with MB03 "MAA EhP4 no_list(01) TYPE c VALUE 'X'. "Do not show the list "MAA EhP4 DATA: BEGIN OF export_list OCCURS 0, matnr TYPE mseg-matnr, maktx TYPE makt-maktx, werks TYPE mseg-werks, name1 TYPE t001w-name1, lgort TYPE mseg-lgort, charg TYPE mseg-charg, "351455 bwtar TYPE mseg-bwtar, "351455 bwart TYPE mseg-bwart, sobkz TYPE mseg-sobkz, btext TYPE t156t-btext, mblnr TYPE mseg-mblnr, mjahr TYPE mseg-mjahr, zeile TYPE mseg-zeile, budat TYPE mkpf-budat, erfmg TYPE mseg-erfmg, erfme TYPE mseg-erfme, lifnr TYPE mseg-lifnr, vgart TYPE mkpf-vgart, END OF export_list. SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01. SELECT-OPTIONS:so_werks FOR mseg-werks OBLIGATORY, so_matnr FOR mseg-matnr, so_mtart FOR mara-mtart, so_matkl FOR mara-matkl, so_lgort FOR mard-lgort. SELECT-OPTIONS so_mtr_i FOR mseg-matnr NO-DISPLAY . SELECTION-SCREEN: END OF BLOCK blk1. START-OF-SELECTION. EXPORT flag TO MEMORY ID 'MB51_FLAG'. EXPORT no_list TO MEMORY ID 'MB51_NOLIST' . EXPORT export_list TO MEMORY ID 'MB51_EXPORT_LIST'. SUBMIT rm07docs WITH matnr IN so_matnr WITH werks IN so_werks WITH lgort IN so_lgort WITH database EQ abap_true WITH pa_dbstd EQ abap_true WITH mb51_flag EQ flag WITH mb51_nolist EQ no_list EXPORTING LIST TO MEMORY AND RETURN. IMPORT export_list FROM MEMORY ID 'MB51_EXPORT_LIST'. FREE MEMORY ID 'MB51_EXPORT_LIST'. LOOP AT export_list."export_list 为需要的内表数据 ENDLOOP. 复制代码 |
相关文章推荐
- SAP中程序间的相互调用,SUBMIT关键字的用法
- SAP中程序间的相互调用,SUBMIT关键字的用法
- abap submit用法(一)调用外部程序(abap内存获取数据)
- 调用程序 submit
- [VB](更正:此前理解错误,static在整个程序运行中保留原值,每次调用过程static都应该保留上次原值,答案懒得改了)常见小程序积累
- Apache Spark技术实战之6 -- spark-submit常见问题及其解决
- arm AAPCS(程序调用标准)
- 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
- 从SAP通过JCO调用Java程序(1)-配置
- 实战SAP:【总结】系统生产数据表维护程序
- 标准表达式-Thymeleaf常见用法(二)
- sort函数的用法(C++排序库函数的调用) 对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。 (一)为什么要用c++标准库里的排序函数 Sort()函数是c+
- 标准C/C++程序通过gSOAP调用WebService
- 小程序webview访问别人网页,微信小程序web-view调用第三方网站内容——小程序webview高级用法16
- SAP ALV标准范例程序介绍
- SAP ABAP exporting list to memory ...SUBMIT 程序传输屏幕参数
- SAP ABAP子程序SUBMIT调用的方法
- SAP 调用外部程序 .转
- sap abap程序之间的调用
- webview打开微信支付,web view h5页面中调用小程序支付——小程序web-view高级用法11