一个完整ALV(常见问题包括top-of-page等)

1、用OO的方法显示ALV:



2、调用一个标准的method显示ALV:(一般的FM在显示标准的字段例如10位的SO号码-vbeln,当有这个号码有前导0的时候,导出ALV显示结果到Excel的时候会出现少了一位,而用这个method去显示,即使是参考了标准字段,也没有问题。)

注意点是:这里怎么定义fieldcat。(这个只需要定义显示的内表it_output里面的每一个字段都是参考标准的字段的话,那个注释就会自动带出的。)

DATAlo_alv         TYPE REF TO cl_salv_table,
        lo_functions   TYPE REF TO cl_salv_functions_list,
        lx_msg           TYPE REF TO cx_salv_msg,
        lv_text            TYPE string.

* display
  TRY.
      cl_salv_table=>factory(
          IMPORTING
            r_salv_table lo_alv
          CHANGING
            t_table      it_output ).

      lo_functions lo_alv->get_functions).
      lo_functions->set_all).

      lo_alv->display).

    CATCH cx_salv_msg INTO lx_msg.
      lv_text lx_msg->get_text).
      MESSAGE lv_text TYPE 'E'.
  ENDTRY.



3、Top-of-page的写法:

一个最简单的例子:



代码部分:(实际把这个form放到ALV的function中就可以了)

form frm_top_of_page.

  datalt_header type slis_t_listheader,
        wa_header type slis_listheader,
        e_date type char10.

  call function 'CONVERT_DATE_TO_EXTERNAL'
    exporting
      date_internal                  p_kydat
    importing
      date_external                  e_date
    exceptions
      date_internal_is_invalid       1
      others                         2
             .
  if p_duedt 'X'.   "Base on due date
    concatenate text-044 e_date into wa_header-info separated by space.
  elseif p_bldat 'X'.               "Base on document date
    concatenate text-045 e_date into wa_header-info separated by space.
  elseif p_budat 'X'.               "Base on Posting Date
    concatenate text-046 e_date into wa_header-info separated by space.
  elseif p_zfbdt 'X'.               "Base on Baseline Date
    concatenate text-047 e_date into wa_header-info separated by space.
  endif.
  wa_header-typ  'H'.
  append wa_header to lt_header.

  call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
      it_list_commentary lt_header.

endform.                    "frm_top_of_page


4、建立自己的ALV显示按钮和user_command(简单例子):



5、fieldcat的所有功能字段:



6、ALV显示数据后,双击可以弹出另外一个ALV报表:



7、通过submit 一个ALV report,还可以得到它的所有信息(cl_salv_bs_runtime_info

http://scn.sap.com/community/abap/blog/2011/07/07/gain-programmatic-access-to-data-of-sapgui-alv-reports(the layoutfield catalogkey fieldsfiltersetcplus the data table):


cl_salv_bs_runtime_info=>set(
    EXPORTING display  abap_false
              metadata abap_false
              data     abap_true ).

  SUBMIT (P_PRO)                             "运行ALV程序
  VIA SELECTION-SCREEN
  AND RETURN.

  "读取ALV程序的the data table
  cl_salv_bs_runtime_info=>get_data_ref(
        IMPORTING r_data gt_pro1_data ).
      ASSIGN gt_pro1_data->TO <PRO1_DATA>.

  cl_salv_bs_runtime_info=>clear_all).




常见问题:


1、显示格式问题



2、显示正常,导出出现漏数

情况一:  一般的FM在显示标准的字段例如10位的SO号码-vbeln,当有这个号码有前导0的时候,导出ALV显示结果到Excel的时候会出现少了一位,而用这个method去显示,即使是参考了标准字段,也没有问题。


情况二:


3、fieldcat的问题导致出现的dump:



4、ALV后台显示有问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值