Submit 到ALV报表处理

FUNCTION zfm_mdm_material_price.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(INPUT) TYPE  ZSZFM_MDM_MATERIAL_PRICE
*"  EXPORTING
*"     VALUE(OUTPUT) TYPE  ZSFM_MDM_MATERIAL_PRICE_OUTPUT
*"----------------------------------------------------------------------
  DATA:ls_ifsort TYPE zsall_iflog_zfield.
  TYPES:
    BEGIN OF s_out, "-- from reort - RKKBMLMAT
      kalnr       TYPE ckmlhd-kalnr,
      mlast       TYPE ckmlhd-mlast,
      matnr       TYPE ckmlhd-matnr,
      bwkey       TYPE ckmlhd-bwkey,
      bwtar       TYPE ckmlhd-bwtar,
      sobkz       TYPE ckmlhd-sobkz,
      vbeln       TYPE ckmlhd-vbeln,
      posnr       TYPE ckmlhd-posnr,
      pspnr       TYPE ckmlhd-pspnr,
      bdatj       TYPE ckmlpp-bdatj,
      poper       TYPE ckmlpp-poper,
      ico_xsettle TYPE ckml_icon4,
      ico_xclose  TYPE ckml_icon4,
      curtp       TYPE ckmlcr-curtp,
      bklas       TYPE mbew-bklas,
      mtart       TYPE mara-mtart,
      matkl       TYPE mara-matkl,
      spart       TYPE mara-spart,
      ktext       TYPE makt-maktx,
      vprsv       TYPE ckmlcr-vprsv,
      lbkum       TYPE ckmlpp-lbkum,
      meins       TYPE mara-meins,
      salk3       TYPE ckmlcr-salk3,
      salkv       TYPE ckmlcr-salkv,
      eb_dif      TYPE cki_doc_ml-eb_dif,
      stprs       TYPE ckmlcr-stprs,
      pvprs       TYPE ckmlcr-pvprs,
      prabw_prz   TYPE ck_prabw_prz,
      peinh       TYPE ckmlcr-peinh,
      waers       TYPE waers,
    END OF s_out. "-- from reort - RKKBMLMAT
  DATA: lt_out TYPE ztmaterial_output,
        ls_out LIKE LINE OF lt_out.

  DATA: gt_seltab TYPE TABLE OF rsparams,
*      gt_seltab_comm TYPE TABLE OF rsparams,
        gs_seltab TYPE rsparams.
  DATA: gv_programm TYPE sy-cprog.
  DATA: gs_data TYPE REF TO data.
  FIELD-SYMBOLS: <gt_data>    TYPE table,
                 <gs_data>    TYPE data,
                 <dyn_wa>     TYPE any,
                 <dyn_field>  TYPE any,
                 <dyn_field2> TYPE any,
                 <dyn_field3> TYPE any,
                 <dyn_value>  TYPE any.

  DEFINE mcr_catch_data.
    "&1: From 字段名  &2:To 字段名
    ASSIGN COMPONENT &1 OF STRUCTURE <gs_data> TO <dyn_field>.
    IF sy-subrc EQ 0 .
      &2 = <dyn_field>.
    ENDIF.
  END-OF-DEFINITION.

*-----------------------------------------------------------------------
* 启用接口日志
  /log/start.  output-uuid = /log/data-uuid.
*-----------------------------------------------------------------------

  IF input-werks IS INITIAL.
    output-status = 'E'.
    output-message = '工厂必输'.

    EXIT.
  ENDIF.

  DEFINE def_append_matnr.
    APPEND VALUE #( sign = 'I' option = 'EQ' low = &1 ) TO lr_matnr.
  END-OF-DEFINITION.

  DATA:lv_werks TYPE werks_d,
       lv_poper TYPE cki_doc_ml-sl_periode,
       lv_bdatj TYPE ckmlrunplant-gjahr.

  lv_werks = input-werks.
  lv_poper = input-poper.
  lv_bdatj = input-gjahr .

  "整理选择条件

  CLEAR:gt_seltab.
  IF lv_werks IS NOT INITIAL.
    gt_seltab = VALUE #( BASE gt_seltab[]
    ( selname = 'P_WERKS' kind = 'P' sign = 'I' option = 'EQ' low = lv_werks )
    ).
  ENDIF.

  LOOP AT input-matnr INTO DATA(ls_matnr).
    gt_seltab = VALUE #( BASE gt_seltab[]
    ( selname = 'R_MATNR' kind = 'S' sign = 'I' option = 'EQ' low = ls_matnr  )
     ).
  ENDLOOP.
  "期间
  gt_seltab = VALUE #( BASE gt_seltab[]
    ( selname = 'P_POPER' kind = 'P' sign = 'I' option = 'EQ' low = lv_poper )
    ).
  "年度
  gt_seltab = VALUE #( BASE gt_seltab[]
  ( selname = 'P_BDATJ' kind = 'P' sign = 'I' option = 'EQ' low = lv_bdatj )
  ).
  "设置ALV - 不显示
  cl_salv_bs_runtime_info=>set( display  = ''
                                metadata = ''
                                data     = 'X' ).


  SUBMIT rkkbmlmat WITH SELECTION-TABLE gt_seltab AND RETURN.

  TRY.
      cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = gs_data ).
      ASSIGN gs_data->* TO <gt_data>.
    CATCH cx_salv_bs_sc_runtime_info.
      output-status = 'E'.
      output-message = '调用数据错误,请联系SAP管理员'.
  ENDTRY.

  cl_salv_bs_runtime_info=>clear_all( ).

  IF <gt_data> IS ASSIGNED.
    LOOP AT <gt_data> ASSIGNING <gs_data>.
      CLEAR:ls_out.
      mcr_catch_data 'MTART'      ls_out-mtart.
      mcr_catch_data 'SPART'      ls_out-spart.
      mcr_catch_data 'MATKL'      ls_out-matkl.
      mcr_catch_data 'BKLAS'      ls_out-bklas.
      mcr_catch_data 'MATNR'      ls_out-matnr.
      mcr_catch_data 'KTEXT'      ls_out-ktext.
      mcr_catch_data 'BWTAR'      ls_out-bwtar.
      mcr_catch_data 'VBELN'      ls_out-vbeln.
      mcr_catch_data 'POSNR'      ls_out-posnr.
      mcr_catch_data 'PSPNR'      ls_out-pspnr.
      mcr_catch_data 'LBKUM'      ls_out-lbkum.
      mcr_catch_data 'MEINS'      ls_out-meins.
      mcr_catch_data 'WAERS'      ls_out-waers.
      mcr_catch_data 'SALK3'      ls_out-salk3.
      mcr_catch_data 'SALKV'      ls_out-salkv.
      mcr_catch_data 'EB_DIF'     ls_out-eb_dif.
      mcr_catch_data 'MLAST'      ls_out-mlast.
      mcr_catch_data 'VPRSV'      ls_out-vprsv.
      mcr_catch_data 'STPRS'      ls_out-stprs.
      mcr_catch_data 'PVPRS'      ls_out-pvprs.
      mcr_catch_data 'PRABW_PRZ'      ls_out-prabw_prz.
      mcr_catch_data 'PEINH'      ls_out-peinh.
      APPEND ls_out TO lt_out.
    ENDLOOP.
  ENDIF.

  IF lt_out[] IS NOT INITIAL.
    output-status = 'S'.
    output-message = '查询成功'.
    output-data = lt_out[].
  ELSE.
    IF output-status = ''.
      output-status = 'E'.
      output-message = '查询无数据'.
    ENDIF.
  ENDIF.

*-----------------------------------------------------------------------
* 结束接口日志 &1状态码 &2消息 &3搜索项
  /log/end output-status output-message ls_ifsort.
*-----------------------------------------------------------------------

ENDFUNCTION.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值