ZPO006採購單收貨報表
最近來了新的需求就是依據PO日期查詢到採購單收貨但未開發票的報表,當然這一部分還是運用ALV來實現是比較實在。先來看看介面吧.
執行後的結果是:
程式碼包括三還包括三部分:INCLUDE ZPO006F00. "構建ALV
INCLUDE ZPO006F01. "取得資料
INCLUDE ZCOMMON. "通用模組
現在來上code,先看入口ZPO006
*&---------------------------------------------------------------------* *& Report ZPO006 *&---------------------------------------------------------------------* * Author : Jasson.Lee * Date : 2011/10/06 * Purpose: 採購單收貨但未開發票一覽表(含根本未收貨的採購資訊) *已開票的數量與採購單中的數量做比較,如果相同則說明已完全開完發票 * Change History : * Date Author Descriptions * ========== ================ ========================================== *----------------------------------------------------------------------- REPORT ZPO006. TABLES: EKKO, EKPO, EKBE, EKET, T023T. *-------------------------------- * Global Types * Essential Declaration for ALV Display *-------------------------------- INCLUDE ZPO006TOP. *-------------------------------- * Selection Screen *-------------------------------- SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: S_PODATE FOR EKKO-BEDAT. "PO日期選擇 SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. PARAMETERS: D1 RADIOBUTTON GROUP GRP DEFAULT 'X', "收完貨 D2 RADIOBUTTON GROUP GRP, "收完貨未開票 D3 RADIOBUTTON GROUP GRP. "收完貨已開票 SELECTION-SCREEN END OF BLOCK B2. INCLUDE ZPO006F00. "構建ALV INCLUDE ZPO006F01. "取得資料 INCLUDE ZCOMMON. INITIALIZATION. AT SELECTION-SCREEN OUTPUT. *-------------------------------- * Start of Selection *-------------------------------- START-OF-SELECTION. * PerForm CheckData. PerForm GetData. PERFORM EVENTS_BUILD. PerForm Layout_Build. PerForm Fields_Build. PerForm Display_Data. END-OF-SELECTION. *-------------------------------- * Top of Page *-------------------------------- TOP-OF-PAGE. *-------------------------------- * At User Command *-------------------------------- AT USER-COMMAND. *-------------------------------- * At Line Selection *-------------------------------- AT LINE-SELECTION.
再來看包含的 INCLUDE ZPO006F00. "構建ALV
*&---------------------------------------------------------------------* *& Include ZMM070F00 *&---------------------------------------------------------------------* *-------------------------------- * Layout_Build *-------------------------------- FORM LAYOUT_BUILD. W_REPID = SY-REPID. "程式為當前程式 I_LAYOUT-INFO_FIELDNAME = 'COLOR'. "顏色值 I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "優化列寬選項是否設定 I_LAYOUT-DETAIL_INITIAL_LINES = 'X'. I_LAYOUT-DETAIL_TITLEBAR = ''. "設定彈出視窗的標題欄 ENDFORM. "layout_build *-------------------------------- * Fields_Build *-------------------------------- Form Fields_Build. Data: Tmp_pos TYPE I. Refresh I_FIELDCAT_ALV. Clear I_FIELDCAT. * 定義巨集設定FieldCat屬性 Define FieldCatSet. I_FIELDCAT-COL_POS = &1. I_FIELDCAT-FIELDNAME = &2. I_FIELDCAT-SELTEXT_L = &3. I_FIELDCAT-NO_OUT = &4. APPEND I_FIELDCAT To I_FIELDCAT_ALV. Clear I_FIELDCAT. End-Of-Definition. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'EBELN' 'PO' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'EBELP' 'PO_Item' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'MATKL' '物料組' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'WGBEZ' '物料組描述' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'AEDAT' '建立日期' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'EINDT' '計劃交貨日期' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'PQTY' '採購單數量' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'PNETWR' '訂單淨值' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'WAERS' '貨幣碼' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'RATE' '匯率' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'MQTY' '收貨數量' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'IPOQTY' '發票(訂單單位)數量' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'IQTY' '發票(訂單價格單位)數量' 'X'. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'INETWR' '發票金額' ' '. Tmp_pos = Tmp_pos + 1. FieldCatSet Tmp_pos 'ZUOM' '採購單計量單位' ' '. Endform. "Fields_Build *&---------------------------------------------------------------------* *& Form layout_sort_build *&---------------------------------------------------------------------* FORM LAYOUT_SORT_BUILD CHANGING LT_SORT TYPE SLIS_T_SORTINFO_ALV. DATA LS_SORT TYPE SLIS_SORTINFO_ALV. CLEAR LS_SORT. LS_SORT-FIELDNAME = 'EBELN'. LS_SORT-SPOS = 1. LS_SORT-UP = 'X'. LS_SORT-SUBTOT = 'X'. APPEND LS_SORT TO LT_SORT. ENDFORM. "Layout_sort_build *-------------------------------- * DISPLAY_DATA *-------------------------------- FORM DISPLAY_DATA. DESCRIBE TABLE T_PONOInvoice LINES RCOUNT. SCOUNT = RCOUNT. CONCATENATE '符合條件的記錄數:' SCOUNT INTO LSTR. PERFORM LAYOUT_SORT_BUILD CHANGING IT_SORT. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "使用者觸發事件 I_CALLBACK_PROGRAM = W_REPID "當前程式 IS_LAYOUT = I_LAYOUT "子函式Layout_build填充的格式定義 IT_FIELDCAT = I_FIELDCAT_ALV[] "子函式Fields填充的各列 IT_EVENTS = I_EVENTS[] I_SAVE = 'A' "儲存變式 IT_SORT = IT_SORT[] TABLES T_OUTTAB = T_PONOInvoice. ENDFORM. *---------------------------------------------------------------------* * FORM user_command * *---------------------------------------------------------------------* FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD. CASE I_UCOMM. WHEN '&IC1'. READ TABLE T_PONOInvoice INDEX SELFIELD-TABINDEX. IF Sy-Subrc <> 0. LEAVE LIST-PROCESSING. ENDIF. SET PARAMETER ID 'BES' FIELD T_PONOInvoice-EBELN. CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN. ENDCASE. ENDFORM. "user_command *&---------------------------------------------------------------------* *& Form EVENTS_BUILD *&---------------------------------------------------------------------* FORM EVENTS_BUILD. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = I_EVENTS. READ TABLE I_EVENTS WITH KEY NAME = 'END_OF_LIST' INTO W_EVENTS. IF SY-SUBRC = 0. MOVE 'ALV_END_OF_LIST' TO W_EVENTS-FORM. MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX. ENDIF. * READ TABLE I_EVENTS WITH KEY NAME = 'USER_COMMAND' INTO W_EVENTS. * IF SY-SUBRC = 0. * MOVE 'USER_COMMAND' TO W_EVENTS-FORM. * MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX. * ENDIF. ENDFORM. "events_build *&--------------------------------------------------------------------* *& Form ALV_END_OF_LIST *&--------------------------------------------------------------------* FORM ALV_END_OF_LIST. CLEAR: I_LIST_COMMENTS. W_LIST_COMMENTS-TYP = 'H'. W_LIST_COMMENTS-KEY = ''. W_LIST_COMMENTS-INFO = LSTR. APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS. CLEAR W_LIST_COMMENTS. W_LIST_COMMENTS-TYP = 'S'. W_LIST_COMMENTS-INFO = '報表開發者:IT部 開發日期:2011/10/07'. APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS. CLEAR W_LIST_COMMENTS. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = I_LIST_COMMENTS I_END_OF_LIST_GRID = 'X'. ENDFORM. "ALV_END_OF_LIST
最後就是看包含的 INCLUDE ZPO006F01. "取得資料
*&---------------------------------------------------------------------* *& Include ZPO006F01 *&---------------------------------------------------------------------* *-------------------------------- * CheckData *-------------------------------- FORM CheckData. IF S_PODATE[] IS INITIAL. MESSAGE I000(ZMSG) WITH '起止日期至少要輸入一項'. LEAVE LIST-PROCESSING. ENDIF. ENDFORM. *-------------------------------- * GetData *-------------------------------- Form GetData. S_DATE = S_PODATE-LOW. E_DATE = S_PODATE-HIGH. IF S_PODATE-LOW IS INITIAL. S_DATE = '00000000'. ENDIF. IF S_PODATE-HIGH IS INITIAL. E_DATE = '99991231'. ENDIF. SELECT * FROM EKPO WHERE LOEKZ = ' ' AND EREKZ = ' ' AND ELIKZ = 'X' AND EBELN IN ( SELECT DISTINCT EBELN FROM EKKO WHERE BEDAT >= S_DATE And BEDAT <= E_DATE ). *取出已收貨數量與專案計劃交貨日期 ZMIGO_QTY = 0. SELECT SUM( WEMNG ) MIN( EINDT ) INTO (ZMIGO_QTY, ZEINDT) FROM EKET WHERE EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP. *如果沒有收貨,不處理 If ZMIGO_QTY = 0. Continue. EndIf. SELECT SINGLE AEDAT WAERS WKURS ZBD1T ZBD2T ZBD3T INTO (ZCDATE,ZCURR,ZPO_RATE,ZPAY_DAY1,ZPAY_DAY2,ZPAY_DAY3) FROM EKKO WHERE EBELN = EKPO-EBELN. SELECT SINGLE WGBEZ INTO T_PONOInvoice-WGBEZ FROM T023T "取出物料組描述 WHERE SPRAS = SY-LANGU AND MATKL = EKPO-MATKL. *從表(採購憑證歷史)EKBE中,彙總該採購單價格單位的數量與憑證貨幣金額 ZINVOICED_VALUE = 0. "發票金額 ZINVOICED_QTY = 0. "採購訂單價格單位數量 ZINVPO_QTY = 0. "採購訂單單位數量 RowCount = 0. "開票 SELECT COUNT( * ) into (RowCount) FROM EKBE WHERE EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP AND VGABE IN ('2', '3'). *收完貨未開票情況 IF D3 = 'X' AND RowCount = 0. CONTINUE. ENDIF. *收完貨已開票情況 IF D2 = 'X' AND RowCount > 0. CONTINUE. ENDIF. SELECT * FROM EKBE WHERE EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP AND VGABE IN ('2', '3'). *"SHKZG H貸方 S借方 *"Order Unit Quantities IF EKBE-SHKZG = 'H'. EKBE-BPMNG = EKBE-BPMNG * -1. ENDIF. ZINVOICED_QTY = ZINVOICED_QTY + EKBE-BPMNG. *"Order Price Unit Quantities IF EKBE-SHKZG = 'H'. EKBE-MENGE = EKBE-MENGE * -1. ENDIF. ZINVPO_QTY = ZINVPO_QTY + EKBE-MENGE. IF EKBE-SHKZG = 'H'. EKBE-WRBTR = EKBE-WRBTR * -1. ENDIF. ZINVOICED_VALUE = ZINVOICED_VALUE + EKBE-WRBTR. ENDSELECT. **如果發票中訂單數量和小於採購訂單數量,則把記錄填充到表INTABH中 * IF ZINVPO_QTY < EKPO-MENGE. MOVE EKPO-EBELN TO T_PONOInvoice-EBELN. "PO MOVE EKPO-EBELP TO T_PONOInvoice-EBELP. "PO_ITEM MOVE EKPO-MATKL TO T_PONOInvoice-MATKL. "Material Group MOVE EKPO-NETWR TO T_PONOInvoice-PNETWR. "採購訂單貨幣的訂單淨值 MOVE EKPO-MENGE TO T_PONOInvoice-PQTY. "採購訂單數量 MOVE EKPO-MEINS TO T_PONOInvoice-ZUOM. "採購訂單計量單位 T_PONOInvoice-INETWR = ZINVOICED_VALUE. "憑證貨幣金額和(發票金額) T_PONOInvoice-IQTY = ZINVOICED_QTY. "採購訂單 價格單位的數量(發票數量) T_PONOInvoice-IPOQTY = ZINVPO_QTY. "採購訂單位數量(發票數量) T_PONOInvoice-MQTY = ZMIGO_QTY. "採購訂單收貨數量 MOVE ZPO_RATE TO T_PONOInvoice-RATE. "匯率 MOVE ZCURR TO T_PONOInvoice-WAERS. "貨幣碼 T_PONOInvoice-AEDAT = ZCDATE. "記錄建立日期 T_PONOInvoice-EINDT = ZEINDT. "專案計劃交貨日期 APPEND T_PONOInvoice. * ENDIF. ENDSELECT. EndForm. "GetData
完成了,只是做了Mark,以後參考!也給用得到的童鞋個提示。
相關推薦
ZPO006採購單收貨報表
最近來了新的需求就是依據PO日期查詢到採購單收貨但未開發票的報表,當然這一部分還是運用ALV來實現是比較實在。先來看看介面吧. 執行後的結果是: 程式碼包括三還包括三部分:INCLUDE ZPO006F00. "構建ALV INCLUDE ZPO00
採購訂單收貨後不能修改價格的增強
SE19 說明,非教程,所以控制點如下。 1 價格和資訊記錄不符不能控制 2 反審批、ZUB訂單、無價值、自定義表某使用者名稱給'X'跳出增強 3 Z005 退貨訂單入庫不能修改價格(因為小數點的問題,淨值差小於0.03 不算修改價格,如果用原值就比價麻
SAP 採購收貨時與FICO科目的對應關係,關聯點 Account Assignment Category
轉自:http://blog.163.com/sap_chuanshuo/blog/static/205045020201242884854678/ 今天一個MM的哥們,有個疑問問了我下,因為我相信對於比較多的MM初級的顧問,可能會存在同樣的疑問,所以我這裡
SAP 如何設定採購收貨直接轉到供應商庫存
如何設定採購收貨直接轉到供應商庫存, 正常的業務流程是先是下采購訂單,然後收貨,再通過 541 委外發料發給供應商, 現在介紹另一種方法實現。 即下一張採購訂單從A供應商採購,收貨時直接發到供應商B。 利用採購訂單裡的“交貨地址”下的“供應商” 和 “源供應” 選項,
微信支付v3開發(6) 收貨地址共享接口
方式 word .com overflow rda over spa agent 電話 請看新版教程 微信支付開發(7) 收貨地址共享接口V2本文介紹微信支付下的收貨地址共享接口的開發過程。一. 簡單介紹微信收貨地址共享,是指用戶在微信瀏覽器內打開網頁,填寫過地址後,
ios仿收貨地址管理
項目 管理 tor ber queue 更新 con view recreate 最近公司項目增加了一個需求,然後要有收貨地址的管理,有單選框的設置,我昨晚也是寫了很晚才寫出來的,然偶今天就分享一下吧,同時也是我自己積累的過程,當然了,我今天給的是一個demo的例子,我不可
【小程序】獲取微信 自帶的 收貨地址獲取和整理
code blog itl ucc success span .info toa pan 1、wx.chooseAddress(OBJECT) if(wx.chooseAddress){ wx.chooseAddress({ success: function (r
收貨地址--實現省市區三級聯動和使用drf-extensions擴展使用緩存
onf area trie resp 圖集 lan 路由 iso 輸入 主要實現省市區三級聯動和在Django REST framework中使用緩存。 在用戶錄入地址時,需要進行省市區的選擇。在頁面加載時,向後端請求省份數據,當用戶選擇確定省份後,向後端請求該省份的城市數
微信支付開發(7) 收貨地址共享介面V2
在這篇微信公眾平臺開發教程中,我們將介紹如何在網頁中實現獲取收貨地址的功能。 收貨地址共享介面 在2016年4月13日 進行過升級,2016年5月20日之後只能使用新介面,本教程為新版介面的教程! 本文分為以下二個部分: 生成JS-SDK許可權驗證簽名 實現獲取共享收貨地址
微信支付v3開發(6) 收貨地址共享介面
請看新版教程 微信支付開發(7) 收貨地址共享介面V2 本文介紹微信支付下的收貨地址共享介面的開發過程。 一. 簡介 微信收貨地址共享,是指使用者在微信瀏覽器內開啟網頁,填寫過地址後,後續可以免填寫支援快速選擇,也可增加和編輯。此地址為使用者屬性,可在各商戶的網頁中
22、【收貨地址管理模組】——收貨地址增、刪、改、查、分頁列表、地址詳情的功能開發
####1、介面開發: 新建ShippingController類 在類上新增相關注解 @Controller @RequestMapping("/shipping/") public class ShippingController { } #####1、收貨地址的增
微商城---傻瓜式教你微信支付收貨地址介面開發(PHP)
微信中比較好用的介面功能裡,微信收貨地址介面應該算一個,它本身提供了地址的新增刪除使用,可以使微商城省去收貨地址開發的步驟。微支付這個步驟並不難,本身有提供demo給你,稍微改改就能用,看一下概念也清晰了。收貨地址卻沒有。 此文章是以PHP來實現。 在做之前先確定自己有微信公眾平臺的賬號,並
jsp+servlet+jdbc專案收貨。
1:<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+
【14】MUI 仿拼多多 待收貨
點選此處:MUI仿拼多多總目錄 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-
設定收貨地址預設介面思路
控制層 @ApiOperation(value = "買家收貨地址設定預設介面", notes = "買家收貨地址設定預設業務", produces = "application/json") @PostMapping("/setDefault") public Bas
Django商城專案筆記No.16使用者部分-使用者中心收貨地址
首先完成省市區三級聯動 新建areas應用 python ../../manage.py startapp areas 模型類程式碼 class Area(models.Model): """ 行政區劃 """ name = models.CharF
漫話:如何給女朋友解釋為什麼雙11無法修改收貨地址
2018年11月11日上午11點,我拖著疲憊身軀回到家中,準備美美的睡上一覺,洗去身上值班一宿而帶來的疲憊。突然想到之前有交代女朋友讓她幫我搶東西,不知道怎麼樣了。 QPS、TR、併發使用者數、最佳執行緒數等等這些都是系統對併發處理上有關的概念。可以用來
按固定格式批量輸入收貨地址下單
需求如下:按固定格式批量輸入收貨地址下單,前端識別地址資訊,傳送給服務端,傳送前再做個格式檢驗。 placeholder顯示在頁面的格式:在檔案中輸入的什麼樣子,出來就是什麼樣子。 commit() { &
java自定義排程定時器工具類(java電商訂單自動失效或收貨)
java電商訂單超時改狀態工具類 最近在做一個電商專案,要求在使用者下單後未付款30分鐘後就將訂單的狀態改為失效,最初想的是用定時器沒幾秒去資料庫檢視有哪些訂單未付款但超過30分的,就修改狀態,這個方式有兩種缺點,一:如果時間設定的較短,就會導致一直在讀寫資料庫,二:如果時間設定較長就會