更改ALV字段並同步自建數據表

更改ALV字段並同步自建數據表

參考ABAP數據表操作教程。

ALV報表數據怎麼可以實現可編輯? 然後可以保存到自建表ZTVBAP_TEST中?

  • 修改ALV字段展示屬性值。

    "修改alv顯示字段屬性 edit
    wa_fieldcat-edit = 'X'.
    "指定顯示字段可編輯
    MODIFY it_fieldcat FROM wa_fieldcat TRANSPORTING edit WHERE fieldname = 'KWMENG'.
    CLEAR wa_fieldcat.
    
  • 聲明與自建表同名的工作區, 並定義一個內表

    "聲明與自建表同名的工作區
    TABLES:ZTVBAP_TEST.
    "定義一個內表
    DATA: IT_ZTVBAP_TEST TYPE STANDARD TABLE OF ZTVBAP_TEST.
    
  • 執行點擊保存事件,調子程序:PERFORM SAVE_DATA.

    * 定義 響應執行事件的子程序
    FORM USER_COMMAND  USING r_ucomm LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
    *      MESSAGE I003(Z_FC).
          MESSAGE I002(Z_FC) WITH rs_selfield-tabindex rs_selfield-fieldname.
        WHEN 'MESS'.
          MESSAGE '你點擊了消息按鈕' TYPE 'I'.
        WHEN 'CLEAR'.
          PERFORM clear_data.         "清空字段數據
          rs_selfield-refresh = 'X'.  "刷新界面
        WHEN '&DATA_SAVE'.
          " 保存數據
          PERFORM SAVE_DATA.
        WHEN OTHERS.
      ENDCASE.
    ENDFORM.
    
  • 子程序

    GET_GLOBALS_FROM_SLVC_FULLSCR函數將傳統的alv轉變爲面向對象的alv,可以保證數據同步。

    FORM save_data .
      DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    
      " 使用OO 的刷新方式,先使用GET_GLOBALS_FROM_SLVC_FULLSCR接收屏幕ALV,放置容器,再調用刷新方法
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    *   EXPORTING
    *     IR_SALV_FULLSCREEN_ADAPTER       =
       IMPORTING
    *     ET_EXCLUDING                     =
    *     E_REPID                          =
    *     E_CALLBACK_PROGRAM               =
    *     E_CALLBACK_ROUTINE               =
         E_GRID                           = G_GRID
    *     ET_FIELDCAT_LVC                  =
    *     ER_TRACE                         =
    *     E_FLG_NO_HTML                    =
    *     ES_LAYOUT_KKBLO                  =
    *     ES_SEL_HIDE                      =
    *     ET_EVENT_EXIT                    =
    *     ER_FORM_TOL                      =
    *     ER_FORM_EOL                      =
                .
      " 同步數據 將alv中的數據同步到內表中
      CALL METHOD g_grid->check_changed_data
    *    IMPORTING
    *      e_valid   =
    *    CHANGING
    *      c_refresh = 'X'
          .
      
      "獲取數據
      LOOP AT it_vbap INTO wa_vbap.
        " 只有 wa_vbap 中的字段與 ZTVBAP_TEST 字段一致的纔會遷移。
        " MOVE-CORRESPONDING wa_vbap TO ZTVBAP_TEST.
        ZTVBAP_TEST-ZWERKS = wa_vbap-werks.
        ZTVBAP_TEST-ZMATNR = wa_vbap-MATNR.
        ZTVBAP_TEST-ZKWMENG = wa_vbap-KWMENG.
        ZTVBAP_TEST-ZMEINS = wa_vbap-MEINS.
        APPEND ZTVBAP_TEST TO IT_ZTVBAP_TEST.
        CLEAR ZTVBAP_TEST.
      ENDLOOP.
      " 更新或新建數據
      MODIFY ZTVBAP_TEST FROM TABLE IT_ZTVBAP_TEST.
    
    ENDFORM.
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章