1. 程式人生 > >ABAP--如何實現合計欄位分單位合計

ABAP--如何實現合計欄位分單位合計

1、增加一個參量 在你所要合計的FIELD 中新增一個 CFIELDNAME或者qfieldname = 你的單位的FIELD
2、Here is a simple example.
1) Add a unit field "UNIT" for PCS and TON
2) Refer to the unit measure field to the number field

REPORT ztest NO STANDARD PAGE HEADING  LINE-SIZE 170.
* ALV
TYPE-POOLS: slis.

TYPES: BEGIN OF typ_data,
       key(10),
       num  TYPE i,
       unit TYPE lvc_quan,
     END OF typ_data.
*--------------------------------------------------------------------
* g l o b a l   d a t a
*--------------------------------------------------------------------
DATA gt_outtab   TYPE TABLE OF typ_data WITH HEADER LINE.
DATA gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA gt_sort     TYPE slis_t_sortinfo_alv.
DATA gs_variant  TYPE disvariant.

*--------------------------------------------------------------------
* Program constructor.
*--------------------------------------------------------------------
LOAD-OF-PROGRAM.
** For Display Variant
 gs_variant-report = sy-repid.
 PERFORM layout_sort_build CHANGING gt_sort.
 PERFORM prepare_field_catalog changing gt_fieldcat.

*--------------------------------------------------------------------
* s t a r t - o f - s e l e c t i o n.
*--------------------------------------------------------------------
START-OF-SELECTION.
 PERFORM selection.

 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
          i_callback_program      = gs_variant-report
          it_fieldcat             = gt_fieldcat[]
          it_sort                 = gt_sort[]
          is_variant              = gs_variant
       TABLES
          t_outtab                = gt_outtab[]
       EXCEPTIONS
          program_error  = 1
          OTHERS         = 2.

*&---------------------------------------------------------------------*
*&      Form  prepare_field_catalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM prepare_field_catalog changing lt_fieldcat TYPE slis_t_fieldcat_alv..
 DATA ls_fieldcat TYPE slis_fieldcat_alv.

* Key
 CLEAR ls_fieldcat.
 ls_fieldcat-fieldname    = 'KEY'.            "#EC *
 ls_fieldcat-tabname      = 'gt_outtab'.
 ls_fieldcat-reptext_ddic = 'Key'(020).       "#EC *
 ls_fieldcat-outputlen    = 10.
 ls_fieldcat-no_sum       = 'X'.
 ls_fieldcat-key          = 'X'.
 APPEND ls_fieldcat TO lt_fieldcat.

* Num
 CLEAR ls_fieldcat.
 ls_fieldcat-fieldname    = 'NUM'.            "#EC *
 ls_fieldcat-tabname      = 'gt_outtab'.
 ls_fieldcat-reptext_ddic = 'Field Num'(021). "#EC *
* QFIELDNAME - unit measure field
 ls_fieldcat-qfieldname   = 'UNIT'.           "關鍵所在


 ls_fieldcat-outputlen    = 10.
 ls_fieldcat-do_sum       = 'X'.
 APPEND ls_fieldcat TO lt_fieldcat.

* UNIT
 CLEAR ls_fieldcat.
 ls_fieldcat-fieldname    = 'UNIT'.            "#EC *
 ls_fieldcat-tabname      = 'gt_outtab'.
 ls_fieldcat-reptext_ddic = 'Field Unit'(022). "#EC *
 ls_fieldcat-outputlen    = 10.
 ls_fieldcat-do_sum       = 'X'.
 APPEND ls_fieldcat TO lt_fieldcat.
ENDFORM.                    "prepare_field_catalog
*---------------------------------------------------------------------*
*       FORM LAYOUT_SORT_BUILD                                        *
*---------------------------------------------------------------------*
*       Sorting                                                       *
*---------------------------------------------------------------------*
*  -->  LT_SORT                                                       *
*---------------------------------------------------------------------*
FORM layout_sort_build CHANGING lt_sort TYPE slis_t_sortinfo_alv.
 DATA ls_sort TYPE slis_sortinfo_alv.
* Key
 CLEAR ls_sort.
 ls_sort-fieldname = 'KEY'.  "#EC *
 ls_sort-spos      = 1.
 ls_sort-up        = 'X'.
 ls_sort-subtot    = 'X'.
 APPEND ls_sort TO lt_sort.
ENDFORM.  " LAYOUT_sort_build
*&---------------------------------------------------------------------*
*&      Form  selection
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM selection .
* load the testing data
 gt_outtab-key = 'Group 1'. gt_outtab-num = 10. gt_outtab-unit = 'PCS'.
 APPEND gt_outtab.
 gt_outtab-key = 'Group 1'. gt_outtab-num = 10. gt_outtab-unit = 'TON'.
 APPEND gt_outtab.
 gt_outtab-key = 'Group 1'. gt_outtab-num = 20. gt_outtab-unit = 'PCS'.
 APPEND gt_outtab.

 gt_outtab-key = 'Group 2'. gt_outtab-num = 20. gt_outtab-unit = 'TON'.
 APPEND gt_outtab.
 gt_outtab-key = 'Group 2'. gt_outtab-num = 40. gt_outtab-unit = 'PCS'.
 APPEND gt_outtab.
 gt_outtab-key = 'Group 2'. gt_outtab-num = 10. gt_outtab-unit = 'TON'.
 APPEND gt_outtab.
ENDFORM.                    " selection 

相關推薦

ABAP--如何實現合計單位合計

1、增加一個參量 在你所要合計的FIELD 中新增一個 CFIELDNAME或者qfieldname = 你的單位的FIELD2、Here is a simple example. 1) Add a unit field "UNIT" for PCS and TON 2) R

在DataGrid中新增一個合計

上面所用到的螢幕圖片中的 DataGrid 是一個非常典型的 DataGrid 。有許多控制 DataGrid 外觀的屬性,它使用兩個 BoundColumns 來操作資料,但這並不是最重要的。做好這項工作真正重要的是使用 DataGrid.OnItemDataBound 事

LINQ使用Orderby、ThenBy實現的排序

LINQ中的排序操作符,包括:OrderBy、OrderByDescending、ThenBy、ThenByDescending、Reverse,提供了升序或者降序排序。 OrderBy:按升序對序列的元素進行排序。 OrderByDescending:按降序對序列的元素排序。 ThenBy:按

key+value實現動態的儲存設計

一般我們在儲存例如使用者資訊的時候,使用者資訊的各屬性是固定的,這時我們可以通過如下方式設計表: user(user_id, name, age, sex) 但是,如果某天呢,產品說使用者資訊需要加幾個屬性:height、weight。 此時,如果表沒什麼資料當

bootstrapTable 實現指定行內編輯,無彈窗,自動儲存

    最近做一個專案時,使用bootstrapTable 作為表格進行資料展示,客戶要求對數量欄位更直觀的行內編輯,研究了一下網上的方案並參考了下面的文章 bootstrapTable行內動態編輯行中某列欄位資料(優化版:無需彈框,直接在行內更新) ,對文中的程式碼進行改

python sort搭配lambda實現排序

sort的常用方法你一定都會了,但是如果要排序的物件的每個元素又含有多個元素,要按指定的內部某個元素排序該怎麼實現呢?正常是這樣來做的: >>> def return_item(item): ... return item[1] >>> pairs

easyui 實現表格排序

首先注意:排序的欄位不能是字串的型別,就是所說的中文吧,如果中文排序也沒什麼意義 html程式碼 $('#myTable').treegrid({ url:'/category/position/Test', idField:'id',

MySQL 實現一個賦值給另一個

1.將同一個表中的一個欄位的值複製給另一個欄位 UPDATE t_user SET signed_time = create_time 12 2.將同一個表中兩個型別一樣的欄位的值互換 UPDATE t_user u1, t_user u2 SET u1.signed_time =

mysql,實現某個從特定數字開始自增編碼

mysql資料庫使用Navicat工具新建更新SQL,實現某個欄位從特定數字開始自增編碼 set @rownum=10004243; update webdata set AR_ID=( select @rownum := @rownum +1 as nid); set @r

abap取某最大值的方法

1.在表中降序/升序後取出第一行,如SELECT MATNR INTO TABLE @DATA(LT_MAKT) FROM MAKT UP TO 1 ROWS ORDER BY MA

資料脫敏——基於Java自定義註解實現日誌脫敏

  上文說了資料過敏主要有兩個思路:第一個就是在序列化實體之前先把需要脫敏的欄位進行處理,之後正常序列化;第二個就是在實體序列化的時候,對要脫敏的欄位進行處理。 脫敏實現思路   這裡探討第一種方法,用基於自定義註解的方式實現日誌脫敏。   要對

mysql中實現部分升序,部分降序的方法

mysql order排序時可以通過asc引數實現升序,desc引數實現降序。 例如: 升序排序:select   *  from  表名 order by  欄位 asc  (mysql預設是升序排列) 降序排序:select   *  from  表名 order by

ABAP:BAPI_ACC_DOCUMENT_POST擴充套件

 READ TABLE  lt_alv INDEX 1.    IF sy-subrc = 0.      documentheader-comp_code  = lt_alv-bukrs.      documentheader-fisc_year  = lv_endda+0(4)..      docum

Oracle case when 實現資料資料的判斷過濾

需求 現在有一份管線資料,表中含有欄位buildTime說明了管線的建設日期,我們需要按時間段統計管線的資料 這是,我們需要對管線表中建設日期所對應的欄位進行分類 實現如下: 實現 對現有的資料進行分類判斷過濾,使用到了 case when ca

開發筆記:基於EntityFramework.Extended用EF實現指定的更新

今天在將一個專案中使用儲存過程的遺留程式碼遷移至新的架構時,遇到了一個問題——如何用EF實現資料庫中指定欄位的更新(根據UserId更新Users表中的FaceUrl與AvatarUrl欄位)? 原先呼叫儲存過程的程式碼: public bool UpdateAvatar(Guid userId, s

CI框架實現自加數值

在CI框架中怎麼實現給某欄位自加某個值呢,很簡單框架中有自帶的方法:$this->db->set('欄位名', '欄位名+你要增加的數值', FALSE); 示例:$this->db-

使用astype實現dataframe型別轉換

在有些情況下,我們需要在DataFrame型別的資料中通過切片獲得我們所需要的資料,然後轉換為我們所需要的型別。Dataframe資料型別的轉換需要用到astype函式。 # encoding: utf-8 import pandas as pd df

關於ABAP輸入螢幕只讀問題

客戶提出輸入螢幕欄位,強制設定為只允許讀,不允許輸入的要求 找了下資料,網上都沒有類似的資料查詢,雖然這功能確實不怎麼包含技術含量,但這裡還是寫一下吧 有兩種方式: 方法一: ABAP程式碼控制螢幕欄位為只讀,程式碼如下 務必將程式碼放在程式最後執行 方法二: 通過屏編譯

python streaming 實現某個排序

一,hadoop streaming預設情況1,在hadoop streaming的預設情況下,是以\t作為分隔符的,標準輸入時,每行的第一個\t之前的內容作為key,第一個\t之後的內容作為value。注意,如果一個\t字元都沒有,那麼整行作為key。2,streaming

c# Datagridview控制元件實現指定查詢功能【未解決】

當一個Datagridview控制元件中資料特別多時(多到離譜),我們無法去用肉眼去識別我們需要刪除或者修改的資料,那麼,就需要找苦逼的程式設計師來實現這個功能了。 這裡我將以一個產品BOM清單為例: 在這個產品BOM清單中,查詢條件有三個,分別是:貨品名稱