|
|
June 25 佛说前世的五百次回眸才换来今生的擦肩而过 这句话是从这个故事来的吧: 有个年轻美丽的女孩,出身豪门,家产丰厚,又多才多艺,*子过得很好。 媒婆也快把她家的门槛给踩烂了,但她一直不想结婚,因为她觉得还没见到她真正想要嫁的那个男孩。 直到有一天,她去一个庙会散心,于万千拥挤的人群中,看见了一个年轻的男人,不用多说什么,反正女孩觉得那个男人就是她苦苦等待的结果了。 可惜,庙会太挤了, 她无法走到那个男人的身边,就这样眼睁睁的看着那个男人消失在人群中。 后来的两年里,女孩四处去寻找那个男人,但这人就像蒸发了一样,无影无踪。 女孩每天都向佛祖祈祷,希望能再见到那个男人。 她的诚心打动了佛祖,佛祖显灵了。 佛祖说:“你想再看到那个男人吗?” 女孩说:“是的!我只想再看他一眼!” 佛祖:”你要放弃你现在的一切,包括爱你的家人和幸福的生活。” 女孩:“我能放弃!” 佛祖:“你还必须修炼五百年道行,才能见他一面。你不后悔么?” 女孩:“我不后悔!” 女孩变成了一块大石头,躺在荒郊野外,四百多年的风吹*晒,苦不堪言,但女孩都觉得没什么,难受的是这四百多年都没看到一个人,看不见一点点希望,这让她都快崩溃了。 最后一年,一个采石队来了,看中了她的巨大,把她凿成一块巨大的条石,运进了城里,他们正在建一座石桥,于是,女孩变成了石桥的护栏。 就在石桥建成的第一天,女孩就看见了,那个她等了五百年的男人! 他行色匆匆,像有什么急事,很快地从石桥的正中走过了,当然,他不会发觉有一块石头正目不转睛地望着他。 男人又一次消失了,再次出现的是佛祖。 佛祖:“你满意了吗?” 女孩:“不!为什么?为什么我只是桥的护栏?如果我被铺在桥的正中,我就能碰到他了,我就能摸他一下!” 佛祖:“你想摸他一下?那你还得修炼五百年!” 女孩:“我愿意!” 佛祖:“你吃了这么多苦,不后悔?” 女孩:“不后悔!” 女孩变成了一棵大树,立在一条人来人往的官道上,这里每天都有很多人经过,女孩每天都在近处观望,但这更难受,因为无数次满怀希望的看见一个人走来,又无数次希望破灭。 不是有前五百年的修炼,相信女孩早就崩溃了! *子一天天的过去,女孩的心逐渐平静了,她知道,不到最后一天,他是不会出现的。 又是一个五百年啊!最后一天,女孩知道他会来了,但她的心中竟然不再激动。 来了!他来了!他还是穿着他最喜欢的白色长衫,脸还是那么俊美,女孩痴痴地望着他。 这一次,他没有急匆匆的走过,因为,天太热了。 他注意到路边有一棵大树,那浓密的树荫很诱人,休息一下吧,他这样想。 他走到大树脚下,靠着树根,微微的闭上了双眼,他睡着了。 女孩摸到他了!他就靠在她的身边! 但是,她无法告诉他,这千年的相思。她只有尽力把树荫聚集起来,为他挡住毒辣的阳光。 千年的柔情啊! 男人只是小睡了一刻,因为他还有事要办,他站起身来,拍拍长衫上的灰尘,在动身的前一刻,他抬头看了看这棵大树,又微微地抚摸了一下树干,大概是为了感谢大树为他带来清凉吧。 然后,他头也不回地走了!就在他消失在她的视线的那一刻,佛祖又出现了。 佛祖:“你是不是还想做他的妻子?那你还得修炼……” 女孩平静地打断了佛祖的话:“我是很想,但是不必了。” 佛祖:“哦?” 女孩:“这样已经很好了,爱他,并不一定要做他的妻子。” 佛祖:“哦!” 女孩:“他现在的妻子也像我这样受过苦吗?” 佛祖微微地点点头。 女孩微微一笑:“我也能做到的,但是不必了。” 就在这一刻,女孩发现佛祖微微地叹了一口气,或者是说,佛祖轻轻地松了一口气。 女孩有几分诧异,“佛祖也有心事么?” 佛祖的脸上绽开了一个笑容:“因为这样很好,有个男孩可以少等一千年了,他为了能够看你一眼,已经修炼了两千年。” *&---------------------------------------------------------------------* *& Report ZUSD017 *& *&---------------------------------------------------------------------* *& Author : CHUNG NAM INTERNATIONAL CO.,LTD. MICHAELCHOW *& Creation Date : 21.11.2008 *& Program Type : Executable Programs *& Logical DB : [Nil] *& Text Elements *& (Titles&Headers) : [Nil] *& (Selection Texts) : [Nil] *& (Text symbols) : [Nil] *& GUI Status : [Nil] OR [Standard] *& Variants : [Nil] OR Variant *& Message Class : [Nil] *& Description : *& *&---------------------------------------------------------------------* *& Modifications : *& ID Date Programmer Description *& 2008.11.24 Michael chow Update SBI file and create *& So with upload file. *&---------------------------------------------------------------------* REPORT ZUSD017. * Define Screen Container DATA: obj_container TYPE REF TO cl_gui_custom_container. DATA: o_error TYPE REF TO i_oi_error, o_control TYPE REF TO i_oi_container_control, o_document TYPE REF TO i_oi_document_proxy, o_spreadsheet TYPE REF TO i_oi_spreadsheet. * Data declarations. DATA: t_files TYPE filetable, s_files TYPE file_table, v_doc_name TYPE char256, v_changed TYPE int4, v_rcode TYPE int4, t_ranges TYPE soi_range_list, s_ranges TYPE soi_range_item, t_data TYPE soi_generic_table , s_data TYPE soi_generic_item, v_action TYPE int4. DATA: GT_data TYPE soi_generic_table WITH HEADER LINE. data : ORDER_HEADER_IN like BAPISDHD1. data : ORDER_ITEMS_IN like BAPISDITM occurs 0 with header line. data : RETURN like BAPIRET2 occurs 0 with header line. data : ORDER_PARTNERS like BAPIPARNR occurs 0 with header line. DATA : ORDER_KEYS LIKE BAPISDKEY OCCURS 0 WITH HEADER LINE. data : ORDER_SCHEDULES_IN like BAPISCHDL occurs 0 with header line. data : BEGIN OF TAB OCCURS 0, SRNO(4), DOC_TYPE like ORDER_HEADER_IN-dOC_TYPE, SALES_ORG LIKE ORDER_HEADER_IN-SALES_ORG, DISTR_CHAN LIKE ORDER_HEADER_IN-DISTR_CHAN, DIVISION like ORDER_HEADER_IN-DIVISION, * REQ_DATE_H(10), PURCH_DATE(10), PMNTTRMS LIKE ORDER_HEADER_IN-PMNTTRMS, PURCH_NO_C LIKE ORDER_HEADER_IN-PURCH_NO_C, ITM_NUMBER like BAPISDITM-ITM_NUMBER, CUST_MAT22 LIKE BAPISDITM-CUST_MAT22, PLANT LIKE ORDER_ITEMS_IN-PLANT, TARGET_QTY LIKE ORDER_ITEMS_IN-TARGET_QTY, PARTN_ROLE LIKE ORDER_PARTNERS-PARTN_ROLE, PARTN_NUMB LIKE ORDER_PARTNERS-PARTN_NUMB, MATERIAL like BAPISDITM-material, END OF TAB. *data: t_data like alsmex_tabline occurs 0 with header DATA: gd_currentrow type i. data : PURCHASEORDER like ekko-ebeln. Data: tot_rec type i, "Total Records gd_update type i, "Main Table Increement Counter gd_lines type i, "Success Table increement Counter w_textout like t100-text. "VARIABLE TO GET ERRORLOG data : begin of it_success occurs 0, SALESDOCUMENT LIKE BAPIVBELN-VBELN, "PROJECT end of it_success. data : begin of it_error occurs 0, srno(4), err_msg(73) TYPE c, "TO RETREIVE ERROR MESSAGES end of it_error. data : srno(4). DATA : SALESDOCUMENT LIKE BAPIVBELN-VBELN. *selection-screen begin of block b1 with frame. *skip 3. *parameter:p_infile like rlgrap-filename obligatory. *skip 3. *selection-screen end of block b1. * *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile. * PERFORM value_help. start-of-selection. PERFORM Objinit. PERFORM Open_File. PERFORM Process_data. PERFORM Upload_data. * *&---------------------------------------------------------------------* *& Form display_column_headings *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM display_column_headings. WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE. SKIP. WRITE:2 'The following records inserted successfully:'(013). WRITE:/ sy-uline(104). FORMAT COLOR COL_HEADING. WRITE:/(10) 'Sales order '(004), sy-vline. WRITE:/ sy-uline(104). ENDFORM. "display_column_headings *Subroutine to display SUCESS REPORT FORM DISPLAY_SUCESS. FORMAT COLOR COL_NORMAL. LOOP AT it_success. WRITE:/(10) it_success-SALESDOCUMENT, sy-vline,'SO has been created successfully!'. CLEAR it_success. ENDLOOP. WRITE:/ sy-uline(104). REFRESH: it_success. FORMAT COLOR COL_BACKGROUND. ENDFORM. " *DISPLAY_REPORT *&---------------------------------------------------------------------* *& Form errorreport *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM errorreport. LOOP AT it_error. WRITE:/(10) " sy-vline, it_error-SRNO, sy-vline, (40) it_error-err_msg . ENDLOOP. WRITE:/ sy-uline(104). REFRESH: it_error. endform. "errorreport *&---------------------------------------------------------------------* *& Form ERRORHEADINGS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM ERRORHEADINGS. SKIP. WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE. SKIP. WRITE:2 'The following records failed during update:'(008). WRITE:/ sy-uline(104). FORMAT COLOR COL_HEADING. WRITE:/(10) 'ERRORs'(009), sy-vline. WRITE:/ sy-uline(104). FORMAT COLOR COL_NORMAL. ENDFORM. "ERRORHEADINGS FORM ObjInit. CLASS c_oi_errors DEFINITION LOAD. * Create Instance control for container CALL METHOD c_oi_container_control_creator=>get_container_control IMPORTING control = o_control error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. * Create generic container linked to container in screen 100 CREATE OBJECT obj_container EXPORTING container_name = 'CONTAINER' EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5 others = 6. IF sy-subrc <> 0. MESSAGE e208(00) WITH 'Error creating container'. ENDIF. * Establish connection to GUI Control CALL METHOD o_control->init_control EXPORTING r3_application_name = 'Excel Document Container' inplace_enabled = 'X' parent = obj_container IMPORTING error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. * Create Document Proxy CALL METHOD o_control->get_document_proxy EXPORTING document_type = soi_doctype_excel_sheet IMPORTING document_proxy = o_document error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. endform. form open_file. *Call dialog to navigate to file CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING default_extension = '*.xls' file_filter = '*.xls' initial_directory = 'C:\' CHANGING file_table = t_files rc = v_rcode user_action = v_action EXCEPTIONS file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 OTHERS = 4. IF sy-subrc <> 0 . MESSAGE 'Please select SBI upload data (*.xls|*.xlsx)!' TYPE 'S' DISPLAY LIKE 'E'. leave PROGRAM. ENDIF. if v_action NE 0. "If user press "Cancel" button, then quit program. leave program. endif. * Only continue if User hasn't cancelled * CHECK: v_action = 0. data: l type I, P type I. data: v_ext(4) type c. * Determine filename to open Excel document READ TABLE t_files INDEX 1 INTO s_files. IF sy-subrc = 0. l = strlen( s_files-filename ). p = l - 4. v_ext = s_files-filename+p(4). translate v_ext to upper case. if v_ext NE '.XLS' and v_ext NE 'XLSX'. MESSAGE 'Invalid SBI upload files!' TYPE 'S' DISPLAY LIKE 'E'. leave PROGRAM. endif. CONCATENATE 'FILE://' s_files-filename INTO v_doc_name. ELSE. MESSAGE e208(00). ENDIF. "sy-subrc = 0 * Open Spreadsheet in SAPWORKDIR CALL METHOD o_document->open_document EXPORTING open_inplace = 'X' document_title = 'Excel' document_url = v_doc_name no_flush = '' IMPORTING error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. * Open Spreadsheet interface CALL METHOD o_document->get_spreadsheet_interface EXPORTING no_flush = '' IMPORTING sheet_interface = o_spreadsheet error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. * Set selection for 1000 rows CALL METHOD o_spreadsheet->set_selection EXPORTING top = 1 left = 1 rows = '1000' "Max rows columns = '15'. "Max columns * Define Range in spreadsheet CALL METHOD o_spreadsheet->insert_range EXPORTING name = 'SBI' rows = '1000' "Max rows columns = '15' "Max columns no_flush = '' IMPORTING error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. s_ranges-name = 'SBI'. s_ranges-rows = '1000'. "Max rows s_ranges-columns = '15'. APPEND s_ranges TO t_ranges. * Get data CALL METHOD o_spreadsheet->get_ranges_data EXPORTING all = 'X' no_flush = '' IMPORTING contents = t_data error = o_error CHANGING ranges = t_ranges. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF."* Close document * Close the document CALL METHOD o_document->close_document EXPORTING do_save = '' no_flush = '' IMPORTING has_changed = v_changed error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. * Clear Document Resources CALL METHOD o_document->release_document EXPORTING no_flush = '' IMPORTING error = o_error. IF o_error->has_failed = 'X'. CALL METHOD o_error->raise_message EXPORTING type = 'E'. ENDIF. endform. FORM Process_data. CLEAR GT_DATA[]. loop at t_data into s_data. MOVE-CORRESPONDING s_data to GT_DATA. append gt_data. ENDLOOP. sort gt_data by row column. * Get first row retrieved read table gt_data index 1. * Set first row retrieved to current row gd_currentrow = gt_data-row. loop at gt_data. * Reset values for next row if gt_data-row ne gd_currentrow. append tab . clear tab. gd_currentrow = gt_data-row. endif. SHIFT gt_data-VALUE LEFT DELETING LEADING SPACE. case gt_data-column. when '1'. TAB-SRNO = gt_data-value. when '2'. TAB-DOC_TYPE = gt_data-value. when '3'. TAB-SALES_ORG = gt_data-value. when '4'. TAB-DISTR_CHAN = gt_data-value. when '5'. TAB-DIVISION = gt_data-value. * when '0006'. * TAB-REQ_DATE_H = t_data-value. when '6'. TAB-PURCH_DATE = gt_data-value. when '7'. TAB-PMNTTRMS = gt_data-value. when '8'. TAB-PURCH_NO_C = gt_data-value. when '9'. TAB-ITM_NUMBER = gt_data-value. when '10'. TAB-CUST_MAT22 = gt_data-value. when '11'. TAB-PLANT = gt_data-value. when '12'. TAB-TARGET_QTY = gt_data-value. when '13'. TAB-PARTN_ROLE = gt_data-value. when '14'. TAB-PARTN_NUMB = gt_data-value. when '15'. TAB-MATERIAL = gt_data-value. endcase. endloop. append tab. clear tab. DELETE TAB WHERE Material EQ '' or doc_type EQ ''. endform. form upload_data. sort tab by SRNO. LOOP AT TAB. * concatenate tab-REQ_DATE_H+4(4) *tab-REQ_DATE_H+2(2) tab-REQ_DATE_H+0(2) into *tab-REQ_DATE_H. * concatenate tab-PURCH_DATE+4(4) *tab-PURCH_DATE+2(2) tab-PURCH_DATE+0(2) into *tab-PURCH_DATE. SRNO = TAB-SRNO. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = tab-PARTN_NUMB IMPORTING OUTPUT = tab-PARTN_NUMB. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = tab-CUST_MAT22 IMPORTING OUTPUT = tab-CUST_MAT22. IF TAB-SRNO = SRNO. ORDER_HEADER_IN-DOC_TYPE = TAB-DOC_TYPE. ORDER_HEADER_IN-SALES_ORG = TAB-SALES_ORG. ORDER_HEADER_IN-DISTR_CHAN = TAB-DISTR_CHAN. * ORDER_HEADER_IN-REQ_DATE_H = TAB-REQ_DATE_H. ORDER_HEADER_IN-PURCH_DATE = TAB-PURCH_DATE. ORDER_HEADER_IN-PMNTTRMS = TAB-PMNTTRMS. ORDER_HEADER_IN-PURCH_NO_C = TAB-PURCH_NO_C. ORDER_HEADER_IN-DIVISION = tab-DIVISION. ORDER_ITEMS_IN-ITM_NUMBER = tab-ITM_NUMBER. ORDER_ITEMS_IN-material = TAB-CUST_MAT22. ORDER_ITEMS_IN-PLANT = TAB-PLANT. ORDER_ITEMS_IN-material = tab-material. APPEND ORDER_ITEMS_IN. ORDER_PARTNERS-PARTN_ROLE = TAB-PARTN_ROLE. ORDER_PARTNERS-PARTN_NUMB = TAB-PARTN_NUMB. APPEND ORDER_PARTNERS. ORDER_SCHEDULES_IN-ITM_NUMBER = tab-ITM_NUMBER. ORDER_SCHEDULES_IN-REQ_QTY = tab-TARGET_QTY. append ORDER_SCHEDULES_IN. ENDIF. AT END OF SRNO. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING * SALESDOCUMENTIN = ORDER_HEADER_IN = ORDER_HEADER_IN * ORDER_HEADER_INX = * SENDER = * BINARY_RELATIONSHIPTYPE = * INT_NUMBER_ASSIGNMENT = * BEHAVE_WHEN_ERROR = * LOGIC_SWITCH = * TESTRUN = * CONVERT = ' ' IMPORTING SALESDOCUMENT = SALESDOCUMENT TABLES RETURN = RETURN ORDER_ITEMS_IN = ORDER_ITEMS_IN * ORDER_ITEMS_INX = ORDER_PARTNERS = ORDER_PARTNERS ORDER_SCHEDULES_IN = ORDER_SCHEDULES_IN * ORDER_SCHEDULES_INX = * ORDER_CONDITIONS_IN = * ORDER_CONDITIONS_INX = * ORDER_CFGS_REF = * ORDER_CFGS_INST = * ORDER_CFGS_PART_OF = * ORDER_CFGS_VALUE = * ORDER_CFGS_BLOB = * ORDER_CFGS_VK = * ORDER_CFGS_REFINST = * ORDER_CCARD = * ORDER_TEXT = ORDER_KEYS = ORDER_KEYS * EXTENSIONIN = * PARTNERADDRESSES = . IF SALESDOCUMENT <> SPACE. commit work. ADD 1 TO gd_update. it_success-SALESDOCUMENT = SALESDOCUMENT. append it_success. CLEAR :SALESDOCUMENT,ORDER_HEADER_IN. REFRESH : RETURN,ORDER_ITEMS_IN,ORDER_PARTNERS. ELSE. loop at return. it_error-SRNO = tab-SRNO. it_error-err_msg = return-MESSAGE . Append it_error. ENDLOOP. CLEAR :SALESDOCUMENT,ORDER_HEADER_IN. REFRESH : RETURN,ORDER_ITEMS_IN,ORDER_PARTNERS. ENDIF. endat. endloop. DESCRIBE TABLE it_success LINES gd_lines. IF gd_lines GT 0. * Display result report column headings PERFORM display_column_headings. * Display result report PERFORM DISPLAY_SUCESS. ENDIF. * IF SUCESS FAILS Display Error Report DESCRIBE TABLE it_error LINES gd_lines. IF gd_lines GT 0. PERFORM errorheadings. PERFORM errorreport. ENDIF. endform. June 24 桃花飞绿水,一庭芳草围新绿 有情芍药含春泪,野竹上表霄 十亩藤花落古香,无力蔷薇卧晓枝 我愿意暂求借化力,减却牡丹妖艳色 花非花,梦非梦 花如梦,梦似花 梦里有花,花开如梦 心非心,镜非镜 心如镜,镜似心 镜中有心,心如明镜 岂曰无衣,与子同袍;岂曰无衣,与子同裳 ——我与妖精的素年擦肩之缘 那一年,我十四岁,妖精十八岁。我瞪著好奇的眼睛,看著她赤裸著从我家漂满栀子花办的浴缸里出来,悠悠然穿上我姐姐那洁白的连衣裙,恍若梦中的仙女。那一年,我们之间什麽都没有可能发生。 那一年,我十八岁,妖精十八岁,我瞪著急色的眼睛,看著她赤裸著从我家漂满玫瑰花瓣的浴缸里出来,施施然穿上我爲初恋情人准备的睡衣,恍若心中的初恋。那一年,我们之间单纯的什麽都没有发生。 那一年,我二十四岁,妖精十八岁,我瞪著流气的眼睛,看著她赤裸著从我家漂满百合花瓣的浴缸里出来,俏俏然穿上我一夜情的女人留下的低胸吊带,妩媚诱惑迷人。那一年,我们之间还是什麽都没有发生。 那一年,我三十岁,妖精十八岁,我熟视无睹的看著她赤裸著从我家漂满桃花花瓣的浴缸里出来,潇潇然穿上我和老婆戏玩时的女王装,手执皮鞭,威风凛凛。那一年,我们之间依然无情趣的什麽都没有发生。 那一年,我四十岁,妖精十八岁,我闭上双眼,她赤裸著从我家漂满桂花的浴缸里出来,升升然穿起我为女儿准备的户外运动装,清纯可人。那一年,我们之间仍然矜持的什麽都没有发生。 那一年,妖精十八岁,我已经是一堆枯骨,她从我的坟前拿起我为她准备的女巫装,愀然不乐的穿上,看到了衣服下面压著的一张纸条:前生你生米已成熟饭,今生你木已成舟,来生你琵琶别抱,三生石上如此姻缘,纵一往情深,妖精不老亦成空。 二 2008年6月8日,端午,入梅第一天,有雨。我撑著伞在太湖之滨踯躅前行,渴望碰到一只类似白素贞一样的女妖,却什麽都没有发生,只有路边泥地上翻出了几条蚯蚓。 三 我一直自以为高傲其实孤僻的存在于这世间,不太相信身边所遇到的一些人,反而把理想寄托在虚拟的网络上,希望能遇到知己。然世间何处不孤独,知己难寻,倒是在网上总能遇到一些令我赞叹不已击节欣赏的家伙,嗜泪的妖精是其中和我相处较深的一个。 时以江中无水、故衣等马甲浪迹西祠,于青楼遇到妖精,唱和之文时有,如《你的江中,没有我的水》、《故衣》、《碧螺春香处,红莲落故衣》、《鬼卦魅妖》、《应妖精徵婚檄文序》等,作为无聊之时,二人解闷之作,如今文字于我渐行渐远,唯有记下一方心情,留待他年细细品读。 妖精的文字其实并不好,在我看来,很多时候都是凌乱的、文字空洞堆砌的,大风一吹,那几张纸片也许就在空中化作漫天的素白,成为文字被妖精滥用的六月之雪。唯一剩下的,就是妖精在那些文字中所表现出的自己的风骨——自信、执著、果敢干练以及孤独、寂寞前行者的偶尔迷茫。在这些文字中,一个风韵万千的女人时而以比男人更男人的气概承担起一切责任,时而以一种小女人寂寞的姿态诉说著对爱情的渴望,就像邻家妹妹一样时而用稚气的声音告诉你,我要保护哥哥,又时而哭著来找你说自己被人欺负了,总是那样惹人怜爱,宠溺不已。 妖精在东北,我在江南,相隔三千多公里,就靠著一根网线牵引著我们相识数年,总是在网上断续的聊著,偶尔的电话短信,会告诉对方,还有个素未谋面的朋友在远方偶尔会想起你。我遇她距离最近的时候,或许就是我和她的几次出差,在浙江、在上海、在福建、在南京、在北京,每次我都想象著她坐的飞机从我的头顶飞过,那时我们之间的距离也许只有一万米,或者是火车从我所在的城市经过,那时我们之间的距离也许只有几千米,或许,我距离她的家也不过几千米。然而,在这现代化的社会中,我们匆忙著,在中国的大地上奔波,总是在不经意间擦肩而过,将佛说的所谓前生千万次的回眸在今生消耗殆尽。 曾经在一个春日的午後和妖精视频,一身纯白的她恍若正处在单纯的十八岁雨季的女孩,银铃般的声音传来,让我惊讶与她的年轻貌美和与文字风情万种的天壤之别,她却笑著说这只是千面妖精的某一面而已,於是我心自然沉淀,寂然不动,幻想出无数单纯、可爱、妩媚、风骚、艳情……等面容,从青梅竹马的恋人、情人、爱人、姐姐、妹妹到学生、制服、女王、OL、拉拉最後依旧回归到如此单纯的面孔,历经轮回,终归本色。 你为妖,我为人,妖为世间的精灵,乃是不老的传说,我在时光中悄然老去,唯有静坐一旁,看你演绎妖的风情万种,置身事外远观而永难投入亵玩! 这样一个美丽的初夏,我在江南如画的风景中,想念著曾经交往的彼此心情,如那江南女孩手中素白的丝绸,清新闪亮! June 17 *&---------------------------------------------------------------------* *& Report ZUSD018 *& *&---------------------------------------------------------------------* *& Author : CHUNG NAM INTERNATIONAL CO.,LTD. MICHAELCHOW *& Creation Date : 02.12.2008 *& Program Type : Executable Programs *& Logical DB : [Nil] *& Text Elements *& (Titles&Headers) : [Nil] *& (Selection Texts) : [Nil] *& (Text symbols) : [Nil] *& GUI Status : [Nil] OR [Standard] *& Variants : [Nil] OR Variant *& Message Class : [Nil] *& Description : *& *&---------------------------------------------------------------------* *& Modifications : *& ID Date Programmer Description *& ZUSD018 2008.12.03 Michael Chow CNPC Auto-Program Phase3 Part2 *& CD1K902966 Upload FC Data to ZTUSD018 table and upload *& FC data to MD61 synchronously *&---------------------------------------------------------------------* REPORT ZUSD018 NO STANDARD PAGE HEADING . TABLES: PBIM, PBED, PBHI, MARA, KNMT, ZTUSD018, "Fc Data ZTUSD018_FD. "FC Field List ******************************************************************* " Global variable declaration ******************************************************************* TYPE-POOLS: slis. DATA: wa_line TYPE slis_fieldcat_alv. DATA: it_fieldcat TYPE slis_t_fieldcat_alv . DATA: wa_layout TYPE slis_layout_alv. DATA: it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE. DATA: G_COL TYPE I VALUE 1. "Global col index. "Fc Data data: IT_UPLOAD LIKE ZTUSD018 OCCURS 0 WITH HEADER LINE. "Field List. DATA: IT_FIELD_LIST like ZTUSD018_FD OCCURS 0 WITH HEADER LINE. DATA: G_WEEK like ZTUSD018_FD-WEEK. DATA: G_WEEK_TMP LIKE SCAL-WEEK. "Import file data: it_file like alsmex_tabline occurs 0 with header line. DATA: gd_currentrow type i. DATA: IT_KNMT LIKE KNMT OCCURS 0 WITH HEADER LINE. "Customer Material Infor REC. DATA: IT_PBED LIKE PBED OCCURS 0 WITH HEADER LINE. "Independent Requirements Data DATA: IT_PBIM LIKE PBIM OCCURS 0 WITH HEADER LINE. "Independent Requirements for Material DATA: IT_PBHI LIKE PBHI OCCURS 0 WITH HEADER LINE. "Independent Requirements History DATA: BEGIN OF IT_FCDATA OCCURS 0. "To be uploaded FC DATA. INCLUDE STRUCTURE ZTUSD018. DATA: WERKS LIKE MARC-WERKS. DATA: MATNR LIKE MARA-MATNR. DATA: END OF IT_FCDATA. DATA: BEGIN OF IT_PERXX OCCURS 0, MATNR LIKE MARA-MATNR, PERXX LIKE SY-DATUM, PLNMG LIKE PBED-PLNMG, RQDAT LIKE SY-DATUM, UPMOD TYPE C. " Update Mode C- Create , U-Update DATA: END OF IT_PERXX. DATA: BEGIN OF IT_MSG OCCURS 0. INCLUDE STRUCTURE BAPIRETURN1. DATA: MATNR LIKE MARA-MATNR. DATA: END OF IT_MSG. data : begin of it_error occurs 0, Item(4), err_msg(73) TYPE c, "TO RETREIVE ERROR MESSAGES end of it_error. data : Item(4). DEFINE append_alv_field. clear wa_line . wa_line-fieldname = &1. wa_line-seltext_l = &2. wa_line-seltext_m = &2. wa_line-seltext_s = &2. wa_line-cfieldname = &3. wa_line-tech = &4. wa_line-qfieldname = &5. wa_line-edit_mask = &6. wa_line-ddictxt = 'L'. append wa_line to it_fieldcat. END-OF-DEFINITION . selection-screen begin of block b1 with frame TITLE TEXT-T01. PARAMETER : R_QRY RADIOBUTTON GROUP G1 DEFAULT 'X', R_upd RADIOBUTTON GROUP G1 . selection-screen end of block b1. *SKIP 3. selection-screen begin of block b2 with frame TITLE TEXT-T02. *skip 3. PARAMETER: "p_werks like ZTUSD018-WERKS DEFAULT '3231' , p_week like ZTUSD018-WEEK DEFAULT SY-DATUM+4(2). *skip 3. selection-screen end of block b2. selection-screen begin of block b3 with frame TITLE TEXT-T03. *skip 3. parameter:p_infile like rlgrap-filename. *skip 3. selection-screen end of block b3. INITIALIZATION. PERFORM GET_WEEK USING SY-DATUM G_WEEK_tmp. p_week = g_week_tmp+4(2). G_WEEK = g_week_tmp+4(2). AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile. PERFORM value_help. start-of-selection. IF R_Qry EQ 'X'. PERFORM DATA_CHECK. PERFORM GET_DATA. PERFORM LIST_FC. ELSE. IF P_INFILE IS INITIAL. Message 'Please select a upload file,only excel file is supported!' type 'E'. stop. endif. PERFORM Upload_FIELD_LIST. PERFORM Upload_2ZTABLE. PERFORM DELETE_CM. "Delete It_upload's leading CM PERFORM GET_KNMT. PERFORM Process_FCDATA. PERFORM Combine_data. PERFORM Upload_FCDATA. PERFORM Show_Update_status. endif. END-OF-SELECTION. FORM Show_Update_status. append_alv_field 'MATNR' 'MATERIAL' '' '' '' ''. " append_alv_field 'TYPE' 'Message Type' '' '' '' ''. " append_alv_field 'ID' 'Message ID' '' '' '' ''. " append_alv_field 'NUMBER' 'Message Number' '' '' '' ''. " append_alv_field 'MESSAGE' 'Message' '' '' '' ''. " PERFORM alv_layout. PERFORM SHOW_ALV TABLES IT_MSG. ENDFORM. FORM Upload_FCDATA. DATA: ex_matnr like BAPISITEMR-MATERIAL. data: ls_req_item like BAPISITEMR. data: lt_req_data like BAPISSHDIN occurs 0 with header line. data: lt_RETURN LIKE BAPIRETURN1 OCCURS 0 WITH HEADER LINE. *data: matertemp like BAPISITEMR-MATERIAL. data: lt_matnr like IT_PERXX OCCURS 0 WITH HEADER LINE. data: l_rows_count type I, l_Row_index type I. data: l_index like sy-tabix. "DELETE IT_PERXX WHERE MATNR ne 'PCMVSHE011110202'. "Test only SORT IT_PERXX BY MATNR RQDAT. LT_MATNR[] = IT_PERXX[]. sort lt_matnr by matnr. delete ADJACENT DUPLICATES FROM lt_matnr COMPARING matnr. "Mark the update mode flag select * INTO CORRESPONDING FIELDS OF TABLE it_pbim from pbim FOR ALL ENTRIES IN lt_matnr where matnr = lt_matnr-matnr and werks = '3231'. if sy-subrc eq 0. loop at it_pbim. READ TABLE lt_matnr with key matnr = it_pbim-matnr. if sy-subrc eq 0. lt_matnr-UPMOD = 'U'. modify lt_matnr index sy-tabix. endif. ENDLOOP. endif. DESCRIBE TABLE lt_matnr LINES l_rows_count. l_row_index = 1. if l_rows_count > 0. while l_row_index <= l_rows_count. READ TABLE lt_matnr INDEX L_row_index. if sy-subrc eq 0. Loop at IT_PERXX where matnr = lt_matnr-matnr. ls_req_item-material = IT_PERXX-MATNR. ls_req_item-plant = '3231'. ls_req_item-REQU_TYPE = 'VSE'. ls_req_item-VERSION = '00'. ls_req_item-VERS_ACTIV = 'X'. lt_req_data-DATE_TYPE = 2. lt_req_data-req_date = IT_PERXX-RQDAT. lt_req_data-REQ_QTY = IT_PERXX-PLNMG. append lt_req_data. clear lt_req_data. endloop. if lt_matnr-UPMOD EQ ''. CALL FUNCTION 'BAPI_REQUIREMENTS_CREATE' EXPORTING REQUIREMENTS_ITEM = ls_req_item * REQUIREMENT_PARAM = UPDATE_MODE = 'X' IMPORTING MATERIAL = ex_matnr * PLANT = * REQUIREMENTSTYPE = * VERSION = * REQMTSPLANNUMBER = TABLES REQUIREMENTS_SCHEDULE_IN = lt_REQ_data * REQUIREMENTS_CHAR_IN = RETURN = LT_RETURN. if lines( lt_RETURN ) = 0 . IT_MSG-MATNR = LT_MATNR-MATNR. IT_MSG-MESSAGE = 'Forecast has been create successfully'. APPEND IT_MSG. ELSE. LOOP AT LT_RETURN. MOVE-CORRESPONDING LT_RETURN TO IT_MSG. IT_MSG-MATNR = LT_MATNR-MATNR. APPEND IT_MSG. ENDLOOP. endif. clear:LS_req_item,lt_req_data,lt_REQ_data[],lt_return[]. ELSE. CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE' EXPORTING MATERIAL = LT_MATNR-MATNR PLANT = '3231' REQUIREMENTSTYPE = 'VSE' VERSION = '00' REQMTSPLANNUMBER = '' VERS_ACTIV = 'X' * REQUIREMENT_PARAM = * MRP_AREA = * DO_COMMIT = 'X' * UPDATE_MODE = 'X' DELETE_OLD = 'X' * NO_WITHDR = ' ' * MATERIAL_EVG = * IMPORTING * REQUIREMENT_ITEM_OUT = TABLES REQUIREMENTS_SCHEDULE_IN = lt_req_data * REQUIREMENTS_CHAR_IN = RETURN = lt_RETURN . if lines( lt_RETURN ) = 0 . IT_MSG-MATNR = LT_MATNR-MATNR. IT_MSG-MESSAGE = 'Forecast has been updated successfully'. APPEND IT_MSG. ELSE. LOOP AT LT_RETURN. MOVE-CORRESPONDING LT_RETURN TO IT_MSG. IT_MSG-MATNR = LT_MATNR-MATNR. APPEND IT_MSG. ENDLOOP. endif. endif. endif. clear:ls_req_item,lt_REQ_data,lt_REQ_data[],LT_RETURN[]. l_row_index = l_row_index + 1. endwhile. endif. endform. FORM Process_FCDATA. DATA: l_index like sy-tabix. DATA: LT_FC_TOTAL LIKE IT_FCDATA OCCURS 0 WITH HEADER LINE. Loop at it_upload. MOVE-CORRESPONDING it_upload to it_FCDATA. it_FCdata-WERKS = '3231'. READ TABLE it_knmt with key kdmat = it_upload-CPN. if sy-subrc eq 0. it_FCDATA-MATNR = IT_KNMT-MATNR. ENDIF. APPEND IT_FCDATA. ENDLOOP. DELETE IT_FCDATA WHERE MATNR EQ '' OR FUNCT NE 'SUPPLY'. LOOP AT IT_FCDATA. "Combine the Planed Qty READ TABLE LT_FC_TOTAL WITH KEY MATNR = IT_FCDATA-MATNR. IF SY-SUBRC EQ 0. L_INDEX = SY-TABIX. LT_FC_TOTAL-ABCOL = LT_FC_TOTAL-ABCOL + IT_FCDATA-ABCOL. LT_FC_TOTAL-ACCOL = LT_FC_TOTAL-ACCOL + IT_FCDATA-ACCOL. LT_FC_TOTAL-ADCOL = LT_FC_TOTAL-ADCOL + IT_FCDATA-ADCOL. LT_FC_TOTAL-AECOL = LT_FC_TOTAL-AECOL + IT_FCDATA-AECOL. LT_FC_TOTAL-AFCOL = LT_FC_TOTAL-AFCOL + IT_FCDATA-AFCOL. LT_FC_TOTAL-AGCOL = LT_FC_TOTAL-AGCOL + IT_FCDATA-AGCOL. LT_FC_TOTAL-AHCOL = LT_FC_TOTAL-AHCOL + IT_FCDATA-AHCOL. LT_FC_TOTAL-AICOL = LT_FC_TOTAL-AICOL + IT_FCDATA-AICOL. LT_FC_TOTAL-AJCOL = LT_FC_TOTAL-AJCOL + IT_FCDATA-AJCOL. LT_FC_TOTAL-AKCOL = LT_FC_TOTAL-AKCOL + IT_FCDATA-AKCOL. LT_FC_TOTAL-ALCOL = LT_FC_TOTAL-ALCOL + IT_FCDATA-ALCOL. MODIFY LT_FC_TOTAL INDEX L_INDEX. ELSE. MOVE-CORRESPONDING IT_FCDATA TO LT_FC_TOTAL. APPEND LT_FC_TOTAL. ENDIF. ENDLOOP. IF NOT LT_FC_TOTAL[] IS INITIAL. IT_FCDATA[] = LT_FC_TOTAL[]. ENDIF. ENDFORM. FORM COMBINE_DATA. data: l_text(72) TYPE C. data: l_perxx(6) type c. data: l_date like BAPISSHDIN-REQ_DATE. data: lv_date like SCAL-DATE, lv_week like SCAL-week. Loop at IT_FCDATA. G_COL = 28. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-ABCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-ABCOL. IT_PERXX-PERXX = L_TEXT. IT_PERXX-PERXX = LV_WEEK. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-ACCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-ACCOL. IT_PERXX-PERXX = LV_WEEK. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-ADCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-ADCOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-AECOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-AECOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-AFCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-AFCOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-AHCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-AHCOL. IT_PERXX-PERXX = LV_WEEK. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-AICOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-AICOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-AJCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-AJCOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. WRITE L_TEXT TO lv_date. PERFORM GET_WEEK USING lv_date lv_week. l_date = lv_date. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-AKCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-AKCOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. PERFORM GET_TITLE USING L_TEXT. CONDENSE L_TEXT. * CONCATENATE L_TEXT+0(4) L_TEXT+6(2) INTO L_PERXX. * PERFORM GET_FIRST_OF_WEEK USING L_PERXX * L_DATE. if IT_FCDATA-ALCOL > 0. IT_PERXX-MATNR = IT_FCDATA-MATNR. IT_PERXX-PLNMG = IT_FCDATA-ALCOL. IT_PERXX-PERXX = Lv_week. IT_PERXX-RQDAT = L_DATE. APPEND IT_PERXX. ENDIF. ENDLOOP. ENDFORM. FORM DELETE_CM. DATA: L_INDEX LIKE SY-TABIX. Loop at it_upload. l_Index = sy-tabix. PERFORM delete_LEADING_CM using it_upload-CPN. PERFORM delete_LEADING_CM using it_upload-MCOL. TRANSLATE IT_UPLOAD-MCOL TO UPPER CASE. modify it_upload index l_index. ENDLOOP. endform. FORM GET_KNMT. DATA: L_INDEX LIKE SY-TABIX. DATA: LT_CPN LIKE IT_UPLOAD OCCURS 0 WITH HEADER LINE. Loop at IT_UPLOAD. l_index = sy-tabix. TRANSLATE IT_UPLOAD-FUNCT TO UPPER CASE. MODIFY it_upload index l_index. ENDLOOP. LT_CPN[] = IT_UPLOAD[]. DELETE LT_CPN WHERE CPN EQ '' or FUNCT NE 'SUPPLY'. "Delete none-used rows. DELETE ADJACENT DUPLICATES FROM LT_CPN COMPARING CPN. IF NOT LT_CPN[] IS INITIAL. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_KNMT FROM KNMT FOR ALL ENTRIES IN LT_CPN WHERE KDMAT = LT_CPN-CPN. * AND VKORG = '3231'. endif. ENDFORM. FORM add_alv_fields . CLEAR it_fieldcat[]. DATA: L_TEXT(72) TYPE C. PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ITEM' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'LGORT' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'SUPLIER' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'PLANT' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'CPN' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'MAKTX' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'FUNCT' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'GCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'HCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ICOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'JCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'KCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'LCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. * append_alv_field 'LCOL' L_TEXT '' '' '' ''. " * PERFORM GET_TITLE USING L_TEXT. append_alv_field 'MCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'NCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'OCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'PCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'QCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'RCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'SCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'TCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'UCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'VCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'WCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'XCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'YCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ZCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AACOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ABCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ACCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ADCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AECOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AFCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AGCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AHCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AICOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AJCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'AKCOL' L_TEXT '' '' '' ''. " PERFORM GET_TITLE USING L_TEXT. append_alv_field 'ALCOL' L_TEXT '' '' '' ''. " * PERFORM GET_TITLE USING L_TEXT. * append_alv_field 'AMCOL' L_TEXT '' '' '' ''. " * PERFORM GET_TITLE USING L_TEXT. * append_alv_field 'ANCOL' L_TEXT '' '' '' ''. " ENDFORM. FORM alv_layout . wa_layout-colwidth_optimize = 'X'. ENDFORM. "ALV_LAYOUT FORM show_alv TABLES im_table. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING it_fieldcat = it_fieldcat[] is_layout = wa_layout it_sort = it_sort[] TABLES t_outtab = im_table EXCEPTIONS program_error = 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. "show_alv Form LIST_FC. PERFORM GET_FIELD_LIST. PERFORM add_alv_fields. PERFORM alv_layout. PERFORM SHOW_ALV TABLES IT_UPLOAD. ENDFORM. FORM DATA_CHECK. IF "P_WERKS IS INITIAL P_WEEK IS INITIAL. MESSAGE 'Plant and week are required!' type 'S' DISPLAY LIKE 'E'. endif. ENDFORM. FORM get_DATA. CLEAR IT_UPLOAD[]. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_UPLOAD FROM ZTUSD018 CLIENT SPECIFIED WHERE MANDT = SY-MANDT *AND WERK = P_WERK AND WEEK = P_WEEK. sort IT_UPLOAD BY ITEM. ENDFORM. FORM Upload_2ZTABLE. data: l_row type I. call function 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_infile i_begin_col = '1' i_begin_row = '3' "Do not require *headings i_end_col = '38' i_end_row = '5000' TABLES intern = it_file EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 others = 3. if sy-subrc <> 0. message e010(zz) with text-001. "Problem uploading *Excel Spreadsheet endif. *perform open_group. "Delete non-used Rows and clear text field value in numeric cell areas. Loop at it_file WHERE value ne '' and value ne '0'. CONDENSE it_file-value. modify it_file. ENDLOOP. Loop at it_file where value+0(4) EQ 'Data'. L_ROW = it_file-row. delete it_file where row eq l_row. ENDLOOP. loop at it_file where VALUE EQ 'No Supply Allowed'. clear it_file-value. modify it_file index sy-tabix. ENDLOOP. "End of processing sort it_file by row col. * Get first row retrieved read table it_file index 1. * Set first row retrieved to current row gd_currentrow = it_file-row. loop at it_file. * Reset values for next row if it_file-row ne gd_currentrow. append it_upload . clear it_upload. gd_currentrow = it_file-row. endif. SHIFT it_file-VALUE LEFT DELETING LEADING SPACE. * PERFORM delete_LEADING_CM using it_file-VALUE. "Delete leading CM. case it_file-col. when '0001'. it_upload-LGORT = it_file-value. "Plant codes when '0002'. it_upload-SUPLIER = it_file-value. when '0003'. it_upload-PLANT = it_file-value. when '0004'. it_upload-CPN = it_file-value. when '0005'. it_upload-MAKTX = it_file-value. when '0006'. it_upload-FUNCT = it_file-value. when '0007'. it_upload-GCOL = it_file-value. when '0008'. it_upload-HCOL = it_file-value. when '0009'. it_upload-ICOL = it_file-value. when '0010'. it_upload-JCOL = it_file-value. when '0011'. it_upload-KCOL = it_file-value. when '0012'. it_upload-LCOL = it_file-value. when '0013'. it_upload-MCOL = it_file-value. when '0014'. it_upload-NCOL = it_file-value. when '0015'. it_upload-OCOL = it_file-value. when '0016'. it_upload-PCOL = it_file-value. when '0017'. it_upload-QCOL = it_file-value. when '0018'. it_upload-RCOL = it_file-value. when '0019'. it_upload-SCOL = it_file-value. when '0020'. it_upload-TCOL = it_file-value. when '0021'. it_upload-UCOL = it_file-value. when '0022'. it_upload-VCOL = it_file-value. when '0023'. it_upload-WCOL = it_file-value. when '0024'. it_upload-XCOL = it_file-value. when '0025'. it_upload-YCOL = it_file-value. when '0026'. it_upload-ZCOL = it_file-value. when '0027'. it_upload-AACOL = it_file-value. when '0028'. it_upload-ABCOL = it_file-value. when '0029'. it_upload-ACCOL = it_file-value. when '0030'. it_upload-ADCOL = it_file-value. when '0031'. it_upload-AECOL = it_file-value. when '0032'. it_upload-AFCOL = it_file-value. when '0033'. it_upload-AGCOL = it_file-value. when '0034'. it_upload-AHCOL = it_file-value. when '0035'. it_upload-AICOL = it_file-value. when '0036'. it_upload-AJCOL = it_file-value. when '0037'. it_upload-AKCOL = it_file-value. when '0038'. it_upload-ALCOL = it_file-value. * when '0039'. * it_upload-AMCOL = it_file-value. endcase. it_upload-mandt = sy-mandt. it_upload-week = G_WEEK. it_upload-AENME = SY-UNAME. it_upload-AEDAT = SY-DATUM. endloop. append it_upload. clear it_upload. clear l_row. l_row = 1. Loop at it_upload. it_upload-item = l_row. modify it_upload. l_row = l_row + 1. ENDLOOP. sort it_upload by Item. * Delete FROM ZTUSD018 CLIENT SPECIFIED WHERE MANDT = SY-MANDT AND WEEK = G_WEEK. IF SY-SUBRC EQ 0. COMMIT WORK. ENDIF. INSERT ZTUSD018 FROM TABLE IT_UPLOAD. IF SY-SUBRC EQ 0. COMMIT WORK. MESSAGE 'FC data has been uploaded to database successfully' type 'S'. ELSE. MESSAGE 'FC data uploaded faild' type 'S' DISPLAY LIKE 'E'. stop. ENDIF. ENDFORM. **&--------------------------------------------------------------------- ** **& Form value_help **&--------------------------------------------------------------------- ** ** text **---------------------------------------------------------------------- ** ** --> p1 text ** <-- p2 text **---------------------------------------------------------------------- ** FORM value_help . CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50' EXPORTING DEF_FILENAME = ' ' DEF_PATH = ' ' MASK = ',*.*,*.*.' MODE = 'O' TITLE = ' ' IMPORTING FILENAME = p_infile EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5. 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. "value_help FORM upload_Field_List. "Get first row field List( column 1 to column 6) call function 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_infile i_begin_col = '1' i_begin_row = '1' "Do not require *headings i_end_col = '6' i_end_row = '1' TABLES intern = it_file EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 others = 3. if sy-subrc <> 0. message e010(zz) with text-001. "Problem uploading *Excel Spreadsheet endif. * sort it_file by row col. *READ TABLE it_file INDEX 1. * IF SY-SUBRC EQ 0. * TRANSLATE it_file-value to UPPER CASE. * IF IT_FILE-VALUE NE 'ITEM'. * MESSAGE 'Invalid EXCEL Format, Please select a vaild excel file' type 'S' DISPLAY LIKE 'E'. * stop. * endif. * endif. Loop at it_file. MOVE-CORRESPONDING it_file to it_field_list. PERFORM DELETE_LEADING_CM USING it_file-value. it_field_list-value = it_file-value. it_field_list-mandt = sy-mandt. it_field_list-week = G_WEEK. it_field_list-spras = sy-langu. append it_field_list. ENDLOOP. clear it_file[]. "Get second row field List( column 7 to column 32) call function 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_infile i_begin_col = '7' i_begin_row = '2' "Do not require *headings i_end_col = '38' i_end_row = '2' TABLES intern = it_file EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 others = 3. if sy-subrc <> 0. message e010(zz) with text-001. "Problem uploading *Excel Spreadsheet endif. * sort it_file by row col. *READ TABLE it_file INDEX 1. * IF SY-SUBRC EQ 0. * TRANSLATE it_file-value to UPPER CASE. * IF IT_FILE-VALUE NE 'ITEM'. * MESSAGE 'Invalid EXCEL Format, Please select a vaild excel file' type 'S' DISPLAY LIKE 'E'. * stop. * endif. * endif. Loop at it_file. MOVE-CORRESPONDING it_file to it_field_list. PERFORM DELETE_LEADING_CM USING it_file-value. it_field_list-col = it_file-col + 6. "Because start from 6 column it_field_list-value = it_file-value. it_field_list-mandt = sy-mandt. it_field_list-week = G_WEEK. it_field_list-spras = sy-langu. append it_field_list. ENDLOOP. "Save field List to database. IF NOT IT_FIELD_LIST[] IS INITIAL. DELETE ADJACENT DUPLICATES FROM IT_FIELD_LIST COMPARING MANDT WEEK COL. DELETE FROM ZTUSD018_FD CLIENT SPECIFIED WHERE mandt = sy-mandt and WEEK = G_WEEK . * AND SPRAS = SY-LANGU. IF SY-SUBRC EQ 0. COMMIT WORK. ENDIF. INSERT ZTUSD018_FD FROM TABLE it_field_list . if sy-subrc eq 0. commit work. endif. endif. ENDFORM. FORM GET_WEEK USING V_DATE V_WEEK. DATA: L_WEEK LIKE SCAL-WEEK. DATA: L_DATE LIKE SCAL-DATE. L_DATE = V_DATE. CALL FUNCTION 'HRIQ_DATE_GET_WEEK' EXPORTING DATE = L_DATE IMPORTING WEEK = L_WEEK . V_WEEK = L_WEEK. ENDFORM. "Get ALV Title from table. FORM GET_TITLE USING L_TEXT. read table it_field_list with key week = g_week col = G_col. * SPRAS = SY-LANGU. IF SY-SUBRC EQ 0. l_text = it_field_list-value. endif. ADD 1 TO G_COL. ENDFORM. FORM GET_FIELD_LIST. select * into CORRESPONDING FIELDS OF TABLE it_field_list from ztusd018_fd CLIENT SPECIFIED where MANDT = SY-MANDT AND week = g_week. * and spras = sy-langu. if sy-subrc NE 0. Message 'Field List not found, Please upload first!' type 'S' DISPLAY LIKE 'E'. stop. endif. ENDFORM. FORM DELETE_LEADING_CM using " Delete leading inverted comma . v_str. DATA: L,P type I. DATA: v_src_str type char50, v_des_str type char50. DATA: v_char type c. v_char = TEXT-C01. v_src_str = v_str. CONDENSE v_src_str. if v_src_str+0(1) = v_char. REPLACE v_char with '' into v_src_str. CONDENSE v_src_str. endif. v_str = v_src_str. ENDFORM. "Get the first date of a week. FORM GET_FIRST_OF_WEEK USING V_WEEK V_DATE. DATA: l_week like SCAL-WEEK. DATA: l_date like SCAL-date. L_WEEK = V_WEEK. CALL FUNCTION 'HRIQ_WEEK_GET_FIRST_DAY' EXPORTING week = l_week IMPORTING DATE = l_date EXCEPTIONS WEEK_INVALID = 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. V_DATE = L_DATE. ENDFORM. FORM GET_BDZEI USING V_EX_BDZEI. "Get Independent requirements pointer DATA: l_BDZEI like PBED-BDZEI. SELECT SINGLE MAX( BDZEI ) INTO L_BDZEI FROM PBED. IF SY-SUBRC NE 0. L_BDZEI = 0. endif. v_ex_bdzei = l_bdzei. endform.
|