采购订单更改日期的妙用
生活随笔
收集整理的這篇文章主要介紹了
采购订单更改日期的妙用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
采購訂單項目表中的更改日期妙用——EKPO-AEDAT.
1.記錄刪除的日期
一開始用戶要此信息,我都使用跟蹤查找到CDPOS更改憑證項目表,使用此表勉強可以得到正確的信息,但是如果CLIENT COPY做得不好,此類信息會丟失,所以在開發(fā)的CLIENT卻很難測試正確。方法如下:
LOOP AT ITAB_100 WHERE LOEKZ = 'L'.
??? CONCATENATE? ‘%' ITAB_100-EBELN ITAB_100-EBELP INTO ITAB_100-EBENP.
??? SELECT SINGLE CHANGENR INTO ITAB_100-CHANGENR FROM CDPOS
??? WHERE TABNAME = 'EKPO' AND FNAME = 'LOEKZ' AND VALUE_NEW = 'L' AND TABKEY?LIKE ITAB_100-EBENP.
??? IF SY-SUBRC = 0.
????? SELECT SINGLE VALUE_NEW INTO ITAB_100-MAEDAT FROM CDPOS
????? WHERE TABNAME = 'EKPO' AND FNAME = 'AEDAT' AND CHANGENR = ITAB_100-CHANGENR .
??? ENDIF.
??? MODIFY ITAB_100.
??? CLEAR ITAB_100.
? ENDLOOP. ***注意MAEDAT必須LIKE CDPOS-VALUE_NEW 但是事后才發(fā)覺,這些代碼都是多此一舉,僅僅EKPO-AEDAT這個字段就記錄了刪除日期,只要抓取它就可以了。方法如下: IF ITAB_100-LOEKZ = 'L'.
????? ITAB_100-STATE = '刪除'.
????? ITAB_100-MAEDAT = ITAB_100-AEDATP.
??? ELSE.
????? IF ITAB_100-AEDATP IS INITIAL.
??????? ITAB_100-STATE = '錯誤'.
????? ELSE.
??????? ITAB_100-STATE = '正常'.
????? ENDIF.
??? ENDIF. 2.記錄采購訂單暫存狀態(tài) 當采購訂單的項目前有個紅色的圓點狀,表示此訂單為暫存狀態(tài),也可以用這個EKPO-AEDAT來識別。 當EKPO-AEDAT為空的情況,表示此采購訂單的此項為暫存狀態(tài),有部分信息需要填充,否則不能正常使用。 方法如下: IF ITAB_100-AEDATP IS INITIAL.
??????? ITAB_100-STATE = '錯誤'.
????? ELSE.
??????? ITAB_100-STATE = '正常'.
????? ENDIF.
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× 整個報表范例:
REPORT??×××××× no standard page heading MESSAGE-ID zjxydmessage.
*--------------------------------------------------------------*
*Defind include for ALV output.
*--------------------------------------------------------------*
TYPE-POOLS: SLIS.
INCLUDE?.
INCLUDE?.
*--------------------------------------------------------------*
*Data definition
*--------------------------------------------------------------*
CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
????? GS_LAYOUT?? TYPE SLIS_LAYOUT_ALV,
????? GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
????? GT_EVENTS?? TYPE SLIS_T_EVENT. DATA: G_SAVE(1) TYPE C,
????? G_DEFAULT(1) TYPE C,
????? G_EXIT(1) TYPE C,
????? GX_VARIANT LIKE DISVARIANT,
????? G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
????? G_VARIANT LIKE DISVARIANT,
????? G_REPID LIKE SY-REPID,
????? V_ANSWER,
????? v_program(40),
????? v_printdate(60),
????? v_tcode(20),
????? V_ERRORFLAG TYPE N.
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
*----------------------------------------------------------------------*
*定義TABLE
*---------------------------------------------------------------------*
tables: EKKO,??????????????????????????????????????????? "采購憑證抬頭
??????? EKPO,??????????????????????????????????????????? "采購憑證項目
??????? MEPO_TOPLINE,
??????? T007S.?????????????????????????????????????????? "稅收代碼
data: begin of itab_100 occurs 1,
????? WERKS????????? LIKE????????? EKPO-WERKS,????????? "工廠
????? LIFNR????????? LIKE????????? EKKO-LIFNR,????????? "供應商帳號
????? NAME1????????? LIKE????????? LFA1-NAME1,????????? "供應商帳號
????? EBELN????????? LIKE????????? EKKO-EBELN,????????? "采購憑證號
????? EBELP????????? LIKE????????? EKPO-EBELP,????????? "項目編號
????? EBENP(14)????? TYPE????????? C,?????????????????? "訂單號+項目號
????? EBELN1???????? LIKE????????? EKKO-EBELN,????????? "采購憑證號
????? BSART????????? LIKE????????? EKKO-BSART,????????? "采購憑證類型
????? BATXT????????? LIKE????????? T161T-BATXT,???????? "采購憑證類型
????? KNUMV????????? LIKE????????? EKKO-KNUMV,????????? "采購憑證類型
????? KWERT????????? LIKE????????? KONV-KWERT,????????? "采購憑證類型
????? AEDAT????????? LIKE????????? EKKO-AEDAT,????????? "記錄創(chuàng)建日期
????? AEDAT1???????? LIKE????????? EKKO-AEDAT,????????? "記錄創(chuàng)建日期
????? GDATU????????? LIKE????????? TCURR-GDATU,???????? "記錄創(chuàng)建日期
????? TXZ01????????? LIKE????????? EKPO-TXZ01,????????? "短文本
????? NETWR????????? LIKE????????? EKPO-NETWR,????????? "采購金額(不含稅)
????? WAERS????????? LIKE????????? EKKO-WAERS,????????? "貨幣代碼
????? UKURS????????? LIKE????????? TCURR-UKURS,???????? "匯率
????? MWSKZ????????? LIKE????????? EKPO-MWSKZ,????????? "稅代碼
????? TEXT1????????? LIKE????????? T007S-TEXT1,???????? "比例
????? EFFWR????????? LIKE????????? EKPO-EFFWR,????????? "項目的有效值
????? LOEKZ????????? LIKE????????? EKPO-LOEKZ,????????? "采購憑證刪除標識
????? NETWR1???????? LIKE????????? EKPO-NETWR,????????? "采購金額(含稅)
????? NETWR2???????? LIKE????????? EKPO-NETWR,????????? "運費金額(不含稅)
????? NETWR3???????? LIKE????????? EKPO-NETWR,????????? "運費金額(含稅)
????? NETWR4???????? LIKE????????? EKPO-NETWR,????????? "金額合計(含稅)
????? CHANGENR?????? LIKE????????? CDPOS-CHANGENR,????? "文檔更改編號
????? SHOU(2)??????? TYPE????????? C,?????????????????? "是否收貨
????? STATE(4)?????? TYPE????????? C,?????????????????? "訂單狀態(tài)
????? MAEDAT???????? LIKE????????? EKKO-AEDAT,????????? "刪除日期
????? BI(2)????????? TYPE????????? C,?????????????????? "稅比例
????? OTHER(20)????? TYPE????????? C,?????????????????? "訂單狀態(tài)
????? end of itab_100.
*-----檢查權限控制
data: begin of itab_tvko occurs 0,
?????? vkorg like tvko-vkorg,?????? "銷售組織
????? end of itab_tvko.
data: v_auth.??????????????????????? "檢查權限
data:? VTEXT(30)?????? TYPE????????? C,??????????????? "部門名稱
?????? v_bukrs???????? LIKE????????? TVKO-bukrs,?????? "部門名稱
?????? t_bukrs???????? like????????? t001-butxt,?????? "公司名稱
?????? VKUNNR????????? LIKE????????? VBAK-KUNNR,?????? "售達方
?????? OUT_NO(20)????? TYPE???????? C,??????????????? "HEAD文本用來填定出廠編號
?????? V_NETWR????????? LIKE????????? EKPO-NETWR,????????? "采購金額(含稅)
?????? VNAME(60)?????? TYPE????????? C.??????????????? "客戶名稱
DATA:xname like thead-tdname,??????? "文本名稱
??? xvbadr like vbadr,????????????? "vbadr短文本地址工作區(qū)結構
??? xtline like tline occurs 10 with header line,
??? xflag(1),
??? xtemp like sy-tabix.
*--------------------------------------------------------------*
selection-screen begin of block b1 with frame title text-001.
parameters: P_BUKRS like EKKO-BUKRS obligatory .????????????? "公司代碼
select-options: S_WERKS for EKPO-WERKS obligatory .?????????? "工廠
select-options: S_BSART for MEPO_TOPLINE-BSART .????????????????????? "訂單類型
select-options: S_EBELN for EKKO-EBELN .????????????????????? "訂單類型
select-options: S_AEDAT for? EKKO-AEDAT? obligatory .????????? "訂單創(chuàng)建日期
selection-screen end of block b1.
*--------------------------------------------------------------*
*Initiallize for ALV output
*--------------------------------------------------------------*
INITIALIZATION.
? G_REPID = SY-REPID.
? G_SAVE = 'A'.
? CLEAR G_VARIANT.
? G_VARIANT-REPORT = G_REPID. at selection-screen on S_WERKS.
? select single bukrs into v_bukrs from TVKO
????????????? where VKORG IN S_WERKS.
? if v_bukrs ne P_bukrs.
??? message e021? with '請選擇正確的工廠'.
? endif.
*--------------------------------------------------------------*
start-of-selection.
? perform author_check.
? if v_auth ne 'X'.
??? perform get_data.
??? perform sort_data.
??? perform prepare_alv.
??? perform list_data.
? endif.
*&-------------------------------------------------------------*
*&????? Form? get_data
*&-------------------------------------------------------------*
*?????? text
*--------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*--------------------------------------------------------------*
FORM get_data.
? SELECT EKPO~WERKS EKKO~LIFNR EKKO~EBELN EKKO~BSART EKKO~KNUMV EKKO~AEDAT EKKO~WAERS
???????? EKPO~TXZ01 EKPO~NETWR EKPO~MWSKZ EKPO~EFFWR EKPO~LOEKZ EKPO~EBELP
???? into corresponding fields of itab_100
???? FROM EKKO INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN
???? WHERE EKKO~EBELN IN S_EBELN AND
?????????? EKKO~BUKRS = P_BUKRS AND
?????????? EKPO~WERKS IN S_WERKS AND
?????????? EKKO~BSART IN S_BSART AND
?????????? EKKO~AEDAT IN S_AEDAT .
**取供應商名稱
??? SELECT SINGLE NAME1? INTO ITAB_100-NAME1 FROM LFA1 WHERE LIFNR = ITAB_100-LIFNR.
**取稅描述
??? SELECT SINGLE TEXT1? INTO ITAB_100-TEXT1 FROM T007S
??? WHERE SPRAS = '1' AND KALSM = 'TAXCN' AND MWSKZ = ITAB_100-MWSKZ.
**取稅比例
??? SPLIT ITAB_100-TEXT1 AT '%' INTO ITAB_100-BI ITAB_100-OTHER.
**取采購金額(含稅)
??? ITAB_100-NETWR1 = ITAB_100-NETWR + ITAB_100-NETWR * ITAB_100-BI.
**取訂單類型描述
??? SELECT SINGLE BATXT? INTO ITAB_100-BATXT FROM T161T WHERE BSART = ITAB_100-BSART.
**取匯率(月初的匯率)
??? CONCATENATE? ITAB_100-AEDAT(6) '01' INTO ITAB_100-AEDAT1.
??? CONVERT DATE ITAB_100-AEDAT1 INTO INVERTED-DATE ITAB_100-GDATU.
??? ITAB_100-UKURS = 1.
??? SELECT? SINGLE UKURS INTO ITAB_100-UKURS? FROM TCURR
?????? WHERE KURST = 'M' AND FCURR = ITAB_100-WAERS AND? TCURR = 'CNY' AND GDATU =? ITAB_100-GDATU.
**取金額合計(含稅)
??? ITAB_100-NETWR4 = ( ITAB_100-NETWR1 + ITAB_100-NETWR3 ) * ITAB_100-UKURS.
**判斷是否有收貨
??? SELECT SINGLE EBELN INTO ITAB_100-EBELN1 FROM EKBE WHERE EBELN = ITAB_100-EBELN AND BEWTP = 'E'.
??? IF SY-SUBRC = 0.
????? ITAB_100-SHOU = '是'.
??? ELSE.
????? ITAB_100-SHOU = '否'.
??? ENDIF.
**判斷是刪除
??? IF ITAB_100-LOEKZ = 'L'.
????? ITAB_100-STATE = '刪除'.
??? ELSE.
????? ITAB_100-STATE = '正常'.
??? ENDIF.
??? APPEND ITAB_100.
??? CLEAR ITAB_100.
? ENDSELECT.
**取運費
? LOOP AT ITAB_100 .
??? IF ITAB_100-EFFWR NE ITAB_100-NETWR.
????? SELECT? KWERT? INTO V_NETWR? FROM KONV
???????? WHERE KNUMV = ITAB_100-KNUMV AND ( KSCHL = 'FRC1' OR KSCHL = 'FRC2').
??????? ITAB_100-NETWR2 = ITAB_100-NETWR2 + V_NETWR .
??????? V_NETWR = 0.
????? ENDSELECT.
**取運費金額(含稅)
????? ITAB_100-NETWR3 = ITAB_100-NETWR2 * 100 / 93 .
**取金額合計(含稅)
????? ITAB_100-NETWR4 = ( ITAB_100-NETWR1 + ITAB_100-NETWR3 ) * ITAB_100-UKURS.
????? MODIFY ITAB_100.
????? CLEAR ITAB_100.
??? ENDIF.
? ENDLOOP.
**取刪除日期
? LOOP AT ITAB_100 WHERE LOEKZ = 'L'.
??? CONCATENATE? ITAB_100-EBELN ITAB_100-EBELP INTO ITAB_100-EBENP.
??? SELECT SINGLE CHANGENR INTO ITAB_100-CHANGENR FROM CDPOS
??? WHERE TABNAME = 'EKPO' AND FNAME = 'LOEKZ' AND VALUE_NEW = 'L' AND TABKEY = ITAB_100-EBENP.
??? IF SY-SUBRC = 0.
????? SELECT SINGLE VALUE_NEW INTO ITAB_100-MAEDAT FROM CDPOS
????? WHERE TABNAME = 'EKPO' AND FNAME = 'AEDAT' AND CHANGENR = ITAB_100-CHANGENR .
??? ENDIF.
??? MODIFY ITAB_100.
??? CLEAR ITAB_100.
? ENDLOOP.
ENDFORM.??????????????????? " get_data
*&---------------------------------------------------------------------*
*&????? Form? sort_data
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
FORM sort_data .
? sort itab_100 by AEDAT EBELN.
ENDFORM.??????????????????? " sort_data
*&-------------------------------------------------------------*
*&????? Form? list_data
*&-------------------------------------------------------------*
*?????? text
*--------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*--------------------------------------------------------------*
FORM list_data. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'???????????? "output via ALV
???????? EXPORTING
????????????? I_CALLBACK_PROGRAM????? = G_REPID
????????????? IT_FIELDCAT???????????? = GT_FIELDCAT[]
????????????? IT_EVENTS?????????????? = GT_EVENTS[]
????????????? I_SAVE = 'A'
???????? TABLES
????????????? T_OUTTAB??????????????? = ITAB_100. ENDFORM.??????????????????? " list_data
*---------------------------------------------------------------------*
*?????? FORM TOP_OF_PAGE????????????????????????????????????????????? *
*---------------------------------------------------------------------*
*?????? ........????????????????????????????????????????????????????? *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
*---prepare ALV header output
? CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
??? EXPORTING
????? i_logo???????????? = 'ENJOYSAP_LOGO'
????? IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.??????????????????? "list_data
*&---------------------------------------------------------------------*
*&????? Form? prepare_alv
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
FORM prepare_alv .
? PERFORM E01_FIELDCAT_INIT? USING GT_FIELDCAT[].
? PERFORM E03_EVENTTAB_BUILD USING GT_EVENTS[].
? PERFORM E04_COMMENT_BUILD? USING GT_LIST_TOP_OF_PAGE[].
ENDFORM.??????????????????? " prepare_alv
*&---------------------------------------------------------------------*
*&????? Form? E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*????? -->P_GT_FIELDCAT[]? text
*----------------------------------------------------------------------*
FORM E01_FIELDCAT_INIT USING E01_LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. *---Populate ALV field structure
? CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'WERKS'.
? LS_FIELDCAT-COL_POS?????? = '1'.
? LS_FIELDCAT-SELTEXT_L???? = '工廠'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '4'.
? LS_FIELDCAT-just????????? = 'C'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'EBELN'.
? LS_FIELDCAT-COL_POS?????? = '2'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單號碼'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'LIFNR'.
? LS_FIELDCAT-COL_POS?????? = '3'.
? LS_FIELDCAT-SELTEXT_L???? = '供應商代碼'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NAME1'.
? LS_FIELDCAT-COL_POS?????? = '4'.
? LS_FIELDCAT-SELTEXT_L???? = '供應商名稱'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '35'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'AEDAT'.
? LS_FIELDCAT-COL_POS?????? = '5'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單創(chuàng)建日期'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'TXZ01'.
? LS_FIELDCAT-COL_POS?????? = '6'.
? LS_FIELDCAT-SELTEXT_L???? = '物料(工程)名稱'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '40'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR'.
? LS_FIELDCAT-COL_POS?????? = '7'.
? LS_FIELDCAT-SELTEXT_L???? = '采購(工程)金額(不含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '24'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'MWSKZ'.
? LS_FIELDCAT-COL_POS?????? = '8'.
? LS_FIELDCAT-SELTEXT_L???? = '稅碼'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '4'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR1'.
? LS_FIELDCAT-COL_POS?????? = '9'.
? LS_FIELDCAT-SELTEXT_L???? = '采購(工程)金額(含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '22'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR2'.
? LS_FIELDCAT-COL_POS?????? = '10'.
? LS_FIELDCAT-SELTEXT_L???? = '運費金額(不含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '16'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR3'.
? LS_FIELDCAT-COL_POS?????? = '11'.
? LS_FIELDCAT-SELTEXT_L???? = '運費金額(含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '14'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'WAERS'.
? LS_FIELDCAT-COL_POS?????? = '12'.
? LS_FIELDCAT-SELTEXT_L???? = '幣別'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '4'.
? LS_FIELDCAT-just????????? = 'C'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'UKURS'.
? LS_FIELDCAT-COL_POS?????? = '12'.
? LS_FIELDCAT-SELTEXT_L???? = '匯率'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR4'.
? LS_FIELDCAT-COL_POS?????? = '13'.
? LS_FIELDCAT-SELTEXT_L???? = '金額(含稅)合計'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '14'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'SHOU'.
? LS_FIELDCAT-COL_POS?????? = '14'.
? LS_FIELDCAT-SELTEXT_L???? = '是否收貨'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '8'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'STATE'.
? LS_FIELDCAT-COL_POS?????? = '15'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單狀態(tài)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '8'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
? CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'MAEDAT'.
? LS_FIELDCAT-COL_POS?????? = '16'.
? LS_FIELDCAT-SELTEXT_L???? = '刪除日期'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '8'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'BATXT'.
? LS_FIELDCAT-COL_POS?????? = '17'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單類型'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '20'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. ENDFORM.??????????????????? " E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*&????? Form? E03_EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*????? -->P_GT_EVENTS[]? text
*----------------------------------------------------------------------*
FORM E03_EVENTTAB_BUILD USING E03_LT_EVENTS TYPE SLIS_T_EVENT.
? DATA: LS_EVENT TYPE SLIS_ALV_EVENT. CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
??? EXPORTING
????? I_LIST_TYPE = 0
??? IMPORTING
????? ET_EVENTS?? = E03_LT_EVENTS.
? READ TABLE E03_LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
???????????????????????????? INTO LS_EVENT.
? IF SY-SUBRC = 0.
??? MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
??? APPEND LS_EVENT TO E03_LT_EVENTS.
? ENDIF. ENDFORM.??????????????????? " E03_EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*&????? Form? E04_COMMENT_BUILD
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*????? -->P_GT_LIST_TOP_OF_PAGE[]? text
*----------------------------------------------------------------------*
FORM E04_COMMENT_BUILD USING E04_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
? DATA: LS_LINE TYPE SLIS_LISTHEADER.
? CLEAR LS_LINE.
? LS_LINE-TYP? = 'H'.
? select single butxt into t_bukrs from t001 where bukrs eq P_bukrs.
? LS_LINE-INFO = t_bukrs.
? APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
*
? CLEAR LS_LINE.
? LS_LINE-TYP? = 'S'.
? LS_LINE-KEY? = '采購及工程訂單明細表'.
? APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. CLEAR LS_LINE.
?? CONCATENATE '工廠:'? S_WERKS-LOW? '-' S_WERKS-HIGH??? INTO v_program.
?? CONCATENATE '程式編號:××××××' '???? ' '印表時間:' SY-DATUM(4) '/' SY-DATUM+4(2)
????????????? '/' SY-DATUM+6(2) '/'? SY-UZEIT(2) ':' SY-UZEIT+2(2) ':' SY-UZEIT+4(2)? INTO V_PRINTDATE.
? LS_LINE-TYP? = 'S'.
? LS_LINE-KEY? = v_program.
? LS_LINE-INFO = V_PRINTDATE.
? APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. ENDFORM.??????????????????? " E04_COMMENT_BUILD
*&---------------------------------------------------------------------*
*?????? 檢查權限
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
FORM author_check .
? select * into corresponding fields of table itab_tvko
????????? from tvko
??????? where vkorg = S_WERKS. loop at itab_tvko. AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
?????? ID 'WERKS' FIELD itab_tvko-vkorg
?????? ID 'ACTVT' DUMMY.
??? IF SY-SUBRC NE 0.
????? v_auth = 'X'.
????? message s015 with '工廠' itab_tvko-vkorg.
??? ENDIF.
? ENDLOOP. ENDFORM.??????????????????? " author_check
??? CONCATENATE? ‘%' ITAB_100-EBELN ITAB_100-EBELP INTO ITAB_100-EBENP.
??? SELECT SINGLE CHANGENR INTO ITAB_100-CHANGENR FROM CDPOS
??? WHERE TABNAME = 'EKPO' AND FNAME = 'LOEKZ' AND VALUE_NEW = 'L' AND TABKEY?LIKE ITAB_100-EBENP.
??? IF SY-SUBRC = 0.
????? SELECT SINGLE VALUE_NEW INTO ITAB_100-MAEDAT FROM CDPOS
????? WHERE TABNAME = 'EKPO' AND FNAME = 'AEDAT' AND CHANGENR = ITAB_100-CHANGENR .
??? ENDIF.
??? MODIFY ITAB_100.
??? CLEAR ITAB_100.
? ENDLOOP. ***注意MAEDAT必須LIKE CDPOS-VALUE_NEW 但是事后才發(fā)覺,這些代碼都是多此一舉,僅僅EKPO-AEDAT這個字段就記錄了刪除日期,只要抓取它就可以了。方法如下: IF ITAB_100-LOEKZ = 'L'.
????? ITAB_100-STATE = '刪除'.
????? ITAB_100-MAEDAT = ITAB_100-AEDATP.
??? ELSE.
????? IF ITAB_100-AEDATP IS INITIAL.
??????? ITAB_100-STATE = '錯誤'.
????? ELSE.
??????? ITAB_100-STATE = '正常'.
????? ENDIF.
??? ENDIF. 2.記錄采購訂單暫存狀態(tài) 當采購訂單的項目前有個紅色的圓點狀,表示此訂單為暫存狀態(tài),也可以用這個EKPO-AEDAT來識別。 當EKPO-AEDAT為空的情況,表示此采購訂單的此項為暫存狀態(tài),有部分信息需要填充,否則不能正常使用。 方法如下: IF ITAB_100-AEDATP IS INITIAL.
??????? ITAB_100-STATE = '錯誤'.
????? ELSE.
??????? ITAB_100-STATE = '正常'.
????? ENDIF.
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× 整個報表范例:
REPORT??×××××× no standard page heading MESSAGE-ID zjxydmessage.
*--------------------------------------------------------------*
*Defind include for ALV output.
*--------------------------------------------------------------*
TYPE-POOLS: SLIS.
INCLUDE?.
INCLUDE?.
*--------------------------------------------------------------*
*Data definition
*--------------------------------------------------------------*
CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
????? GS_LAYOUT?? TYPE SLIS_LAYOUT_ALV,
????? GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
????? GT_EVENTS?? TYPE SLIS_T_EVENT. DATA: G_SAVE(1) TYPE C,
????? G_DEFAULT(1) TYPE C,
????? G_EXIT(1) TYPE C,
????? GX_VARIANT LIKE DISVARIANT,
????? G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
????? G_VARIANT LIKE DISVARIANT,
????? G_REPID LIKE SY-REPID,
????? V_ANSWER,
????? v_program(40),
????? v_printdate(60),
????? v_tcode(20),
????? V_ERRORFLAG TYPE N.
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
*----------------------------------------------------------------------*
*定義TABLE
*---------------------------------------------------------------------*
tables: EKKO,??????????????????????????????????????????? "采購憑證抬頭
??????? EKPO,??????????????????????????????????????????? "采購憑證項目
??????? MEPO_TOPLINE,
??????? T007S.?????????????????????????????????????????? "稅收代碼
data: begin of itab_100 occurs 1,
????? WERKS????????? LIKE????????? EKPO-WERKS,????????? "工廠
????? LIFNR????????? LIKE????????? EKKO-LIFNR,????????? "供應商帳號
????? NAME1????????? LIKE????????? LFA1-NAME1,????????? "供應商帳號
????? EBELN????????? LIKE????????? EKKO-EBELN,????????? "采購憑證號
????? EBELP????????? LIKE????????? EKPO-EBELP,????????? "項目編號
????? EBENP(14)????? TYPE????????? C,?????????????????? "訂單號+項目號
????? EBELN1???????? LIKE????????? EKKO-EBELN,????????? "采購憑證號
????? BSART????????? LIKE????????? EKKO-BSART,????????? "采購憑證類型
????? BATXT????????? LIKE????????? T161T-BATXT,???????? "采購憑證類型
????? KNUMV????????? LIKE????????? EKKO-KNUMV,????????? "采購憑證類型
????? KWERT????????? LIKE????????? KONV-KWERT,????????? "采購憑證類型
????? AEDAT????????? LIKE????????? EKKO-AEDAT,????????? "記錄創(chuàng)建日期
????? AEDAT1???????? LIKE????????? EKKO-AEDAT,????????? "記錄創(chuàng)建日期
????? GDATU????????? LIKE????????? TCURR-GDATU,???????? "記錄創(chuàng)建日期
????? TXZ01????????? LIKE????????? EKPO-TXZ01,????????? "短文本
????? NETWR????????? LIKE????????? EKPO-NETWR,????????? "采購金額(不含稅)
????? WAERS????????? LIKE????????? EKKO-WAERS,????????? "貨幣代碼
????? UKURS????????? LIKE????????? TCURR-UKURS,???????? "匯率
????? MWSKZ????????? LIKE????????? EKPO-MWSKZ,????????? "稅代碼
????? TEXT1????????? LIKE????????? T007S-TEXT1,???????? "比例
????? EFFWR????????? LIKE????????? EKPO-EFFWR,????????? "項目的有效值
????? LOEKZ????????? LIKE????????? EKPO-LOEKZ,????????? "采購憑證刪除標識
????? NETWR1???????? LIKE????????? EKPO-NETWR,????????? "采購金額(含稅)
????? NETWR2???????? LIKE????????? EKPO-NETWR,????????? "運費金額(不含稅)
????? NETWR3???????? LIKE????????? EKPO-NETWR,????????? "運費金額(含稅)
????? NETWR4???????? LIKE????????? EKPO-NETWR,????????? "金額合計(含稅)
????? CHANGENR?????? LIKE????????? CDPOS-CHANGENR,????? "文檔更改編號
????? SHOU(2)??????? TYPE????????? C,?????????????????? "是否收貨
????? STATE(4)?????? TYPE????????? C,?????????????????? "訂單狀態(tài)
????? MAEDAT???????? LIKE????????? EKKO-AEDAT,????????? "刪除日期
????? BI(2)????????? TYPE????????? C,?????????????????? "稅比例
????? OTHER(20)????? TYPE????????? C,?????????????????? "訂單狀態(tài)
????? end of itab_100.
*-----檢查權限控制
data: begin of itab_tvko occurs 0,
?????? vkorg like tvko-vkorg,?????? "銷售組織
????? end of itab_tvko.
data: v_auth.??????????????????????? "檢查權限
data:? VTEXT(30)?????? TYPE????????? C,??????????????? "部門名稱
?????? v_bukrs???????? LIKE????????? TVKO-bukrs,?????? "部門名稱
?????? t_bukrs???????? like????????? t001-butxt,?????? "公司名稱
?????? VKUNNR????????? LIKE????????? VBAK-KUNNR,?????? "售達方
?????? OUT_NO(20)????? TYPE???????? C,??????????????? "HEAD文本用來填定出廠編號
?????? V_NETWR????????? LIKE????????? EKPO-NETWR,????????? "采購金額(含稅)
?????? VNAME(60)?????? TYPE????????? C.??????????????? "客戶名稱
DATA:xname like thead-tdname,??????? "文本名稱
??? xvbadr like vbadr,????????????? "vbadr短文本地址工作區(qū)結構
??? xtline like tline occurs 10 with header line,
??? xflag(1),
??? xtemp like sy-tabix.
*--------------------------------------------------------------*
selection-screen begin of block b1 with frame title text-001.
parameters: P_BUKRS like EKKO-BUKRS obligatory .????????????? "公司代碼
select-options: S_WERKS for EKPO-WERKS obligatory .?????????? "工廠
select-options: S_BSART for MEPO_TOPLINE-BSART .????????????????????? "訂單類型
select-options: S_EBELN for EKKO-EBELN .????????????????????? "訂單類型
select-options: S_AEDAT for? EKKO-AEDAT? obligatory .????????? "訂單創(chuàng)建日期
selection-screen end of block b1.
*--------------------------------------------------------------*
*Initiallize for ALV output
*--------------------------------------------------------------*
INITIALIZATION.
? G_REPID = SY-REPID.
? G_SAVE = 'A'.
? CLEAR G_VARIANT.
? G_VARIANT-REPORT = G_REPID. at selection-screen on S_WERKS.
? select single bukrs into v_bukrs from TVKO
????????????? where VKORG IN S_WERKS.
? if v_bukrs ne P_bukrs.
??? message e021? with '請選擇正確的工廠'.
? endif.
*--------------------------------------------------------------*
start-of-selection.
? perform author_check.
? if v_auth ne 'X'.
??? perform get_data.
??? perform sort_data.
??? perform prepare_alv.
??? perform list_data.
? endif.
*&-------------------------------------------------------------*
*&????? Form? get_data
*&-------------------------------------------------------------*
*?????? text
*--------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*--------------------------------------------------------------*
FORM get_data.
? SELECT EKPO~WERKS EKKO~LIFNR EKKO~EBELN EKKO~BSART EKKO~KNUMV EKKO~AEDAT EKKO~WAERS
???????? EKPO~TXZ01 EKPO~NETWR EKPO~MWSKZ EKPO~EFFWR EKPO~LOEKZ EKPO~EBELP
???? into corresponding fields of itab_100
???? FROM EKKO INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN
???? WHERE EKKO~EBELN IN S_EBELN AND
?????????? EKKO~BUKRS = P_BUKRS AND
?????????? EKPO~WERKS IN S_WERKS AND
?????????? EKKO~BSART IN S_BSART AND
?????????? EKKO~AEDAT IN S_AEDAT .
**取供應商名稱
??? SELECT SINGLE NAME1? INTO ITAB_100-NAME1 FROM LFA1 WHERE LIFNR = ITAB_100-LIFNR.
**取稅描述
??? SELECT SINGLE TEXT1? INTO ITAB_100-TEXT1 FROM T007S
??? WHERE SPRAS = '1' AND KALSM = 'TAXCN' AND MWSKZ = ITAB_100-MWSKZ.
**取稅比例
??? SPLIT ITAB_100-TEXT1 AT '%' INTO ITAB_100-BI ITAB_100-OTHER.
**取采購金額(含稅)
??? ITAB_100-NETWR1 = ITAB_100-NETWR + ITAB_100-NETWR * ITAB_100-BI.
**取訂單類型描述
??? SELECT SINGLE BATXT? INTO ITAB_100-BATXT FROM T161T WHERE BSART = ITAB_100-BSART.
**取匯率(月初的匯率)
??? CONCATENATE? ITAB_100-AEDAT(6) '01' INTO ITAB_100-AEDAT1.
??? CONVERT DATE ITAB_100-AEDAT1 INTO INVERTED-DATE ITAB_100-GDATU.
??? ITAB_100-UKURS = 1.
??? SELECT? SINGLE UKURS INTO ITAB_100-UKURS? FROM TCURR
?????? WHERE KURST = 'M' AND FCURR = ITAB_100-WAERS AND? TCURR = 'CNY' AND GDATU =? ITAB_100-GDATU.
**取金額合計(含稅)
??? ITAB_100-NETWR4 = ( ITAB_100-NETWR1 + ITAB_100-NETWR3 ) * ITAB_100-UKURS.
**判斷是否有收貨
??? SELECT SINGLE EBELN INTO ITAB_100-EBELN1 FROM EKBE WHERE EBELN = ITAB_100-EBELN AND BEWTP = 'E'.
??? IF SY-SUBRC = 0.
????? ITAB_100-SHOU = '是'.
??? ELSE.
????? ITAB_100-SHOU = '否'.
??? ENDIF.
**判斷是刪除
??? IF ITAB_100-LOEKZ = 'L'.
????? ITAB_100-STATE = '刪除'.
??? ELSE.
????? ITAB_100-STATE = '正常'.
??? ENDIF.
??? APPEND ITAB_100.
??? CLEAR ITAB_100.
? ENDSELECT.
**取運費
? LOOP AT ITAB_100 .
??? IF ITAB_100-EFFWR NE ITAB_100-NETWR.
????? SELECT? KWERT? INTO V_NETWR? FROM KONV
???????? WHERE KNUMV = ITAB_100-KNUMV AND ( KSCHL = 'FRC1' OR KSCHL = 'FRC2').
??????? ITAB_100-NETWR2 = ITAB_100-NETWR2 + V_NETWR .
??????? V_NETWR = 0.
????? ENDSELECT.
**取運費金額(含稅)
????? ITAB_100-NETWR3 = ITAB_100-NETWR2 * 100 / 93 .
**取金額合計(含稅)
????? ITAB_100-NETWR4 = ( ITAB_100-NETWR1 + ITAB_100-NETWR3 ) * ITAB_100-UKURS.
????? MODIFY ITAB_100.
????? CLEAR ITAB_100.
??? ENDIF.
? ENDLOOP.
**取刪除日期
? LOOP AT ITAB_100 WHERE LOEKZ = 'L'.
??? CONCATENATE? ITAB_100-EBELN ITAB_100-EBELP INTO ITAB_100-EBENP.
??? SELECT SINGLE CHANGENR INTO ITAB_100-CHANGENR FROM CDPOS
??? WHERE TABNAME = 'EKPO' AND FNAME = 'LOEKZ' AND VALUE_NEW = 'L' AND TABKEY = ITAB_100-EBENP.
??? IF SY-SUBRC = 0.
????? SELECT SINGLE VALUE_NEW INTO ITAB_100-MAEDAT FROM CDPOS
????? WHERE TABNAME = 'EKPO' AND FNAME = 'AEDAT' AND CHANGENR = ITAB_100-CHANGENR .
??? ENDIF.
??? MODIFY ITAB_100.
??? CLEAR ITAB_100.
? ENDLOOP.
ENDFORM.??????????????????? " get_data
*&---------------------------------------------------------------------*
*&????? Form? sort_data
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
FORM sort_data .
? sort itab_100 by AEDAT EBELN.
ENDFORM.??????????????????? " sort_data
*&-------------------------------------------------------------*
*&????? Form? list_data
*&-------------------------------------------------------------*
*?????? text
*--------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*--------------------------------------------------------------*
FORM list_data. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'???????????? "output via ALV
???????? EXPORTING
????????????? I_CALLBACK_PROGRAM????? = G_REPID
????????????? IT_FIELDCAT???????????? = GT_FIELDCAT[]
????????????? IT_EVENTS?????????????? = GT_EVENTS[]
????????????? I_SAVE = 'A'
???????? TABLES
????????????? T_OUTTAB??????????????? = ITAB_100. ENDFORM.??????????????????? " list_data
*---------------------------------------------------------------------*
*?????? FORM TOP_OF_PAGE????????????????????????????????????????????? *
*---------------------------------------------------------------------*
*?????? ........????????????????????????????????????????????????????? *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
*---prepare ALV header output
? CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
??? EXPORTING
????? i_logo???????????? = 'ENJOYSAP_LOGO'
????? IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.??????????????????? "list_data
*&---------------------------------------------------------------------*
*&????? Form? prepare_alv
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
FORM prepare_alv .
? PERFORM E01_FIELDCAT_INIT? USING GT_FIELDCAT[].
? PERFORM E03_EVENTTAB_BUILD USING GT_EVENTS[].
? PERFORM E04_COMMENT_BUILD? USING GT_LIST_TOP_OF_PAGE[].
ENDFORM.??????????????????? " prepare_alv
*&---------------------------------------------------------------------*
*&????? Form? E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*????? -->P_GT_FIELDCAT[]? text
*----------------------------------------------------------------------*
FORM E01_FIELDCAT_INIT USING E01_LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. *---Populate ALV field structure
? CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'WERKS'.
? LS_FIELDCAT-COL_POS?????? = '1'.
? LS_FIELDCAT-SELTEXT_L???? = '工廠'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '4'.
? LS_FIELDCAT-just????????? = 'C'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'EBELN'.
? LS_FIELDCAT-COL_POS?????? = '2'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單號碼'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'LIFNR'.
? LS_FIELDCAT-COL_POS?????? = '3'.
? LS_FIELDCAT-SELTEXT_L???? = '供應商代碼'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NAME1'.
? LS_FIELDCAT-COL_POS?????? = '4'.
? LS_FIELDCAT-SELTEXT_L???? = '供應商名稱'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '35'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'AEDAT'.
? LS_FIELDCAT-COL_POS?????? = '5'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單創(chuàng)建日期'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'TXZ01'.
? LS_FIELDCAT-COL_POS?????? = '6'.
? LS_FIELDCAT-SELTEXT_L???? = '物料(工程)名稱'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '40'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR'.
? LS_FIELDCAT-COL_POS?????? = '7'.
? LS_FIELDCAT-SELTEXT_L???? = '采購(工程)金額(不含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '24'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'MWSKZ'.
? LS_FIELDCAT-COL_POS?????? = '8'.
? LS_FIELDCAT-SELTEXT_L???? = '稅碼'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '4'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR1'.
? LS_FIELDCAT-COL_POS?????? = '9'.
? LS_FIELDCAT-SELTEXT_L???? = '采購(工程)金額(含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '22'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR2'.
? LS_FIELDCAT-COL_POS?????? = '10'.
? LS_FIELDCAT-SELTEXT_L???? = '運費金額(不含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '16'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR3'.
? LS_FIELDCAT-COL_POS?????? = '11'.
? LS_FIELDCAT-SELTEXT_L???? = '運費金額(含稅)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '14'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'WAERS'.
? LS_FIELDCAT-COL_POS?????? = '12'.
? LS_FIELDCAT-SELTEXT_L???? = '幣別'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '4'.
? LS_FIELDCAT-just????????? = 'C'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'UKURS'.
? LS_FIELDCAT-COL_POS?????? = '12'.
? LS_FIELDCAT-SELTEXT_L???? = '匯率'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '10'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'NETWR4'.
? LS_FIELDCAT-COL_POS?????? = '13'.
? LS_FIELDCAT-SELTEXT_L???? = '金額(含稅)合計'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '14'.
? LS_FIELDCAT-just????????? = 'R'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'SHOU'.
? LS_FIELDCAT-COL_POS?????? = '14'.
? LS_FIELDCAT-SELTEXT_L???? = '是否收貨'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '8'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'STATE'.
? LS_FIELDCAT-COL_POS?????? = '15'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單狀態(tài)'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '8'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
? CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'MAEDAT'.
? LS_FIELDCAT-COL_POS?????? = '16'.
? LS_FIELDCAT-SELTEXT_L???? = '刪除日期'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '8'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. CLEAR LS_FIELDCAT.
? LS_FIELDCAT-TABNAME?????? = 'ITAB_100'.
? LS_FIELDCAT-FIELDNAME???? = 'BATXT'.
? LS_FIELDCAT-COL_POS?????? = '17'.
? LS_FIELDCAT-SELTEXT_L???? = '訂單類型'.
? LS_FIELDCAT-DDICTXT?????? = 'L'.
? LS_FIELDCAT-outputlen???? = '20'.
? LS_FIELDCAT-just????????? = 'L'.
? APPEND LS_FIELDCAT TO E01_LT_FIELDCAT. ENDFORM.??????????????????? " E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*&????? Form? E03_EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*????? -->P_GT_EVENTS[]? text
*----------------------------------------------------------------------*
FORM E03_EVENTTAB_BUILD USING E03_LT_EVENTS TYPE SLIS_T_EVENT.
? DATA: LS_EVENT TYPE SLIS_ALV_EVENT. CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
??? EXPORTING
????? I_LIST_TYPE = 0
??? IMPORTING
????? ET_EVENTS?? = E03_LT_EVENTS.
? READ TABLE E03_LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
???????????????????????????? INTO LS_EVENT.
? IF SY-SUBRC = 0.
??? MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
??? APPEND LS_EVENT TO E03_LT_EVENTS.
? ENDIF. ENDFORM.??????????????????? " E03_EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*&????? Form? E04_COMMENT_BUILD
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*????? -->P_GT_LIST_TOP_OF_PAGE[]? text
*----------------------------------------------------------------------*
FORM E04_COMMENT_BUILD USING E04_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
? DATA: LS_LINE TYPE SLIS_LISTHEADER.
? CLEAR LS_LINE.
? LS_LINE-TYP? = 'H'.
? select single butxt into t_bukrs from t001 where bukrs eq P_bukrs.
? LS_LINE-INFO = t_bukrs.
? APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
*
? CLEAR LS_LINE.
? LS_LINE-TYP? = 'S'.
? LS_LINE-KEY? = '采購及工程訂單明細表'.
? APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. CLEAR LS_LINE.
?? CONCATENATE '工廠:'? S_WERKS-LOW? '-' S_WERKS-HIGH??? INTO v_program.
?? CONCATENATE '程式編號:××××××' '???? ' '印表時間:' SY-DATUM(4) '/' SY-DATUM+4(2)
????????????? '/' SY-DATUM+6(2) '/'? SY-UZEIT(2) ':' SY-UZEIT+2(2) ':' SY-UZEIT+4(2)? INTO V_PRINTDATE.
? LS_LINE-TYP? = 'S'.
? LS_LINE-KEY? = v_program.
? LS_LINE-INFO = V_PRINTDATE.
? APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. ENDFORM.??????????????????? " E04_COMMENT_BUILD
*&---------------------------------------------------------------------*
*?????? 檢查權限
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
FORM author_check .
? select * into corresponding fields of table itab_tvko
????????? from tvko
??????? where vkorg = S_WERKS. loop at itab_tvko. AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
?????? ID 'WERKS' FIELD itab_tvko-vkorg
?????? ID 'ACTVT' DUMMY.
??? IF SY-SUBRC NE 0.
????? v_auth = 'X'.
????? message s015 with '工廠' itab_tvko-vkorg.
??? ENDIF.
? ENDLOOP. ENDFORM.??????????????????? " author_check
總結
以上是生活随笔為你收集整理的采购订单更改日期的妙用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AFAB-资产折旧时出错 在上一年结算之
- 下一篇: 致CSDN的感谢信