ลิขิตฟ้า หรือ จะสู้มานะคน

chon_pro
Location :
สมุทรปราการ Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 12 คน [?]




ผมแค่อยากเขียน บันทึกเกี่ยวกับข้อมูลการทำงานของผมต่างๆ เพื่อเก็บเอาไว้ใช้ดูเวลาที่ผมหลงลืม และเพื่อเป็นประโยชน์ กับน้องๆๆๆ ทั้งหลาย
loaocat

Stat Counter :
Group Blog
 
All Blogs
 
Friends' blogs
[Add chon_pro's blog to your web]
Links
 

 
ZPP264 booking test lens to Sales Stock

report zpp264 no standard page heading
line-count 50(2) line-size 145
message-id zrtc.

tables: vbak,
vbap,
vbuk,
vbup.

data: messtab like bdcmsgcoll occurs 0 with header line,
bdcdata like bdcdata occurs 0 with header line.

data: begin of iexcel occurs 0,
item(5) type c,
matnr like vbap-matnr,
desc(40) type c,
qty(5) type c,
remark(20) type c,
end of iexcel.

data: begin of ivbak occurs 0,
vbeln like vbak-vbeln,
erdat like vbak-erdat,
auart like vbak-auart,
end of ivbak.

data: begin of ivbap occurs 0,
matnr like vbap-matnr,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
auart like vbak-auart,
end of ivbap.


data: begin of itab occurs 0,
auart like vbak-auart,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
qty(5) type c,
item(5) type c,
desc(40) type c,
remark(20) type c,
end of itab.

data: begin of itab_err occurs 0,
auart like vbak-auart,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
qty(5) type c,
item(5) type c,
desc(40) type c,
remark(20) type c,
end of itab_err.

data: begin of etab occurs 0,
item(5) type c,
matnr like vbap-matnr,
desc(40) type c,
qty(5) type c,
remark(20) type c,
end of etab.
*** Excel output file **************
data: begin of ohead occurs 0,
f1(10) type c,
f2(20) type c,
f3(40) type c,
f4(10) type c,
f5(20) type c,
end of ohead.

data: begin of ohead_xls occurs 0,
f1(10) type c,
f2(20) type c,
f3(40) type c,
f4(10) type c,
f5(20) type c,
end of ohead_xls.

*******************************
selection-screen begin of block 0 with frame title text-000.

select-options: s_vbeln for vbak-vbeln.
selection-screen skip 1.
parameters: p_erdat like vbak-erdat.
selection-screen end of block 0.

selection-screen begin of block 2 with frame title text-001.
selection-screen skip 1.

parameters: p_file1 like rlgrap-filename
default 'c:zpp264.txt'
obligatory.

parameters: r_zro radiobutton group grp1,
r_zdi radiobutton group grp1.
selection-screen skip 1.



parameters: o_file1 like rlgrap-filename
default 'c:zpp264_no_sales_found.xls'
obligatory.

parameter: bdc_mode(1) type c default 'N' obligatory.

selection-screen end of block 2.

*** top-of-page ****
top-of-page.

call function 'Z_STANDARD_HEADING_OF_RTC'
exporting
heading = 'List of Error Item posted to Sales Stock'
prog = 'ZPP264'
exceptions
others = 1.

perform column_header.

**** initialization ****.
initialization.
p_erdat = sy-datum - 180.

at selection-screen on value-request for p_file1.
perform get_text_filename using p_file1.

at selection-screen on value-request for o_file1.
perform get_text_filename using o_file1.


start-of-selection.
clear: ivbak,
iexcel.
refresh: ivbak,
iexcel.


perform upload_text_file using p_file1.
if not iexcel[] is initial.

perform get_vbak_data.
perform get_sale_item_data.
perform process_data.

if not itab[] is initial.
if r_zro = 'X'.
perform bdc_process_zro.
if not etab[] is initial.
perform create_excel_field_name.
perform write_out_execl_format.
endif.
else.

clear: itab_err.
refresh: itab_err.
perform bdc_process_zdi_521e.
if not etab[] is initial.
perform bdc_process_zdi_521.
endif.

endif.

else. "No selected item found for Input file.

if not etab[] is initial.
perform create_excel_field_name.
perform write_out_execl_format.
endif.

endif.

if not itab_err[] is initial.
loop at itab_err.

write: /(01) sy-vline no-gap,
(10) itab_err-item no-gap,
(01) sy-vline no-gap,
(10) itab_err-auart no-gap,
(01) sy-vline no-gap,
(15) itab_err-vbeln no-gap,
(01) sy-vline no-gap,
(10) itab_err-posnr no-gap,
(01) sy-vline no-gap,
(20) itab_err-matnr no-gap,
(01) sy-vline no-gap,
(40) itab_err-desc no-gap,
(01) sy-vline no-gap,
(10) itab_err-qty no-gap,
(01) sy-vline no-gap,
(20) itab_err-remark,
(01) sy-vline no-gap.
at last.
perform end_of_report.
endat.
endloop.
endif.

endif.

end-of-selection.

*&---------------------------------------------------------------------*
*& Form get_text_filename
*&---------------------------------------------------------------------*
form get_text_filename using p_file.
call function 'WS_FILENAME_GET'
exporting
mask = ',*.*,*.*.'
mode = 'O'
def_path = 'c:'
importing
filename = p_file
exceptions
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.

endform. " get_text_filename
*&---------------------------------------------------------------------*
*& Form upload_text_file
*&---------------------------------------------------------------------*
form upload_text_file using p_file.
call function 'WS_UPLOAD'
exporting
filename = p_file
filetype = 'DAT'
tables
data_tab = iexcel
exceptions
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
others = 10.

if sy-subrc <> 0.
message e000 with 'Can not upload text file'.
else.
delete iexcel index 1.
delete iexcel where matnr is initial.
endif.

endform. " upload_text_file
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
form get_vbak_data.

select vbeln erdat auart
into (ivbak-vbeln,
ivbak-erdat,
ivbak-auart)
from vbak
where vbeln in s_vbeln
and erdat ge p_erdat.
select single lfstk into vbuk-lfstk
from vbuk
where vbeln = ivbak-vbeln
and lfstk ne 'C'.
if sy-subrc = 0.
append ivbak.
clear ivbak.
endif.
endselect.

endform.
*&---------------------------------------------------------------------*
*& Form process_data
*&---------------------------------------------------------------------*
form process_data.
clear: itab, etab.
refresh: itab, etab.

loop at iexcel.
read table ivbap with key matnr = iexcel-matnr.
if sy-subrc = 0.
itab-vbeln = ivbap-vbeln.
itab-posnr = ivbap-posnr.
itab-matnr = ivbap-matnr.
itab-qty = iexcel-qty.
itab-item = iexcel-item.
itab-desc = iexcel-desc.
itab-remark = iexcel-remark.
itab-auart = ivbap-auart.
append itab.
clear itab.
else.
etab-matnr = iexcel-matnr.
etab-qty = iexcel-qty.
etab-item = iexcel-item.
etab-desc = iexcel-desc.
etab-remark = iexcel-remark.
append etab.
clear etab.

endif.
endloop.

endform. " process_data
*&---------------------------------------------------------------------*
*& Form get_sale_item_data
*&---------------------------------------------------------------------*
form get_sale_item_data.

if not ivbak[] is initial.
clear: ivbap.
refresh: ivbap.
loop at ivbak.
select vbeln posnr matnr into (vbap-vbeln,
vbap-posnr,
vbap-matnr)
from vbap
where vbeln = ivbak-vbeln.
select single * from vbup
where vbeln = vbap-vbeln
and posnr = vbap-posnr
and lfsta <> 'C'.
if sy-subrc = 0.
ivbap-vbeln = vbap-vbeln.
ivbap-posnr = vbap-posnr.
ivbap-matnr = vbap-matnr.
shift ivbap-matnr left deleting leading '0'.
ivbap-auart = ivbak-auart.
append ivbap.
clear ivbap.
endif.
endselect.
endloop.

else.
message e000 with
'No Sales Order found in VBAK according to your selection'.
endif.

endform. " get_sale_item_data
*&---------------------------------------------------------------------*
*& Form bdc_process
*&---------------------------------------------------------------------*
form bdc_process_zro.

clear: itab_err.
refresh: itab_err.

sort itab by auart vbeln posnr.
loop at itab.
perform bdc_for_zro_zros.

endloop.



endform. " bdc_process
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0412 text *
* -->P_0413 text *
*----------------------------------------------------------------------*
form bdc_dynpro tables bdcdata structure bdcdata
using program
dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
clear bdcdata.

endform. " BDC_DYNPRO

*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0417 text *
* -->P_0418 text *
*----------------------------------------------------------------------*
form bdc_field tables bdcdata structure bdcdata
using fnam
fval.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.

endform. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form bdc_for_zro_zros
*&---------------------------------------------------------------------*
form bdc_for_zro_zros.
clear bdcdata.
refresh bdcdata.

perform bdc_dynpro tables bdcdata
using 'SAPMM07M' '0400'.

perform bdc_field tables bdcdata
using 'RM07M-BWARTWA'
'521'.

perform bdc_field tables bdcdata
using 'RM07M-SOBKZ'
'E'.

perform bdc_field tables bdcdata
using 'XFULL'
' '.

perform bdc_field tables bdcdata
using 'RM07M-WERKS'
'0006'.

perform bdc_field tables bdcdata
using 'RM07M-LGORT'
'0050'.

perform bdc_field tables bdcdata
using 'BDC_OKCODE' '/00'.


perform bdc_dynpro tables bdcdata
using 'SAPMM07M' '0421'.

perform bdc_field tables bdcdata
using 'MSEGK-MAT_KDAUF'
itab-vbeln.

perform bdc_field tables bdcdata
using 'MSEGK-MAT_KDPOS'
itab-posnr.

perform bdc_field tables bdcdata
using 'MSEG-MATNR(01)'
itab-matnr.

perform bdc_field tables bdcdata
using 'MSEG-ERFMG(01)'
itab-qty.

perform bdc_field tables bdcdata
using 'BDC_OKCODE' '=BU'.


call transaction 'MB1C' using bdcdata mode bdc_mode
update 'S'.
if sy-subrc <> 0.
move-corresponding itab to itab_err.
append itab_err.
clear itab_err.
endif.

endform. " bdc_for_zro_zros
*&---------------------------------------------------------------------*
*& Form create_excel_field_name
*&---------------------------------------------------------------------*
form create_excel_field_name.
clear ohead.
refresh ohead.

ohead-f1 = 'Item'.
ohead-f2 = 'Material'.
ohead-f3 = 'Desc.'.
ohead-f4 = 'Qty'.
ohead-f5 = 'Remark'.

append ohead.
clear ohead.


endform.
*&---------------------------------------------------------------------*
*& Form write_out_execl_format
*&---------------------------------------------------------------------*
form write_out_execl_format.

call function 'WS_DOWNLOAD'
exporting
filename = o_file1
filetype = 'DAT'
tables
data_tab = ohead
exceptions
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
customer_error = 7
others = 8.

call function 'WS_DOWNLOAD'
exporting
filename = o_file1
filetype = 'DAT'
mode = 'A'
tables
data_tab = etab
exceptions
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
customer_error = 7
others = 8.

endform.
*&---------------------------------------------------------------------*
*& Form move_header_vline
*&---------------------------------------------------------------------*
form move_header_vline.

* move: ';' to ohead-vline01,
* ';' to ohead-vline02,
* ';' to ohead-vline03,
* ';' to ohead-vline04,
* ';' to ohead-vline05,
* ';' to ohead-vline06.

endform. " move_header_vline
*&---------------------------------------------------------------------*
*& Form move_vline
*&---------------------------------------------------------------------*
form move_vline.
* move: ';' to ohead_xls-vline01,
* ';' to ohead_xls-vline02,
* ';' to ohead_xls-vline03,
* ';' to ohead_xls-vline04,
* ';' to ohead_xls-vline05,
* ';' to ohead_xls-vline06.

endform. " move_vline
*&---------------------------------------------------------------------*
*& Form column_header
*&---------------------------------------------------------------------*
form column_header.

write: /(01) sy-vline no-gap,
(10) 'Item' no-gap,
(01) sy-vline no-gap,
(10) 'Type' no-gap,
(01) sy-vline no-gap,
(15) 'Sales Order' no-gap,
(01) sy-vline no-gap,
(10) 'Sales Item' no-gap,
(01) sy-vline no-gap,
(20) 'Material no.' no-gap,
(01) sy-vline no-gap,
(40) 'Material Description' no-gap,
(01) sy-vline no-gap,
(10) 'Qty' no-gap,
(01) sy-vline no-gap,
(21) 'Remark' no-gap,
(01) sy-vline no-gap.

uline.

endform. " column_header
*&---------------------------------------------------------------------*
*& Form end_of_report
*&---------------------------------------------------------------------*
form end_of_report.

call function 'Z_STANDARD_END_OF_REPORT'
exceptions
others = 1.

endform. " end_of_report
*&---------------------------------------------------------------------*
*& Form bdc_process_zdi
*&---------------------------------------------------------------------*
form bdc_process_zdi_521e.

sort itab by auart vbeln posnr.
loop at itab.
perform bdc_for_zdi.

endloop.

endform. " bdc_process_zdi
*&---------------------------------------------------------------------*
*& Form bdc_for_zdi
*&---------------------------------------------------------------------*
form bdc_for_zdi.
clear bdcdata.
refresh bdcdata.

perform bdc_dynpro tables bdcdata
using 'SAPMM07M' '0400'.

perform bdc_field tables bdcdata
using 'RM07M-BWARTWA'
'521'.

perform bdc_field tables bdcdata
using 'RM07M-SOBKZ'
'E'.

perform bdc_field tables bdcdata
using 'XFULL'
' '.

perform bdc_field tables bdcdata
using 'RM07M-WERKS'
'0006'.

perform bdc_field tables bdcdata
using 'RM07M-LGORT'
'0050'.

perform bdc_field tables bdcdata
using 'BDC_OKCODE' '/00'.


perform bdc_dynpro tables bdcdata
using 'SAPMM07M' '0421'.

perform bdc_field tables bdcdata
using 'MSEGK-MAT_KDAUF'
itab-vbeln.

perform bdc_field tables bdcdata
using 'MSEGK-MAT_KDPOS'
itab-posnr.

perform bdc_field tables bdcdata
using 'MSEG-MATNR(01)'
itab-matnr.

perform bdc_field tables bdcdata
using 'MSEG-ERFMG(01)'
itab-qty.

perform bdc_field tables bdcdata
using 'BDC_OKCODE' '=BU'.


call transaction 'MB1C' using bdcdata mode bdc_mode
update 'S'.
if sy-subrc <> 0.
move-corresponding itab to itab_err.
append itab_err.
clear itab_err.
endif.

endform. " bdc_for_zdi
*&---------------------------------------------------------------------*
*& Form bdc_process_zdi_521
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form bdc_process_zdi_521.
sort etab by matnr.
loop at etab.
perform bdc_for_zdi_521.

endloop.

endform. " bdc_process_zdi_521
*&---------------------------------------------------------------------*
*& Form bdc_for_zdi_521
*&---------------------------------------------------------------------*
form bdc_for_zdi_521.
clear bdcdata.
refresh bdcdata.

perform bdc_dynpro tables bdcdata
using 'SAPMM07M' '0400'.

perform bdc_field tables bdcdata
using 'RM07M-BWARTWA'
'521'.

perform bdc_field tables bdcdata
using 'RM07M-SOBKZ'
' '.

perform bdc_field tables bdcdata
using 'XFULL'
' '.

perform bdc_field tables bdcdata
using 'RM07M-WERKS'
'0006'.

perform bdc_field tables bdcdata
using 'RM07M-LGORT'
'0050'.

perform bdc_field tables bdcdata
using 'BDC_OKCODE' '/00'.


perform bdc_dynpro tables bdcdata
using 'SAPMM07M' '0421'.

* perform bdc_field tables bdcdata
* using 'MSEGK-MAT_KDAUF'
* itab-vbeln.
*
* perform bdc_field tables bdcdata
* using 'MSEGK-MAT_KDPOS'
* itab-posnr.

perform bdc_field tables bdcdata
using 'MSEG-MATNR(01)'
etab-matnr.

perform bdc_field tables bdcdata
using 'MSEG-ERFMG(01)'
etab-qty.

perform bdc_field tables bdcdata
using 'BDC_OKCODE' '=BU'.


call transaction 'MB1C' using bdcdata mode bdc_mode
update 'S'.
if sy-subrc <> 0.
move-corresponding etab to itab_err.
append itab_err.
clear itab_err.
endif.




Create Date : 07 กันยายน 2552
Last Update : 7 กันยายน 2552 10:58:03 น. 0 comments
Counter : 385 Pageviews.

ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
  *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 
 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.