[SAP ABAP] ALV報表練習4

SO銷售訂單明細報表

業務目的:根據選擇屏幕的篩選條件,使用ALV報表顯示銷售訂單詳情(Sales Order、Material、現有Qty、已開立數量以及剩余數量等)信息

效果展示

我們在'銷售訂單'欄位輸入需要查詢的SO單號,這里我們以SO單號'0000000221'為例,填寫完相關信息以后,點擊執行按鈕

效果如下所示:

其中對應SO單號的Material剩余數量 =?現有Qty -?已開立數量?

我們使用事務碼Tcode:VA03?查看SO單號(0000000221)的信息如下所示

從上面我們可以看出該SO訂單對應物料TG11并未開立DN單號

完整代碼如下所示

主程序(zrs0507)

*&---------------------------------------------------------------------*
*& Report  ZRS0507                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*REPORT  zrs0507.INCLUDE zrs0507_top. " 數據定義
INCLUDE zrs0507_f01. " 子例程*----------------------------------------------------------------------*
*  DESC: INITIALIZATION 事件
*----------------------------------------------------------------------*
INITIALIZATION.*----------------------------------------------------------------------*
*  DESC: AT SELECTION-SCREEN OUTPUT 事件
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.*----------------------------------------------------------------------*
*  DESC: AT SELECTION-SCREEN  事件
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.*----------------------------------------------------------------------*
*  DESC: START-OF-SELECTION 事件
*----------------------------------------------------------------------*
START-OF-SELECTION.PERFORM frm_get_data.  " 獲取數據" 檢查數據是否為空IF gt_item IS INITIAL.MESSAGE '不存在滿足條件的數據,請確認選擇條件' TYPE 'I'.ENDIF.*---------------------------------------------------------------------*
* END-OF-SELECTION 事件
*---------------------------------------------------------------------*
END-OF-SELECTION.PERFORM frm_display_data.  " ALV呈現數據

INCLUDE程序(zrs0507_top)??

*&---------------------------------------------------------------------*
*&  Include           ZRS0507_TOP                                      *
*&---------------------------------------------------------------------*TABLES: vbak, vbap, lips.* 定義數據類型
TYPES: BEGIN OF ty_item,sel(1),                      " 選擇標識vbeln    TYPE vbak-vbeln,    " SO單號posnr    TYPE vbap-posnr,    " 行項目matnr    TYPE vbap-matnr,    " 物料編碼kwmeng   TYPE vbap-kwmeng,   " 銷售訂單數量(SO現有數量)charg    TYPE vbap-charg,    " SO等級lfimg    TYPE lips-lfimg,    " SO已開立數量remain   TYPE kwmeng,        " 結餘數量vrkme    TYPE vbap-vrkme,    " 銷售單位END OF ty_item.TYPES: BEGIN OF ty_lips,vbeln    TYPE lips-vbeln,    " 交貨單posnr    TYPE lips-posnr,    " 交貨單行項目vgbel    TYPE lips-vgbel,    " SO單號vgpos    TYPE lips-vgpos,    " SO單號行項目lfimg    TYPE lips-lfimg,    " SO已開立數量meins    TYPE lips-meins,END OF ty_lips.DATA: gt_item TYPE STANDARD TABLE OF ty_item,  " 內表gs_item TYPE ty_item.                    " 結構體變量* ALV參數定義
DATA: gs_layout TYPE  lvc_s_layo,                  " 用于定義ALV表單的相關格式、屬性gs_fcat   TYPE  lvc_s_fcat,                  " 字段目祿工作區gt_fcat   TYPE STANDARD TABLE OF lvc_s_fcat. " 字段目錄內表* 選擇屏幕(屏幕輸入)
SELECT-OPTIONS:s_vbeln FOR vbak-vbeln OBLIGATORY.   " 銷售訂單(必輸)

INCLUDE程序(zrs0507_f01)?

*&---------------------------------------------------------------------*
*&  Include           ZRS0507_F01                                      *
*&---------------------------------------------------------------------**&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       獲取數據
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_data .SELECT DISTINCTvbap~vbeln                               " SO單號vbap~posnr                               " 行項目vbap~matnr                               " 物料編碼vbap~kwmeng                              " 銷售訂單數量(SO現有數量)vbap~charg                               " SO等級vbap~vrkme                               " 銷售單位FROM vbapLEFT JOIN vbepON vbap~vbeln = vbep~vbelnAND vbap~posnr = vbep~posnrINTO CORRESPONDING FIELDS OF TABLE gt_itemWHERE vbap~vbeln IN s_vbeln.IF sy-subrc = 0.PERFORM frm_edit_data.  " 編輯處理內表數據" 對so單號以及行項目進行升序排序SORT gt_item BY vbeln ASCENDING posnr ASCENDING.ENDIF.
ENDFORM.                    " FRM_GET_DATA*&---------------------------------------------------------------------*
*&      Form  FRM_DISPLAY_DATA
*&---------------------------------------------------------------------*
*       ALV數據呈現
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_display_data .PERFORM frm_alv_set_fields." 調用函數展示ALV數據CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program = sy-repidit_fieldcat_lvc    = gt_fcat                 " 設置ALV列屬性is_layout_lvc      = gs_layout               " 設置ALV布局TABLESt_outtab           = gt_item                 " 內表數據EXCEPTIONSprogram_error      = 1OTHERS             = 2.ENDFORM.                    " FRM_DISPLAY_DATA*&---------------------------------------------------------------------*
*&      Form  frm_alv_set_fields
*&---------------------------------------------------------------------*
*       ALV設置字段
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_alv_set_fields .DATA: lv_index LIKE sy-index.CLEAR: gs_fcat,gt_fcat,gs_layout.* 設置行的屬性(ALV界面格式)gs_layout-box_fname     = 'SEL'. " 選擇標識gs_layout-zebra         = 'X'.   " 斑馬條紋顯示gs_layout-cwidth_opt    = 'X'.   " 優化列寬設置* ALV字段處理宏DEFINE catalog.lv_index = lv_index + 1.gs_fcat-col_pos       = lv_index.gs_fcat-fieldname     = &1.  " 設置要輸出的表格列的值,在內表中定義的字段名(必須大寫)gs_fcat-fix_column    = &2.  " 固定列gs_fcat-ref_table     = &3.gs_fcat-edit          = &4.gs_fcat-colddictxt    = 'L'.gs_fcat-scrtext_l     = &5.  " 設置要輸出的表格列的列名,即ALV報表顯示的列名gs_fcat-ref_field     = &6.gs_fcat-outputlen     = &7.gs_fcat-emphasize     = &8.  " 列顏色gs_fcat-hotspot       = &9.  " 熱點append gs_fcat to gt_fcat.END-OF-DEFINITION.*     &1        &2        &3     &4          &5           &6      &7      &8       &9catalog:'VBELN'    'X'        ''     ''         'Sales Order' ''      ''      ''       '',    " SO單號'POSNR'    'X'        ''     ''         'Item'        ''      ''      ''       '',    " SO序號'MATNR'    'X'        ''     ''         'Material'    ''      ''      ''       '',    " 物料編碼(SO料號)'KWMENG'   ''         ''     ''         '現有Qty'     ''      ''      ''       '',    " 銷售訂單數量(SO現有數量)'CHARG'    ''         ''     ''         'Batch'       ''      ''      ''       '',    " SO等級'LFIMG'    ''         ''     ''         '已開立數量'  ''      ''      ''       '',    " SO已開立數量'REMAIN'   ''         ''     ''         '剩餘數量'    ''      ''      ''       '',    " 剩餘數量'VRKME'    ''         ''     ''         '單位'        ''      ''      ''       ''.    " 單位ENDFORM.                    " frm_alv_set_fields*&---------------------------------------------------------------------*
*&      Form  frm_edit_data
*&---------------------------------------------------------------------*
*       編輯數據
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_edit_data .DATA: lt_lips TYPE STANDARD TABLE OF ty_lips,ls_lips TYPE ty_lips.IF gt_item IS NOT INITIAL. " 當gt_item內表不為空時,執行以下邏輯處理*   獲取交貨數據SELECT DISTINCTvgbel      " SO單號vgpos      " SO單號行項目vbeln      " 交貨單posnr      " 交貨單行項目lfimg      " 實際交付數量meins      " 單位INTO CORRESPONDING FIELDS OF TABLE lt_lipsFROM lipsFOR ALL ENTRIES IN gt_itemWHERE vgbel = gt_item-vbelnAND vgpos = gt_item-posnr.IF sy-subrc = 0.ENDIF.*   處理數據DATA: lt_temp_item LIKE gt_item.LOOP AT gt_item INTO gs_item.CLEAR: gs_item-lfimg, gs_item-remain." 計算已交貨數量LOOP AT lt_lips INTO ls_lips WHERE vgbel = gs_item-vbelnAND   vgpos = gs_item-posnr.gs_item-lfimg = gs_item-lfimg + ls_lips-lfimg.ENDLOOP." 計算剩餘數量gs_item-remain = gs_item-kwmeng - gs_item-lfimg.APPEND gs_item TO lt_temp_item.ENDLOOP." 替換原表gt_item = lt_temp_item.ENDIF.
ENDFORM.                    " frm_edit_data

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916332.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《設計模式之禪》筆記摘錄 - 10.裝飾模式

裝飾模式的定義裝飾模式(Decorator Pattern)是一種比較常見的模式&#xff0c;其定義如下&#xff1a;Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending fu…

[AI8051U入門第十步]W5500-客戶端

學習目標: 1、認識W5500模塊 2、驅動W5500靜態獲取ip 3、獲取全球唯一碼作為mac地址 4、拔出網線重插網線自動獲取IP 5、編寫W5500作為客戶端進行TCP/IP代碼一、W5500介紹 W5500 是一款由韓國 WIZnet 公司推出的高性能 硬件 TCP/IP 嵌入式以太網控制器,專為嵌入式系統設計,…

UNETR++: Delving Into Efficient and Accurate 3D Medical Image Segmentation

摘要得益于Transformer模型的成功&#xff0c;近期研究開始探索其在3D醫學分割任務中的適用性。在Transformer模型中&#xff0c;自注意力機制是核心構建模塊之一&#xff0c;與基于局部卷積的設計相比&#xff0c;它致力于捕捉長距離依賴關系。然而&#xff0c;自注意力操作存…

Kotlin Flow 在 Jetpack Compose 中的正確打開方式:SharedFlow vs StateFlow 與 LaunchedEffect

在 Jetpack Compose 中&#xff0c;Kotlin Flow 是處理異步數據流的核心工具&#xff0c;而 SharedFlow 和 StateFlow 是最常用的兩種 Flow 類型。但很多開發者對它們的適用場景、如何與 LaunchedEffect 配合使用存在困惑。本文將深入探討它們的區別&#xff0c;并給出最佳實踐…

嵌入式——C語言:指針①

一、指針特點1.讓代碼更加簡潔高效2.提供直接訪問內存的操作3.利用指針可以直接操作硬件二、指針概念&#xff08;一&#xff09;地址&#xff1a;為了區分內存中不同字節的編號&#xff08;0到2^16-1&#xff09;&#xff08;二&#xff09;指針&#xff1a;指針就是地址&…

RabbitMQ—HAProxy負載均衡

上篇文章&#xff1a; RabbitMQ—仲裁隊列https://blog.csdn.net/sniper_fandc/article/details/149312579?fromshareblogdetail&sharetypeblogdetail&sharerId149312579&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 HAProxy安裝…

QT中啟用VIM后粘貼復制快捷鍵失效

當在QT中啟用FakeVim之后&#xff0c;Ctrl C 和 Ctrl V 快捷鍵就變成 Vim 的快捷鍵了&#xff0c;我希望它還是原來的復制粘貼功能&#xff0c;打開&#xff1a;編輯 > Preferences…&#xff0c;然后勾選 “Pass control keys”即可&#xff0c;如下&#xff1a;

TCP三次握手與四次揮手全解析

&#x1f30a; TCP三次握手與四次揮手全解析&#xff08;含序列號動態追蹤&#xff09;&#x1f511; TCP 協議核心機制 序列號 (seq)&#xff1a;數據字節流的唯一標識&#xff08;32位循環計數器&#xff09;確認號 (ack)&#xff1a;期望接收的下一個序列號&#xff08;ack …

7月26號打卡

作業&#xff1a;題目1&#xff1a;計算圓的面積 任務&#xff1a; 編寫一個名為 calculate_circle_area 的函數&#xff0c;該函數接收圓的半徑 radius 作為參數&#xff0c;并返回圓的面積。圓的面積 π * radius (可以使用 math.pi 作為 π 的值)要求&#xff1a;函數接收一…

C++/CLI與標準C++的語法差異(一)

&#x1f30c; C/CLI與標準C的語法差異&#xff08;一&#xff09;&#x1f52c; 第一章&#xff1a;類型系統革命 - 徹底解構三語言范式 &#x1f9ea; 1.1 類型聲明語義差異矩陣 #mermaid-svg-L5kQ3iy05pKo4vIj {font-family:"trebuchet ms",verdana,arial,sans-se…

輸電線路微氣象在線監測裝置:保障電網安全的科技屏障

在電力傳輸網絡中&#xff0c;輸電線路微氣象在線監測裝置通過集成專業傳感器與智能分析技術&#xff0c;實現對線路周邊環境參數的實時采集與動態分析&#xff0c;為電網運行安全提供數據支撐。該設備針對輸電線路特殊工況設計&#xff0c;具備高適應性、高可靠性特點。工作原…

基于springboot的圖書借閱系統

用戶&#xff1a;借閱信息管理&#xff0c;續借信息管理&#xff0c;還書信息管理&#xff0c;圖書信息&#xff0c;系統公告&#xff0c;留言板&#xff0c;我的中心管理員&#xff1a;圖書信息管理&#xff0c;圖書類型管理&#xff0c;借閱信息管理&#xff0c;續借信息管理…

Xinference vs SGLang:詳細對比分析

概述對比特性XinferenceSGLang定位通用AI模型推理平臺高性能LLM服務框架專注領域多模態模型統一接口LLM推理性能優化設計理念易用性和兼容性性能和效率核心架構對比 Xinference 架構特點 Xinference 架構&#xff1a; ├── API層&#xff08;REST/CLI/Python&#xff09; ├─…

雙非上岸985!專業課140分經驗!信號與系統考研專業課140+上岸中南大學,通信考研小馬哥

一&#xff0e;經驗分享個人情況&#xff1a;初試總分377&#xff0c;政治59&#xff0c;英語二75、數學二103、專業課140。本科為湖南一所雙非一本&#xff0c;專業是電子信息工程&#xff0c;本科成績一般&#xff0c;無獎學金無評優無科研競賽&#xff0c;屬于三無人員&…

配置DNS正反向解析

服務端master配置:yum install bind -y配置靜態ip&#xff1a;修改配置文件&#xff1a;主&#xff1a;區域&#xff1a;正向解析&#xff1a;反向解析&#xff1a;開啟服務&#xff1a;客戶端node1配置&#xff1a;yum install nginx -y配置靜態ip&#xff1a;使用xftp將文…

MyBatis-Plus 通用 Service

引言 在開發 Java Web 應用程序時&#xff0c;我們經常需要進行大量的數據庫操作&#xff0c;如創建、讀取、更新和刪除&#xff08;CRUD&#xff09;。MyBatis-Plus 作為一個強大的 MyBatis 增強工具&#xff0c;為我們提供了通用 Service 接口&#xff0c;極大地簡化了這些操…

聚類-一種無監督分類算法

目錄 1、聚類任務 2、性能度量 &#xff08;1&#xff09;外部指標 &#xff08;2&#xff09;內部指標 3、具體聚類方法 &#xff08;1&#xff09;原型聚類 &#xff08;2&#xff09;密度聚類 &#xff08;3&#xff09;層次聚類 “無監督學習”(unsupervised learnin…

ES6 標簽模板:前端框架的靈活利器

ES6&#xff08;ECMAScript 2015&#xff09;引入的模板字符串&#xff08;Template Literals&#xff09;為 JavaScript 開發者提供了更簡潔的字符串處理方式&#xff0c;而模板字符串標簽&#xff08;Tagged Template Literals&#xff09;則進一步擴展了其功能性。通過標簽函…

解鎖編程核心能力:深入淺出數據結構和算法

——為什么它們是你代碼效率的終極武器&#xff1f; &#x1f31f; 引言&#xff1a;程序世界的基石 想象你正在建造摩天大樓&#xff1a;數據結構是鋼筋骨架&#xff0c;決定建筑的結構與承重能力&#xff1b;算法則是施工藍圖&#xff0c;指導如何高效完成建造。兩者結合&am…

Jenkins運行pytest時指令失效的原因以及解決辦法

錯誤收集 Started by user 偷走晚霞的人 Running as SYSTEM Building in workspace C:\Users\Administrator\.jenkins\workspace\TestAAA [TestAAA] $ cmd /c call C:\Users\Administrator\AppData\Local\Temp\jenkins5821160869728612887.bat C:\Users\Administrator\.jenkins…