精华内容
下载资源
问答
  • SAP会计凭证批导
    千次阅读
    2020-11-29 19:49:32



    report zfi005.

    *----------------------------------------------------------------------*
    数据库表声明
    *----------------------------------------------------------------------*
    tables sscrfields."选择屏幕控件定义
    *----------------------------------------------------------------------*
    声明类型
    *----------------------------------------------------------------------*
    *&---文件上载/file upload
    typesbegin of ty_upload,
             number     type text20,                                      序号
             comp_code  type bapiache09-comp_code,                        公司代码
             pstng_date type bapiache09-pstng_date,                       过账日期
             doc_date   type bapiache09-doc_date,                         凭证日期
             doc_type   type bapiache09-doc_type,                         凭证类型
             currency   type bapiaccr09-currency ,                        货币
             kursf      type bapiaccr09-exch_rate,                        汇率
             ref_doc_no type bapiache09-ref_doc_no,                       参照
             numpg      type char03,                                      页数
             header_txt type bapiache09-header_txt,                       凭证抬头文本
             buzei      type buzei,                                       行项目
             bschl      type bschl,                                       过账码
             gl_account type bapiacap09-gl_account ,                      总账科目
             customer   type bapiacar09-customer ,                        客户编号
             vendor_no  type bapiacap09-vendor_no ,                       供应商编号
             umskz      type bseg-umskz ,                                 特别总账标识
             asset_no   type bapiacgl09-asset_no ,                        资产号
             anln2      type anla-anln2,                                  资产子编号
             anbwa      type bseg-anbwa,                                  事物类型
             wrbtr      type bseg-wrbtr,                                  交易货币金额
             dmbtr      type bseg-dmbtr,                                  本位币金额
             dmbe2      type bseg-dmbe2,                                  本位币2金额
             gsber      type bseg-gsber,                                  业务范围
             kkber      type bseg-kkber,                                  信用控制范围
             costcenter type bapiacgl09-costcenter ,                      成本中心
             orderid    type bapiacgl09-orderid ,                         订单(统计型内部订单)
             pernr      type bseg-pernr,                                  人员编号
             zuonr      type bapiacgl09-alloc_nmbr,                       分配
             item_text  type bapiacgl09-item_text ,                       文本(凭证行文本)
             xnegp      type bseg-xnegp ,                                 反记账
             menge      type bseg-menge,                                  数量
             meins      type bseg-meins,                                  单位
             xref1      type bseg-xref1 ,                                 参考代码1
             xref2      type bseg-xref2 ,                                 参考代码2
             xref3      type bseg-xref3 ,                                 参考代码3
             zfbdt      type bseg-zfbdt ,                                 基限日期(汇票到期日)
             zterm      type bseg-zterm,                                  付款条件
             rstgr      type bseg-rstgr,                                  原因代码
             vbund      type bseg-vbund,                                  贸易伙伴
             "获利能力段
             kndnr      type kunde_pa,                                    客户
             artnr      type artnr,                                       生产
             fkart      type fkart,                                       开票类型
             kaufn      type kdauf,                                       销售订单
             kdpos      type kdpos,                                       销售订单项目
             rkaufnr    type aufnr,                                       订单
             werks      type werks_d,                                     工厂
             fkber      type fkber,                                       功能范围
             segment    type fb_segment,                                  
             vkorg      type vkorg,                                       销售机构
             vtweg      type vtweg,                                       分销渠道
             spart      type spart,                                       产品组
             pspnr      type ps_psp_pnr,                                  " WBS 要素
             copa_kostl type copa_kostl,                                  成本中心
             kstrg      type kstrg,                                       成本对象
             prctr      type prctr,                                       利润中心
             pprctr     type pprctr,                                      伙伴 PC
             budget_pd  type bseg-budget_pd,                              预算期间
             zlsch      type bseg-zlsch,                                  付款方式
             zzcoalr    type bseg-zzcoalr,                                辅助核算科目

             kmmakl     type matkl,                                       物料组
             kmvkbu     type vkbur,                                       销售办事处
             kmvkgr     type vkgrp,                                       销售组

    *&---用来显示消息的字段
             belnr      type bseg-belnr,                                  会计凭证编号
             gjahr      type bseg-gjahr,                                  财年
             bukrs      type bseg-bukrs,                                  公司代码
             msg        type string,                                      返回消息
             msg_belnr  type string,                                      返回凭证号
             light      type c length 4,                                  消息指示灯
             type       type c length 1,                                  消息类型
    *         slbox,
    *         newbw      TYPE bwasl,                                       " 事物类型   模板已将该字段删除该字段在该程序中已无用
           end of ty_upload,

           begin of ty_criteria_field,
             name type fieldname,
           end of ty_criteria_field.

    *&---------------------------------------------------------------------*
    *& globle/全局变量声明
    *&---------------------------------------------------------------------*
    *&---接收上传数据的内表和工作区

    data:
      gt_upload         type standard table of ty_upload,
      gt_criteria_field type table of ty_criteria_field,
      gt_t001           type sorted table of t001 with unique key bukrs,
      gt_finsc_001a     type sorted table of finsc_001a with unique key bukrs curtype.
    datags_upload type ty_upload.
    datagt_upload_add type standard table of ty_upload.
    datag_flag.
    datagt_bak type standard table of ty_upload.
    field-symbols<fs_upload> type ty_upload.

    *&---ALV参数

    datagt_fieldcat type lvc_t_fcat.
    datags_layout type lvc_s_layo.

    datagt_tbsl type table of tbsl,
          gs_tbsl type tbsl.

    datag_re.

    *&---------------------------------------------------------------------*
    *& 宏声明
    *&---------------------------------------------------------------------*
    define build_fieldcat.
      CLEAR ls_fieldcat.

      ls_fieldcat-fieldname &1.
      ls_fieldcat-coltext   &2.
    *  ls_fieldcat-outputlen = &3.

     "读取定义的长度和小数位
      READ TABLE lr_struct->components INTO ls_components
         
    WITH KEY name &1.
       IF sy-subrc 0.
         ls_fieldcat-inttype   ls_components-type_kind.
         ls_fieldcat-outputlen ls_components-length.
         ls_fieldcat-decimals  ls_components-decimals.
       ENDIF.

      IF ls_fieldcat-fieldname 'GL_ACCOUNT' OR
         ls_fieldcat-fieldname 'CUSTOMER' OR
         ls_fieldcat-fieldname 'VENDOR_NO' OR
         ls_fieldcat-fieldname 'COSTCENTER' OR
         ls_fieldcat-fieldname 'ORDERID' OR
         ls_fieldcat-fieldname 'VBUND' OR
         ls_fieldcat-fieldname 'ASSET_NO' OR
         ls_fieldcat-fieldname 'ANLN2' OR
         ls_fieldcat-fieldname 'KNDNR' OR
         ls_fieldcat-fieldname 'KAUFN' OR
         ls_fieldcat-fieldname 'RKAUFNR' OR
         ls_fieldcat-fieldname 'COPA_KOSTL' OR
         ls_fieldcat-fieldname 'PRCTR' OR
         ls_fieldcat-fieldname 'PPRCTR' OR
         ls_fieldcat-fieldname 'MSG_BELNR'.
         ls_fieldcat-convexit 'ALPHA'.
      ENDIF.

      IF ls_fieldcat-fieldname 'MEINS'.
        ls_fieldcat-convexit 'CUNIT'.
      ENDIF.

      IF ls_fieldcat-fieldname 'ARTNR'.
        ls_fieldcat-convexit 'MATN1'.
      ENDIF.

      IF ls_fieldcat-fieldname 'MSG' OR
         ls_fieldcat-fieldname 'LIGHT' OR
         ls_fieldcat-fieldname 'MSG_BELNR' OR
         ls_fieldcat-fieldname 'TYPE'.
        ls_fieldcat-key  'X'.
      ENDIF.
      APPEND ls_fieldcat TO gt_fieldcat.

    end-of-definition.
    define  fill_ftpost.
      clear ls_ftpost.
      ls_ftpost-stype &1.
      ls_ftpost-count &2.
      ls_ftpost-fnam  &3.
      ls_ftpost-fval  &4.
      condense ls_ftpost-fval no-gaps.
      append ls_ftpost to lt_ftpost.
    end-of-definition.
    *&---------------------------------------------------------------------*
    *& selection screen/选择屏幕
    *&---------------------------------------------------------------------*
    selection-screen begin of block blk1 with frame title text-001.
      parametersp_up   radiobutton group grp1 default 'X' user-command create"EXCEL导入
                  p_down radiobutton group grp1.                "EXCEL下载
      parametersp_file type rlgrap-filename modif id m4."文件名
    selection-screen end of block blk1.
    *--------------------------------------------------------------------*
    * initialization/选择屏幕前初始化
    *--------------------------------------------------------------------*
    initialization.
    *&---初始化变量
      perform initializtion.

    *&---------------------------------------------------------------------*
    *& at selection-screen/选择屏幕开始                                    *
    *&---------------------------------------------------------------------*
    at selection-screen.

    *&---文件路径搜索帮助
    at selection-screen on value-request for p_file.

      datal_filename like rlgrap-filename.

      call function 'WS_FILENAME_GET'
        exporting
    *     DEF_FILENAME     = ',*.XLSX,*.XLSX;,*.XLS,*.XLS;'
    *     DEF_PATH         = ' '
          mask             ',Excel file,*.xls;*.xlsx;'  "
          mode             'O'
    *     TITLE            = ' '
        importing
          filename         l_filename
    *     RC               =
        exceptions
          inv_winsys       1
          no_batch         2
          selection_cancel 3
          selection_error  4
          others           5.
      if sy-subrc 0.
        p_file l_filename.
      endif.

    *
    *  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    *    CHANGING
    *      file_name = p_file.

    *&---屏幕动态显示隐藏设置
    at selection-screen output.

    *&---------------------------------------------------------------------*
    *& start-of-selection/开始选择屏幕
    *&---------------------------------------------------------------------*
    start-of-selection.

      if p_up abap_true .
    *&---检查文件格式
        perform frm_check_filename.
    *&---上载数据
        perform frm_get_data_from_file.
    *&---ALV 展示(file data VS itab data check
        perform get_tbsl_data.
        perform frm_alv_show.
    *&---EXCEL模板下载
      elseif p_down abap_true .
        perform frm_download.
      endif.

    *&---------------------------------------------------------------------*
    *& end-of-selection/结束选择屏幕(程序结束处理,输出等)               *
    *&---------------------------------------------------------------------*
    end-of-selection.
    *&---------------------------------------------------------------------*
    *&      form  check_filename
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form frm_check_filename .

      datalv_s1 type string,
            lv_s2 type string.

      split p_file at '.' into lv_s1 lv_s2.
      translate lv_s2 to upper case.
      if p_file is initial.
        message  text-013 type 'S' display like 'W'"请输入数据路径!
        leave list-processing.
      endif.

    endform" CHECK_FILENAME
    *&---------------------------------------------------------------------*
    *&      form  get_data_from_file
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form frm_get_data_from_file .
      data:
    *    lt_return TYPE bapiret2_t,
    *    ls_return TYPE LINE OF bapiret2_t,
        l_string type string,
        ls_path  type rlgrap-filename.

      field-symbols<fs>.

      data:l_filename type rlgrap-filename,
           l_endrow   type i.

      data:itab type table of zsalsmex_tabline2 with header line.

      cleargt_upload.

      if p_file is initial .
        message text-012  type 'E'"'文件路径不存在'
      endif.

    *  ls_path = p_file.
      l_filename p_file.
      l_endrow   900000.

      call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
        exporting
          filename                l_filename
          i_begin_col             
    1
          i_begin_row             2
          i_end_col               59
          i_end_row               l_endrow
        
    tables
          intern                  itab
        
    exceptions
          inconsistent_parameters 1
          upload_ole              2
          others                  3.
      if sy-subrc <> 0.
      endif.

      if itab[] is not initial.
        loop at itab.
          on change of itab-row.
            if sy-tabix ne 1.
              append gs_upload to gt_upload.
              clear  gs_upload.
            endif.
          endon.

          try.
              assign component itab-col of structure gs_upload to <fs>.
              <fs> itab-value.
            catch cx_sy_conversion_no_number.

              call function 'UNITS_STRING_CONVERT'
                exporting
                  units_string  itab-value
                  dcpfm         'X'
                importing
                  units         <fs>
                
    exceptions
                  invalid_type  1
                  error_message 2
                  others        3.

          endtry.
        endloop.
        append gs_upload to gt_upload.
        clear  gs_upload.
      endif.

    **  TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.
    *  TYPE-POOLS truxs.
    *  DATA: tab_raw_data TYPE truxs_t_text_data."局部变量——导入excel文件时用到的工作区
    *  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    *    EXPORTING
    **     I_FIELD_SEPERATOR    =
    *      i_line_header        = 'X' "不带表头
    *      i_tab_raw_data       = tab_raw_data "导入excel文件时用到的工作区
    *      i_filename           = ls_path "文件的全路径
    *    TABLES
    *      i_tab_converted_data = gt_upload
    *    EXCEPTIONS
    *      conversion_failed    = 1
    *      OTHERS               = 2.
    *  IF sy-subrc <> 0.
    ** Implement suitable error handling here
    *  ENDIF.

    *  CALL FUNCTION 'Z_UPLOAD_FILE'
    *    EXPORTING
    *      i_filename = ls_path
    *      i_skip     = 'X'
    *    TABLES
    *      t_data     = gt_upload[]
    *      t_return   = lt_return.


    *  READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
    *  IF sy-subrc EQ 0.
    *
    *    LOOP AT lt_return INTO ls_return WHERE type = 'E'.
    *
    *      CONCATENATE l_string ls_return-message INTO l_string SEPARATED BY space.
    *
    *    ENDLOOP.
    *
    *    MESSAGE l_string TYPE 'I' .
    *    LEAVE LIST-PROCESSING.
    *
    *  ENDIF.

      if gt_upload is initial.
        message text-014 type 'E'"上传文件不包含任何有效数据!
        stop.
      endif.

      loop at gt_upload assigning <fs_upload>.
        补充前导0
        <fs_upload>-gl_account |{ <fs_upload>-gl_account alpha in }|.
        <fs_upload>-customer   |{ <fs_upload>-customer   alpha in }|.
        <fs_upload>-vendor_no  |{ <fs_upload>-vendor_no  alpha in }|.
        <fs_upload>-costcenter |{ <fs_upload>-costcenter alpha in }|.
        <fs_upload>-orderid    |{ <fs_upload>-orderid    alpha in }|.
        <fs_upload>-vbund      |{ <fs_upload>-vbund      alpha in }|.
        <fs_upload>-asset_no   |{ <fs_upload>-asset_no   alpha in }|.
        <fs_upload>-anln2      |{ <fs_upload>-anln2      alpha in }|.
        <fs_upload>-kndnr      |{ <fs_upload>-kndnr      alpha in }|.
        <fs_upload>-kaufn      |{ <fs_upload>-kaufn      alpha in }|.
        <fs_upload>-rkaufnr    |{ <fs_upload>-rkaufnr    alpha in }|.
        <fs_upload>-copa_kostl |{ <fs_upload>-copa_kostl alpha in }|.
        <fs_upload>-prctr      |{ <fs_upload>-prctr      alpha in }|.
        <fs_upload>-pprctr     |{ <fs_upload>-pprctr     alpha in }|.
        if <fs_upload>-zzcoalr is not initial.
          <fs_upload>-zzcoalr    |{ <fs_upload>-zzcoalr    alpha in }|.
        endif.

        call function 'CONVERSION_EXIT_MATN1_INPUT'
          exporting
            input        <fs_upload>-artnr
          
    importing
            output       <fs_upload>-artnr
          
    exceptions
            length_error 1
            others       2.

        call function 'CONVERSION_EXIT_CUNIT_INPUT'
          exporting
            input          <fs_upload>-meins
          
    importing
            output         <fs_upload>-meins
          
    exceptions
            unit_not_found 1.

      endloop.

      gt_bak gt_upload.

    endform" GET_DATA_FROM_FILE


    *&---------------------------------------------------------------------*
    *&      form  call_bapi
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form call_bapi using flag type abap_bool.
    *&---bapi参数
      data:
        ls_documentheader    type bapiache09,
        lt_accountgl         type standard table of bapiacgl09,      总账
        lt_accountreceivable type standard table of bapiacar09,      客户
        lt_accountpayable    type standard table of bapiacap09,      供应商
        lt_currencyamount    type standard table of bapiaccr09,      金额
        lt_extension2        type standard table of bapiparex,       自定义字段增强
        lt_return            type standard table of bapiret2,        返回参数
        lt_criteria          type standard table of bapiackec9.      获利能力段

      data:
        ls_criteria_field    type ty_criteria_field"获利能力字段
        ls_accountgl         type bapiacgl09,      总账
        ls_accountreceivable type bapiacar09,      客户
        ls_accountpayable    type bapiacap09,      供应商
        ls_currencyamount    type bapiaccr09,      金额
        ls_criteria          type bapiackec9,      获利能力段
        ls_extension2        type bapiparex,       自定义字段增强
        ls_return            type bapiret2,        返回参数。
        ls_zsfi001           type zsfi001 .        增强结构

    *&---根据客户编号和公司代码取出付款条件
      databegin of ls_knb1,
              kunnr like knb1-kunnr,
              bukrs like knb1-bukrs,
              zterm like knb1-zterm,
            end of ls_knb1.
      datalt_knb1 like table of ls_knb1.

    *&---根据供应商编号和公司代码取出付款条件
      databegin of ls_lfb1,
              lifnr like lfb1-lifnr,
              bukrs like lfb1-bukrs,
              zterm like lfb1-zterm,
              akont like lfb1-akont,
            end of ls_lfb1.
      datalt_lfb1 like table of ls_lfb1.

      databegin of ls_skb1,
              bukrs like skb1-bukrs,
              saknr like skb1-saknr,
              xintb like skb1-xintb,
            end of ls_skb1.
      data lt_skb1 like table of ls_skb1 .

      data:lv_str_count type i.
    *&---其它字段定义
      data lv_num type i value 0.        凭证行项目编号
      data lv_umskz_flag type flag.      用来判断要创建的会计凭证是否有特别总账标识
      data:
        lv_flag_case,
        lv_funcname   type rs38l_fnam,
        ls_t001       type t001,
        ls_finsc_001a type finsc_001a,
        ls_upload     type ty_upload.
      field-symbols<fs_field> type any.

      clear gt_upload.

      if flag abap_true.
        lv_funcname 'BAPI_ACC_DOCUMENT_POST'.
      else.
        lv_funcname 'BAPI_ACC_DOCUMENT_CHECK'.
      endif.

      gt_upload gt_bak.获取最原始的备份值

      if gt_upload is not initial .
        select kunnr
             bukrs
             zterm
        
    into corresponding fields of table lt_knb1
        
    from knb1
         
    for all entries in gt_upload
       
    where kunnr gt_upload-customer
         
    and bukrs gt_upload-comp_code.

      endif.

      if gt_upload is not initial .
        select bukrs
               saknr
               xintb
          
    into corresponding fields of table lt_skb1
          
    from skb1
           
    for all entries in gt_upload
         
    where saknr gt_upload-gl_account .

      endif.

      if gt_upload is not initial .
        select lifnr
               bukrs
               zterm
               akont
          
    into corresponding fields of table lt_lfb1
          
    from lfb1
           
    for all entries in gt_upload
         
    where lifnr gt_upload-vendor_no
           
    and bukrs gt_upload-comp_code.

      endif.

      select *
        
    from ztfi007
        
    into table @data(lt_ztfi007).

      sort lt_knb1 by kunnr bukrs.
      sort lt_lfb1 by lifnr bukrs.
      sort lt_skb1 by bukrs saknr .
      sort lt_ztfi007 by bukrs hkont zzcoalr.
    *&---凭证数据整理
      loop at gt_upload assigning <fs_upload>.

        lv_num lv_num + 1.

        at new number.
          clear:
            ls_documentheader,
            ls_t001.
          freelt_accountgl,
                lt_accountreceivable,
                lt_accountpayable,
                lt_currencyamount,
                lt_extension2,
                lt_criteria,
                lt_return.

          ls_documentheader-comp_code  <fs_upload>-comp_code.       公司代码
          ls_documentheader-doc_date   <fs_upload>-doc_date.        凭证日期
          ls_documentheader-pstng_date <fs_upload>-pstng_date.      过账日期
          ls_documentheader-doc_type   <fs_upload>-doc_type.        凭证类型
          ls_documentheader-ref_doc_no <fs_upload>-ref_doc_no.      参考凭证号
          ls_documentheader-header_txt <fs_upload>-header_txt.      凭证抬头文本
          ls_documentheader-username   sy-uname.

          read table gt_t001 into ls_t001 with key bukrs <fs_upload>-comp_code.
        endat.

        clear:
          ls_accountgl,
          ls_accountreceivable,
          ls_accountpayable,
          ls_currencyamount,
          ls_extension2.

        if <fs_upload>-xnegp eq 'X' or <fs_upload>-xnegp eq 'x' or <fs_upload>-xnegp is initial.

        else.

          <fs_upload>-msg   text-015 "'反记账标识只能为x'
          <fs_upload>-type  'E'.
          <fs_upload>-light '@5C@'.
          return.

        endif.

        clear lv_flag_case.

        perform frm_upper_lower_case changing  lv_flag_case   <fs_upload>-xnegp.

        if lv_flag_case eq 'E'.

          <fs_upload>-msg   text-016 ."'大小写转化异常'
          <fs_upload>-type  'E'.
          <fs_upload>-light '@5C@'.
          return.

        endif.

        "检查辅助科目
        if <fs_upload>-zzcoalr is not initial.
          if <fs_upload>-vendor_no is initial.
            read table lt_ztfi007 with key bukrs <fs_upload>-comp_code
                                           hkont 
    <fs_upload>-gl_account
                                           zzcoalr 
    <fs_upload>-zzcoalr
                                           
    binary search
                                           transporting no fields.
          else.
            if line_existslt_lfb1[ lifnr <fs_upload>-vendor_no bukrs <fs_upload>-comp_code ] ).
              read table lt_ztfi007 with key bukrs <fs_upload>-comp_code
                                             hkont 
    lt_lfb1[ lifnr <fs_upload>-vendor_no bukrs <fs_upload>-comp_code ]-akont
                                             zzcoalr 
    <fs_upload>-zzcoalr
                                             
    binary search
                                             transporting no fields.
            endif.
          endif.
          if sy-subrc <> 0.
            <fs_upload>-msg   text-022 .
            <fs_upload>-type  'E'.
            <fs_upload>-light '@5C@'.
            return.

          endif.
        endif.

        "FS00创建/银行/利息” TAB页勾选了只能自动过账” 时,对应的总账科目不能通过F-02做账,必须报错
        read table lt_skb1 into ls_skb1 with key bukrs <fs_upload>-comp_code
                                                 saknr 
    <fs_upload>-gl_account
                                                 
    binary search .
        if sy-subrc .
          if ls_skb1-xintb 'X'.
            "  CONCATENATE '账户' <fs_upload>-gl_account '只能内部记帐到公司代码' <fs_upload>-comp_code '' INTO <fs_upload>-msg .
            concatenate text-017 <fs_upload>-gl_account text-018 <fs_upload>-comp_code text-019 into <fs_upload>-msg .
            <fs_upload>-type  'E'.
            <fs_upload>-light '@5C@'.
            return.
          endif.
        endif.

        if <fs_upload>-customer is not initial.
          ls_accountreceivable-itemno_acc <fs_upload>-buzei.                行项目编号
          ls_accountreceivable-customer   <fs_upload>-customer.     客户

          if <fs_upload>-umskz is not initial .
            ls_accountreceivable-sp_gl_ind <fs_upload>-umskz.     特别总账标识
          endif.

          read table lt_knb1 into ls_knb1 with key kunnr <fs_upload>-customer
                                                   bukrs 
    <fs_upload>-comp_code
                                                   
    binary search.
          if sy-subrc 0.
            ls_accountreceivable-pmnttrms ls_knb1-zterm   .        付款条件
          endif.

          ls_accountreceivable-pmnttrms   <fs_upload>-zterm.       付款条件
          ls_accountreceivable-bline_date <fs_upload>-zfbdt.       付款基准日期

    *      ls_accountreceivable-tax_code = <fs_upload>-tax_code.         " 税码
          ls_accountreceivable-item_text  <fs_upload>-item_text.    凭证行文本
          ls_accountreceivable-ref_key_1  <fs_upload>-xref1.        参考代码1
          ls_accountreceivable-ref_key_2  <fs_upload>-xref2.        参考代码2
          ls_accountreceivable-ref_key_3  <fs_upload>-xref3.        参考代码3
          ls_accountreceivable-bus_area   <fs_upload>-gsber.        业务范围
          ls_accountreceivable-alloc_nmbr <fs_upload>-zuonr.        分配
          ls_accountreceivable-gl_account <fs_upload>-gl_account.   科目代码
          ls_accountreceivable-c_ctr_area <fs_upload>-kkber.        信用控制范围
          ls_accountreceivable-budget_period <fs_upload>-budget_pd预算期间
          ls_accountreceivable-pymt_meth <fs_upload>-zlsch"付款方式
          append ls_accountreceivable to lt_accountreceivable.
        elseif <fs_upload>-vendor_no is not initial.
          ls_accountpayable-itemno_acc <fs_upload>-buzei.                   行项目编号
          ls_accountpayable-vendor_no  <fs_upload>-vendor_no.      供应商

          if <fs_upload>-umskz is not initial .
            ls_accountpayable-sp_gl_ind <fs_upload>-umskz.     特别总账标识
          endif.
          read table lt_lfb1 into ls_lfb1 with key lifnr <fs_upload>-vendor_no
                                                   bukrs 
    <fs_upload>-comp_code
                                                   
    binary search.
          if sy-subrc 0.
            ls_accountpayable-pmnttrms ls_lfb1-zterm   .        付款条件
          endif.
    *      ls_accountpayable-tax_code = <fs_upload>-tax_code.         " 税码

          ls_accountpayable-pmnttrms <fs_upload>-zterm .        付款条件

          ls_accountpayable-bline_date <fs_upload>-zfbdt.          付款基准日期
          ls_accountpayable-item_text  <fs_upload>-item_text.      凭证行文本
          ls_accountpayable-ref_key_1  <fs_upload>-xref1.          参考代码1
          ls_accountpayable-ref_key_2  <fs_upload>-xref2.          参考代码2
          ls_accountpayable-ref_key_3  <fs_upload>-xref3.          参考代码3
          ls_accountpayable-bus_area   <fs_upload>-gsber.          业务范围
          ls_accountpayable-alloc_nmbr <fs_upload>-zuonr.          分配
          ls_accountpayable-gl_account <fs_upload>-gl_account.     科目代码
          ls_accountpayable-budget_period <fs_upload>-budget_pd.   预算期间
          ls_accountpayable-pymt_meth  <fs_upload>-zlsch.          付款方式
          append ls_accountpayable to lt_accountpayable.
        else.
          if <fs_upload>-asset_no is not initial .
            ls_accountgl-asset_no   <fs_upload>-asset_no.             资产号
            ls_accountgl-sub_number <fs_upload>-anln2.
            ls_accountgl-acct_type  'A'.
          endif.

          ls_accountgl-itemno_acc <fs_upload>-buzei.              行项目编号
          ls_accountgl-gl_account <fs_upload>-gl_account.         科目代码
          ls_accountgl-costcenter <fs_upload>-costcenter.         成本中心
          ls_accountgl-orderid    <fs_upload>-orderid.            统计型内部订单
          ls_accountgl-item_text  <fs_upload>-item_text.          凭证行文本
          ls_accountgl-ref_key_1  <fs_upload>-xref1.              参考代码1
          ls_accountgl-ref_key_2  <fs_upload>-xref2.              参考代码2
          ls_accountgl-ref_key_3  <fs_upload>-xref3.              参考代码3
          ls_accountgl-bus_area   <fs_upload>-gsber.              业务范围
          ls_accountgl-person_no  <fs_upload>-pernr.              员工号
          ls_accountgl-quantity   <fs_upload>-menge.
          ls_accountgl-base_uom   <fs_upload>-meins.
          ls_accountgl-alloc_nmbr <fs_upload>-zuonr.               分配
          ls_accountgl-trade_id   <fs_upload>-vbund.               贸易伙伴
          ls_accountgl-budget_period <fs_upload>-budget_pd.        预算期间
          append ls_accountgl to lt_accountgl.
        endif.

        clear gs_tbsl.
        read table gt_tbsl into gs_tbsl with key bschl <fs_upload>-bschl binary search.
        if sy-subrc eq and gs_tbsl-shkzg 'H'.

          <fs_upload>-dmbtr  =  <fs_upload>-dmbtr.
          <fs_upload>-wrbtr  =  <fs_upload>-wrbtr.
          <fs_upload>-dmbe2  =  <fs_upload>-dmbe2.

        endif.

        if <fs_upload>-wrbtr is not initial.
          clearls_currencyamount.
          ls_currencyamount-itemno_acc <fs_upload>-buzei.                     行项目编号
          ls_currencyamount-currency   <fs_upload>-currency.       货币码
          ls_currencyamount-curr_type  '00'.                       凭证中输入的币别类型
          ls_currencyamount-amt_doccur <fs_upload>-wrbtr.          交易货币金额
          ls_currencyamount-exch_rate  <fs_upload>-kursf.
          append ls_currencyamount to lt_currencyamount.
        endif.

        if <fs_upload>-dmbtr is not initial and
           <fs_upload>-currency <> ls_t001-waers.                   输入的货币类别不是公司币种
          clearls_currencyamount.
          ls_currencyamount-itemno_acc <fs_upload>-buzei.         行项目编号
          ls_currencyamount-currency   ls_t001-waers.             货币码
          ls_currencyamount-curr_type  '10'.                      本位币类型
          ls_currencyamount-amt_doccur <fs_upload>-dmbtr.
          ls_currencyamount-exch_rate  <fs_upload>-kursf.
          append ls_currencyamount to lt_currencyamount.
        endif.

        if <fs_upload>-dmbe2 is not initial.
          read table gt_finsc_001a into ls_finsc_001a with key bukrs <fs_upload>-comp_code
                                                               curtype 
    '30'.
          if sy-subrc 0.
            clearls_currencyamount.
            ls_currencyamount-itemno_acc <fs_upload>-buzei.         行项目编号
            ls_currencyamount-currency   SWITCH #ls_finsc_001a-waers when '' then ls_t001-waers else ls_finsc_001a-waers ).      货币码
            ls_currencyamount-curr_type  '30'.                      本位币类型
            ls_currencyamount-amt_doccur <fs_upload>-dmbe2.
            ls_currencyamount-exch_rate  <fs_upload>-kursf.
            append ls_currencyamount to lt_currencyamount.
          endif.
        endif.

        "另外还需要在ACC_DOCUMENT change中加一个增强
        ls_zsfi001-posnr <fs_upload>-buzei.
        ls_zsfi001-rstgr <fs_upload>-rstgr"原因代码
        ls_zsfi001-xnegp <fs_upload>-xnegp"反记账
        ls_zsfi001-bschl <fs_upload>-bschl"过账码
        ls_zsfi001-anbwa <fs_upload>-anbwa"资产交易类型
        ls_zsfi001-numpg <fs_upload>-numpg"页数
        ls_zsfi001-zzcoalr <fs_upload>-zzcoalr.

        clear ls_extension2 .
        ls_extension2-structure 'ZSFI001' .
        ls_extension2+30        ls_zsfi001 .
        append ls_extension2 to lt_extension2 .

        获利能力段
        loop at gt_criteria_field into ls_criteria_field.
          assign component ls_criteria_field-name of structure <fs_upload> to <fs_field>.
          if <fs_field> is assigned and <fs_field> is not initial.
            clear ls_criteria.
            ls_criteria-itemno_acc lv_num.
            ls_criteria-fieldname  ls_criteria_field-name.
            ls_criteria-character  <fs_field>.
            append ls_criteria to lt_criteria.
            unassign:
              <fs_field>.
          endif.
        endloop.

        at end of number.

          perform frm_author_check using ls_documentheader-comp_code .
          if g_re is not initial.
            continue.
          endif.

    *&---检查凭证是否正确
          call function lv_funcname
            
    exporting
              documentheader    ls_documentheader
            
    tables
              accountgl         lt_accountgl
              accountreceivable 
    lt_accountreceivable
              accountpayable    
    lt_accountpayable
              currencyamount    
    lt_currencyamount
              criteria          
    lt_criteria
              
    return            lt_return
              extension2        
    lt_extension2.

          sort lt_return by type .

          read table lt_return with key type 'E' transporting no fields.
          if sy-subrc 0.
            call function 'BAPI_TRANSACTION_ROLLBACK'.
            loop at lt_return into ls_return from sy-tabix.
              if ls_return-type 'E'.
                concatenate <fs_upload>-msg ls_return-message  '_' into <fs_upload>-msg.
              else.
                exit.
              endif.
            endloop.

            clear:lv_str_count.
            lv_str_count strlen<fs_upload>-msg 1"去掉最后一个 _
            <fs_upload>-msg <fs_upload>-msg+(lv_str_count).

            <fs_upload>-type  'E'.
            <fs_upload>-light '@5C@'.
          else.
            read table lt_return with key type 'A' transporting no fields.
            if sy-subrc 0.
              call function 'BAPI_TRANSACTION_ROLLBACK'.
              loop at lt_return into ls_return from sy-tabix.
                if ls_return-type 'A'.
                  concatenate <fs_upload>-msg ls_return-message '_' into <fs_upload>-msg.
                else.
                  exit.
                endif.
              endloop.

              clear:lv_str_count.
              lv_str_count strlen<fs_upload>-msg 1"去掉最后一个 _
              <fs_upload>-msg <fs_upload>-msg+(lv_str_count).

              <fs_upload>-type  'A'.
              <fs_upload>-light '@5C@'.
            else.
              read table lt_return into ls_return with key id 'RW' number '605'.
              if sy-subrc <> 0.
                read table lt_return into ls_return with key id 'RW' number '614'.
              endif.
              if sy-subrc 0.
                <fs_upload>-type  'S'.
                <fs_upload>-light '@5B@'.
                concatenate <fs_upload>-msg ls_return-message into <fs_upload>-msg.
                <fs_upload>-msg_belnr ls_return-message_v2+0(10).
                <fs_upload>-belnr     ls_return-message_v2+0(10).
                <fs_upload>-bukrs     ls_return-message_v2+10(4).
                <fs_upload>-gjahr     ls_return-message_v2+14(4).
              endif.
    *&---正式凭证创建

              if flag abap_true.
                call function 'BAPI_TRANSACTION_COMMIT'
                  exporting
                    wait 'X'.
              endif.
            endif.
          endif.
          "清空工作&内表
          clear:
            ls_documentheader,
            ls_return,
            lv_num.
          refresh:lt_accountgl,
                  lt_accountreceivable,
                  lt_accountpayable,
                  lt_currencyamount,
                  lt_criteria,
                  lt_extension2,
                  lt_return.

          "更新所有 相同number 相同 提示 信息相同;
          clear ls_upload.
          loop at gt_upload into ls_upload where  number <fs_upload>-number.

            ls_upload-msg =  <fs_upload>-msg.
            ls_upload-type =  <fs_upload>-type.
            ls_upload-light =  <fs_upload>-light.
            ls_upload-msg_belnr =  <fs_upload>-msg_belnr.
            ls_upload-belnr =  <fs_upload>-belnr.
            ls_upload-bukrs =  <fs_upload>-bukrs.
            ls_upload-gjahr =  <fs_upload>-gjahr.

            modify gt_upload from ls_upload .

          endloop.

        endat.
      endloop.

    endform" CALL_BAPI
    *&---------------------------------------------------------------------*
    *&      form  frm_alv_fieldcat
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form frm_alv_fieldcat .
      data:
        ls_fieldcat   type lvc_s_fcat,
        ls_upload     type ty_upload,
        lr_struct     type ref to cl_abap_structdescr,
        ls_components type abap_compdescr.


      cleargt_fieldcat.

      lr_struct ?= cl_abap_typedescr=>describe_by_datals_upload ).

      build_fieldcat  'MSG' text-h57"返回消息
      build_fieldcat  'TYPE' text-h58."消息类型
      build_fieldcat  'LIGHT' text-h59."消息指示灯
      build_fieldcat  'MSG_BELNR' text-h60."会计凭证号
      build_fieldcat  'NUMBER' text-h01"序号
      build_fieldcat  'COMP_CODE' text-h02 ."公司代码
      build_fieldcat  'PSTNG_DATE' text-h03."过账日期
      build_fieldcat  'DOC_DATE' text-h04."凭证日期
      build_fieldcat  'DOC_TYPE' text-h05."凭证类型
      build_fieldcat  'CURRENCY' text-h06."凭证类型
      build_fieldcat  'KURSF' text-h07."汇率
      build_fieldcat  'REF_DOC_NO' text-h08."参照
      build_fieldcat  'NUMPG' text-h61."页数
      build_fieldcat  'HEADER_TXT' text-h09."凭证抬头文本
      build_fieldcat  'BUZEI' text-h10."凭证行项目
      build_fieldcat  'BSCHL' text-h11."记账码
      build_fieldcat  'GL_ACCOUNT' text-h12."总账科目
      build_fieldcat  'CUSTOMER' text-h13."客户编码
      build_fieldcat  'VENDOR_NO' text-h14."供应商编码
      build_fieldcat  'UMSKZ' text-h15."特殊总账标识
      build_fieldcat  'ASSET_NO' text-h16."资产编号
      build_fieldcat  'ANLN2' text-h17."次级资产编号
      build_fieldcat  'ANBWA' text-h18."资产操作事务类型
      build_fieldcat  'WRBTR' text-h19."交易货币金额
      build_fieldcat  'DMBTR' text-h20."本位币金额
      build_fieldcat  'DMBE2' text-h62."本位币2金额
      build_fieldcat  'GSBER' text-h21."业务范围
      build_fieldcat  'KKBER' text-h63."信用控制范围
      build_fieldcat  'COSTCENTER' text-h22."成本中心
      build_fieldcat  'ORDERID' text-h23."内部订单
      build_fieldcat  'PERNR' text-h24."人员编号
      build_fieldcat  'ZUONR' text-h25."分配
      build_fieldcat  'ITEM_TEXT' text-h26."凭证行项目文本
      build_fieldcat  'XNEGP' text-h27."反记账标识
      build_fieldcat  'MENGE' text-h28."数量
      build_fieldcat  'MEINS' text-h29."单位
      build_fieldcat  'XREF1' text-h30."参考码1
      build_fieldcat  'XREF2' text-h31."参考码2
      build_fieldcat  'XREF3' text-h32."参考码3
      build_fieldcat  'ZFBDT' text-h33."基准日期(汇票到日期)
      build_fieldcat  'ZTERM' text-h34."付款条件
      build_fieldcat  'RSTGR' text-h35."原因代码
      build_fieldcat  'VBUND' text-h36."贸易伙伴
      build_fieldcat  'KNDNR' text-h37."COPA客户号
      build_fieldcat  'ARTNR' text-h38."COPA物料号
      build_fieldcat  'FKART' text-h39."COPA开票类型
      build_fieldcat  'KAUFN' text-h40."COPA销售订单
      build_fieldcat  'KDPOS' text-h41."COPA销售订单行项目
      build_fieldcat  'RKAUFNR' text-h42."COPA订单
      build_fieldcat  'WERKS' text-h43."COPA工厂
      build_fieldcat  'FKBER' text-h44."COPA功能范围
      build_fieldcat  'SEGMENT' text-h45."COPA
      build_fieldcat  'VKORG' text-h46."COPA销售组织
      build_fieldcat  'VTWEG' text-h47."COPA分销渠道
      build_fieldcat  'SPART' text-h48."COPA产品组
      build_fieldcat  'PSPNR' text-h49."COPA WBS元素
      build_fieldcat  'COPA_KOSTL' text-h50."COPA成本中心
      build_fieldcat  'KSTRG' text-h51."COPA成本对象
      build_fieldcat  'PRCTR' text-h52."COPA利润中心
      build_fieldcat  'PPRCTR' text-h53."COPA伙伴利润中心
    *  build_fieldcat  'KMMAKL' text-h54."COPA物料组
    *  build_fieldcat  'KMVKBU' text-h55."COPA销售办公室
    *  build_fieldcat  'KMVKGR' text-h56."COPA销售组
      build_fieldcat  'BUDGET_PD' text-h64"预算期间
      build_fieldcat  'ZLSCH' text-h65"付款方式
      build_fieldcat  'ZZCOALR' text-h66"辅助核算科目

    endform" F_ALV_FIELDCAT
    *&---------------------------------------------------------------------*
    *&      form  frm_layout
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    form frm_layout .
      gs_layout-zebra      'X'.
      gs_layout-cwidth_opt 'X'.
    endform" F_LAYOUT
    *&---------------------------------------------------------------------*
    *&      form  frm_display
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    form frm_display .
    *&---设置变式保存

      call function 'REUSE_ALV_GRID_DISPLAY_LVC'
        exporting
          i_callback_program       sy-repid
          i_callback_pf_status_set 
    'FRM_SET_STATUS'
          i_callback_user_command  'FRM_USER_COMMAND'
          is_layout_lvc            gs_layout
          it_fieldcat_lvc          
    gt_fieldcat
          i_save                   
    'A'
        tables
          t_outtab                 gt_upload.

      if sy-subrc <> 0.
      endif.

    endform"F_DISPLAY
    *&---------------------------------------------------------------------*
    *&      form  frm_set_status
    *&---------------------------------------------------------------------*
    *       alv状态栏设置
    *----------------------------------------------------------------------*
    form frm_set_status using pt_extab type slis_t_extab .
      set pf-status 'STANDARD' excluding pt_extab.
    endform"Frm_SET_STATUS
    *&---------------------------------------------------------------------*
    *&      form  frm_set_status
    *&---------------------------------------------------------------------*
    *       alv按钮处理
    *----------------------------------------------------------------------*
    form frm_user_command using pv_ucomm like sy-ucomm
                                ps_selfield 
    type slis_selfield.

      ps_selfield-refresh    abap_true.
      ps_selfield-row_stable abap_true.
      ps_selfield-col_stable abap_true.

      case pv_ucomm.
        when 'SAVE1'.
    *&--------------调用BAPI
          if g_flag 1.
            message text-020 type 'E'"'该界面不允许连续两次过账'
          endif.

          perform save using abap_true.


          g_flag 1.

        when 'TEST'.
    *&--------------调用BAPI
          perform save using abap_false.

        when others.
      endcase.

    endform"user_command
    *&---------------------------------------------------------------------*
    *&      form  frm_download
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p_1        text
    *  <--  p_2        text
    *----------------------------------------------------------------------*
    form frm_download .

    *&---变量定义

      datalv_text       type string,                    "message
            lv_filename   type string,                    "download file name
            lv_path       type string,                    "download file path
            ls_functxt    type smp_dyntxt,                "menu name
            lv_filepath   type rlgrap-filename value 'c'"file patch
            lv_title      type string ,                   "title
            lv_title_name type string,                    "title name
            lv_mod(20)    type c,                         "model
            lv_fullpath   type string,                    "full path
            ls_object     type wwwdatatab,                "object name
            lv_rc         type sy-subrc.                  "return code

    *&---SMWO 模板名称

      lv_mod 'ZFI005'"下载文件名

    *&---调用OS 操作系统对话框

      lv_title      text-002"会计凭证导入模板下载
      lv_title_name text-003"会计凭证导入模板

      call method cl_gui_frontend_services=>file_save_dialog
        
    exporting
          window_title              lv_title
          default_extension         
    'xlsx'
          default_file_name         lv_title_name
        
    " with_encoding             =
          file_filter               'EXCEL文件(*.XLSX)|*.XLSX|全部文件 (*.*)|*.*|'
          initial_directory         'D:\'
          prompt_on_overwrite       'X'
        changing
          filename                  lv_filename  "默认文件名称
          path                      lv_path   "文件路径
          fullpath                  lv_fullpath  "文件路径
        " user_action               =
        " file_encoding             =
        exceptions
          cntl_error                1
          error_no_gui              2
          not_supported_by_gui      3
          invalid_default_file_name 4
          others                    5.
      if sy-subrc <> 0.
    *   Implement suitable error handling here
      endif.

    *&---操作系统文件路径

      concatenate lv_path
        lv_filename

    *    '.xlsx'
        into lv_filepath.

      check lv_filepath is not initial.

    *&---OS长度控制/*&---下载模板

      if strlenlv_filepath <> 4.

    *&---查询模板.
        select single
           relid objid
         
    from wwwdata
         
    into corresponding fields of ls_object
         
    where srtf2 '0'
           and objid lv_mod.                         "smw0里对象名称
        if sy-subrc <> or ls_object-objid space .
          lv_text text-010"模板文件不存在,请联系相关人员维护!
          message lv_text type 'E'.
          stop.
        endif.

    *&---下载模板

        call function 'DOWNLOAD_WEB_OBJECT'
          exporting
            key         ls_object
            destination 
    lv_filepath
          
    importing
            rc          lv_rc.
        if lv_rc <> 0.
          lv_text text-011"下载失败,请联系技术人员!
          message lv_text type 'E'.
          stop.
        endif.

    *&---'已成功下载'

        message text-106 type 'S'.
      else.

    *&---'已取消下载'

        message text-107 type 'S'.
      endif.
    endform.
    *&---------------------------------------------------------------------*
    *& form get_tbsl_data
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    form get_tbsl_data .

      select *
        
    into corresponding fields of table gt_tbsl
        
    from tbsl.

      sort gt_tbsl by bschl.

    endform.
    *&---------------------------------------------------------------------*
    *&      form  frm_alv_show
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form frm_alv_show .
      perform frm_alv_fieldcat.        设置ALV要显示的字段和字段格式
      perform frm_layout.              " ALV整体布局设置
      perform frm_display.             " ALV展示
    endform" FRM_ALV_SHOW
    *&---------------------------------------------------------------------*
    *& form frm_author_check
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *      -->p_ls_documentheader_comp_code  text
    *&---------------------------------------------------------------------*
    form frm_author_check using p_comp_code type bukrs .

      clear g_re.

      authority-check object 'F_BKPF_BUK'
       id 'BUKRS' field p_comp_code
       
    id 'ACTVT'  dummy.
      if sy-subrc <> 0.

        <fs_upload>-msg text-021"'公司代码权限检查不通过'

        <fs_upload>-type 'E'.
        <fs_upload>-light '@5C@'.

        g_re '1'.

      endif.

    endform.
    *&---------------------------------------------------------------------*
    *& form frm_add_data
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    form frm_add_data .

      data num_add(5).

      data num_now(20).

      data number_new(20).

      data account(4type p.

      data l_dmbtr type dmbtr.

      loop at gt_upload into gs_upload.
        at new number.

          if num_now is not initial .

            gs_upload-dmbtr l_dmbtr.
            gs_upload-gl_account '9999990030'.
            cleargs_upload-dmbtr ,gs_upload-gl_account,gs_upload-bschl.
            if l_dmbtr > 0.

              gs_upload-bschl '50'.

              append gs_upload to gt_upload_add.


            elseif l_dmbtr < 0.

              gs_upload-bschl '40'.

              append gs_upload to gt_upload_add.

            endif.

          endif.

          clear account.
          clear num_now.
          clear l_dmbtr.

        endat.

        if num_now is not initial .

          gs_upload-number number_new.
          append gs_upload to gt_upload_add.

        else.

          append gs_upload to gt_upload_add.

        endif.


        if gs_upload-bschl eq '19'.
          l_dmbtr l_dmbtr gs_upload-dmbtr.
        else.
          l_dmbtr l_dmbtr + gs_upload-dmbtr.
        endif.


        account account + 1.
        if account 900.


          gs_upload-dmbtr l_dmbtr.
          gs_upload-gl_account '9999990030'.
          cleargs_upload-dmbtr ,gs_upload-gl_account,gs_upload-bschl.
          if l_dmbtr > 0.

            gs_upload-bschl '50'.

            append gs_upload to gt_upload_add.


          elseif l_dmbtr < 0.

            gs_upload-bschl '40'.

            append gs_upload to gt_upload_add.

          endif.
          num_now gs_upload-number"记录超过 900 的当前行 用来判断后续需要从新生成number的行

          num_add num_add + 1."超过 900 的次数 用于生成新的 number

          shift num_add left deleting leading space.

    *      SHIFT num_now RIGHT DELETING TRAILING  space.

          condense num_now no-gaps.

          concatenate num_now 'a' num_add into number_new.

          clear account.
          clear l_dmbtr.


        endif.

      endloop.

    endform.
    *&---------------------------------------------------------------------*
    *& form frm_upper_lower_case
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    form frm_upper_lower_case changing p_re type c p_str type c .

      data p_dem.
      if p_str is initial.
        p_re 'S'.
        return.
      endif.
      call function 'STRING_UPPER_LOWER_CASE'
        exporting
          delimiter p_dem
          string1   
    p_str
        
    importing
          string    p_str
        
    exceptions
          not_valid 1
          too_long  2
          too_small 3
          others    4.
      if sy-subrc <> 0.

    * Implement suitable error handling here
        p_re 'E'.
      else.
        p_re 'S'.
      endif.

    endform.
    *&---------------------------------------------------------------------*
    *& Form INITIALIZTION
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    form initializtion .

      获利能力段字段
      gt_criteria_field value #(
                                  name 'KNDNR' )"客户
                                  name 'ARTNR' )"生产
                                  name 'FKART' )"开票类型
                                  name 'KAUFN' )"销售订单
                                  name 'KDPOS' )"销售订单项目
                                  name 'RKAUFNR' )"订单
                                  name 'WERKS' )"工厂
                                  name 'FKBER' )"功能范围
                                  name 'SEGMENT' )"
                                  name 'VKORG' )"销售机构
                                  name 'VTWEG' )"分销渠道
                                  name 'SPART' )"产品组
                                  name 'PSPNR' )"WBS 要素
                                  name 'COPA_KOSTL' )"成本中心
                                  name 'KSTRG' )"成本对象
                                  name 'PRCTR' )"利润中心
                                  name 'PPRCTR' )"伙伴 PC
                                  name 'KMMAKL' )"物料组
                                  name 'KMVKBU' )"销售办事处
                                  name 'KMVKGR' )"销售组
                                 ).

      select *
        
    into corresponding fields of table gt_t001
        
    from t001.

      select *
        
    into corresponding fields of table gt_finsc_001a
        
    from finsc_001a.

    endform.
    *&---------------------------------------------------------------------*
    *& Form save
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *&      --> ABAP_TRUE
    *&---------------------------------------------------------------------*
    form save  using    p_post type abap_bool.
      data:
        lt_t074u type table of t074u,
        ls_t074u type t074u,
        lv_bdc   type char01,
        lv_koart type t074u-koart.

      select *
        
    into corresponding fields of table lt_t074u
        
    from t074u.

      sort lt_t074u by koart umskz.

      loop at gt_upload into data(ls_uploadwhere customer <> space
                                                 
    or vendor_no <> space.

        if ls_upload-customer <> space.
          lv_koart 'D'.

        endif.

        if ls_upload-vendor_no <> space.
          lv_koart 'K'.

        endif.

        clearls_t074u.
        read table lt_t074u into ls_t074u with key koart lv_koart
                                                   umskz 
    ls_upload-umskz
                                                   
    binary search.
        if ls_t074u-umsks 'W'.
          lv_bdc abap_true.
          exit.
        endif.
      endloop.

      if lv_bdc abap_true.
        perform call_bdc using p_post.
      else.
        perform call_bapi using p_post.
      endif.

    endform.
    *&---------------------------------------------------------------------*
    *& Form call_bdc
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *&      --> P_POST
    *&---------------------------------------------------------------------*
    form call_bdc  using    p_post type abap_bool.
      data:
        lt_ftpost type table of ftpost,
        ls_ftpost type ftpost,
        lt_blntab type table of blntab,
        lt_fttax  type table of fttax,
        lv_bschl  type bschl,
        lv_index  type i,
        lv_mode   type rfpdo-allgazmd value 'N',
        ls_sy     type syst.

      if p_post <> abap_true.
        message e001(00)  with '票据类型不支持凭证检查.
        exit.
      endif.

      loop at gt_upload assigning <fs_upload>.


        at new number.
          clear:
            lt_ftpost,
            lv_index,
            lt_fttax,
            lt_blntab.

          fill_ftpost 'K' '0001' 'BKPF-BUKRS' <fs_upload>-comp_code.          公司代码
          fill_ftpost 'K' '0001' 'BKPF-BLART' <fs_upload>-doc_type.           凭证类型
          fill_ftpost 'K' '0001' 'BKPF-MONAT' <fs_upload>-pstng_date+4(2).              期间
          fill_ftpost 'K' '0001' 'BKPF-BLDAT' <fs_upload>-doc_date.           凭证日期
          fill_ftpost 'K' '0001' 'BKPF-BUDAT' <fs_upload>-pstng_date.         过账日期
          fill_ftpost 'K' '0001' 'BKPF-BKTXT' <fs_upload>-header_txt.         凭证抬头文本
          fill_ftpost 'K' '0001' 'BKPF-XBLNR' <fs_upload>-ref_doc_no.         参考凭证号
          fill_ftpost 'K' '0001' 'BKPF-WAERS' <fs_upload>-currency.
          fill_ftpost 'K' '0001' 'BKPF-NUMPG' <fs_upload>-numpg.

          if <fs_upload>-kursf is not initial.
            fill_ftpost 'K' '0001' 'BKPF-KURSF' <fs_upload>-kursf.              汇率
          endif.

    *      if <fs_upload>-xmwst is not initial .
    *        fill_ftpost 'K' '0001' 'BKPF-XMWST' <fs_upload>-xmwst."计算税额
    *      endif.
        endat.

        lv_index lv_index + 1.

        fill_ftpost 'P' lv_index 'BSEG-BSCHL' <fs_upload>-bschl.             记账码
        fill_ftpost 'P' lv_index 'BSEG-UMSKZ' <fs_upload>-umskz.

    *   如果客户不为空,则为客户行
        if <fs_upload>-customer is not initial.
          fill_ftpost 'P' lv_index 'BSEG-KUNNR' <fs_upload>-customer.  客户编号
        endif.

    *   如果供应商不为空,则为供应商行
        if <fs_upload>-vendor_no is not initial.
          fill_ftpost 'P' lv_index 'BSEG-LIFNR' <fs_upload>-vendor_no供应商编码
        endif.

        if <fs_upload>-gl_account is not initial.
          fill_ftpost 'P' lv_index 'BSEG-HKONT' <fs_upload>-gl_account.科目代码
        endif.

        if <fs_upload>-xnegp is not initial.
          fill_ftpost 'P' lv_index 'BSEG-XNEGP' <fs_upload>-xnegp.     反记账
        endif.

    *    if <fs_upload>-wdate is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WDATE' <fs_upload>-wdate. "汇票签发日期
    *    endif.

    *    if <fs_upload>-wname is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WNAME' <fs_upload>-wname. "收款人
    *    endif.
    *
    *    if <fs_upload>-wbzog is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WBZOG' <fs_upload>-wbzog. "付款人
    *    endif.
    *
    *    if <fs_upload>-wlzbp is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WLZBP' <fs_upload>-wlzbp. "票据号
    *    endif.
    *
    *    if <fs_upload>-wbank is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WBANK' <fs_upload>-wbank. "付款银行
    *    endif.
    *
    *    if <fs_upload>-wstat is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WSTAT' <fs_upload>-wstat. "票据状态
    *    endif.
    *
    *    if <fs_upload>-wevwv is not initial.
    *      fill_ftpost 'P' lv_index 'BSED-WEVWV' <fs_upload>-wevwv. "收票业务类型
    *    endif.

    *    fill_ftpost: 'P' lv_index 'RF05A-NEWBS' lv_bschl,      "
    *                 'P' lv_index 'RF05A-NEWKO' <fs_upload>-hkont. "
        "'P' lv_index 'RF05A-NEWUM' <fs_upload>-newum. "

        <fs_upload>-wrbtr abs<fs_upload>-wrbtr ).

        fill_ftpost'P' lv_index 'BSEG-WRBTR' <fs_upload>-wrbtr,"原币科目余额
    *                 'P' lv_index 'BSEG-DMBTR' <fs_upload>-dmbtr,"本位币金额
                     'P' lv_index 'BSEG-ZUONR' <fs_upload>-zuonr,"分配/接收银行描述
                     'P' lv_index 'BSEG-SGTXT' <fs_upload>-item_text."文本

        if <fs_upload>-rstgr is not initial.
          fill_ftpost 'P' lv_index 'BSEG-RSTGR' <fs_upload>-rstgr"原因代码
        endif.

        if <fs_upload>-zfbdt is not initial.
          fill_ftpost 'P' lv_index 'BSEG-ZFBDT' <fs_upload>-zfbdt."    "付款基准日期/到期日
        endif.

        if <fs_upload>-vbund is not initial.                           "贸易伙伴 200325
          fill_ftpost 'P' lv_index 'BSEG-VBUND' <fs_upload>-vbund.
        endif.

        if <fs_upload>-costcenter is not initial.
          fill_ftpost 'P' lv_index 'COBL-KOSTL' <fs_upload>-costcenter.  "成本中心
        endif.

        if <fs_upload>-prctr is not initial.
          fill_ftpost 'P' lv_index 'COBL-PRCTR' <fs_upload>-prctr.  "利润中心
        endif.

        if <fs_upload>-orderid is not initial.
          fill_ftpost 'P' lv_index 'COBL-AUFNR' <fs_upload>-orderid"内部订单
        endif.

    *    if <fs_upload>-tax_code is not initial.
    *      fill_ftpost 'P' lv_index 'BSEG-MWSKZ' <fs_upload>-tax_code. "税码
    *    endif.

        at end of number.
          call function 'POSTING_INTERFACE_START'
            exporting
    *         I_CLIENT           = SY-MANDT
              i_function         'C'
    *         I_GROUP            = ' '
    *         I_HOLDDATE         = ' '
    *         I_KEEP             = ' '
              i_mode             lv_mode
              i_user             
    sy-uname
            
    exceptions
              client_incorrect   1
              function_invalid   2
              group_name_missing 3
              mode_invalid       4
              update_invalid     5
              others             6.
          if sy-subrc <> 0.

          endif.

          call function 'POSTING_INTERFACE_DOCUMENT'
            exporting
              i_tcode                  'FB01'
    *         I_SGFUNCT                = ' '
    *         i_no_auth                = ' '
            importing
              e_msgid                  ls_sy-msgid
              e_msgno                  
    ls_sy-msgno
              e_msgty                  
    ls_sy-msgty
              e_msgv1                  
    ls_sy-msgv1
              e_msgv2                  
    ls_sy-msgv2
              e_msgv3                  
    ls_sy-msgv3
              e_msgv4                  
    ls_sy-msgv4
            
    tables
              t_blntab                 lt_blntab
              t_ftpost                 
    lt_ftpost
              t_fttax                  
    lt_fttax
            
    exceptions
              account_missing          1
              company_code_missing     2
              posting_key_invalid      3
              posting_key_missing      4
              record_type_invalid      5
              transaction_code_invalid 6
              amount_format_error      7
              too_many_line_items      8
              company_code_invalid     9
              screen_not_found         10
              no_authorization         11
              error_message            12
              others                   13.

          if sy-subrc <> 0.
            message id sy-msgid
                    
    type sy-msgty number sy-msgno
                    
    with sy-msgv1
                         sy
    -msgv2
                         sy
    -msgv3
                         sy
    -msgv4
                    
    into <fs_upload>-msg .

            <fs_upload>-type  'E'.
            <fs_upload>-light '@5C@'.
          else.

            if ls_sy-msgty 'S'"
             and ls_sy-msgno '312' or ls_sy-msgno '323' ).

              message id ls_sy-msgid
                      
    type ls_sy-msgty number ls_sy-msgno
                      
    with ls_sy-msgv1
                           ls_sy
    -msgv2
                           ls_sy
    -msgv3
                           ls_sy
    -msgv4
                    
    into <fs_upload>-msg .

              <fs_upload>-type  'S'.
              <fs_upload>-msg_belnr ls_sy-msgv1.
              <fs_upload>-light '@5B@'.
            else.
              message id ls_sy-msgid
                      
    type ls_sy-msgty number ls_sy-msgno
                      
    with ls_sy-msgv1
                           ls_sy
    -msgv2
                           ls_sy
    -msgv3
                           ls_sy
    -msgv4
                      
    into <fs_upload>-msg .

              <fs_upload>-type  'E'.
              <fs_upload>-light '@5C@'.
            endif.
          endif.

          call function 'POSTING_INTERFACE_END'
            exporting
              i_bdcimmed              'X'
    *         I_BDCSTRTDT             = NO_DATE
    *         I_BDCSTRTTM             = NO_TIME
            exceptions
              session_not_processable 1
              others                  2.
          if sy-subrc <> 0.

          endif.
        endat.
      endloop.

    endform.

    更多相关内容
  • 查看会计凭证

    2020-12-20 22:06:49
    创建类型划分,SAP系统中的会计凭证有两种类型:手工创建和其它业务自动创建。本文档显示的是向客户开票生成的会计凭证。在查看会计凭证的同时,还可以查看关联的凭证,包括凭证、IDOC等,在此需在界面点击菜单...

    一.说明

    查看会计凭证码是FB03,它可以查询最近一次生成的会计凭证。如果未知凭证号,也可以在操作中进行搜索。

    按创建类型划分,SAP系统中的会计凭证有两种类型:手工创建和其它业务自动创建。本文档显示的是向客户开票生成的会计凭证。

    在查看会计凭证的同时,还可以查看关联的凭证,包括凭证、IDOC等,在此需在界面点击菜单“环境→凭证环境→关系浏览器”,更多信息参见《

    二.常规凭证查看

    在前台输入事物码FB03,进入初始屏幕界面,输入凭证编号和公司代码(此两项为必填项),年份为选输项,如图 1所示。按回车键进入图 2界面。

    图 1 初始屏幕

    图 2 凭证总览

    图 2是会计凭证总览界面,可以看到凭证的抬头和三个项目数据。抬头部分显示了凭证编号、公司代码、凭证日期、过账日期等信息。其中参照条目(值1)表明了此会计凭证是由此参照凭证转账过来,参照凭证的类型还未知,可通过以下步骤查询。

    条目部分显示了三条行项目,标明了记账码、科目、金额、税等信息。在行项目上用鼠标点击成选择状态,再点击条目查看按钮(

    ),可以看不同的条目信息,如图 3、图 4分别显示了第1个、第2个行项目信息。

    图 3 第1个行项目信息

    图 4 第2个行项目信息

    在图 2的界面上,用鼠标点击查看凭证抬头按钮(

    ),弹出对话框如图 5所示。从此图可以看到凭证的类型是RV(开票凭证转账),知会计凭证是由事物码VF01(事物代码条目值)开票时创建的开票凭证0090000003(参考码条目值)自动转账生成的。双击参考码条目中的值,可以进入另一界面查看开票凭证。

    图 5 抬头信息对话框

    本例的参考凭证还可以用事物码VF03查看。根据不同的的参考事物或参考交易,可用不同的事物码进行查看,常见的如表1所示:

    参考事物/参考交易

    参考凭证类型

    查看事物码

    PRCHG 价格修改

    价格修改

    CKMPCD

    RMRP发票收据

    发票校验

    MIR4

    VBRK出具发票

    发票

    VF03

    MKPF材料凭证

    物料凭证

    MB03 / MIGO

    表1 参考凭证查看事物码

    展开全文
  • SAP LSMW会计凭证导入操作手册

    千次阅读 2020-06-22 07:00:00
    以下内容是基于ECC版中LSMW实现会计凭证导入操作手册,仅供大家参考。1.登录界面执行事务代码LSMW显示如下界面:输入项目(project)、子项目(subproject)和对象(...

    以下内容是基于ECC版中LSMW实现会计凭证导入操作手册,仅供大家参考。

    1. 登录界面

    执行事务代码LSMW显示如下界面:

    输入项目(project)、子项目(subproject)和对象(object),点击创建按钮()输入相应的描述,点击执行按钮或F8()进入分步操作界面,项目(project)、子项目(subproject)可以选择系统内已有的,对象(object)需要新增。

    1. 操作界面

    2.1维护对象属性(Maintain Object Attributes

    选择标准批量直接导入(standard batch/direct input),并且在对象(object)中维护“0100-财务单据”,在方法(method)中维护“0000”,点击保存(),后退。

    2.2维护源结构(Maintain Source Structures

    点击创建()定义凭证抬头源结构,见下图:

    选中凭证抬头源结构,点击创建()定义凭证行项目源结构,见下图:

    选择较低层次(lower level):

    点击确认(),完成源结构维护:

    点击保存(),并退出。

    2.3维护源字段(Maintain Source Fields

    由于财务会计凭证的导入不是通过录屏方式导入,所以源结构的字段需要用户自行维护,用户可以根据系统标准选择导入会计凭证需要的字段。通过以下方式查找字段

    点击上图中的对象预览(object overview)出现下图:

    选择列表(list)或表格(table)显示会计凭证的字段,包括凭证抬头字段(表BKPF)和行项目字段(表BSEG):

    对于显示结果也可以保存为EXCEL(路径:系统→列表→保存→本地文件),由于系统中的表字段很多,并且从翻译为中文的字面意思也不容易确定具体的字段内容,为了方便查询到所需要的字段,可以在凭证录入界面(事务代码F-02)使用F1查看需要的字段名,然后在上图中或保存为EXCEL中查询该字段信息,维护源字段需要的信息有字段名、类型、长度、描述。收集完需要的字段后执行“2.3维护源字段”。

    分别选中会计凭证抬头和会计凭证行项目,点击内容()维护需要的相应的凭证抬头字段和行项目字段。

    l 会计凭证抬头字段:

    l 会计凭证行项目字段:

    根据所导入凭证内容需要可以增加如WBS、订单、特别标识等字段。

    由于导入会计凭证时需要导入一个抬头和多个行项目。所以在外部文件和系统中需要给出凭证抬头和行项目的标识。

    Ø 定义凭证抬头标识

    选中会计凭证抬头(DOCUMENTHEAD),点击创建按钮()定义标识字段:

    输入抬头标识字段名、字段描述、长度和字段值,确认。

    Ø 定义凭证行项目标识

    选中会计凭证行项目(DOCUMENTITEM),点击创建按钮()定义标识字段:

    输入行项目标识字段名、字段描述、长度和字段值,确认。

    点击保存(),并退出。

    2.4维护结构联系(Maintain Structure Relations

    将定义的源结构(凭证抬头和凭证行项目)与系统中的表结构进行关联

    将上图中的“BGR00”、“BBKPF”与源结构“DOCUMENTHEAD”关联;“BBSEG”与源结构“DOCUMENTITEM”关联。

    选中“BGR00”,点击,选择“DOCUMENTHEAD”进行关联:

    “BBKPF”和“BBSEG”的关联方法相同。关联结果如下:

    2.5维护字段映射和转化规则(Maintain Field Mapping and Conversion Rules

    将维护的源字段与系统内凭证表字段进行对应设置。

    将维护的源字段与系统内凭证表字段进行的方法有两种。一种是选择某一系统中的字段,然后点击与源结构字段对应;第二种为点击“Extras→Auto-Field Mapping”由系统根据源字段与系统字段的名称自动对应,如下图:

    全部点击确认或一直压着回车键直到全部对应完毕。对应结果如下图:

    对应完成后,点击保存(),并退出。

    2.6维护字段值、转换、自定义事务(Maintain Fixed Values, Translations, User-Defined Routines

    该步骤不操作,直接跳过。

    2.7指定文件(Specify Files

    在执行此步操作前,需要用户先制作好导入用的外部TXT文件,用户可以先在EXCEL文件中整理,整理好后复制到TXT文本中。

    对于一些会计科目,某些字段可能不需要输入,则用“/”表示。

    制作外部文件后,执行“2.7指定文件(Specify Files)”操作。

    选中上图的“Legacy Data”,点击创建按钮();或者双击“Legacy Data”:

    按照上图选中内容维护即可,维护完成后如下图:

    对应完成后,点击保存(),并退出。

    2.8分配文件(Assign Files

    将“2.7指定文件(Specify Files)”中指定的文件分配给源结构(抬头和行项目):

    分别选中上图中“DOCUMENTHEAD”和“DOCUMENTITEM”,点击分配文件,分配结果如下图:

    点击保存(),并退出。

    2.9读取数据(Read Data

    读取上传文件中的数据,按系统提示操作即可。

    退出执行下一步。

    2.10显示读取的数据(Display Read Data

    显示文件中的数据,可检查源字段与文件中的字段对应是否正确。

    双击某一行可显示具体数据,检查对应关系。

    退出执行下一步。

    2.11转换数据(Convert Data

    查看可以导入系统中的条目数,如果在“2.5维护字段映射和转化规则”步骤中源字段与系统字段对应有问题,则在此处会报错。

    点击执行:

    没有报错,退出执行下一步。

    2.12显示转换数据(Display Converted Data

    显示导入系统字段内的数据,可检查源字段与系统字段的对应关系。

    双击某一行可查看导入系统中的字段和内容:

    没有报错,退出执行下一步。

    2.13生成批输入会话(Start Direct Input Program

    将文件中的导入内容生成批处理会话。

    选择“Program RFBIBL00”。

    传输类型选择“B”,点击执行,如果文件内容有错误,或者不规范,则会提示错误信息,用户需要根据具体的错误信息查明原因,一般会提示“会计科目不存在”、“记账码和SG标识不匹配”等一些制证时常出现的问题,如果文件维护正确,则只有以下三步提示,多于这些提示可能说明文件维护不规范,需要调整后重新读取数据。

    1. 执行界面

    执行“2.操作界面”中生成的批处理会话,执行事务代码“/nSM35”:

    在上图中选中生成的批处理会话,点击处理():

    按照上图提示维护处理方法,点击,处理完成会出现下图:

    你“在看”我吗?

    展开全文
  • sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表:1、运行事务代码SPAD;选择工具栏上的【完全管理】按钮——>选择【设备类型】...

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表:

    1、运行事务代码SPAD;选择工具栏上的【完全管理】按钮——>选择【设备类型】页面(在该页面上有四个按钮:【设备类型】、【打印控制】、【格式类型】、【页格式】);

    2、选择【页格式】进入页格式列表界面,选择工具栏上的【修改】图标,工具栏左边会出现【新建】图标(注:不点【修改】图标是不会出现【新建】图标的);选择【新建】图标进入新建页格式界面,输入页格式名称“zkz”,方向选择肖像“Portrait”即竖向,纸张大小为:纸宽“215mm”、纸长“140mm”;(注:方向选为竖向则纸打印时是按竖向来作打印,如方向选横向则按横向打印,当你纸张设为140*215时才可横向打印);保存退出;

    895715fc592a8b3c48b7e6f507759fa6.png

    3、选择【格式类型】进入格式列表界面,选择工具栏上的【新建】图标进入新建格式界面,格式类型输入“215*140”,类型选择“sapscript”或“abap列表”均可;属性选择前面设置的页格式名称“zkz”,填写注释“xxxxx”;保存退出;

    78212456f93ccc750eee07b19c9433cf.png

    4、选择【设备类型】进入设备类型列表界面,在列表中选择设备类型为“CNSAPWIN”双击进入设备类型(更改)界面,选择工具栏上的【格式】按钮图标进入设备类型格式修改界面,选择【新建】图标,在弹出的对话框的“格式化”框内填入上面所设置的格式类型“215*140”,确定即可。

    a16be3ec0d1e72593548077304aa0894.png

    (备注:嵌入的代码为:1:# CNSAPWIN SAPscript spool form

    # Selectformlength fromthe windows printmanager!

    # changeWinCharSet to134(GB2312)

    \eW134;

    2:# Nocontrolcodes!

    3:# FormFeed

    \f

    4: # NewLine

    \n  )

    5、对于是使用write输出报表的,可以双击上述做好的格式类型“215*140”进入maintain format界面,双击要编辑的地方,进入代码编写界面,可在代码中写打印的行间距、字间距、字体、字体大小。

    至此就为SAP的报表打印设置了针孔纸的纸张打印格式,接着是在报表中的使用:

    6、write输出的方式,不需要在程序中设置,只是在打印时要求用户选择“格式类型”为上面所设置的“215*140”;

    7、smarform方式,在使用事务代码smartforms画表格时,在“表格属性”栏的“输出选项”中的“页格式”选择上面所设置的“215*140”即可。

    8、对于针式打印机,其默认纸张都是A4,我们需要自定义一种纸张的大小,定义纸张格式为215*140,实际尺寸可设置为214.5mm/139.5mm。

    至此,你的ABAP报表就可以使用针式打印打印出正确的格式出来了。

    注意:由于SAP与针式打印机之间接口的问题,如果表格线太细,打印出来的表格会有时缺少部分横线和竖线,纠正办法是:加粗表格的表框线,最好设置到20TW。

    展开全文
  • SAP会计凭证查看

    万次阅读 2018-05-23 21:19:36
     根据来源划分,有两种会计凭证:手工创建凭证和其它业务自动创建。该文章显示的是给客户开票生成的会计凭证。 二、凭证查看  在前台输入事务代码FB03,进入初始界面,输入凭证编号、公司代码、会计年度,如图1...
  • SAP 发票凭证冻结下达

    千次阅读 2020-04-15 16:39:37
    发票凭证冻结下达: 业务场景: 当MIRO或其他方式做发票校验时,可能会由于超过容差限制、等待付款等原因,出现发票凭证冻结的情况;需要用户下达或释放冻结的凭证后,才能向供应商付款并产生付款等凭证。 可以...
  • SAP-SAP预制凭证相关的表

    千次阅读 2018-11-13 03:20:12
    SAP-SAP预制凭证相关的表
  • 金色传说:SAP-ABAP-物料凭证增强:锁定库存地点不能生成物料凭证(限制库存物料进出)
  • SAP PCA凭证分割相关配置

    千次阅读 2020-02-27 19:09:07
    目录 相关概念 把方案和客户字段分配到分类帐 为文档拆分给总分类帐科目分类 为文档拆分给文档类型分类 定义零余额清算科目 定义总帐会计核算的凭证分解特征 定义成本控制的凭证拆分特征 编辑...
  • 比如应收中,FB60和F-43两个事务界面上一个是发票日期(英文Invoice),一个是凭证日期;在应付中也有相同的情况; 通过对帮忙帮助,中英文信息的对尝试找寻两者区别的线索。似乎也是一个意思。 这个问题我尚无...
  • SAP FI 系列 (021) - 周期性凭证

    千次阅读 2020-05-08 23:27:27
    周期性凭证 (Recurring document) 是 SAP 提供的另一种辅助凭证录入的方法,它也是一种模板,但除了模板功能之外,还包括对凭证输入的一些控制参数,比如首次运行时间,末次运行时间,间隔时间等。 创建周期性凭证 ...
  • 对做错的会计凭证SAP 并不提供常规的删除操作,需要通过冲销 (reversal) 的方式来消除数据影响。对会计凭证的冲销,财务有红字冲销和蓝字冲销的概念。假设我们做了一张会计凭证,需要冲销,下图展示了红字冲销和蓝...
  • 销售订单的创建是比较常规的业务操作,在此基础上,创建新的订单时通过参照创建是 后台配置路径如下:SPRO——销售与分销——销售凭证——维护销售凭证的复制控制
  • SAP MM MIGO界面上的Freight标签页 事务代码MIGO针对采购订单收货的时候,能出现Freigth Tab。 这是笔者玩SAP系统十多年来第一次知道的,就在今天,就在刚刚。自然引起了笔者强烈的好奇心。经过上网查资料,...
  • SAP FI 系列 (015) - 手工录入会计凭证

    千次阅读 2020-05-04 17:07:38
    SAP 需要手工录入的凭证很少,主要是零星费用、收款付款等操作。...SAP 提供两种凭证录入的界面,一种是以 FB50 为代表的界面SAP 将这种界面成为 Enjoy Screen。但由于 SAP 有 posting key 的概念,F...
  • SAP FI 系列 (013) - 会计凭证的配置

    千次阅读 2020-04-16 17:58:41
    创建会计凭证后,生成会计凭证号码,SAP 系统根据 company code, fiscal year 以及 document number 三个条件唯一标识一个会计凭证。会计凭证一般基于年度,每年重新开始凭证编号。这个与国内的惯例不同。 Document ...
  • 在销售凭证范围内,除独自创建外,还可以参照其它凭证创建,这就需要有相关的复制配置。以最为常用的销售订单为例,可以参照协议、合同等创建,也可以参照其它销售订单创建。销售凭证到销售凭证的复制配置,包含表头...
  • SAP MM MIGO界面里的'Via Delivery'选项 MIGO界面,选择A02-Return Delivery, R02-Material document,输入物料凭证号,此时界面上会出现'Via Delivery'选项,如下图示,勾选这个选项, 保存后,不会生成...
  • ​所有文章在公众号“MZ信息化咨询杂谈”同步更新!​ ​郑重声明:本博客所发文章全部为原创,其他地方所看到同样文章如无授权,均为盗用!以下为本篇正文(文章是多年以来积累...我们都知道SAP中每个模块都需要对号
  • 外行假装内行,我也来谈谈SAP BAPI和BADI A, 什么是BAPI? BAPI是business application programming interface的缩写,是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/...
  • 菜单路径会计->控制->成本中心会计->主数据->成本中心->单个处理->创建事务代码KS01双击或在处输入SAP事务代码:KS01进入下一屏幕(如果已在SAP系统中登录过成本控制范围的窗口时,该步将不会出现而直接...
  • 释疑の手工凭证界面不显示页数

    千次阅读 2017-02-24 09:18:02
    创建手工凭证F-02 或者 FB50时候不显示页数一栏。 这个实则是针对特定国家的设定,我们仅需设置个人参数即可。 进入Su3——参数 参数ID : CSF 参数值:AR 保存即可。
  • SAP WM初阶之WM层面的移动类型可以配置成后续TO单据自动产生 在SAP WM模块里,可以通过后台配置,使得相关WM层面移动类型相关的TO单据自动生成。这样可以减轻业务人员手工操作的工作量。 具体配置如下: ...
  • SAP 可配置BOM创建

    千次阅读 2017-02-28 10:03:26
    SAP 可配置BOM
  • SAP MM配置2 MM2.1 组织2.1.1 工厂SM30 V_T001W,建8810和88112.1.2 OX18公司代码分配工厂2.1.3 OX08定义采购组织2.1.4 OX01采购组织分配公司代码2.1.5 OX17给工厂分配采购组织2.1.6 OMKI给工厂分配标准采购组织...
  • 创建采购申请的号码段01,创建一个采购申请凭证类型Z01,分配号码范围内部号码范围01,配置允许的项目类别L,项目类别为L 的申请项目只能转换成项目类别为L 的RFQ 项目(凭证类型为AN). 配置步骤 配置1: 上面...
  • 再检查公司代码是否是我们需要导入的公司代码(如:将HNBC的科目导入到SOFT公司代码下,就需要将HNBC改为SOFT) 无误后将excel另存为文本格式(sap不认excel格式) 准备就绪后,双击第七步进入下图,再点击新建按钮 ...
  • IM 层面盘点凭证创建事务代码MI01的初始界面,有一个选项叫做‘Freeze book inventory’的,   在之前的项目里,基本也没有用到它。项目实践中,这个盘点凭证创建界面一般会勾选Posting Block选项。那对于...
  • 但这里通过后,并不代表你可以将所要操作的业务进行完毕,在不同的地方,系统还会检查其他的授权对象,比如在操作到与会计凭证的公司代码相关的事务时,系统会检查f_bkpf_buk 这个授权对象,只有这个检查通过后,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,415
精华内容 566
关键字:

sap 界面创建凭证