采购订单付款清单
*----------------------------------------------------------------------*
*?Program?Name??????????:??采購訂單付款清單????????????????????????????*
*?Purpose???????????????:??????????????????????????????????????????????*
*?Project?Name??????????:???????????????????????????????????????????? ?*
*?Created?by????????????:????????????????????????????????????????????? *
*?Create?on?????????????:??2010-09-16??????????????????????????????????*
*?Functional?Consultant?:??
*?Description???????????:
*
*
*----------------------------------------------------------------------*
*????Modification?Log??????????????????????????????????????????????????*
*Date????????Programmer?????Corr.?#??????Description???????????????????*
*2010/MM/DD??xxxxxxxxxx?????xxxxxxxxxx???Initial?pgm?dev???????????????*
*----------------------------------------------------------------------*
REPORT??ZMM018.
********************************
*TABLE?DECLARE
********************************
TABLES:EKKO,????????????????"采購訂單抬頭
???????EKPO,????????????????"采購訂單行項目
???????BSIK,????????????????"對供應商付款
???????BSAK.????????????????"對供應商付款(清賬)
*********************************
*GLOBAL?DEFINITIONS
*********************************
TYPE-POOLS:?SLIS.
DATA:?FIELDCATALOG?TYPE?SLIS_T_FIELDCAT_ALV?WITH?HEADER?LINE.
DATA:?IT_FIELDCAT?TYPE?LVC_T_FCAT,
??????WA_FIELDCAT?TYPE?LVC_S_FCAT,
??????GD_TAB_GROUP?TYPE?SLIS_T_SP_GROUP_ALV,
??????GD_LAYOUT????TYPE?LVC_S_LAYO,
??????GD_REPID?????LIKE?SY-REPID.
DATA:WA_SORT?TYPE?LVC_S_SORT,???????????"用于排序后匯總
?????IT_SORT?TYPE?LVC_T_SORT.
DATA:WA_EXCLUDING?TYPE?SLIS_EXTAB,??????"隱藏標準工具欄按鈕
?????IT_EXCLUDING?TYPE?SLIS_T_EXTAB.
**********************************
*DATA?DEFINITIONS
**********************************
TYPES:BEGIN?OF?TY_OUT,
??????LIFNR?LIKE?EKKO-LIFNR,??????????????????????"供應商
??????LLIEF?LIKE?EKKO-LLIEF,??????????????????????"產品供應商
??????EBELN?LIKE?EKKO-EBELN,??????????????????????"采購訂單號
??????WAERS?LIKE?EKKO-WAERS,??????????????????????"貨幣單位
??????EINDT?LIKE?EKET-EINDT,??????????????????????"請求交貨日期
??????ELIKZ?LIKE?EKPO-ELIKZ,??????????????????????"交貨已完成
??????BRTWR?LIKE?EKPO-BRTWR,??????????????????????"采購訂單金額
??????MWSKZ?LIKE?EKPO-MWSKZ,??????????????????????"稅碼
??????NAME1?LIKE?LFA1-NAME1,??????????????????????"供應商名稱
??????NAME2?LIKE?LFA1-NAME2,??????????????????????"產品供應商名稱
??????EBELP?LIKE?EKPO-EBELP,??????????????????????"采購訂單行項目
??????WRBTR?LIKE?EKBE-WRBTR,??????????????????????"收貨金額
??????BUDAT?LIKE?EKBE-BUDAT,??????????????????????"最后收貨日期
??????XREF2?LIKE?BSIK-XREF2,??????????????????????"合同號
??????NETWR?LIKE?BSIK-WRBTR,??????????????????????"付款金額
??????BSDAT?LIKE?BSIK-BUDAT,??????????????????????"付款日期
??????BELNR?LIKE?BSIK-BELNR,??????????????????????"付款憑證號
??????SGTXT?LIKE?BSIK-SGTXT,??????????????????????"文本
??????NETPR?LIKE?BSIK-WRBTR,??????????????????????"未付款金額
??????END?OF?TY_OUT.
DATA:IT_EKKO?TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_TEMP?TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_OUT??TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_OUTX??TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
TYPES:BEGIN?OF?TY_EKET,
??????EBELN?LIKE?EKET-EBELN,??????????????????????"采購訂單號
??????EINDT?LIKE?EKET-EINDT,??????????????????????"請求交貨日期
??????END?OF?TY_EKET.
DATA:IT_EKET?TYPE?TY_EKET?OCCURS?0?WITH?HEADER?LINE?.
TYPES:BEGIN?OF?TY_LFA1,
??????LIFNR?LIKE?LFA1-LIFNR,
??????NAME1?LIKE?LFA1-NAME1,
??????END?OF?TY_LFA1.
DATA:IT_LFA1?TYPE?TY_LFA1?OCCURS?0?WITH?HEADER?LINE?.
TYPES:BEGIN?OF?TY_EKBE,
??????EBELN?LIKE?EKBE-EBELN,????????????????"采購訂單號
??????MWSKZ?LIKE?EKPO-MWSKZ,????????????????"稅碼
??????BWART?LIKE?EKBE-BWART,????????????????"移動類型
??????BELNR?LIKE?EKBE-BELNR,????????????????"商品憑證號(用于防止for?all?entires?of?刪除相同項)
??????BUZEI?LIKE?EKBE-BUZEI,????????????????"商品憑證項目
??????WRBTR?LIKE?EKBE-WRBTR,????????????????"收貨金額
??????END?OF?TY_EKBE.
DATA:IT_EKBE1?TYPE?TY_EKBE?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_EKBE?TYPE?TY_EKBE?OCCURS?0?WITH?HEADER?LINE.
TYPES:BEGIN?OF?TY_BUDAT,
??????EBELN?LIKE?EKBE-EBELN,
??????BUDAT?LIKE?EKBE-BUDAT,
??????END?OF?TY_BUDAT.
DATA:IT_BUDAT?TYPE?TY_BUDAT?OCCURS?0?WITH?HEADER?LINE?.
TYPES:BEGIN?OF?TY_BSIK,
??????XREF1?LIKE?BSIK-XREF1,????????????????"采購訂單號
??????BELNR?LIKE?BSIK-BELNR,????????????????"付款憑證號
??????BUDAT?LIKE?BSIK-BUDAT,????????????????"付款日期
??????XREF2?LIKE?BSIK-XREF2,????????????????"合同號
??????SHKZG?LIKE?BSIK-SHKZG,????????????????"借貸標記
??????WRBTR?LIKE?BSIK-WRBTR,????????????????"付款金額
??????SGTXT?LIKE?BSIK-SGTXT,????????????????"文本
??????END?OF?TY_BSIK.
DATA:IT_BSIK?TYPE?TY_BSIK?OCCURS?0?WITH?HEADER?LINE?.
DATA:IT_BSK?TYPE?TY_BSIK?OCCURS?0?WITH?HEADER?LINE?.
*******************************************
*SELECT?CONDITION
*******************************************
SELECTION-SCREEN?BEGIN?OF?BLOCK?B1?WITH?FRAME?TITLE?TEXT-001.
SELECT-OPTIONS:
??????????????S_EBELN?FOR?EKKO-EBELN,???????????????"采購訂單號
??????????????S_LIFNR?FOR?EKKO-LIFNR,???????????????"供應商代碼
??????????????S_AEDAT?FOR?EKKO-AEDAT.???????????????"采購訂單創建日期
SELECTION-SCREEN?END?OF?BLOCK?B1.
SELECTION-SCREEN?BEGIN?OF?BLOCK?B2?WITH?FRAME?TITLE?TEXT-002.
PARAMETERS:
????????P_RAD1?RADIOBUTTON?GROUP?RD?DEFAULT?'X',??"匯總
????????P_RAD2?RADIOBUTTON?GROUP?RD.??????????????"明細
SELECTION-SCREEN?END?OF?BLOCK?B2.
*&--------------------------------------------*
*&??START-OF-SELECTION
*&--------------------------------------------*
START-OF-SELECTION.
??PERFORM?GET_DATA.
??PERFORM?ASSORT_DATA.
??PERFORM?SORT_ALV.
??PERFORM?BUILD_FIELDCATALOG.
??PERFORM?BUILD_LAYOUT.
??PERFORM?BUILD_EXCLUDING.
??PERFORM?DISPLAY_ALV_REPORT.
*&---------------------------------------------------------------------*
*&??????Form??GET_DATA
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?GET_DATA?.
*&?取供應商名稱和產品供應商名稱
??SELECT?LIFNR?NAME1?INTO?TABLE?IT_LFA1?FROM?LFA1?ORDER?BY?LIFNR.
*&取采購訂單(對于已經審批過并收貨過的采購訂單不允許修改行項目或增加新行項目?如果業務這樣操作?我們將得到錯誤數據)
??SELECT?EKKO~LIFNR
?????????EKKO~LLIEF
?????????EKKO~EBELN
?????????EKKO~WAERS
?????????EKPO~BRTWR
?????????EKPO~MWSKZ
?????????EKPO~ELIKZ
?????????EKPO~EBELP
?????????INTO?CORRESPONDING?FIELDS?OF?TABLE?IT_EKKO
?????????FROM?EKKO?INNER?JOIN?EKPO?ON?EKKO~EBELN?=?EKPO~EBELN
?????????WHERE?EKKO~EBELN?IN?S_EBELN?AND?EKKO~LIFNR?IN?S_LIFNR?AND?EKKO~AEDAT?IN?S_AEDAT?AND?EKKO~BSART?=?'ZNB'?AND?EKKO~PROCSTAT?=?'05'?AND?EKPO~LOEKZ?<>?'L'.
??LOOP?AT?IT_EKKO?.???????????"根據稅碼計算得到含稅金額
????IF?IT_EKKO-MWSKZ?=?'J1'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?*?'1.17'.
????ELSEIF?IT_EKKO-MWSKZ?=?'J2'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?*?'1.13'.
????ELSEIF?IT_EKKO-MWSKZ?=?'J6'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?*?'1.03'.
????ELSEIF?IT_EKKO-MWSKZ?=?'J0'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?.
????ENDIF.
????MODIFY?IT_EKKO.
??ENDLOOP.
??APPEND?LINES?OF?IT_EKKO?TO?IT_TEMP.
??SORT?IT_TEMP?BY?LIFNR?LLIEF?EBELN?WAERS.
??LOOP?AT?IT_TEMP.??????????????"處理內表,得到采購訂單的有效總金額
????IT_OUT-LIFNR?=?IT_TEMP-LIFNR.
????IT_OUT-LLIEF?=?IT_TEMP-LLIEF.
????IT_OUT-EBELN?=?IT_TEMP-EBELN.
????IT_OUT-WAERS?=?IT_TEMP-WAERS.
????AT?END?OF?WAERS.
??????SUM.
??????IT_OUT-BRTWR?=?IT_TEMP-BRTWR.
??????APPEND?IT_OUT.
??????CLEAR?IT_OUT.
????ENDAT.
??ENDLOOP.
*&?取收貨金額
??SORT?IT_EKKO?BY?EBELN?EBELP.
??DELETE?ADJACENT?DUPLICATES?FROM?IT_EKKO?COMPARING?EBELN?EBELP.
??IF?IT_EKKO[]?IS?NOT?INITIAL.
????SELECT?EKBE~EBELN?EKPO~MWSKZ?EKBE~BWART?EKBE~BELNR?EKBE~BUZEI?EKBE~WRBTR?INTO?TABLE?IT_EKBE1?"為防止for?all?entries?刪除所有字段值相同項增加關鍵字
??????FROM?EKBE?INNER?JOIN?EKPO?ON?EKPO~EBELN?=?EKBE~EBELN?AND?EKPO~EBELP?=?EKBE~EBELP
???????FOR?ALL?ENTRIES?IN?IT_EKKO?WHERE?EKBE~EBELN?=?IT_EKKO-EBELN?AND?EKBE~EBELP?=?IT_EKKO-EBELP?AND?EKBE~BWART?IN?('101','105','102','106').
??ENDIF.
??LOOP?AT?IT_EKBE1.
????IF?IT_EKBE1-BWART?=?'102'?OR?IT_EKBE1-BWART?=?'106'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?-1.
????ENDIF.
????IF?IT_EKBE1-MWSKZ?=?'J1'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?'1.17'.
????ELSEIF?IT_EKBE1-MWSKZ?=?'J2'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?'1.13'.
????ELSEIF?IT_EKBE1-MWSKZ?=?'J6'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?'1.03'.
????ELSEIF?IT_EKBE1-MWSKZ?=?'J0'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?.
????ENDIF.
????MODIFY?IT_EKBE1.
??ENDLOOP.
??SORT?IT_EKBE1?BY?EBELN.
??LOOP?AT?IT_EKBE1.
????IT_EKBE-EBELN?=?IT_EKBE1-EBELN.
????AT?END?OF?EBELN.
??????SUM.
??????IT_EKBE-WRBTR?=?IT_EKBE1-WRBTR.
??????APPEND?IT_EKBE.
??????CLEAR?IT_EKBE.
????ENDAT.
??ENDLOOP.
??SORT?IT_EKBE?BY?EBELN.
*&?取付款情況
??SELECT?XREF1?BELNR?BUDAT?XREF2?SHKZG?WRBTR?SGTXT?INTO?TABLE?IT_BSIK?FROM?BSIK
????WHERE?XREF1?IN?S_EBELN?AND?XREF1?<>?''.
??SELECT?XREF1?BELNR?BUDAT?XREF2?SHKZG?WRBTR?SGTXT?APPENDING?TABLE?IT_BSIK?FROM?BSAK
????WHERE?XREF1?IN?S_EBELN?AND?XREF1?<>?''.
??LOOP?AT?IT_BSIK?WHERE?SHKZG?=?'H'.
????IT_BSIK-WRBTR?=?IT_BSIK-WRBTR?*?-1.
????MODIFY?IT_BSIK.
??ENDLOOP.
??SORT?IT_BSIK?BY?XREF1.
??LOOP?AT?IT_BSIK.
????IT_BSK-XREF1?=?IT_BSIK-XREF1.
????IT_BSK-XREF2?=?IT_BSIK-XREF2.
????AT?END?OF?XREF1.
??????SUM.
??????IT_BSK-WRBTR?=?IT_BSIK-WRBTR.
??????APPEND?IT_BSK.
??????CLEAR?IT_BSK.
????ENDAT.
??ENDLOOP.
??SORT?IT_BSK?BY?XREF1.
*&?取最后收貨日期
??SELECT?EBELN?MAX(?BUDAT?)?AS?BUDAT?INTO?TABLE?IT_BUDAT?FROM?EKBE??WHERE?EBELN?IN?S_EBELN
????AND?EKBE~BWART?IN?('101','105','102','106')?GROUP?BY?EBELN?ORDER?BY?EBELN.
*&?取采購訂單請求交貨日期
??SELECT?EKET~EBELN?MAX(?EINDT?)?AS?EINDT?INTO?TABLE?IT_EKET?FROM?EKET?INNER?JOIN?EKPO?ON?EKET~EBELN?=?EKPO~EBELN?AND?EKET~EBELP?=?EKPO~EBELP
?????WHERE?EKET~EBELN?IN?S_EBELN?AND?EKPO~LOEKZ?<>?'L'?GROUP?BY?EKET~EBELN?ORDER?BY?EKET~EBELN.
??SORT?IT_TEMP?BY?EBELN?ELIKZ.
??DELETE?ADJACENT?DUPLICATES?FROM?IT_TEMP?COMPARING?EBELN?ELIKZ."根據采購訂單號和交貨已完成分類刪除相同項
??SORT?IT_TEMP?BY?EBELN.
ENDFORM.????????????????????"?GET_DATA
*&---------------------------------------------------------------------*
*&??????Form??BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?BUILD_FIELDCATALOG?.
??DATA:COL_POS?TYPE?I.
??WA_FIELDCAT-FIELDNAME???=?'LIFNR'.
??WA_FIELDCAT-SCRTEXT_M???=?'供應商代碼'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?8.
??WA_FIELDCAT-EMPHASIZE???=?'X'.
??WA_FIELDCAT-KEY?????????=?'X'.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'NAME1'.
??WA_FIELDCAT-SCRTEXT_M???=?'供應商名稱'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?20.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'LLIEF'.
??WA_FIELDCAT-SCRTEXT_M???=?'產品供應商'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?8.
??WA_FIELDCAT-EMPHASIZE???=?'X'.
??WA_FIELDCAT-KEY?????????=?'X'.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'NAME2'.
??WA_FIELDCAT-SCRTEXT_M???=?'產品供應商名稱'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?20.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'XREF2'.
??WA_FIELDCAT-SCRTEXT_M???=?'合同號'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'EBELN'.
??WA_FIELDCAT-SCRTEXT_M???=?'采購訂單號'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??WA_FIELDCAT-EMPHASIZE???=?'X'.
??WA_FIELDCAT-KEY?????????=?'X'.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'EINDT'.
??WA_FIELDCAT-SCRTEXT_M???=?'要求收貨日期'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'BUDAT'.
??WA_FIELDCAT-SCRTEXT_M???=?'最后收貨日期'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'ELIKZ'.
??WA_FIELDCAT-SCRTEXT_M???=?'完結標識'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?5.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'WAERS'.
??WA_FIELDCAT-SCRTEXT_M???=?'貨幣單位'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?4.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??IF?P_RAD1?=?'X'.
????WA_FIELDCAT-FIELDNAME???=?'BRTWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'訂單有效金額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'WRBTR'.
????WA_FIELDCAT-SCRTEXT_M???=?'已收貨總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'NETWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'NETPR'.
????WA_FIELDCAT-SCRTEXT_M???=?'未付款總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
??ELSEIF?P_RAD2?=?'X'.
????WA_FIELDCAT-FIELDNAME???=?'BRTWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'訂單有效金額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'WRBTR'.
????WA_FIELDCAT-SCRTEXT_M???=?'已收貨總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'BELNR'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款憑證號'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?10.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'BSDAT'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款日期'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?10.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'NETWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款金額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'SGTXT'.
????WA_FIELDCAT-SCRTEXT_M???=?'文本'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?30.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
??ENDIF.
ENDFORM.????????????????????"?BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*&??????Form??BUILD_LAYOUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?BUILD_LAYOUT?.
*?Set?layout?field?for?field?attributes(i.e.?input/output)
??GD_LAYOUT-ZEBRA?????????????=?'X'.
??GD_LAYOUT-NO_TOTLINE????????=?'X'."用于控制不顯示總計項
??GD_LAYOUT-CWIDTH_OPT????????=?'X'."優化列寬
ENDFORM.????????????????????"?BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&??????Form??DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?DISPLAY_ALV_REPORT?.
??GD_REPID?=?SY-REPID.
??CALL?FUNCTION?'REUSE_ALV_GRID_DISPLAY_LVC'
????EXPORTING
??????I_CALLBACK_PROGRAM??????????=?GD_REPID
??????I_CALLBACK_HTML_TOP_OF_PAGE?=?'ALV_TOP_OF_PAGE'
??????IS_LAYOUT_LVC???????????????=?GD_LAYOUT
??????IT_FIELDCAT_LVC?????????????=?IT_FIELDCAT
??????IT_EXCLUDING????????????????=?IT_EXCLUDING
??????IT_SORT_LVC?????????????????=?IT_SORT
??????I_SAVE??????????????????????=?'X'
????TABLES
??????T_OUTTAB????????????????????=?IT_OUT
????EXCEPTIONS
??????PROGRAM_ERROR???????????????=?1
??????OTHERS??????????????????????=?2.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*&??????Form??SORT_ALV
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SORT_ALV?.
??WA_SORT-SPOS??????????=?'01'.
??WA_SORT-FIELDNAME?????=?'WAERS'.
??WA_SORT-UP????????????=?'X'.
??WA_SORT-SUBTOT????????=?'X'.
??APPEND?WA_SORT?TO?IT_SORT.
??CLEAR?WA_SORT.
ENDFORM.????????????????????"?SORT_ALV
*&---------------------------------------------------------------------*
*&??????Form??ASSORT_DATA
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?ASSORT_DATA?.
??IF?P_RAD1?=?'X'.
????LOOP?AT?IT_OUT.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LIFNR?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME1?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LLIEF?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME2?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_EKET?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-EINDT?=?IT_EKET-EINDT.
??????ENDIF.
??????READ?TABLE?IT_EKBE?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-WRBTR?=?IT_EKBE-WRBTR.
??????ENDIF.
??????READ?TABLE?IT_BUDAT?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-BUDAT?=?IT_BUDAT-BUDAT.
??????ENDIF.
??????READ?TABLE?IT_BSK?WITH?KEY?XREF1?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-XREF2?=?IT_BSK-XREF2.
????????IT_OUT-NETWR?=?IT_BSK-WRBTR.
??????ENDIF.
??????READ?TABLE?IT_TEMP?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-ELIKZ?=?IT_TEMP-ELIKZ.
??????ENDIF.
??????IF?IT_OUT-ELIKZ?=?'X'.
????????IT_OUT-ELIKZ?=?'是'.
????????IT_OUT-NETPR?=?IT_OUT-WRBTR?-?IT_OUT-NETWR.
??????ELSE.
????????IT_OUT-ELIKZ?=?'否'.
????????IT_OUT-NETPR?=?IT_OUT-BRTWR?-?IT_OUT-NETWR.
??????ENDIF.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LIFNR
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LIFNR.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LLIEF
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LLIEF.
??????MODIFY?IT_OUT.
????ENDLOOP?.
*????DELETE?IT_OUT?WHERE?NETWR?=?0.
????CLEAR:IT_TEMP,IT_TEMP[].
??ELSEIF?P_RAD2?=?'X'.
????LOOP?AT?IT_OUT.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LIFNR?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME1?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LLIEF?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME2?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_EKET?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-EINDT?=?IT_EKET-EINDT.
??????ENDIF.
??????READ?TABLE?IT_EKBE?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-WRBTR?=?IT_EKBE-WRBTR.
??????ENDIF.
??????READ?TABLE?IT_BUDAT?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-BUDAT?=?IT_BUDAT-BUDAT.
??????ENDIF.
??????READ?TABLE?IT_TEMP?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-ELIKZ?=?IT_TEMP-ELIKZ.
??????ENDIF.
??????IF?IT_OUT-ELIKZ?=?'X'.
????????IT_OUT-ELIKZ?=?'是'.
??????ELSE.
????????IT_OUT-ELIKZ?=?'否'.
??????ENDIF.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LIFNR
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LIFNR.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LLIEF
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LLIEF.
??????MODIFY?IT_OUT.
????ENDLOOP?.
????CLEAR:IT_TEMP,IT_TEMP[].
????SORT?IT_OUT?BY?EBELN.
????LOOP?AT?IT_BSIK.
??????READ?TABLE?IT_OUT?WITH?KEY?EBELN?=?IT_BSIK-XREF1?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUTX?=?IT_OUT.
????????IT_OUTX-XREF2?=?IT_BSIK-XREF2.
????????IT_OUTX-NETWR?=?IT_BSIK-WRBTR.
????????IT_OUTX-BSDAT?=?IT_BSIK-BUDAT.
????????IT_OUTX-BELNR?=?IT_BSIK-BELNR.
????????IT_OUTX-SGTXT?=?IT_BSIK-SGTXT.
????????APPEND?IT_OUTX.
????????CLEAR?IT_OUTX.
??????ENDIF.
????ENDLOOP.
????CLEAR:IT_OUT,IT_OUT[].
????DATA:L_EBELN?LIKE?EKKO-EBELN.
????CLEAR?L_EBELN.
????LOOP?AT?IT_OUTX.
??????IF?L_EBELN?=?IT_OUTX-EBELN.
????????IT_OUTX-BRTWR?=?0.
????????IT_OUTX-WRBTR?=?0.
????????MODIFY?IT_OUTX.
??????ENDIF.
??????L_EBELN?=?IT_OUTX-EBELN.
????ENDLOOP.
????APPEND?LINES?OF?IT_OUTX?TO?IT_OUT.
??ENDIF.
ENDFORM.????????????????????"?ASSORT_DATA
*&---------------------------------------------------------------------*
*&??????Form??alv_top_of_page
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??????-->CL_DD??????text
*----------------------------------------------------------------------*
FORM?ALV_TOP_OF_PAGE?USING?CL_DD?TYPE?REF?TO?CL_DD_DOCUMENT.
??DATA:?M_P?TYPE?I.
??DATA:?M_BUFF?TYPE?STRING.
??M_BUFF?=?'<html>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??M_BUFF?=?'<H2><font?color=#336699>采購訂單付款清單</font></H2>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
*??CALL?METHOD?CL_DD->ADD_GAP
*????EXPORTING
*??????WIDTH?=?210.
*
*??CALL?METHOD?CL_DD->ADD_PICTURE
*????EXPORTING
*??????PICTURE_ID?=?'ENJOYSAP_LOGO'.
??M_BUFF?=?'<font?color=#336699>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??CONCATENATE?'<b>PRINT?DATE</b>:'?SY-DATUM+0(4)'-'SY-DATUM+4(2)'-'SY-DATUM+6(2)?' <b>USER</b>:'?SY-UNAME?'<br>'?INTO?M_BUFF.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??M_BUFF?=?'</font>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??M_BUFF?=?'</html>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
ENDFORM.????????????????????"alv_top_of_page
*&---------------------------------------------------------------------*
*&??????Form??BUILD_EXCLUDING
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?BUILD_EXCLUDING?.
??WA_EXCLUDING-FCODE?=?'&UMC'.????????????"隱藏合計
??APPEND?WA_EXCLUDING?TO?IT_EXCLUDING.
??WA_EXCLUDING-FCODE?=?'&SUM'.????????????"隱藏小計
??APPEND?WA_EXCLUDING?TO?IT_EXCLUDING.
ENDFORM.????????????????????"?BUILD_EXCLUDING
*?Program?Name??????????:??采購訂單付款清單????????????????????????????*
*?Purpose???????????????:??????????????????????????????????????????????*
*?Project?Name??????????:???????????????????????????????????????????? ?*
*?Created?by????????????:????????????????????????????????????????????? *
*?Create?on?????????????:??2010-09-16??????????????????????????????????*
*?Functional?Consultant?:??
*?Description???????????:
*
*
*----------------------------------------------------------------------*
*????Modification?Log??????????????????????????????????????????????????*
*Date????????Programmer?????Corr.?#??????Description???????????????????*
*2010/MM/DD??xxxxxxxxxx?????xxxxxxxxxx???Initial?pgm?dev???????????????*
*----------------------------------------------------------------------*
REPORT??ZMM018.
********************************
*TABLE?DECLARE
********************************
TABLES:EKKO,????????????????"采購訂單抬頭
???????EKPO,????????????????"采購訂單行項目
???????BSIK,????????????????"對供應商付款
???????BSAK.????????????????"對供應商付款(清賬)
*********************************
*GLOBAL?DEFINITIONS
*********************************
TYPE-POOLS:?SLIS.
DATA:?FIELDCATALOG?TYPE?SLIS_T_FIELDCAT_ALV?WITH?HEADER?LINE.
DATA:?IT_FIELDCAT?TYPE?LVC_T_FCAT,
??????WA_FIELDCAT?TYPE?LVC_S_FCAT,
??????GD_TAB_GROUP?TYPE?SLIS_T_SP_GROUP_ALV,
??????GD_LAYOUT????TYPE?LVC_S_LAYO,
??????GD_REPID?????LIKE?SY-REPID.
DATA:WA_SORT?TYPE?LVC_S_SORT,???????????"用于排序后匯總
?????IT_SORT?TYPE?LVC_T_SORT.
DATA:WA_EXCLUDING?TYPE?SLIS_EXTAB,??????"隱藏標準工具欄按鈕
?????IT_EXCLUDING?TYPE?SLIS_T_EXTAB.
**********************************
*DATA?DEFINITIONS
**********************************
TYPES:BEGIN?OF?TY_OUT,
??????LIFNR?LIKE?EKKO-LIFNR,??????????????????????"供應商
??????LLIEF?LIKE?EKKO-LLIEF,??????????????????????"產品供應商
??????EBELN?LIKE?EKKO-EBELN,??????????????????????"采購訂單號
??????WAERS?LIKE?EKKO-WAERS,??????????????????????"貨幣單位
??????EINDT?LIKE?EKET-EINDT,??????????????????????"請求交貨日期
??????ELIKZ?LIKE?EKPO-ELIKZ,??????????????????????"交貨已完成
??????BRTWR?LIKE?EKPO-BRTWR,??????????????????????"采購訂單金額
??????MWSKZ?LIKE?EKPO-MWSKZ,??????????????????????"稅碼
??????NAME1?LIKE?LFA1-NAME1,??????????????????????"供應商名稱
??????NAME2?LIKE?LFA1-NAME2,??????????????????????"產品供應商名稱
??????EBELP?LIKE?EKPO-EBELP,??????????????????????"采購訂單行項目
??????WRBTR?LIKE?EKBE-WRBTR,??????????????????????"收貨金額
??????BUDAT?LIKE?EKBE-BUDAT,??????????????????????"最后收貨日期
??????XREF2?LIKE?BSIK-XREF2,??????????????????????"合同號
??????NETWR?LIKE?BSIK-WRBTR,??????????????????????"付款金額
??????BSDAT?LIKE?BSIK-BUDAT,??????????????????????"付款日期
??????BELNR?LIKE?BSIK-BELNR,??????????????????????"付款憑證號
??????SGTXT?LIKE?BSIK-SGTXT,??????????????????????"文本
??????NETPR?LIKE?BSIK-WRBTR,??????????????????????"未付款金額
??????END?OF?TY_OUT.
DATA:IT_EKKO?TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_TEMP?TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_OUT??TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_OUTX??TYPE?TY_OUT?OCCURS?0?WITH?HEADER?LINE.
TYPES:BEGIN?OF?TY_EKET,
??????EBELN?LIKE?EKET-EBELN,??????????????????????"采購訂單號
??????EINDT?LIKE?EKET-EINDT,??????????????????????"請求交貨日期
??????END?OF?TY_EKET.
DATA:IT_EKET?TYPE?TY_EKET?OCCURS?0?WITH?HEADER?LINE?.
TYPES:BEGIN?OF?TY_LFA1,
??????LIFNR?LIKE?LFA1-LIFNR,
??????NAME1?LIKE?LFA1-NAME1,
??????END?OF?TY_LFA1.
DATA:IT_LFA1?TYPE?TY_LFA1?OCCURS?0?WITH?HEADER?LINE?.
TYPES:BEGIN?OF?TY_EKBE,
??????EBELN?LIKE?EKBE-EBELN,????????????????"采購訂單號
??????MWSKZ?LIKE?EKPO-MWSKZ,????????????????"稅碼
??????BWART?LIKE?EKBE-BWART,????????????????"移動類型
??????BELNR?LIKE?EKBE-BELNR,????????????????"商品憑證號(用于防止for?all?entires?of?刪除相同項)
??????BUZEI?LIKE?EKBE-BUZEI,????????????????"商品憑證項目
??????WRBTR?LIKE?EKBE-WRBTR,????????????????"收貨金額
??????END?OF?TY_EKBE.
DATA:IT_EKBE1?TYPE?TY_EKBE?OCCURS?0?WITH?HEADER?LINE.
DATA:IT_EKBE?TYPE?TY_EKBE?OCCURS?0?WITH?HEADER?LINE.
TYPES:BEGIN?OF?TY_BUDAT,
??????EBELN?LIKE?EKBE-EBELN,
??????BUDAT?LIKE?EKBE-BUDAT,
??????END?OF?TY_BUDAT.
DATA:IT_BUDAT?TYPE?TY_BUDAT?OCCURS?0?WITH?HEADER?LINE?.
TYPES:BEGIN?OF?TY_BSIK,
??????XREF1?LIKE?BSIK-XREF1,????????????????"采購訂單號
??????BELNR?LIKE?BSIK-BELNR,????????????????"付款憑證號
??????BUDAT?LIKE?BSIK-BUDAT,????????????????"付款日期
??????XREF2?LIKE?BSIK-XREF2,????????????????"合同號
??????SHKZG?LIKE?BSIK-SHKZG,????????????????"借貸標記
??????WRBTR?LIKE?BSIK-WRBTR,????????????????"付款金額
??????SGTXT?LIKE?BSIK-SGTXT,????????????????"文本
??????END?OF?TY_BSIK.
DATA:IT_BSIK?TYPE?TY_BSIK?OCCURS?0?WITH?HEADER?LINE?.
DATA:IT_BSK?TYPE?TY_BSIK?OCCURS?0?WITH?HEADER?LINE?.
*******************************************
*SELECT?CONDITION
*******************************************
SELECTION-SCREEN?BEGIN?OF?BLOCK?B1?WITH?FRAME?TITLE?TEXT-001.
SELECT-OPTIONS:
??????????????S_EBELN?FOR?EKKO-EBELN,???????????????"采購訂單號
??????????????S_LIFNR?FOR?EKKO-LIFNR,???????????????"供應商代碼
??????????????S_AEDAT?FOR?EKKO-AEDAT.???????????????"采購訂單創建日期
SELECTION-SCREEN?END?OF?BLOCK?B1.
SELECTION-SCREEN?BEGIN?OF?BLOCK?B2?WITH?FRAME?TITLE?TEXT-002.
PARAMETERS:
????????P_RAD1?RADIOBUTTON?GROUP?RD?DEFAULT?'X',??"匯總
????????P_RAD2?RADIOBUTTON?GROUP?RD.??????????????"明細
SELECTION-SCREEN?END?OF?BLOCK?B2.
*&--------------------------------------------*
*&??START-OF-SELECTION
*&--------------------------------------------*
START-OF-SELECTION.
??PERFORM?GET_DATA.
??PERFORM?ASSORT_DATA.
??PERFORM?SORT_ALV.
??PERFORM?BUILD_FIELDCATALOG.
??PERFORM?BUILD_LAYOUT.
??PERFORM?BUILD_EXCLUDING.
??PERFORM?DISPLAY_ALV_REPORT.
*&---------------------------------------------------------------------*
*&??????Form??GET_DATA
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?GET_DATA?.
*&?取供應商名稱和產品供應商名稱
??SELECT?LIFNR?NAME1?INTO?TABLE?IT_LFA1?FROM?LFA1?ORDER?BY?LIFNR.
*&取采購訂單(對于已經審批過并收貨過的采購訂單不允許修改行項目或增加新行項目?如果業務這樣操作?我們將得到錯誤數據)
??SELECT?EKKO~LIFNR
?????????EKKO~LLIEF
?????????EKKO~EBELN
?????????EKKO~WAERS
?????????EKPO~BRTWR
?????????EKPO~MWSKZ
?????????EKPO~ELIKZ
?????????EKPO~EBELP
?????????INTO?CORRESPONDING?FIELDS?OF?TABLE?IT_EKKO
?????????FROM?EKKO?INNER?JOIN?EKPO?ON?EKKO~EBELN?=?EKPO~EBELN
?????????WHERE?EKKO~EBELN?IN?S_EBELN?AND?EKKO~LIFNR?IN?S_LIFNR?AND?EKKO~AEDAT?IN?S_AEDAT?AND?EKKO~BSART?=?'ZNB'?AND?EKKO~PROCSTAT?=?'05'?AND?EKPO~LOEKZ?<>?'L'.
??LOOP?AT?IT_EKKO?.???????????"根據稅碼計算得到含稅金額
????IF?IT_EKKO-MWSKZ?=?'J1'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?*?'1.17'.
????ELSEIF?IT_EKKO-MWSKZ?=?'J2'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?*?'1.13'.
????ELSEIF?IT_EKKO-MWSKZ?=?'J6'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?*?'1.03'.
????ELSEIF?IT_EKKO-MWSKZ?=?'J0'.
??????IT_EKKO-BRTWR?=?IT_EKKO-BRTWR?.
????ENDIF.
????MODIFY?IT_EKKO.
??ENDLOOP.
??APPEND?LINES?OF?IT_EKKO?TO?IT_TEMP.
??SORT?IT_TEMP?BY?LIFNR?LLIEF?EBELN?WAERS.
??LOOP?AT?IT_TEMP.??????????????"處理內表,得到采購訂單的有效總金額
????IT_OUT-LIFNR?=?IT_TEMP-LIFNR.
????IT_OUT-LLIEF?=?IT_TEMP-LLIEF.
????IT_OUT-EBELN?=?IT_TEMP-EBELN.
????IT_OUT-WAERS?=?IT_TEMP-WAERS.
????AT?END?OF?WAERS.
??????SUM.
??????IT_OUT-BRTWR?=?IT_TEMP-BRTWR.
??????APPEND?IT_OUT.
??????CLEAR?IT_OUT.
????ENDAT.
??ENDLOOP.
*&?取收貨金額
??SORT?IT_EKKO?BY?EBELN?EBELP.
??DELETE?ADJACENT?DUPLICATES?FROM?IT_EKKO?COMPARING?EBELN?EBELP.
??IF?IT_EKKO[]?IS?NOT?INITIAL.
????SELECT?EKBE~EBELN?EKPO~MWSKZ?EKBE~BWART?EKBE~BELNR?EKBE~BUZEI?EKBE~WRBTR?INTO?TABLE?IT_EKBE1?"為防止for?all?entries?刪除所有字段值相同項增加關鍵字
??????FROM?EKBE?INNER?JOIN?EKPO?ON?EKPO~EBELN?=?EKBE~EBELN?AND?EKPO~EBELP?=?EKBE~EBELP
???????FOR?ALL?ENTRIES?IN?IT_EKKO?WHERE?EKBE~EBELN?=?IT_EKKO-EBELN?AND?EKBE~EBELP?=?IT_EKKO-EBELP?AND?EKBE~BWART?IN?('101','105','102','106').
??ENDIF.
??LOOP?AT?IT_EKBE1.
????IF?IT_EKBE1-BWART?=?'102'?OR?IT_EKBE1-BWART?=?'106'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?-1.
????ENDIF.
????IF?IT_EKBE1-MWSKZ?=?'J1'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?'1.17'.
????ELSEIF?IT_EKBE1-MWSKZ?=?'J2'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?'1.13'.
????ELSEIF?IT_EKBE1-MWSKZ?=?'J6'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?*?'1.03'.
????ELSEIF?IT_EKBE1-MWSKZ?=?'J0'.
??????IT_EKBE1-WRBTR?=?IT_EKBE1-WRBTR?.
????ENDIF.
????MODIFY?IT_EKBE1.
??ENDLOOP.
??SORT?IT_EKBE1?BY?EBELN.
??LOOP?AT?IT_EKBE1.
????IT_EKBE-EBELN?=?IT_EKBE1-EBELN.
????AT?END?OF?EBELN.
??????SUM.
??????IT_EKBE-WRBTR?=?IT_EKBE1-WRBTR.
??????APPEND?IT_EKBE.
??????CLEAR?IT_EKBE.
????ENDAT.
??ENDLOOP.
??SORT?IT_EKBE?BY?EBELN.
*&?取付款情況
??SELECT?XREF1?BELNR?BUDAT?XREF2?SHKZG?WRBTR?SGTXT?INTO?TABLE?IT_BSIK?FROM?BSIK
????WHERE?XREF1?IN?S_EBELN?AND?XREF1?<>?''.
??SELECT?XREF1?BELNR?BUDAT?XREF2?SHKZG?WRBTR?SGTXT?APPENDING?TABLE?IT_BSIK?FROM?BSAK
????WHERE?XREF1?IN?S_EBELN?AND?XREF1?<>?''.
??LOOP?AT?IT_BSIK?WHERE?SHKZG?=?'H'.
????IT_BSIK-WRBTR?=?IT_BSIK-WRBTR?*?-1.
????MODIFY?IT_BSIK.
??ENDLOOP.
??SORT?IT_BSIK?BY?XREF1.
??LOOP?AT?IT_BSIK.
????IT_BSK-XREF1?=?IT_BSIK-XREF1.
????IT_BSK-XREF2?=?IT_BSIK-XREF2.
????AT?END?OF?XREF1.
??????SUM.
??????IT_BSK-WRBTR?=?IT_BSIK-WRBTR.
??????APPEND?IT_BSK.
??????CLEAR?IT_BSK.
????ENDAT.
??ENDLOOP.
??SORT?IT_BSK?BY?XREF1.
*&?取最后收貨日期
??SELECT?EBELN?MAX(?BUDAT?)?AS?BUDAT?INTO?TABLE?IT_BUDAT?FROM?EKBE??WHERE?EBELN?IN?S_EBELN
????AND?EKBE~BWART?IN?('101','105','102','106')?GROUP?BY?EBELN?ORDER?BY?EBELN.
*&?取采購訂單請求交貨日期
??SELECT?EKET~EBELN?MAX(?EINDT?)?AS?EINDT?INTO?TABLE?IT_EKET?FROM?EKET?INNER?JOIN?EKPO?ON?EKET~EBELN?=?EKPO~EBELN?AND?EKET~EBELP?=?EKPO~EBELP
?????WHERE?EKET~EBELN?IN?S_EBELN?AND?EKPO~LOEKZ?<>?'L'?GROUP?BY?EKET~EBELN?ORDER?BY?EKET~EBELN.
??SORT?IT_TEMP?BY?EBELN?ELIKZ.
??DELETE?ADJACENT?DUPLICATES?FROM?IT_TEMP?COMPARING?EBELN?ELIKZ."根據采購訂單號和交貨已完成分類刪除相同項
??SORT?IT_TEMP?BY?EBELN.
ENDFORM.????????????????????"?GET_DATA
*&---------------------------------------------------------------------*
*&??????Form??BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?BUILD_FIELDCATALOG?.
??DATA:COL_POS?TYPE?I.
??WA_FIELDCAT-FIELDNAME???=?'LIFNR'.
??WA_FIELDCAT-SCRTEXT_M???=?'供應商代碼'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?8.
??WA_FIELDCAT-EMPHASIZE???=?'X'.
??WA_FIELDCAT-KEY?????????=?'X'.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'NAME1'.
??WA_FIELDCAT-SCRTEXT_M???=?'供應商名稱'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?20.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'LLIEF'.
??WA_FIELDCAT-SCRTEXT_M???=?'產品供應商'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?8.
??WA_FIELDCAT-EMPHASIZE???=?'X'.
??WA_FIELDCAT-KEY?????????=?'X'.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'NAME2'.
??WA_FIELDCAT-SCRTEXT_M???=?'產品供應商名稱'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?20.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'XREF2'.
??WA_FIELDCAT-SCRTEXT_M???=?'合同號'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'EBELN'.
??WA_FIELDCAT-SCRTEXT_M???=?'采購訂單號'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??WA_FIELDCAT-EMPHASIZE???=?'X'.
??WA_FIELDCAT-KEY?????????=?'X'.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'EINDT'.
??WA_FIELDCAT-SCRTEXT_M???=?'要求收貨日期'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'BUDAT'.
??WA_FIELDCAT-SCRTEXT_M???=?'最后收貨日期'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?10.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'ELIKZ'.
??WA_FIELDCAT-SCRTEXT_M???=?'完結標識'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?5.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??WA_FIELDCAT-FIELDNAME???=?'WAERS'.
??WA_FIELDCAT-SCRTEXT_M???=?'貨幣單位'.
??COL_POS??=?COL_POS?+?1?.
??WA_FIELDCAT-COL_POS?????=?COL_POS.
??WA_FIELDCAT-OUTPUTLEN???=?4.
??APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
??CLEAR??WA_FIELDCAT.
??IF?P_RAD1?=?'X'.
????WA_FIELDCAT-FIELDNAME???=?'BRTWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'訂單有效金額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'WRBTR'.
????WA_FIELDCAT-SCRTEXT_M???=?'已收貨總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'NETWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'NETPR'.
????WA_FIELDCAT-SCRTEXT_M???=?'未付款總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
??ELSEIF?P_RAD2?=?'X'.
????WA_FIELDCAT-FIELDNAME???=?'BRTWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'訂單有效金額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'WRBTR'.
????WA_FIELDCAT-SCRTEXT_M???=?'已收貨總額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'BELNR'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款憑證號'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?10.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'BSDAT'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款日期'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?10.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'NETWR'.
????WA_FIELDCAT-SCRTEXT_M???=?'付款金額'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?15.
????WA_FIELDCAT-DO_SUM??????=?'X'.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
????WA_FIELDCAT-FIELDNAME???=?'SGTXT'.
????WA_FIELDCAT-SCRTEXT_M???=?'文本'.
????COL_POS??=?COL_POS?+?1?.
????WA_FIELDCAT-COL_POS?????=?COL_POS.
????WA_FIELDCAT-OUTPUTLEN???=?30.
????APPEND?WA_FIELDCAT?TO?IT_FIELDCAT.
????CLEAR??WA_FIELDCAT.
??ENDIF.
ENDFORM.????????????????????"?BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*&??????Form??BUILD_LAYOUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?BUILD_LAYOUT?.
*?Set?layout?field?for?field?attributes(i.e.?input/output)
??GD_LAYOUT-ZEBRA?????????????=?'X'.
??GD_LAYOUT-NO_TOTLINE????????=?'X'."用于控制不顯示總計項
??GD_LAYOUT-CWIDTH_OPT????????=?'X'."優化列寬
ENDFORM.????????????????????"?BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&??????Form??DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?DISPLAY_ALV_REPORT?.
??GD_REPID?=?SY-REPID.
??CALL?FUNCTION?'REUSE_ALV_GRID_DISPLAY_LVC'
????EXPORTING
??????I_CALLBACK_PROGRAM??????????=?GD_REPID
??????I_CALLBACK_HTML_TOP_OF_PAGE?=?'ALV_TOP_OF_PAGE'
??????IS_LAYOUT_LVC???????????????=?GD_LAYOUT
??????IT_FIELDCAT_LVC?????????????=?IT_FIELDCAT
??????IT_EXCLUDING????????????????=?IT_EXCLUDING
??????IT_SORT_LVC?????????????????=?IT_SORT
??????I_SAVE??????????????????????=?'X'
????TABLES
??????T_OUTTAB????????????????????=?IT_OUT
????EXCEPTIONS
??????PROGRAM_ERROR???????????????=?1
??????OTHERS??????????????????????=?2.
??IF?SY-SUBRC?<>?0.
*?MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*&??????Form??SORT_ALV
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?SORT_ALV?.
??WA_SORT-SPOS??????????=?'01'.
??WA_SORT-FIELDNAME?????=?'WAERS'.
??WA_SORT-UP????????????=?'X'.
??WA_SORT-SUBTOT????????=?'X'.
??APPEND?WA_SORT?TO?IT_SORT.
??CLEAR?WA_SORT.
ENDFORM.????????????????????"?SORT_ALV
*&---------------------------------------------------------------------*
*&??????Form??ASSORT_DATA
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?ASSORT_DATA?.
??IF?P_RAD1?=?'X'.
????LOOP?AT?IT_OUT.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LIFNR?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME1?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LLIEF?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME2?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_EKET?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-EINDT?=?IT_EKET-EINDT.
??????ENDIF.
??????READ?TABLE?IT_EKBE?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-WRBTR?=?IT_EKBE-WRBTR.
??????ENDIF.
??????READ?TABLE?IT_BUDAT?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-BUDAT?=?IT_BUDAT-BUDAT.
??????ENDIF.
??????READ?TABLE?IT_BSK?WITH?KEY?XREF1?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-XREF2?=?IT_BSK-XREF2.
????????IT_OUT-NETWR?=?IT_BSK-WRBTR.
??????ENDIF.
??????READ?TABLE?IT_TEMP?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-ELIKZ?=?IT_TEMP-ELIKZ.
??????ENDIF.
??????IF?IT_OUT-ELIKZ?=?'X'.
????????IT_OUT-ELIKZ?=?'是'.
????????IT_OUT-NETPR?=?IT_OUT-WRBTR?-?IT_OUT-NETWR.
??????ELSE.
????????IT_OUT-ELIKZ?=?'否'.
????????IT_OUT-NETPR?=?IT_OUT-BRTWR?-?IT_OUT-NETWR.
??????ENDIF.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LIFNR
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LIFNR.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LLIEF
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LLIEF.
??????MODIFY?IT_OUT.
????ENDLOOP?.
*????DELETE?IT_OUT?WHERE?NETWR?=?0.
????CLEAR:IT_TEMP,IT_TEMP[].
??ELSEIF?P_RAD2?=?'X'.
????LOOP?AT?IT_OUT.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LIFNR?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME1?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_LFA1?WITH?KEY?LIFNR?=?IT_OUT-LLIEF?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-NAME2?=?IT_LFA1-NAME1.
??????ENDIF.
??????READ?TABLE?IT_EKET?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-EINDT?=?IT_EKET-EINDT.
??????ENDIF.
??????READ?TABLE?IT_EKBE?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-WRBTR?=?IT_EKBE-WRBTR.
??????ENDIF.
??????READ?TABLE?IT_BUDAT?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-BUDAT?=?IT_BUDAT-BUDAT.
??????ENDIF.
??????READ?TABLE?IT_TEMP?WITH?KEY?EBELN?=?IT_OUT-EBELN?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUT-ELIKZ?=?IT_TEMP-ELIKZ.
??????ENDIF.
??????IF?IT_OUT-ELIKZ?=?'X'.
????????IT_OUT-ELIKZ?=?'是'.
??????ELSE.
????????IT_OUT-ELIKZ?=?'否'.
??????ENDIF.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LIFNR
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LIFNR.
??????CALL?FUNCTION?'CONVERSION_EXIT_ALPHA_OUTPUT'
????????EXPORTING
??????????INPUT??=?IT_OUT-LLIEF
????????IMPORTING
??????????OUTPUT?=?IT_OUT-LLIEF.
??????MODIFY?IT_OUT.
????ENDLOOP?.
????CLEAR:IT_TEMP,IT_TEMP[].
????SORT?IT_OUT?BY?EBELN.
????LOOP?AT?IT_BSIK.
??????READ?TABLE?IT_OUT?WITH?KEY?EBELN?=?IT_BSIK-XREF1?BINARY?SEARCH.
??????IF?SY-SUBRC?=?0.
????????IT_OUTX?=?IT_OUT.
????????IT_OUTX-XREF2?=?IT_BSIK-XREF2.
????????IT_OUTX-NETWR?=?IT_BSIK-WRBTR.
????????IT_OUTX-BSDAT?=?IT_BSIK-BUDAT.
????????IT_OUTX-BELNR?=?IT_BSIK-BELNR.
????????IT_OUTX-SGTXT?=?IT_BSIK-SGTXT.
????????APPEND?IT_OUTX.
????????CLEAR?IT_OUTX.
??????ENDIF.
????ENDLOOP.
????CLEAR:IT_OUT,IT_OUT[].
????DATA:L_EBELN?LIKE?EKKO-EBELN.
????CLEAR?L_EBELN.
????LOOP?AT?IT_OUTX.
??????IF?L_EBELN?=?IT_OUTX-EBELN.
????????IT_OUTX-BRTWR?=?0.
????????IT_OUTX-WRBTR?=?0.
????????MODIFY?IT_OUTX.
??????ENDIF.
??????L_EBELN?=?IT_OUTX-EBELN.
????ENDLOOP.
????APPEND?LINES?OF?IT_OUTX?TO?IT_OUT.
??ENDIF.
ENDFORM.????????????????????"?ASSORT_DATA
*&---------------------------------------------------------------------*
*&??????Form??alv_top_of_page
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??????-->CL_DD??????text
*----------------------------------------------------------------------*
FORM?ALV_TOP_OF_PAGE?USING?CL_DD?TYPE?REF?TO?CL_DD_DOCUMENT.
??DATA:?M_P?TYPE?I.
??DATA:?M_BUFF?TYPE?STRING.
??M_BUFF?=?'<html>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??M_BUFF?=?'<H2><font?color=#336699>采購訂單付款清單</font></H2>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
*??CALL?METHOD?CL_DD->ADD_GAP
*????EXPORTING
*??????WIDTH?=?210.
*
*??CALL?METHOD?CL_DD->ADD_PICTURE
*????EXPORTING
*??????PICTURE_ID?=?'ENJOYSAP_LOGO'.
??M_BUFF?=?'<font?color=#336699>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??CONCATENATE?'<b>PRINT?DATE</b>:'?SY-DATUM+0(4)'-'SY-DATUM+4(2)'-'SY-DATUM+6(2)?' <b>USER</b>:'?SY-UNAME?'<br>'?INTO?M_BUFF.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??M_BUFF?=?'</font>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
??M_BUFF?=?'</html>'.
??CALL?METHOD?CL_DD->HTML_INSERT
????EXPORTING
??????CONTENTS?=?M_BUFF
????CHANGING
??????POSITION?=?M_P.
ENDFORM.????????????????????"alv_top_of_page
*&---------------------------------------------------------------------*
*&??????Form??BUILD_EXCLUDING
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?BUILD_EXCLUDING?.
??WA_EXCLUDING-FCODE?=?'&UMC'.????????????"隱藏合計
??APPEND?WA_EXCLUDING?TO?IT_EXCLUDING.
??WA_EXCLUDING-FCODE?=?'&SUM'.????????????"隱藏小計
??APPEND?WA_EXCLUDING?TO?IT_EXCLUDING.
ENDFORM.????????????????????"?BUILD_EXCLUDING
總結
- 上一篇: 更新交货单捡配数量
- 下一篇: 根据SAP表名或视图查询后台配置路径