ABAP ALV动态行列


*&---------------------------------------------------------------------*
*& Report  ZFIR050
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zfir050.
TABLES : bkpf,sscrfields.
TYPE-POOLS: slis.

DATA: wa_layo TYPE lvc_s_layo.
DATA: wa_fcat TYPE lvc_s_fcat,
      it_fcat TYPE lvc_t_fcat.

DATA  it_scol TYPE lvc_t_scol.

DATA: g_grid TYPE REF TO cl_gui_alv_grid.

FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
                <dyn_wa>,<dyn_wa1>,<dyn_wa2>,
                <dyn_field>,<dyn_field1>,<dyn_field2>.

DATA: dy_table TYPE REF TO data,
      dy_line  TYPE REF TO data.

DATA:functxt     TYPE smp_dyntxt.

DATA : gt_ztzbdm TYPE TABLE OF ztzbdm ,
       gs_ztzbdm TYPE ztzbdm.

DATA : gt_zdm1 TYPE TABLE OF zfzh_dm1 WITH HEADER LINE .


*--------------------------------------------------------------------*
*&--------------------------「SCREEN」------------------------------&*
*--------------------------------------------------------------------*
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.

PARAMETERS : p_gjahr TYPE bkpf-gjahr DEFAULT sy-datum(4) OBLIGATORY,
             p_monat TYPE bkpf-monat DEFAULT sy-datum+4(2) OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.

SELECTION-SCREEN : FUNCTION KEY 1 .

INITIALIZATION.
  functxt-icon_id   = icon_intensify.
  functxt-quickinfo = '投资收益率指标表维护'.
  functxt-icon_text = '投资收益率指标表维护'.
  sscrfields-functxt_01 = functxt.

*----------------------------------------------------------------------*
*    At Selection-screen
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

  CASE sscrfields-ucomm.
    WHEN 'FC01'."系统预留的功能码
      PERFORM frm_call_sm30 USING 'ZTZBDM'.

    WHEN OTHERS.
  ENDCASE.


START-OF-SELECTION .

  SELECT  zfzhdm zfzhms FROM zfzh_dm1 INTO CORRESPONDING FIELDS OF TABLE gt_zdm1.

  PERFORM frm_create_table.

  SELECT
    zzbdm
    txt50
    zjsgs
    zqslx
    zscxs
    FROM ztzbdm
    INTO CORRESPONDING FIELDS OF TABLE gt_ztzbdm[].


  LOOP AT gt_ztzbdm INTO gs_ztzbdm.

    IF gs_ztzbdm-zqslx = 'D'.  "直接计算

      PERFORM frm_get_data_d   USING gs_ztzbdm  .

    ELSEIF gs_ztzbdm-zqslx = 'P' .  "首末加权

      PERFORM frm_get_data_p USING gs_ztzbdm .

    ELSEIF gs_ztzbdm-zqslx = 'Y' .  "月平均余额

      PERFORM frm_get_data_y USING gs_ztzbdm .

    ENDIF.
  ENDLOOP.

  PERFORM frm_display.

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA_D
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        直接计算
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_data_d     USING gs_tab TYPE ztzbdm.
*  CLEAR : <dyn_wa>,<dyn_wa1> ,<dyn_wa2>.
  DATA : lv_value(16) TYPE p DECIMALS 2.
  DATA: colname(10) .

  SEARCH  gs_tab-zjsgs FOR '/'.

  IF sy-subrc = 0.
    DATA : lv_text1 TYPE string,
           lv_text2 TYPE string,
           lv_dmbtr1 TYPE zfzhbb-zlsje,
           lv_dmbtr2 TYPE zfzhbb-zlsje,
           lv_dmbtr3(6) TYPE p DECIMALS 4,
           lv_dmbtr3_txt TYPE string.


    DATA : lt_zfzhdm1 TYPE TABLE OF zfzh_dm1 WITH  HEADER LINE .
    CLEAR : lv_text1 ,lv_text2.

    SPLIT gs_tab-zjsgs AT '/' INTO lv_text1 lv_text2.
    IF lv_text1 IS NOT INITIAL AND lv_text2 IS NOT INITIAL .
      READ TABLE <dyn_table> ASSIGNING <dyn_wa1> WITH  KEY ('ZZBDM') = lv_text1.
      READ TABLE <dyn_table> ASSIGNING <dyn_wa2> WITH  KEY ('ZZBDM') = lv_text2.
    ENDIF.



    LOOP AT gt_zdm1.
      CLEAR :lv_dmbtr1,lv_dmbtr2,lv_dmbtr3.
      ASSIGN COMPONENT gt_zdm1-zfzhdm OF STRUCTURE <dyn_wa1>  TO <dyn_field1>.
      IF sy-subrc = 0.
        lv_dmbtr1 = <dyn_field1>.
      ENDIF.


      ASSIGN COMPONENT gt_zdm1-zfzhdm OF STRUCTURE <dyn_wa2>  TO <dyn_field2>.
      IF sy-subrc = 0.
        lv_dmbtr2 = <dyn_field2>.
      ENDIF.

      ASSIGN COMPONENT gt_zdm1-zfzhdm OF STRUCTURE <dyn_wa>  TO <dyn_field>.
      IF sy-subrc = 0.
        IF lv_dmbtr2 <> 0.
          lv_dmbtr3 = lv_dmbtr1 / lv_dmbtr2 * 100.
*          lv_dmbtr3 = lv_dmbtr3 * 100.
          lv_dmbtr3_txt =  lv_dmbtr3.
          CONCATENATE lv_dmbtr3_txt '%' INTO lv_dmbtr3_txt.
          <dyn_field> = lv_dmbtr3_txt.
        ENDIF.
      ENDIF.

    ENDLOOP.

    ASSIGN COMPONENT 'ZLJ' OF STRUCTURE <dyn_wa1>  TO <dyn_field1>.
    lv_dmbtr1 = <dyn_field1>.
    ASSIGN COMPONENT 'ZLJ' OF STRUCTURE <dyn_wa2>  TO <dyn_field2>.
    lv_dmbtr2 = <dyn_field2>.

    ASSIGN COMPONENT  'ZLJ' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    IF lv_dmbtr2 <> 0.
      lv_dmbtr3 = lv_dmbtr1 / lv_dmbtr2 * 100.
*      lv_dmbtr3 = lv_dmbtr3 * 100.
      lv_dmbtr3_txt =  lv_dmbtr3.
      CONCATENATE lv_dmbtr3_txt '%' INTO lv_dmbtr3_txt.
      <dyn_field> = lv_dmbtr3_txt.
    ENDIF.

    ASSIGN COMPONENT  'ZZBDM' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    <dyn_field> = gs_tab-zzbdm.

    ASSIGN COMPONENT  'TXT50' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    CONCATENATE gs_tab-txt50 '(%)' INTO gs_tab-txt50.
    <dyn_field> = gs_tab-txt50.

    APPEND <dyn_wa> TO <dyn_table>.



  ELSE. "全是相加的情况

    DATA : it_fieldvalue TYPE TABLE OF string,
         is_stru  TYPE string.

    SPLIT gs_tab-zjsgs AT '+' INTO TABLE it_fieldvalue.
    RANGES: gr_zxmdm FOR zfzhbb-zxmdm.
    RANGES: gr_hkont FOR skat-saknr.
    DATA : lt_zfzhbb TYPE TABLE OF zfzhbb WITH HEADER LINE.
    DATA : lt_zfzhjgb TYPE TABLE OF zfzhjgb WITH HEADER LINE.

    TYPES :BEGIN OF tyout ,
      zfzhdm TYPE zfzh_dm1-zfzhdm,
      dmbtr  TYPE zfzhbb-zlsje,
      END OF tyout.

    DATA : it_out TYPE TABLE OF tyout WITH HEADER LINE.
    DATA : lt_collect TYPE TABLE OF tyout WITH HEADER LINE.
    DATA : lv_ljdmbtr TYPE zfzhbb-zlsje.

    LOOP AT it_fieldvalue INTO is_stru.
      CLEAR : gr_zxmdm,gr_hkont.

      IF is_stru(1) = 'B'.
        gr_zxmdm-option  = 'EQ'.
        gr_zxmdm-sign    = 'I'.
        gr_zxmdm-low     = is_stru+1(3).
        APPEND gr_zxmdm.

      ELSEIF is_stru(1) = 'K'.
        gr_hkont-option = 'EQ'.
        gr_hkont-sign   = 'I'.
        gr_hkont-low    = is_stru+1(10).
        APPEND gr_hkont.

      ENDIF.
    ENDLOOP.

    "查询报表结果表
    SELECT
      zfzhdm
      zbnje AS dmbtr
      FROM zfzhbb
      INTO CORRESPONDING FIELDS OF TABLE it_out[]
      WHERE gjahr = p_gjahr AND monat = p_monat AND zxmdm IN gr_zxmdm[] AND zbblx = 'F'.


    "查询分账户结果表数据
    SELECT
      zfzhdm
      dmbtr
      FROM zfzhjgb
      APPENDING CORRESPONDING FIELDS OF TABLE it_out[]
      WHERE gjahr = p_gjahr AND monat LE p_monat AND hkont IN gr_hkont[].

    SORT it_out BY zfzhdm.
    lv_ljdmbtr = 0.
    LOOP AT it_out.
      lv_ljdmbtr = lv_ljdmbtr + it_out-dmbtr.
      lt_collect-zfzhdm = it_out-zfzhdm.
*    it_out-dmbtr = it_out-dmbtr * gs_tab-zscxs.
      AT END OF zfzhdm.
        SUM.
        lt_collect-dmbtr = it_out-dmbtr.
        APPEND lt_collect.
      ENDAT.
    ENDLOOP.

    LOOP AT gt_zdm1.
      ASSIGN COMPONENT gt_zdm1-zfzhdm OF STRUCTURE <dyn_wa>  TO <dyn_field>.
      READ TABLE lt_collect WITH KEY zfzhdm =  gt_zdm1-zfzhdm.
      IF sy-subrc = 0.
*        <dyn_field> = lt_collect-dmbtr * gs_tab-zscxs.
        lv_value = lt_collect-dmbtr * gs_tab-zscxs.
        <dyn_field> = lv_value.
        CLEAR lv_value.
      ELSE.
        lt_collect-dmbtr = 0.
        <dyn_field> = lt_collect-dmbtr .
      ENDIF.
    ENDLOOP.


    ASSIGN COMPONENT 'ZZBDM' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    <dyn_field> = gs_tab-zzbdm.

    ASSIGN COMPONENT 'TXT50' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    <dyn_field> = gs_tab-txt50.

    ASSIGN COMPONENT 'ZLJ' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
*    <dyn_field> = lv_ljdmbtr * gs_tab-zscxs .
    lv_value = lv_ljdmbtr * gs_tab-zscxs .
    <dyn_field> = lv_value.
    CLEAR lv_value.


    APPEND <dyn_wa> TO <dyn_table>.
  ENDIF.

ENDFORM.                    " FRM_GET_DATA_D
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA_P
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_ZTZBDM  text
*----------------------------------------------------------------------*
FORM frm_get_data_p  USING    gs_tab STRUCTURE ztzbdm .
  CLEAR : <dyn_wa>.

  DATA : lv_gjahr TYPE bkpf-gjahr,
         lv_monat TYPE bkpf-monat.
  DATA : it_fieldvalue TYPE TABLE OF string,
        is_stru  TYPE string.
  SPLIT gs_tab-zjsgs AT '+' INTO TABLE it_fieldvalue.
  RANGES: gr_zxmdm FOR zfzhbb-zxmdm.
  DATA : lv_value(16) TYPE p DECIMALS 2.


  TYPES :BEGIN OF tyout ,
    zfzhdm TYPE zfzh_dm1-zfzhdm,
    dmbtr  TYPE zfzhbb-zlsje,
    END OF tyout.

  DATA : it_out TYPE TABLE OF tyout WITH HEADER LINE.
  DATA : lt_collect TYPE TABLE OF tyout WITH HEADER LINE.
  DATA : lv_ljdmbtr TYPE zfzhbb-zlsje.


  LOOP AT it_fieldvalue INTO is_stru.
    CLEAR :gr_zxmdm.
    gr_zxmdm-option  = 'EQ'.
    gr_zxmdm-sign    = 'I'.
    gr_zxmdm-low     = is_stru+1(3).
    APPEND gr_zxmdm.

  ENDLOOP.

  lv_gjahr = p_gjahr - 1.
  SELECT MAX( monat ) INTO lv_monat FROM zfzhbb WHERE gjahr = lv_gjahr AND zbblx = 'F'.

  "查询报表结果表
  SELECT
    zfzhdm
    zlsje AS dmbtr
    FROM zfzhbb
    INTO CORRESPONDING FIELDS OF TABLE it_out[]
    WHERE ( ( gjahr = p_gjahr AND monat = p_monat ) OR ( gjahr = lv_gjahr AND monat = lv_monat ) ) AND zxmdm IN gr_zxmdm[] AND zbblx = 'F'.


  SORT it_out BY zfzhdm.
  lv_ljdmbtr = 0.
  LOOP AT it_out.
    lv_ljdmbtr = lv_ljdmbtr + it_out-dmbtr.
    lt_collect-zfzhdm = it_out-zfzhdm.
*    it_out-dmbtr = it_out-dmbtr / 2 .
*    it_out-dmbtr = it_out-dmbtr * gs_tab-zscxs.
    AT END OF zfzhdm.
      SUM.
      lt_collect-dmbtr = it_out-dmbtr.
      APPEND lt_collect.
    ENDAT.
  ENDLOOP.

  LOOP AT gt_zdm1.
    ASSIGN COMPONENT gt_zdm1-zfzhdm OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    READ TABLE lt_collect WITH KEY zfzhdm =  gt_zdm1-zfzhdm.
    IF sy-subrc = 0.
*      <dyn_field> = lt_collect-dmbtr / 2 * gs_tab-zscxs.
      lv_value = lt_collect-dmbtr / 2 * gs_tab-zscxs.
      <dyn_field> = lv_value.
      CLEAR lv_value.
    ELSE.
*      lt_collect-dmbtr = 0.
*      <dyn_field> = lt_collect-dmbtr / 2 .
      lv_value = 0.
      <dyn_field> = lv_value.
      CLEAR lv_value.
    ENDIF.
  ENDLOOP.

  ASSIGN COMPONENT 'ZZBDM' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
  <dyn_field> = gs_tab-zzbdm.

  ASSIGN COMPONENT 'TXT50' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
  <dyn_field> = gs_tab-txt50.

  ASSIGN COMPONENT 'ZLJ' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
*  <dyn_field> = lv_ljdmbtr / 2 * gs_tab-zscxs .
  lv_value = lv_ljdmbtr / 2 * gs_tab-zscxs .
  <dyn_field> = lv_value.
  CLEAR lv_value.

  APPEND <dyn_wa> TO <dyn_table>.

ENDFORM.                    " FRM_GET_DATA_P
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA_Y
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_ZTZBDM  text
*----------------------------------------------------------------------*
FORM  frm_get_data_y  USING   gs_tab STRUCTURE ztzbdm.
  CLEAR : <dyn_wa>.


  DATA : lv_gjahr TYPE bkpf-gjahr,
         lv_monat TYPE bkpf-monat.
  DATA : it_fieldvalue TYPE TABLE OF string,
        is_stru  TYPE string.
  SPLIT gs_tab-zjsgs AT '+' INTO TABLE it_fieldvalue.
  RANGES: gr_zxmdm FOR zfzhbb-zxmdm.
  DATA : lv_value(16) TYPE p DECIMALS 2.

  TYPES :BEGIN OF tyout ,
    zfzhdm TYPE zfzh_dm1-zfzhdm,
    dmbtr  TYPE zfzhbb-zlsje,
    END OF tyout.

  DATA : it_out TYPE TABLE OF tyout WITH HEADER LINE.
  DATA : it_out1 TYPE TABLE OF tyout WITH HEADER LINE.
  DATA : lt_collect TYPE TABLE OF tyout WITH HEADER LINE.
  DATA : lv_ljdmbtr TYPE zfzhbb-zlsje.

  LOOP AT it_fieldvalue INTO is_stru.
    CLEAR :gr_zxmdm.
    gr_zxmdm-option  = 'EQ'.
    gr_zxmdm-sign    = 'I'.
    gr_zxmdm-low     = is_stru+1(3).
    APPEND gr_zxmdm.

  ENDLOOP.

  lv_gjahr = p_gjahr - 1.
  SELECT MAX( monat ) INTO lv_monat FROM zfzhbb WHERE gjahr = lv_gjahr AND zbblx = 'F'.


  IF p_monat = 1.
    "查询报表结果表
    SELECT
      zfzhdm
      zlsje AS dmbtr
      FROM zfzhbb
      INTO CORRESPONDING FIELDS OF TABLE it_out[]
      WHERE ( ( gjahr = p_gjahr AND monat = p_monat ) OR ( gjahr = lv_gjahr AND monat = lv_monat ) ) AND zxmdm IN gr_zxmdm[] AND zbblx = 'F'.
*
*    LOOP AT it_out.
*      it_out-dmbtr = it_out-dmbtr / 2 .
*      MODIFY it_out.
*    ENDLOOP.


  ELSE.


    SELECT
      zfzhdm
      zlsje  AS dmbtr
      FROM zfzhbb
      INTO CORRESPONDING FIELDS OF TABLE it_out[]
      WHERE gjahr = p_gjahr AND monat < p_monat AND zxmdm IN gr_zxmdm[] AND zbblx = 'F'.

    SELECT
      zfzhdm
      zlsje AS dmbtr
      FROM zfzhbb
      INTO CORRESPONDING FIELDS OF TABLE it_out1[]
      WHERE ( ( gjahr = p_gjahr AND monat = p_monat ) OR ( gjahr = lv_gjahr AND monat = lv_monat ) ) AND zxmdm IN gr_zxmdm[] AND zbblx = 'F'.

*    LOOP AT it_out1.
*      it_out1-dmbtr = it_out1-dmbtr / 2 .
*      MODIFY it_out1.
*    ENDLOOP.

    LOOP AT it_out.
      it_out-dmbtr = it_out-dmbtr * 2 .
      MODIFY it_out.
    ENDLOOP.

    APPEND LINES OF it_out1[] TO it_out[].


  ENDIF.




  SORT it_out BY zfzhdm.
  lv_ljdmbtr = 0.
  LOOP AT it_out.
    lv_ljdmbtr = lv_ljdmbtr + it_out-dmbtr.
    lt_collect-zfzhdm = it_out-zfzhdm.
*    it_out-dmbtr = it_out-dmbtr / 3.
*    it_out-dmbtr = it_out-dmbtr * gs_tab-zscxs.
    AT END OF zfzhdm.
      SUM.
      lt_collect-dmbtr = it_out-dmbtr.
      APPEND lt_collect.
    ENDAT.
  ENDLOOP.

  LOOP AT gt_zdm1.
    ASSIGN COMPONENT gt_zdm1-zfzhdm OF STRUCTURE <dyn_wa>  TO <dyn_field>.
    READ TABLE lt_collect WITH KEY zfzhdm =  gt_zdm1-zfzhdm.
    IF sy-subrc = 0.
*      <dyn_field> = lt_collect-dmbtr  / 2 / p_monat * gs_tab-zscxs.
      lv_value = lt_collect-dmbtr  / 2 / p_monat * gs_tab-zscxs.
      <dyn_field> = lv_value.
      CLEAR : lv_value.
    ELSE.
      lt_collect-dmbtr = 0.
      <dyn_field> = lt_collect-dmbtr / 2 / p_monat .
    ENDIF.
  ENDLOOP.
  ASSIGN COMPONENT 'ZZBDM' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
  <dyn_field> = gs_tab-zzbdm.

  ASSIGN COMPONENT 'TXT50' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
  <dyn_field> = gs_tab-txt50.

  ASSIGN COMPONENT 'ZLJ' OF STRUCTURE <dyn_wa>  TO <dyn_field>.
*  <dyn_field> = lv_ljdmbtr  / 2 / p_monat * gs_tab-zscxs.
  lv_value = lv_ljdmbtr  / 2 / p_monat * gs_tab-zscxs.
  <dyn_field> = lv_value.
  CLEAR : lv_value.
  APPEND <dyn_wa> TO <dyn_table>.

ENDFORM.                    " FRM_GET_DATA_Y
*&---------------------------------------------------------------------*
*&      Form  FRM_CREATE_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_create_table .

  PERFORM frm_add_fact USING : 'ZZBDM'   '指标代码' '20' 'L'.
  PERFORM frm_add_fact USING : 'TXT50'   '指标描述' '20' 'L'.
  LOOP AT gt_zdm1.
    PERFORM frm_add_fact USING : gt_zdm1-zfzhdm   gt_zdm1-zfzhms '20' 'R'.
  ENDLOOP.

  PERFORM frm_add_fact USING : 'ZLJ'   '累计' '20' 'R'.


* 根据it_fact生成动态表
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = it_fcat
    IMPORTING
      ep_table        = dy_table.

  ASSIGN dy_table->* TO <dyn_table>.

  CREATE DATA dy_line LIKE LINE OF <dyn_table>.

  ASSIGN dy_line->* TO <dyn_wa>.
  ASSIGN dy_line->* TO <dyn_wa1>.
  ASSIGN dy_line->* TO <dyn_wa2>.
ENDFORM.                    " FRM_CREATE_TABLE


*&---------------------------------------------------------------------*
*&      Form  frm_add_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE1     text
*      -->VALUE2     text
*      -->VALUE3     text
*      -->VALUE4     text
*----------------------------------------------------------------------*
FORM frm_add_fact USING value1  value3 value4 value5.
  wa_fcat-fieldname = value1.
*  wa_fcat-inttype = value2.
  wa_fcat-reptext = value3.
  wa_fcat-intlen   = value4.
  wa_fcat-just   =   value5.
  APPEND wa_fcat TO it_fcat.
  CLEAR: wa_fcat.
ENDFORM.                    "frm_add_fcat
*&---------------------------------------------------------------------*
*&      Form  FRM_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_display .
  CLEAR: wa_layo.
  wa_layo-zebra = 'X'.
  wa_layo-cwidth_opt = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = wa_layo
      it_fieldcat_lvc    = it_fcat
    TABLES
      t_outtab           = <dyn_table>
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " FRM_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  FRM_CALL_SM30
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0137   text
*----------------------------------------------------------------------*
FORM frm_call_sm30  USING    lv_name.
  DATA:gt_dba_sellist TYPE STANDARD TABLE OF vimsellist.
  DATA:gt_tabname TYPE dd02v-tabname ."表名称

  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                         = 'U'
      generate_maint_tool_if_missing = 'X'
      view_name                      = lv_name
    TABLES
      dba_sellist                    = gt_dba_sellist
    EXCEPTIONS
      client_reference               = 1
      foreign_lock                   = 2
      invalid_action                 = 3
      no_clientindependent_auth      = 4
      no_database_function           = 5
      no_editor_function             = 6
      no_show_auth                   = 7
      no_tvdir_entry                 = 8
      no_upd_auth                    = 9
      only_show_allowed              = 10
      system_failure                 = 11
      unknown_field_in_dba_sellist   = 12
      view_not_found                 = 13
      maintenance_prohibited         = 14
      OTHERS                         = 15.

  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFORM.                    " FRM_CALL_SM30
posted @   abap菜鸟3  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示