ZRPP0001 (多个选项卡,DownLoad, Email,Variant)
来源:互联网 发布:油画 淘宝 编辑:程序博客网 时间:2024/05/23 01:59
*&---------------------------------------------------------------------*
*& Report ZRPP0001 *
*&
*&---------------------------------------------------------------------*
*& Report : Outstanding Sales orders Report
*& Requested by : Yih Chin
*& Developed by : Sastry
*& Start date : 18.11.2003
*& Description :
*&---------------------------------------------------------------------*
* Change History
* Date : 19/04/2005
* Done by : Sastry
* Description : 1. get fablot no.s from sales order item
* 2. change logic for outstanding sales order item
* If there is any corresponding production order with
* status REL / TECO (released and manually closed) and
* without DLFL (not deleted), consider the sales order
* item as "closed",
* 3. get batches for the materials 1, 2 and 3
* Date : 17/06/2005
* Description : To get full package name
* Date : 08/07/2005
* Description : To add material controller, delivery block fields
* Date : 22/09/2005
* Description : 1. To ignore complete sales order item
* 2. Move devices with no wafer component to die recv
* Date : 10/11/2005
* Description : 1. Add ability to search for fab lot in another plant
* 2. Add ""BOM status"
* 3. Add the sale order ""ordering reason" in the report
* for the ANLG ""NP"" lot follow up
* 4. Add the ""wafer storage location"
* Date : 25/4/2006
* Description : 1.Add e-mail screen
*
* 007 24/01/2007 watson yuan task#1026:Add die ID by modify structure *
* "ZXSALES_TAB". "DEVK921870 *
* "DEVK921945 *
* 008 06/02/2007 watson yuan task#848a:enhanceemnt to show the SO *
* have set rejection 99-hold for prroduction*
* "DEVK922024 *
* 009 02/14/207 Jaso_Ding task#1027:Add additional information: *
* unit price (assembly and/or testing) and *
* the net value (sum of the assembly/test *
* charge) "DEVK922123 *
* 010 2008-03-05 vista Fix bug of outstanding sales order repor *
* "DEVK924134 [S0803001] *
*&---------------------------------------------------------------------*
REPORT ZRPP0001 MESSAGE-ID CO .
*&---------------------------------------------------------------------*
* tables
*&---------------------------------------------------------------------*
TABLES : MARA, MARC, MBEW, MAKT, T001W, S801, KNA1, EKPO, EKBE, EBAN,
T001, VBAK, VBAP, VBEP, KLAH, CABNT, AUSP, MCHB, MARD, TVAUT.
tables :ADR6, tzw02, usr21.
TABLES: TVAGT, TVLST. "DEVK922024
*&---------------------------------------------------------------------*
* type-pools
*&---------------------------------------------------------------------*
type-pools: slis.
*&---------------------------------------------------------------------*
* Constants
*&--------------------------------------------------------------------**
constants c_log_name like filename-fileintern
value 'Z_DEFAULT_APP_FILE'.
*&---------------------------------------------------------------------*
* Internal tables
*&---------------------------------------------------------------------*
DATA : BEGIN OF XVBAP OCCURS 0.
INCLUDE STRUCTURE VBAP.
DATA : KNUMV LIKE VBAK-KNUMV, "DEVK922123
AUDAT LIKE VBAK-AUDAT,
AUART LIKE VBAK-AUART,
AUGRU LIKE VBAK-AUGRU,
LIFSK LIKE VBAK-LIFSK,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
VKGRP LIKE VBAK-VKGRP,
VKBUR LIKE VBAK-VKBUR,
BSTNK LIKE VBAK-BSTNK,
BSTDK LIKE VBAK-BSTDK,
KUNNR LIKE VBAK-KUNNR,
BMENG LIKE VBAP-KWMENG,
SYSSTAT(50),
USRSTAT(50),
PLNUM LIKE PLAF-PLNUM,
DIEASSIGN(1),
ETTYP LIKE VBEP-ETTYP,
EDATU LIKE VBEP-EDATU.
DATA : END OF XVBAP.
DATA : BEGIN OF XFABLOTS OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE AUSP-ATWRT,
FABLOTNO LIKE AUSP-ATWRT,
WAFID LIKE VBAP-ZZWAFID1,
DIEID LIKE VBAP-ZZDIEID1, "DEVK921945
MTART LIKE MARA-MTART.
DATA : END OF XFABLOTS.
DATA : BEGIN OF XVBPA_SP OCCURS 0,
VBELN LIKE VBPA-VBELN,
POSNR LIKE VBPA-POSNR,
KUNNR LIKE VBPA-KUNNR,
END OF XVBPA_SP.
DATA : BEGIN OF XVBPA_BP OCCURS 0,
VBELN LIKE VBPA-VBELN,
POSNR LIKE VBPA-POSNR,
KUNNR LIKE VBPA-KUNNR,
END OF XVBPA_BP.
DATA : BEGIN OF XVBPA_SHP OCCURS 0,
VBELN LIKE VBPA-VBELN,
POSNR LIKE VBPA-POSNR,
KUNNR LIKE VBPA-KUNNR,
END OF XVBPA_SHP.
DATA : BEGIN OF XVBAK OCCURS 0.
INCLUDE STRUCTURE VBAK.
DATA : END OF XVBAK.
**Add start of DEVK922123
DATA : BEGIN OF XKONV OCCURS 0.
INCLUDE STRUCTURE KONV.
DATA : END OF XKONV.
**Add end of DEVK922123
DATA : BEGIN OF XVBAK_AU OCCURS 0.
INCLUDE STRUCTURE VBAK.
DATA : BEZEI LIKE TVAUT-BEZEI.
DATA : END OF XVBAK_AU.
DATA : BEGIN OF XTVAUT OCCURS 0.
INCLUDE STRUCTURE TVAUT.
DATA : END OF XTVAUT.
DATA : BEGIN OF XMAST OCCURS 0.
INCLUDE STRUCTURE MAST.
DATA : END OF XMAST.
DATA : BEGIN OF XSTKO OCCURS 0.
INCLUDE STRUCTURE STKO.
DATA : END OF XSTKO.
DATA : BEGIN OF XVBPA_PY OCCURS 0,
VBELN LIKE VBPA-VBELN,
POSNR LIKE VBPA-POSNR,
KUNNR LIKE VBPA-KUNNR,
END OF XVBPA_PY.
DATA : BEGIN OF XMCHA OCCURS 0,
MATNR LIKE MCHA-MATNR,
WERKS LIKE MCHA-WERKS,
CHARG LIKE MCHA-CHARG,
LWEDT LIKE MCHA-LWEDT,
CLABS LIKE MCHB-CLABS,
CINSM LIKE MCHB-CINSM,
FABLOTNO LIKE AUSP-ATWRT,
MTART LIKE MARA-MTART,
DB_CUST LIKE AUSP-ATWRT,
DB_WQTY LIKE AUSP-ATWRT,
DB_DQTY LIKE AUSP-ATWRT,
DB_WID LIKE AUSP-ATWRT,
DB_WSIZE LIKE AUSP-ATWRT,
DB_WTHICK LIKE AUSP-ATWRT,
DB_BGTHK LIKE AUSP-ATWRT,
DB_RDQ LIKE AUSP-ATWRT,
DB_RWQ LIKE AUSP-ATWRT,
ICB_LOT_NO LIKE AUSP-ATWRT,
END OF XMCHA.
DATA : BEGIN OF XMCHA_PS OCCURS 0,
MATNR LIKE MCHA-MATNR,
WERKS LIKE MCHA-WERKS,
CHARG LIKE MCHA-CHARG,
LGORT LIKE MCHB-LGORT,
CLABS LIKE MCHB-CLABS,
CINSM LIKE MCHB-CINSM,
END OF XMCHA_PS.
DATA : BEGIN OF XMARC OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
DISPO LIKE MARC-DISPO,
END OF XMARC.
DATA : BEGIN OF XTEMP1 OCCURS 0.
INCLUDE STRUCTURE SCLASS.
DATA : END OF XTEMP1.
DATA : BEGIN OF XTEMP2 OCCURS 0.
INCLUDE STRUCTURE CLOBJEKTE.
DATA : END OF XTEMP2.
DATA : BEGIN OF XOBJECTS OCCURS 0.
INCLUDE STRUCTURE CLOBJEKTE.
DATA : END OF XOBJECTS.
DATA : BEGIN OF XKLAH OCCURS 0.
INCLUDE STRUCTURE KLAH.
DATA : END OF XKLAH.
DATA : BEGIN OF XTAB OCCURS 0.
INCLUDE STRUCTURE ZXSALES_TAB.
DATA : END OF XTAB.
data : begin of w_output ,
VKORG(30) type c ,"Sales Organization
VTWEG(30) type c ,"Distribution Channel
SPART(30) type c ,"Division
LIFSK(30) type c ,"Delivery block (document header)
VBELN(30) type c ,"Sales and Distribution Document Number
POSNR(30) type c ,"Item number of the SD document
LPRIO(30) type c ,"Delivery Priority
AUART(30) type c ," Sales Document Type
AUDAT(30) type c ," Document date (date received/sent)
VKBUR(30) type c ," Sales office
VKGRP(30) type c ," Sales group
BEZEI(40) type c ," Order reason
DISPO(30) type c ," MRP Controller
MATNR(30) type c ," Material (Device)
MAKTX(40) type c ," Mat.Desc ( Device)
KDMAT(40) type c ," Material belonging to the customer
WERKS(40) type c ," Plant
STLST(40) type c ," BOM status
KUNUM1(40) type c ," Sold to party
KNAME1(40) type c ," Customer Name
KUNUM2(40) type c ," Ship to
KNAME2(40) type c ," Customer Name
KUNUM3(40) type c ," Bill to
KNAME3(40) type c ," Customer Name
KUNUM4(40) type c ," Payer
KNAME4(40) type c ," Customer Name
CHARG(40) type c ," Batch Number
FABNO(40) type c ," Fab Lot no.
KUNNR(40) type c ," Customer Number 1
WAFID(40) type c ," Wafer id
BSTNK(40) type c ," Customer purchase order number
BSTDK(40) type c ," Customer purchase order date
KWMENG(40) type c ," Order qty.
ZPACK(40) type c ," Package
ZLEAD(40) type c ," Lead
FOOTPR(40) type c ," Foot Print
ZDIM(40) type c ," Dimension
PACKTH(40) type c ," Package thickness
NUMWIRE(40) type c ," Number of wires
DB_CUST(40) type c ," Customer ( Batch )
FABLOTNO(40) type c ,"Fab lot # (Batch)
DB_WQTY(40) type c ,"Wafer qty
DB_DQTY(40) type c ,"Label Die Qty
DB_WID(40) type c ,"Wafer id
DB_WSIZE(40) type c ,"Wafer Size
DB_WTHICK(40) type c ,"Wafer Thickness.
DB_BGTHK(40) type c ,"Backgrind thickness
DB_RWQ(40) type c ,"Wafer release qty
DB_RDQ(40) type c ,"Release die qty
PLNUM(40) type c ,"Planned order number
AUFNR(40) type c ,"Order Number
SYSSTAT(80) type c,"Used to display Production order status
USRSTAT(80) type c,"Used to display Production order status
DIEASSIGN(40) type c ,"Die/IC Assigned
ZZRES5(40) type c ,"Wafer Map
LWEDT(40) type c ,"Date of last goods receipt
ZZDQPL1(40) type c ,"Die Qty Plant / Sloc 1
ZZDQPL2(40) type c ," Die Qty Plant Sloc 2
ZZDQPL3(40) type c ," Die Qty Plant Sloc 3
ZZDQPL4(40) type c ,"Die Qty Plant Sloc 4
ZZDQPL5(40) type c ," Die Qty Plant Sloc 5
ZZDQPL6(40) type c ," Die Qty Plant Sloc 2
ETTYP(40) type c ," Schedule line category
EDATU(40) type c ," Schedule line date
end of w_output.
DATA t_output LIKE TABLE OF w_output.
DATA : V_OBJECT LIKE AUSP-OBJEK.
DATA : BEGIN OF XOBJECTDATA OCCURS 0.
INCLUDE STRUCTURE CLOBJDAT.
DATA : END OF XOBJECTDATA.
DATA : BEGIN OF XCLASS OCCURS 0.
INCLUDE STRUCTURE SCLASS.
DATA : END OF XCLASS.
DATA : BEGIN OF XAUFK OCCURS 0,
KDAUF LIKE AFPO-KDAUF,
KDPOS LIKE AFPO-KDPOS,
AUFNR LIKE AFPO-AUFNR,
OBJNR LIKE AUFK-OBJNR,
RSNUM LIKE AFKO-RSNUM,
AEDAT like aufk-AEDAT,
END OF XAUFK.
DATA : BEGIN OF GT_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF GT_KNA1.
DATA : BEGIN OF GT_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,
SPRAS LIKE MAKT-SPRAS,
MAKTX LIKE MAKT-MAKTX,
END OF GT_MAKT.
* Devices without wafer
DATA : BEGIN OF XDEVICE OCCURS 0,
MATNR LIKE VBAP-MATNR,
WERKS LIKE VBAP-WERKS,
END OF XDEVICE.
DATA : BEGIN OF GT_CHAR OCCURS 0,
MATNR LIKE XTAB-MATNR,
ZLEAD LIKE XTAB-ZLEAD,
FOOTPR LIKE XTAB-FOOTPR,
ZDIM LIKE XTAB-ZDIM,
PACKTH LIKE XTAB-PACKTH,
NUMWIRE LIKE XTAB-NUMWIRE,
KUNNR LIKE XTAB-KUNNR,
ZPACK LIKE XTAB-ZPACK,
END OF GT_CHAR.
DATA : V_LINE LIKE BSVX-STTXT,
V_USER_LINE LIKE BSVX-STTXT.
****for sending email
data gs_docdata like sodocchgi1.
data gs_subject type so_obj_des.
data gt_objpack like sopcklsti1 occurs 1 with header line.
data gt_objtxt like solisti1 occurs 1 with header line.
data gt_objbin like solisti1 occurs 1 with header line.
data gt_reclist like somlreci1 occurs 1 with header line.
data gt_msgreturn like zmsgreturn occurs 1 with header line.
data gt_contents like solisti1 occurs 1 with header line.
data gt_files like zfilespath occurs 1 with header line.
data gt_spool like zspoolpath occurs 1 with header line.
data g_file_excel type zbc_conv_txt2exl." For Output sheets in a file
data: g_subrc like sy-subrc.
data: begin of gt_file_out occurs 1000,
g_line(2000) type c,
end of gt_file_out.
data: fname like RLGRAP-FILENAME,"(400) type c,
fname1 like RLGRAP-FILENAME,"(400) type c,
fname2 like RLGRAP-FILENAME,"(400) type c,
l_path(300) type c,
p_rcode type i.
*get out format ----------------------------------------------------*
data: begin of gt_alv_fc occurs 100,
fld_name(30) type c,
col_pos type i,
end of gt_alv_fc.
data: fieldcat type slis_t_fieldcat_alv, "ALV Field Catalog
layout type slis_layout_alv,
title type lvc_title,
* g_repid like sy-repid,
* VARIANT LIKE DISVARIANT, "Layout Variant
sort type slis_t_sortinfo_alv, "for subtotal
sort_str type slis_sortinfo_alv,
* gt_events type slis_t_event,
gt_top_of_page type slis_t_listheader. "ALV Top-of-page
*KENNTANG20060420-START
data: lt_error_01 like bapireturn occurs 1 with header line.
data: l_parm_01 type zbc_conv_txt2exl.
*KENNTANG20060420-END
*&---------------------------------------------------------------------*
*
* Selection screen
*
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_VKORG FOR VBAK-VKORG, "Sales org. 1
S_VTWEG FOR VBAK-VTWEG, "Dist. Channel 2
S_SPART FOR VBAK-SPART. "Div. 3
SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN, "Sales Ord # 4
S_POSNR FOR VBAP-POSNR,"Sales Ord Item 5 ITEM
S_LPRIO FOR VBAP-LPRIO,"Delivery Priority ( in ITEM
" Shipping tab ) 6
S_AUART FOR VBAK-AUART,"Document type 7
S_AUDAT FOR VBAK-AUDAT,"Document date 8
S_EDATU FOR VBEP-EDATU,"First date ( requested deliv.
"date ) 9
S_VKBUR FOR VBAK-VKBUR,"Sales office 10
S_VKGRP FOR VBAK-VKGRP,"Sales group 11
S_KDMAT FOR VBAP-KDMAT,
"Cust .Mat.No(assembly lot )12
S_WERKS FOR T001W-WERKS, "Plant 13
* s_matnr1 for mara-matnr value '1',
"Die material no. = ‘1’
" time being hardcoded.
S_KUNUM1 FOR VBAK-KUNNR MATCHCODE OBJECT DEBI,
"Sold to 14
S_KUNUM2 FOR VBAK-KUNNR MATCHCODE OBJECT DEBI,
"Ship to 15
S_KUNUM3 FOR VBAK-KUNNR MATCHCODE OBJECT DEBI,
"Bill to 16
S_KUNUM4 FOR VBAK-KUNNR MATCHCODE OBJECT DEBI,
"Payer 17
S_SFABLT FOR AUSP-ATWRT,
S_LIFSK FOR VBAK-LIFSK.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
*SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS : S_DEVICE FOR MARA-MATNR, "18
S_DISPO FOR MARC-DISPO,
S_MTART FOR MARA-MTART, "19
S_MATKL FOR MARA-MATKL, "20
S_CLASS FOR KLAH-CLASS MATCHCODE OBJECT CLAS.
" class number 21
* s_atbez for cabnt-atbez no intervals. "22
" cabnt -> get atinn - int. char
*SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN END OF SCREEN 200.
SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
*selection-screen begin of block b4 with frame title text-005.
*parameters : p_r1 as checkbox default 'X',
* p_r2 as checkbox,
* p_r3 as checkbox.
SELECT-OPTIONS : S_WERKS1 FOR MARC-WERKS,
S_LGORT1 FOR MARD-LGORT.
SELECT-OPTIONS : S_WERKS2 FOR MARC-WERKS,
S_LGORT2 FOR MARD-LGORT.
SELECT-OPTIONS : S_WERKS3 FOR MARC-WERKS,
S_LGORT3 FOR MARD-LGORT.
SELECT-OPTIONS : S_WERKS4 FOR MARC-WERKS,
S_LGORT4 FOR MARD-LGORT.
SELECT-OPTIONS : S_WERKS5 FOR MARC-WERKS,
S_LGORT5 FOR MARD-LGORT.
SELECT-OPTIONS : S_WERKS6 FOR MARC-WERKS,
S_LGORT6 FOR MARD-LGORT.
SELECTION-SCREEN END OF SCREEN 300.
*selection-screen end of block b4.
SELECTION-SCREEN BEGIN OF SCREEN 400 AS SUBSCREEN.
*SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS : P_ATWRT1 FOR AUSP-ATWRT MATCHCODE OBJECT DEBI.
" Customer No. 23
* P_ATWRT2 FOR AUSP-ATWRT. " Fab lot # 24
*SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN END OF SCREEN 400.
SELECTION-SCREEN BEGIN OF SCREEN 500 AS SUBSCREEN.
*SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-006.
PARAMETERS : P_DR RADIOBUTTON GROUP R2 DEFAULT 'X', "Die recv
P_DNOTR RADIOBUTTON GROUP R2, "Die not recv
P_BOTH RADIOBUTTON GROUP R2, "Both
P_RNOTC RADIOBUTTON GROUP R2. "Rel w/o ZZCL
*SELECTION-SCREEN END OF BLOCK B5.
SELECTION-SCREEN END OF SCREEN 500.
SELECTION-SCREEN BEGIN OF SCREEN 600 AS SUBSCREEN.
*SELECTION-SCREEN BEGIN OF BLOCK BLOCK4 WITH FRAME TITLE TEXT-004.
PARAMETERS P_VARI LIKE DISVARIANT-VARIANT.
*SELECTION-SCREEN END OF BLOCK BLOCK4.
SELECTION-SCREEN END OF SCREEN 600.
* Subscreen for Email selection
selection-screen begin of screen 700 as subscreen.
*parameters: p_send as checkbox no-display.
*parameters p_send_x radiobutton group radi .
*KENNTANG20060419-START
parameters p_send_e as checkbox.
*KENNTANG20060419-END
*PARAMETERS p_indiv AS CHECKBOX.
selection-screen skip 1.
selection-screen begin of block c1 with frame title text-011.
select-options p_mail01 for adr6-smtp_addr no intervals.
select-options p_dli01 for tzw02-dlinam no intervals no-display.
select-options p_usr01 for usr21-bname no intervals no-display.
parameters p_sub01 type so_obj_des.
parameters p_body11 like solisti1-line.
parameters p_body12 like solisti1-line.
parameters p_body13 like solisti1-line.
parameters p_body14 like solisti1-line.
parameters p_body15 like solisti1-line.
selection-screen end of block c1.
selection-screen begin of block c2 with frame title text-014.
select-options p_mail02 for adr6-smtp_addr no intervals no-display.
select-options p_dli02 for tzw02-dlinam no intervals no-display.
select-options p_usr02 for usr21-bname no intervals no-display.
parameters p_sub02 type so_obj_des no-display.
parameters p_body21 like solisti1-line no-display.
parameters p_body22 like solisti1-line no-display.
parameters p_body23 like solisti1-line no-display.
parameters p_body24 like solisti1-line no-display.
parameters p_body25 like solisti1-line no-display.
selection-screen end of block c2.
parameters p_tose as checkbox.
selection-screen begin of block c3 with frame title text-s40.
parameters: p_svpath like rlgrap-filename.
parameters: p_svfile like rlgrap-filename.
selection-screen end of block c3.
selection-screen end of screen 700.
SELECTION-SCREEN BEGIN OF TABBED BLOCK B2 FOR 22 LINES.
SELECTION-SCREEN TAB (20) TEXT-001 USER-COMMAND SEL_01
DEFAULT SCREEN 100.
SELECTION-SCREEN TAB (20) TEXT-002 USER-COMMAND SEL_02
DEFAULT SCREEN 200.
SELECTION-SCREEN TAB (20) TEXT-003 USER-COMMAND SEL_03
DEFAULT SCREEN 300.
SELECTION-SCREEN TAB (20) TEXT-004 USER-COMMAND SEL_04
DEFAULT SCREEN 400.
SELECTION-SCREEN TAB (20) TEXT-006 USER-COMMAND SEL_05
DEFAULT SCREEN 500.
SELECTION-SCREEN TAB (20) TEXT-007 USER-COMMAND SEL_06
DEFAULT SCREEN 600.
SELECTION-SCREEN TAB (20) TEXT-008 USER-COMMAND SEL_07
DEFAULT SCREEN 700.
SELECTION-SCREEN END OF BLOCK B2.
SELECT-OPTIONS : S_WERTOT FOR MARC-WERKS NO-DISPLAY,
S_LGOTOT FOR MARD-LGORT NO-DISPLAY.
CONSTANTS :
P_STLAN LIKE MAST-STLAN VALUE '1', "Bom Usage
P_STLAL LIKE MAST-STLAL VALUE '01'. "Alternative Bom
*&---------------------------------------------------------------------*
* ALV list varaibles
*&---------------------------------------------------------------------*
TYPE-POOLS: SLIS.
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,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
G_TABNAME_HEADER TYPE SLIS_TABNAME,
G_TABNAME_ITEM TYPE SLIS_TABNAME,
G_VARIANT LIKE DISVARIANT,
G_EXIT(1) TYPE C,
G_SAVE(1) TYPE C.
DATA : VARIANTE LIKE DISVARIANT,
GX_VARIANT LIKE DISVARIANT.
DATA : G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
GC_FORM_BEFORE_LINE_OUTPUT TYPE SLIS_FORMNAME
VALUE 'FORM_BEFORE_LINE_OUPUT'.
DATA : GT_EVENTS TYPE SLIS_T_EVENT.
DATA : P_OPT1, P_OPT2, P_OPT3, P_OPT4, P_OPT5, P_OPT6.
DATA: G_REPID LIKE SY-REPID.
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
INITIALIZATION.
G_REPID = SY-REPID.
* define keyinfo
* CLEAR GS_KEYINFO.
* GS_KEYINFO-HEADER02 = 'FABNO'.
* GS_KEYINFO-ITEM02 = 'FABNO'.
* GS_KEYINFO-HEADER01 = 'VBELN'.
* GS_KEYINFO-ITEM01 = 'VBELN'.
*
PERFORM E01_FIELDCAT_INIT USING GT_FIELDCAT[].
PERFORM E03_EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
* PERFORM E06_T_SORT_BUILD USING GT_SORT[].
G_SAVE = 'A'.
PERFORM VARIANT_INIT.
* Get default variant
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
* IF NOT P_VARI IS INITIAL.
* PERFORM CHECK_VARIANT.
* ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
* PAI
AT SELECTION-SCREEN.
PERFORM VALIDATE_PLANT_SLOC.
PERFORM PAI_OF_SELECTION_SCREEN.
PERFORM CHECK_RELEASE_OPTIONS.
START-OF-SELECTION.
PERFORM GET_SEL_OPT.
* get device materials based on selection
PERFORM GET_DEVICE_MAT.
* get sales order item
PERFORM GET_SO_ITEMS.
* check production order status for SO item
PERFORM CHECK_PROD_ORDER_STATUS.
* get planned order
PERFORM GET_PLANNED_ORDER.
* get item texts for all items
PERFORM GET_TEXTS.
* get batches for material no. 1
PERFORM GET_BATCH.
* get batch qty.
* perform get_batch_qty.
* get customer name
PERFORM GET_CUSTOMER_NAME.
* get device description
PERFORM GET_DEVICE_DESC.
* get char values of device
PERFORM GET_CHAR_VALS.
* generate report
PERFORM GENERATE_REPORT.
END-OF-SELECTION.
perForm send_email.
Perform send_to_server.
PERFORM OUTPUT_LIST.
*&---------------------------------------------------------------------*
*& Form send_email
*&---------------------------------------------------------------------*
Form send_email.
*start add send email screen--------------------------------------*
perform build_fieldcat using 'ZXSALES_TAB'
changing fieldcat.
perform update_fieldcat.
perform comment_build using ''
changing gt_top_of_page.
perform eventtab_build changing gt_events[].
*
perform file_get_name
using
c_log_name
space
space
* p_dir_name
* p_phy_name
changing
l_path.
*
concatenate l_path 'zrpp001' '_' sy-datum sy-uzeit+0(4) '.XLS' into
fname.
perform get_alv_var_fieldcat.
IF p_send_e = 'X'.
perform export_file_to_server using fname.
fname1 = fname.
perform send_mail_via_sap2.
endif.
endform. "send_email
*&---------------------------------------------------------------------*
*& Form send_to_server
*&---------------------------------------------------------------------*
Form send_to_server.
if p_tose = 'X'.
concatenate p_svpath p_svfile '.XLS' into
fname2.
*refresh t_output.
* if sy-batch <> ''.
perform export_file_to_server using fname2.
* else.
* perform download_to_excel using fname2
* changing p_rcode.
* endif.
endif.
endform. "send_to_server
* end of add send_to_server
*&---------------------------------------------------------------------*
*& Form EXPORT_FILE_TO_SERVER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_L_SUBRC text
*----------------------------------------------------------------------*
form export_file_to_server using g_svfile.
data:l_string(3000) type c,
name(30) type c.
data: wa type slis_fieldcat_alv, "ALV Display Field Catalog
wa1 like gt_alv_fc. "Display variant field
field-symbols <fs> type any.
try.
open dataset g_svfile for output in text mode encoding default.
if sy-subrc = 0.
if p_vari is initial.
*get header
loop at fieldcat into wa.
assign component wa-fieldname of structure w_output to <fs>.
<fs> = wa-seltext_l.
* unassign <fs>.
concatenate l_string <fs> into l_string
separated by cl_abap_char_utilities=>horizontal_tab.
endloop.
transfer l_string to g_svfile.
clear l_string.
*get data
loop at xtab.
loop at fieldcat into wa.
assign component wa-fieldname of structure xtab to <fs>.
name = <fs>.
concatenate l_string name into l_string
separated by cl_abap_char_utilities=>horizontal_tab.
endloop.
transfer l_string to g_svfile.
clear l_string.
endloop.
else.
*output use display variant
*get header
loop at gt_alv_fc into wa1.
read table fieldcat with key fieldname = wa1-fld_name into wa.
assign component wa-fieldname of structure w_output to <fs>.
<fs> = wa-seltext_l.
* unassign <fs>.
concatenate l_string <fs> into l_string
separated by cl_abap_char_utilities=>horizontal_tab.
endloop.
transfer l_string to g_svfile.
clear l_string.
*get data
loop at xtab.
loop at gt_alv_fc into wa1.
assign component wa1-fld_name of structure xtab to <fs>.
name = <fs>.
concatenate l_string name into l_string
separated by cl_abap_char_utilities=>horizontal_tab.
endloop.
transfer l_string to g_svfile.
clear l_string.
endloop.
endif. " end of p_vari is initial
close dataset g_svfile.
write:/ 'Export is successful.'.
write:/ 'Temporary file created on server:', g_svfile.
else.
write:/ 'Export is failed.'.
endif.
catch cx_root.
write:/ 'Temporary file writing error on server.'.
endtry.
endform. " EXPORT_FILE_TO_SERVER
*&---------------------------------------------------------------------*
*& 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.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* I_PROGRAM_NAME =
I_INTERNAL_TABNAME = G_TABNAME_HEADER
I_STRUCTURE_NAME = 'ZXSALES_TAB'
* I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = E01_LT_FIELDCAT[].
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
** I_PROGRAM_NAME =
* I_INTERNAL_TABNAME = G_TABNAME_ITEM
* I_STRUCTURE_NAME = 'ZXFAB_TAB'
** I_CLIENT_NEVER_DISPLAY = 'X'
* CHANGING
* CT_FIELDCAT = 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 = 1
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.
*
* Listenüberschrift: Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: not used for this type
LS_LINE-INFO = TEXT-001.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
* Kopfinfo: Typ S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = TEXT-050.
LS_LINE-INFO = TEXT-010.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
LS_LINE-KEY = TEXT-051.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
* Aktionsinfo: Typ A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
* LS_LINE-KEY: not used for this type
LS_LINE-INFO = TEXT-002.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
ENDFORM. " E04_COMMENT_BUILD
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT .
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = G_SAVE
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
* it_default_fieldcat =
IMPORTING
E_EXIT = G_EXIT
ES_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*& Form PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PAI_OF_SELECTION_SCREEN .
IF NOT P_VARI IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM VARIANT_INIT.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*& Form VARIANT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM VARIANT_INIT .
CLEAR G_VARIANT.
G_VARIANT-REPORT = G_REPID.
ENDFORM. " VARIANT_INIT
*&---------------------------------------------------------------------*
*& Form get_device_mat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DEVICE_MAT.
SELECT C~MATNR C~WERKS C~DISPO
INTO CORRESPONDING FIELDS OF TABLE XMARC
FROM MARA AS A
INNER JOIN MARC AS C ON A~MATNR = C~MATNR
WHERE A~MATNR IN S_DEVICE
AND A~MTART IN S_MTART
AND A~MATKL IN S_MATKL
AND A~LVORM EQ SPACE
AND C~WERKS IN S_WERKS
AND C~DISPO IN S_DISPO
AND C~LVORM EQ SPACE
ORDER BY C~MATNR C~WERKS.
IF S_CLASS[] IS NOT INITIAL.
SELECT *
FROM KLAH
INTO TABLE XKLAH
WHERE CLASS IN S_CLASS.
LOOP AT XKLAH.
CALL FUNCTION 'CLAF_OBJECTS_OF_CLASS'
EXPORTING
CLASS = XKLAH-CLASS
* CLASSES = ' '
CLASSTEXT = 'N'
CLASSTYPE = '001'
* FEATURES = 'X'
* LANGUAGE = SY-LANGU
* OBJECT_HIGH = ' '
* OBJECT_LOW = ' '
* UPDATE_MODE = ' '
* KEY_DATE = SY-DATUM
* INITIAL_CHARACT = 'X'
* NO_VALUE_DESCRIPT =
* CHANGE_SERVICE_CLF = 'X'
* INHERITED_CHAR = ' '
* OBJECTTABLE = ' '
* CHANGE_NUMBER = ' '
TABLES
T_CLASS = XTEMP1
* T_OBJECTDATA =
T_OBJECTS = XTEMP2
* I_SEL_CHARACTERISTIC =
* T_NO_AUTH_CHARACT =
EXCEPTIONS
NO_CLASSIFICATION = 1
INVALID_CLASS_TYPE = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
ENDIF.
* loop at xtemp2.
* xobjects = xtemp2.
* append xobjects.
* endloop.
APPEND LINES OF XTEMP2 TO XOBJECTS.
ENDLOOP.
SORT XOBJECTS BY OBJEKT.
* Delete materials that do not belong to class
LOOP AT XMARC.
READ TABLE XOBJECTS WITH KEY OBJEKT = XMARC-MATNR BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE XMARC.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " get_device_mat
*&---------------------------------------------------------------------*
*& Form get_so_items
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_SO_ITEMS.
RANGES: LR_MATNR FOR MARA-MATNR.
DATA: L_TABIX LIKE SY-TABIX,
L_DELETE(1) TYPE C.
LR_MATNR-SIGN = 'I'.
LR_MATNR-OPTION = 'EQ'.
LOOP AT XMARC.
AT END OF MATNR.
LR_MATNR-LOW = XMARC-MATNR.
APPEND LR_MATNR.
ENDAT.
ENDLOOP.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE XVBAP
FROM VBUP AS A
INNER JOIN VBAP AS B ON B~VBELN = A~VBELN
AND B~POSNR = A~POSNR
INNER JOIN VBAK AS C ON C~VBELN = B~VBELN
* FOR ALL ENTRIES IN XMARC
WHERE A~VBELN IN S_VBELN
AND A~POSNR IN S_POSNR
*start 008 DEVK922024
* AND A~GBSTA NE 'C'
AND ( A~GBSTA NE 'C' or B~ABGRU = '99' )
*end 008 DEVK922024
AND B~MATNR IN S_DEVICE
AND B~MATKL IN S_MATKL
AND B~KDMAT IN S_KDMAT
AND B~LPRIO IN S_LPRIO
AND B~WERKS IN S_WERKS
AND C~VKORG IN S_VKORG "1
AND C~VTWEG IN S_VTWEG "2
AND C~SPART IN S_SPART "3
AND C~AUART IN S_AUART "7
AND C~AUDAT IN S_AUDAT "8
AND C~VKBUR IN S_VKBUR "10
AND C~VKGRP IN S_VKGRP "11
AND C~LIFSK IN S_LIFSK
*Start vista "DEVK924134 [S0803001]
and ( c~AUART <> 'RWRK' or
( c~AUART = 'RWRK' and ( b~PSTYV = 'RWRK' or b~PSTYV = 'RWF' ) ) )
*End vista "DEVK924134 [S0803001]
ORDER BY A~VBELN A~POSNR.
* To get order reason from sales order header
SORT XVBAK BY VBELN.
IF NOT XVBAP[] IS INITIAL.
SELECT *
FROM VBAK
INTO TABLE XVBAK
FOR ALL ENTRIES IN XVBAP
WHERE VBELN = XVBAP-VBELN.
ENDIF.
**Add start of DEVK922123
IF NOT XVBAP[] IS INITIAL.
SELECT *
FROM KONV
INTO TABLE XKONV
FOR ALL ENTRIES IN XVBAP
WHERE KNUMV = XVBAP-KNUMV
AND KPOSN = XVBAP-POSNR
AND KSTAT = SPACE
AND ( KSCHL = 'ASSM' OR KSCHL = 'TSTA' ).
SORT XKONV BY KNUMV KPOSN.
ENDIF.
**Add end of DEVK922123
* To get Schedule line category from sales order item
IF NOT XVBAP[] IS INITIAL.
LOOP AT XVBAP.
SELECT SINGLE *
FROM VBEP
WHERE VBELN = XVBAP-VBELN
AND POSNR = XVBAP-POSNR
AND ETENR = '0001'.
* AND ETTYP <> ''.
IF SY-SUBRC = 0.
MOVE VBEP-EDATU TO XVBAP-EDATU. "First Date
IF VBEP-ETTYP = 'CN'.
MOVE VBEP-ETTYP TO XVBAP-ETTYP. "Sc Line Cat
ENDIF.
MODIFY XVBAP.
ENDIF.
CLEAR VBEP.
ENDLOOP.
ENDIF.
* Filter device
SORT XVBAP BY MATNR.
LOOP AT XVBAP.
L_TABIX = SY-TABIX.
ON CHANGE OF XVBAP-MATNR.
READ TABLE XMARC WITH KEY MATNR = XVBAP-MATNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
CLEAR L_DELETE.
ELSE.
L_DELETE = 'X'.
ENDIF.
ENDON.
IF L_DELETE = 'X'.
DELETE XVBAP INDEX L_TABIX.
ENDIF.
ENDLOOP.
* partner filter
* if not s_kunum1-low is initial.
IF NOT XVBAP[] IS INITIAL.
SELECT VBELN POSNR KUNNR
INTO CORRESPONDING FIELDS OF TABLE XVBPA_SP
FROM VBPA
FOR ALL ENTRIES IN XVBAP
WHERE VBELN = XVBAP-VBELN
AND ( POSNR = XVBAP-POSNR OR
POSNR = '000000' )
AND KUNNR IN S_KUNUM1
AND PARVW = 'AG'.
ENDIF.
* endif.
* if not s_kunum2-low is initial.
IF NOT XVBAP[] IS INITIAL.
SELECT VBELN POSNR KUNNR
INTO CORRESPONDING FIELDS OF TABLE XVBPA_SHP
FROM VBPA
FOR ALL ENTRIES IN XVBAP
WHERE VBELN = XVBAP-VBELN
AND ( POSNR = XVBAP-POSNR OR
POSNR = '000000' )
AND KUNNR IN S_KUNUM2
AND PARVW = 'WE'.
ENDIF.
* endif.
* if not s_kunum3-low is initial.
IF NOT XVBAP[] IS INITIAL.
SELECT VBELN POSNR KUNNR
INTO CORRESPONDING FIELDS OF TABLE XVBPA_BP
FROM VBPA
FOR ALL ENTRIES IN XVBAP
WHERE VBELN = XVBAP-VBELN
AND ( POSNR = XVBAP-POSNR OR
POSNR = '000000' )
AND KUNNR IN S_KUNUM3
AND PARVW = 'RE'.
ENDIF.
* endif.
* if not s_kunum4-low is initial.
IF NOT XVBAP[] IS INITIAL.
SELECT VBELN POSNR KUNNR
INTO CORRESPONDING FIELDS OF TABLE XVBPA_PY
FROM VBPA
FOR ALL ENTRIES IN XVBAP
WHERE VBELN = XVBAP-VBELN
AND ( POSNR = XVBAP-POSNR OR
POSNR = '000000' )
AND KUNNR IN S_KUNUM4
AND PARVW = 'RG'.
ENDIF.
* endif.
SORT XVBAP BY VBELN POSNR.
SORT XVBPA_SP BY VBELN POSNR.
SORT XVBPA_SHP BY VBELN POSNR.
SORT XVBPA_BP BY VBELN POSNR.
SORT XVBPA_PY BY VBELN POSNR.
LOOP AT XVBAP.
IF NOT S_KUNUM1[] IS INITIAL.
READ TABLE XVBPA_SP WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC NE 0.
READ TABLE XVBPA_SP WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE XVBAP.
ENDIF.
ENDIF.
ENDIF.
IF NOT S_KUNUM2[] IS INITIAL.
READ TABLE XVBPA_SHP WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC NE 0.
READ TABLE XVBPA_SHP WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE XVBAP.
ENDIF.
ENDIF.
ENDIF.
IF NOT S_KUNUM3[] IS INITIAL.
READ TABLE XVBPA_BP WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC NE 0.
READ TABLE XVBPA_BP WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE XVBAP.
ENDIF.
ENDIF.
ENDIF.
IF NOT S_KUNUM4[] IS INITIAL.
READ TABLE XVBPA_PY WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC NE 0.
READ TABLE XVBPA_PY WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE XVBAP.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " get_so_items
*&---------------------------------------------------------------------*
*& Form check_prod_order_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CHECK_PROD_ORDER_STATUS.
DATA : V_CLOSED,
V_NOTZZCL,
L_TABIX LIKE SY-TABIX,
L_START LIKE SY-TABIX,
L_RSPOS LIKE RESB-RSPOS.
IF NOT XVBAP[] IS INITIAL.
SELECT A~KDAUF A~KDPOS A~AUFNR B~OBJNR C~RSNUM b~AEDAT
INTO CORRESPONDING FIELDS OF TABLE XAUFK
FROM AFPO AS A
INNER JOIN AUFK AS B ON B~AUFNR = A~AUFNR
INNER JOIN AFKO AS C ON C~AUFNR = B~AUFNR
FOR ALL ENTRIES IN XVBAP
WHERE A~KDAUF = XVBAP-VBELN
AND A~KDPOS = XVBAP-POSNR.
SORT XAUFK BY KDAUF KDPOS AUFNR.
ENDIF.
LOOP AT XVBAP.
L_TABIX = SY-TABIX.
CLEAR: V_CLOSED, V_NOTZZCL.
READ TABLE XAUFK WITH KEY KDAUF = XVBAP-VBELN
KDPOS = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC = 0.
L_START = SY-TABIX.
LOOP AT XAUFK FROM L_START WHERE KDAUF = XVBAP-VBELN
AND KDPOS = XVBAP-POSNR.
CLEAR : V_LINE, V_USER_LINE.
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
CLIENT = SY-MANDT
FLG_USER_STAT = 'X'
OBJNR = XAUFK-OBJNR
ONLY_ACTIVE = 'X'
SPRAS = SY-LANGU
BYPASS_BUFFER = 'X'
IMPORTING
* ANW_STAT_EXISTING =
* E_STSMA =
LINE = V_LINE " TECO CLSD etc.
USER_LINE = V_USER_LINE " ZZCL etc.
* STONR =
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
* status set
IF V_LINE CS 'DLFL'.
* v_closed = 'X'.
ELSE.
IF V_LINE CS 'TECO' OR V_LINE CS 'CLSD' OR
( V_LINE CS 'REL' AND V_LINE NS 'RELR' ).
V_CLOSED = 'X'.
IF V_LINE CS 'REL' AND V_USER_LINE NS 'ZZCL'.
V_NOTZZCL = 'X'.
XVBAP-AUFNR = XAUFK-AUFNR.
XVBAP-SYSSTAT = V_LINE.
XVBAP-USRSTAT = V_USER_LINE.
XVBAP-DIEASSIGN = 'X'.
MODIFY XVBAP INDEX L_TABIX.
ENDIF.
ELSE.
XVBAP-AUFNR = XAUFK-AUFNR.
XVBAP-SYSSTAT = V_LINE.
XVBAP-USRSTAT = V_USER_LINE.
* check if all batch# assigned for die/IC components
SELECT SINGLE RSPOS INTO L_RSPOS
FROM RESB
WHERE RSNUM EQ XAUFK-RSNUM
AND XLOEK EQ SPACE
AND MATNR IN ('000000000000000001',
'000000000000000002',
'000000000000000003',
'000000000000001000' )
AND CHARG EQ SPACE.
IF SY-SUBRC NE 0.
XVBAP-DIEASSIGN = 'X'.
ENDIF.
MODIFY XVBAP INDEX L_TABIX.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
IF P_RNOTC IS INITIAL.
IF V_CLOSED = 'X'.
DELETE XVBAP INDEX L_TABIX.
ENDIF.
ELSE.
IF V_NOTZZCL IS INITIAL.
DELETE XVBAP INDEX L_TABIX.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " check_prod_order_status
*&---------------------------------------------------------------------*
*& Form GET_PLANNED_ORDER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_PLANNED_ORDER.
LOOP AT XVBAP WHERE AUFNR EQ SPACE.
SELECT SINGLE PLNUM
INTO XVBAP-PLNUM
FROM PLAF
WHERE MATNR = XVBAP-MATNR
AND PLWRK = XVBAP-WERKS
AND PAART = 'KD' "Customer order
AND KDAUF = XVBAP-VBELN
AND KDPOS = XVBAP-POSNR
AND OBART = '1'. "Planned order
IF SY-SUBRC = 0.
MODIFY XVBAP.
ENDIF.
ENDLOOP.
ENDFORM. " GET_PLANNED_ORDER
*&---------------------------------------------------------------------*
*& Form get_texts
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_TEXTS .
DATA : L_FABLOT LIKE XVBAP-ZZFABLOT1,
L_WAFID LIKE XVBAP-ZZWAFID1,
l_DIEID LIKE VBAP-ZZDIEID1. "DEVK921945
DATA : BEGIN OF XTDLINES OCCURS 0,
FABLOT LIKE AUSP-ATWRT,
WAFID LIKE VBAP-ZZWAFID1,
DIEID LIKE VBAP-ZZDIEID1, "DEVK921945
END OF XTDLINES.
LOOP AT XVBAP.
* clear v_tdname.
* concatenate xvbap-vbeln xvbap-posnr into v_tdname.
CLEAR MARA.
SELECT SINGLE *
FROM MARA WHERE MATNR = XVBAP-MATNR.
CLEAR XTDLINES. REFRESH XTDLINES.
* <<<<<<<<<<<<<<< start comment 19/04/2005 Sastry
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
** CLIENT = SY-MANDT
* ID = v_tdtid
* LANGUAGE = sy-langu
* NAME = v_tdname
* OBJECT = v_tdobject
** ARCHIVE_HANDLE = 0
** LOCAL_CAT = ' '
** IMPORTING
** HEADER =
* TABLES
* LINES = xtdlines
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8
* .
* IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
* <<<<<<<<<comment end 19/04/2005
DO 10 TIMES VARYING L_FABLOT FROM XVBAP-ZZFABLOT1
NEXT XVBAP-ZZFABLOT2
VARYING L_WAFID FROM XVBAP-ZZWAFID1
NEXT XVBAP-ZZWAFID2
*start 00 "DEVK921945
VARYING L_DIEID FROM XVBAP-ZZDIEID1
NEXT XVBAP-ZZDIEID2.
*end 00 "DEVK921945
IF L_FABLOT IS NOT INITIAL.
CLEAR XTDLINES.
XTDLINES-FABLOT = L_FABLOT.
XTDLINES-WAFID = L_WAFID.
XTDLINES-DIEID = L_DIEID. "DEVK921945
APPEND XTDLINES.
ENDIF.
ENDDO.
IF XTDLINES[] IS INITIAL.
CLEAR XTDLINES.
APPEND XTDLINES.
ENDIF.
LOOP AT XTDLINES.
CLEAR XFABLOTS.
XFABLOTS-VBELN = XVBAP-VBELN.
XFABLOTS-POSNR = XVBAP-POSNR.
XFABLOTS-FABLOTNO = XTDLINES-FABLOT.
XFABLOTS-WAFID = XTDLINES-WAFID.
XFABLOTS-DIEID = XTDLINES-DIEID. "DEVK921945
XFABLOTS-MTART = MARA-MTART.
IF NOT S_SFABLT[] IS INITIAL.
CONDENSE XFABLOTS-FABLOTNO.
IF XFABLOTS-FABLOTNO IN S_SFABLT.
APPEND XFABLOTS.
ENDIF.
ELSE.
APPEND XFABLOTS.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. " get_texts
*&---------------------------------------------------------------------*
*& Form get_batch
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_BATCH.
* select *
* from mcha
* into table xmcha
* where ( matnr = '000000000000000001'
* or matnr = '000000000000000002' " insert 19/04/2005
* or matnr = '000000000000000003' "insert 19/04/2005
* or matnr = '000000000000001000' )
* and werks in s_werks.
SELECT A~MATNR A~WERKS A~CHARG A~LWEDT
SUM( B~CLABS ) AS CLABS
SUM( B~CINSM ) AS CINSM
INTO CORRESPONDING FIELDS OF TABLE XMCHA
FROM MCHA AS A
INNER JOIN MCHB AS B ON B~MATNR = A~MATNR
AND B~WERKS = A~WERKS
AND B~CHARG = A~CHARG
WHERE ( A~MATNR = '000000000000000001'
OR A~MATNR = '000000000000000002'
OR A~MATNR = '000000000000000003'
OR A~MATNR = '000000000000001000' )
* AND B~WERKS IN S_WERTOT
* AND B~LGORT IN S_LGOTOT
AND A~LVORM EQ SPACE
AND B~LVORM EQ SPACE
AND ( B~CLABS > 0 OR B~CINSM > 0 )
GROUP BY A~MATNR A~WERKS A~CHARG A~LWEDT.
SELECT A~MATNR A~WERKS B~LGORT A~CHARG A~LWEDT
B~CLABS
B~CINSM
INTO CORRESPONDING FIELDS OF TABLE XMCHA_PS
FROM MCHA AS A
INNER JOIN MCHB AS B ON B~MATNR = A~MATNR
AND B~WERKS = A~WERKS
AND B~CHARG = A~CHARG
WHERE ( A~MATNR = '000000000000000001'
OR A~MATNR = '000000000000000002'
OR A~MATNR = '000000000000000003'
OR A~MATNR = '000000000000001000' )
* AND B~WERKS IN S_WERTOT
* AND B~LGORT IN S_LGOTOT
AND A~LVORM EQ SPACE
AND B~LVORM EQ SPACE
AND ( B~CLABS > 0 OR B~CINSM > 0 ).
* GROUP BY A~MATNR A~WERKS A~CHARG A~LWEDT.
LOOP AT XMCHA.
* clear mara.
* select single *
* from mara where matnr = xmcha-matnr.
CLEAR V_OBJECT.
CONCATENATE XMCHA-MATNR XMCHA-WERKS XMCHA-CHARG INTO V_OBJECT.
CLEAR XCLASS.
REFRESH XCLASS.
CLEAR XOBJECTDATA.
REFRESH XOBJECTDATA.
* get classification values
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
* CLASS = ' '
* CLASSTEXT = 'X'
CLASSTYPE = '022'
* CLINT = 0
* FEATURES = 'X'
* LANGUAGE = SY-LANGU
OBJECT = V_OBJECT
* OBJECTTABLE = ' '
* KEY_DATE = SY-DATUM
INITIAL_CHARACT = ''
* NO_VALUE_DESCRIPT =
* CHANGE_SERVICE_CLF = 'X'
* INHERITED_CHAR = ' '
* CHANGE_NUMBER = ' '
TABLES
T_CLASS = XCLASS
T_OBJECTDATA = XOBJECTDATA
* I_SEL_CHARACTERISTIC =
* T_NO_AUTH_CHARACT =
EXCEPTIONS
NO_CLASSIFICATION = 1
NO_CLASSTYPES = 2
INVALID_CLASS_TYPE = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
ENDIF.
SORT XOBJECTDATA BY ATNAM.
IF XMCHA-MATNR = '000000000000001000'.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'ICB_CUSTOMER'
BINARY SEARCH.
ELSE.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_CUSTOMER'
BINARY SEARCH.
ENDIF.
IF SY-SUBRC EQ 0.
XMCHA-DB_CUST = XOBJECTDATA-AUSP1.
ENDIF.
IF NOT P_ATWRT1[] IS INITIAL.
IF NOT XMCHA-DB_CUST IN P_ATWRT1.
DELETE XMCHA.
CONTINUE.
ENDIF.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_FL' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-FABLOTNO = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'ICB_LOT_NO' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-ICB_LOT_NO = XOBJECTDATA-AUSP1.
ENDIF.
* IF NOT P_ATWRT2[] IS INITIAL.
* IF NOT ( XMCHA-FABLOTNO IN P_ATWRT2 OR
* XMCHA-ICB_LOT_NO IN P_ATWRT2 ).
IF NOT S_SFABLT[] IS INITIAL.
IF NOT ( XMCHA-FABLOTNO IN S_SFABLT OR
XMCHA-ICB_LOT_NO IN S_SFABLT ).
DELETE XMCHA.
CONTINUE.
ENDIF.
ENDIF.
IF XMCHA-FABLOTNO IS INITIAL AND XMCHA-ICB_LOT_NO IS INITIAL.
DELETE XMCHA.
CONTINUE.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_WQTY' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_WQTY = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_DQTY' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_DQTY = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_WID' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_WID = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_WSIZE' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_WSIZE = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_WTHICK' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_WTHICK = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_BGTHK' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_BGTHK = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_RDQ' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_RDQ = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'DB_RWQ' BINARY SEARCH.
IF SY-SUBRC EQ 0.
XMCHA-DB_RWQ = XOBJECTDATA-AUSP1.
ENDIF.
* if xmcha-DB_CUST in p_atwrt1 and xmcha-fablotno in p_atwrt2.
MODIFY XMCHA.
* endif.
ENDLOOP.
ENDFORM. " get_batch
*&---------------------------------------------------------------------*
*& Form GET_DEVICE_DESC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DEVICE_DESC.
IF XVBAP[] IS NOT INITIAL.
SELECT MATNR SPRAS MAKTX
INTO CORRESPONDING FIELDS OF TABLE GT_MAKT
FROM MAKT
FOR ALL ENTRIES IN XVBAP
WHERE MATNR = XVBAP-MATNR.
SORT GT_MAKT BY MATNR SPRAS.
ENDIF.
* To get BOM status
IF NOT XVBAP[] IS INITIAL.
SELECT *
INTO TABLE XMAST
FROM MAST
FOR ALL ENTRIES IN XVBAP
WHERE MATNR = XVBAP-MATNR
AND WERKS = XVBAP-WERKS
AND STLAN = P_STLAN
AND STLAL = P_STLAL.
ENDIF.
IF NOT XMAST[] IS INITIAL.
SELECT *
INTO TABLE XSTKO
FROM STKO
FOR ALL ENTRIES IN XMAST
WHERE STLNR = XMAST-STLNR
AND DATUV <= SY-DATUM
AND LOEKZ = SPACE.
ENDIF.
SORT XSTKO BY STLNR DATUV DESCENDING.
ENDFORM. " GET_DEVICE_DESC
*&---------------------------------------------------------------------*
*& Form get_char_vals
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_CHAR_VALS.
DATA: LT_STB LIKE STPOX OCCURS 0 WITH HEADER LINE.
SORT XVBAP BY MATNR WERKS.
LOOP AT XVBAP.
ON CHANGE OF XVBAP-MATNR.
CLEAR V_OBJECT.
V_OBJECT = XVBAP-MATNR.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
* CLASS = ' '
* CLASSTEXT = 'X'
CLASSTYPE = '001'
* CLINT = 0
* FEATURES = 'X'
* LANGUAGE = SY-LANGU
OBJECT = V_OBJECT
* OBJECTTABLE = ' '
* KEY_DATE = SY-DATUM
* INITIAL_CHARACT = 'X'
* NO_VALUE_DESCRIPT =
* CHANGE_SERVICE_CLF = 'X'
* INHERITED_CHAR = ' '
* CHANGE_NUMBER = ' '
TABLES
T_CLASS = XCLASS
T_OBJECTDATA = XOBJECTDATA
* I_SEL_CHARACTERISTIC =
* T_NO_AUTH_CHARACT =
EXCEPTIONS
NO_CLASSIFICATION = 1
NO_CLASSTYPES = 2
INVALID_CLASS_TYPE = 3
OTHERS = 4.
IF SY-SUBRC = 0.
CLEAR: GT_CHAR.
GT_CHAR-MATNR = XVBAP-MATNR.
SORT XOBJECTDATA BY ATNAM.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'LEAD' BINARY SEARCH.
IF SY-SUBRC EQ 0.
GT_CHAR-ZLEAD = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'FOOTPRINT'
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GT_CHAR-FOOTPR = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'PACKAGE_DIMENSION'
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GT_CHAR-ZDIM = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'PACKAGE_THICKNESS'
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GT_CHAR-PACKTH = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'NUMBER_OF_WIRES'
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GT_CHAR-NUMWIRE = XOBJECTDATA-AUSP1.
ENDIF.
READ TABLE XOBJECTDATA WITH KEY ATNAM = 'CUSTOMER'
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GT_CHAR-KUNNR = XOBJECTDATA-AUSP1.
ENDIF.
CALL FUNCTION 'Z_GET_PACKAGE_NAME'
EXPORTING
MATERIAL_NO = XVBAP-MATNR
IMPORTING
PACKAGE_NAME = GT_CHAR-ZPACK.
APPEND GT_CHAR.
ENDIF.
ENDON.
ON CHANGE OF XVBAP-MATNR OR XVBAP-WERKS.
* Get BOM information
CLEAR LT_STB. REFRESH LT_STB.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = SPACE
DATUV = SY-DATUM
* MKTLS = 'X'
MTNRV = XVBAP-MATNR
STLAL = '01'
STLAN = '1'
WERKS = XVBAP-WERKS
TABLES
STB = LT_STB
EXCEPTIONS
OTHERS = 9.
IF SY-SUBRC = 0.
READ TABLE LT_STB WITH KEY MATKL = 'WAFER'.
IF SY-SUBRC NE 0.
XDEVICE-MATNR = XVBAP-MATNR.
XDEVICE-WERKS = XVBAP-WERKS.
APPEND XDEVICE.
ENDIF.
ENDIF.
ENDON.
ENDLOOP.
ENDFORM. " get_char_vals
*&---------------------------------------------------------------------*
*& Form generate_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GENERATE_REPORT.
*data : v_tot_clabs like mchb-clabs.
DATA: L_FIRST(1) TYPE C,
L_TABIX LIKE SY-TABIX.
DATA: LT_MCHA_IC LIKE XMCHA OCCURS 0 WITH HEADER LINE.
DATA: L_MCHA LIKE XMCHA.
LT_MCHA_IC[] = XMCHA[].
DELETE LT_MCHA_IC WHERE MATNR NE '000000000000001000'.
SORT LT_MCHA_IC BY ICB_LOT_NO.
DELETE XMCHA WHERE MATNR EQ '000000000000001000'.
SORT XMCHA BY FABLOTNO.
SORT XMCHA_PS BY WERKS LGORT CHARG.
SORT XFABLOTS BY VBELN POSNR.
SORT XVBAP BY VBELN POSNR.
SORT XDEVICE BY MATNR WERKS.
SORT XVBAK BY VBELN.
IF NOT XVBAK[] IS INITIAL.
XVBAK_AU[] = XVBAK[].
LOOP AT XVBAK_AU WHERE AUGRU = SPACE.
DELETE XVBAK_AU.
ENDLOOP.
SORT XVBAK BY AUGRU.
SELECT *
FROM TVAUT
INTO TABLE XTVAUT
FOR ALL ENTRIES IN XVBAK_AU
WHERE AUGRU = XVBAK_AU-AUGRU.
LOOP AT XVBAK_AU.
LOOP AT XTVAUT WHERE AUGRU = XVBAK_AU-AUGRU.
EXIT.
ENDLOOP.
XVBAK_AU-BEZEI = XTVAUT-BEZEI.
MODIFY XVBAK_AU.
ENDLOOP.
ENDIF.
LOOP AT XFABLOTS.
CLEAR L_FIRST.
L_TABIX = SY-TABIX.
AT NEW POSNR.
L_FIRST = 'X'.
ENDAT.
* get die/IC batch
CLEAR: L_MCHA.
IF XFABLOTS-MTART = 'FER3'.
READ TABLE LT_MCHA_IC WITH KEY ICB_LOT_NO = XFABLOTS-FABLOTNO
BINARY SEARCH.
IF SY-SUBRC EQ 0.
L_MCHA = LT_MCHA_IC.
L_MCHA-FABLOTNO = LT_MCHA_IC-ICB_LOT_NO.
ENDIF.
ELSE.
READ TABLE XMCHA WITH KEY FABLOTNO = XFABLOTS-FABLOTNO
BINARY SEARCH.
IF SY-SUBRC EQ 0.
L_MCHA = XMCHA.
ENDIF.
ENDIF.
* get sales order info
READ TABLE XVBAP WITH KEY VBELN = XFABLOTS-VBELN
POSNR = XFABLOTS-POSNR BINARY SEARCH.
IF SY-SUBRC = 0.
* filter die received / die not received
IF P_DR EQ 'X'. " die received
IF L_MCHA IS INITIAL.
* If device has no wafer in BOM, shown in die received
READ TABLE XDEVICE WITH KEY MATNR = XVBAP-MATNR
WERKS = XVBAP-WERKS BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE XFABLOTS INDEX L_TABIX.
CONTINUE.
ENDIF.
ENDIF.
ELSEIF P_DNOTR EQ 'X'. " die not received.
IF L_MCHA IS NOT INITIAL.
DELETE XFABLOTS INDEX L_TABIX.
CONTINUE.
ELSE.
* If device has no wafer in BOM, not shown in die not received
READ TABLE XDEVICE WITH KEY MATNR = XVBAP-MATNR
WERKS = XVBAP-WERKS BINARY SEARCH.
IF SY-SUBRC = 0.
DELETE XFABLOTS INDEX L_TABIX.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
* get BOM status
CLEAR XMAST.
READ TABLE XMAST WITH KEY MATNR = XVBAP-MATNR
WERKS = XVBAP-WERKS.
IF SY-SUBRC EQ 0.
CLEAR XSTKO.
READ TABLE XSTKO WITH KEY STLNR = XMAST-STLNR.
ENDIF.
* get sales order order reason
CLEAR XVBAK.
READ TABLE XVBAK WITH KEY VBELN = XVBAP-VBELN.
CLEAR XTAB.
MOVE-CORRESPONDING XVBAP TO XTAB.
*start 008 "DEVK922024
CLEAR XTAB-LIFSK.
IF XVBAP-LIFSK IS NOT INITIAL.
SELECT SINGLE * FROM TVLST
WHERE LIFSP = XVBAP-LIFSK
AND SPRAS = 'EN'.
IF SY-SUBRC = 0.
XTAB-LIFSK = TVLST-VTEXT.
ENDIF.
ELSEIF XVBAP-ABGRU IS NOT INITIAL.
SELECT SINGLE * FROM TVAGT
WHERE ABGRU = XVBAP-ABGRU
AND SPRAS = 'EN'.
IF SY-SUBRC = 0.
XTAB-LIFSK = TVAGT-BEZEI.
ENDIF.
ENDIF.
*end 008 "DEVK922024
** Add start of DEVK922123
* ASSM Unit price
READ TABLE XKONV WITH KEY KNUMV = XVBAP-KNUMV
KPOSN = XVBAP-POSNR
KSCHL = 'ASSM'
BINARY SEARCH.
IF SY-SUBRC = 0.
IF XKONV-KPEIN <> 0.
XTAB-ASSM = XKONV-KBETR / XKONV-KPEIN.
ELSE.
XTAB-ASSM = 0.
ENDIF.
ENDIF.
*TSTA Unit price
READ TABLE XKONV WITH KEY KNUMV = XVBAP-KNUMV
KPOSN = XVBAP-POSNR
KSCHL = 'TSTA'
BINARY SEARCH.
IF SY-SUBRC = 0.
IF XKONV-KPEIN <> 0.
XTAB-TSTA = XKONV-KBETR / XKONV-KPEIN.
ELSE.
XTAB-TSTA = 0.
ENDIF.
ENDIF.
*ASSM and TSTA total value
LOOP AT XKONV WHERE KNUMV = XVBAP-KNUMV
AND KPOSN = XVBAP-POSNR
AND ( KSCHL = 'ASSM' OR KSCHL = 'TSTA' ).
XTAB-TTLVAL = XTAB-TTLVAL + XKONV-KWERT.
ENDLOOP.
** Add end of DEVK922123
XTAB-FABNO = XFABLOTS-FABLOTNO.
XTAB-WAFID = XFABLOTS-WAFID.
XTAB-DIEID = XFABLOTS-DIEID. "DEVK921945
CLEAR XVBAK_AU.
READ TABLE XVBAK_AU WITH KEY VBELN = XVBAK-VBELN.
XTAB-BEZEI = XVBAK_AU-BEZEI.
XTAB-STLST = XSTKO-STLST.
* material (device)
READ TABLE GT_MAKT WITH KEY MATNR = XVBAP-MATNR
SPRAS = SY-LANGU BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-MAKTX = GT_MAKT-MAKTX.
ELSE.
READ TABLE GT_MAKT WITH KEY MATNR = XVBAP-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-MAKTX = GT_MAKT-MAKTX.
ENDIF.
ENDIF.
* to get material controller <<<<< insert 08/07/2005
READ TABLE XMARC WITH KEY MATNR = XVBAP-MATNR
WERKS = XVBAP-WERKS BINARY SEARCH.
IF SY-SUBRC EQ 0.
XTAB-DISPO = XMARC-DISPO.
ENDIF. "<<<<< insert 08/07/05
* get char values of material
READ TABLE GT_CHAR WITH KEY MATNR = XVBAP-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING GT_CHAR TO XTAB.
ENDIF.
* ship to , sold to , bill to, payer
CLEAR : XVBPA_SP, XVBPA_BP, XVBPA_SHP, XVBPA_PY.
* sold to
READ TABLE XVBPA_SP WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM1 = XVBPA_SP-KUNNR.
ELSE.
READ TABLE XVBPA_SP WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM1 = XVBPA_SP-KUNNR.
ENDIF.
ENDIF.
* shp to
READ TABLE XVBPA_SHP WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM2 = XVBPA_SHP-KUNNR.
ELSE.
READ TABLE XVBPA_SHP WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM2 = XVBPA_SHP-KUNNR.
ENDIF.
ENDIF.
* bp
READ TABLE XVBPA_BP WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM3 = XVBPA_BP-KUNNR.
ELSE.
READ TABLE XVBPA_BP WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM3 = XVBPA_BP-KUNNR.
ENDIF.
ENDIF.
* payer
READ TABLE XVBPA_PY WITH KEY VBELN = XVBAP-VBELN
POSNR = XVBAP-POSNR BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM4 = XVBPA_PY-KUNNR.
ELSE.
READ TABLE XVBPA_PY WITH KEY VBELN = XVBAP-VBELN
POSNR = '000000' BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KUNUM4 = XVBPA_PY-KUNNR.
ENDIF.
ENDIF.
* get customer name
READ TABLE GT_KNA1 WITH KEY KUNNR = XTAB-KUNUM1 BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KNAME1 = GT_KNA1-NAME1.
ENDIF.
READ TABLE GT_KNA1 WITH KEY KUNNR = XTAB-KUNUM2 BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KNAME2 = GT_KNA1-NAME1.
ENDIF.
READ TABLE GT_KNA1 WITH KEY KUNNR = XTAB-KUNUM3 BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KNAME3 = GT_KNA1-NAME1.
ENDIF.
READ TABLE GT_KNA1 WITH KEY KUNNR = XTAB-KUNUM4 BINARY SEARCH.
IF SY-SUBRC = 0.
XTAB-KNAME4 = GT_KNA1-NAME1.
ENDIF.
* fablot no
XTAB-FABLOTNO = L_MCHA-FABLOTNO.
XTAB-CHARG = L_MCHA-CHARG.
XTAB-LWEDT = L_MCHA-LWEDT.
XTAB-DB_CUST = L_MCHA-DB_CUST.
XTAB-DB_WQTY = L_MCHA-DB_WQTY.
XTAB-DB_DQTY = L_MCHA-DB_DQTY.
XTAB-DB_WID = L_MCHA-DB_WID.
XTAB-DB_WSIZE = L_MCHA-DB_WSIZE.
XTAB-DB_WTHICK = L_MCHA-DB_WTHICK.
XTAB-DB_BGTHK = L_MCHA-DB_BGTHK.
XTAB-DB_RWQ = L_MCHA-DB_RWQ.
XTAB-DB_RDQ = L_MCHA-DB_RDQ.
* XTAB-AUFNR = XVBAP-AUFNR.
* XTAB-STATUS = XVBAP-STATUS.
IF L_FIRST IS INITIAL.
CLEAR XTAB-KWMENG.
ENDIF.
* to get batch stock for plant sloc. selections
* if not S_WERKS1-low is initial.
IF P_OPT1 = 'X'.
LOOP AT XMCHA_PS WHERE WERKS IN S_WERKS1
AND LGORT IN S_LGORT1
AND CHARG = L_MCHA-CHARG.
XTAB-ZZDQPL1 = XTAB-ZZDQPL1 + XMCHA_PS-CLABS.
ENDLOOP.
ENDIF.
* if not S_WERKS2-low is initial.
IF P_OPT2 = 'X'.
LOOP AT XMCHA_PS WHERE WERKS IN S_WERKS2
AND LGORT IN S_LGORT2
AND CHARG = L_MCHA-CHARG.
XTAB-ZZDQPL2 = XTAB-ZZDQPL2 + XMCHA_PS-CLABS.
ENDLOOP.
ENDIF.
* if not S_WERKS3-low is initial.
IF P_OPT3 = 'X'.
LOOP AT XMCHA_PS WHERE WERKS IN S_WERKS3
AND LGORT IN S_LGORT3
AND CHARG = L_MCHA-CHARG.
XTAB-ZZDQPL3 = XTAB-ZZDQPL3 + XMCHA_PS-CLABS.
ENDLOOP.
ENDIF.
* if not S_WERKS4-low is initial.
IF P_OPT4 = 'X'.
LOOP AT XMCHA_PS WHERE WERKS IN S_WERKS4
AND LGORT IN S_LGORT4
AND CHARG = L_MCHA-CHARG.
XTAB-ZZDQPL4 = XTAB-ZZDQPL4 + XMCHA_PS-CLABS.
ENDLOOP.
ENDIF.
* if not S_WERKS5-low is initial.
IF P_OPT5 = 'X'.
LOOP AT XMCHA_PS WHERE WERKS IN S_WERKS5
AND LGORT IN S_LGORT5
AND CHARG = L_MCHA-CHARG.
XTAB-ZZDQPL5 = XTAB-ZZDQPL5 + XMCHA_PS-CLABS.
ENDLOOP.
ENDIF.
* if not S_WERKS6-low is initial.
IF P_OPT6 = 'X'.
LOOP AT XMCHA_PS WHERE WERKS IN S_WERKS6
AND LGORT IN S_LGORT6
AND CHARG = L_MCHA-CHARG.
XTAB-ZZDQPL6 = XTAB-ZZDQPL6 + XMCHA_PS-CLABS.
ENDLOOP.
ENDIF.
* endif.
APPEND XTAB.
ENDIF.
ENDLOOP.
ENDFORM. " generate_report
*&---------------------------------------------------------------------*
*& Form output_list
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM OUTPUT_LIST .
DATA : PROGNAME LIKE SY-REPID,
TITLE TYPE LVC_TITLE.
* sort xtab by werks vbeln posnr.
MOVE SY-REPID TO PROGNAME.
TITLE = SY-TITLE.
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
* display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_GRID_TITLE = TITLE
IT_FIELDCAT = GT_FIELDCAT[] "REPLACED fieldcat
IS_LAYOUT = GS_LAYOUT
I_SAVE = G_SAVE "'A'
IS_VARIANT = G_VARIANT "variant
IT_SORT = GT_SORT
* I_CALLBACK_PROGRAM = repid
* I_CALLBACK_USER_COMMAND = 'OUTPUTALV_DETAILS'
TABLES
T_OUTTAB = XTAB "REPLACED itab
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
* EXPORTING
* I_CALLBACK_PROGRAM = PROGNAME
* I_CALLBACK_PF_STATUS_SET = 'STANDARD'
*
* IS_LAYOUT = gs_LAYOUT
* IT_FIELDCAT = GT_FIELDCAT[]
* IT_EVENTS = GT_EVENTS[]
* I_DEFAULT = 'X'
* I_SAVE = 'A'
* IS_VARIANT = VARIANTE
* TABLES
* T_OUTTAB = Xtab
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2.
ENDFORM. " output_list
*&---------------------------------------------------------------------*
*& Form check_release_options
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_RELEASE_OPTIONS .
* if p_r1 eq space and p_r2 eq space.
* message e889 with
* 'Please enter either Production ord.'
* 'Not Released or Partially released'.
* endif.
ENDFORM. " check_release_options
*&---------------------------------------------------------------------*
*& Form GET_CUSTOMER_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_CUSTOMER_NAME .
DATA: BEGIN OF LT_KUNNR OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
END OF LT_KUNNR.
LOOP AT XVBPA_SP.
LT_KUNNR-KUNNR = XVBPA_SP-KUNNR.
COLLECT LT_KUNNR INTO LT_KUNNR.
ENDLOOP.
LOOP AT XVBPA_SHP.
LT_KUNNR-KUNNR = XVBPA_SHP-KUNNR.
COLLECT LT_KUNNR INTO LT_KUNNR.
ENDLOOP.
LOOP AT XVBPA_BP.
LT_KUNNR-KUNNR = XVBPA_BP-KUNNR.
COLLECT LT_KUNNR INTO LT_KUNNR.
ENDLOOP.
LOOP AT XVBPA_PY.
LT_KUNNR-KUNNR = XVBPA_PY-KUNNR.
COLLECT LT_KUNNR INTO LT_KUNNR.
ENDLOOP.
IF LT_KUNNR[] IS NOT INITIAL.
SELECT KUNNR NAME1
INTO CORRESPONDING FIELDS OF TABLE GT_KNA1
FROM KNA1
FOR ALL ENTRIES IN LT_KUNNR
WHERE KUNNR = LT_KUNNR-KUNNR.
SORT GT_KNA1 BY KUNNR.
ENDIF.
ENDFORM. " GET_CUSTOMER_NAME
*&---------------------------------------------------------------------*
*& Form GET_SEL_OPT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SEL_OPT .
CLEAR : P_OPT1, P_OPT2, P_OPT3, P_OPT4, P_OPT5, P_OPT6.
LOOP AT S_WERKS1 WHERE NOT LOW IS INITIAL.
LOOP AT S_LGORT1 WHERE NOT LOW IS INITIAL.
P_OPT1 = 'X'.
ENDLOOP.
ENDLOOP.
LOOP AT S_WERKS2 WHERE NOT LOW IS INITIAL.
LOOP AT S_LGORT2 WHERE NOT LOW IS INITIAL.
P_OPT2 = 'X'.
ENDLOOP.
ENDLOOP.
LOOP AT S_WERKS3 WHERE NOT LOW IS INITIAL.
LOOP AT S_LGORT3 WHERE NOT LOW IS INITIAL.
P_OPT3 = 'X'.
ENDLOOP.
ENDLOOP.
LOOP AT S_WERKS4 WHERE NOT LOW IS INITIAL.
LOOP AT S_LGORT4 WHERE NOT LOW IS INITIAL.
P_OPT4 = 'X'.
ENDLOOP.
ENDLOOP.
LOOP AT S_WERKS5 WHERE NOT LOW IS INITIAL.
LOOP AT S_LGORT5 WHERE NOT LOW IS INITIAL.
P_OPT5 = 'X'.
ENDLOOP.
ENDLOOP.
LOOP AT S_WERKS6 WHERE NOT LOW IS INITIAL.
LOOP AT S_LGORT6 WHERE NOT LOW IS INITIAL.
P_OPT6 = 'X'.
ENDLOOP.
ENDLOOP.
ENDFORM. " GET_SEL_OPT
*&---------------------------------------------------------------------*
*& Form VALIDATE_PLANT_SLOC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM VALIDATE_PLANT_SLOC .
IF NOT S_LGORT1-LOW IS INITIAL.
IF S_WERKS1-LOW IS INITIAL.
MESSAGE E889 WITH 'Please enter plant and storage location'.
ENDIF.
ENDIF.
IF NOT S_LGORT2-LOW IS INITIAL.
IF S_WERKS2-LOW IS INITIAL.
MESSAGE E889 WITH 'Please enter plant and storage location'.
ENDIF.
ENDIF.
IF NOT S_LGORT3-LOW IS INITIAL.
IF S_WERKS3-LOW IS INITIAL.
MESSAGE E889 WITH 'Please enter plant and storage location'.
ENDIF.
ENDIF.
IF NOT S_LGORT4-LOW IS INITIAL.
IF S_WERKS4-LOW IS INITIAL.
MESSAGE E889 WITH 'Please enter plant and storage location'.
ENDIF.
ENDIF.
IF NOT S_LGORT5-LOW IS INITIAL.
IF S_WERKS5-LOW IS INITIAL.
MESSAGE E889 WITH 'Please enter plant and storage location'.
ENDIF.
ENDIF.
IF NOT S_LGORT6-LOW IS INITIAL.
IF S_WERKS6-LOW IS INITIAL.
MESSAGE E889 WITH 'Please enter plant and storage location'.
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_PLANT_SLOC
*&---------------------------------------------------------------------*
*& Form build_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form build_fieldcat using structure_name type c
changing fieldcategory.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
* I_PROGRAM_NAME =
* I_INTERNAL_TABNAME =
i_structure_name = structure_name
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
changing
ct_fieldcat = fieldcategory
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.
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. " build_fieldcat
*&---------------------------------------------------------------------*
*& Form update_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form update_fieldcat.
data: wa type slis_fieldcat_alv,
idx type i.
field-symbols: <fs> type slis_fieldcat_alv.
read table fieldcat with key fieldname = 'VKORG' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Sales Org'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'VTWEG' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Distr.Channel'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'SPART' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Division'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'LIFSK' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Delivery block'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'VBELN' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Sales Document'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'POSNR' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Item'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'LPRIO' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Dlv.Prior.'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'AUART' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Sales Doc.Type'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'AUDAT' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Doc. date'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'VKBUR' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Sales office'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'VKGRP' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Sales group'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'BEZEI' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Order reason'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DISPO' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'MRP Ctrl'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'MATNR' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'material'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'MAKTX' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Device name'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KDMAT' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Material customer'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'WERKS' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Plant'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'STLST' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'BOM status'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KUNUM1' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Sold-to pty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KNAME1' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Customer Name'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KUNUM2' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Ship-to Pty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KNAME2' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Customer Name'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KUNUM3' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Bill-to Pty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KNAME3' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Customer Name'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KUNUM4' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Payer'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KNAME4' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Customer Name'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'CHARG' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Batch Number'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'FABNO' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Fab Lot no.'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KUNNR' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Customer Number 1'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'WAFID' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer id'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'BSTNK' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'purchase order no.'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KWMENG' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'purchase order date'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'KWMENG' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Order qty.'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZPACK' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Package'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZLEAD' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Lead'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'FOOTPR' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Foot Print'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZDIM' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Dimension'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'PACKTH' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Package thickness'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'NUMWIRE' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Number of wires'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_CUST' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Customer (Batch)'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'FABLOTNO' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Fab lot#'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_WQTY' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer qty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_DQTY' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Label Die Qty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_WID' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer id'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_WSIZE' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer Size'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_WTHICK' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer Thickness'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_BGTHK' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Backgrind thickness'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_RWQ' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer release qty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DB_RDQ' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Release die qty'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'PLNUM' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Plnd order'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'AUFNR' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Order Number'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'SYSSTAT' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'System status'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'USRSTAT' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'User status'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'DIEASSIGN' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die/IC Assigned'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZRES5' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Wafer Map'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'LWEDT' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Goods receipt Date'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZDQPL1' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die Qty Plant Sloc 1'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZDQPL2' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die Qty Plant Sloc 2'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZDQPL3' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die Qty Plant Sloc 3'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZDQPL4' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die Qty Plant Sloc 4'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZDQPL5' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die Qty Plant Sloc 5'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ZZDQPL6' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Die Qty Plant Sloc 6'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'ETTYP' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Shedule line category'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'EDATU' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Schedule line date'.
modify fieldcat from wa index idx.
endif.
**Add start of DEVK922123
read table fieldcat with key fieldname = 'ASSM' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'ASSM(Unit Price)'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'TSTA' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'TSTA(Unit Price)'.
modify fieldcat from wa index idx.
endif.
read table fieldcat with key fieldname = 'TTLVAL' into wa.
if sy-subrc = 0.
idx = sy-tabix.
wa-seltext_s = wa-seltext_m = wa-seltext_l = 'Net Value(assm&tsta)'.
modify fieldcat from wa index idx.
endif.
**Add end of DEVK922123
**clear the primary key attribute
* and set field names which have no description to use its field name
* as description
loop at fieldcat assigning <fs>.
if not <fs>-key is initial.
clear <fs>-key.
endif.
if <fs>-seltext_l is initial.
<fs>-seltext_s = <fs>-seltext_m = <fs>-seltext_l = <fs>-fieldname.
endif.
* clear the description from DDIC
clear: <fs>-reptext_ddic , <fs>-ref_tabname.
endloop.
endform. " update_fieldcat
*&--------------------------------------------------------------------*
*& Form comment_build
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_TITLE text
* -->LT_TOP_OF_Ptext
*---------------------------------------------------------------------*
form comment_build using p_title
changing lt_top_of_page type slis_t_listheader.
data: ls_line type slis_listheader.
data: ls_rm61r type rm61r,
ls_tmp1(15) type c, ls_tmp2(15) type c.
*
* Initialisieren
clear lt_top_of_page[].
* Zeitstempel ermitteln
* PERFORM get_timestamp CHANGING ls_rm61r-memda
* ls_rm61r-memtm.
* Listenüberschrift: Typ H
clear ls_line.
ls_line-typ = 'H'.
* LS_LINE-KEY: not used for this type
if p_title is initial.
ls_line-info = sy-title.
else.
ls_line-info = p_title.
endif.
append ls_line to lt_top_of_page.
* Kopfinfo: Typ S
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-h01.
ls_line-info = sy-repid.
append ls_line to lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-h02.
ls_line-info = sy-uname.
append ls_line to lt_top_of_page.
clear ls_line.
write sy-datum to ls_tmp1.
write sy-uzeit to ls_tmp2.
ls_line-typ = 'S'.
ls_line-key = text-h03.
* ls_line-info = sy-datum.
* ls_line-info+10 = sy-uzeit.
concatenate ls_tmp1 ls_tmp2 into ls_line-info separated by space.
append ls_line to lt_top_of_page.
* Aktionsinfo: Typ A
clear ls_line.
ls_line-typ = 'A'.
* LS_LINE-KEY: not used for this type
ls_line-info = text-h04.
write ls_rm61r-memda to ls_line-info+20(10).
ls_line-info+32(3) = text-h05.
ls_line-info+35(5) = ls_rm61r-memtm.
ls_line-info+41(4) = text-h06.
* APPEND ls_line TO lt_top_of_page.
endform. "COMMENT_BUILD
*&--------------------------------------------------------------------*
*& Form eventtab_build
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_ST_EVENTStext
*---------------------------------------------------------------------*
form eventtab_build changing p_st_events type slis_t_event.
*
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_st_events.
endform. " EVENTTAB_BUILD
*&--------------------------------------------------------------------*
*& Form file_get_name
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_LOG_NAME text
* -->P_DIR_NAME text
* -->P_PHY_NAME text
* -->P_PATH_FILEtextE
*---------------------------------------------------------------------*
form file_get_name using p_log_name p_dir_name p_phy_name
changing p_path_file_name.
clear p_path_file_name.
call function 'FILE_GET_NAME'
exporting
* CLIENT = SY-MANDT
logical_filename = p_log_name
operating_system = 'WN'
parameter_1 = p_dir_name
parameter_2 = p_phy_name
* PARAMETER_3 = ' '
* USE_PRESENTATION_SERVER = ' '
* WITH_FILE_EXTENSION = ' '
* USE_BUFFER = ' '
* ELEMINATE_BLANKS = 'X'
importing
* EMERGENCY_FLAG =
* FILE_FORMAT =
file_name = p_path_file_name
exceptions
file_not_found = 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. " file_get_name
*&---------------------------------------------------------------------*
*& Form get_alv_var_fieldcat
*&---------------------------------------------------------------------*
* get a list of columns which are selected in ALV variant
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_alv_var_fieldcat .
data: l_ltdxkey type ltdxkey,
l_ltdxdata type table of ltdxdata with header line,
lt_discard type table of ltdxdata with header line.
if p_vari is initial.
return.
endif.
select single report variant from ltdx into
(l_ltdxkey-report,l_ltdxkey-variant)
where relid = 'LT' and report = g_repid and variant = p_vari.
l_ltdxkey-type = 'F'.
call function 'LT_DBDATA_READ_FROM_LTDX'
exporting
i_tool = 'LT'
is_varkey = l_ltdxkey
tables
t_dbfieldcat = l_ltdxdata
* T_DBSORTINFO =
* T_DBFILTER =
* T_DBLAYOUT =
exceptions
not_found = 1
wrong_relid = 2
others = 3
.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
loop at l_ltdxdata where param = 'NO_OUT' and
value = 'X'.
append l_ltdxdata to lt_discard.
endloop.
loop at lt_discard.
delete l_ltdxdata where key1 = lt_discard-key1.
endloop.
loop at l_ltdxdata where param = 'COL_POS'.
clear gt_alv_fc.
gt_alv_fc-fld_name = l_ltdxdata-key1.
gt_alv_fc-col_pos = l_ltdxdata-value.
append gt_alv_fc.
endloop.
sort gt_alv_fc by col_pos.
* DELETE ADJACENT DUPLICATES FROM GT_ALV_FC COMPARING FLD_NAME.
endform. " get_alv_var_fieldcat
*&--------------------------------------------------------------------*
*& Form DOWNLOAD_FILE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_FNAME text
* -->P_TABLE text
* -->P_RCODE text
*---------------------------------------------------------------------*
form download_file using p_fname
p_table type any table
changing p_rcode.
data: begin of lt_string occurs 0,
line(2000).
data: end of lt_string.
data: l_fname type string.
field-symbols: <l_struct>.
open dataset p_fname for output
in text mode encoding default.
if sy-subrc <> 0.
message e001(00) with 'Error File open error!'.
p_rcode = '1'.
else.
p_rcode = '0'.
endif.
loop at p_table assigning <l_struct>.
* APPEND <l_struct> TO lt_string.
transfer <l_struct> to p_fname.
endloop.
* LOOP AT lt_string.
* TRANSFER lt_string-line TO p_fname.
* ENDLOOP.
close dataset p_fname.
endform. "DOWNLOAD_FILE
*&---------------------------------------------------------------------*
*& Form set_fld_name
*&---------------------------------------------------------------------*
* FOR field name ending with
* 1) *PP change it to *P%
*----------------------------------------------------------------------*
* -->P_L_TAB_NAME text
* <--P_O_NAME text
*----------------------------------------------------------------------*
form set_fld_name using p_i_name type c
changing p_o_name type c.
data: len type i,
len1 type i,
t_len type i,
tmp_len type i.
t_len = strlen( p_i_name ).
len = t_len - 2.
len1 = t_len - 1.
*change field ending with PP to P%
if p_i_name+len(2) = 'PP'.
p_o_name = p_i_name.
tmp_len = t_len - 1.
write '%' to p_o_name+tmp_len.
*change field ending with 1 to ' '
elseif p_i_name+len1(1) = '1' and p_i_name+0(1) <> 'B'.
p_o_name = p_i_name.
tmp_len = t_len - 1.
write ' ' to p_o_name+len1.
elseif p_i_name = 'VKORG'.
p_o_name = 'Sales Org.'.
elseif p_i_name = 'VTWEG'.
p_o_name = 'Distri. Channel'.
elseif p_i_name = 'SPART'.
p_o_name = 'Division'.
elseif p_i_name = 'LIFSK'.
p_o_name = 'Delivery block'.
elseif p_i_name = 'VBELN'.
p_o_name = 'Sales Document Number'.
elseif p_i_name = 'POSNR'.
p_o_name = 'Item'.
elseif p_i_name = 'TXNDATE'.
p_o_name = 'PROC DATE'.
elseif p_i_name = 'LPRIO'.
p_o_name = 'Delivery Priority'.
elseif p_i_name = 'AUART'.
p_o_name = 'Sales Document Type'.
elseif p_i_name = 'AUDAT'.
p_o_name = 'Document date'.
elseif p_i_name = 'VKBUR'.
p_o_name = 'Sales office'.
elseif p_i_name = 'VKGRP'.
p_o_name = 'Sales group'.
elseif p_i_name = 'BEZEI'.
p_o_name = 'Order reason'.
elseif p_i_name = 'DISPO'.
p_o_name = 'MRP Controller'.
elseif p_i_name = 'MATNR'.
p_o_name = 'Material'.
elseif p_i_name = 'MAKTX'.
p_o_name = 'Device'.
elseif p_i_name = 'KDMAT'.
p_o_name = 'Material belonging to the customer'.
elseif p_i_name = 'WERKS'.
p_o_name = 'Plant'.
elseif p_i_name = 'STLST'.
p_o_name = 'BOM status'.
elseif p_i_name = 'KUNUM1'.
p_o_name = 'Sold-to pty'.
elseif p_i_name = 'KNAME1'.
p_o_name = 'Customer Name'.
elseif p_i_name = 'KUNUM2'.
p_o_name = 'Ship-to Pty'.
elseif p_i_name = 'KNAME2'.
p_o_name = 'Customer Name'.
elseif p_i_name = 'KUNUM3'.
p_o_name = 'Bill-to Pty'.
elseif p_i_name = 'KNAME3'.
p_o_name = 'Customer Name'.
elseif p_i_name = 'KUNUM4'.
p_o_name = 'Payer'.
elseif p_i_name = 'KNAME4'.
p_o_name = 'Customer Name'.
elseif p_i_name = 'CHARG'.
p_o_name = 'Batch No.'.
elseif p_i_name = 'FABNO'.
p_o_name = 'Fab Lot no.'.
elseif p_i_name = 'KUNNR'.
p_o_name = 'Customer Number 1'.
elseif p_i_name = 'WAFID'.
p_o_name = 'Wafer id'.
elseif p_i_name = 'BSTNK'.
p_o_name = 'Customer purchase order no.'.
elseif p_i_name = 'BSTDK'.
p_o_name = 'Customer purchase order date'.
elseif p_i_name = 'KWMENG'.
p_o_name = 'Order qty.'.
elseif p_i_name = 'ZPACK'.
p_o_name = 'Package'.
elseif p_i_name = 'ZLEAD'.
p_o_name = 'Lead'.
elseif p_i_name = 'FOOTPR'.
p_o_name = 'Foot Print'.
elseif p_i_name = 'ZDIM'.
p_o_name = 'Dimension'.
elseif p_i_name = 'PACKTH'.
p_o_name = 'Package thickness'.
elseif p_i_name = 'NUMWIRE'.
p_o_name = 'Number of wires'.
elseif p_i_name = 'DB_CUST'.
p_o_name = 'Customer(Batch)'.
elseif p_i_name = 'FABLOTNO'.
p_o_name = 'Fab lot# (Batch)'.
elseif p_i_name = 'DB_WQTY'.
p_o_name = 'Wafer qty'.
elseif p_i_name = 'DB_DQTY'.
p_o_name = 'Label Die Qty'.
elseif p_i_name = 'DB_WID'.
p_o_name = 'Wafer id'.
elseif p_i_name = 'DB_WSIZE'.
p_o_name = 'Wafer Size'.
elseif p_i_name = 'DB_WTHICK'.
p_o_name = 'Wafer Thickness'.
elseif p_i_name = 'DB_BGTHK'.
p_o_name = 'Backgrind thickness'.
elseif p_i_name = 'DB_RWQ'.
p_o_name = 'Wafer release qty'.
elseif p_i_name = 'DB_RDQ'.
p_o_name = 'Release die qty'.
elseif p_i_name = 'PLNUM'.
p_o_name = 'Planned order'.
elseif p_i_name = 'AUFNR'.
p_o_name = 'PO number'.
elseif p_i_name = 'SYSSTAT'.
p_o_name = 'System status'.
elseif p_i_name = 'USRSTAT'.
p_o_name = 'User status'.
elseif p_i_name = 'DIEASSIGN'.
p_o_name = 'Die/IC Assigned'.
elseif p_i_name = 'ZZRES5'.
p_o_name = 'Wafer Map'.
elseif p_i_name = 'LWEDT'.
p_o_name = 'Date of last goods receipt'.
elseif p_i_name = 'ZZDQPL1'.
p_o_name = 'Die Qty Plant Sloc 1'.
elseif p_i_name = 'ZZDQPL2'.
p_o_name = 'Die Qty Plant Sloc 2'.
elseif p_i_name = 'ZZDQPL3'.
p_o_name = 'Die Qty Plant Sloc 3'.
elseif p_i_name = 'ZZDQPL4'.
p_o_name = 'Die Qty Plant Sloc 4'.
elseif p_i_name = 'ZZDQPL5'.
p_o_name = 'Die Qty Plant Sloc 5'.
elseif p_i_name = 'ZZDQPL6'.
p_o_name = 'Die Qty Plant Sloc 6'.
elseif p_i_name = 'ETTYP'.
p_o_name = 'Schedule line category'.
elseif p_i_name = 'EDATU'.
p_o_name = 'Schedule line date'.
**Add start of DEVK922123
elseif p_i_name = 'ASSM'.
p_o_name = 'ASSM(Unit Price)'.
elseif p_i_name = 'TSTA'.
p_o_name = 'TSTA(Unit Price)'.
elseif p_i_name = 'TTLVAL'.
p_o_name = 'Net Value(assm&tsta)'.
**Add end of DEVK922123
else.
p_o_name = p_i_name.
endif.
endform. " set_fld_name
*************************************************
form download_to_excel using p_fname
changing p_rcode.
DATA: wa TYPE slis_fieldcat_alv. "ALV Display Field Catalog
FIELD-SYMBOLS <FS> TYPE ANY.
FIELD-SYMBOLS <FS1> TYPE ANY.
clear w_output.
refresh t_output.
loop at fieldcat into wa.
ASSIGN COMPONENT wa-fieldname OF STRUCTURE w_output TO <FS>.
<fs> = wa-seltext_l.
unassign <fs>.
endloop.
append w_output to t_output.
clear w_output.
loop at XTAB.
loop at fieldcat into wa.
ASSIGN COMPONENT wa-fieldname OF STRUCTURE w_output TO <FS>.
ASSIGN COMPONENT wa-fieldname OF STRUCTURE XTAB TO <FS1>.
<fs> = <FS1>.
unassign <fs>.
unassign <fs1>.
endloop.
append w_output to t_output.
clear: XTAB,w_output.
endloop.
* CALL FUNCTION 'WS_DOWNLOAD'
* EXPORTING
* FILENAME = p_fname
* FILETYPE = 'DAT'
* TABLES
* DATA_TAB = t_output.
endform. "DOWNLOAD_FILE
*&--------------------------------------------------------------------*
*& Form format_file
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_PO_YIELD text
* -->P_TABNAME text
* -->P_FILE_OUT text
*---------------------------------------------------------------------*
form format_file using p_po_yield type any table
p_tabname type c
changing p_file_out type any table.
field-symbols: <ft> type any table,
<fs> type any,
<ff> type any.
data qtytostr(16) type c.
data wa type slis_fieldcat_alv.
data: descr_struc_ref type ref to cl_abap_structdescr.
data: begin of l_tab occurs 100, "hold structure of p_po_yield
name(20) type c,
end of l_tab,
i_name(30) type c, "input field name
o_name(30) type c. "output field name
data: begin of l_out occurs 1000,
l_line(4000) type c,
end of l_out,
len type i.
data:con(60) type c.
** no display variant is choosen
if gt_alv_fc is initial.
loop at fieldcat into wa.
perform set_fld_name using wa-fieldname
changing o_name.
len = strlen( l_out-l_line ).
concatenate '"' o_name '"' ',' into l_out-l_line+len.
* concatenate o_name ',' into l_out-l_line+len.
at last.
"remove extra comma
len = strlen( l_out-l_line ) - 1.
write space to l_out-l_line+len.
endat.
endloop.
append l_out.
*convert content of ITAB to comma delimited format
loop at p_po_yield assigning <ft>.
clear l_out.
loop at fieldcat into wa.
* ASSIGN COMPONENT l_tab-name OF STRUCTURE <ft> TO <ff>.
assign component wa-fieldname of structure <ft> to <ff>.
con = <ff>.
len = strlen( l_out-l_line ).
concatenate '"' con '"' ',' into l_out-l_line+len.
* concatenate con ',' into l_out-l_line+len.
at last.
"remove extra comma
len = strlen( l_out-l_line ) - 1.
write space to l_out-l_line+len.
endat.
endloop.
append l_out.
endloop.
else.
** output fields according to display variant
loop at gt_alv_fc.
perform set_fld_name using gt_alv_fc-fld_name
changing o_name.
len = strlen( l_out-l_line ).
concatenate '"' o_name '"' ',' into l_out-l_line+len.
* concatenate o_name ',' into l_out-l_line+len.
at last.
"remove extra comma
len = strlen( l_out-l_line ) - 1.
write space to l_out-l_line+len.
endat.
endloop.
append l_out.
*convert content of ITAB to comma delimited format
loop at p_po_yield assigning <ft>.
clear l_out.
loop at gt_alv_fc.
* ASSIGN COMPONENT l_tab-name OF STRUCTURE <ft> TO <ff>.
assign component gt_alv_fc-fld_name of structure <ft> to <ff>.
len = strlen( l_out-l_line ).
clear qtytostr.
qtytostr = <ff>.
concatenate '"' qtytostr '"' ',' into l_out-l_line+len.
* concatenate '"' <ff> '"' ',' into l_out-l_line+len.
* concatenate qtytostr ',' into l_out-l_line+len.
unassign <ff>.
at last.
"remove extra comma
len = strlen( l_out-l_line ) - 1.
write space to l_out-l_line+len.
endat.
endloop.
append l_out.
endloop.
endif.
p_file_out[] = l_out[].
endform. " format_file
*&--------------------------------------------------------------------*
*& Form transform_file_to_attachment
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_SUBRC text
*---------------------------------------------------------------------*
form transform_file_to_attachment changing p_subrc.
clear p_subrc.
call function 'ZBC_PREPARE_MAIL_ATT_DATA'
EXPORTING
subject = gs_subject
IMPORTING
document_data = gs_docdata
TABLES
i_contents = gt_contents
i_file_path = gt_files
i_spool_path = gt_spool
o_packing_list = gt_objpack
o_contents_bin = gt_objbin
o_contents_txt = gt_objtxt
o_msgreturn = gt_msgreturn
EXCEPTIONS
file_open_error = 1
spool_attach_error = 2
file_write_error = 3
others = 4.
if sy-subrc <> 0.
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
p_subrc = sy-subrc.
endform. " transform_file_to_attachmen
*&--------------------------------------------------------------------*
*& Form send_mail_attachment_sap
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_SUBRC text
*---------------------------------------------------------------------*
form send_mail_attachment_sap changing p_subrc.
clear p_subrc.
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = gs_docdata
put_in_outbox = 'X'
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
tables
packing_list = gt_objpack
* OBJECT_HEADER =
contents_bin = gt_objbin
contents_txt = gt_objtxt
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
receivers = gt_reclist
exceptions
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
others = 8
.
if sy-subrc <> 0.
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
p_subrc = sy-subrc.
endform. " send_mail_attachment_sap
*&--------------------------------------------------------------------*
*& Form send_mail_via_sap
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
*form send_mail_via_sap.
*
* data: lt_return like bapiret2 occurs 0 with header line.
* data: lt_addsmtp like bapiadsmtp occurs 0 with header line.
*
* gs_subject = p_sub01.
*
* clear gt_contents.
* gt_contents-line = p_body11.
* append gt_contents.
*
* clear gt_contents.
* gt_contents-line = p_body12.
* append gt_contents.
*
* clear gt_contents.
* gt_contents-line = p_body13.
* append gt_contents.
*
* clear gt_contents.
* gt_contents-line = p_body14.
* append gt_contents.
*
* clear gt_contents.
* gt_contents-line = p_body15.
* append gt_contents.
*
** Attachment
** gt_files-pathname = g_file_excel-target_file.
* gt_files-pathname = fname.
*
** gt_files-doc_type = 'XLS'.
* gt_files-doc_type = 'CSV'.
*
* gt_files-transf_txt = space.
* append gt_files.
* clear gt_files.
*
* perform transform_file_to_attachment changing g_subrc.
* if g_subrc <> 0.
**MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* else.
* call function 'BAPI_USER_GET_DETAIL'
* exporting
* username = sy-uname
** IMPORTING
** LOGONDATA =
** DEFAULTS =
** ADDRESS =
** COMPANY =
** SNC =
** REF_USER =
** ALIAS =
* tables
** PARAMETER =
** PROFILES =
** ACTIVITYGROUPS =
* return = lt_return
** ADDTEL =
** ADDFAX =
** ADDTTX =
** ADDTLX =
* addsmtp = lt_addsmtp
** ADDRML =
** ADDX400 =
** ADDRFC =
** ADDPRT =
** ADDSSF =
** ADDURI =
** ADDPAG =
** ADDCOMREM =
** PARAMETER1 =
** GROUPS =
* .
*
* loop at lt_addsmtp where e_mail ne space.
* exit.
* endloop.
* if sy-subrc eq 0.
* p_mail01-sign = 'I'.
* p_mail01-option = 'EQ'.
* p_mail01-low = lt_addsmtp-e_mail.
* insert p_mail01 index 1.
* endif.
*
* sort p_mail01.
* delete adjacent duplicates from p_mail01.
*
* loop at p_mail01.
* gt_reclist-receiver = p_mail01-low.
* gt_reclist-rec_type = 'U'.
*
* append gt_reclist.
* clear gt_reclist.
* endloop.
* if sy-subrc ne 0.
* gt_reclist-receiver = sy-uname.
* gt_reclist-rec_type = 'B'.
*
* append gt_reclist.
* clear gt_reclist.
* endif.
*
* perform send_mail_attachment_sap changing g_subrc.
* endif.
*
*endform. " send_mail_via_sap
*&---------------------------------------------------------------------*
*& Form SEND_MAIL_VIA_SAP2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form send_mail_via_sap2 .
data: lt_return like bapiret2 occurs 0 with header line.
data: lt_addsmtp like bapiadsmtp occurs 0 with header line.
gs_subject = p_sub01.
clear gt_contents.
gt_contents-line = p_body11.
append gt_contents.
clear gt_contents.
gt_contents-line = p_body12.
append gt_contents.
clear gt_contents.
gt_contents-line = p_body13.
append gt_contents.
clear gt_contents.
gt_contents-line = p_body14.
append gt_contents.
clear gt_contents.
gt_contents-line = p_body15.
append gt_contents.
* Attachment
* gt_files-pathname = g_file_excel-target_file.
gt_files-pathname = fname1.
gt_files-doc_type = 'XLS'.
gt_files-transf_txt = space.
append gt_files.
clear gt_files.
perform transform_file_to_attachment changing g_subrc.
if g_subrc <> 0.
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
else.
call function 'BAPI_USER_GET_DETAIL'
exporting
username = sy-uname
* IMPORTING
* LOGONDATA =
* DEFAULTS =
* ADDRESS =
* COMPANY =
* SNC =
* REF_USER =
* ALIAS =
tables
* PARAMETER =
* PROFILES =
* ACTIVITYGROUPS =
return = lt_return
* ADDTEL =
* ADDFAX =
* ADDTTX =
* ADDTLX =
addsmtp = lt_addsmtp
* ADDRML =
* ADDX400 =
* ADDRFC =
* ADDPRT =
* ADDSSF =
* ADDURI =
* ADDPAG =
* ADDCOMREM =
* PARAMETER1 =
* GROUPS =
.
loop at lt_addsmtp where e_mail ne space.
exit.
endloop.
if sy-subrc eq 0.
p_mail01-sign = 'I'.
p_mail01-option = 'EQ'.
p_mail01-low = lt_addsmtp-e_mail.
insert p_mail01 index 1.
endif.
sort p_mail01.
delete adjacent duplicates from p_mail01.
loop at p_mail01.
gt_reclist-receiver = p_mail01-low.
gt_reclist-rec_type = 'U'.
append gt_reclist.
clear gt_reclist.
endloop.
if sy-subrc ne 0.
gt_reclist-receiver = sy-uname.
gt_reclist-rec_type = 'B'.
append gt_reclist.
clear gt_reclist.
endif.
perform send_mail_attachment_sap changing g_subrc.
endif.
endform. " SEND_MAIL_VIA_SAP2
- ZRPP0001 (多个选项卡,DownLoad, Email,Variant)
- 多个选项卡
- 多个选项卡
- 选项卡及多个选项卡应用
- 使用gradle打包多个变体(variant)
- JavaScript选项卡[多个] 支持firefox
- Android 多个Activity选项卡实现
- 多个选项卡的嵌套原理
- ALV Grid Display ,Top-Of-Page, Variant, DownLoad...
- variant
- variant
- VARIANT
- Variant
- Variant
- VARIANT
- VARIANT
- Variant
- 选项卡选中状态的实现及其多个选项时按钮的状态切换((每个选项其实都是按钮))
- 研发过程管理导图
- 在PHP中cookie和session的使用总结
- Windows LIve Mail 运行报错的问题
- 六个月,改变孩子的一生(实拍多图)
- TO_DATE格式
- ZRPP0001 (多个选项卡,DownLoad, Email,Variant)
- IE 窗口 可视宽度和高度
- 性能调优概述
- SQL操作全集
- SQL SERVER 2005 常见问题
- Oracle
- IT项目开发的75条管理守则
- C51数据类型表
- 构建可扩展的Java EE应用(一)