GR/IR明细表
*===============================基本信息===============================*
* 標題:GR/IR明細表
* 創建日期:2005-08-05???????
*===============================定??? 義===============================*
************************************************************************
* 基本代碼
************************************************************************
REPORT ZR_FI_017
NO STANDARD PAGE HEADING
LINE-COUNT 65
LINE-SIZE? 174
MESSAGE-ID ZFI1.
************************************************************************
* INCLUDE:包含文件
************************************************************************
INCLUDE OLE2INCL.
************************************************************************
* TABLE: 定義TABLE
************************************************************************
TABLES: T001,? "公司代碼
??????? MAKT,? "物料描述
??????? BKPF,? "會計核算憑證標題(主表)
??????? BSEG,? "會計核算憑證段(從表)
??????? MSEG,? "憑證段:物料
??????? RBKP,
??????? RSEG,
??????? RKWA,? "委托領取
??????? EKPO,? "采購從表
??????? EKBE,? "采購憑證歷史
??????? VBKPF, "預制憑證的憑證抬頭
??????? SKAT.? "總帳科目主記錄(科目表:說明)
************************************************************************
*INTERNAL TABLES
************************************************************************
*定義內表ITABS
*報表最后輸出時使用的數據
DATA: BEGIN OF IT_PRINT_001 OCCURS 0.
??????? DATA FLAG.
??????? DATA BUKRS LIKE BKPF-BUKRS.??? "公司代碼
??????? DATA GJAHR LIKE BKPF-GJAHR.??? "會計年度
??????? DATA BLART LIKE BKPF-BLART.??? "憑證類型
??????? DATA CTYPE LIKE MAKT-MAKTX.??? "憑證類型名
??????? DATA KOART LIKE BSEG-KOART.??? "帳戶類型
??????? DATA SHKZG LIKE BSEG-SHKZG.??? "借方/貸方
??????? DATA BLDAT LIKE BKPF-BLDAT.??? "憑證中的憑證日期
??????? DATA BUDAT LIKE BKPF-BUDAT.??? "憑證中的記帳日期
??????? DATA AUGDT LIKE BSEG-AUGDT.??? "清賬日期
??????? DATA BELNR LIKE BKPF-BELNR.??? "會計憑證號碼
??????? DATA DMBTR LIKE BSEG-DMBTR.??? "按本位幣計的金額
??????? DATA LIFNR LIKE BSEG-LIFNR.??? "供應商編號
??????? DATA EBELN LIKE BSEG-EBELN.??? "采購憑證號
??????? DATA EBELP LIKE BSEG-EBELP.??? "采購憑證的項目編號
??????? DATA ZEKKN LIKE BSEG-ZEKKN.??? "序列號帳戶分配
??????? DATA MBLNR LIKE MSEG-MBLNR.??? "物料憑證號
??????? DATA MBLNR2 LIKE MSEG-MBLNR.?? "發票憑證號
??????? DATA SGTXT LIKE BSEG-SGTXT.??? "項目文本
??????? DATA MATNR LIKE BSEG-MATNR.??? "物料號
??????? DATA MAKTX LIKE MAKT-MAKTX.??? "物料描述
??????? DATA MENGE LIKE BSEG-MENGE.??? "出入庫數量
??????? DATA MEINS LIKE BSEG-MEINS.??? "計量單位
??????? "DATA NETPR LIKE EKPO-NETPR.?? "采購憑證中的凈價格(以憑證貨幣計)
??????? DATA NETPR TYPE P DECIMALS 4.? "價格
??????? DATA PEINH LIKE EKPO-PEINH.??? "價格單位
??????? DATA HKONT LIKE BSEG-HKONT.??? "總分類帳帳目
??????? DATA AWKEY LIKE BKPF-AWKEY.??? "對象關鍵字
??????? DATA ZUONR LIKE BSEG-ZUONR.??? "分配
DATA: END OF IT_PRINT_001.
DATA: ITAB_01 LIKE IT_PRINT_001 OCCURS 10 WITH HEADER LINE.
DATA: ITAB_02 LIKE IT_PRINT_001 OCCURS 10 WITH HEADER LINE.
*往數據庫增加運行日志
? DATA: BEGIN OF IT_ZREPORTLOG OCCURS? 0.
??? INCLUDE TYPE ZREPORTLOG.
? DATA: END OF IT_ZREPORTLOG.
************************************************************************
* CONSTANTS : 定義常量
************************************************************************
************************************************************************
* TYPE : 定義數據類型
************************************************************************
TYPE-POOLS: SLIS.
************************************************************************
* DATA : 定義變量
************************************************************************
DATA: NAME_LAST LIKE USER_ADDR-NAME_LAST,
????? NAME_FIRST LIKE USER_ADDR-NAME_FIRST,
????? NAME(16).
*用于ALV控件雙擊事件
DATA: G_SELECTED_FIELD_VALUE(80).
*ALV控件構造時需要的參數
DATA: G_ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
????? G_ALV_FIELDCAT_LINE LIKE LINE OF G_ALV_FIELDCAT,
????? G_ALV_EVENT???????? TYPE SLIS_T_EVENT.
*ALV控件輸出的表頭
DATA: G_ALV_LISTHEADER TYPE SLIS_T_LISTHEADER.
*指定ALV控件觸發TOP_OF_PAGE事件時調用的子程序
DATA: G_ALV_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
???????????? VALUE 'F_ALV_EVENT_TOP_OF_PAGE'.
DATA: G_ALV_FORMNAME_END_OF_LIST TYPE SLIS_FORMNAME
???????????? VALUE 'F_ALV_EVENT_END_OF_LIST'.
*指定ALV控件的顯示特征
DATA : G_ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
************************************************************************
* DEFINE: 定義宏
************************************************************************
************************************************************************
*? SELECTION SCREEN : 定義報表篩選條件
************************************************************************
*確定過濾參數
SELECTION-SCREEN BEGIN OF BLOCK BLK_001 WITH FRAME. TITLE BLK_001 .
??? PARAMETERS: P_GJAHR LIKE BKPF-GJAHR OBLIGATORY MEMORY ID 117_1.??? "會計年度
??? PARAMETERS: P_BUKRS LIKE BKPF-BUKRS OBLIGATORY MEMORY ID 117_2.??? "公司代碼
??? PARAMETERS: P_SAKNR LIKE BSEG-SAKNR OBLIGATORY DEFAULT '12010000'
?????????????????????????????????????????????????? MEMORY ID 117_3.??? "G/L科目
??? SELECT-OPTIONS P_BUDAT FOR BKPF-BUDAT MEMORY ID 117_4.???????????? "憑證記帳日期
??? SELECT-OPTIONS P_BELNR FOR BKPF-BELNR MEMORY ID 117_5.???????????? "財務憑證編號
??? SELECT-OPTIONS P_LIFNR FOR BSEG-LIFNR MEMORY ID 117_6.???????????? "供應商編號
??? SELECT-OPTIONS P_EBELN FOR BSEG-EBELN MEMORY ID 117_7.???????????? "采購憑證
??? SELECT-OPTIONS P_EBELP FOR BSEG-EBELP MEMORY ID 117_8.???????????? "采購憑證項目
SELECTION-SCREEN END OF BLOCK BLK_001.
*特殊匯總類型參數
SELECTION-SCREEN BEGIN OF BLOCK BLK_003 WITH FRAME. TITLE BLK_003 .
??? PARAMETERS: P_TYPE1 AS CHECKBOX DEFAULT 'X'.
??? PARAMETERS: P_TYPE2 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK BLK_003.
*選擇報表類型
SELECTION-SCREEN BEGIN OF BLOCK BLK_002 WITH FRAME. TITLE BLK_002 .
PARAMETERS: P_REPORT RADIOBUTTON GROUP R1,
??????????? P_ALV RADIOBUTTON GROUP R1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK BLK_002.
*===============================事??? 件===============================*
************************************************************************
* INITIALIZATION.啟動程序開始執行
************************************************************************
INITIALIZATION.
? BLK_001 = '檢索參數'.
? BLK_002 = '報表類型'.
? BLK_003 = '特殊參數處理'.
************************************************************************
* AT SELECTION SCREEN:
************************************************************************
AT SELECTION-SCREEN.
? PERFORM. F_CHECK_INPUT.????????? "檢查用戶輸入
************************************************************************
* START OF SELECTION:
************************************************************************
START-OF-SELECTION.
*往數據庫增加運行日志
? IT_ZREPORTLOG-MANDT = SY-MANDT.
? IT_ZREPORTLOG-TCODE = SY-TCODE.
? IT_ZREPORTLOG-DATUM = SY-DATUM.
? IT_ZREPORTLOG-UZEIT = SY-UZEIT.
? IT_ZREPORTLOG-UNAME = SY-UNAME.
? IT_ZREPORTLOG-TITLE = SY-TITLE.
? APPEND IT_ZREPORTLOG.
? INSERT INTO ZREPORTLOG VALUES IT_ZREPORTLOG .
? PERFORM. F_READ_DATA.
? IF P_REPORT = 'X'.
??? PERFORM. F_PRINT_REPORT.
? ELSEIF P_ALV = 'X'.
??? PERFORM. F_PRINT_ALV.
? ENDIF.
************************************************************************
* END OF SELECTION
************************************************************************
END-OF-SELECTION.
************************************************************************
* TOP OF PAGE
************************************************************************
TOP-OF-PAGE.
? PERFORM. SUB_HEAD.
************************************************************************
* END OF PAGE
************************************************************************
END-OF-PAGE.
? PERFORM. SUB_BOTTOM.
*===============================子 例 程===============================*
*&---------------------------------------------------------------------*
*過濾條件有效性檢查
*&---------------------------------------------------------------------*
FORM. F_CHECK_INPUT.
? "判斷是否輸入GR/IR或GR/IR調整科目
? IF ( P_SAKNR <> '0012010000' ) AND ( P_SAKNR <> '0012100000' )
?? AND ( P_SAKNR <> '0012019999' ).
??? MESSAGE E055.
? ENDIF.
? "判斷是否存在該憑證記錄
? SELECT SINGLE *
??? FROM BKPF
??? WHERE BUKRS = P_BUKRS AND GJAHR = P_GJAHR
????? AND BELNR IN P_BELNR?? "會計憑證號碼
????? AND BUDAT IN P_BUDAT.? "憑證中的記帳日期
? IF SY-SUBRC <> 0.
??? MESSAGE E054.
? ENDIF.
ENDFORM.??????????????????? " F_CHECK_INPUT
*&---------------------------------------------------------------------*
*從數據庫中讀取數據,填充報表輸出時所用的內表
*&---------------------------------------------------------------------*
FORM. F_READ_DATA .
DATA: L_MBLNR2 LIKE MSEG-MBLNR.?? "發票憑證號
DATA: ITAB_TEMP LIKE IT_PRINT_001 OCCURS 10 WITH HEADER LINE.
*----主記錄處理
? IF P_TYPE2 = 'X'.
??? SELECT BUKRS???????? "公司代碼
?????????? GJAHR???????? "會計年度
?????????? BELNR???????? "會計憑證號碼
?????????? BLART???????? "憑證類型
?????????? BLDAT???????? "憑證中的憑證日期
?????????? BUDAT???????? "憑證中的記帳日期
?????????? AWKEY???????? "對象關鍵字
????? FROM BKPF
????? INTO CORRESPONDING FIELDS OF TABLE ITAB_01
????? WHERE BUKRS = P_BUKRS
??????? AND GJAHR = P_GJAHR
??????? AND BELNR IN P_BELNR
??????? AND BUDAT IN P_BUDAT
??????? AND ( BLART = 'WA' OR BLART = 'WE' OR BLART = 'RE'? ).
?? ELSE.
??? SELECT BUKRS???????? "公司代碼
?????????? GJAHR???????? "會計年度
?????????? BELNR???????? "會計憑證號碼
?????????? BLART???????? "憑證類型
?????????? BLDAT???????? "憑證中的憑證日期
?????????? BUDAT???????? "憑證中的記帳日期
?????????? AWKEY???????? "對象關鍵字
????? FROM BKPF
????? INTO CORRESPONDING FIELDS OF TABLE ITAB_01
????? WHERE BUKRS = P_BUKRS
??????? AND GJAHR = P_GJAHR
??????? AND BELNR IN P_BELNR
??????? AND BUDAT IN P_BUDAT.
?? ENDIF.
*----從記錄處理
?? LOOP AT ITAB_01.
???? REFRESH ITAB_02.
???? CLEAR ITAB_02.
???? IF P_TYPE1 = 'X'.
?????? SELECT BUKRS????? "公司代碼
????????????? GJAHR????? "會計年度
????????????? BELNR????? "會計憑證號碼
????????????? KOART????? "帳戶類型
????????????? SHKZG????? "借方/貸方
????????????? DMBTR????? "按本位幣計的金額
????????????? SGTXT????? "項目文本
????????????? HKONT????? "總分類帳帳目
????????????? LIFNR????? "供應商或債權人的帳號
????????????? EBELN????? "采購單號
????????????? EBELP????? "采購憑證的項目編號
????????????? MATNR????? "物料號
????????????? MENGE????? "數量
????????????? MEINS????? "基本單位
????????????? ZEKKN????? "序列號帳戶分配
????????????? AUGDT????? "清帳日期
????????????? ZUONR????? "分配
???????? FROM BSEG
???????? INTO CORRESPONDING FIELDS OF TABLE ITAB_02
???????? WHERE BUKRS = ITAB_01-BUKRS
?????????? AND GJAHR = ITAB_01-GJAHR
?????????? AND BELNR = ITAB_01-BELNR
?????????? AND BUZEI <> ''
*?????????? AND LIFNR IN P_LIFNR?? "直接取BSEG上的供應商,這種方法不全面,有些記錄上不含記錄.
?????????? AND EBELN IN P_EBELN
?????????? AND EBELP IN P_EBELP
?????????? AND HKONT = P_SAKNR
?????????? AND AUGDT = '00000000'.???? "清帳日期
???? ELSE.
?????? SELECT BUKRS????? "公司代碼
????????????? GJAHR????? "會計年度
????????????? BELNR????? "會計憑證號碼
????????????? KOART????? "帳戶類型
????????????? SHKZG????? "借方/貸方
????????????? DMBTR????? "按本位幣計的金額
????????????? SGTXT????? "項目文本
????????????? HKONT????? "總分類帳帳目
????????????? LIFNR????? "供應商或債權人的帳號
????????????? EBELN????? "采購單號
????????????? EBELP????? "采購憑證的項目編號
????????????? MATNR????? "物料號
????????????? MENGE????? "數量
????????????? MEINS????? "基本單位
????????????? ZEKKN????? "序列號帳戶分配
????????????? AUGDT????? "清帳日期
????????????? ZUONR????? "分配
???????? FROM BSEG
???????? INTO CORRESPONDING FIELDS OF TABLE ITAB_02
???????? WHERE BUKRS = ITAB_01-BUKRS
?????????? AND GJAHR = ITAB_01-GJAHR
?????????? AND BELNR = ITAB_01-BELNR
?????????? AND BUZEI <> ''
*?????????? AND LIFNR IN P_LIFNR
?????????? AND EBELN IN P_EBELN
?????????? AND EBELP IN P_EBELP
?????????? AND HKONT = P_SAKNR.
???? ENDIF.
???? "將ITAB_01表的相關記錄賦值到ITAB_02內表
???? LOOP AT ITAB_02.
?????? ITAB_02-BLART = ITAB_01-BLART.
?????? ITAB_02-BLDAT = ITAB_01-BLDAT.
?????? ITAB_02-BUDAT = ITAB_01-BUDAT.
?????? "非寄售產生的GR/IR
?????? IF ITAB_02-BLART <> 'RE'.
???????? ITAB_02-MBLNR = ITAB_01-AWKEY(10).?? "取物料憑證號
?????? ELSE.
???????? ITAB_02-MBLNR2 = ITAB_01-AWKEY(10).? "取發票憑證號
?????? ENDIF.
?????? "寄售產生的GR/IR
?????? IF ITAB_02-BLART = 'WA'.
???????? ITAB_02-MBLNR = ITAB_02-ZUONR(10).?? "取物料憑證號
?????? ENDIF.
?????? "寄售開票產生的GR/IR
?????? IF ITAB_02-BLART = 'RE' AND ITAB_02-EBELN = ''.
???????? ITAB_02-MBLNR = ITAB_02-ZUONR(10).?? "取物料憑證號
?????? ENDIF.
?????? MODIFY ITAB_02.
???? ENDLOOP.
???? "將ITAB_02表的相關記錄COPY到IT_PRINT_001內表
???? LOOP AT ITAB_02.
?????? IT_PRINT_001-BUKRS = ITAB_02-BUKRS.
?????? IT_PRINT_001-GJAHR = ITAB_02-GJAHR.
?????? IT_PRINT_001-BELNR = ITAB_02-BELNR.
?????? IT_PRINT_001-KOART = ITAB_02-KOART.
?????? IT_PRINT_001-AUGDT = ITAB_02-AUGDT.
?????? IT_PRINT_001-SHKZG = ITAB_02-SHKZG.
?????? IF ITAB_02-SHKZG = 'S'.
???????? IT_PRINT_001-DMBTR = ITAB_02-DMBTR.
?????? ELSE.
???????? IT_PRINT_001-DMBTR = 0 - ITAB_02-DMBTR.
?????? ENDIF.
?????? IT_PRINT_001-SGTXT = ITAB_02-SGTXT.
?????? IT_PRINT_001-HKONT = ITAB_02-HKONT.
?????? IT_PRINT_001-LIFNR = ITAB_02-LIFNR.
?????? IT_PRINT_001-EBELN = ITAB_02-EBELN.
?????? IT_PRINT_001-EBELP = ITAB_02-EBELP.
?????? IT_PRINT_001-MATNR = ITAB_02-MATNR.
?????? IT_PRINT_001-MENGE = ITAB_02-MENGE.
?????? IT_PRINT_001-MEINS = ITAB_02-MEINS.
?????? IT_PRINT_001-ZEKKN = ITAB_02-ZEKKN.
?????? IT_PRINT_001-BLART = ITAB_02-BLART.
?????? IT_PRINT_001-BLDAT = ITAB_02-BLDAT.
?????? IT_PRINT_001-BUDAT = ITAB_02-BUDAT.
?????? IT_PRINT_001-MBLNR = ITAB_02-MBLNR.
?????? IT_PRINT_001-MBLNR2 = ITAB_02-MBLNR2.
?????? APPEND IT_PRINT_001.
???? ENDLOOP.
?? ENDLOOP.
*--取非寄售的發票號
? LOOP AT IT_PRINT_001.
??? L_MBLNR2 = ''.
??? "如果是發票憑證的取其發票號
??? IF IT_PRINT_001-BLART = 'WE'.
????? SELECT BELNR
??????? INTO L_MBLNR2
??????? FROM EKBE
??????? WHERE EBELN = IT_PRINT_001-EBELN
????????? AND EBELP = IT_PRINT_001-EBELP
????????? AND ZEKKN = IT_PRINT_001-ZEKKN
????????? AND VGABE = '2'
????????? AND GJAHR = P_GJAHR
????????? AND BELNR <> ''
????????? AND BUZEI <> ''
????????? AND LFBNR = IT_PRINT_001-MBLNR.
????? ENDSELECT.
????? "如果是物料憑證的通過以下方法取其發票號
????? IF L_MBLNR2 = ''.
??????? SELECT BELNR
????????? INTO L_MBLNR2
????????? FROM EKBE
????????? WHERE EBELN = IT_PRINT_001-EBELN
??????????? AND EBELP = IT_PRINT_001-EBELP
??????????? AND ZEKKN = IT_PRINT_001-ZEKKN
??????????? AND VGABE = '2'
??????????? AND GJAHR = P_GJAHR
??????????? AND BELNR <> ''
??????????? AND BUZEI <> ''
??????????? AND LFBNR IN (
????????????????? SELECT LFBNR?????????????????????????? "參考憑證的憑證號
???????????????????? FROM EKBE
???????????????????? WHERE EBELN = IT_PRINT_001-EBELN??? "采購憑證
?????????????????????? AND EBELP = IT_PRINT_001-EBELP??? "采購憑證項目
?????????????????????? AND ZEKKN = IT_PRINT_001-ZEKKN
?????????????????????? AND VGABE = '1'
?????????????????????? AND GJAHR = P_GJAHR
?????????????????????? AND BELNR = IT_PRINT_001-MBLNR???? "物料憑證號
?????????????????????? AND BUZEI <> ''
?????????????????????????? ).
??????? ENDSELECT.
????? ENDIF.
????? IT_PRINT_001-MBLNR2 = L_MBLNR2.
????? MODIFY IT_PRINT_001.
??? ENDIF.
? ENDLOOP.
*--取寄售的發票號
? LOOP AT IT_PRINT_001.
??? IF IT_PRINT_001-BLART = 'WA'.
????? SELECT BELNR
??????? INTO IT_PRINT_001-MBLNR2
??????? FROM RKWA
??????? WHERE MBLNR = IT_PRINT_001-MBLNR
????????? AND MJAHR = P_GJAHR
????????? AND ZEILE <> ''
????????? AND LIFNR = IT_PRINT_001-LIFNR
????????? AND WERKS = IT_PRINT_001-BUKRS
????????? AND MATNR = IT_PRINT_001-MATNR.
??????? ENDSELECT.
????? MODIFY IT_PRINT_001.
??? ENDIF.
? ENDLOOP.
*--判斷該記錄是否開票過否,若開過,則刪除該記錄
? IF P_TYPE2 = 'X'.
??? LOOP AT IT_PRINT_001.
????? IF IT_PRINT_001-MBLNR2 <> ''.
??????? DELETE IT_PRINT_001.
????? ENDIF.
??? ENDLOOP.
? ENDIF.
*--取發票檢驗的物料憑證號
? LOOP AT IT_PRINT_001.
??? IF IT_PRINT_001-BLART = 'RE'.
????? SELECT LFBNR
??????? INTO IT_PRINT_001-MBLNR
??????? FROM EKBE
??????? WHERE EBELN = IT_PRINT_001-EBELN
????????? AND EBELP = IT_PRINT_001-EBELP
????????? AND ZEKKN = IT_PRINT_001-ZEKKN
????????? AND VGABE = '2'
????????? AND GJAHR = P_GJAHR
????????? AND BELNR = IT_PRINT_001-MBLNR2
????????? AND BUZEI <> ''.
??????? ENDSELECT.
????? MODIFY IT_PRINT_001.
??? ENDIF.
? ENDLOOP.
*--取價格
? LOOP AT IT_PRINT_001.
??? IF IT_PRINT_001-MENGE <> 0.
????? IT_PRINT_001-NETPR = IT_PRINT_001-DMBTR * 100 / IT_PRINT_001-MENGE.
????? IT_PRINT_001-PEINH = 100.
??? ELSE.
????? IT_PRINT_001-NETPR = 0.
????? IT_PRINT_001-PEINH = 0.
??? ENDIF.
??? MODIFY IT_PRINT_001.
? ENDLOOP.
*--取供應商編號(根據采購訂單號)
? LOOP AT IT_PRINT_001.
??? IF IT_PRINT_001-EBELN <> ''.
????? SELECT LIFNR
??????? INTO IT_PRINT_001-LIFNR
??????? FROM EKKO
??????? WHERE EBELN = IT_PRINT_001-EBELN.
????? ENDSELECT.
??? ELSE.
????? SELECT LIFNR
??????? INTO IT_PRINT_001-LIFNR
??????? FROM BSEG
??????? WHERE BUKRS = IT_PRINT_001-BUKRS
????????? AND BELNR = IT_PRINT_001-MBLNR
????????? AND GJAHR = IT_PRINT_001-GJAHR
????????? AND BUZEI = 1
????????? AND BUZID = 'K'.
????? ENDSELECT.
??? ENDIF.
??? MODIFY IT_PRINT_001.
? ENDLOOP.
*--供應商過濾
? LOOP AT IT_PRINT_001.
??? IF IT_PRINT_001-LIFNR NOT IN P_LIFNR.
????? DELETE IT_PRINT_001.
??? ENDIF.
? ENDLOOP.
*--取物料描述
? LOOP AT IT_PRINT_001.
??? SELECT MAKTX
????? INTO IT_PRINT_001-MAKTX
????? FROM MAKT
????? WHERE SPRAS = '1'
??????? AND MATNR = IT_PRINT_001-MATNR.
??? ENDSELECT.
??? MODIFY IT_PRINT_001.
? ENDLOOP.
*--記錄類型名稱處理
? LOOP AT IT_PRINT_001.
??? "
??? IF IT_PRINT_001-BLART = 'WA'.
????? IF IT_PRINT_001-SHKZG = 'H'.
??????? IT_PRINT_001-CTYPE = '寄售物料-領料'.
????? ELSE.
??????? IT_PRINT_001-CTYPE = '寄售物料-退料'.
????? ENDIF.
??? ENDIF.
??? "
??? IF IT_PRINT_001-BLART = 'WE'.
????? IF IT_PRINT_001-SHKZG = 'H'.
??????? IT_PRINT_001-CTYPE = '采購收貨入庫'.
????? ELSE.
??????? IT_PRINT_001-CTYPE = '采購退貨出庫'.
????? ENDIF.
??? ENDIF.
??? "
??? IF IT_PRINT_001-BLART = 'RE'.
????? IF IT_PRINT_001-EBELN = ''.
??????? IF IT_PRINT_001-SHKZG = 'H'.
????????? IT_PRINT_001-CTYPE = '發票檢驗(寄售物料-退料)'.
??????? ELSE.
????????? IT_PRINT_001-CTYPE = '發票檢驗(寄售物料-領料)'.
??????? ENDIF.
????? ELSE.
??????? IT_PRINT_001-CTYPE = '發票檢驗'.
????? ENDIF.
??? ENDIF.
??? "
??? IF IT_PRINT_001-BLART = 'AB'.
????? IT_PRINT_001-CTYPE = '自動清賬'.
??? ENDIF.
??? "
??? IF IT_PRINT_001-BLART = 'SA'.
????? IF IT_PRINT_001-SHKZG = 'H'.
??????? IT_PRINT_001-CTYPE = 'GR/IR調整-沖銷'.
????? ELSE.
??????? IT_PRINT_001-CTYPE = 'GR/IR調整'.
????? ENDIF.
??? ENDIF.
??? MODIFY IT_PRINT_001.
? ENDLOOP.
ENDFORM.??????????????????? " F_READ_DATA
*&---------------------------------------------------------------------*
*???? 普通報表格式的打印
*&---------------------------------------------------------------------*
FORM. F_PRINT_REPORT.
ENDFORM.???????????????????? " F_PRINT_REPORT
*&---------------------------------------------------------------------*
*A???? ALV報表格式的打印
*&---------------------------------------------------------------------*
FORM. F_PRINT_ALV.
? REFRESH G_ALV_LISTHEADER[].
? PERFORM. F_ALV_MODIFY_LISTHEADER .
? REFRESH G_ALV_FIELDCAT.
? PERFORM. F_ALV_BUILD_FIELDCAT.
? PERFORM. F_ALV_BUILD_EVENTCAT.
? PERFORM. F_ALV_DISPLAY.
? STOP.
ENDFORM.??????????????????? " F_PRINT_ALV
*&---------------------------------------------------------------------*
*&????? 設置ALV報表輸出時的抬頭信息
*&---------------------------------------------------------------------*
FORM. F_ALV_MODIFY_LISTHEADER .
? DATA : L_ALV_LISTHEADER_LINE LIKE LINE OF G_ALV_LISTHEADER.
? L_ALV_LISTHEADER_LINE-TYP = 'H'.
? L_ALV_LISTHEADER_LINE-KEY = ''.
? L_ALV_LISTHEADER_LINE-INFO = 'GR/IR明細表'.
? APPEND L_ALV_LISTHEADER_LINE TO G_ALV_LISTHEADER.
ENDFORM.??????????????????? " F_ALV_MODIFY_LISTHEADER
*&---------------------------------------------------------------------*
*&????? 設置ALV報表輸出時的字段 NEED MODIFY
*&---------------------------------------------------------------------*
FORM. F_ALV_BUILD_FIELDCAT .
? DATA : COL_POS TYPE I VALUE 0.
? G_ALV_LAYOUT-GET_SELINFOS????? = 'X'.
? G_ALV_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
? G_ALV_LAYOUT-DETAIL_POPUP????? = 'X'.
? G_ALV_LAYOUT-BOX_FIELDNAME???? = 'FLAG'.
? G_ALV_LAYOUT-NO_KEYFIX???????? = 'X'.
? G_ALV_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BKPF'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BUKRS'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'BUKRS'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '公司代碼'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '公司代碼'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '公司代碼'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '公司代碼'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BKPF'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BLART'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'BLART'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '憑證類型'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '憑證類型'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '憑證類型'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '憑證類型'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MAKT'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MAKTX'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'CTYPE'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '類型名稱'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '類型名稱'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '類型名稱'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '類型名稱'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BKPF'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BLDAT'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'BLDAT'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '憑證日期'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '憑證日期'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '憑證日期'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '憑證日期'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BKPF'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BUDAT'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'BUDAT'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '記帳日期'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '記帳日期'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '記帳日期'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '記帳日期'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BKPF'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'AUGDT'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'AUGDT'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '清帳日期'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '清帳日期'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '清帳日期'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '清帳日期'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BKPF'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BELNR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'BELNR'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '會計憑證號碼'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '會計憑證號碼'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '會計憑證號碼'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '會計憑證號碼'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'DMBTR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'DMBTR'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '本位幣計的金額'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '本位幣計的金額'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '本位幣計的金額'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '本位幣計的金額'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'LIFNR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'LIFNR'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '供應商編號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '供應商編號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '供應商編號'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '供應商編號'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'EBELN'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'EBELN'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '采購憑證號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '采購憑證號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '采購憑證號'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '采購憑證號'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'EBELP'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'EBELP'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '采購項目號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '采購項目號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '采購項目號'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '采購項目號'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MBLNR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'MBLNR'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '物料憑證號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '物料憑證號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '物料憑證號'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '物料憑證號'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MBLNR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'MBLNR2'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '發票憑證號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '發票憑證號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '發票憑證號'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '發票憑證號'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'EKPO'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MATNR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'MATNR'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '物料號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '物料號'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '物料號'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '物料號'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MAKT'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MAKTX'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'MAKTX'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '物料描述'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '物料描述'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '物料描述'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '物料描述'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MENGE'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'MENGE'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '出入庫數量'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '出入庫數量'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '出入庫數量'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '出入庫數量'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MEINS'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'MEINS'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '計量單位'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '計量單位'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '計量單位'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '計量單位'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'EKPO'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'NETPR'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'NETPR'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '凈價格'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '凈價格'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '凈價格'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '凈價格'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'EKPO'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'PEINH'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'PEINH'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '價格單位'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '價格單位'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '價格單位'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '價格單位'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'SGTXT'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'SGTXT'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '項目文本'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '項目文本'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '項目文本'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '項目文本'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
? ADD 1 TO COL_POS.
? G_ALV_FIELDCAT_LINE-REF_TABNAME = 'BSEG'.
? G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
? G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'HKONT'.
? G_ALV_FIELDCAT_LINE-FIELDNAME = 'HKONT'.
? G_ALV_FIELDCAT_LINE-KEY = ''.
? G_ALV_FIELDCAT_LINE-DDICTXT(1)? = 'L'.
? G_ALV_FIELDCAT_LINE-SELTEXT_S = '總分類帳帳目'.
? G_ALV_FIELDCAT_LINE-SELTEXT_L = '總分類帳帳目'.
? G_ALV_FIELDCAT_LINE-SELTEXT_M = '總分類帳帳目'.
? G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '總分類帳帳目'.
? G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
? APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
ENDFORM.??????????????????? " F_ALV_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*&????? 改變ALV的TOP_OF_PAGE事件處理過程
*&---------------------------------------------------------------------*
FORM. F_ALV_BUILD_EVENTCAT .
? DATA : LS_EVENT TYPE SLIS_ALV_EVENT.
? CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
?????? EXPORTING
??????????? I_LIST_TYPE = 0
?????? IMPORTING
??????????? ET_EVENTS?? = G_ALV_EVENT.
? READ TABLE G_ALV_EVENT WITH KEY NAME =
?????? SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
? IF SY-SUBRC = 0.
??? MOVE G_ALV_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
??? APPEND LS_EVENT TO G_ALV_EVENT.
? ENDIF.
ENDFORM.??????????????????? " F_ALV_BUILD_EVENTCAT
*&---------------------------------------------------------------------*
*&????? 調用ALV控件的輸出程序
*&---------------------------------------------------------------------*
FORM. F_ALV_DISPLAY .
? CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
?????? EXPORTING
???????? I_CALLBACK_PROGRAM????? = 'ZR_FI_017'
???????? I_CALLBACK_USER_COMMAND = 'F_ALV_USER_COMMAND'
???????? IS_LAYOUT?????????????? = G_ALV_LAYOUT
???????? IT_FIELDCAT???????????? = G_ALV_FIELDCAT
???????? I_SAVE????????????????? = 'A'
???????? IT_EVENTS?????????????? = G_ALV_EVENT
???????? I_GRID_TITLE??????????? = ''
?????? TABLES
???????? T_OUTTAB??????????????? = IT_PRINT_001
?????? EXCEPTIONS
???????? PROGRAM_ERROR?????????? = 1
???????? OTHERS????????????????? = 2.
ENDFORM.??????????????????? " F_ALV_DISPLAY
*&---------------------------------------------------------------------*
*&????? ALV控件雙擊事件的接口
*&---------------------------------------------------------------------*
FORM. F_ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
??????????????????????? RS_SELFIELD TYPE SLIS_SELFIELD.
? DATA S_TEMP(100) TYPE C.
? CASE R_UCOMM.
??? WHEN '&IC1'.? "NEED MODIFY
????? IF RS_SELFIELD-SEL_TAB_FIELD = 'IT_PRINT_001-MATNR'.
??????? G_SELECTED_FIELD_VALUE =? RS_SELFIELD-VALUE.
?????? "需調用其它程序。
????? ENDIF.
??? WHEN OTHERS.
? ENDCASE.
ENDFORM.??????????????????? "F_ALV_USER_COMMAND
*&---------------------------------------------------------------------*
*&????? 調用ALV控件的抬頭輸出程序
*&---------------------------------------------------------------------*
FORM. F_ALV_EVENT_TOP_OF_PAGE.
? CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
?????? EXPORTING
???????? IT_LIST_COMMENTARY = G_ALV_LISTHEADER.
ENDFORM. "F_ALV_EVENT_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&????? 輸出ALV的頁腳
*&---------------------------------------------------------------------*
FORM. F_ALV_EVENT_END_OF_LIST.
? SKIP.
? WRITE: AT 280 '總計:'.
ENDFORM. "F_ALV_EVENT_END_OF_LIST
*&---------------------------------------------------------------------*
*&????? 單據表頭顯示
*&---------------------------------------------------------------------*
FORM. SUB_HEAD.
ENDFORM.??????????????????? " SUB_OUTPUTHEAD
*&---------------------------------------------------------------------
*&????? 單據表尾顯示
*&---------------------------------------------------------------------
FORM. SUB_BOTTOM.
*取制單人
?CLEAR NAME_LAST.
?CLEAR NAME_FIRST.
?CLEAR NAME.
?SELECT NAME_LAST NAME_FIRST
????? FROM USER_ADDR
?? INTO (NAME_LAST, NAME_FIRST)
?? WHERE BNAME = SY-UNAME .?? "取logon 帳號
?ENDSELECT.
?CONCATENATE NAME_LAST(4) NAME_FIRST(8) INTO NAME.
?WRITE: AT 70? '操作員',NAME+0(10) LEFT-JUSTIFIED .
?WRITE: AT 90 '打印時間:',SY-DATUM,SY-UZEIT.
ENDFORM.??????????????????? "SUB_BOTTOM
總結
- 上一篇: Dynpro F4的实现测试
- 下一篇: SAPMMC控制台服务消失的解决方法