采购订单发送邮件:截图如下:代码如下:ZMMR099:********************************************************************* ****Program name: ZMMR099**Description : PO SEND MAIL**Date/Autohr :********************************************************************* ***** M O D I F I C A T I O N L O G********************************************************************* ***** ChangeDate Programmer Request Description** ========== ========== ========== =========================*********************************************************************** ***REPORT ZMMR099NO STANDARD PAGE HEADINGLINE-SIZE 255LINE-COUNT 255.*** Global Data declearINCLUDE ZMMR099TOP.INCLUDE ZMMR099F01.*==================================================================== ==** Selection Screen Events*==================================================================== ==**** maintain selection screen outputAT SELECTION-SCREEN OUTPUT.*** F4 value help*AT SELECTION-SCREEN ON VALUE-REQUEST for <para/sel-opt>.*** check input dataAT SELECTION-SCREEN.*AT SELECTION-SCREEN ON <f>.*AT SELECTION-SCREEN ON BLOCK <>.****CHECK ON SELECT SCREEN INPUT*==================================================================== ==** Report Events*==================================================================== ==**** initial dataINITIALIZATION.clear: ADRNR2,SUPP_NAME2 ,SUPP_NAMECO ,SUPP_STR1 , "street2 SUPP_STR2 , "street3 SUPP_STREET,SUPP_CITY ,SUPP_CN ,SUPP_CN_NAME ,SUPP_ALL ,SUPP_FRISTNAME ,SUPP_LASTNAME ,SUPP_ANRED ,SUPP_PRSNR ,TEL_NUMBER ,TEL_EXTENS ,SUPP_TEL ,ADRNR ,DELV_NAME1 ,DELV_NAME2 ,DELV_STR1 ,DELV_STR2 ,DELV_STREET ,DELV_CITY ,DELV_CN ,DELV_CN_NAME ,DELV_FRISTNAME ,DELV_LASTNAME ,DELV_ANRED ,DELV_PRSNR ,TEL_NUMBER1 ,TEL_EXTENS1 ,DELV_TEL ,PUR_TOTAL ,TAX_TOTAL ,NET_TOTAL ,DEL_PLACE ,HEAD_LINE ,REMARK ,ITEM_LINE,TDNAME .*** prepare report dataSTART-OF-SELECTION."显示清单用于显示当前所抓取的所有的清单PERFORM SHOW_LIST.*** output reportEND-OF-SELECTION.*==================================================================== ==** List Events*==================================================================== ==**** page headerTOP-OF-PAGE.*** page header after first listTOP-OF-PAGE DURING LINE-SELECTION.*** page footerEND-OF-PAGE.*** when double clickAT LINE-SELECTION.*** when click some icon (function code)*at user-command.Include的代码如下:ZMMR099TOP:*&---------------------------------------------------------------------**& 包含 ZMMR099TOP*&---------------------------------------------------------------------*TABLES: EKKO , EKPO , NAST ,TNAPR.data XSCREEN(1) type C.data GS_PO_HEAER like ZMPO_HERDER.data GS_PO_HEAER1 like ZMPO_HERDER occurs 0 with header line .data: LT_ZPO_ITEM like ZMPO_ITEM occurs 0 with header line.data: GI_RETCODE type I,ADRNR2 type T001W-ADRNR,SUPP_NAME1 like ADRC-NAME1,SUPP_NAME2 like ADRC-NAME1,******************************************LIFNR like LFA1-LIFNR,UKURS like TCURR-UKURS,******************************************SUPP_NAMECO like ADRC-NAME_CO,SUPP_STR1 like ADRC-STR_SUPPL1,SUPP_STR2 like ADRC-STR_SUPPL1,SUPP_STREET like ADRC-STREET,SUPP_CITY like ADRC-CITY1,SUPP_CN like ADRC-COUNTRY,SUPP_CN_NAME like T005T-LANDX,SUPP_ALL type STRING,"SUPP_FRISTNAME like KNVK-NAMEV,SUPP_LASTNAME like KNVK-NAME1,SUPP_ANRED like KNVK-ANRED,SUPP_PRSNR like KNVK-PRSNR,TEL_NUMBER like ADR2-TEL_NUMBER,TEL_EXTENS like ADR2-TEL_EXTENS,FAX_NUMBER like ADRC-FAX_NUMBER,SUPP_TEL like KNVK-TELF1,ADRNR type T001W-ADRNR,KTOKK like LFA1-KTOKK,DELV_NAME1 like ADRC-NAME1,DELV_NAME2 like ADRC-NAME1,DELV_CO like ADRC-NAME_CO,DELV_STR1 like ADRC-STR_SUPPL1, "street2 DELV_STR2 like ADRC-STR_SUPPL1, "street3 DELV_STREET like ADRC-STREET,DELV_CITY like ADRC-CITY1,DELV_CN like ADRC-COUNTRY,DELV_CN_NAME like T005T-LANDX,DELV_FRISTNAME like KNVK-NAMEV,DELV_LASTNAME like KNVK-NAME1,DELV_ANRED like KNVK-ANRED,DELV_PRSNR like KNVK-PRSNR,TEL_NUMBER1 like ADR2-TEL_NUMBER,TEL_EXTENS1 like ADR2-TEL_EXTENS,DELV_TEL like KNVK-TELF1,PUR_TOTAL like EKPO-NETWR,TAX_TOTAL like EKPO-NETWR,NET_TOTAL like EKPO-NETWR,COM_PLACE like ADRC-STREET,DEL_PLACE like LFA1-STRAS,HEAD_LINE like TLINE occurs 0 with header line,REMARK like TLINE-TDLINE ,ITEM_LINE like TLINE occurs 0 with header line,TDNAME like RSTXT-TDNAME,GAP type C value ' ',GAP1 type C value '-',POMENGE1 like EKPO-MENGE,POMENGE2 like EKPO-MENGE.data:AUTH_BUKRS like EKKO-BUKRS.data: ITCURR like TCURR occurs 0 with header line. data I_GDATU like EKKO-BEDAT."sy-datum.data: BEGIN OF g_itab OCCURS 0,EBELN like ekko-ebeln,EKORG LIKE EKKO-EKORG,END OF g_itab.TYPE-POOLS: slis.*TYPES: BEGIN OF wa_EKKO,* mark type c,* ebeln TYPE EKKO-ebeln,* ekorg TYPE EKKO-ekorg,* ekgrp type ekko-ekgrp ,* bedat type ekko-bedat ,* lifnr type ekko-lifnr ,* BSART type EKKO-BSART ,* END OF wa_EKKO.*data: BEGIN OF it_EKKO OCCURS 0,mark type c,ebeln TYPE EKKO-ebeln,ekorg TYPE EKKO-ekorg,ekgrp type ekko-ekgrp ,bedat type ekko-bedat ,lifnr type ekko-lifnr ,BSART type EKKO-BSART ,END OF it_EKKO."DATA: it_EKKO TYPE TABLE OF wa_EKKO ,data:l_pos TYPE i VALUE 1.DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,wa_fieldcat TYPE slis_fieldcat_alv.data gt_events TYPE slis_t_event.data: P_EBELN like ekko-ebeln.data: LS_JOB_INFO1 type SSFCRESCL.data :job_output_options TYPE ssfcresop.data: OBJBIN like SOLISTI1 occurs 10 with header line,DOCDATA like SODOCCHGI1,OBJTXT like SOLISTI1 occurs 10 with header line,OBJPACK like SOPCKLSTI1 occurs 1 with header line,RECLIST like SOMLRECI1 occurs 1 with header line,OBJHEAD like SOLISTI1 occurs 1 with header line.data: i_pdf_tab LIKE TABLE OF tline WITH HEADER LINE.data: g_filesize TYPE i.data: TAB_LINES type I.data: P_XSCRN TYPE c VALUE 'X'.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.SELECT-OPTIONS: s_ebeln FOR ekko-ebeln ,s_ekorg FOR ekko-ekorg ,s_ekgrp FOR ekko-ekgrp ,s_bedat FOR ekko-bedat ,s_lifnr FOR ekko-lifnr ,S_BSART FOR EKKO-BSART ."parameters P_XSCRN as checkbox default 'X'.SELECTION-SCREEN END OF BLOCK b1.Include ZMMR099F01代码如下:*&---------------------------------------------------------------------**& 包含 ZMMR099F01*&---------------------------------------------------------------------*FORM entry_neu USING return_code us_screen.DATA: li_retcode TYPE sy-subrc.xscreen = us_screen.PERFORM processing USING us_screenCHANGING li_retcode.IF li_retcode NE 0.return_code = 1.ELSE.return_code = 0.ENDIF.ENDFORM. "entry_neu*&---------------------------------------------------------------------**& Form processing*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->PROC_SCREEN text* -->CF_RETCODE text*----------------------------------------------------------------------*FORM processing USING proc_screenCHANGING cf_retcode.DATA: lc_fm_name TYPE rs38l_fnam.DATA: ls_control_param TYPE ssfctrlop.DATA: ls_composer_param TYPE ssfcompop.DATA: lc_formname TYPE tdsfname.* Clear variantCLEAR gs_po_heaer.* SmartForm from customizing table TNAPRlc_formname = tnapr-sform.* select print dataPERFORM get_data CHANGING cf_retcode.READ TABLE gs_po_heaer1 INDEX 1.MOVE-CORRESPONDING gs_po_heaer1 TO gs_po_heaer.* delete adjacent duplicates from gs_po_header comparing eleln.IF cf_retcode = 0.PERFORM set_print_param CHANGING ls_control_paramls_composer_paramcf_retcode.ENDIF.IF cf_retcode = 0.* determine smartform function module for invoiceCALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGformname = lc_formnameIMPORTINGfm_name = lc_fm_nameEXCEPTIONSno_form = 1no_function_module = 2OTHERS = 3.IF sy-subrc <> 0.* error handlingcf_retcode = sy-subrc.PERFORM protocol_update.ENDIF.ENDIF.CLEAR ls_job_info1.CALL FUNCTION lc_fm_namecontrol_parameters = ls_control_paramoutput_options = ls_composer_paramuser_settings = spacegs_po_heaer = gs_po_heaerpur_total = pur_totaltax_total = tax_totalnet_total = net_totaldel_place = del_placeremark = remarkIMPORTINGjob_output_info = ls_job_info1TABLESit_zpo_item = lt_zpo_item[]EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5.* ls_control_param-no_open = 'X'.break abap01.IF sy-subrc <> 0.* error handlingcf_retcode = sy-subrc.PERFORM protocol_update.* get SmartForm protocoll and store it in the NAST protocoll PERFORM add_smfrm_prot.ENDIF.*ls_control_param-getotf = 'X'.ls_control_param-no_dialog = 'X'.ls_control_param-langu = sy-langu.CLEAR ls_job_info1.CALL FUNCTION lc_fm_namecontrol_parameters = ls_control_paramoutput_options = ls_composer_paramuser_settings = spacegs_po_heaer = gs_po_heaerpur_total = pur_totaltax_total = tax_totalnet_total = net_totaldel_place = del_placeremark = remarkIMPORTINGjob_output_info = ls_job_info1TABLESit_zpo_item = lt_zpo_item[]EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5.PERFORM savapdf.CLEAR gs_po_heaer.ENDFORM. "PROCESSING*&---------------------------------------------------------------------**& Form set_print_param*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->CS_CONTROL_PARAM text* -->CS_COMPOSER_PARAM text* -->CF_RETCODE text*----------------------------------------------------------------------*FORM set_print_param CHANGING cs_control_param TYPE ssfctrlopcs_composer_param TYPE ssfcompopcf_retcode TYPE sy-subrc.DATA: ls_itcpo TYPE itcpo.DATA: lf_repid TYPE sy-repid.DATA: lf_device TYPE tddevice.cs_composer_param-tddest = 'LP01'.cs_composer_param-tdimmed = 'X'.IF xscreen = 'X'.cs_composer_param-tdnoprint = 'X'.ENDIF.cs_control_param-device = 'PRINTER'.* cs_control_param-device = 'MAIL'.cs_control_param-no_dialog = 'X'.cs_control_param-preview = xscreen.cs_control_param-langu = 'M'.ENDFORM. "set_print_param*&---------------------------------------------------------------------**& Form protocol_update*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM protocol_update .CHECK xscreen = space.CALL FUNCTION 'NAST_PROTOCOL_UPDATE'EXPORTINGmsg_arbgb = syst-msgidmsg_nr = syst-msgnomsg_ty = syst-msgtymsg_v1 = syst-msgv1msg_v2 = syst-msgv2msg_v3 = syst-msgv3msg_v4 = syst-msgv4EXCEPTIONSOTHERS = 1.ENDFORM. " protocol_update*&---------------------------------------------------------------------**& Form add_smfrm_prot*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM add_smfrm_prot .DATA: lt_errortab TYPE tsferror.FIELD-SYMBOLS: <fs_errortab> TYPE LINE OF tsferror.* get smart form protocollCALL FUNCTION 'SSF_READ_ERRORS'IMPORTINGerrortab = lt_errortab.* add smartform protocoll to nast protocollLOOP AT lt_errortab ASSIGNING <fs_errortab>.CALL FUNCTION 'NAST_PROTOCOL_UPDATE'EXPORTINGmsg_arbgb = <fs_errortab>-msgidmsg_nr = <fs_errortab>-msgnomsg_ty = <fs_errortab>-msgtymsg_v1 = <fs_errortab>-msgv1msg_v2 = <fs_errortab>-msgv2msg_v3 = <fs_errortab>-msgv3msg_v4 = <fs_errortab>-msgv4EXCEPTIONSOTHERS = 1.ENDLOOP.ENDFORM. " add_smfrm_prot*&---------------------------------------------------------------------**& Form protocol_update_spool*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->SYST_MSGNO text* -->P_LS_SPOOLID text* -->P_SPACE1 text* -->P_SPACE2 text* -->P_SPACE3 text*----------------------------------------------------------------------*FORM protocol_update_spool USING syst_msgnop_ls_spoolidp_space1p_space2p_space3.syst-msgid = 'ME'.syst-msgno = syst_msgno.syst-msgv1 = p_ls_spoolid.CONDENSE syst-msgv1.CHECK xscreen = space.CALL FUNCTION 'NAST_PROTOCOL_UPDATE'EXPORTINGmsg_arbgb = syst-msgidmsg_nr = syst-msgnomsg_ty = syst-msgtymsg_v1 = syst-msgv1msg_v2 = p_space1msg_v3 = p_space2msg_v4 = p_space3EXCEPTIONSOTHERS = 1.ENDFORM. " protocol_update_spool*&---------------------------------------------------------------------**& Form get_data*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->CF_RETCODE text*----------------------------------------------------------------------*FORM get_data CHANGING cf_retcode.DATA lv_ebeln LIKE ekko-ebeln.DATA: cnt(2) TYPE c,persno(10) TYPE c.IF nast-objky+10 NE space.nast-objky = nast-objky+16(10).ELSE.nast-objky = nast-objky.ENDIF.lv_ebeln = nast-objky.SELECT DISTINCT ekko~bukrs ekko~lifnr ekko~ebeln ekko~bsart ekko~ae datekko~inco1 ekko~inco2 ekpo~werks ekko~waers ekko~frgzu ekko~ ztermekko~ernam ekko~bedat ekko~ekorg ekko~ekgrp ekko~wkurs"汇率INTO CORRESPONDING FIELDS OF TABLE gs_po_heaer1FROM ekkoJOIN ekpo ON ekpo~ebeln = ekko~ebelnWHERE ekko~ebeln = lv_ebeln.LOOP AT gs_po_heaer1.SELECT SINGLE lgort INTO gs_po_heaer1-lgort FROM ekpo WHERE ekpo~ ebeln = gs_po_heaer1-ebeln.SELECT SINGLE bednr INTO gs_po_heaer1-bednr FROM eban WHERE eban~ ebeln = gs_po_heaer1-ebeln.SELECT SINGLE afnam INTO gs_po_heaer1-afnam FROM eban WHERE eban~ ebeln = gs_po_heaer1-ebeln.********************************************************************* ************************************SELECT SINGLE ukurs INTO gs_po_heaer1-ukurs FROM tcurr WHERE tcu rr~kurst EQ 'M'AND fcurr EQ 'USD' "从货币AND tcurr EQ gs_po_heaer1-waers "最终货币AND tcurr~gdatu <= gs_po_heaer1-bedatAND gdatu > i_gdatu.* *******************************IF gs_po_heaer1-bukrs = 1000.gs_po_heaer1-ztitel = '香港天惠有限公司'.ELSEIF gs_po_heaer1-bukrs = 3000.gs_po_heaer1-ztitel = '东莞添威电子制品有限公司'.ENDIF.**************************************************************************************************** *************************************MODIFY gs_po_heaer1.ENDLOOP.SELECT ekpo~ebeln ekpo~ebelp ekpo~matnr ekpo~ematn ekpo~txz01ekpo~menge ekpo~meins ekpo~netpr ekko~waers ekko~bsartekpo~netwr ekpo~peinh ekpo~mwskz ekpo~infnr ekpo~werksekpo~bukrs ekpo~bprme ekpo~bpumz ekpo~bpumn ekpo~zzsub_matnr ekpo~banfn ekpo~bednr ekpo~loekz ekpo~idnlf ekpo~zzdeudate* "EKET~MENGE EKET~EINDT* ekpo~umren ekpo~umrez ekpo~lmeinINTO CORRESPONDING FIELDS OF TABLE lt_zpo_itemFROM ekpoJOIN ekko ON ekpo~ebeln = ekko~ebeln* JOIN EKET ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP WHERE ekpo~ebeln = lv_ebeln .* AND ekpo~loekz <> 'L'.CLEAR pur_total.CLEAR tax_total.CLEAR net_total.DESCRIBE TABLE lt_zpo_item LINES sy-tmaxl.IF sy-tmaxl = 0.MESSAGE i004(zmseg).STOP.ENDIF.LOOP AT lt_zpo_item.************************添加物料版次DATA: max_aennr(12) TYPE c.SELECT MAX( aeoi~aennr ) INTO max_aennr FROM aeoi WHERE aeoi~oitx t = '修改版本' AND aeoi~objkt = lt_zpo_item-matnr.SELECT SINGLE aeoi~revlv INTO lt_zpo_item-revlv FROM aeoi WHERE aeoi~aennr = max_aennr.******************************************CLEAR lt_zpo_item-atwrt. CLEAR lt_zpo_item-atwrt2. CLEAR lt _zpo_item-atwrt3.CLEAR lt_zpo_item-ematn. CLEAR lt_zpo_item-ematn2.IF lt_zpo_item-loekz = 'L'.lt_zpo_item-menge = 0.ENDIF.IF lt_zpo_item-zzsub_matnr = ''.SELECT SINGLE atwrt INTO lt_zpo_item-atwrtFROM auspWHERE objek = lt_zpo_item-matnrAND atinn = '0000000008'AND atwrt <> ''.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt2FROM auspWHERE objek = lt_zpo_item-matnrAND atinn = '0000000034'AND atwrt <> ''.CONCATENATE lt_zpo_item-atwrt lt_zpo_item-atwrt2 INTO lt_zpo_it em-ematn2.* IF sy-subrc = 0.* lt_zpo_item-ematn = lt_zpo_item-atwrt.* ENDIF.CLEAR lt_zpo_item-atwrt.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt3FROM auspWHERE objek = lt_zpo_item-matnrAND atinn = '0000000009'AND atwrt <> ''.IF sy-subrc = 0.CONCATENATE lt_zpo_item-atwrt3 ':' lt_zpo_item-ematn2 INTO l t_zpo_item-ematn2.ENDIF.ELSE.SELECT SINGLE atwrt INTO lt_zpo_item-atwrtFROM auspWHERE objek = lt_zpo_item-zzsub_matnrAND atinn = '0000000008'AND atwrt <> ''.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt2FROM auspWHERE objek = lt_zpo_item-zzsub_matnrAND atinn = '0000000034'AND atwrt <> ''.CONCATENATE lt_zpo_item-atwrt lt_zpo_item-atwrt2 INTO lt_zpo_it em-ematn2.* IF sy-subrc = 0.* lt_zpo_item-ematn = lt_zpo_item-atwrt.* ENDIF.CLEAR lt_zpo_item-atwrt.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt3FROM auspWHERE objek = lt_zpo_item-zzsub_matnrAND atinn = '0000000009'AND atwrt <> ''.IF sy-subrc = 0.CONCATENATE lt_zpo_item-atwrt3 ':' lt_zpo_item-ematn2 INTO l t_zpo_item-ematn2.ENDIF.ENDIF.SELECT SINGLE zeivr INTO lt_zpo_item-zeivrFROM maraWHERE matnr = lt_zpo_item-matnr.*when the currency is JPY,IF lt_zpo_item-waers = 'JPY'.lt_zpo_item-netpr = lt_zpo_item-netpr * 100.ENDIF.*when the currency is JPYCLEAR: pomenge1,pomenge2.SELECT b~maktx a~mfrpn a~wrkstINTO (lt_zpo_item-maktx,lt_zpo_item-mfrpn,lt_zpo_item-wrkst)FROM mara AS aJOIN makt AS b ON a~matnr = b~matnrWHERE a~matnr = lt_zpo_item-ematn.ENDSELECT.IF lt_zpo_item-peinh <> 0.lt_zpo_item-netpr = lt_zpo_item-netpr / lt_zpo_item-peinh.ENDIF.CLEAR:pomenge1,pomenge2.pomenge1 = lt_zpo_item-menge.IF frac( pomenge1 ) <> 0.lt_zpo_item-menge1 = pomenge1 .ELSE.lt_zpo_item-menge1 = trunc( pomenge1 ).ENDIF.pomenge2 = lt_zpo_item-menge * lt_zpo_item-bpumz / lt_zpo_item-bpumn.lt_zpo_item-netwr = pomenge2 * lt_zpo_item-netpr.IF frac( pomenge2 ) <> 0.lt_zpo_item-menge2 = pomenge2 .ELSE.lt_zpo_item-menge2 = trunc( pomenge2 ).ENDIF.lt_zpo_item-netpr1 = lt_zpo_item-netpr.lt_zpo_item-netwr1 = lt_zpo_item-netwr.CONDENSE lt_zpo_item-menge1.CONDENSE lt_zpo_item-menge2.CONDENSE lt_zpo_item-netpr1.CONDENSE lt_zpo_item-netwr1.CLEAR lt_zpo_item-item_tax.IF lt_zpo_item-mwskz = 'J0' OR lt_zpo_item-mwskz = 'Y0' OR lt_zpo _item-mwskz = 'Z0'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 0.ENDIF.IF lt_zpo_item-mwskz = 'J1' OR lt_zpo_item-mwskz = 'Y1' OR lt_zpo _item-mwskz = 'Z1'.lt_zpo_item-tax_code = '17%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 17 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J2' OR lt_zpo_item-mwskz = 'Z2'.lt_zpo_item-tax_code = '11%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 11 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J3' OR lt_zpo_item-mwskz = 'Z3'.lt_zpo_item-tax_code = '7%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 7 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J4' OR lt_zpo_item-mwskz = 'Z4'.lt_zpo_item-tax_code = '6%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 6 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J5'.lt_zpo_item-tax_code = '4%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 4 / 100.ENDIF.IF lt_zpo_item-mwskz = 'Z5'.lt_zpo_item-tax_code = '3%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 3 / 100.ENDIF.lt_zpo_item-item_tax1 = lt_zpo_item-item_tax.lt_zpo_item-item_total = lt_zpo_item-item_tax + lt_zpo_item-netwr.CONDENSE lt_zpo_item-item_tax1.tax_total = tax_total + lt_zpo_item-item_tax.net_total = net_total + lt_zpo_item-netwr.pur_total = net_total + tax_total.*get po info textCLEAR tdname.* CONCATENATE LT_ZPO_ITEM-INFNR LT_ZPO_ITEM-BUKRS '0'* INTO TDNAME. " LT_ZPO_ITEM-WERKSCONCATENATE lt_zpo_item-ebeln lt_zpo_item-ebelpINTO tdname. " LT_ZPO_ITEM-WERKSCALL FUNCTION 'READ_TEXT'EXPORTINGclient = sy-mandtid = 'F01'language = '1'name = tdnameobject = 'EKPO'* ARCHIVE_HANDLE = 0* LOCAL_CAT = ' '* IMPORTING* HEADER =TABLESlines = item_lineEXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8 .IF sy-subrc = 0.LOOP AT item_line.CONCATENATE lt_zpo_item-itemtext item_line-tdline INTOlt_zpo_item-itemtext.ENDLOOP.CLEAR item_line.ENDIF.IF lt_zpo_item-itemtext IS NOT INITIAL.CONCATENATE 'Remark: ' lt_zpo_item-itemtext INTO lt_zpo_item-itemtext.ENDIF.SELECT SINGLE eindt INTO lt_zpo_item-eindtFROM eket WHERE ebeln = lt_zpo_item-ebelnAND ebelp = lt_zpo_item-ebelp.********************************修改再计划日期为交货日期IF lt_zpo_item-zzdeudate IS NOT INITIAL.lt_zpo_item-eindt = lt_zpo_item-zzdeudate.ENDIF.PERFORM delete_zero USING lt_zpo_item-ebelp.MODIFY lt_zpo_item.CLEAR lt_zpo_item.ENDLOOP.LOOP AT gs_po_heaer1.*&gain header texttdname = gs_po_heaer1-ebeln.CALL FUNCTION 'READ_TEXT'EXPORTING* CLIENT = SY-MANDTid = 'F01'language = sy-languname = tdnameobject = 'EKKO'* ARCHIVE_HANDLE = 0* LOCAL_CAT = ' '* IMPORTING* HEADER =* OLD_LINE_COUNTER =TABLESlines = item_line EXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8.IF sy-subrc = 0.READ TABLE item_line INDEX 1.MOVE item_line-tdline TO gs_po_heaer1-mrpno.ENDIF.SELECT SINGLE eknam smtp_addrINTO (gs_po_heaer1-eknam,gs_po_heaer1-smtp_addr2)FROM t024WHERE ekgrp = gs_po_heaer1-ekgrp.SELECT adrnrINTO adrnr2FROM t001wWHERE werks = gs_po_heaer1-werks.IF sy-subrc = 0.SELECT streetINTO gs_po_heaer1-addressFROM adrcWHERE addrnumber = adrnr2.ENDSELECT.ENDIF.ENDSELECT.SELECT adrnrINTO adrnrFROM lfa1WHERE lifnr = gs_po_heaer1-lifnr.ENDSELECT.SELECT name1 name2 city1 name_co str_suppl1 str_suppl2 country street tel_number fax_numberINTO (supp_name1,supp_name2,supp_city,supp_nameco,supp_str1, supp_str2,supp_cn,supp_street,tel_number,fax_number) FROM adrcWHERE addrnumber = adrnr.ENDSELECT.SELECT landxINTO supp_cn_nameFROM t005tWHERE spras = 'E'AND land1 = supp_cn.ENDSELECT.CONDENSE supp_name1.CONDENSE supp_name2.gs_po_heaer1-supp_co = supp_nameco.gs_po_heaer1-supp_strone = supp_str1.gs_po_heaer1-supp_strtwo = supp_str2.gs_po_heaer1-supp_tel = tel_number.gs_po_heaer1-supp_fax = fax_number.gs_po_heaer1-address = supp_street.CONCATENATE supp_street supp_city supp_cn_nameINTO gs_po_heaer1-supp_cn SEPARATED BY gap .CONCATENATE supp_name1 supp_name2 INTO gs_po_heaer1-supp_name SEPARATED BY gap.SELECT SINGLE namev name1 anred prsnrINTO (supp_fristname,supp_lastname,supp_anred,supp_prsnr)FROM knvkWHERE lifnr = gs_po_heaer1-lifnr.CONCATENATE supp_lastname supp_fristname INTO gs_po_heaer1-supp_c ontact.SELECT SINGLE koinh INTO gs_po_heaer1-koinh FROM lfbk WHERE lifnr = gs_po_heaer1-lifnr.SELECT SINGLE smtp_addr INTO gs_po_heaer1-smtp_addr1FROM adr6 WHERE addrnumber = adrnr.SELECT SINGLE text1INTO gs_po_heaer1-text1FROM t052uWHERE zterm = gs_po_heaer1-zterm.IF gs_po_heaer1-inco1 = space.SELECT SINGLE inco1 inco2INTO (gs_po_heaer1-inco1,gs_po_heaer1-inco2)FROM lfm1WHERE lifnr = gs_po_heaer1-lifnrAND ekorg = gs_po_heaer1-ekorg.ELSE.SELECT SINGLE bezei INTO gs_po_heaer1-inco2FROM tinctWHERE inco1 = gs_po_heaer1-inco1AND spras = '1'.ENDIF.CLEAR persno.SELECT SINGLE persnumber INTO persnoFROM user_addrpWHERE bname = gs_po_heaer1-ernam.IF sy-subrc = 0 AND gs_po_heaer1-smtp_addr2 = space.SELECT SINGLE smtp_addr INTO gs_po_heaer1-smtp_addr2FROM adr6WHERE persnumber = persno.ENDIF.CLEAR lt_zpo_item.READ TABLE lt_zpo_item WITH KEY ebeln = gs_po_heaer1-ebeln.IF sy-subrc = 0.gs_po_heaer1-banfn = lt_zpo_item-banfn.IF lt_zpo_item-tax_code NE space.CONCATENATE '(VAT' lt_zpo_item-tax_code ')' INTO gs_po_heaer1 -taxcode.ENDIF.ENDIF.CLEAR cnt.*************采购单版本DATA:BEGIN OF tcdpos,changenr LIKE cdpos-changenr,END OF tcdpos.DATA:it_cdpos LIKE tcdpos OCCURS 0 WITH HEADER LINE.SELECT changenr INTO CORRESPONDING FIELDS OF TABLE it_cdpos FROM cdposWHERE objectid = gs_po_heaer1-ebeln AND tabname = 'EKPO' AND ( fname = 'MENGE' OR fname = 'NETWR' OR fname = 'KEY' OR fname = 'LO EKZ' )."SELECT COUNT(*) INTO cnt FROM cdpos WHERE objectid = gs_po_heae r1-ebeln AND tabname = 'EKPO' AND ( fname = 'MENGE' OR fname = 'NET WR' ).DELETE ADJACENT DUPLICATES FROM it_cdpos .cnt = lines( it_cdpos ).CONCATENATE 'Rev.' ' ' cnt INTO gs_po_heaer1-count.MODIFY gs_po_heaer1.CLEAR gs_po_heaer1.ENDLOOP.ENDFORM. "get_data*&---------------------------------------------------------------------**& Form delete_zero*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_P1 text*----------------------------------------------------------------------*FORM delete_zero USING p_p1.CALL FUNCTION 'BKK_DELETE_LEADING_ZERO'CHANGINGc_field = p_p1.ENDFORM. " delete_zero*&---------------------------------------------------------------------**& Form SHOW_LIST*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM show_list .SELECT ebeln ekorg ekgrp bedat lifnr FROM ekkoINTO CORRESPONDING FIELDS OF TABLE it_ekkoWHERE ebeln IN s_ebeln。