博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SAP 金税接口代码 供参考
阅读量:5748 次
发布时间:2019-06-18

本文共 68211 字,大约阅读时间需要 227 分钟。

程序可以通过抓取 客户 开票信息等 下载文本 导出

 

需要事先创建好几个structure 

zc0000sdt0016,
zc0000sdt0017

 

REPORT  zc0000sdr0016 NO STANDARD PAGE HEADING                     LINE-COUNT 58                     LINE-SIZE 170.TABLES:vbrk,vbrp,t001.*----------------------------------------------------------------------** type define*----------------------------------------------------------------------*TYPES: BEGIN OF ty_vbrk,         vbeln  TYPE vbrk-vbeln,"invoice number         fkart  TYPE vbrk-fkart, "ERPInvoiceType         waerk  TYPE vbrk-waerk, "Currency         vkorg  TYPE vbrk-vkorg, "Sales Organization         vtweg  TYPE vbrk-vtweg, "Distribution Channel         knumv  TYPE vbrk-knumv,         fkdat  TYPE vbrk-fkdat, "Invoice data         gjahr  TYPE vbrk-gjahr, "Year         bukrs  TYPE vbrk-bukrs,         taxk1  TYPE vbrk-taxk1, "Invoice type(eg:0 - Expore Invoice, 1 - VAT Inovice , 2 - Credit Inovice)BillingType         kunag  TYPE vbrk-kunag, "Customer code         sfakn  TYPE vbrk-sfakn, "Credit Notes         fksto  TYPE vbrk-fksto, "Cancel flag          del   TYPE c,       END OF ty_vbrk,       BEGIN OF ty_vbrp,         vbeln  TYPE vbrp-vbeln, "Invoice number         posnr  TYPE vbrp-posnr, "Item number         fkimg  TYPE vbrp-fkimg, "Quantity         vrkme  TYPE vbrp-vrkme, "Unit         netwr  TYPE vbrp-netwr, "Sum         vbelv  TYPE vbrp-vbelv, "First Document         aubel  TYPE vbrp-aubel, "Sales Document         matnr  TYPE vbrp-matnr, "Material Number         arktx  TYPE vbrp-arktx, "Product chinese name         ernam  TYPE vbrp-ernam, "Person code         mwsbp  TYPE vbrp-mwsbp, "Tax       END OF ty_vbrp,       BEGIN OF ty_out,          txt TYPE string,       END OF ty_out,        BEGIN OF ty_errlog,  "Linda 20141120 add         str(100) TYPE c,    "Linda 20141120 add        END OF ty_errlog.   "Linda 20141120 add*----------------------------------------------------------------------**  Internal Tables define*----------------------------------------------------------------------*DATA: it_blitems       TYPE STANDARD TABLE OF zc0000sdt0016,"is struction      it_tbillno       TYPE STANDARD TABLE OF zc0000sdt0017,"is table,      it_kunnr         TYPE jito_kunnr_range_tt,      it_vbeln         TYPE jit_vbeln_vl_range_tt,      it_out           TYPE STANDARD TABLE OF ty_out,"use for output      it_errlog        TYPE STANDARD TABLE OF ty_errlog,  "Linda 20141120 add*----------------------------------------------------------------------**  Workarea define*----------------------------------------------------------------------*      iw_vbrk          TYPE ty_vbrk,      iw_tbillno       TYPE zc0000sdt0017,"is table      iw_blitems       TYPE zc0000sdt0016,"is struction      iw_kunnr         TYPE jito_kunnr_range,      iw_vbeln         TYPE jit_vbeln_vl_range,      iw_out           TYPE ty_out,      iw_errlog        TYPE ty_errlog,  "Linda 20141120 add*----------------------------------------------------------------------**  Variables define*----------------------------------------------------------------------*      w_time           TYPE char6,           "run time      w_path           TYPE rlgrap-filename, "path      w_filename       TYPE rlgrap-filename, "file name      w_data1          TYPE i,      w_data2          TYPE i,      w_filter         TYPE string." VALUE 'Text Files(*.txt)|*.txt'.Linda 20141024*----------------------------------------------------------------------** Constants define*----------------------------------------------------------------------*CONSTANTS: cos_vl        TYPE char1  VALUE '\',           cos_open      TYPE char4  VALUE 'OPEN',           cos_close     TYPE char5  VALUE 'CLOSE',           cos_transfer  TYPE char8  VALUE 'TRANSFER',           cos_comma     TYPE char1  VALUE ','.          "Linda 20141120 addSELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-003.PARAMETERS:"p_batch   TYPE  char20,                      "batch   1           p_bukrs   TYPE  vbrk-bukrs OBLIGATORY.        "companySELECT-OPTIONS:s_fkdat    FOR  vbrk-fkdat NO-EXTENSION.  "Billing date for billing index and printout  2SELECTION-SCREEN BEGIN OF LINE .SELECTION-SCREEN COMMENT 1(31) text-009 .                "enter data rangePARAMETER p_data1  TYPE char3.SELECTION-SCREEN COMMENT 40(4) text-010.PARAMETER p_data2  TYPE char3.SELECTION-SCREEN COMMENT 70(79) text-008.SELECTION-SCREEN END OF LINE.SELECT-OPTIONS:           s_vbeln     FOR  vbrk-vbeln,               "Billing Document 3           s_kunag     FOR  vbrk-kunag,               "Payer  4           s_matnr     FOR  vbrp-matnr NO-EXTENSION,  "Material Number 5           s_aubel     FOR  vbrp-aubel NO-EXTENSION,  "Sales Document 6           s_vkorg     FOR  vbrk-vkorg NO-EXTENSION OBLIGATORY.PARAMETERS:p_gjahr     TYPE  vbrk-gjahr.              "Fiscal YearPARAMETERS:p_nonrep    TYPE c AS CHECKBOX. "compare or notSELECTION-SCREEN END OF BLOCK b1.SELECTION-SCREEN BEGIN OF LINE.PARAMETER p_check3 RADIOBUTTON GROUP rad DEFAULT 'X' USER-COMMAND rad.SELECTION-SCREEN COMMENT 4(20) text-c03 FOR FIELD p_check3."TXT formatPARAMETER p_check4 RADIOBUTTON GROUP rad.SELECTION-SCREEN COMMENT 28(30) text-c04 FOR FIELD p_check4."CSV formatSELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.SELECTION-SCREEN BEGIN OF LINE.PARAMETER p_check2 TYPE c RADIOBUTTON GROUP rads DEFAULT 'X' USER-COMMAND rad2.SELECTION-SCREEN COMMENT 4(20) text-c02 FOR FIELD p_check2."output to serverSELECTION-SCREEN END OF LINE.PARAMETERS: p_path2(1024) TYPE c LOWER CASE                      VISIBLE LENGTH 200.SELECTION-SCREEN BEGIN OF LINE.PARAMETER p_check1 RADIOBUTTON GROUP rads.SELECTION-SCREEN COMMENT 4(20) text-c01 FOR FIELD p_check1."SELECTION-SCREEN END OF LINE.PARAMETERS: p_path(1024) TYPE c LOWER CASE                      VISIBLE LENGTH 200.SELECTION-SCREEN END OF BLOCK b3.*----------------------------------------------------------------------** INITIALIZATION*----------------------------------------------------------------------*INITIALIZATION.* init*----------------------------------------------------------------------** AT SELECTION-SCREEN ON VALUE-REQUEST*----------------------------------------------------------------------*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.  PERFORM frm_save_file CHANGING p_path.*----------------------------------------------------------------------** AT SELECTION-SCREEN OUTPUT*----------------------------------------------------------------------*AT SELECTION-SCREEN OUTPUT.  IF p_data1 <> space AND p_data2 <> space. "Linda 20141120 add    REFRESH:s_fkdat.  "Linda 20141024 add  ENDIF.                  "Linda 20141120 add  IF p_data1 <> space AND p_data2 <> space.    PERFORM frm_chang_data USING p_data1                           CHANGING s_fkdat-low.    PERFORM frm_chang_data USING p_data2                          CHANGING s_fkdat-high.    APPEND s_fkdat.  ENDIF.*----------------------------------------------------------------------** AT SELECTION-SCREEN*----------------------------------------------------------------------*AT SELECTION-SCREEN.*  WHEN 'ONLI'.    PERFORM frm_init.    IF p_path = space AND p_check1 = 'X'.      SET CURSOR FIELD 'P_PATH'.      MESSAGE e001(00) WITH 'Local path can not be space'(018).    ENDIF.    IF p_path2 = space AND p_check2 = 'X'.      SET CURSOR FIELD 'P_PATH2'.      MESSAGE e001(00) WITH 'Server path can not be space'(017).    ENDIF.  CASE sy-ucomm.  WHEN 'RAD' OR 'RAD2'.*   lw_filter = 'Text Files(*.txt)|*.txt|Csv Files(*.csv)|*.csv|Excel Files(*.xls)|*.xls|All Files(*.*)|*.*|'."Text Files(*.txt)|*.txt|'. "All Files(*.*)|*.*|    IF p_check3 = 'X'.      w_filter = 'Text Files(*.txt)|*.txt'(020).    ELSEIF p_check4 = 'X'.      w_filter = 'Csv Files(*.csv)|*.csv'(021).    ENDIF.    CLEAR: p_path,           p_path2. WHEN OTHERS.   ENDCASE.  TRY.      w_data1 = p_data1.      w_data2 = p_data2.    CATCH cx_root.      SET CURSOR FIELD 'P_DATA1'.      MESSAGE e001(00) WITH 'Data range must be number'(014).  ENDTRY.  IF w_data1 > w_data2.    SET CURSOR FIELD 'P_DATA1'.    MESSAGE e001(00) WITH 'Data range must from small to big'(015).  ENDIF.*----------------------------------------------------------------------** START-OF-SELECTION*----------------------------------------------------------------------*START-OF-SELECTION.  w_time = sy-uzeit.  IF s_fkdat[] IS INITIAL AND p_data1 <> space AND p_data2 <> space.    PERFORM frm_chang_data USING p_data1                           CHANGING s_fkdat-low.    PERFORM frm_chang_data USING p_data2                          CHANGING s_fkdat-high.    s_fkdat-sign = 'I'.    s_fkdat-option = 'BT'.    APPEND s_fkdat.  ELSEIF s_fkdat[] IS INITIAL AND p_data1 = space AND p_data2 = space.      MESSAGE s001(00) WITH text-022 text-025 DISPLAY LIKE 'E'.      RETURN.      LEAVE TO LIST-PROCESSING.  ENDIF.  LOOP AT s_kunag.    iw_kunnr-sign = s_kunag-sign.    iw_kunnr-option = s_kunag-option.    iw_kunnr-low = s_kunag-low.    iw_kunnr-high = s_kunag-high.    APPEND iw_kunnr TO it_kunnr.  ENDLOOP.  LOOP AT s_vbeln.    iw_vbeln-sign = s_vbeln-sign.    iw_vbeln-option = s_vbeln-option.    iw_vbeln-low = s_vbeln-low.    iw_vbeln-high = s_vbeln-high.    APPEND iw_vbeln TO it_vbeln.  ENDLOOP.  CHECK it_errlog IS INITIAL.  CALL FUNCTION 'ZBPI_FW_INVOICE_MAHLE_NEW'    EXPORTING     fkdat_fr                = s_fkdat-low     vbeln_fr                = s_vbeln-low     kunnr_fr                = s_kunag-low     matnr_fr                = s_matnr-low     fkdat_to                = s_fkdat-high     vbeln_to                = s_vbeln-high     kunnr_to                = s_kunag-high     matnr_to                = s_matnr-high     aubel_fr                = s_aubel-low     aubel_to                = s_aubel-high     vkorg_fr                = s_vkorg-low     vkorg_to                = s_vkorg-high*     disc_cond_type    = p_disc*     unit_cond_type    = p_unit*     tax_cond_type     = p_tax     bukrs                   = p_bukrs     nonrepeat               = p_nonrep     gjahr                   = p_gjahr    TABLES     zfw_billing_items       = it_blitems     zfw_billingno           = it_tbillno     zfw_kunnr               = it_kunnr     zfw_vbeln               = it_vbeln   EXCEPTIONS     no_data                 = 1     lock_errord             = 2     insert_error            = 3.  CASE sy-subrc.   WHEN 1.     iw_errlog-str = 'No matching data is found.'(012).       APPEND iw_errlog TO it_errlog.   WHEN 2.     iw_errlog-str = 'Lock table error.'(023).       APPEND iw_errlog TO it_errlog.   WHEN 3.     iw_errlog-str = 'Insert table error.'(026).       APPEND iw_errlog TO it_errlog.  ENDCASE.  CHECK it_errlog IS INITIAL.**{ Insert started by Linda on 06-Jan-2015 - CRXX    PERFORM frm_modify_blitems.***} Insert ended   by Linda on 06-Jan-2015 - CRXX* background process  IF p_check2 = 'X'.    PERFORM frm_transfer_sever.  ELSE.*   front process    PERFORM frm_transfer_loc.  ENDIF.*----------------------------------------------------------------------** END-OF-SELECTION*----------------------------------------------------------------------*END-OF-SELECTION.* error log print  LOOP AT it_errlog INTO iw_errlog."    WRITE: /1  iw_errlog-str.  ENDLOOP.  FREE:it_tbillno,       it_out,       iw_vbrk,       iw_tbillno,       iw_blitems,       it_vbeln,       it_kunnr,       it_blitems,       w_time,       w_path,       w_filename,       iw_out.*&---------------------------------------------------------------------**&      Form  frm_transfer_sever*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_transfer_sever .* 拼接文件名  IF p_check3 = 'X'.    CONCATENATE p_bukrs s_vkorg-low sy-datum "LINDA 20140916                w_time '.txt'                INTO w_filename.  ELSEIF p_check4 = 'X'.    CONCATENATE p_bukrs s_vkorg-low sy-datum "LINDA 20140916                w_time '.csv'                INTO w_filename.  ENDIF.* 拼接服务器路径  CONCATENATE p_path2 w_filename         INTO w_path SEPARATED BY cos_vl.* 打开服务器文件  编码是非unicode*  OPEN DATASET w_path FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE.* 打开服务器文件  编码是unicode  OPEN DATASET w_path FOR OUTPUT IN TEXT MODE ENCODING UTF-8.* 打开成功  IF sy-subrc = 0.* 读取    PERFORM frm_write_txt.* 关闭 DATASET    TRY.        CLOSE DATASET w_path.        IF sy-subrc <> 0.* 文件名 &1 &2 &3 操作出错          MESSAGE s001(00) WITH 'File name' w_filename cos_close 'operate Error'  INTO iw_errlog-str. "Linda 20141119        ELSE.* 导出成功          MESSAGE s001(00) WITH 'Output successful' INTO iw_errlog-str.        ENDIF.      CATCH cx_root.                                     "#EC CATCH_ALL        MESSAGE s001(00) WITH 'File name' w_filename cos_close 'operate Error'  INTO iw_errlog-str. "Linda 20141119      CLEANUP.    ENDTRY.  ELSE.*   文件名 &1 &2 &3 操作出错    MESSAGE s001(00) WITH 'File name' w_filename cos_open 'operate Error' INTO iw_errlog-str. "Linda 20141119  ENDIF.  APPEND iw_errlog TO it_errlog.  CLEAR:w_filename,        w_path.ENDFORM.                    " frm_transfer_sever*&---------------------------------------------------------------------**&      Form  frm_transfer_loc*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->p1      text*      <--p2      text*----------------------------------------------------------------------*FORM frm_transfer_loc.  DATA:lw_file TYPE string.* 拼接download数据  LOOP AT it_blitems INTO iw_blitems.    PERFORM frm_con_string   USING     iw_blitems                             CHANGING  iw_out-txt.    APPEND iw_out TO it_out.    CLEAR: iw_blitems,iw_out.  ENDLOOP.  lw_file = p_path.  CALL FUNCTION 'GUI_DOWNLOAD'    EXPORTING      filename                = lw_file "string      filetype                = 'ASC'      codepage                = '8400'  "4110 是utf-8      write_bom               = 'X'    TABLES      data_tab                = it_out    EXCEPTIONS      file_write_error        = 1      no_batch                = 2      gui_refuse_filetransfer = 3      invalid_type            = 4      no_authority            = 5      unknown_error           = 6      header_not_allowed      = 7      separator_not_allowed   = 8      filesize_not_allowed    = 9      header_too_long         = 10      dp_error_create         = 11      dp_error_send           = 12      dp_error_write          = 13      unknown_dp_error        = 14      access_denied           = 15      dp_out_of_memory        = 16      disk_full               = 17      dp_timeout              = 18      file_not_found          = 19      dataprovider_exception  = 20      control_flush_error     = 21      OTHERS                  = 22.  IF sy-subrc <> 0.    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno            DISPLAY LIKE 'E'            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.  ELSE.    iw_errlog-str = 'Output success.'(024).    APPEND iw_errlog TO it_errlog.  ENDIF.ENDFORM.                    " frm_transfer_loc*&---------------------------------------------------------------------**&      Form  frm_save_file*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      <--f_path      text*----------------------------------------------------------------------*FORM frm_save_file  CHANGING f_path TYPE file_table-filename.  DATA: lw_fname   TYPE string,         lw_path   TYPE string,         lw_fpath  TYPE string.  CALL METHOD cl_gui_frontend_services=>file_save_dialog    EXPORTING      file_filter          = w_filter    CHANGING      filename             = lw_fname      path                 = lw_path      fullpath             = lw_fpath    EXCEPTIONS      cntl_error           = 1      error_no_gui         = 2      not_supported_by_gui = 3      OTHERS               = 4.  IF sy-subrc <> 0.    MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.  ENDIF.  f_path = lw_fpath.ENDFORM.                    " frm_save_file*&---------------------------------------------------------------------**&      Form  frm_con_string*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->piw_blitem  text*      <--pw_txt      text*----------------------------------------------------------------------*FORM frm_con_string  USING  piw_blitem  TYPE zc0000sdt0016                    CHANGING pw_txt TYPE string.  DATA: lw_temp TYPE char1024.  FIELD-SYMBOLS: 
TYPE ANY. DO. ASSIGN COMPONENT sy-index OF STRUCTURE piw_blitem TO
. IF sy-subrc <> 0. EXIT. ENDIF. CLEAR lw_temp. lw_temp =
.* 去空格 SHIFT lw_temp LEFT DELETING LEADING space. IF sy-index = 1. pw_txt = lw_temp. ELSE. IF p_check3 = 'X'. "Linda 20141120 add CONCATENATE pw_txt cl_abap_char_utilities=>horizontal_tab lw_temp INTO pw_txt. ELSEIF p_check4 = 'X'. CONCATENATE pw_txt cos_comma lw_temp "Linda 20141120 add INTO pw_txt.* ELSE.* CONCATENATE pw_txt cos_comma lw_temp* INTO pw_txt. ENDIF. ENDIF. ENDDO. UNASSIGN
.ENDFORM. " frm_con_string*&---------------------------------------------------------------------**& Form frm_write_txt*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_write_txt . DATA:lw_out TYPE string.** 上传数据头** 捕获异常* TRY.** 上传服务器* lw_out = LINES( it_blitems ).* CONCATENATE w_filename '#Record' lw_out* INTO lw_out.* CONDENSE lw_out.* TRANSFER lw_out TO w_path.** 判断传输是否成功* IF sy-subrc <> 0.** 文件名 &1 &2 &3 操作出错* MESSAGE s001(00) WITH 'File name' w_path cos_transfer 'operate error'.* ENDIF.* CATCH cx_root.* MESSAGE s001(00) WITH 'File name' w_path cos_transfer 'operate error'.* CLEANUP.* ENDTRY.* 上传数据 LOOP AT it_blitems INTO iw_blitems. PERFORM frm_con_string USING iw_blitems CHANGING lw_out. TRY. TRANSFER lw_out TO w_path.* 判断传输是否成功 IF sy-subrc <> 0.* 文件名 &1 &2 &3 操作出错 MESSAGE s001(00) WITH 'File name' w_path cos_transfer 'operate error'. ENDIF. CATCH cx_root. MESSAGE s001(00) WITH 'File name' w_path cos_transfer 'operate error'. CLEANUP. ENDTRY. CLEAR: iw_blitems,lw_out. ENDLOOP.ENDFORM. " frm_write_txt*&---------------------------------------------------------------------**& Form frm_chang_data*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->fw_data text* <--fw_budat text*----------------------------------------------------------------------*FORM frm_chang_data USING fw_data CHANGING fw_budat. DATA:l_today TYPE p0001-begda, lw_data TYPE t5a4a-dlydy, lw_calc TYPE p0001-begda.* lw_data2 LIKE sy-datum. l_today = sy-datum. lw_data = fw_data. IF fw_data = 0. fw_budat = sy-datum. ELSEIF fw_data > 0. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = l_today days = lw_data months = 0 signum = '+' years = 0 IMPORTING calc_date = lw_calc. fw_budat = lw_calc . ELSE. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = l_today days = lw_data months = 0 signum = '-' years = 0 IMPORTING calc_date = lw_calc. fw_budat = lw_calc . ENDIF.ENDFORM. " frm_chang_data*&---------------------------------------------------------------------**& Form frm_init*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_init .* SELECT * FROM t001 INTO t001. "Linda 20141204 del* authority-check AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' ID 'BUKRS' FIELD p_bukrs ID 'ACTVT' FIELD '03'. IF sy-subrc <> 0.* You have no authorization for Company code MESSAGE e004(zp001) WITH p_bukrs. ENDIF.* ENDSELECT. "Linda 20141204 delENDFORM. " frm_init**{ Insert started by Linda on 06-Jan-2015 - CR0001*&---------------------------------------------------------------------**& Form FRM_MODIFY_BLITEMS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_modify_blitems . DATA:lw_blitems TYPE zc0000sdt0016. LOOP AT it_blitems INTO lw_blitems.CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = lw_blitems-vrkme language = sy-languIMPORTING* LONG_TEXT = output = lw_blitems-vrkme* SHORT_TEXT =* EXCEPTIONS* UNIT_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.MODIFY it_blitems FROM lw_blitems TRANSPORTING vrkme. ENDLOOP.ENDFORM. " FRM_MODIFY_BLITEMS

 

发票号码回传程序

 

1 REPORT  zc0000sdr0017 NO STANDARD PAGE HEADING   2                      LINE-COUNT 58   3                      LINE-SIZE 170.   4 TYPE-POOLS: icon,slis,kcdu,tpit.   5 TABLES: sscrfields,   6         zc0000sdt0020.   7 *----------------------------------------------------------------------*   8 * type define   9 *----------------------------------------------------------------------*  10 TYPES: ty_dir_list TYPE STANDARD TABLE OF salfldir,  11        BEGIN OF ty_dir,  12          name    TYPE pfeflname,  13          size TYPE pfeflsize,  14          name2 TYPE pfeflname,  15          END OF ty_dir,  16        BEGIN OF ty_tabl,  17          line(200),  18        END OF ty_tabl,  19        BEGIN OF ty_vbeln,  20          vbeln TYPE vbrk-vbeln,  21          fkart TYPE vbrk-fkart,  22          kunrg TYPE vbrk-kunrg,  23          bukrs TYPE vbrk-bukrs,  24          fkdat TYPE vbrk-fkdat,  25          xblnr TYPE xblnr,  26          gjahr TYPE gjahr,  27          bktxt TYPE bktxt, "linda 20140918  28          zline TYPE i,  "bseg table lines  "Linda 20141023  29         END OF ty_vbeln,  30         BEGIN OF ty_vbrk,  31          vbeln TYPE vbrk-vbeln,  32          bukrs TYPE vbrk-bukrs,  33          gjahr TYPE vbrk-gjahr,  34          xblnr TYPE vbrk-xblnr,  35          fkdat TYPE vbrk-fkdat,  36         END OF ty_vbrk,  37 * add local file read  begin  38         BEGIN OF ty_row,  39           field TYPE char40,  40         END OF ty_row,  41 * add local file read  end  42         BEGIN OF ty_errlog,  "Linda 20141120 add  43          str(100) TYPE c,    "Linda 20141120 add  44         END OF ty_errlog.   "Linda 20141120 add  45 *----------------------------------------------------------------------*  46 *  Internal Tables define  47 *----------------------------------------------------------------------*  48 DATA: it_file        TYPE ty_dir_list,  49       it_file2       TYPE STANDARD TABLE OF ty_dir,  50       it_errtab      TYPE tpit_t_errdoc,  51       it_buztab      TYPE TABLE OF tpit_buztab,  52       it_fldtab         TYPE tpit_t_fname,  53       it_tabl        TYPE STANDARD TABLE OF ty_tabl WITH HEADER LINE,  54       it_errlog      TYPE STANDARD TABLE OF zc0000sdt0020,  55       it_errlog2     TYPE STANDARD TABLE OF ty_errlog,  "Linda 20141120 add  56       it_fieldcat    TYPE slis_t_fieldcat_alv,  57       it_bseg        TYPE STANDARD TABLE OF bseg." Linda 20141024 add  58 *&---------------------------------------------------------------------*  59 *  Workarea define  60 *&---------------------------------------------------------------------*  61 DATA: iw_file      TYPE salfldir,  62       iw_file2     TYPE ty_dir,  63       iw_ins       TYPE ty_vbeln,  64       iw_vbrk      TYPE ty_vbrk,  65       iw_err       TYPE zc0000sdt0020,  66       iw_errlog    TYPE ty_errlog,  "Linda 20141120 add  67       iw_bseg      TYPE bseg.  68 *----------------------------------------------------------------------*  69 *   Global Variables  70 *----------------------------------------------------------------------*  71 DATA :w_ret           TYPE char1,  72       w_cmd(100)      TYPE c,  73       w_date          TYPE sy-datum,  74       w_time          TYPE char6,  75       w_read_file     TYPE salfile-longname,  76       functxt         TYPE smp_dyntxt,  77       ok_code         TYPE sy-ucomm,  78       w_repid         TYPE sy-repid,  79       w_str(1000)     TYPE c,  80       putdahigh       TYPE zc0000sdt0020-putda,  81       puttihigh       TYPE zc0000sdt0020-putti,  82       vbelnhigh       TYPE zc0000sdt0020-vbeln,  83       xblnrhigh       TYPE zc0000sdt0020-xblnr,  84       w_file_path     TYPE string,  85       w_lfile         TYPE string, "file name  86       w_row_num       TYPE char4,  87       w_msg_txt       TYPE string.  88 *----------------------------------------------------------------------*  89 *  Constants define  90 *----------------------------------------------------------------------*  91 CONSTANTS: cos_star2(3)       TYPE c VALUE '*.*',  92            cos_2(2)           TYPE c VALUE '2',  93            cos_1(1)           TYPE c VALUE '1',  94            cos_numc(4)        TYPE c VALUE 'NUMC'.  95   96 SELECTION-SCREEN: FUNCTION KEY 1 .  97 SELECTION-SCREEN BEGIN OF LINE.  98 PARAMETER p_check2 TYPE c RADIOBUTTON GROUP rads DEFAULT 'X'.  99 SELECTION-SCREEN COMMENT 4(20) text-c02 FOR FIELD p_check2."导出到服务器 100 SELECTION-SCREEN END OF LINE. 101 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. 102 PARAMETERS: p_fpath(1024) TYPE c DEFAULT 'g:\r3ftp\formware\writeback\nonprocess\',"need edit  D:\usr\sap\put\Inbound\Nonprocess\ 103             p_bpath(1024) TYPE c DEFAULT 'g:\r3ftp\formware\writeback\bak\'." D:\usr\sap\put\Inbound\Backup\ 104 SELECTION-SCREEN END OF BLOCK b1. 105 SELECTION-SCREEN BEGIN OF LINE. 106 PARAMETER p_check1 RADIOBUTTON GROUP rads. 107 SELECTION-SCREEN COMMENT 4(20) text-c01 FOR FIELD p_check1."导出到本地 108 SELECTION-SCREEN END OF LINE. 109 SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t01. 110 PARAMETERS: p_flpath(1024) TYPE c DEFAULT ''."need edit  D:\usr\sap\put\Inbound\Nonprocess\ 111 *            p_blpath(1024) TYPE c DEFAULT 'D:\Backup\'." D:\usr\sap\put\Inbound\Backup\ 112 SELECTION-SCREEN END OF BLOCK b2. 113 *----------------------------------------------------------------------* 114 * INITIALIZATION. 115 *----------------------------------------------------------------------* 116 INITIALIZATION. 117   functxt-icon_id   = icon_biw_info_catalog. 118   functxt-icon_text = 'ERROR LOG'. 119   sscrfields-functxt_01 = functxt. 120 *----------------------------------------------------------------------* 121 * AT SELECTION-SCREEN ON VALUE-REQUEST 122 *----------------------------------------------------------------------* 123 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flpath. 124   PERFORM form_get_file_path_upload. 125 *----------------------------------------------------------------------* 126 * START-OF-SELECTION 127 *----------------------------------------------------------------------* 128 START-OF-SELECTION. 129   w_date = sy-datum. 130   w_time = sy-uzeit. 131 *   file process 132   IF p_check2 IS NOT INITIAL. 133     PERFORM frm_file_process. 134   ELSE. 135 * local 136     PERFORM frm_file_process_local. 137   ENDIF. 138 *----------------------------------------------------------------------* 139 * AT SELECTION-SCREEN 140 *----------------------------------------------------------------------* 141 AT SELECTION-SCREEN. 142   IF sy-ucomm = 'ONLI'. 143     IF p_flpath IS INITIAL AND p_check1 = 'X'. 144       MESSAGE e001(00) WITH 'local path can not be init'(001). 145       SET CURSOR FIELD 'P_FLPATH'. 146     ENDIF. 147   ENDIF. 148   CASE sscrfields-ucomm. 149     WHEN 'FC01'. 150       CALL SCREEN 9000. 151     WHEN OTHERS. 152       ... 153   ENDCASE. 154 *----------------------------------------------------------------------* 155 * END-OF-SELECTION 156 *----------------------------------------------------------------------* 157 END-OF-SELECTION. 158   IF w_ret = 'X'. 159     IF it_errlog IS INITIAL. 160       WRITE: /1  'Write back fail,please see error log.'(014). 161     ELSE. 162       LOOP AT it_errlog INTO iw_errlog." 163         WRITE: /1  iw_errlog-str. 164       ENDLOOP. 165     ENDIF. 166   ELSE. 167     WRITE: /1  'Write back success'(012). 168   ENDIF. 169   CLEAR:it_errlog,iw_errlog. 170 *----------------------------------------------------------------------* 171 *  子程序名称 :文件处理 172 *  子程序名   :frm_file_process 173 *  概要       :文件处理 174 * 参数       :无 175 *  返回值     :无 176 *----------------------------------------------------------------------* 177 FORM frm_file_process. 178   DATA: lw_path TYPE salfile-longname, 179         w_cmd1   TYPE string. 180 *   Nonprocess路径名组成 181   CLEAR lw_path. 182   lw_path = p_fpath. 183 *   取得目录中的内容 184   PERFORM frm_read_directory TABLES it_file 185                              USING  lw_path 186                              CHANGING w_ret. 187   IF w_ret = space. 188 *   把文件夹Nonprocess下的文件复制到文件夹Backup下 189  190 **{ Insert started by ZhouTing on 25-Jan-2015 - CR0010 191  192 ** begin of comment by zhou ting 193 ** to use open dataset instead 194 * 195 **    这是在Linux系统下用的 196 **    CONCATENATE p_fpath cos_nonprocess cos_star2            "#EC NOTEXT 197 **                INTO w_cmd1. 198 **    这是在windows系统下用的 199 *    CONCATENATE p_fpath cos_star2                           "#EC NOTEXT 200 *              INTO w_cmd1. 201 * 202 **    这是在Linux系统下用的  "need be edited 203 **    CONCATENATE 'cp' w_cmd1 p_bpath INTO w_cmd SEPARATED BY space. 204 **    这是在windows系统下用的 205 *    CONCATENATE 'copy' w_cmd1 p_bpath INTO w_cmd SEPARATED BY space. 206 ***{ Insert started by Linda on 06-Jan-2015 - CR0010 207 *    TRY. 208 ***{ Insert ended by Linda on 06-Jan-2015 - CR0010 209 *    CALL 'SYSTEM' ID 'COMMAND' FIELD w_cmd 210 *                  ID 'TAB' FIELD it_tabl-*sys*. 211 * 212 *    IF sy-subrc <> 0. 213 *      CONCATENATE 'Move file fail'(013) p_bpath INTO iw_errlog-str. 214 *      APPEND iw_errlog TO it_errlog2. 215 *      w_ret = 'X'. 216 *    ENDIF. 217 ***{ Insert started by Linda on 06-Jan-2015 - CR0010 218 *         CATCH cx_root. 219 *             CONCATENATE 'Move file fail'(013) p_bpath INTO iw_errlog-str. 220 *      APPEND iw_errlog TO it_errlog2. 221 *      w_ret = 'X'. 222 *     ENDTRY. 223 ***{ Insert ended by Linda on 06-Jan-2015 - CR0010 224 ** end of comment. 225  226     PERFORM frm_copy_file USING p_fpath p_bpath it_file 227                           CHANGING w_ret. 228     IF w_ret <> 0. 229       CONCATENATE 'Move file fail'(013) p_bpath INTO iw_errlog-str. 230       APPEND iw_errlog TO it_errlog2. 231       w_ret = 'X'. 232     ENDIF. 233  234 **{ Insert ended by ZhouTing on 25-Jan-2015 - CR0010 235  236 *   文件数据传送接口表 237  238     PERFORM frm_transfer_data USING lw_path 239                               CHANGING w_ret. 240   ENDIF. 241  242 ENDFORM.                    " FRM_file_process 243 *----------------------------------------------------------------------* 244 *  子程序名称 :取得目录中的内容 245 *  子程序名   :frm_read_directory 246 *  概要       :取得目录中的内容 247 * 参数       :fit_dir_bukrs type ty_dir_list        取得的目录列表 248 *             :f_dir_path type salfile-longname      目录路径 249 *  返回值     :f_ret type c  正常取得:space  未取得:'1' 异常:'2' 250 *----------------------------------------------------------------------* 251 FORM frm_read_directory TABLES fit_dir TYPE ty_dir_list 252                          USING f_dir_path TYPE salfile-longname 253                          CHANGING f_ret TYPE c. 254   DATA: lw_lines TYPE i. 255  256   CLEAR f_ret. 257   REFRESH fit_dir. 258   CALL FUNCTION 'RZL_READ_DIR_LOCAL' 259     EXPORTING 260       name           = f_dir_path 261     TABLES 262       file_tbl       = fit_dir 263     EXCEPTIONS 264       argument_error = 1 265       not_found      = 2 266       OTHERS         = 3. 267  268   IF sy-subrc <> 0. 269     f_ret = cos_2. 270     RETURN. 271   ENDIF. 272  273   lw_lines = LINES( fit_dir ). 274   IF lw_lines < 3. 275     f_ret = cos_1. 276   ENDIF. 277 ENDFORM.                    " frm_read_directory 278 *----------------------------------------------------------------------* 279 *  子程序名称 :数据传输处理 280 *  子程序名   :frm_copy_file 281 *  概要       :把需处理的文件拷贝到bak目录下 282 * 参数       :i_frompath    目录路径 283 *               i_topath      目录路径 284 *  返回值     :o_ret 正常:space  异常:'4' 285 *----------------------------------------------------------------------* 286 FORM frm_copy_file USING i_frompath 287                          i_topath 288                          i_filelist TYPE ty_dir_list 289                    CHANGING o_ret. 290  291   DATA: from_file TYPE string, 292         to_file   TYPE string, 293         lt_file_content TYPE TABLE OF string, 294         lv_text     TYPE string, 295         ls_filelist TYPE salfldir. 296  297   LOOP AT i_filelist FROM 3 INTO ls_filelist. 298  299     REFRESH lt_file_content. 300  301     "源文件路径+文件名 302     CONCATENATE i_frompath ls_filelist-name INTO from_file. 303     "目标文件路径+文件名 304     CONCATENATE i_topath   ls_filelist-name INTO to_file. 305  306     "把源文件内容保存进内表 307     OPEN DATASET from_file FOR INPUT IN TEXT MODE 308                          ENCODING NON-UNICODE 309                          IGNORING CONVERSION ERRORS. 310     IF sy-subrc NE 0. 311       o_ret = 4. 312       EXIT. 313     ENDIF. 314     DO. 315       READ DATASET from_file INTO lv_text. 316       IF sy-subrc NE 0. 317         EXIT. 318       ENDIF. 319       APPEND lv_text TO lt_file_content. 320     ENDDO. 321  322     CLOSE DATASET from_file. 323  324  325     "把源文件内容从系统内表中写入目标文件中 326     OPEN DATASET to_file FOR OUTPUT IN TEXT MODE 327                          ENCODING NON-UNICODE 328                          IGNORING CONVERSION ERRORS. 329  330     IF sy-subrc NE 0. 331       o_ret = 4. 332       EXIT. 333     ENDIF. 334     LOOP AT lt_file_content INTO lv_text. 335       TRANSFER lv_text TO to_file. 336     ENDLOOP. 337     CLOSE DATASET to_file. 338  339   ENDLOOP. 340  341 ENDFORM.                    "frm_copy_file 342 *----------------------------------------------------------------------* 343 *  子程序名称 :数据传输处理 344 *  子程序名   :frm_transfer_data 345 *  概要       :文件数据传送接口表 346 * 参数       :f_path type salfile-longname    目录路径 347 *  返回值     :无 348 *----------------------------------------------------------------------* 349 FORM frm_transfer_data USING f_path TYPE salfile-longname 350                        CHANGING lw_ret. 351   DATA: lw_loopc       TYPE sy-index, 352         lw_text(2048)  TYPE c, 353 *        lw_ret(1)      TYPE c, 354         lw_zwrit       TYPE i, 355         lw_lines       TYPE i, 356         lw_len         TYPE i. 357  358 *  处理文件名排序的问题 359   SORT it_file BY name DESCENDING. 360   lw_lines = LINES( it_file ). 361   lw_lines = lw_lines - 1. 362 *  删除无用的2行 363   DELETE it_file FROM lw_lines. 364 *  从it_file 取数添加到it_file2 365  366   LOOP AT it_file INTO iw_file. 367     MOVE-CORRESPONDING iw_file TO iw_file2. 368  369     lw_len = STRLEN( iw_file-name ) - 18. 370  371     SHIFT iw_file-name BY lw_len PLACES LEFT. 372     iw_file2-name2 = iw_file-name+0(14). 373     APPEND iw_file2 TO it_file2. 374     CLEAR:lw_len,iw_file2. 375   ENDLOOP. 376  377   CLEAR iw_file. 378 *  按文件生成时间排序 379   SORT it_file2 BY name2. 380   LOOP AT it_file2 INTO iw_file2. 381 *   文件路径组 382     CLEAR w_read_file. 383     CONCATENATE f_path iw_file2-name INTO w_read_file. 384 *   打开文件 385     OPEN DATASET w_read_file FOR INPUT 386                              IN TEXT MODE ENCODING NON-UNICODE. 387     IF sy-subrc <> 0. 388       EXIT. 389     ENDIF. 390     DO. 391       lw_loopc = sy-index. 392       TRY. 393           CLEAR lw_text. 394           READ DATASET w_read_file INTO lw_text. 395         CATCH cx_sy_conversion_codepage. 396           CLOSE DATASET: w_read_file. 397           EXIT. 398       ENDTRY. 399 *      空文件的情况下 400       IF sy-subrc <> 0 AND lw_loopc = 1."lw_loopc = 2 带标题的文件 401         PERFORM frm_get_errno CHANGING lw_zwrit. 402         iw_err-zwrit = lw_zwrit. 403         IF p_check1 = 'X'. 404           iw_err-filen = w_lfile. 405         ELSE. 406           iw_err-filen = iw_file2-name. 407         ENDIF. 408         iw_err-errin = 'FILE NO DATA'(002). 409         iw_err-putda = w_date. 410         iw_err-putti = w_time. 411         INSERT zc0000sdt0020 FROM iw_err. 412         CLEAR:iw_err. 413         lw_ret = 'X'. 414         " EXIT. 415       ELSEIF sy-subrc <> 0. 416 **{ Insert started by ZhouTing on 30-Jan-2015 - CR0010 417         "lw_ret = 'X'. 418 **{ Insert ended by ZhouTing on 30-Jan-2015 - CR0010 419         EXIT. 420       ENDIF. 421 *     第一行不是标题 422 *      IF lw_loopc = 1. 423 *        CONTINUE. 424 *      ENDIF. 425 *     拆分数据并加入接口表 426 *      0090036259 LR  0000300713  20140525  123456  3000 427 *  vbeln fkart 客户代码   金税号 428       CHECK lw_ret IS INITIAL. 429       PERFORM frm_separate_text USING lw_text 430                                 CHANGING lw_ret. 431       CHECK lw_ret IS INITIAL. 432       PERFORM frm_writeback CHANGING lw_ret. 433     ENDDO. 434  435 **{ Insert started by ZhouTing on 27-Jan-2015 - CR0010 436     CLOSE DATASET w_read_file. 437 **{ Insert ended by ZhouTing on 27-Jan-2015 - CR0010 438  439     DELETE DATASET w_read_file. 440  441   ENDLOOP. 442 ENDFORM.                    " frm_transfer_data 443 *----------------------------------------------------------------------* 444 *  子程序名称 :拆分数据并加入接口表 445 *  子程序名   :frm_separate_text 446 *  概要       :拆分数据并加入接口表 447 * 参数       :f_text type c           要拆分的数据 448 *  返回值     :无 449 *----------------------------------------------------------------------* 450 FORM frm_separate_text USING f_text TYPE c 451                        CHANGING f_ret TYPE c. 452   DATA: lw_value(100) TYPE c, 453         lw_val(1024)  TYPE c, 454         lw_ret        TYPE char1, 455         lw_zwrit      TYPE i. 456   CLEAR f_ret. 457   lw_val = f_text. 458  459 *  Sys_Inv_No 460   SPLIT lw_val AT cl_abap_char_utilities=>horizontal_tab 461   INTO lw_value lw_val. 462   IF lw_value = space. 463 *    检查 发票号是否为空 464     PERFORM frm_get_errno CHANGING lw_zwrit. 465     iw_err-zwrit = lw_zwrit. 466     IF p_check1 = 'X'. 467       iw_err-filen = w_lfile. 468     ELSE. 469       iw_err-filen = iw_file2-name. 470     ENDIF. 471     iw_err-errin = 'INVOICENO IS EMPTY'(003). 472     iw_err-vbeln = lw_value. 473     iw_err-putda = w_date. 474     iw_err-putti = w_time. 475     INSERT zc0000sdt0020 FROM iw_err. 476     CLEAR:iw_err. 477     f_ret = 'X'. 478   ELSE. 479 * Sys_Inv_No检查 480     PERFORM frm_numeric_check USING lw_value 481                               CHANGING lw_ret. 482     IF lw_ret = 'X'. 483 *    检查 发票是否为数字 484       PERFORM frm_get_errno CHANGING lw_zwrit. 485       iw_err-zwrit = lw_zwrit. 486       IF p_check1 = 'X'. 487         iw_err-filen = w_lfile. 488       ELSE. 489         iw_err-filen = iw_file2-name. 490       ENDIF. 491       iw_err-errin = 'INVOICENO IS NOT NUMBER'(004). 492       iw_err-vbeln = lw_value. 493       iw_err-putda = w_date. 494       iw_err-putti = w_time. 495       INSERT zc0000sdt0020 FROM iw_err. 496       CLEAR:iw_err. 497       f_ret = 'X'. 498     ELSE. 499 *    检查 发票存在性 500       PERFORM frm_check_inv USING lw_value 501                             CHANGING lw_ret. 502       IF lw_ret  = 'X'. 503         PERFORM frm_get_errno CHANGING lw_zwrit. 504         iw_err-zwrit = lw_zwrit. 505         IF p_check1 = 'X'. 506           iw_err-filen = w_lfile. 507         ELSE. 508           iw_err-filen = iw_file2-name. 509         ENDIF. 510         iw_err-errin = 'INVOICENO IS NOT EXIST'(005). 511         iw_err-vbeln = lw_value. 512         iw_err-putda = w_date. 513         iw_err-putti = w_time. 514         INSERT zc0000sdt0020 FROM iw_err. 515         CLEAR:iw_err. 516         f_ret = 'X'. 517       ELSEIF lw_val = space."  金税号 为空检查 518         PERFORM frm_get_errno CHANGING lw_zwrit. 519         iw_err-zwrit = lw_zwrit. 520         IF p_check1 = 'X'. 521           iw_err-filen = w_lfile. 522         ELSE. 523           iw_err-filen = iw_file2-name. 524         ENDIF. 525         iw_err-errin = 'JINSHUHAO IS EMPTY'(006). 526         iw_err-vbeln = lw_value. 527         iw_err-putda = w_date. 528         iw_err-putti = w_time. 529         INSERT zc0000sdt0020 FROM iw_err. 530         CLEAR:iw_err. 531         f_ret = 'X'. 532       ELSE. 533         iw_ins-vbeln = lw_value. "保存 数据 534 * fkart 535         CLEAR lw_value. 536         SPLIT lw_val AT  cl_abap_char_utilities=>horizontal_tab 537         INTO lw_value lw_val. 538         iw_ins-fkart = lw_value. "保存 数据 539  540 *kunrg 541         CLEAR lw_value. 542         SPLIT lw_val AT  cl_abap_char_utilities=>horizontal_tab 543         INTO lw_value lw_val. 544         iw_ins-kunrg = lw_value. "保存 数据 545 * Year 546         IF lw_val = space."  年度 为空检查 547           PERFORM frm_get_errno CHANGING lw_zwrit. 548           iw_err-zwrit = lw_zwrit. 549           IF p_check1 = 'X'. 550             iw_err-filen = w_lfile. 551           ELSE. 552             iw_err-filen = iw_file2-name. 553           ENDIF. 554           iw_err-errin = 'YEAR IS EMPTY'(007). 555           iw_err-vbeln = lw_value. 556           iw_err-putda = w_date. 557           iw_err-putti = w_time. 558           INSERT zc0000sdt0020 FROM iw_err. 559           CLEAR:iw_err. 560           f_ret = 'X'. 561         ELSE. 562           CLEAR lw_value. 563           SPLIT lw_val AT  cl_abap_char_utilities=>horizontal_tab 564           INTO lw_value lw_val. 565           iw_ins-gjahr = lw_value+0(4). "保存 数据 566 *linda   20140806 567           iw_ins-fkdat = lw_value. "保存 数据 568         ENDIF. 569 * VAT_Inv_No 570         CLEAR lw_value. 571         SPLIT lw_val AT  cl_abap_char_utilities=>horizontal_tab 572         INTO lw_value lw_val. 573         iw_ins-xblnr = lw_value. "保存 数据 574         iw_ins-bktxt = lw_value."Linda 20140918 575 * bukrs 576         CLEAR lw_value. 577         SPLIT lw_val AT  cl_abap_char_utilities=>horizontal_tab 578         INTO lw_value lw_val. 579         iw_ins-bukrs = lw_value. "保存 数据 580       ENDIF. 581     ENDIF. 582   ENDIF. 583 ENDFORM.                    " frm_separate_text 584 *Sys_Inv_No VAT_Inv_No  VAT Issue_date  Total_Amount 585 *0090035243 12345654321 2005-08-10  8 586 *----------------------------------------------------------------------* 587 *  子程序名称 :数据类型检查 588 *  子程序名   :frm_numeric_check 589 *  概要       :数据类型检查 590 * 参数       :f_val TYPE c            要检查的数据 591 *  返回值     :f_ret TYPE c            正常:space    出错:'X' 592 *----------------------------------------------------------------------* 593 FORM frm_numeric_check USING f_val TYPE c 594                        CHANGING f_ret TYPE c. 595   DATA: lw_type TYPE dd01v-datatype. 596  597   CHECK f_val <> space. 598   CLEAR f_ret. 599   CALL FUNCTION 'NUMERIC_CHECK' 600     EXPORTING 601       string_in = f_val 602     IMPORTING 603       htype     = lw_type. 604   IF lw_type <> cos_numc. 605     f_ret = 'X'. 606   ENDIF. 607 ENDFORM.                    " frm_numeric_check 608  609 *&---------------------------------------------------------------------* 610 *&      Form  frm_get_errno 611 *&---------------------------------------------------------------------* 612 *       text 613 *----------------------------------------------------------------------* 614 *      <--P_LW_ZWRIT  text 615 *----------------------------------------------------------------------* 616 FORM frm_get_errno  CHANGING f_zwrit TYPE i. 617   CALL FUNCTION 'NUMBER_GET_NEXT' 618     EXPORTING 619       nr_range_nr             = '01'      "snro 620       object                  = 'ZWRITEBACK'   "snro object "be edit 621     IMPORTING 622       number                  = f_zwrit   "所得到的号码 623     EXCEPTIONS 624       interval_not_found      = 1 625       number_range_not_intern = 2 626       object_not_found        = 3 627       quantity_is_0           = 4 628       quantity_is_not_1       = 5 629       interval_overflow       = 6 630       buffer_overflow         = 7 631       OTHERS                  = 8. 632   IF sy-subrc <> 0. 633     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 634     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO iw_errlog-str. 635     APPEND iw_errlog TO it_errlog2. 636   ENDIF. 637  638 ENDFORM.                    " frm_get_errno 639 *&---------------------------------------------------------------------* 640 *&      Form  FRM_CHECK_INV 641 *&---------------------------------------------------------------------* 642 *       text 643 *----------------------------------------------------------------------* 644 *      -->f_vbeln  text 645 *      <--f_ret  text 646 *----------------------------------------------------------------------* 647 FORM frm_check_inv  USING   f_vbeln 648                     CHANGING f_ret. 649   DATA:lw_count TYPE i. 650   SELECT COUNT(*) 651        INTO lw_count 652        FROM vbrk                      "(Reference Document Number) 653        WHERE vbeln = f_vbeln .   "Billing Document 654   IF sy-subrc = 4. 655     f_ret = 'X'. 656   ENDIF. 657 ENDFORM.                    " FRM_CHECK_INV 658 *&---------------------------------------------------------------------* 659 *&      Form  frm_writeback 660 *&---------------------------------------------------------------------* 661 *       text 662 *----------------------------------------------------------------------* 663 *      -->fw_ret  text 664 *----------------------------------------------------------------------* 665 FORM frm_writeback CHANGING fw_ret. 666   DATA:lw_zwrit TYPE i, 667        lw_count TYPE i, 668        lw_bktxt TYPE bktxt, "linda 20140916 669        lw_belnr TYPE bkpf-belnr, 670        lw_gjahr TYPE char4. 671 *Select IsExist Invoice 672   SELECT SINGLE vbeln 673          bukrs 674          gjahr 675          xblnr 676          fkdat 677     INTO iw_vbrk 678     FROM vbrk                      "(Reference Document Number) 679     WHERE vbeln = iw_ins-vbeln.    "Billing Document 680   IF iw_vbrk-xblnr <> iw_ins-xblnr. 681 * 将发票号更新到发票 BKPF-XBLNR(Reference Document Number) 682     PERFORM frm_vbrk_xblnr USING iw_ins-xblnr 683                                  iw_ins-vbeln. 684     IF w_msg_txt IS NOT INITIAL. 685       PERFORM frm_get_errno CHANGING lw_zwrit. 686       iw_err-zwrit = lw_zwrit. 687       IF p_check1 = 'X'. 688         iw_err-filen = w_lfile. 689       ELSE. 690         iw_err-filen = iw_file2-name. 691       ENDIF. 692       iw_err-errin = 'UPDATA VBRK FAIL'(008). 693       iw_err-vbeln = iw_ins-vbeln. 694       iw_err-xblnr = iw_ins-xblnr. 695       iw_err-putda = w_date. 696       iw_err-putti = w_time. 697       INSERT zc0000sdt0020 FROM iw_err. 698       CLEAR:iw_err,w_msg_txt. 699       fw_ret = 'X'. 700     ENDIF. 701   ENDIF. 702   CHECK fw_ret IS INITIAL. 703   SELECT SINGLE belnr bktxt "Linda 20140916 xblnr 704     INTO (lw_belnr,lw_bktxt) "Linda 20140916lw_xblnr 705     FROM bkpf 706     WHERE bukrs = iw_vbrk-bukrs 707           AND awkey = iw_ins-vbeln    "BKPF-AWKEY(Reference Key) 708           AND gjahr = iw_vbrk-fkdat+0(4). 709  710   IF lw_bktxt <> iw_ins-bktxt. 711     lw_gjahr = iw_vbrk-fkdat+0(4). 712     IF lw_belnr IS INITIAL. 713       PERFORM frm_get_errno CHANGING lw_zwrit. 714       iw_err-zwrit = lw_zwrit. 715       IF p_check1 = 'X'. 716         iw_err-filen = w_lfile. 717       ELSE. 718         iw_err-filen = iw_file2-name. 719       ENDIF. 720       iw_err-errin = 'Invoice Is Empty'(009). 721       iw_err-vbeln = iw_ins-vbeln. 722       iw_err-xblnr = iw_ins-xblnr. 723       iw_err-putda = w_date. 724       iw_err-putti = w_time. 725       INSERT zc0000sdt0020 FROM iw_err. 726       CLEAR:iw_err,w_msg_txt. 727       fw_ret = 'X'. 728     ELSE. 729 *    将发票号更新到凭证BKPF中的BKPF-XBLNR(Reference Document Number) 730 *    update the GTS No.# to BKPF-XBLNR(Reference Document Number) 731 *    2 reason:1>.要调用的function 用到了bseg这个结构; 732 *                 Call function "'Z_FI_ITEMS_MASS_CHANGE'" using BSEG as import structure 733 *           2>使用的频率不高,1周1次,每次XX 条,所以即使写成 select * 也对性能影响不大 734 *                The call frequence will be weekly, and the volume is limited, thus should the performance impact is restricted. 735       SELECT * 736       INTO TABLE it_bseg 737       FROM bseg 738       WHERE bukrs = iw_vbrk-bukrs 739        AND belnr = lw_belnr 740        AND gjahr = lw_gjahr. 741  742       PERFORM frm_bseg_sgtxt USING  iw_ins. 743       IF w_msg_txt IS NOT INITIAL. 744         PERFORM frm_get_errno CHANGING lw_zwrit. 745         iw_err-zwrit = lw_zwrit. 746         IF p_check1 = 'X'. 747           iw_err-filen = w_lfile. 748         ELSE. 749           iw_err-filen = iw_file2-name. 750         ENDIF. 751         iw_err-errin = 'BDC update fail'(010). 752         iw_err-vbeln = iw_ins-vbeln. 753         iw_err-xblnr = iw_ins-xblnr. 754         iw_err-putda = w_date. 755         iw_err-putti = w_time. 756         INSERT zc0000sdt0020 FROM iw_err. 757         CLEAR:iw_err,w_msg_txt. 758         fw_ret = 'X'. 759       ENDIF. 760  761     ENDIF. 762   ENDIF. 763   CHECK fw_ret IS INITIAL. 764   SELECT COUNT(*) 765     FROM zc0000sdt0020 766     INTO lw_count 767     WHERE vbeln = iw_ins-vbeln. 768   IF lw_count > 1. 769     DELETE FROM zc0000sdt0020 WHERE vbeln = iw_ins-vbeln. 770     IF sy-subrc = 0. 771       COMMIT WORK AND WAIT. 772     ELSE. 773       ROLLBACK WORK. 774     ENDIF. 775   ENDIF. 776   CLEAR:it_bseg. 777 ENDFORM.                    " frm_writeback 778 *&---------------------------------------------------------------------* 779 *&      Module  STATUS_9000  OUTPUT 780 *&---------------------------------------------------------------------* 781 *       text 782 *----------------------------------------------------------------------* 783 MODULE status_9000 OUTPUT. 784   SET PF-STATUS '800'. 785   SET TITLEBAR 'ERROR LOG SEARCH'. 786  787 ENDMODULE.                 " STATUS_9000  OUTPUT 788 *&---------------------------------------------------------------------* 789 *&      Module  USER_COMMAND_9000  INPUT 790 *&---------------------------------------------------------------------* 791 *       text 792 *----------------------------------------------------------------------* 793 MODULE user_command_9000 INPUT. 794   CASE ok_code. 795     WHEN 'EXECUTE'. 796       PERFORM frm_data_select. 797  798       IF it_errlog IS INITIAL. 799         MESSAGE e001(00) WITH 'NO error log data'(011). 800         LEAVE TO SCREEN 9000. 801       ENDIF. 802 *  ALV最后结果输出 803       PERFORM frm_display_data. 804     WHEN 'CANCEL'. 805       LEAVE TO SCREEN 0. 806     WHEN 'EXIT'. 807       LEAVE PROGRAM. 808     WHEN 'BACK'. 809       LEAVE TO SCREEN 0. 810   ENDCASE. 811 ENDMODULE.                 " USER_COMMAND_9000  INPUT 812 *----------------------------------------------------------------------* 813 *  子程序名称 :ALV最后结果输出 814 *  子程序名   :frm_display_data 815 *  概要       :ALV最后结果输出 816 * 参数       :无 817 *  返回值     :无 818 *----------------------------------------------------------------------* 819 FORM frm_display_data . 820   w_repid = sy-repid. 821   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 822     EXPORTING 823       i_callback_program = w_repid 824       i_structure_name   = 'ZC0000SDT0020' 825       it_fieldcat        = it_fieldcat 826     TABLES 827       t_outtab           = it_errlog. 828   IF sy-subrc <> 0. 829 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 830 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 831   ENDIF. 832  833 ENDFORM.                    " frm_display_data 834 *&---------------------------------------------------------------------* 835 *&      Form  frm_data_select 836 *&---------------------------------------------------------------------* 837 *       text 838 *----------------------------------------------------------------------* 839 *  -->  p1        text 840 *  <--  p2        text 841 *----------------------------------------------------------------------* 842 FORM frm_data_select . 843   IF zc0000sdt0020-filen IS NOT INITIAL. 844     CONCATENATE 'FILEN LIKE ''' zc0000sdt0020-filen '%''' INTO w_str. 845   ENDIF. 846 **************** putda************************************** 847   IF zc0000sdt0020-putda IS NOT INITIAL AND putdahigh IS INITIAL. 848     IF w_str IS NOT INITIAL. 849       CONCATENATE w_str ' and putda = ZC0000SDT0020-putda' INTO w_str. 850     ELSE. 851       w_str = 'putda = ZC0000SDT0020-putda'. 852     ENDIF. 853   ENDIF. 854   IF zc0000sdt0020-putda IS INITIAL AND putdahigh IS NOT INITIAL. 855     IF w_str IS NOT INITIAL. 856       CONCATENATE w_str ' and putda = putdahigh' INTO w_str. 857     ELSE. 858       w_str = 'putda = putdahigh'. 859     ENDIF. 860   ENDIF. 861   IF zc0000sdt0020-putda IS NOT INITIAL AND putdahigh IS NOT INITIAL. 862     IF w_str IS NOT INITIAL. 863       CONCATENATE w_str ' and putda <= putdahigh and putda >= ZC0000SDT0020-putda' INTO w_str. 864     ELSE. 865       w_str = 'putda <= putdahigh and putda >= ZC0000SDT0020-putda'. 866     ENDIF. 867  868   ENDIF. 869 *  **************** putti************************************** 870   IF zc0000sdt0020-putti IS NOT INITIAL AND puttihigh IS INITIAL. 871     IF w_str IS NOT INITIAL. 872       CONCATENATE w_str ' and putti = ZC0000SDT0020-putti' INTO w_str. 873     ELSE. 874       w_str = 'putti = ZC0000SDT0020-putti'. 875     ENDIF. 876   ENDIF. 877   IF zc0000sdt0020-putti IS INITIAL AND puttihigh IS NOT INITIAL. 878     IF w_str IS NOT INITIAL. 879       CONCATENATE w_str ' and putti = puttihigh' INTO w_str. 880     ELSE. 881       w_str = 'putti = puttihigh'. 882     ENDIF. 883   ENDIF. 884   IF zc0000sdt0020-putti IS NOT INITIAL AND puttihigh IS NOT INITIAL. 885     IF w_str IS NOT INITIAL. 886       CONCATENATE w_str ' and putti <= puttihigh and putti >= ZC0000SDT0020-putti' INTO w_str. 887     ELSE. 888       w_str = 'putti <= puttihigh and putti >= ZC0000SDT0020-putti'. 889     ENDIF. 890  891   ENDIF. 892 *  **************** VBELN************************************** 893   IF zc0000sdt0020-vbeln IS NOT INITIAL AND vbelnhigh IS INITIAL. 894     IF w_str IS NOT INITIAL. 895       CONCATENATE w_str ' and VBELN = ZC0000SDT0020-VBELN' INTO w_str. 896     ELSE. 897       w_str = 'VBELN = ZC0000SDT0020-VBELN'. 898     ENDIF. 899   ENDIF. 900   IF zc0000sdt0020-vbeln IS INITIAL AND vbelnhigh IS NOT INITIAL. 901     IF w_str IS NOT INITIAL. 902       CONCATENATE w_str ' and VBELN = VBELNHIGH' INTO w_str. 903     ELSE. 904       w_str = 'VBELN = VBELNHIGH'. 905     ENDIF. 906   ENDIF. 907   IF zc0000sdt0020-vbeln IS NOT INITIAL AND vbelnhigh IS NOT INITIAL. 908     IF w_str IS NOT INITIAL. 909       CONCATENATE w_str ' and VBELN <= VBELNHIGH and VBELN >= ZC0000SDT0020-VBELN' INTO w_str. 910     ELSE. 911       w_str = 'VBELN <= VBELNHIGH and VBELN >= ZC0000SDT0020-VBELN'. 912     ENDIF. 913  914   ENDIF. 915 *  **************** XBLNR************************************** 916   IF zc0000sdt0020-xblnr IS NOT INITIAL AND xblnrhigh IS INITIAL. 917     IF w_str IS NOT INITIAL. 918       CONCATENATE w_str ' and XBLNR = ZC0000SDT0020-XBLNR' INTO w_str. 919     ELSE. 920       w_str = 'XBLNR = ZC0000SDT0020-XBLNR'. 921     ENDIF. 922   ENDIF. 923   IF zc0000sdt0020-xblnr IS INITIAL AND xblnrhigh IS NOT INITIAL. 924     IF w_str IS NOT INITIAL. 925       CONCATENATE w_str ' and XBLNR = XBLNRHIGH' INTO w_str. 926     ELSE. 927       w_str = 'XBLNR = XBLNRHIGH'. 928     ENDIF. 929   ENDIF. 930   IF zc0000sdt0020-xblnr IS NOT INITIAL AND xblnrhigh IS NOT INITIAL. 931     IF w_str IS NOT INITIAL. 932       CONCATENATE w_str ' and XBLNR <= XBLNRHIGH and XBLNR >= ZC0000SDT0020-XBLNR' INTO w_str. 933     ELSE. 934       w_str = 'XBLNR <= XBLNRHIGH and XBLNR >= ZC0000SDT0020-XBLNR'. 935     ENDIF. 936  937   ENDIF. 938 *  **************** ERRIN************************************** 939   IF zc0000sdt0020-errin IS NOT INITIAL. 940     IF w_str IS NOT INITIAL. 941       CONCATENATE w_str ' and ERRIN LIKE ''' zc0000sdt0020-errin '%''' INTO w_str. 942     ELSE. 943       CONCATENATE 'ERRIN LIKE ''' zc0000sdt0020-errin '%''' INTO w_str. 944     ENDIF. 945   ENDIF. 946   SELECT zwrit 947          filen 948          putda 949          putti 950          vbeln 951          xblnr 952          errin 953   INTO CORRESPONDING FIELDS OF TABLE it_errlog 954   FROM zc0000sdt0020 955   WHERE (w_str). 956   CLEAR:w_str. 957 ENDFORM.                    " frm_data_select 958 *&---------------------------------------------------------------------* 959 *&      Form  frm_vbrk_xblnr 960 *&---------------------------------------------------------------------* 961 *       text 962 *----------------------------------------------------------------------* 963 *      -->pf_xblnr  text 964 *      -->pf_vbeln  text 965 *----------------------------------------------------------------------* 966 FORM frm_vbrk_xblnr  USING  pf_xblnr 967                             pf_vbeln. 968  969   CALL FUNCTION 'UPDATE_XBLNR_IN_VBRK' 970     EXPORTING 971       i_vbeln                 = pf_vbeln 972       i_xblnr                 = pf_xblnr 973 *   I_XBLNR_CHECK           = 974 * IMPORTING 975 *   E_XBLNR                 = 976    EXCEPTIONS 977      document_blocked        = 1 978      update_no_success       = 2 979      OTHERS                  = 3 980             . 981   IF sy-subrc <> 0. 982     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 983      INTO w_msg_txt 984             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 985   ENDIF. 986  987 ENDFORM.                    " FRM_VBRK_BDC 988 *&---------------------------------------------------------------------* 989 *&      Form  FRM_FILE_PROCESS_LOCAL 990 *&---------------------------------------------------------------------* 991 *       text 992 *----------------------------------------------------------------------* 993 *  -->  p1        text 994 *  <--  p2        text 995 *----------------------------------------------------------------------* 996 FORM frm_file_process_local. 997   DATA: ls_row         TYPE kcdu_srec, 998         lw_zwrit       TYPE i. 999 1000   PERFORM file_format_check.1001   PERFORM upload_csv.1002 1003 *   文件数据传送接口表1004   DO.1005     w_row_num = sy-index.1006     CLEAR ls_row.1007     "    w_step_ok = 'X'.1008     CALL FUNCTION 'FILE_NEXT_RECORD'1009       IMPORTING1010         next_record = ls_row1011       EXCEPTIONS1012         no_record   = 1.1013     IF sy-subrc <> 0 OR ls_row IS INITIAL.1014       IF w_row_num = 1.1015         PERFORM frm_get_errno CHANGING lw_zwrit.1016         iw_err-zwrit = lw_zwrit.1017         iw_err-filen = w_lfile.1018         iw_err-errin = 'FILE NO DATA'(002).1019         iw_err-putda = w_date.1020         iw_err-putti = w_time.1021         INSERT zc0000sdt0020 FROM iw_err.1022         CLEAR:iw_err.1023         w_ret = 'X'.1024       ENDIF.1025       EXIT.1026     ENDIF.1027 1028 *     第一行不是标题1029 *      IF lw_loopc = 1.1030 *        CONTINUE.1031 *      ENDIF.1032 *     拆分数据并加入接口表1033 *      0090036259 LR  0000300713  20140525  123456  30001034 *  vbeln fkart 客户代码   金税号1035     CHECK  w_ret IS INITIAL.1036     PERFORM frm_separate_text USING ls_row1037                               CHANGING w_ret.1038     CHECK  w_ret IS INITIAL.1039     PERFORM frm_writeback CHANGING w_ret.1040 1041   ENDDO.1042 1043 ENDFORM.                    " frm_file_process_local1044 *&---------------------------------------------------------------------*1045 *&      Form  form_get_file_path_upload1046 *&---------------------------------------------------------------------*1047 *       text1048 *----------------------------------------------------------------------*1049 *  -->  p1        text1050 *  <--  p2        text1051 *----------------------------------------------------------------------*1052 FORM form_get_file_path_upload .1053   DATA:1054       ld_rc    TYPE i,1055       lw_file  TYPE string,1056       lt_file  TYPE filetable.1057 1058   CALL FUNCTION 'GET_DYNP_VALUE'1059     EXPORTING1060       i_field = 'P_FLPATH'1061       i_repid = sy-repid1062       i_dynnr = '1000'1063     CHANGING1064       o_value = p_flpath.1065 1066   lw_file = p_flpath.1067 1068   CALL FUNCTION 'CH_SPLIT_FILENAME'1069     EXPORTING1070       complete_filename = lw_file1071     IMPORTING1072       path              = w_file_path1073     EXCEPTIONS1074       invalid_drive     = 11075       invalid_path      = 21076       OTHERS            = 3.1077 1078   CALL METHOD cl_gui_frontend_services=>file_open_dialog1079     EXPORTING1080 *      window_title            =1081       default_extension       = '*.TXT'1082       default_filename        = lw_file1083       file_filter             = '*.TXT'1084 *      with_encoding           =1085       initial_directory       = w_file_path1086 *      multiselection          =1087     CHANGING1088       file_table              = lt_file1089       rc                      = ld_rc1090 *      user_action             =1091 *      file_encoding           =1092     EXCEPTIONS1093       file_open_dialog_failed = 11094       cntl_error              = 21095       error_no_gui            = 31096       not_supported_by_gui    = 41097       OTHERS                  = 5.1098   IF sy-subrc <> 0.1099     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno1100                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.1101   ELSE.1102     READ TABLE lt_file INTO lw_file INDEX 1.1103     p_flpath = lw_file.1104   ENDIF.1105 1106 ENDFORM.                    " form_get_file_path_upload1107 1108 *&---------------------------------------------------------------------*1109 *&      Form  file_format_check1110 *&---------------------------------------------------------------------*1111 *       text1112 *----------------------------------------------------------------------*1113 *  -->  p1        text1114 *  <--  p2        text1115 *----------------------------------------------------------------------*1116 FORM file_format_check .1117   DATA:ld_ext   TYPE char10,1118        lw_file  TYPE string,1119        lw_name  TYPE string.1120   lw_file = p_flpath.1121   CALL FUNCTION 'CH_SPLIT_FILENAME'1122     EXPORTING1123       complete_filename = lw_file1124     IMPORTING1125       extension         = ld_ext1126       name              = lw_name1127       name_with_ext     = w_lfile1128     EXCEPTIONS1129       invalid_drive     = 11130       invalid_path      = 21131       OTHERS            = 3.1132   IF sy-subrc <> 0.1133     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno1134             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO iw_errlog-str.1135     APPEND iw_errlog TO it_errlog2.1136     w_ret = 'X'.1137   ENDIF.1138 1139   IF sy-subrc <> 0.1140     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno1141             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.1142   ELSE.1143     CALL FUNCTION 'AIPC_CONVERT_TO_UPPERCASE'1144       EXPORTING1145         i_input  = ld_ext1146         i_langu  = sy-langu1147       IMPORTING1148         e_output = ld_ext.1149   ENDIF.1150 ENDFORM.                    " file_format_check1151 *&---------------------------------------------------------------------*1152 *&      Form  upload_csv1153 *&---------------------------------------------------------------------*1154 *       text1155 *----------------------------------------------------------------------*1156 *  -->  p1        text1157 *  <--  p2        text1158 *----------------------------------------------------------------------*1159 FORM upload_csv .1160   DATA:ld_file TYPE localfile.1161 1162   ld_file = p_flpath.1163 1164   CALL FUNCTION 'FILE_OPEN'1165     EXPORTING1166       filnm             = ld_file1167       upl               = 'X'1168       filfmt            = 'T'1169     EXCEPTIONS1170       logname_not_found = 11171       file_not_opened   = 21172       OTHERS            = 3.1173   IF sy-subrc <> 0.1174     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno1175             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO iw_errlog-str.1176     APPEND iw_errlog TO it_errlog2.1177     w_ret = 'X'.1178   ENDIF.1179 ENDFORM.                    " upload_csv1180 *&---------------------------------------------------------------------*1181 *&      Form  FRM_BSEG_UPDATE1182 *&---------------------------------------------------------------------*1183 *       text1184 *----------------------------------------------------------------------*1185 *      -->pf_bukrs  text1186 *      -->pf_belnr  text1187 *      -->pf_gjahr  text1188 *      -->pf_buzei  text1189 *      -->pf_bschl  text1190 *      -->pf_bktxt  text1191 *----------------------------------------------------------------------*1192 FORM frm_bseg_update USING pf_bukrs1193                            pf_belnr1194                            pf_gjahr1195                            pf_buzei1196                            pf_bschl1197                            pf_bktxt. "Linda 201411171198   DATA:iw_buztab TYPE tpit_buztab,1199        iw_fldtab TYPE tpit_fname.1200 1201 *   所改字段之值1202 *  iw_bseg-sgtxt   = pf_sgtxt. "Linda 20141117 edi1203   iw_bseg-sgtxt    = pf_bktxt.1204 1205   iw_buztab-bukrs  = pf_bukrs.1206   iw_buztab-belnr  = pf_belnr.1207   iw_buztab-gjahr  = pf_gjahr.1208   iw_buztab-buzei  = pf_buzei.1209   iw_buztab-bschl  = pf_bschl. "posting key1210 *    it_buztab-koart  = 'S'.    "leixing1211   APPEND iw_buztab TO it_buztab.1212 1213   iw_fldtab-fname = 'SGTXT'.1214   iw_fldtab-aenkz  = 'X'.1215   APPEND iw_fldtab TO it_fldtab.1216 1217 * copy from FI_ITEMS_MASS_CHANGE , change defult module from asynchronous to synchronous1218   CALL FUNCTION 'Z_FI_ITEMS_MASS_CHANGE'1219     EXPORTING1220       s_bseg     = iw_bseg1221       i_bktxt    = pf_bktxt1222     IMPORTING1223       errtab     = it_errtab1224     TABLES1225       it_buztab  = it_buztab1226       it_fldtab  = it_fldtab1227     EXCEPTIONS1228       bdc_errors = 11229       OTHERS     = 2.1230   IF sy-subrc = 0.1231     COMMIT WORK AND WAIT.1232   ELSE.1233     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno1234         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO w_msg_txt.1235   ENDIF.1236   CLEAR:it_errtab,it_errtab[],it_buztab,it_buztab[],it_fldtab,it_fldtab[],iw_bseg.1237 1238 ENDFORM.                    " FRM_BSEG_UPDATE1239 *&---------------------------------------------------------------------*1240 *&      Form  FRM_BSEG_SGTXT1241 *&---------------------------------------------------------------------*1242 *       text1243 *----------------------------------------------------------------------*1244 *  -->  pf_ins        text1245 *----------------------------------------------------------------------*1246 FORM frm_bseg_sgtxt USING pf_ins LIKE iw_ins.1247   DATA:lw_bseg  TYPE bseg.1248   LOOP AT it_bseg INTO lw_bseg.1249 1250     PERFORM frm_bseg_update USING lw_bseg-bukrs1251                                   lw_bseg-belnr1252                                   lw_bseg-gjahr1253                                   lw_bseg-buzei1254                                   lw_bseg-bschl1255                                   pf_ins-bktxt.1256     IF w_msg_txt IS NOT INITIAL.1257       EXIT.1258     ENDIF.1259   ENDLOOP.1260 ENDFORM.                    " FRM_BSEG_SGTXT

 

转载地址:http://hjhzx.baihongyu.com/

你可能感兴趣的文章
【Canal源码分析】Canal Server的启动和停止过程
查看>>
机房带宽暴涨问题分析及解决方法
查看>>
英语能力的培养
查看>>
wdOS系统下源码编译安装LAMP环境(linux+apache+php+mysql)
查看>>
iOS 绕过相册权限漏洞
查看>>
我的友情链接
查看>>
XP 安装ORACLE
查看>>
八、 vSphere 6.7 U1(八):分布式交换机配置(vMotion迁移网段)
查看>>
[转载] 中华典故故事(孙刚)——19 万岁
查看>>
修改hosts文件里面的主机名,oralce asm无法启动
查看>>
mac下使用Intellij、adt-studio、Appcode,推荐使用Apple Jdk6
查看>>
Maven学习总结(十)——使用Maven编译项目gbk的不可映射问题
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
php5编译安装常见错误和解决办法集锦
查看>>
Linux远程访问及控制
查看>>
Oracle中如何删除某个用户下的所有数据呢
查看>>
MongoDB实战系列之五:mongodb的分片配置
查看>>
Unable to determine local host from URL REPOSITORY_URL=http://
查看>>
Java Tomcat SSL 服务端/客户端双向认证(二)
查看>>
java基础(1)
查看>>