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…