ZSD_PAYER_NEW(创建付款方)

来源:互联网 发布:游戏代练iapp源码 编辑:程序博客网 时间:2024/04/28 13:11
*&---------------------------------------------------------------------*
*& Report  ZSD_PAYER_NEW
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSD_PAYER_NEW.

DATA BEGIN OF t_bdcdata OCCURS 0.
        INCLUDE STRUCTURE bdcdata.
DATA END OF t_bdcdata.
DATA opt TYPE ctu_params.
datack_test.
databegin of t_custm occurs 0,
       kunnr(10),
       bukrs(4),
       ktokd(4),
       anred(10)"15c
       name1(35),
       name2(35),
       name4(35),
       sorts(20),
       stras(60),
       pstlz(10),
       ort01(35),
       land1(3),
       regio(3),
       spras(1),
       telf1(16),
       telfx(16),
       email(80),
       banks(2),
       banka(60),
       bankl(15),
       bankn(18),
       akont(10),
       sortk(4),
       zterm(4),
       zahls(1),
       con_persn(10),
       con_telef(16),
      end of t_custm.
data:i_kna1 like kna1,
     i_knb1 like knb1,
     i_add1 like BAPIADDR1,
     i_add2 like bapiaddr2,
     i_knvv like knvv,
     t_knbk like fknbk occurs with header line,
     t_knvi like fknvi occurs with header line,
     t_knvk like fknvk occurs with header line,
     t_xknvp like fknvp occurs with header line,
     t_yknvp like fknvp occurs with header line.

DATAsubrc LIKE sy-subrc,
credit_control_flag LIKE bapikna108-x_flag value 'X',
postflag LIKE wdl_flag-xflag.

data:     E_KUNNR LIKE  KNA1-KUNNR,
          O_KNA1  LIKE  KNA1,
          RETURN  LIKE  BAPIRETURN1.

databegin of i_upld occurs 0,
*      anred    like   kna1-anred,   "Title
      ktokd    like   kna1-ktokd,   "Accout Group
      kunnr    like   kna1-kunnr,   "Customer No.
      bukrs    like   knb1-bukrs,   "Company Code
      vkorg    like   knvv-vkorg,   "Sales Org
      vtweg    like   knvv-vtweg,   "Distribution
      spart    like   knvv-spart,   "Division

      name1    like   kna1-name1,   "Name1
      name4    like   kna1-name4,   "Name1
      sortl    like   kna1-mcod1,   "Search term1
      land1    like   kna1-land1,   "Country

      akont    like   knb1-akont,   "Reconciliation

      ktgrd    like   knvv-ktgrd,   "Assign Group

      zterm    like   knb1-zterm,   "Payment term
      aland    like   knvi-aland,   "Taxes
      tatyp    like   knvi-tatyp,   "Tax Category
      taxkd    like   knvi-taxkd,   "Classification

end of i_upld.


parametersp_file LIKE rlgrap-filename OBLIGATORY   default 'D:\payer_new.txt'.

at selection-screen on value-request for p_file.

  perform select_file.

form select_file .

  call function 'WS_FILENAME_GET'

    exporting

      mask             ',Text Files,*.txt,All Files,*.*.'(101)

      title            '选择文件'(100)

    importing

      filename         p_file

    exceptions

      inv_winsys       1

      no_batch         2

      selection_cancel 3

      selection_error  4

      others           5.

  if sy-subrc <> and sy-subrc <> 3.

    "message e100(zdev) with '选择文件出错!'(007).

  endif.

endform.

*selection-screen skip.
*parameters: p_term as checkbox default 'X'.

*parameters: file like FILENAME-FILEINTERN
*            default 'E:\usr\sap\MED\DVEBMGS00\work\customer.dat'.


 start-of-selection.

*   open dataset file for input in text mode.
**           encoding default.
*   if sy-subrc eq 0.
*   do.
*   clear t_custm.
*   read dataset file into t_custm.
*   if sy-subrc ne 0.
*    exit.
*   endif.
*   append t_custm.
*   enddo.
*   else.
   perform fill_temp_data.
*   endif.
   perform neu_custom.

*&---------------------------------------------------------------------*
*&      Form  neu_custom
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM neu_custom.
     loop at i_upld.
      clear:i_kna1,i_knb1,i_knvv,i_add1,i_add2,
            t_knbk,t_knvk,t_xknvpt_yknvp.
      refresh:t_knbk,t_knvk,t_xknvp,t_yknvp,t_knvi.

      i_kna1-ktokd i_upld-ktokd.
      i_kna1-kunnr i_upld-kunnr.
      i_knb1-bukrs i_upld-bukrs.
      i_knvv-vkorg i_upld-vkorg.
      i_knvv-vtweg i_upld-vtweg.
      i_knvv-spart i_upld-spart.

      i_kna1-name1 i_upld-name1.
      i_kna1-name4 i_upld-name4.
      i_kna1-sortl i_upld-sortl.
      i_kna1-land1 i_upld-land1.

      i_knb1-kunnr i_upld-kunnr.
      i_knb1-akont i_upld-akont.

      i_knvv-kunnr       i_upld-kunnr.
      i_knvv-ktgrd       i_upld-ktgrd.   "Assign Group

      i_add1-name        i_upld-name1.
      i_add1-name_4       i_upld-name4.
      i_add1-sort1       i_upld-sortl.
      i_add1-country     i_upld-land1.


      i_kna1-spras '1'.       "i_upld-spras.
      i_add1-LANGU       =  '1'.     "i_upld-spras.


      i_knb1-zterm       i_upld-zterm.
      i_knvv-zterm       i_upld-zterm.   "Payment Term
      t_knvi-kunnr       i_upld-kunnr.
      t_knvi-aland       i_upld-aland.
      t_knvi-tatyp       i_upld-tatyp.
      t_knvi-taxkd       i_upld-taxkd.
      t_knvi-KZ          'U'.
      if t_knvi is not initial.
        append t_knvi.
      endif.

      postflag 'X'.
      CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
       EXPORTING
        i_kna1      i_kna1
        i_knb1      i_knb1
        i_knvv      i_knvv
        I_BAPIADDR1 i_add1
*        I_BAPIADDR2 = i_add2
*        I_MAINTAIN_ADDRESS_BY_KNA1 = 'X'
        PI_CAM_CHANGED 'X'
        pi_postflag postflag
       IMPORTING
        e_kunnr e_kunnr
        o_kna1  o_kna1
       TABLES
*        T_XKNAS =
*        T_XKNBK = t_knbk
*        T_XKNB5 =
*        T_XKNEX =
*        T_XKNVA =
*        T_XKNVD =
        T_XKNVI t_knvi
*        T_XKNVK = t_knvk
*        T_XKNVL =
*        T_XKNVP = t_xknvp
*        T_YKNVP = t_yknvp
*        T_XKNZA =
       EXCEPTIONS
        client_error 1
        kna1_incomplete 2
        knb1_incomplete 3
        knb5_incomplete 4
        knvv_incomplete 5
        kunnr_not_unique 6
        sales_area_not_unique 7
        sales_area_not_valid 8
        insert_update_conflict 9
        number_assignment_error 10
        number_not_in_range 11
        number_range_not_extern 12
        number_range_not_intern 13
        account_group_not_valid 14
        parnr_invalid 15
        bank_address_invalid 16
        tax_data_not_valid 17
        no_authority 18
        company_code_not_unique 19
        dunning_data_not_valid 20
        knb1_reference_invalid 21
        cam_error 22
        OTHERS 23
        .

        subrc sy-subrc.
        CLEAR sy-subrc.

        PERFORM returnsubrc_1
        in program saplv02d
        USING    subrc
                 e_kunnr
        CHANGING e_kunnr
                 return.

        IF subrc 0.
        if postflag eq 'X'.
         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
*         CALL FUNCTION 'BAPI_CUSTOMER_CHANGEFROMDATA'
*           EXPORTING
*             PI_ADDRESS          = i_add1
*             PI_SALESORG         = i_upld-vkorg
*             PI_DISTR_CHAN       = i_upld-vtweg
*             PI_DIVISION         = i_upld-spart
*             CUSTOMERNO          = o_kna1-kunnr
**          IMPORTING
**            PE_ADDRESS          =
**            RETURN              =
*                   .
*         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
        endif.

           write:/ o_kna1-kunnr'was created!'.
        else.
*        elseif postflag eq 'X'.
         CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*           write:/ i_kna1-kunnr,
*                   'hasn''t created successfully!'.
           write:return-type,
                   return-id,
                   return-message,
                   return-message_v1,
                   return-message_v2,
                   return-message_v3,
                   return-message_v4.
        ENDIF.

CLEARi_kna1,
       i_knb1,
       i_knvv,
       i_add1,
       i_add2.

       clear i_upld.
     endloop.
ENDFORM.                    " neu_custom
*&---------------------------------------------------------------------*
*&      Form  fill_temp_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fill_temp_data.
  datatemp type string.

     temp p_file.
     CALL FUNCTION 'GUI_UPLOAD'
       EXPORTING
         FILENAME                      temp
*        FILETYPE                      = 'ASC'
         HAS_FIELD_SEPARATOR           'X'
*        HEADER_LENGTH                 = 0
*        READ_BY_LINE                  = 'X'
*        DAT_MODE                      = ' '
*        CODEPAGE                      = '8400'
*        IGNORE_CERR                   = ABAP_TRUE
         REPLACEMENT                   '&'
*        CHECK_BOM                     = ' '
*      IMPORTING
*        FILELENGTH                    =
*        HEADER                        =
       TABLES
         DATA_TAB                      i_upld
      EXCEPTIONS
        FILE_OPEN_ERROR               1
        FILE_READ_ERROR               2
        NO_BATCH                      3
        GUI_REFUSE_FILETRANSFER       4
        INVALID_TYPE                  5
        NO_AUTHORITY                  6
        UNKNOWN_ERROR                 7
        BAD_DATA_FORMAT               8
        HEADER_NOT_ALLOWED            9
        SEPARATOR_NOT_ALLOWED         10
        HEADER_TOO_LONG               11
        UNKNOWN_DP_ERROR              12
        ACCESS_DENIED                 13
        DP_OUT_OF_MEMORY              14
        DISK_FULL                     15
        DP_TIMEOUT                    16
        OTHERS                        17
               .
    if sy-subrc ne 0.
       write'File Upload Error!'.
       write:'Return Code:',sy-subrc.
       stop.
    endif.
 ENDFORM.                    " fill_temp_data

 FORM fill_bdcdata USING p_par1 p_par2 p_par3.
  CLEAR t_bdcdata.
  IF p_par3 IS INITIAL.
    t_bdcdata-fnam p_par1.
    t_bdcdata-fval p_par2.
  ELSE.
    t_bdcdata-program  p_par1.
    t_bdcdata-dynpro   p_par2.
    t_bdcdata-dynbegin p_par3.
  ENDIF.
  APPEND t_bdcdata .
ENDFORM.                    "fill_bdcdata
*&---------------------------------------------------------------------*
*&      Form  translate_zterm
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_I_UPLD_ZTERM2  text
*      <--P_I_KNVV_ZTERM  text
*----------------------------------------------------------------------*
FORM translate_zterm  USING    P_I_ZTERM
                      CHANGING P_O_ZTERM.
  case p_i_zterm.
    when 'A001'.
      P_o_ZTERM '0001'.
    when 'A004'.
      P_o_ZTERM '0301'.
    when 'A016'.
      P_o_ZTERM '0501'.
    when 'A018'.
      P_o_ZTERM '0601'.
    when 'A045'.
      P_o_ZTERM '0451'.
    when 'AF45'.
      P_o_ZTERM '0750'.
    when 'ZZI1'.
      P_o_ZTERM '0301'.
    when others.
    write:'DC mapping for payment exclude item:'p_i_zterm.
  endcase.


ENDFORM.                    " translate_zterm
原创粉丝点击