Shipment Detail Wip report - ZRSD0099
*-----------------------------------------------------------------------
*
* Author: Wei_Zhu
*
* Date: 05/12/2006
*
* Description: A shipment wip report to includes combine lot detail.
*
*-----------------------------------------------------------------------
* Last Modified Data: 2007-02-07
* 2007-03-13
* Description: 1)Get Rject Qty Form MES
* 2)Add new column with "mes_rej_qty" for itab.
* 3)Add new column with "sublot_qty" fro itab
* Task#1098 Request#DEVK922169
* #DEVK922186
* #DEVK922228
* #DEVK922256
* #DEVK922266
* #DEVK922285
* #DEVK922289
* #DEVK922308
* #DEVK922330
* #DEVK922332
*-----------------------------------------------------------------------
REPORT ZRSD0099 .
type-pools: slis, kkblo.
* Begin #DEVK922169
*----------------------------------------------------------------------*
* Declarations *
*----------------------------------------------------------------------*
constants: c_no_plant type i value 3.
constants: c_werks_hk like t001w-werks value '3000'.
constants: c_werks_dg like t001w-werks value '3100'.
constants: c_werks_dg2 like t001w-werks value '3200'.
include zi03_mes.
* End #DEVK922169
*----------------------------------------------------------------------*
* Tables *
*----------------------------------------------------------------------*
tables: likp, vbfa, lips, vbap, kna1, rmclf, vbrp, t005t, adr6,
tzw02, usr21, sscrfields,
vbpa,
vbrk,
konv,
afko,
resb. "DEVK918089
*----------------------------------------------------------------------*
* Global Data Declaration *
*----------------------------------------------------------------------*
***Internal table for gethering Data
data: begin of itab occurs 0,
kunag like likp-kunag, "Customer
name1 like kna1-name1, "Customer Name
wadat_ist like likp-wadat_ist, "Ship Out Date
kunnr like likp-kunnr, "Ship to
ort01 like kna1-ort01, "City0.
land1 like kna1-land1, "country
landx like t005t-landx, "contry description
landx50 like t005t-landx50, "contry description
dwerk like afpo-dwerk, "Production Order Plant
pwerk like afpo-dwerk, "Production Order Plant
twerk like afpo-dwerk, "Production Order Plant
vbeln like likp-vbeln, "Delivery No
posnr like lips-posnr, "del item "003
matnr like lips-matnr, "Material No
kdmat like lips-kdmat, "Lot No
kcmeng like lips-kcmeng, "Lot Qty in DN
arktx like lips-arktx, "Device Name
vgbel like lips-vgbel, "SO number
vgpos like lips-vgpos, "SO item number
pdim like ausp-atwrt, "Package Dimension
lead like ausp-atwrt, "Lead Count
class like rmclf-class, "Class Type
mtart like lips-mtart, "Material Type
bvbeln like vbrp-vbeln, "Billing #
fkimg like vbrp-fkimg, "SO Qty
wemng like afpo-wemng, "Pro Order GR Qty
count type c, "Combine Lot
objnr like aufk-objnr, "Production objeck key
ptial type c, "Partial DN
line1 like tline-tdline,
line2 like tline-tdline,
line3 like tline-tdline,
line4 like tline-tdline,
line5 like tline-tdline, "Customer PR number "DEVK921621
* add trace code on 2 Nov 2005, larry
zztrc_cd like vbap-zztrc_cd, "Trace code
**start 003
werks like lips-werks,
charg like lips-charg,
assout type p decimals 2,
testout type p decimals 2,
fullreel type p decimals 2,
partial type p decimals 2,
rejqty type p decimals 2,
**end 003
**start 004
zzatoat like vbap-zzatoat,
zzattoa like vbap-zzattoa,
process(3), "A, A&T, T
**end 004
aufnr like afpo-aufnr, "prod. order #
ttl_wgt like likp-btgew, "ttl weight
ttl_cnt type i, "ttl carton
proforma type vbeln_co, "proforma invoice#
netwr like vbrp-netwr, "Unit Price Value "DEVK918089
ciwr like vbrp-netwr, "CI Net Value "DEVK921838
fab_lot(20), "DEVK918277
bstkd like vbkd-bstkd,
** start 011
sort2 like adrc-sort2,
** end 011
*start 012
idtbel like lips-vgbel, "SO number of IDT
idtpos like lips-vgpos, "SO item number of IDT
*end 012
*start 014 "DEVK921503
fablot1 like vbap-zzfablot1, "First Fablot number in SO
*end 014 "DEVK921503
*start of "DEVK921665
wire_no(4) type n, "Number of wires
wire_count(15) type n, "Wire count
*end of "DEVK921665
* Begin #DEVK922169
comb_lot_no like gt_sql_query_046-FIELD_005, "Combine_From_Lot
comb_lot_qty like gt_sql_query_046-FIELD_006, "Combine_Lot_Qty
test_in_qty like gt_sql_query_016-FIELD_009, "test in qty
test_start_date like gt_sql_query_016-field_007, "test start date
mes_rej_qty type p decimals 2, "mes reject qty
* Begin #DEVK922330
sublot_qty type p decimals 2, "sublot qty
* End #DEVK922330
* End #DEVK922169
end of itab.
***Internal table for Download Data
data: begin of dtab occurs 0,
kunag like likp-kunag, "Customer
name1 like kna1-name1, "Customer Name
wadat_ist like likp-wadat_ist, "Ship Out Date
kunnr like likp-kunnr, "Ship to party
landx50 like t005t-landx50, "contry description
count(1), "Combine Lot
vbeln like likp-vbeln, "Delivery No
posnr like lips-posnr, "del item "003
matnr like lips-matnr, "Device Code
arktx like lips-arktx, "Device Name
*start 012
idtbel like lips-vgbel, "SO number of IDT
idtpos like lips-vgpos, "SO item number of IDT
*end 012
kdmat like lips-kdmat, "Assembly Lot No
* LDMAT LIKE LIPS-KDMAT, "LT No
kcmeng(16) type c , "Lot Qty in DN
bvbeln like vbrp-vbeln, "Billing #
fkimg(16) type c , "SO Qty
class like rmclf-class, "Package Type
lead like ausp-atwrt, "Lead Count
pdim like ausp-atwrt, "Package Dimension
pwerk like afpo-dwerk, "Production Order Plant
twerk like afpo-dwerk, "Production Order Plant
ptial type c, "Partial DN
line1 like tline-tdline,
line2 like tline-tdline,
line3 like tline-tdline,
line4 like tline-tdline,
line5 like tline-tdline, "Customer PR number "DEVK921621
* add trace code on 2 Nov 2005, larry
zztrc_cd like vbap-zztrc_cd, "Trace code
**003
assout type p decimals 2,
testout type p decimals 2,
fullreel(20),
partial(20),
rejqty type p decimals 2,
**003
**007
zzatoat like vbap-zzatoat,
zzattoa like vbap-zzattoa,
**007
process(3),
aufnr like afpo-aufnr, "prod. order #
ttl_wgt like likp-btgew,
ttl_cnt type i,
proforma type vbeln_co,
netwr like vbrp-netwr, "Net value "DEVK918089
ciwr like vbrp-netwr, "CI Net Value "DEVK921838
fab_lot(20), "DEVK918277
bstkd like vbkd-bstkd,
** start 011
sort2 like adrc-sort2,
** end 011
*start 014 "DEVK921503
fablot1 like vbap-zzfablot1, "First Fablot number in SO
*end 014 "DEVK921503
*start 015 ""DEVK921524
charg like lips-charg, "Batch
lfimg like lips-lfimg, "Delivery Qty/Batch Qty
sublot(20), "Sub Lot
*end 015 ""DEVK921524
*start of "DEVK921665
wire_no(4) type n, "Number of wires
wire_count(13) type n, "Wire count
*end of "DEVK921665
* Begin #DEVK922169
comb_lot_no like gt_sql_query_046-FIELD_005, "Combine_From_Lot
comb_lot_qty like gt_sql_query_046-FIELD_006, "Combine_Lot_Qty
test_in_qty like gt_sql_query_016-FIELD_009, "test in qty
test_start_date like gt_sql_query_016-field_007, "test start date
mes_rej_qty type p decimals 2, "mes reject qty
* Begin #DEVK922330
sublot_qty type p decimals 2, "sublot qty
* End #DEVK922330
* End #DEVK922169
end of dtab.
*start 015 ""DEVK921524
data wa_dtab like dtab occurs 0 with header line.
data L_dtab like dtab occurs 0 with header line.
data L_dtab_1 like dtab occurs 0 with header line.
data: begin of t_po occurs 0,
aufnr like dtab-aufnr,
end of t_po.
*end 015 ""DEVK921524
data: fieldcat type slis_t_fieldcat_alv, "ALV Field Catalog
* FC_STR TYPE SLIS_FIELDCAT_ALV,
layout type slis_layout_alv,
title type lvc_title,
repid like sy-repid,
event type slis_t_event,
variant like disvariant, "Layout Variant
* SORT TYPE SLIS_T_SORTINFO_ALV,
* SORT_STR TYPE SLIS_SORTINFO_ALV,
top_of_page type slis_t_listheader. "ALV Top-of-page
***start 001
data: begin of t_sold occurs 0,
vbeln like vbak-vbeln,
kunnr like vbak-kunnr,
name1 like kna1-name1,
end of t_sold.
data: begin of t_vbpa occurs 0,
vbeln like vbpa-vbeln,
posnr like vbpa-posnr,
kunnr like vbpa-kunnr,
name1 like kna1-name1,
end of t_vbpa.
***end 001
data: g_repid like sy-repid.
data:
g_exit(1) type c,
g_save(1) type c value 'A',
g_variant like disvariant,
l_date1 like sy-datum, "DEVK919540, DEVK919559
l_date2 like sy-datum.
**ALV Display variant
data: g_disp_var like disvariant,
gx_disp_var like disvariant.
* Internal table to store saved display variant
data gt_fcat_sav type kkblo_fieldcat occurs 0 with header line.
data gt_sort_sav type kkblo_sortinfo occurs 0 with header line.
data gt_filter_sav type kkblo_filter occurs 0 with header line.
data gs_layout_sav type kkblo_layout.
data gs_layout_lvc type lvc_s_layo.
****For sending email, 30 Nov 2005, larry
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_fname type char600, "file name with complete path
g_path type char600,
g_subrc like sy-subrc,
g_sfile type char600, "SOURCE file name
g_tfile type char600. "TARGET file name
*start 012
data: begin of l_lines occurs 0,
tdformat like tline-tdformat,
tdline like tline-tdline,
end of l_lines.
*end 012
* #DEVK922257 Begin
data: begin of i_tab3 occurs 0,
aufnr like dtab-aufnr,
lot_no like gt_sql_query_046A-FIELD_001,
lot_qty like gt_sql_query_046A-FIELD_002,
comb_lot_no like gt_sql_query_046-FIELD_005, "Combine_From_Lot
comb_lot_qty like gt_sql_query_046-FIELD_006, "Combine_Lot_Qty
end of i_tab3.
* #DEVK922257 End
data c_disp(1) type c value 'X'.
data pa_dest type char0128 value
'//tstapp/SAPFile/SHIPMENT_REPORT/SHIPMENT.XLS'.
*----------------------------------------------------------------------*
* Constants *
*----------------------------------------------------------------------*
constants: c_matcltype like klah-klart value '001'. "Material Class
constants c_log_name like filename-fileintern
value 'Z_DEFAULT_APP_FILE'.
*----------------------------------------------------------------------*
* Selection Screen *
*----------------------------------------------------------------------*
**subscreen 101
selection-screen begin of screen 101 as subscreen.
selection-screen begin of block a with frame title text-s10.
select-options: s_kunag for likp-kunag, "Customer
s_name1 for kna1-name1, "Customer Name.
s_kunnr for vbpa-kunnr, "Ship to party
s_wadat for likp-wadat_ist , "Ship Date
s_vbeln for likp-vbeln, "DN Number
s_werks for lips-werks,
* s_BVBELN FOR VBRP-VBELN, "Billing #
s_matnr for lips-matnr, "Material no
s_arktx for lips-arktx, "Device Name
s_kdmat for lips-kdmat, "Assembly Lot No
s_mtart for lips-mtart no-display , "Material type
s_class for rmclf-class.
* #DEVK922257 Begin by wei_zhu
*parameters: ch_t as checkbox default 'X'.
*parameters: ch_at as checkbox default 'X'.
*parameters: ch_a as checkbox default 'X'.
*parameters: ch_fab as checkbox. "DEVK918277
*start 015 ""DEVK921524
*parameters: ch_slot as checkbox. "Dispaly sublot
*end 015 ""DEVK921524
* #DEVK922257 end by wei_zhu
selection-screen end of block a.
**SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-S20.
***parameters p_send as checkbox.
***selection-screen skip.
**PARAMETER: C_DISP AS CHECKBOX DEFAULT 'X' USER-COMMAND INP .*
**PARAMETERS: PA_DEST TYPE CHAR0128 MODIF ID RG1 no-display
** DEFAULT '//tstapp/SAPFile/SHIPMENT_REPORT/SHIPMENT.XLS'.
**SELECTION-SCREEN END OF BLOCK B.
*****layout
selection-screen begin of block bk1 with frame title text-s20.
parameters: p_vari like disvariant-variant default '/ALL'.
selection-screen end of block bk1.
**The follow is replaced by email function
selection-screen begin of block bk2 with frame title text-s22.
parameters: p_fn type char600.
selection-screen end of block bk2.
selection-screen end of screen 101.
* Subscreen for Email selection
selection-screen begin of screen 201 as subscreen.
parameters p_send_x 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.
selection-screen end of screen 201.
selection-screen begin of tabbed block b3 for 24 lines.
selection-screen tab (20) text-s11 user-command sel_101
default screen 101.
selection-screen tab (20) text-s21 user-command sel_201
default screen 201.
*SELECTION-SCREEN TAB (20) TEXT-S22 USER-COMMAND SEL_202
* DEFAULT SCREEN 202.
*SELECTION-SCREEN TAB (20) TEXT-S23 USER-COMMAND SEL_203
* DEFAULT SCREEN 203.
selection-screen end of block b3.
*----------------------------------------------------------------------*
* AT selection screen *
*----------------------------------------------------------------------*
*AT SELECTION-SCREEN OUTPUT.
* PERFORM pbo_of_selection_screen.
****Display variant selection dialog box
at selection-screen on value-request for p_vari.
perform f4_for_variant.
*Checks whether a display variant exists
*start 013
*AT SELECTION-SCREEN.
* PERFORM PAI_OF_SELECTION_SCREEN.
start-of-selection.
perform pai_of_selection_screen.
perform get_checkbox_value.
*end 013
initialization.
** Get default variant
g_disp_var-report = sy-repid.
g_disp_var-username = sy-uname.
*----------------------------------------------------------------------*
* Start of Selection *
*----------------------------------------------------------------------*
start-of-selection.
*Assign FER1, FER2 or FER3 to S_MTART
perform get_checkbox_value.
* Select records from DB
perform select_records.
end-of-selection.
break garr_ng.
**get a file path for temp file
perform file_get_name
using
c_log_name
space
space
changing
g_path.
perform move_data_to_dtab.
if c_disp = 'X'.
perform write_result.
else.
perform download_to_server.
endif.
**30 Nov 2005, larry, add send email
if p_send_x = 'X'. "send email.
* g_fname = pa_dest.
break garr_ng.
perform get_alv_variant_detail using g_disp_var
fieldcat[]
layout
changing gt_fcat_sav[]
gt_sort_sav[]
gt_filter_sav[]
gs_layout_sav.
data: cust(5).
clear cust.
write dtab-kunag to cust.
*CONCATENATE G_PATH 'ZRSD0008_' SY-DATUM SY-UZEIT '.txt' INTO G_FNAME .
concatenate g_path 'ZRSD08_' cust sy-datum+2(6) sy-uzeit into
g_fname.
concatenate g_fname '_XLS' into g_sfile.
concatenate g_fname '.XLS' into g_tfile.
perform generate_xls using g_sfile.
perform z_convert_text_to_excel using g_sfile
g_tfile.
perform send_mail_via_sap using g_tfile
changing g_subrc.
endif.
**The following is replaced by the email function
if not p_fn is initial.
perform get_alv_variant_detail using g_disp_var
fieldcat[]
layout
changing gt_fcat_sav[]
gt_sort_sav[]
gt_filter_sav[]
gs_layout_sav.
perform generate_xls using p_fn.
endif.
*&---------------------------------------------------------------------*
*& Form SELECT_RECORDS
*&---------------------------------------------------------------------*
* Select Records
*----------------------------------------------------------------------*
form select_records .
perform get_shipping_record.
perform check_so_matnr_type_flag.
perform get_classification.
***start 001
***already filter the customer name in PERFORM GET_SHIPPING_RECORD
* PERFORM GET_CUSTOMER_NAME.
***end 001
perform get_ship_to_city_country.
perform get_billed_no.
perform get_prod_order_plant.
perform get_so_order_qty.
perform get_prod_order_status.
perform check_combine_lot.
perform get_text.
perform get_info.
*start 011
*# DEVK922257 Begin WEI_ZHU
********** perform get_ship_to_address.
*# DEVK922257 End WEI_ZHU
*end 011
***start 003
perform get_batch_info.
***end 003
* #DEVK922256 Begin
* perform get_prod_order_sublot.
* #DEVK922256 End
* begin #DEVK922169
perform get_combine_lot_detail.
* end #DEVK922169
endform. " SELECT_RECORDS
*&---------------------------------------------------------------------*
*& Form GET_SHIPPING_RECORD
*&---------------------------------------------------------------------*
* Get LIKP and LIPS Shipping record
*----------------------------------------------------------------------*
form get_shipping_record .
***start 001
data: l_tabix like sy-tabix.
***end 001
* TABLES : VBPA. "DEVK918089
data: begin of l_itab occurs 0,
kunag like likp-kunag, "Customer
***start 001
name1 like kna1-name1,
***end 001
wadat_ist like likp-wadat_ist, "Ship Out Date
kunnr like likp-kunnr, "Ship to
vbeln like likp-vbeln, "Delivery No
matnr like lips-matnr, "Material No
kdmat like lips-kdmat, "Lot No
kcmeng like lips-kcmeng, "Lot Qty in DN
arktx like lips-arktx, "Device Name
posnr like lips-posnr, "Item Number
mtart like lips-mtart, "Material Type
vgbel like lips-vgbel, "SO number
vgpos like lips-vgpos, "SO item number
**start 003
werks like lips-werks, "Plant
charg like lips-charg, "batch
**end 003
end of l_itab.
select a~wadat_ist a~kunnr a~vbeln
b~matnr b~kdmat b~kcmeng b~arktx b~posnr
b~mtart b~vgbel b~vgpos
into corresponding fields of table l_itab
from lips as b inner join likp as a
on b~vbeln = a~vbeln
where a~wadat_ist in s_wadat
* AND P~KUNNR IN S_KUNAG
and a~kunnr in s_kunnr "DEVK918089
and a~vbeln in s_vbeln
and b~mtart in s_mtart
and b~matnr in s_matnr
and b~arktx in s_arktx
and b~kdmat in s_kdmat
and b~werks in s_werks
and b~uecha = ''
and b~uepos = 0.
.
****GET bill-to-party
****Search Header first then item
***Header
***start 0001
**get bill to
select vbeln posnr vbpa~kunnr name1
into corresponding fields of table t_vbpa
from vbpa inner join kna1 on
vbpa~kunnr = kna1~kunnr
for all entries in l_itab
where vbeln = l_itab-vgbel
and parvw = 'RE'. "bill to
***get sold-to
select vbeln vbak~kunnr name1
into corresponding fields of table t_sold
from vbak inner join kna1 on
vbak~kunnr = kna1~kunnr
for all entries in l_itab
where vbeln = l_itab-vgbel.
sort t_vbpa by vbeln posnr.
sort t_sold by vbeln.
loop at l_itab.
l_tabix = sy-tabix.
read table t_sold with key vbeln = l_itab-vgbel binary search.
if sy-subrc = 0.
if t_sold-kunnr = '0000010000'.
read table t_vbpa with key vbeln = l_itab-vgbel
posnr = l_itab-vgpos
binary search.
if sy-subrc = 0.
**filter customer no.
if not t_vbpa-kunnr in s_kunag.
delete l_itab index l_tabix.
continue.
else.
l_itab-kunag = t_vbpa-kunnr.
endif.
**filter customer name
if not t_vbpa-name1 in s_name1.
delete l_itab index l_tabix.
continue.
else.
l_itab-name1 = t_vbpa-name1.
endif.
modify l_itab index l_tabix.
else.
read table t_vbpa with key vbeln = l_itab-vgbel binary search.
if sy-subrc = 0.
**filter customer no.
if not t_vbpa-kunnr in s_kunag.
delete l_itab index l_tabix.
continue.
else.
l_itab-kunag = t_vbpa-kunnr.
endif.
**filter customer name
if not t_vbpa-name1 in s_name1.
delete l_itab index l_tabix.
continue.
else.
l_itab-name1 = t_vbpa-name1.
endif.
modify l_itab index l_tabix.
endif.
endif.
else.
**filter customer no.
if not t_sold-kunnr in s_kunag.
delete l_itab index l_tabix.
continue.
else.
l_itab-kunag = t_sold-kunnr.
endif.
**filter customer name
if not t_sold-name1 in s_name1.
delete l_itab index l_tabix.
else.
l_itab-name1 = t_sold-name1.
endif.
modify l_itab index l_tabix.
endif.
endif.
endloop.
* LOOP AT L_ITAB.
*
* SELECT SINGLE * FROM VBPA
* WHERE VBELN = L_ITAB-VGBEL
* AND POSNR = '000000'
* AND PARVW = 'RE'
* AND KUNNR IN S_KUNAG.
*
* IF SY-SUBRC = 0.
* MOVE VBPA-KUNNR TO L_ITAB-KUNAG.
* ELSE.
* L_ITAB-KUNAG = ''.
* ENDIF.
***item
* SELECT SINGLE * FROM VBPA
* WHERE VBELN = L_ITAB-VGBEL
* AND POSNR = L_ITAB-VGPOS
* AND PARVW = 'RE'
* AND KUNNR IN S_KUNAG.
* IF SY-SUBRC = 0.
* MOVE VBPA-KUNNR TO L_ITAB-KUNAG.
* ENDIF.
*
* MODIFY L_ITAB.
*
* ENDLOOP.
*** end 0001
loop at l_itab where kunag in s_kunag.
move-corresponding l_itab to itab.
append itab.
endloop.
endform. " GET_SHIPPING_RECORD
*&---------------------------------------------------------------------*
*& Form GET_CLASSIFICATION
*&---------------------------------------------------------------------*
* Get Package Type , Dimension and Lead Count
*----------------------------------------------------------------------*
form get_classification .
data: lt_class like sclass occurs 0 with header line,
lt_clobjdat like clobjdat occurs 0 with header line,
l_objek like ausp-objek.
loop at itab.
l_objek = itab-matnr.
* Get the features of characteristics of the material
call function 'CLAF_CLASSIFICATION_OF_OBJECTS'
exporting
classtext = '' "No class text
classtype = c_matcltype "Material classification
object = l_objek "Material#
initial_charact = '' "No initial characteristic
tables
t_class = lt_class
t_objectdata = lt_clobjdat
exceptions
others = 4.
if sy-subrc = 0 .
* CHECK LT_CLASS-CLASS IN S_CLASS.
read table lt_class index 1.
move lt_class-class to itab-class.
read table lt_clobjdat with key atnam = 'LEAD'.
if sy-subrc = 0.
move lt_clobjdat-ausp1 to itab-lead.
* MODIFY ITAB.
endif.
read table lt_clobjdat with key atnam = 'PACKAGE_DIMENSION'.
if sy-subrc = 0.
move lt_clobjdat-ausp1 to itab-pdim.
* MODIFY ITAB.
endif.
*start of 017 "DEVK921665
read table lt_clobjdat with key atnam = 'NUMBER_OF_WIRES'.
if sy-subrc = 0.
move lt_clobjdat-atflv to itab-wire_no.
itab-wire_count = lt_clobjdat-atflv * itab-kcmeng.
endif.
*end of 017 "DEVK921665
modify itab transporting class lead pdim
wire_no wire_count. "DEVK921665
endif.
if not lt_class-class in s_class.
delete itab.
endif.
endloop.
endform. " GET_CLASSIFICATION
*&---------------------------------------------------------------------*
*& Form PBO_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* Control attributes of selection screen fields
*----------------------------------------------------------------------*
form pbo_of_selection_screen.
if c_disp = ''.
loop at screen.
if screen-group1 = 'RG1'.
screen-input = '1'.
screen-invisible = '0'.
modify screen.
endif.
endloop.
else.
loop at screen.
if screen-group1 = 'RG1'.
screen-input = '0'.
screen-invisible = '1'.
modify screen.
endif.
endloop.
endif.
endform. "PBO_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*& Form WRITE_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form write_result .
* Display report
perform output_to_alv.
* LOOP AT DTAB.
* WRITE: /1 DTAB-KUNAG,
* 12 DTAB-WADAT_IST,
* 24 DTAB-KUNNR,
* 38 DTAB-VBELN,
* 52 DTAB-MATNR,
** 52 ITAB-KDMAT,
* 64 DTAB-KCMENG.
** 83 DTAB-POSNR,
** 90 DTAB-MTART.
** 120 ITAB-FKIMG.
* ENDLOOP.
endform. " WRITE_RESULT
*&---------------------------------------------------------------------*
*& Form GET_BILLED_QTY
*&---------------------------------------------------------------------*
* Get Billed No
*----------------------------------------------------------------------*
form get_billed_no .
loop at itab.
select vbeln
from vbfa
into itab-bvbeln
where vbelv = itab-vbeln
and posnv = itab-posnr
and ( vbtyp_n = 'M' or
vbtyp_n = '5' ).
* IF SY-SUBRC = 0.
* MOVE VBFA-RFMNG TO ITAB-FKIMG.
* ELSE.
* ITAB-FKIMG = 0.
* ENDIF.
modify itab.
endselect.
endloop.
endform. " GET_BILLED_NO
*&---------------------------------------------------------------------*
*& Form CHECK_COMBINE_LOT
*&---------------------------------------------------------------------*
* Check whether a DN contains more than one lot number (Y/N)
*----------------------------------------------------------------------*
form check_combine_lot .
data: l_count type i.
loop at itab.
clear l_count.
select count( distinct kdmat ) into l_count
from lips where vbeln = itab-vbeln.
if l_count > 1.
move 'Y' to itab-count.
else.
move 'N' to itab-count.
endif.
**Uncomment this section if number of LOTs is needed to display
* IF SY-SUBRC = 0.
* MOVE COUNT TO ITAB-COUNT.
modify itab transporting count.
* ENDIF.
endloop.
endform. " CHECK_COMBINE_LOT
*&---------------------------------------------------------------------*
*& Form GET_CHECKBOX_VALUE
*&---------------------------------------------------------------------*
* Assign Material Type according to Checkbox value
*----------------------------------------------------------------------*
form get_checkbox_value .
* #DEVK922257 Begin by wei_zhu
* if ch_t = 'X'.
s_mtart-sign = 'I'.
s_mtart-option = 'EQ'.
s_mtart-low = 'FER3'.
append s_mtart.
* endif.
* if ch_at = 'X' or ch_a = 'X'.
s_mtart-sign = 'I'.
s_mtart-option = 'EQ'.
s_mtart-low = 'FER2'.
append s_mtart.
s_mtart-sign = 'I'.
s_mtart-option = 'EQ'.
s_mtart-low = 'FER1'.
append s_mtart.
* S_MTART-SIGN = 'I'.
* S_MTART-OPTION = 'EQ'.
* S_MTART-LOW = 'FER4'.
* APPEND S_MTART.
* S_MTART-SIGN = 'I'.
* S_MTART-OPTION = 'EQ'.
* S_MTART-LOW = 'FER5'.
* APPEND S_MTART.
* endif.
* #DEVK922257 End by wei_zhu
clear s_mtart.
endform. " GET_CHECKBOX_VALUE
*&---------------------------------------------------------------------*
*& Form CHECK_SO_MATNR_TYPE_Flag
*&---------------------------------------------------------------------*
* Check if Material Type had changed in SO
*----------------------------------------------------------------------*
form check_so_matnr_type_flag .
***The following process will only affect FER1 and FER2 MType
***Material Type will be changed if the flag is checked
loop at itab where mtart <> 'FEM3'.
select single * from vbap where vbeln = itab-vgbel
and posnr = itab-vgpos.
if sy-subrc = 0.
if vbap-zzatoat = 'X'.
itab-mtart = 'FER2'.
modify itab transporting mtart.
endif.
if vbap-zzattoa = 'X'.
itab-mtart = 'FER1'.
modify itab transporting mtart.
endif.
endif.
endloop.
**Delete 'FER1 if Check Boxs is not selected.
* #DEVK922257 Begin by wei_zhu
* if ch_a = ''.
* loop at itab where mtart = 'FER1'.
* delete itab.
* endloop.
* endif.
* #DEVK922257 Begin by wei_zhu
**Delete 'FER2 if Check Boxs is not selected.
* #DEVK922257 Begin by wei_zhu
* if ch_at = ''.
* loop at itab where mtart = 'FER2'.
* delete itab.
* endloop.
* endif.
* #DEVK922257 Begin by wei_zhu
endform. " CHECK_SO_MATNR_TYPE_Flag
*&---------------------------------------------------------------------*
*& FORM GET_SHIP_TO_ADDRESS
*&---------------------------------------------------------------------*
* Get ship to address information
*----------------------------------------------------------------------*
form get_ship_to_address.
loop at itab.
select single adrc~sort2
from kna1
join adrc on kna1~adrnr = adrc~addrnumber
into itab-sort2
where kna1~kunnr = itab-kunnr.
if sy-subrc = 0.
modify itab transporting sort2.
endif.
endloop.
endform. "GET_SHIP_TO_ADDRESS
*&---------------------------------------------------------------------*
*& Form MOVE_DATA_TO_DTAB
*&---------------------------------------------------------------------*
* Move data from itab to dtab for download use
*----------------------------------------------------------------------*
form move_data_to_dtab .
data l_ship_to type kunnr.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = '88888'
importing
output = l_ship_to.
* #DEVK922257 Begin by wei_zhu
**start 015 "DEVK921524
* if ch_slot = ''.
**end 015 "DEVK921524
*
* loop at itab.
*
*** Remove records' whose ship-to = 88888, larry, 26 Oct 2005
* if itab-kunnr <> l_ship_to.
***start 004
* case itab-matnr+11(1).
* when '1'.
* itab-process = 'A'.
* when '2'.
* itab-process = 'A&T'.
* when '3'.
* itab-process = 'T'.
* endcase.
* if itab-zzatoat = 'X'.
* itab-process = 'A&T'.
* endif.
* if itab-zzattoa = 'X'.
* itab-process = 'A'.
* endif.
***end 004
* move-corresponding itab to dtab.
*
* append dtab.
* endif.
* endloop.
**start 015 "DEVK921524
* else.
* #DEVK922257 End by wei_zhu
loop at wa_dtab.
if wa_dtab-kunnr <> l_ship_to.
case itab-matnr+11(1).
when '1'.
wa_dtab-process = 'A'.
when '2'.
wa_dtab-process = 'A&T'.
when '3'.
wa_dtab-process = 'T'.
endcase.
if wa_dtab-zzatoat = 'X'.
wa_dtab-process = 'A&T'.
endif.
if wa_dtab-zzattoa = 'X'.
wa_dtab-process = 'A'.
endif.
move-corresponding wa_dtab to dtab.
append dtab.
clear dtab.
endif.
endloop.
* #DEVK922257 Begin by wei_zhu
* endif.
* #DEVK922257 end by wei_zhu
*END 015 "DEVK921524
******************************
clear:l_dtab[].
APPEND LINES OF dtab to l_dtab.
clear:dtab[].
clear:dtab.
loop at l_dtab.
dtab-aufnr = l_dtab-aufnr. "Proder no
dtab-kunag = l_dtab-kunag. "Customer
dtab-name1 = l_dtab-name1. "Customer Name
dtab-line5 = l_dtab-line5.
dtab-REJQTY = l_dtab-REJQTY.
dtab-WADAT_IST = l_dtab-WADAT_IST. "Ship Out Date
dtab-PROFORMA = l_dtab-PROFORMA.
dtab-LFIMG = l_dtab-LFIMG. "Delivery Qty/Batch Qty
dtab-sublot = l_dtab-sublot.
dtab-zztrc_cd = l_dtab-zztrc_cd.
collect dtab.
t_po-aufnr = l_dtab-aufnr. "Proder no
collect t_po.
endloop.
******************************
* Begin #DEVK922169
* loop at gt_sql_query_046
* where FIELD_011 = itab-kdmat.
* itab-comb_lot_no = gt_sql_query_046-FIELD_005.
* itab-comb_lot_qty = gt_sql_query_046-FIELD_006.
*
* endloop.
* #DEVK922256 Begin
perform get_prod_order_sublot.
* #DEVK922256 End
loop at gt_sql_query_046A.
read table gt_sql_query_046
with key FIELD_011 = gt_sql_query_046A-FIELD_002.
if sy-subrc = 0.
i_tab3-aufnr = gt_sql_query_046A-FIELD_001.
i_tab3-comb_lot_no = gt_sql_query_046-FIELD_005.
i_tab3-comb_lot_qty = gt_sql_query_046-FIELD_006.
i_tab3-lot_no = gt_sql_query_046A-FIELD_002.
i_tab3-lot_qty = gt_sql_query_046A-FIELD_003.
append i_tab3.
else.
i_tab3-aufnr = gt_sql_query_046A-FIELD_001.
i_tab3-lot_no = gt_sql_query_046A-FIELD_002.
i_tab3-lot_qty = gt_sql_query_046A-FIELD_003.
append i_tab3.
endif.
* #DEVK922285 Begin
clear i_tab3.
* #DEVK922285 End
endloop.
***********************
data: l_aufnr like afko-aufnr.
loop at dtab.
l_aufnr = dtab-aufnr.
SHIFT l_aufnr LEFT DELETING LEADING '0'.
read table i_tab3 with
key aufnr = l_aufnr lot_no = dtab-sublot.
if sy-subrc = 0.
loop at i_tab3 where
aufnr = l_aufnr and lot_no = dtab-sublot.
dtab-testout = i_tab3-lot_qty.
dtab-comb_lot_no = i_tab3-comb_lot_no.
dtab-comb_lot_qty = i_tab3-comb_lot_qty.
append dtab to l_dtab_1.
clear dtab.
endloop.
else.
append dtab to l_dtab_1.
read table i_tab3 with key aufnr = l_aufnr.
if sy-subrc = 0.
loop at i_tab3 where aufnr = l_aufnr.
dtab-sublot = i_tab3-lot_no.
dtab-testout = i_tab3-lot_qty.
dtab-comb_lot_no = i_tab3-comb_lot_no.
dtab-comb_lot_qty = i_tab3-comb_lot_qty.
dtab-lfimg = 0.
append dtab to l_dtab_1.
clear dtab.
endloop.
endif.
endif.
endloop.
delete gt_sql_query_016 where field_009 < '8000'.
data:l_aufnr_1 like l_dtab_1-aufnr.
sort gt_sql_query_016 by
field_002 field_004 field_005.
loop at l_dtab_1.
l_aufnr_1 = l_dtab_1-aufnr.
SHIFT l_aufnr_1 LEFT DELETING LEADING '0'.
read table gt_sql_query_016
with key field_002 = l_aufnr_1
field_004 = l_dtab_1-sublot.
if sy-subrc = 0.
l_dtab_1-test_in_qty = gt_sql_query_016-field_009.
l_dtab_1-test_start_date = gt_sql_query_016-field_007.
modify l_dtab_1.
endif.
endloop.
***********************
* #DEVK922289 Begin
loop at l_dtab_1.
l_aufnr_1 = l_dtab_1-aufnr.
SHIFT l_aufnr_1 LEFT DELETING LEADING '0'.
read table gt_sql_query_046B
with key field_001 = l_aufnr_1
field_002 = l_dtab_1-sublot.
if sy-subrc = 0.
l_dtab_1-mes_rej_qty = gt_sql_query_046B-field_003.
modify l_dtab_1.
endif.
* #DEVK922330 Begin
l_dtab_1-sublot_qty = l_dtab_1-testout - l_dtab_1-comb_lot_qty.
modify l_dtab_1.
* #DEVK922330 End
endloop.
* #DEVK922289 End
clear dtab[].
dtab[] = l_dtab_1[].
* End #DEVK922169
endform. " MOVE_DATA_TO_DTAB
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_TO_SERVER
*&---------------------------------------------------------------------*
* Download data to server
*----------------------------------------------------------------------*
form download_to_server .
* DATA: FNAME LIKE SY-LISEL .
***for Function Call
* CALL FUNCTION 'EXCEL_OLE_STANDARD_DAT'
* EXPORTING
* FILE_NAME = FNAME
* TABLES
* DATA_TAB = DTAB
** FIELDNAMES = FIELDNAME
* EXCEPTIONS
* FILE_NOT_EXIST = 1
* FILENAME_EXPECTED = 2
* COMMUNICATION_ERROR = 3
* OLE_OBJECT_METHOD_ERROR = 4
* OLE_OBJECT_PROPERTY_ERROR = 5
* INVALID_FILENAME = 6
* INVALID_PIVOT_FIELDS = 7
* DOWNLOAD_PROBLEM = 8
* OTHERS = 9.
data:l_netwr(16). "DEVK918089
data: fname like rlgrap-filename.
**open datasets method
* FNAME = '//tstapp/SAPFile/SHIPMENT_REPORT/SHIPMENT.XLS'.
* fname = pa_dest.
concatenate g_path 'shipment.xls' into fname.
***open Datasets
***add trace code , 2 nov 2005 , larry
data: hextab(1).
class cl_abap_char_utilities definition load.
data: record(1000) type c.
hextab = cl_abap_char_utilities=>horizontal_tab.
*
open dataset fname for output
in text mode encoding default .
if sy-subrc = 0.
loop at dtab.
l_netwr = dtab-netwr. "DEVK918089
** Build output Header with TAB delimiter
at first.
concatenate
'Customer' 'Customer Name' 'Ship Out Date'
'Production Plant' 'Test Plant'
'Ship to ' 'Ship to Location' 'Ship to Adress'
'Partial Shipment'
'Combine Lot' 'Delivery No' 'Device Code'
'Device Name' 'Process'
'Customer LOT No' 'Release Qty'
'Lot Qty in DN' 'Invoice#'
'Package Type' 'Lead Count' 'Package Dimension'
'MAWB#' 'HAWB#' 'Carrier/Flight' 'Forwarder'
'Trace Code'
'Assembly Out Qty' 'Test Out Qty' 'Full Reel Qty' "004
'Partial Qty' 'Reject Qty' "004
'ATOAT' 'ATTOA' "007
'Net Value'
'NVIDIA Batch Number/ Fab Lot #'
into record separated by hextab.
transfer: record to fname.
endat.
*Customer Customer Name ship Out Date
*Production Plant Test Plant
*Ship to location Partial Shipment
*Combine Lot Delivery Note # Device Code
*Device Name Customer Lot No ReleaseQty
*Lot Qty in DN Invoice #
*Package Type Lead Count Package Dimension
** Build output record with TAB delimiter
data: dtab_assout(20) type c,
dtab_testout(20) type c,
dtab_rejqty(20) type c.
dtab_assout = dtab-assout.
dtab_testout = dtab-testout.
dtab_rejqty = dtab-rejqty.
concatenate dtab-kunag dtab-name1 dtab-wadat_ist
dtab-pwerk dtab-twerk
dtab-kunnr dtab-landx50 dtab-sort2 dtab-ptial
dtab-count dtab-vbeln dtab-matnr
dtab-arktx dtab-process
dtab-kdmat dtab-fkimg
dtab-kcmeng dtab-bvbeln
dtab-class dtab-lead dtab-pdim
dtab-line1 dtab-line2 dtab-line3 dtab-line4
dtab-zztrc_cd
dtab_assout dtab_testout dtab-fullreel "004
dtab-partial dtab_rejqty "004
dtab-zzatoat dtab-zzattoa "007
l_netwr "DEVK918089
dtab-fab_lot
into record separated by hextab.
transfer: record to fname.
endloop.
close dataset fname.
write:/ 'Shipment Report is generated to', fname.
else.
write:/ 'Error File open error!'.
endif.
endform. " DOWNLOAD_TO_SERVER
*&---------------------------------------------------------------------*
*& Form GET_CUSTOMER_NAME
*&---------------------------------------------------------------------*
* Get Customer Name
*----------------------------------------------------------------------*
form get_customer_name .
loop at itab.
select single name1 from kna1 into itab-name1
where kunnr = itab-kunag
and name1 in s_name1.
if sy-subrc = 0.
modify itab.
else.
delete itab.
endif.
endloop.
endform. " GET_CUSTOMER_NAME
*&---------------------------------------------------------------------*
*& Form GET_PROD_ORDER_PLANT
*&---------------------------------------------------------------------*
* Get Production Order's Plant and GR Qty
*----------------------------------------------------------------------*
form get_prod_order_plant .
***internal TABLE to get sub-delivery Item
data: begin of l_tab occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
dwerk like afpo-dwerk,
matnr like afpo-matnr,
wemng like afpo-wemng,
aufnr like afpo-aufnr, "DEVK918277
end of l_tab.
loop at itab.
* "TESTING CASE AT CLIENT 600
* ITAB-VGBEL = '0005000287' .
* ITAB-VGPOS = '00010'.
select single dwerk wemng aufnr
from afpo into (itab-dwerk, itab-wemng, itab-aufnr )
where kdauf = itab-vgbel
and kdpos = itab-vgpos.
if sy-subrc = 0.
* #DEVK922257 Begin by wei_zhu
* if ch_fab eq 'X'. "DEVK918277
* perform get_fab_lot.
* endif.
* #DEVK922257 End by wei_zhu
case itab-mtart.
when 'FER3'.
itab-pwerk = ''.
itab-twerk = itab-dwerk.
modify itab .
when others.
itab-pwerk = itab-dwerk.
itab-twerk = ''.
modify itab .
endcase.
else.
* "FOR MATERIAL ITEM IS DUMMY WITH ITEM CAT = 'X'
* "GO TO ITS SUBITEM TO GET PRODUCTION ORDER PLANT
refresh l_tab. clear l_tab.
select vbeln posnr from vbap into table l_tab
where uepos = itab-vgpos
and vbeln = itab-vgbel.
loop at l_tab.
select dwerk matnr wemng aufnr
from afpo into (l_tab-dwerk, l_tab-matnr, l_tab-wemng,
l_tab-aufnr ) "DEVK918277
where kdauf = l_tab-vbeln
and kdpos = l_tab-posnr.
modify l_tab.
endselect .
endloop.
loop at l_tab.
if l_tab-matnr+11(1) = '1'.
move l_tab-dwerk to itab-pwerk.
move l_tab-wemng to itab-wemng.
modify itab.
elseif l_tab-matnr+11(1) = '3'.
move l_tab-dwerk to itab-twerk.
modify itab.
endif.
* Add begin of "DEVK918277
itab-aufnr = l_tab-aufnr.
* #DEVK922257 Begin by wei_zhu
* if ch_fab eq 'X'.
* perform get_fab_lot.
* endif.
* #DEVK922257 End by wei_zhu
clear itab-aufnr.
* Add end of "DEVK918277
endloop.
endif.
endloop.
endform. " GET_PROD_ORDER_PLANT
*&---------------------------------------------------------------------*
*& Form GET_SO_ORDER_QTY
*&---------------------------------------------------------------------*
* Get SO Order Quantity
*----------------------------------------------------------------------*
form get_so_order_qty .
loop at itab.
* 2 Nov 2005, add trace code , larry
select single kwmeng zztrc_cd zzatoat zzattoa zzfablot1
into (itab-fkimg, itab-zztrc_cd, itab-zzatoat, itab-zzattoa,
*start 014 "DEVK921503
itab-fablot1)
*end 014 "DEVK921503
from vbap
where vbeln = itab-vgbel
and posnr = itab-vgpos.
if sy-subrc = 0.
modify itab transporting fkimg zztrc_cd zzatoat zzattoa
*start 014 "DEVK921503
fablot1.
*end 014 "DEVK921503
endif.
select single bstkd into itab-bstkd
from vbkd
where vbeln = itab-vgbel
and posnr = itab-vgpos.
if sy-subrc = 0.
modify itab transporting bstkd.
else.
select single bstkd into itab-bstkd
from vbkd
where vbeln = itab-vgbel
and posnr = '000000'.
if sy-subrc = 0.
modify itab transporting bstkd.
endif.
endif.
endloop.
endform. " GET_SO_ORDER_QTY
*&---------------------------------------------------------------------*
*& Form GET_PROD_ORDER_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form get_prod_order_status .
***internal TABLE to get sub-delivery Item
data: begin of l_tab occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
objnr like aufk-objnr,
end of l_tab.
loop at itab.
* "TESTING CASE AT CLIENT 600
* ITAB-VGBEL = '0005000287' .
* ITAB-VGPOS = '00010'.
select single objnr
from aufk into itab-objnr
where kdauf = itab-vgbel
and kdpos = itab-vgpos.
if sy-subrc = 0.
modify itab.
else.
* "FOR MATERIAL ITEM IS DUMMY WITH ITEM CAT = 'X'
* "GO TO ITS SUBITEM TO GET PRODUCTION ORDER PLANT
refresh l_tab. clear l_tab.
select vbeln posnr from vbap into table l_tab
where uepos = itab-vgpos
and vbeln = itab-vgbel.
sort l_tab by posnr.
loop at l_tab.
select objnr
from aufk into l_tab-objnr
where kdauf = l_tab-vbeln
and kdpos = l_tab-posnr.
modify l_tab.
endselect .
endloop.
loop at l_tab.
move l_tab-objnr to itab-objnr.
modify itab.
endloop.
endif.
endloop.
***Get status using objeck key.
data it_jest like jest occurs 0 with header line.
tables jest.
***
* BREAK GARR_NG.
loop at itab.
if not itab-objnr is initial.
select single * from jest into it_jest
where objnr = itab-objnr
* AND STAT = 'I0045'.
and ( stat = 'I0009' or
stat = 'I0012' or
stat = 'I0045' )
and inact ne 'X'.
if sy-subrc = 4.
itab-ptial = 'Y'.
modify itab.
elseif itab-wemng > itab-kcmeng.
***Compare with prod Order GR Qty with DN qty
*** if GR qty is > DN qty then it is partial DN
itab-ptial = 'Y'.
modify itab.
else.
itab-ptial = 'N'.
modify itab.
endif.
endif.
endloop.
endform. " GET_PROD_ORDER_STATUS
*&---------------------------------------------------------------------*
*& Form GET_SHIP_TO_CITY_COUNTRY
*&---------------------------------------------------------------------*
* Get ship to address.
*----------------------------------------------------------------------*
form get_ship_to_city_country .
loop at itab.
select single ort01 land1 from kna1 into (itab-ort01, itab-land1)
where kunnr = itab-kunnr.
if sy-subrc = 0.
select single * from t005t where spras = 'EN'
and land1 = itab-land1.
if sy-subrc = 0.
move t005t-landx to itab-landx.
if itab-ort01 = ''.
move itab-landx to itab-landx50.
else.
concatenate itab-ort01 ',' itab-landx into itab-landx50
separated by space.
endif.
modify itab.
endif.
endif.
endloop.
endform. " GET_SHIP_TO_CITY_COUNTRY
*&---------------------------------------------------------------------*
*& Form GET_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form get_text .
data: l_name like thead-tdname,
l_name2 like thead-tdname, "DEVK921621
l_id like thead-tdid,
l_line like tline-tdline,
l_hdr(6) type n value 0,
l_lifnr like lfa1-lifnr .
loop at itab.
move itab-vbeln to l_name.
move itab-vgbel to l_name2. "DEVK921621
**get proforma invoice #, by item level then header if not found
clear vbfa.
select single vbfa~vbeln vbfa~posnn
* INTO ITAB-PROFORMA
into (vbfa-vbeln,vbfa-posnn)
from vbfa
join vbrk on vbrk~vbeln = vbfa~vbeln " by robbin
where vbelv = itab-vbeln
and posnv = itab-posnr
and vbtyp_n = 'U'
and vbrk~rfbsk <> 'E'. " by robbin
if sy-subrc <> 0.
select single vbfa~vbeln vbfa~posnn
* INTO ITAB-PROFORMA
into (vbfa-vbeln,vbfa-posnn)
from vbfa
join vbrk on vbrk~vbeln = vbfa~vbeln " by robbin
where vbelv = itab-vbeln
and posnv = l_hdr
and vbtyp_n = 'U'
and vbrk~rfbsk <> 'E'. " by robbin
endif.
itab-proforma = vbfa-vbeln.
clear itab-netwr.
*Add begin of DEVK918089
clear vbrk.
select single knumv
into vbrk-knumv
from vbrk
where vbeln eq vbfa-vbeln.
if sy-subrc eq 0.
clear konv.
select single kbetr
into konv-kbetr
from konv
where knumv = vbrk-knumv
and kposn = vbfa-posnn
and kschl = 'MINA'.
if sy-subrc eq 0.
itab-netwr = konv-kbetr.
else.
select kwert "Rate (condition amount or percentage)
into konv-kwert
from konv
where knumv = vbrk-knumv
and kposn = vbfa-posnn
and ( kschl = 'TSTA'
or kschl = 'ASSM' ).
itab-netwr = itab-netwr + konv-kwert.
endselect.
endif.
endif.
* SELECT SINGLE NETWR
* INTO VBRP-NETWR
* FROM VBRP
* WHERE VBELN = VBFA-VBELN
* AND POSNR = VBFA-POSNN.
*
* IF SY-SUBRC EQ 0.
* ITAB-NETWR = VBRP-NETWR.
* ENDIF.
*Add end of DEVK918089
*Mawb #,
*start of "DEVK921838
select single netwr
into vbrp-netwr
from vbrp
where vbeln = vbfa-vbeln
and posnr = vbfa-posnn.
if sy-subrc eq 0.
itab-ciwr = vbrp-netwr.
endif.
*end of "DEVK921838
l_id = 'Z002'.
perform get_header_text using l_name l_id
changing l_line.
move l_line to itab-line1. clear l_line.
if itab-line1 is initial.
** if we don't find MAWB in DN, then we find MAWB in proform invoice
l_name = itab-proforma.
perform get_header_text using l_name l_id
changing l_line.
move l_line to itab-line1.
endif.
*Hawb #
l_id = 'Z003'.
perform get_header_text using l_name l_id
changing l_line.
move l_line to itab-line2. clear l_line.
*Carrier /Flight
l_id = 'Z004'.
perform get_header_text using l_name l_id
changing l_line.
move l_line to itab-line3. clear l_line.
if itab-line3 is initial.
** if we don't find carrier/flight in DN,
** then we find in proform invoice
l_name = itab-proforma.
perform get_header_text using l_name l_id
changing l_line.
move l_line to itab-line3. clear l_line.
endif.
*Forwarder
l_id = 'Z007'.
** 006
** PERFORM GET_HEADER_TEXT USING L_NAME L_ID
** CHANGING L_LINE.
** MOVE L_LINE TO ITAB-LINE4. CLEAR L_LINE.
** 006
*start 012
data:count type i.
concatenate itab-vgbel itab-vgpos into l_name.
condense l_name.
perform get_item_text tables l_lines
using l_name l_id.
loop at l_lines.
move l_lines-tdline to l_line.
search l_line for 'IDT sales order number:'.
if sy-subrc = 0.
count = sy-fdpos + 23.
write l_line+count(50) to itab-idtbel.
continue.
endif.
search l_line for 'IDT item number:'.
if sy-subrc = 0.
count = sy-fdpos + 16.
write l_line+count(10) to itab-idtpos.
continue.
endif.
clear l_line.
endloop.
*end 012
** Add start of "DEVK921621
*Customer PR #
l_id = 'Z015'.
perform get_header_text using l_name2 l_id
changing l_line.
move l_line to itab-line5. clear l_line.
** Add end of "DEVK921621
*start 019 "DEVK922054
* If the customer is STM(10232 or 10233), show sales type in SO item
* instead of Device description.
if itab-kunag = '0000010232' or itab-kunag = '0000010233'.
l_id = 'Z017'.
concatenate itab-vgbel itab-vgpos into l_name.
condense l_name.
perform get_item_text tables l_lines
using l_name l_id.
read table l_lines index 1.
if sy-subrc = 0.
move l_lines-tdline to itab-arktx.
endif.
refresh l_lines.
clear: l_lines, l_id, l_name.
endif.
*end 019 "DEVK922054
select single lifnr into l_lifnr
from vbpa
where vbeln = itab-proforma
and parvw = 'FA'.
if sy-subrc = 0 .
select single name1 into itab-line4
from lfa1
where lifnr = l_lifnr.
endif.
modify itab.
endloop.
*'Z002'
endform. " GET_TEXT
*&---------------------------------------------------------------------*
*& Form GET_HEADER_TEXT
*&---------------------------------------------------------------------*
* GET Header Text
*----------------------------------------------------------------------*
* -->P_L_NAME Delivery No
* -->P_L_ID ID
* <--P_L_LINE Header text
*----------------------------------------------------------------------*
form get_header_text using p_l_name p_l_id
changing p_l_line.
data: l_line like tline occurs 0 with header line.
refresh l_line. clear p_l_line. clear p_l_line.
call function 'READ_TEXT'
exporting
* CLIENT = SY-MANDT
id = p_l_id
language = 'E'
name = p_l_name
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
tables
lines = l_line
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.
read table l_line index 1.
move l_line-tdline to p_l_line.
endif.
endform. " GET_HEADER_TEXT
*&---------------------------------------------------------------------*
*& Form GET_ITEM_TEXT
*&---------------------------------------------------------------------*
* GET ITEM Text
*----------------------------------------------------------------------*
* -->P_L_NAME SO Number
* -->P_L_INLINE TEXT line number
* -->P_L_ID ID
* <--P_L_LINE Header text
*----------------------------------------------------------------------*
form get_item_text tables p_l_line structure l_lines
using p_l_name p_l_id.
data: l_line like tline occurs 0 with header line.
clear p_l_line.
call function 'READ_TEXT'
exporting
* CLIENT = SY-MANDT
id = p_l_id
language = 'E'
name = p_l_name
object = 'VBBP'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
tables
lines = p_l_line
exceptions
* ID = 1
* LANGUAGE = 2
* NAME = 3
not_found = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8
.
endform. " GET_ITEM_TEXT
*&---------------------------------------------------------------------*
*& Form OUTPUT_TO_ALV
*&---------------------------------------------------------------------*
* Output to ALV
*----------------------------------------------------------------------*
form output_to_alv .
repid = sy-repid.
layout-colwidth_optimize = 'X'.
variant-report = repid.
* create field catalog
perform create_fieldcat.
perform create_layout.
* display ALV
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_BACKGROUND_ID = 'ALV_BACKGROUND'
i_grid_title = title
it_fieldcat = fieldcat
is_layout = layout
i_save = 'A'
* is_variant = p_vari
is_variant = g_disp_var
it_events = event
* IT_SORT = sort
i_callback_program = repid
* I_CALLBACK_USER_COMMAND = 'OUTPUTALV_DETAILS'
* I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' "Top-of-page display
tables
t_outtab = dtab
exceptions
program_error = 1
others = 2
.
endform. " OUTPUT_TO_ALV
*&---------------------------------------------------------------------*
*& Form CREATE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form create_layout .
layout-box_fieldname = 'SELK'. " Checkbox
endform. " CREATE_LAYOUT
*&---------------------------------------------------------------------*
*& Form CREATE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form create_fieldcat .
data: "LS_FIELDCAT TYPE LVC_S_FCAT, "ALV Data Field Catalog
ls_fieldcata type slis_fieldcat_alv. "ALV Display Field Catalog
* Macro: _APPEND_FIELDCAT
* &1 - Field Name
* &2 - Reference Table
* &3 - Reference Table Field (when Field Name is different)
* &4 - Short Field Label
* &5 - Medium Field Label
* &6 - Long Field Label
* &7 - Text Field Name
* &8 - Reference Field with Quantity Unit
* &9 - Hotspot
define _append_fieldcat.
clear: ls_fieldcata. " ,LS_FIELDCAT.
* LS_FIELDCAT-FIELDNAME = &1.
* LS_FIELDCAT-REF_TABLE = &2.
* LS_FIELDCAT-REF_FIELD = &3.
ls_fieldcata-fieldname = &1.
ls_fieldcata-ref_tabname = &2.
ls_fieldcata-ref_fieldname = &3.
ls_fieldcata-seltext_s = &4.
ls_fieldcata-seltext_m = &5.
ls_fieldcata-seltext_l = &6.
ls_fieldcata-reptext_ddic = &6.
ls_fieldcata-text_fieldname = &7.
ls_fieldcata-qfieldname = &8.
ls_fieldcata-hotspot = &9.
* APPEND LS_FIELDCAT TO FIELDCAT.
append ls_fieldcata to fieldcat.
end-of-definition.
* Begin #DEVK922169
_append_fieldcat 'COMB_LOT_NO' '' '' 'Comibne From Lot# '
'Comibne From Lot# ' 'Comibne From Lot# ' '' '' ''.
_append_fieldcat 'COMB_LOT_QTY' '' '' 'Comibne From Lot Qty '
'Comibne From Lot Qty ' 'Comibne Lot Qty ' '' '' ''.
_append_fieldcat 'TEST_IN_QTY' '' '' 'Test In Qty '
'Test In Qty ' 'Test In Qty ' '' '' ''.
_append_fieldcat 'TEST_START_DATE' '' '' 'Test Start Date '
'Test Start Date ' 'Test Start Date ' '' '' ''.
* Begin #DEVK922169
* Begin #DEVK922308
_append_fieldcat 'MES_REJ_QTY' '' '' 'Mes Reject Qty '
'Mes Reject Qty ' 'Mes Reject Qty ' '' '' ''.
* End #DEVK922308
* Begin #DEVK922330
_append_fieldcat 'SUBLOT_QTY' '' '' 'SubLot Qty '
'SubLot Qty ' 'SubLot Qty ' '' '' ''.
* End #DEVK922330
_append_fieldcat 'KUNAG' '' '' 'Customer ' 'Customer '
'Customer ' '' '' ''.
_append_fieldcat 'NAME1' '' '' 'Cust Name ' 'Customer Name '
'Customer Name ' '' '' ''.
*start 012
_append_fieldcat 'IDTBEL' '' '' 'IDT SO# ' 'IDT SO Number '
'IDT Sale Order Number ' '' '' ''.
_append_fieldcat 'IDTPOS' '' '' 'IDT SO Item ' 'IDT SO Item Number '
'IDT Sale Order Item Number ' '' '' ''.
*end 012
_append_fieldcat 'WADAT_IST' '' '' 'Date ' 'Shp Out DT '
'Ship Out Date ' '' '' ''.
_append_fieldcat 'PWERK' '' '' 'P Plant ' 'Prod Plant '
'Production Plant ' '' '' ''.
_append_fieldcat 'TWERK' '' '' 'T Plant ' 'Test Plant '
'Test Plant ' '' '' ''.
_append_fieldcat 'KUNNR' '' '' 'Ship to Party' 'Ship to Party'
'Ship to Party' '' '' ''.
_append_fieldcat 'LANDX50' '' '' 'Location ' 'Shp Location '
'Ship to Location ' '' '' ''.
*start 011
_append_fieldcat 'SORT2' '' '' 'Address ' 'Shp Address '
'Ship to Address ' '' '' ''.
*end 011
_append_fieldcat 'PTIAL' '' '' 'Partial Shipment ' 'Partial Shipment '
'Partial Shipment ' '' '' ''.
_append_fieldcat 'COUNT' '' '' 'Combine Lot ' 'Combine Lot '
'Combine Lot ' '' '' ''.
_append_fieldcat 'VBELN' '' '' 'DN No ' 'Delivery No '
'Delivery No ' '' '' ''.
*** 006
_append_fieldcat 'TTL_WGT' '' '' 'TTL WGT ' 'Total Weight '
'Total Weight ' '' '' ''.
_append_fieldcat 'TTL_CNT' '' '' 'TTL CNT ' 'Total Carton '
'Total Carton ' '' '' ''.
*** 006
* _APPEND_FIELDCAT 'PWERK' '' '' 'X ' 'X ' 'X ' '' '' ''.
_append_fieldcat 'MATNR' '' '' 'Device ID ' 'Device Code '
'Device Code ' '' '' ''.
_append_fieldcat 'ARKTX' '' '' 'Device Name ' 'Device Name '
'Device Name ' '' '' ''.
**004
_append_fieldcat 'PROCESS' '' '' 'Process' 'Process' 'Process' '' ''
''.
**004
** 006
_append_fieldcat 'PROFORMA' '' '' 'Pro Inv' 'Proforma Invoice'
'Proforma Invoice' '' '' ''.
*start of "DEVK921838
* _APPEND_FIELDCAT 'NETWR' 'VBRK' 'NETWR' 'Net value' 'Net value'
* 'Net value' '' '' ''. "Net value "DEVK918089
_append_fieldcat 'NETWR' 'VBRK' 'NETWR' 'Unit P. Val.'
'Unit Price Value' 'Unit Price Value' '' '' ''.
_append_fieldcat 'CIWR' 'VBRK' 'NETWR' 'CI Net Val.'
'CI Net Value' 'CI Net Value' '' '' ''.
*end of "DEVK921838
_append_fieldcat 'AUFNR' '' '' 'Prod Ord' 'Prod Ord'
'Production Order' '' '' ''.
** 006
_append_fieldcat 'KDMAT' '' '' 'LOT No ' 'LOT No '
'Customer LOT No ' '' '' ''.
_append_fieldcat 'FKIMG' '' '' 'Rel Qty ' 'Release Qty '
'Release Qty ' '' '' ''.
_append_fieldcat 'KCMENG' '' '' 'Lot Qty ' 'Lot Qty '
'Lot Qty in DN ' '' '' ''.
_append_fieldcat 'BVBELN' '' '' 'Invoice ' 'Invoice '
'Invoice ' '' '' ''.
_append_fieldcat 'CLASS' '' '' 'Pkg Type ' 'Package Type '
'Package Type ' '' '' ''.
_append_fieldcat 'LEAD' '' '' 'Lead ' 'Lead Count '
'Lead Count ' '' '' ''.
_append_fieldcat 'PDIM' '' '' 'Dim ' 'Dimension '
'Package Dimension ' '' '' ''.
_append_fieldcat 'LINE1' '' '' 'MAWB# ' 'MAWB# ' 'MAWB# ' '' '' ''.
_append_fieldcat 'LINE2' '' '' 'HAWB# ' 'HAWB# ' 'HAWB# ' '' '' ''.
_append_fieldcat 'LINE3' '' '' 'Carrier/Flight ' 'Carrier/Flight '
'Carrier/Flight ' '' '' ''.
_append_fieldcat 'LINE4' '' '' 'Forwarder ' 'Forwarder ' 'Forwarder '
'' '' ''.
**
_append_fieldcat 'ZZTRC_CD' '' '' 'Trace CD ' 'Trace CD ' 'Trace CD'
'' '' ''.
**003
_append_fieldcat 'ASSOUT' '' '' 'Assembly Out Qty' 'Assembly Out Qty'
'Assembly Out Qty'
'' '' ''.
_append_fieldcat 'TESTOUT' '' '' 'Test Out Qty' 'Test Out Qty'
'Test Out Qty'
'' '' ''.
_append_fieldcat 'FULLREEL' '' '' 'Full Reel Qty' 'Full Reel Qty'
'Full Reel Qty'
'' '' ''.
_append_fieldcat 'PARTIAL' '' '' 'Partial Qty' 'Partial Qty'
'Partial Qty'
'' '' ''.
_append_fieldcat 'REJQTY' '' '' 'Reject Qty' 'Reject Qty' 'Reject Qty'
'' '' ''.
**003
**007
_append_fieldcat 'ZZATOAT' '' '' 'A TO AT' 'A TO AT' 'A TO AT'
'' '' ''.
_append_fieldcat 'ZZATTOA' '' '' 'AT TO A' 'AT TO A' 'AT TO A'
'' '' ''.
**Add start of DEVK921621
_append_fieldcat 'LINE5' '' '' 'Customer PR#' 'Customer PR#'
'Customer PR #' '' '' ''.
**Add end of DEVK921621
_append_fieldcat 'BSTKD' '' '' 'Customer PO#' 'Customer PO#'
'Customer PO #' '' '' ''.
*start 014 "DEVK921503
_append_fieldcat 'FABLOT1' '' '' 'Fablot 1' 'Fablot 1'
'Fablot 1' '' '' ''.
*end 014 "DEVK921503
* #DEVK922257 Begin by wei_zhu
* if ch_fab = 'X'.
* _append_fieldcat 'FAB_LOT' '' '' 'NVIDIA Batch Number/ Fab Lot #'
* 'NVIDIA Batch Number/ Fab Lot #'
* 'NVIDIA Batch Number/ Fab Lot #'
* '' '' ''.
* endif.
* #DEVK922257 End by wei_zhu
*start 015 "DEVK921524
* #DEVK922257 Begin by wei_zhu
* if ch_slot = 'X'.
* #DEVK922257 End by wei_zhu
_append_fieldcat 'POSNR' '' '' 'DN Item' 'DN Item'
'Delivery Note Item' '' '' ''.
_append_fieldcat 'CHARG' '' '' 'Batch' 'Batch'
'Batch' '' '' ''.
_append_fieldcat 'LFIMG' '' '' 'Ship Out Qty' 'Ship Out Qty'
'Ship Out Quantity' '' '' ''.
_append_fieldcat 'SUBLOT' '' '' 'Sub Lot' 'Sub Lot'
'Sub Lot' '' '' ''.
* #DEVK922257 Begin by wei_zhu
* endif.
* #DEVK922257 Begin by wei_zhu
*end 015 "DEVK921524
*start of 017 "DEVK921665
_append_fieldcat 'WIRE_NO' '' '' 'No. Wires' 'No. Wires'
'Number of Wires' '' '' ''.
_append_fieldcat 'WIRE_COUNT' '' '' 'Wire Co.' 'Wires Count'
'Wires Count' '' '' ''.
*end of 017 "DEVK921665
**007
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* I_PROGRAM_NAME = REPID
* I_INTERNAL_TABNAME = 'DTAB'
* I_INCLNAME = REPID
* CHANGING
* CT_FIELDCAT = FIELDCAT
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3.
endform. " CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form send_mail_via_sap
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form send_mail_via_sap using fname type c
changing p_subrc like sy-subrc.
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 p_subrc.
if p_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 p_subrc.
endif.
endform. " send_mail_via_sap
*&---------------------------------------------------------------------*
*& Form send_mail_attachment_sap
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_G_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 transform_file_to_attachment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_G_SUBRC text
*----------------------------------------------------------------------*
form transform_file_to_attachment changing p_subrc like sy-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_attachment
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form f4_for_variant .
**Display variant selection dialog box
call function 'REUSE_ALV_VARIANT_F4'
exporting
is_variant = g_disp_var
i_save = g_save
* it_default_fieldcat =
importing
e_exit = g_exit
es_variant = gx_disp_var
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.
p_vari = gx_disp_var-variant.
endif.
endif.
endform. " F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*& Form PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form pai_of_selection_screen .
*Checks whether a display variant exists
if not p_vari is initial.
move g_disp_var to gx_disp_var.
move p_vari to gx_disp_var-variant.
call function 'REUSE_ALV_VARIANT_EXISTENCE'
exporting
i_save = g_save
changing
* cs_variant = gx_variant.
cs_variant = gx_disp_var.
* g_variant = gx_variant.
g_disp_var = gx_disp_var.
else.
perform variant_init.
endif.
*Check if the current date is the first day of the month
* DEVK919540
* DEVK919559
* begin
if s_wadat is initial.
call function 'HR_JP_MONTH_BEGIN_END_DATE'
exporting
iv_date = sy-datum
importing
ev_month_begin_date = l_date1.
if sy-datum = l_date1.
call function 'J_1H_CAL_DATE_IN_INTERVAL'
exporting
date = l_date1
days = 0
months = 1
signum = '-'
years = 0
importing
calc_date = l_date2.
move: 'I' to s_wadat-sign,
'BT' to s_wadat-option,
l_date2 to s_wadat-low,
l_date1 to s_wadat-high.
append s_wadat.
else. "DEVK919567
move: 'I' to s_wadat-sign,
'BT' to s_wadat-option,
l_date1 to s_wadat-low,
sy-datum to s_wadat-high.
append s_wadat.
endif. " The current day is the first of the month
endif.
**** DEVK919560 end
endform. " PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*& Form variant_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form variant_init .
clear g_variant.
g_variant-report = g_repid.
g_disp_var-report = sy-repid.
g_disp_var-username = sy-uname.
endform. " variant_init
*&--------------------------------------------------------------------*
*& Form get_alv_variant_detail
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_VARIANT text
* -->P_FIELDCAT text
* -->PS_LAYOUT text
* -->PT_FCAT_SAVtext
* -->PT_SORT_SAVtext
* -->PT_FILTER_Stext
* -->PS_LAYOUT_Stext
*---------------------------------------------------------------------*
form get_alv_variant_detail
using p_variant
p_fieldcat type slis_t_fieldcat_alv
ps_layout
changing pt_fcat_sav type any table
pt_sort_sav type any table
pt_filter_sav type any table
ps_layout_sav.
data: lt_fcat_def type kkblo_fieldcat occurs 0 with header line.
data: lt_fcat_sav type kkblo_fieldcat occurs 0 with header line.
data: lt_sort type kkblo_sortinfo occurs 0 with header line.
data: lt_filter type kkblo_filter occurs 0 with header line.
data: lt_layout type kkblo_layout.
data: lt_fieldcat type slis_fieldcat_alv.
refresh: pt_fcat_sav, pt_sort_sav, pt_filter_sav.
clear ps_layout_sav.
loop at p_fieldcat into lt_fieldcat.
move-corresponding lt_fieldcat to lt_fcat_def.
append lt_fcat_def.
endloop.
move-corresponding ps_layout to lt_layout.
call function 'LT_FC_LOAD'
exporting
* I_TOOL = 'LT'
is_variant = p_variant
i_tabname = 'MASTER'
* I_TABNAME_SLAVE =
importing
et_fieldcat = lt_fcat_sav[]
et_sort = lt_sort[]
et_filter = lt_filter[]
changing
cs_layout = lt_layout
ct_default_fieldcat = lt_fcat_def[]
exceptions
fc_not_complete = 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.
else.
pt_fcat_sav[] = lt_fcat_sav[].
pt_sort_sav[] = lt_sort[].
pt_filter_sav[] = lt_filter[].
move-corresponding lt_layout to ps_layout_sav.
endif.
endform. " GET_ALV_VARIANT_DETAIL
*&---------------------------------------------------------------------*
*& Form generate_xls
*&---------------------------------------------------------------------*
* generate a csv text file
*----------------------------------------------------------------------*
* -->P_G_FNAME text
* -->P_GT_FCAT_SAVE[] text
*----------------------------------------------------------------------*
form generate_xls using p_fname type c.
data: hextab(1) type c, len type i,
l_line(1500) type c.
class cl_abap_char_utilities definition load.
data: wa like gt_fcat_sav,
fc like line of fieldcat,
fld(40) type c.
field-symbols: <ff> type any.
hextab = cl_abap_char_utilities=>horizontal_tab.
open dataset p_fname for output
in text mode encoding default .
if sy-subrc <> 0.
write 'Fail to generate data file!'.
return.
endif.
clear l_line.
sort gt_fcat_sav by col_pos.
sort fieldcat by col_pos.
*User choose a display variant
if not g_disp_var-variant is initial.
loop at gt_fcat_sav into wa where no_out <> 'X'.
len = strlen( l_line ).
concatenate '"' wa-seltext_l '"' ',' into l_line+len.
at last.
*remove extra comma
len = strlen( l_line ) - 1.
write space to l_line+len.
endat.
endloop.
else.
**user default fieldcat
loop at fieldcat into fc.
len = strlen( l_line ).
concatenate '"' fc-seltext_m '"' ',' into l_line+len.
at last.
*remove extra comma
len = strlen( l_line ) - 1.
write space to l_line+len.
endat.
endloop.
endif.
* LEN = LEN - 1.
* LEN = STRLEN( L_LINE ) - 1.
* WRITE SPACE TO L_LINE+LEN.
transfer l_line to p_fname.
clear l_line.
* output all data in itab
loop at dtab.
** user chooses a display variant
if not g_disp_var-variant is initial.
loop at gt_fcat_sav into wa where no_out <> 'X'.
assign component wa-fieldname of structure dtab to <ff>.
len = strlen( l_line ).
fld = <ff>. condense fld.
if fld cs ','.
replace all occurrences of ',' in fld with space.
endif.
concatenate '"' fld '"' ',' into l_line+len.
at last.
*remove extra comma
len = strlen( l_line ) - 1.
write space to l_line+len.
endat.
endloop.
else.
** use default fieldcat
loop at fieldcat into fc.
assign component fc-fieldname of structure dtab to <ff>.
len = strlen( l_line ).
fld = <ff>. condense fld.
if fld cs ','.
replace all occurrences of ',' in fld with space.
* " '","'.
endif.
concatenate '"' fld '"' ',' into l_line+len.
at last.
*remove extra comma
len = strlen( l_line ) - 1.
write space to l_line+len.
endat.
endloop.
endif.
transfer l_line to p_fname.
clear l_line.
endloop.
close dataset p_fname.
endform. " generate_xls
*&---------------------------------------------------------------------*
*& Form get_batch_info
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_batch_info .
data: lt_class like sclass occurs 0 with header line,
lt_clobjdat like clobjdat occurs 0 with header line,
l_objek like ausp-objek.
data: begin of t_lips occurs 0,
vbeln like lips-vbeln,
posnr like lips-posnr,
matnr like lips-matnr,
werks like lips-werks,
charg like lips-charg,
kdmat like lips-kdmat,
uecha like lips-uecha,
*start 015 ""DEVK921524
lfimg like lips-lfimg, "Delivery Qty/Batch Qty
*end 015 ""DEVK921524
end of t_lips.
data: l_qty type p decimals 2,
l_tabix like sy-tabix.
select * into corresponding fields of table t_lips
from lips
for all entries in itab
where vbeln = itab-vbeln
and uecha <> '000000'.
**get characteristics
loop at itab.
l_tabix = sy-tabix.
loop at t_lips where vbeln = itab-vbeln
and uecha = itab-posnr.
clear: lt_class, lt_clobjdat.
refresh: lt_class, lt_clobjdat.
concatenate t_lips-matnr t_lips-werks t_lips-charg into l_objek.
call function 'CLAF_CLASSIFICATION_OF_OBJECTS'
exporting
classtext = '' "No class text
classtype = '022' "Material classification
object = l_objek "Material#
initial_charact = '' "No initial characteristic
tables
t_class = lt_class
t_objectdata = lt_clobjdat
exceptions
others = 4.
if sy-subrc = 0.
read table lt_clobjdat with key atnam = 'TESTOUT'.
if sy-subrc = 0.
replace ',' with space into lt_clobjdat-ausp1.
condense lt_clobjdat-ausp1 no-gaps.
l_qty = lt_clobjdat-ausp1.
itab-testout = l_qty + itab-testout.
endif.
read table lt_clobjdat with key atnam = 'PACKTYPE'.
if sy-subrc = 0.
if lt_clobjdat-ausp1 = 'Reel'.
itab-fullreel = itab-testout.
else.
itab-partial = itab-testout.
endif.
endif.
read table lt_clobjdat with key atnam = 'ASMOUT'.
if sy-subrc = 0.
replace ',' with space into lt_clobjdat-ausp1.
condense lt_clobjdat-ausp1 no-gaps.
l_qty = lt_clobjdat-ausp1.
itab-assout = l_qty + itab-assout.
endif.
* READ TABLE lt_clobjdat WITH KEY atnam = 'TESTIN'.
* IF sy-subrc = 0.
* itab-testin = lt_clobjdat-ausp1.
* ENDIF.
read table lt_clobjdat with key atnam = 'REJECTQTY'.
if sy-subrc = 0.
replace ',' with space into lt_clobjdat-ausp1.
condense lt_clobjdat-ausp1 no-gaps.
l_qty = lt_clobjdat-ausp1.
itab-rejqty = l_qty + itab-rejqty.
endif.
*start 015 ""DEVK921524
* #DEVK922257 Begin by wei_zhu
* if ch_slot = 'X'.
* #DEVK922257 End by wei_zhu
read table lt_clobjdat with key atnam = 'LOTTRAVELLER'.
if sy-subrc = 0.
wa_dtab-sublot = lt_clobjdat-ausp1.
endif.
move-corresponding itab to wa_dtab.
wa_dtab-lfimg = t_lips-lfimg.
wa_dtab-charg = t_lips-charg.
wa_dtab-wire_count = wa_dtab-wire_no * wa_dtab-lfimg."DEVK921665
append wa_dtab.
clear wa_dtab.
endif.
*end 015 ""DEVK921524
* #DEVK922257 Begin by wei_zhu
* endif.
* #DEVK922257 End by wei_zhu
endloop.
modify itab index l_tabix.
endloop.
endform. " get_batch_info
*&---------------------------------------------------------------------*
*& Form get_prod_order_sublot
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
* #DEVK922257 Begin
form get_prod_order_sublot .
data: l_dbconname like dbcon-con_name.
data: l_aufnr like aufk-aufnr.
data: l_werks like t001w-werks.
data: l_subrc like sy-subrc.
data: l_dbopen like sy-subrc.
data: l_aufnr2 like aufk-aufnr.
data: begin of gt_werks occurs 0,
werks like t001w-werks, "Plant
end of gt_werks.
ranges: lt_werks for LIPS-WERKS. "Plant
select werks into corresponding fields of table gt_werks
from t001w
where werks in s_werks
*begin #DEVK922186
and ( werks = '3100' or werks = '3200').
*end #DEVK922186
lt_werks-sign = 'I'.
lt_werks-option = 'EQ'.
loop at gt_werks.
lt_werks-low = gt_werks-werks.
append lt_werks.
endloop.
refresh: gt_sql_query_046A.
l_dbopen = 99.
clear l_dbconname.
sort t_po by aufnr.
if l_dbopen ne 0.
loop at lt_werks.
perform check_dbcon using lt_werks-low
changing l_dbconname
l_subrc.
perform connect_dbcon using l_dbconname
changing l_subrc.
l_dbopen = l_subrc.
clear l_subrc.
loop at t_po .
at new aufnr.
l_aufnr = t_po-aufnr.
shift l_aufnr left deleting leading '0'.
clear l_subrc.
perform mes_extract_data_046A using l_aufnr
changing l_subrc.
do.
clear gt_sql_query_046A.
mes_fetch_data gt_sql_query_046a l_subrc c46A.
if l_subrc ne 0.
exit.
else.
append gt_sql_query_046A.
endif.
enddo.
mes_close_cursor c46A l_subrc.
**********************************************************
* * Retrieve Out Qty information
**********************************************************
clear l_subrc.
perform mes_extract_data_016 using l_aufnr
changing l_subrc.
do.
clear gt_sql_query_016.
mes_fetch_data gt_sql_query_016 l_subrc c16.
if l_subrc ne 0.
exit.
else.
append gt_sql_query_016.
endif.
enddo.
mes_close_cursor c16 l_subrc.
**********************************************************
* * Retrieve Reject Qty information
**********************************************************
clear l_subrc.
perform mes_extract_data_046b using l_aufnr
changing l_subrc.
do.
clear gt_sql_query_046b.
mes_fetch_data gt_sql_query_046b l_subrc c46b.
if l_subrc ne 0.
exit.
else.
append gt_sql_query_046b.
endif.
enddo.
mes_close_cursor c46b l_subrc.
*
endat.
endloop.
* mes_close_cursor c46A l_subrc.
if l_dbopen eq 0.
perform disconnect_dbcon using l_dbconname
changing l_subrc.
endif.
endloop.
endif.
endform. "get_prod_order_sublot
* #DEVK922257 End
*&---------------------------------------------------------------------*
*& Form get_combine_lot_detail
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
* Begin #DEVK922169
form get_combine_lot_detail.
data: l_dbconname like dbcon-con_name.
data: l_aufnr like aufk-aufnr.
data: l_werks like t001w-werks.
data: l_subrc like sy-subrc.
data: l_dbopen like sy-subrc.
data: begin of gt_werks occurs 0,
werks like t001w-werks, "Plant
end of gt_werks.
ranges: lt_werks for LIPS-WERKS. "Plant
select werks into corresponding fields of table gt_werks
from t001w
where werks in s_werks
*begin #DEVK922186
and ( werks = '3100' or werks = '3200').
*end #DEVK922186
lt_werks-sign = 'I'.
lt_werks-option = 'EQ'.
loop at gt_werks.
lt_werks-low = gt_werks-werks.
append lt_werks.
endloop.
refresh: gt_sql_query_046.
*
* do 2 times.
* case sy-index.
* when 1.
* l_werks = c_werks_dg.
* when 2.
* l_werks = c_werks_dg2.
* when others.
* exit.
* endcase.
l_dbopen = 99.
clear l_dbconname.
if l_dbopen ne 0.
loop at lt_werks.
perform check_dbcon using lt_werks-low
changing l_dbconname
l_subrc.
perform connect_dbcon using l_dbconname
changing l_subrc.
l_dbopen = l_subrc.
clear l_subrc.
perform mes_extract_data_046
changing l_subrc.
do.
clear gt_sql_query_046.
mes_fetch_data gt_sql_query_046 l_subrc c46.
if l_subrc ne 0.
exit.
else.
append gt_sql_query_046.
endif.
enddo.
mes_close_cursor c46 l_subrc.
if l_dbopen eq 0.
perform disconnect_dbcon using l_dbconname
changing l_subrc.
endif.
endloop.
endif.
endform. "get_combine_lot_detail
* End #DEVK922169
*&--------------------------------------------------------------------*
*& Form FILE_GET_NAME
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_LOG_NAME text
* -->P_DIR_NAME text
* -->P_PHY_NAME text
* -->P_PATH_FILEtext
*---------------------------------------------------------------------*
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_info
*&---------------------------------------------------------------------*
* get ttl carton by each DN,
* ttl weight by each DN
*
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_info .
data: pri_wa like itab, "previous line
l_lifnr like vbpa-lifnr.
sort itab by vbeln .
loop at itab.
** different DN
if pri_wa-vbeln <> itab-vbeln.
*total weight and total carton by DN
*exclude carton deleted
select sum( brgew ) count( * )
into (itab-ttl_wgt, itab-ttl_cnt)
from vekp
where vpobjkey = itab-vbeln
and status <> '0060'.
endif.
modify itab transporting ttl_wgt ttl_cnt .
pri_wa = itab.
endloop.
endform. " get_info
*&---------------------------------------------------------------------*
*& Form GET_FAB_LOT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_fab_lot .
data l_objectid like cdhdr-objectid.
data:begin of i_class occurs 5.
include structure sclass. "^_n_516772
data:end of i_class.
data:begin of i_clobjdat occurs 50.
include structure clobjdat.
data:end of i_clobjdat.
data:ch_object like ausp-objek, "Object Key for Classification
ch_classtype like klah-klart, "classtype batch
begin of mcha_object, "Object Key MCHA
matnr like mcha-matnr,
werks like mcha-werks,
charg like mcha-charg,
end of mcha_object,
begin of mch1_object, "Object Key MCH1
matnr like mch1-matnr,
charg like mch1-charg,
end of mch1_object,
ch_table like tcla-obtab. "object table batch
select single rsnum
into afko-rsnum
from afko
where aufnr = itab-aufnr.
clear resb.
select single charg matnr bdmng
into (resb-charg,resb-matnr,resb-bdmng)
from resb
where rsnum = afko-rsnum
and aufnr = itab-aufnr
and werks = itab-dwerk
and matkl = 'WAFER'.
if sy-subrc eq 0.
if resb-charg ne space.
* read classification depending on batch level
clear ch_object.
* IF CH_LEVEL EQ SPACE.
ch_classtype = '022'.
ch_table = 'MCHA'.
mcha_object-matnr = resb-matnr. "Concatenate Object Key
mcha_object-werks = itab-dwerk.
mcha_object-charg = resb-charg.
move mcha_object to ch_object.
call function 'CLAF_CLASSIFICATION_OF_OBJECTS'
exporting
classtype = ch_classtype
features = 'X'
object = ch_object
objecttable = ch_table
tables
t_class = i_class
t_objectdata = i_clobjdat
exceptions
no_classification = 1
no_classtypes = 2.
if sy-subrc = 0.
sort i_clobjdat by zaehl.
read table i_clobjdat with key atnam = 'DB_FL'.
if sy-subrc = 0.
move i_clobjdat-ausp1 to itab-fab_lot.
endif.
endif.
endif.
endif.
endform. " GET_FAB_LOT
*&---------------------------------------------------------------------*
*& Form Z_CONVERT_TEXT_TO_EXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_G_SFILE text
* -->P_G_TFILE text
*----------------------------------------------------------------------*
form z_convert_text_to_excel using p_sfile
p_tfile.
data: l_parm_01 type zbc_conv_txt2exl.
data: lt_error_01 like bapireturn occurs 1 with header line.
l_parm_01-source_file = p_sfile.
* '//H00157/TEMP/GARRY/ZRSD0023D.CSV'.
l_parm_01-target_file = p_tfile.
* '//H00157/TEMP/GARRY/ZRSD0023D.XLS'.
l_parm_01-overwrite = 'X'.
l_parm_01-worksheet = 'Detail'.
l_parm_01-text_type = 'C'.
l_parm_01-header_line = 0.
l_parm_01-format_total = ' '.
call function 'Z_CONVERT_TEXT_TO_EXCEL'
exporting
command_parm = l_parm_01
tables
return = lt_error_01
exceptions
no_source_filename = 1
no_target_filename = 2
others = 3.
endform. " Z_CONVERT_TEXT_TO_EXCEL