导语:最近需求需要获取一个函数的结果,但是这个结果是ALV显示的,但是只需要他的数据,不需要他的展示。
需求:获取到函数【K_KKB_KKBCS_ORDER_REPORT】的ALV输出内表得值。
实现方法:
调用 cl_salv_bs_runtime_info=>get_data_ref
这里以带有ALV的函数为例,也可以直接通过SUBMIT来获取标准程序的内表
先封装一个程序
REPORT zcor007c.
DATA:ls_time_range TYPE kkb_time_range.
PARAMETERS: p_aufnr TYPE aufk-aufnr.
START-OF-SELECTION.
CALL FUNCTION 'K_KKB_KKBCS_ORDER_REPORT'
EXPORTING
i_aufnr = p_aufnr
EXCEPTIONS
object_not_found = 1
no_data = 2
no_authority = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FIELD-SYMBOLS <lt_data> TYPE STANDARD TABLE. "定义承接数据的动态内表
DATA lcl_data TYPE REF TO data.
DATA(lv_datum) = sy-datum + 1.
"初始设置
cl_salv_bs_runtime_info=>set( EXPORTING display = abap_false
metadata = abap_false
data = abap_true ).
"调用封装好的程序
SUBMIT zcor007c WITH p_aufnr = '100000001' AND RETURN.
IF sy-subrc = 0.
"获取ALV内表的值
TRY .
cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lcl_data ).
CATCH cx_salv_bs_sc_runtime_info INTO DATA(cx_error).
ENDTRY.
"清空所有变量 一定要清,不然可能会对自己的ALV展示会有影响
cl_salv_bs_runtime_info=>clear_all( ).
ASSIGN lcl_data->* TO <lt_data>.
CHECK <lt_data> IS ASSIGNED.
ENDIF.
结果展示:
说明:如果A程序中SUBMIT一个程序,B程序再继续用上面的方法SUBMIT是不支持的,可以通过程序间调用FORM实现。
*&---------------------------------------------------------------------*
*& Form frm_alv_display
*&---------------------------------------------------------------------*
*& 提供给其他程序调用
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM zcor020 TABLES et_out r_bukrs r_budat r_werks.
s_bukrs[] = r_bukrs[].
s_budat[] = r_budat[].
s_werks[] = r_werks[].
CLEAR: gt_out,gt_so,gt_pc,gt_pt,gs_so,gt_co020,gt_mara,gt_lfa1,gt_t001l,gt_t023t.
CLEAR:gs_so,gs_co020,gs_mara,gs_lfa1,gs_t001l,gs_t023t.
p_t1 = 30.
p_unit1 = '天'.
p_t2 = 60.
p_unit2 = p_unit1.
p_t3 = 90.
p_unit3 = p_unit1.
p_t4 = 180.
p_unit4 = p_unit1.
p_t5 = 270.
p_unit5 = p_unit1.
p_t6 = 365.
p_unit6 = p_unit1.
PERFORM frm_get_data.
PERFORM frm_deal_data.
MOVE-CORRESPONDING gt_out[] TO et_out[].
ENDFORM.
作者:小飞猪猪猪猪猪猪猪–CSDN