java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)

本文介绍了如何使用Java设计一个bank类来实现银行功能,重点涉及SAP银企直连的平安银行ECC版。内容涵盖了公司代码、支付方法、银行确定和开户行的配置,以及交易代码和交易结构类的详细配置。同时,文中还提及了寻找SAP相关资料的方法和获取现金红包的QQ群。
摘要由CSDN通过智能技术生成
72ba07b5f1a26560ae5c2275c0645a25.gif 4481905b3f36a4c4dcb563b032e68102.png 关于讲解SAP中国本地化银企直连系统功能,它通过ECC和S4 HANA 1909两个不同版本的演示来讲解银企直连付款相关功能实施和应用,有兴趣的可以联系微信号:timijia进行付费获取。 以下资料仅供大家参考: 说明:因为平安银行较SAP标准的三家银行(或是四家)在报文上存在差别,所以对于这类银行的处理都是在实现类中构建对应的报文,然后再解析返回的报文。

一.公司代码、支付方法、银行确定、开户行

Tcode:FBZP e9e0a6a2f95f8648128801b98cdf74f5.png 公司代码是所有的有交易往来的公司代码。 付款方式是交易的方式定义: 3b0464f25fbda54a4396e6a5090da678.png 付款方式Y是自定义的银行支付的方式 4acf79ce3b7066fdccfd44d8a3f4c776.png 我对财务不是很懂,那个凭证类型就不说了哈!下面是一个屏没截出来的图 23b5bdc12d04b7f4bbecfaa15971dbae.png 其中格式字段是为在付款过程中系统根据行项目来生成的报文格式,因为字段需要,所以在此处平安银行的报文还是沿用了建行的报文结构。只是在后面处理的时候,选择性的用。 下面是银行编号信息: f60d466bd8de754c0a8b5557ebcda056.png 下面是开户行信息: ebae65968cd99a07ea0963c4092cd0a8.png

二.交易代码和交易中的结构类配置

T-code:spro->财务会计(新)->应收账款和应付账款->业务交易->国家特定设置->中国->电子支付中心->定义银行通讯详细信息 此处信息最终在表EPIC_C_BCD中存储。 付款: 60b77165b0b6abd9a642649bb0a645a9.png 余额查询: 240046edcf9355548ff076f4acb76744.png a580de8995a903e190168477564c4582.png 交易明细查询: 3c112a7a1c7b32542198aa7eca6bfd0b.png d79e34be437dd3c34f6616bef3c50c45.png

三.类实现

类属性: ebd0bea88b7322ca842519fd1d46483f.png 类类型: types:BEGIN OF TY_RESP_MAPPING_RESULTI,
      ACCTDATE         TYPE STRING,
      TXTIME           TYPE STRING,
      HOSTTRACE        TYPE STRING,
      OUTNODE          TYPE STRING,
      OUTBANKNO        TYPE STRING,
      OUTBANKNAME      TYPE STRING,
      OUTACCTNO        TYPE STRING,
      OUTACCTNAME      TYPE STRING,
      CCYCODE          TYPE STRING,
      TRANAMOUNT       TYPE STRING,
      INNODE           TYPE STRING,
      INBANKNO         TYPE STRING,
      INBANKNAME       TYPE STRING,
      INACCTNO         TYPE STRING,
      INACCTNAME       TYPE STRING,
      DCFLAG           TYPE STRING,
      ABSTRACTSTR      TYPE STRING,
      VOUCHERNO        TYPE STRING,
      TRANFEE          TYPE STRING,
      POSTFEE          TYPE STRING,
      ACCTBALANCE      TYPE STRING,
      PURPOSE          TYPE STRING,
      ABSTRACTSTR_DESC TYPE STRING,
      CVOUCHERNO       TYPE STRING,
      PROXYPAYACC      TYPE STRING,
      PROXYPAYNAME     TYPE STRING,
      PROXYPAYBANKNAME TYPE STRING,END OF TY_RESP_MAPPING_RESULTI .types:
    TY_TAB TYPE STANDARD TABLE OF TY_RESP_MAPPING_RESULTI WITH DEFAULT KEY .types:BEGIN OF TY_RESP_MAPPING_RESULTH,
      ACCTNO       TYPE STRING,
      CCYCODE      TYPE STRING,
      ENDFLAG      TYPE STRING,RESERVE      TYPE STRING,
      PAGERECCOUNT TYPE STRING,
      LIST         TYPE TY_TAB,"TY_RESP_MAPPING_RESULTI,END OF TY_RESP_MAPPING_RESULTH .types:BEGIN OF TY_RESP_MAPPING_RESULT,
      ACCOUNT       TYPE STRING,
      CCYCODE       TYPE STRING,
      CCYTYPE       TYPE STRING,
      ACCOUNTNAME   TYPE STRING,
      BALANCE       TYPE STRING,
      TOTALAMOUNT   TYPE STRING,
      ACCOUNTTYPE   TYPE STRING,
      ACCOUNTSTATUS TYPE STRING,
      BANKNAME      TYPE STRING,END OF TY_RESP_MAPPING_RESULT .types:BEGIN OF TY_REQU_MAPPING_SOURCE,
      ACCOUNT TYPE STRING,
      CCYTYPE TYPE STRING,
      CCYCODE TYPE STRING,END OF TY_REQU_MAPPING_SOURCE .types:BEGIN OF TY_RESP_MAPPING_PAY,
      THIRDVOUCHER   TYPE STRING,
      FRONTLOGNO     TYPE STRING,
      CCYCODE        TYPE STRING,
      OUTACCTNAME    TYPE STRING,
      OUTACCTNO      TYPE STRING,
      INACCTBANKNAME  TYPE STRING,
      INACCTNO       TYPE STRING,
      INACCTNAME     TYPE STRING,
      TRANAMOUNT     TYPE STRING,
      UNIONFLAG      TYPE STRING,
      FEE1           TYPE STRING,
      FEE2           TYPE STRING,
      SOA_VOUCHER    TYPE STRING,
      HOSTFLOWNO     TYPE STRING,
      MOBILE         TYPE STRING,
      CSTINNERFLOWNO TYPE STRING,END OF TY_RESP_MAPPING_PAY .types:BEGIN OF TY_RESP_MAPPING_RESULTP,
      REQUEST_SN  TYPE STRING,
      CUST_ID     TYPE STRING,
      TX_CODE     TYPE STRING,
      RETURN_CODE TYPE STRING,
      RETURN_MSG  TYPE STRING,LANGUAGE    TYPE STRING,END OF TY_RESP_MAPPING_RESULTP .   类方法:   METHOD IF_EPIC_BANK_COMM_IMPL~CREATE_REQUEST.DATA LS_T012K TYPE T012K.DATA LS_DIALOG TYPE EPIC_S_EXAMPLE_CN_CCB_GHTD_DP.SELECT SINGLE * INTO CORRESPONDING FIELDS OF LS_T012K FROM T012KWHERE BUKRS = IS_BANK_COMM_KEY-ZBUKRAND   HBKID = IS_BANK_COMM_KEY-HBKIDAND   HKTID = IS_BANK_COMM_KEY-HKTID.IF IS_BANK_COMM_KEY-HBKID EQ 'PAB01'.IF IS_BANK_COMM_KEY-HKTID EQ 'PAB01'.IF IS_BANK_COMM_KEY-BCTYP EQ '020'."余额查询
          GV_TYPE = 'S'.
          ME->SET_REBALANCE_REQUEST_XSTRING( EXPORTING IS_T012K = LS_T012K ).ELSEIF IS_BANK_COMM_KEY-BCTYP EQ '040'."交易明细查询
          GV_TYPE = 'D'.
          LS_DIALOG = IS_DIALOG_PARAMETERS.
          ME->SET_TRADETAIL_REQUEST_XSTRING( EXPORTING IS_T012K = LS_T012K IS_BEGIN = LS_DIALOG-STARTDATE IS_END = LS_DIALOG-ENDDATE ).ELSEIF IS_BANK_COMM_KEY-BCTYP EQ '010'."付款
          GV_TYPE = 'P'.
          LS_DIALOG = IS_DIALOG_PARAMETERS.
          ME->SET_PAYMENT_REQUEST_XSTRING( EXPORTING IS_T012K = LS_T012K IS_OTHER_PARAMETERS = IS_OTHER_PARAMETERS ).ENDIF.ENDIF.ENDIF.ENDMETHOD.   METHOD SET_TRADETAIL_REQUEST_XSTRING.DATA: LV_STRING     TYPE STRING,
          LV_COUNT      TYPE STRING,
          G_XML_STRING2 TYPE STRING,
          LV_DATUMS     TYPE STRING,
          LV_DATUME     TYPE STRING,
          LV_PAGENO     TYPE STRING,
          LS_REQ_HEAD   TYPE ZEPIC_S_PINGAN_CN_REQ_H.IF IS_T012K-BNKN2 IS NOT INITIAL.CONCATENATE '' IS_T012K-BNKN2 '' INTO LV_COUNT.ELSEIF IS_T012K-BANKN IS NOT INITIAL.CONCATENATE '' IS_T012K-BANKN '' INTO LV_COUNT.ENDIF.CONCATENATE '' IS_BEGIN ''  INTO LV_DATUMS.CONCATENATE '' IS_END ''  INTO LV_DATUME.IF LV_COUNT IS NOT INITIAL.CONCATENATE  G_XML_STRING2'<?xml  version="1.0" encoding="GBK"?>'''
               LV_COUNT'RMB'
               LV_DATUMS
               LV_DATUME'' GV_CODEPAGE ''''''INTO  G_XML_STRING2.ENDIF.
    LS_REQ_HEAD-DATA_TYPE     = 'A00101'."报文体
    LS_REQ_HEAD-DATA_ENCODE   = '01'."报文编码01:GBK缺省 02:UTF8 03:unicode 04:iso-8859-1
    LS_REQ_HEAD-DATA_COMM     = '01'."通讯协议01:tcpip 缺省  02:http  03:webservice  银行方面只支持:TCPIP接入
    LS_REQ_HEAD-DATA_IDCODE   = '00901079800000018000'."银企直连企业代码  固定死
    LS_REQ_HEAD-DATA_LEN      = STRLEN( G_XML_STRING2 )."报文体长度
    LS_REQ_HEAD-TRANS_CODE    = '4013'."交易代码 40001为余额查询;单笔转账为4004;历史明细为4013;当日明细为4008;
    LS_REQ_HEAD-SEVI_TYPE     = '01'."服务类型 01请求  02应答
    LS_REQ_HEAD-TRANS_DATE    = SY-DATUM."交易日期
    LS_REQ_HEAD-TRANS_TIME    = SY-UZEIT."交易时间IF GV_NUM IS INITIAL.
      LS_REQ_HEAD-REQUEST_SN    = ME->NUM_RANGE_GET( )."'10000000000000000025'."流水号,需要定制格式和编码 请求方系统流水号
      GV_NUM = LS_REQ_HEAD-REQUEST_SN.ELSE.
      LS_REQ_HEAD-REQUEST_SN = GV_NUM .ENDIF.
    LS_REQ_HEAD-RETURN_CODE   = ''."返回码
    LS_REQ_HEAD-RETURN_MESS   = ''."返回描述
    LS_REQ_HEAD-LAST_PACK_ST  = '0'."后续包标志 0-结束包,1-还有后续包
    LS_REQ_HEAD-REQUEST_TIME  = '000'."请求次数
    LS_REQ_HEAD-SIGN_ID       = '0'."签名标识0不签名 1签名  (填0企业不管,由前置机完成)
    LS_REQ_HEAD-SIGN_ALG       = ''."签名算法
    LS_REQ_HEAD-ATT_NUMC       = 0."附件数目
    LV_STRING = LS_REQ_HEAD.CONCATENATE  LV_STRING G_XML_STRING2 INTO G_XML_STRING2.
    GV_REQUEST_XSTRING = G_XML_STRING2.ENDMETHOD.      LS_REQ_HEAD-DATA_TYPE     = 'A00101'."报文体
    LS_REQ_HEAD-DATA_ENCODE   = '01'."报文编码01:GBK缺省 02:UTF8 03:unicode 04:iso-8859-1
    LS_REQ_HEAD-DATA_COMM     = '01'."通讯协议01:tcpip 缺省  02:http  03:webservice  银行方面只支持:TCPIP接入
    LS_REQ_HEAD-DATA_IDCODE   = '00901079800000018000'."银企直连企业代码  固定死
    LS_REQ_HEAD-DATA_LEN      = STRLEN( G_XML_STRING2 )."报文体长度
    LS_REQ_HEAD-TRANS_CODE    = '4013'."交易代码 40001为余额查询;单笔转账为4004;历史明细为4013;当日明细为4008;
    LS_REQ_HEAD-SEVI_TYPE     = '01'."服务类型 01请求  02应答
    LS_REQ_HEAD-TRANS_DATE    = SY-DATUM."交易日期
    LS_REQ_HEAD-TRANS_TIME    = SY-UZEIT."交易时间IF GV_NUM IS INITIAL.
      LS_REQ_HEAD-REQUEST_SN    = ME->NUM_RANGE_GET( )."'10000000000000000025'."流水号,需要定制格式和编码 请求方系统流水号
      GV_NUM = LS_REQ_HEAD-REQUEST_SN.ELSE.
      LS_REQ_HEAD-REQUEST_SN = GV_NUM .ENDIF.
    LS_REQ_HEAD-RETURN_CODE   = ''."返回码
    LS_REQ_HEAD-RETURN_MESS   = ''."返回描述
    LS_REQ_HEAD-LAST_PACK_ST  = '0'."后续包标志 0-结束包,1-还有后续包
    LS_REQ_HEAD-REQUEST_TIME  = '000'."请求次数
    LS_REQ_HEAD-SIGN_ID       = '0'."签名标识0不签名 1签名  (填0企业不管,由前置机完成)
    LS_REQ_HEAD-SIGN_ALG       = ''."签名算法
    LS_REQ_HEAD-ATT_NUMC       = 0."附件数目
    LV_STRING = LS_REQ_HEAD.CONCATENATE  LV_STRING G_XML_STRING2 INTO G_XML_STRING2.
    GV_REQUEST_XSTRING = G_XML_STRING2.ENDMETHOD.     METHOD SET_PAYMENT_REQUEST_XSTRING.DATA: LV_STRING     TYPE STRING,
          LV_COUNT      TYPE STRING,
          LV_NUM        TYPE CHAR6,
          LV_SNUM       TYPE STRING,
          G_XML_STRING2 TYPE STRING,
          LV_ACCTNAME   TYPE STRING,
          LV_ACCTADDR   TYPE STRING,
          LV_BANKNODE   TYPE STRING,
          LV_INACCT     TYPE STRING,
          LV_INNAME     TYPE STRING,
          LV_INBANK     TYPE STRING,
          LV_AMOUNT     TYPE STRING,
          LS_REQ_HEAD   TYPE ZEPIC_S_PINGAN_CN_REQ_H.DATA:LV_INBANKLEN  TYPE I,
         LV_INADDRLEN  TYPE I,
         LV_INUSERLEN  TYPE I,
         LV_OUTBANKLEN TYPE I,
         LV_OUTADDRLEN TYPE I,
         LV_OUTUSERLEN TYPE I.DATA:LS_BNKA  TYPE BNKA,
         LS_T012  TYPE T012,
         LS_T012T TYPE T012T.DATA:LS_FILESTR TYPE ZEPIC_S_PAYM_FILE_S.DATA  LS_OTHER_PARAMETERS TYPE EPIC_S_PAYM_FILE_BC_PARAMETER.DATA  LT_ITEM_KEYS TYPE EPIC_T_GUID_BSEG_KEYS.CHECK IS_OTHER_PARAMETERS IS NOT INITIAL.CHECK IS_T012K IS NOT INITIAL.
    LS_OTHER_PARAMETERS = IS_OTHER_PARAMETERS.
    MT_ITEM_KEYS = LS_OTHER_PARAMETERS-ITEM_KEYS.CALL TRANSFORMATION ZPINGAN_PAYMENT_FILE
    SOURCE XML LS_OTHER_PARAMETERS-PAYMENT_FILE
    RESULT OUTPUT = LS_FILESTR.SELECT SINGLE * INTO CORRESPONDING FIELDS OF LS_T012T"开户信息,开户名FROM T012TWHERE SPRAS = '1'AND BUKRS = IS_T012K-BUKRSAND HBKID = IS_T012K-HBKIDAND HKTID = IS_T012K-HKTID.SELECT SINGLE * INTO CORRESPONDING FIELDS OF LS_T012 "开户行FROM T012WHERE BUKRS = IS_T012K-BUKRSAND   HBKID = IS_T012K-HBKID.IF LS_T012 IS NOT INITIAL.SELECT SINGLE * INTO CORRESPONDING FIELDS OF LS_BNKA "开户行信息FROM BNKAWHERE BANKS = LS_T012-BANKSAND   BANKL = LS_T012-BANKL.ENDIF.
    LV_NUM = ME->NUM_RANGE_GET_PAY( ).CONCATENATE '' SY-DATUM SY-UZEIT LV_NUM '' INTO LV_SNUM.IF IS_T012K-BNKN2 IS NOT INITIAL.CONCATENATE '' IS_T012K-BNKN2 '' INTO LV_COUNT.ELSEIF IS_T012K-BANKN IS NOT INITIAL.CONCATENATE '' IS_T012K-BANKN '' INTO LV_COUNT.ENDIF.CONCATENATE '' LS_T012T-TEXT1 '' INTO LV_ACCTNAME.
    LV_OUTUSERLEN = ME->GET_CLENGTH( STR = LV_ACCTNAME ).*    CONCATENATE '' 'SHENFA011781161' '' INTO LV_ACCTNAME.CONCATENATE '' LS_BNKA-BANKA '' INTO LV_ACCTADDR.
    LV_OUTBANKLEN = ME->GET_CLENGTH( STR = LV_ACCTADDR ).*    CONCATENATE '' '1234' '' INTO LV_ACCTADDR.CONCATENATE '' '0834' '' INTO LV_BANKNODE.CONCATENATE '' LS_FILESTR-RECV_ACCNO '' INTO LV_INACCT.*    CONCATENATE '' '11012682341901' '' INTO LV_INACCT.CONCATENATE '' LS_FILESTR-RECV_ACC_NAME '' INTO LV_INNAME.
    LV_INUSERLEN = ME->GET_CLENGTH( STR = LV_INNAME ).*    CONCATENATE '' 'SHENFA012682341' '' INTO LV_INNAME.CONCATENATE ' ' LS_FILESTR-RECV_OPENACC_DEPT '' INTO LV_INBANK.
    LV_INBANKLEN = ME->GET_CLENGTH( STR = LV_INBANK ).*    CONCATENATE ' ' 'SHENFA012682341' '' INTO LV_INBANK.CONCATENATE '' '0.01' ' ' INTO LV_AMOUNT.IF LV_COUNT IS NOT INITIAL.CONCATENATE  G_XML_STRING2'<?xml  version="1.0" encoding="GBK"?>'''
               LV_SNUM'RMB'
               LV_COUNT
               LV_ACCTNAME
               LV_ACCTADDR
               LV_BANKNODE
               LV_INACCT
               LV_INNAME
               LV_INBANK
               LV_AMOUNT''"拾元''Test''1''2''1''2''''18651002265'''INTO  G_XML_STRING2.ENDIF.
    LS_REQ_HEAD-DATA_TYPE     = 'A00101'."报文体
    LS_REQ_HEAD-DATA_ENCODE   = '01'."报文编码01:GBK缺省 02:UTF8 03:unicode 04:iso-8859-1
    LS_REQ_HEAD-DATA_COMM     = '01'."通讯协议01:tcpip 缺省  02:http  03:webservice  银行方面只支持:TCPIP接入
    LS_REQ_HEAD-DATA_IDCODE   = '00901079800000018000'."'00203030000000037000'."银企直连企业代码  固定死
    LS_REQ_HEAD-DATA_LEN      = STRLEN( G_XML_STRING2 ) + LV_OUTBANKLEN + LV_OUTUSERLEN + LV_INUSERLEN + LV_INBANKLEN."报文体长度
    LS_REQ_HEAD-TRANS_CODE    = '4004'."交易代码 40001为余额查询;单笔转账为4004;历史明细为4013;当日明细为4008;
    LS_REQ_HEAD-SEVI_TYPE     = '01'."服务类型 01请求  02应答
    LS_REQ_HEAD-TRANS_DATE    = SY-DATUM."交易日期
    LS_REQ_HEAD-TRANS_TIME    = SY-UZEIT."交易时间
    LS_REQ_HEAD-REQUEST_SN    = ME->NUM_RANGE_GET( )."'10000000000000000025'."流水号,需要定制格式和编码 请求方系统流水号
    LS_REQ_HEAD-RETURN_CODE   = ''."返回码
    LS_REQ_HEAD-RETURN_MESS   = ''."返回描述
    LS_REQ_HEAD-LAST_PACK_ST  = '0'."后续包标志 0-结束包,1-还有后续包
    LS_REQ_HEAD-REQUEST_TIME  = '000'."请求次数
    LS_REQ_HEAD-SIGN_ID       = '0'."签名标识0不签名 1签名  (填0企业不管,由前置机完成)
    LS_REQ_HEAD-SIGN_ALG       = ''."签名算法
    LS_REQ_HEAD-ATT_NUMC       = 0."附件数目
    LV_STRING = LS_REQ_HEAD.CONCATENATE  LV_STRING G_XML_STRING2 INTO G_XML_STRING2.
    GV_REQUEST_XSTRING = G_XML_STRING2.ENDMETHOD.   METHOD IF_EPIC_BANK_COMM_IMPL~ADJUST_HTTP_REQUEST. DATA LV_REQUEST_XSTR TYPE XSTRING.DATA LENGTH TYPE I.     IF GV_TYPE <> 'P'..CALL METHOD CR_REQUEST->IF_HTTP_ENTITY~SET_CDATAEXPORTINGDATA = GV_REQUEST_XSTRING.ELSE.TRY.CALL METHOD CL_ABAP_CODEPAGE=>CONVERT_TOEXPORTING
              SOURCE      = GV_REQUEST_XSTRING
              CODEPAGE    = `GBK`*             ENDIAN      =
              REPLACEMENT = ''
              IGNORE_CERR = ABAP_FALSE
            RECEIVING
              RESULT      = LV_REQUEST_XSTR.CATCH CX_PARAMETER_INVALID_RANGE .CATCH CX_SY_CODEPAGE_CONVERTER_INIT .CATCH CX_SY_CONVERSION_CODEPAGE .CATCH CX_PARAMETER_INVALID_TYPE .ENDTRY.
      LENGTH = XSTRLEN( LV_REQUEST_XSTR ).CHECK LENGTH IS NOT INITIAL.CALL METHOD CR_REQUEST->IF_HTTP_ENTITY~SET_DATAEXPORTINGDATA   = LV_REQUEST_XSTR
          OFFSET = 0
          LENGTH = LENGTH*         VSCAN_SCAN_ALWAYS  = SPACE*         VIRUS_SCAN_PROFILE = '/SIHTTP/HTTP_DOWNLOAD'.ENDIF.ENDMETHOD.   METHOD IF_EPIC_BANK_COMM_IMPL~PROCESS_RESPONSE.DATA LR_TRANSFORMATION_ERROR TYPE REF TO CX_TRANSFORMATION_ERROR.DATA LS_RESP_MAPPING_RESULT_DATA TYPE TY_RESP_MAPPING_RESULT.DATA LS_RESULTI TYPE TY_RESP_MAPPING_RESULTI.DATA LS_RESP_MAPPING_RESULTD_DATA TYPE TY_RESP_MAPPING_RESULTH.DATA LS_RESP_MAPPING_PYMENT_DATA TYPE TY_RESP_MAPPING_PAY.DATA LS_RESP_RESULT TYPE TY_RESP_MAPPING_RESULTP.DATA LS_MESSAGE LIKE LINE OF ET_MESSAGES.DATA LV_FLAG TYPE C.DATA LV_MESSAGE_DUMMY.DATA LV_LENTH TYPE I.DATA LV_NUM(10) TYPE C.DATA LS_ERROR TYPE STRING.DATA LS_HEADS TYPE STRING.DATA LS_HEADX TYPE XSTRING.DATA LS_BODYS TYPE STRING.DATA LS_BODYX TYPE XSTRING.DATA LV_RESPONSE_MESSAGE TYPE STRING.DATA:LT_RESULT  TYPE TABLE OF ZEPIC_S_PINGAN_CN_REQ_RT,
         LS_RESULT  TYPE          ZEPIC_S_PINGAN_CN_REQ_RT,
         LT_RESULTD TYPE TABLE OF ZEPIC_S_PINGAN_CN_DET_RT,
         LS_RESULTD TYPE          ZEPIC_S_PINGAN_CN_DET_RT,
         LT_PAY     TYPE TABLE OF ZEPIC_S_PINGAN_CN_PAY_RT,
         LS_PAY     TYPE          ZEPIC_S_PINGAN_CN_PAY_RT.DATA LV_COMPANY_CODE TYPE STRING .CLEAR ES_OTHER_RESULTS.CLEAR ET_MESSAGES.CHECK IS_BANK_COMM_KEY IS NOT INITIAL.IF  IV_RESPONSE_MESSAGE_XSTRING IS INITIAL.MESSAGE E005(EPIC_EXAMPLE_CN_IMPL) INTO LV_MESSAGE_DUMMY.CLEAR LS_MESSAGE.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.RAISE EXCEPTION TYPE CX_EPIC_BANK_COMM_IMPLEXPORTING
          IMPL_MESSAGES = ET_MESSAGES.ENDIF.CLEAR ET_MESSAGES.
    CL_ABAP_CODEPAGE=>CONVERT_FROM(EXPORTING
        SOURCE                        = IV_RESPONSE_MESSAGE_XSTRING
        CODEPAGE                      = `GBK`
      RECEIVING
        RESULT                        = LV_RESPONSE_MESSAGE).
    LV_LENTH = STRLEN( LV_RESPONSE_MESSAGE ).IF LV_LENTH > 222.
      LS_HEADS = LV_RESPONSE_MESSAGE+0(216).
      LS_HEADX = CL_ABAP_CODEPAGE=>CONVERT_TO( SOURCE = LS_HEADS ).SHIFT LV_RESPONSE_MESSAGE BY 216 PLACES IN CHARACTER MODE.
      LS_BODYX = CL_ABAP_CODEPAGE=>CONVERT_TO( SOURCE = LV_RESPONSE_MESSAGE ).IF GV_TYPE = 'S'."余额查询TRY.CALL TRANSFORMATION ZPINGAN_REQUEST_RETURNS
              SOURCE XML LS_BODYX
              RESULT OUTPUT = LS_RESP_MAPPING_RESULT_DATA.CATCH CX_TRANSFORMATION_ERROR INTO LR_TRANSFORMATION_ERROR.MESSAGE E008(EPIC_EXAMPLE_CN_IMPL) WITH 'CCB_GAB=>PROCESSS_RESPONSE'  INTO LV_MESSAGE_DUMMY.CLEAR LS_MESSAGE.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.RAISE EXCEPTION TYPE CX_EPIC_BANK_COMM_IMPLEXPORTING
                IMPL_MESSAGES = ET_MESSAGES
                PREVIOUS      = LR_TRANSFORMATION_ERROR.ENDTRY.IF LS_RESP_MAPPING_RESULT_DATA IS NOT INITIAL.
          LS_RESULT-ACCOUNT = LS_RESP_MAPPING_RESULT_DATA-ACCOUNT.
          LS_RESULT-CCYCODE = LS_RESP_MAPPING_RESULT_DATA-CCYCODE.
          LS_RESULT-CCYTYPE = LS_RESP_MAPPING_RESULT_DATA-CCYTYPE.
          LS_RESULT-ACCOUNTNAME = LS_RESP_MAPPING_RESULT_DATA-ACCOUNTNAME.
          LS_RESULT-BALANCE = LS_RESP_MAPPING_RESULT_DATA-BALANCE.
          LS_RESULT-ZTBALANCE = LS_RESP_MAPPING_RESULT_DATA-TOTALAMOUNT.
          LS_RESULT-CTYPE = LS_RESP_MAPPING_RESULT_DATA-ACCOUNTTYPE.
          LS_RESULT-CSTATUE = LS_RESP_MAPPING_RESULT_DATA-ACCOUNTSTATUS.
          LS_RESULT-BANKNAME = LS_RESP_MAPPING_RESULT_DATA-BANKNAME.APPEND LS_RESULT TO LT_RESULT.
          ET_LIST_RESULT = LT_RESULT.ENDIF.
        LV_RESPONSE_MESSAGE = '查询成功!' .MESSAGE S001(EPIC_EXAMPLE_CN_IMPL) WITH LV_RESPONSE_MESSAGE INTO LV_MESSAGE_DUMMY.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.ELSEIF GV_TYPE = 'D'."交易明细查询CALL METHOD CL_ABAP_CODEPAGE=>CONVERT_FROMEXPORTING
            SOURCE = LS_BODYX
          RECEIVING
            RESULT = LS_BODYS.TRY.CALL TRANSFORMATION ZPINGAN_DETAIL_RETURNS
              SOURCE XML LS_BODYS"LS_BODYX
              RESULT OUTPUT = LS_RESP_MAPPING_RESULTD_DATA.CATCH CX_TRANSFORMATION_ERROR INTO LR_TRANSFORMATION_ERROR.MESSAGE E008(EPIC_EXAMPLE_CN_IMPL) WITH 'CCB_GAB=>PROCESSS_RESPONSE'  INTO LV_MESSAGE_DUMMY.CLEAR LS_MESSAGE.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.RAISE EXCEPTION TYPE CX_EPIC_BANK_COMM_IMPLEXPORTING
                IMPL_MESSAGES = ET_MESSAGES
                PREVIOUS      = LR_TRANSFORMATION_ERROR.ENDTRY.IF LS_RESP_MAPPING_RESULTD_DATA IS NOT INITIAL.LOOP AT LS_RESP_MAPPING_RESULTD_DATA-LIST INTO LS_RESULTI.MOVE-CORRESPONDING LS_RESULTI TO LS_RESULTD.CLEAR:LV_NUM.
            LS_RESULTD-ITEM = SY-TABIX.
            LV_NUM = LS_RESULTD-ITEM.
            LS_RESULTD-ZBUKR = IS_BANK_COMM_KEY-ZBUKR.
            LS_RESULTD-HBKID = IS_BANK_COMM_KEY-HBKID.
            LS_RESULTD-HKTID = IS_BANK_COMM_KEY-HKTID.APPEND LS_RESULTD TO LT_RESULTD.ENDLOOP.IF LT_RESULTD[] IS NOT INITIAL.APPEND LINES OF LT_RESULTD[] TO GT_RETURN_DH.
            ET_LIST_RESULT = GT_RETURN_DH.ENDIF.*          IF LS_RESP_MAPPING_RESULTD_DATA-ENDFLAG = 'N'.*            GV_CODEPAGE = GV_CODEPAGE + 1.*            TRY.*                CALL METHOD ME->IF_EPIC_BANK_COMM_IMPL~CREATE_REQUEST*                  EXPORTING*                    IS_BANK_COMM_KEY     = IS_BANK_COMM_KEY*                    IV_BANK_COMM_SEGMENT = IV_BANK_COMM_SEGMENT*                    IV_BANK_COMM_STEP    = IV_BANK_COMM_STEP**                   IS_DIALOG_PARAMETERS =**                   IS_OTHER_PARAMETERS  =**              IMPORTING**                   EV_REQUEST_MESSAGE_STRING   =**                   EV_REQUEST_MESSAGE_XSTRING  =**                   EF_ANOTHER_SEGMENT_REQUIRED =**                   ET_MESSAGES          =*                  .*              CATCH CX_EPIC_BANK_COMM_IMPL .*            ENDTRY.**          ENDIF.CONCATENATE '查询完成,共有' LV_NUM '条目结果!' INTO LV_RESPONSE_MESSAGE.MESSAGE S001(EPIC_EXAMPLE_CN_IMPL) WITH LV_RESPONSE_MESSAGE INTO LV_MESSAGE_DUMMY.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.ENDIF.ELSEIF GV_TYPE = 'P'."单笔支付CALL METHOD CL_ABAP_CODEPAGE=>CONVERT_FROMEXPORTING
            SOURCE = LS_BODYX
          RECEIVING
            RESULT = LS_BODYS.TRY.CALL TRANSFORMATION ZPINGAN_PAYMENT_RETURNS
              SOURCE XML LS_BODYS
              RESULT OUTPUT = LS_RESP_MAPPING_PYMENT_DATA.CATCH CX_TRANSFORMATION_ERROR INTO LR_TRANSFORMATION_ERROR.MESSAGE E008(EPIC_EXAMPLE_CN_IMPL) WITH 'CCB_GAB=>PROCESSS_RESPONSE'  INTO LV_MESSAGE_DUMMY.CLEAR LS_MESSAGE.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.RAISE EXCEPTION TYPE CX_EPIC_BANK_COMM_IMPLEXPORTING
                IMPL_MESSAGES = ET_MESSAGES
                PREVIOUS      = LR_TRANSFORMATION_ERROR.ENDTRY.IF LS_RESP_MAPPING_PYMENT_DATA IS NOT INITIAL.
          LS_RESP_RESULT-RETURN_CODE = '8610ZX999999'.
          LS_RESP_RESULT-RETURN_MSG  = '已提交支付'.
          LV_COMPANY_CODE = IS_BANK_COMM_KEY-ZBUKR.*          MOVE-CORRESPONDING LS_RESP_MAPPING_PYMENT_DATA TO LS_PAY.*          APPEND LS_PAY TO LT_PAY.*          ET_LIST_RESULT = LT_PAY.
          ME->PERFORM_POST_RESP_XSLT_PROC(EXPORTING
            IV_COMPANY_CODE             = LV_COMPANY_CODE
            IS_RESP_MAPPING_RESULT_DATA = LS_RESP_RESULTCHANGING
            CT_MESSAGES                 = ET_MESSAGES).CONCATENATE '支付请求已发送!核对流水号为:' LS_RESP_MAPPING_PYMENT_DATA-FRONTLOGNO INTO LV_RESPONSE_MESSAGE.MESSAGE S001(EPIC_EXAMPLE_CN_IMPL) WITH LV_RESPONSE_MESSAGE INTO LV_MESSAGE_DUMMY.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.ENDIF.ENDIF.ELSE.
      LS_ERROR = LV_RESPONSE_MESSAGE+87(20).MESSAGE E001(EPIC_EXAMPLE_CN_IMPL) WITH LS_ERROR INTO LV_MESSAGE_DUMMY.MOVE-CORRESPONDING SY TO LS_MESSAGE.APPEND LS_MESSAGE TO ET_MESSAGES.ENDIF.ENDMETHOD.   METHOD GET_CLENGTH.”因为SAP中的汉字占一位,所以需要在此统计汉字个数,加到报文长度上DATA:LENGTH TYPE I.DATA: LT_RESULT_TAB TYPE TABLE OF MATCH_RESULT.DATA: WA TYPE MATCH_RESULT.CLEAR:LEN.CHECK STR IS NOT INITIAL.FIND ALL OCCURRENCES OF REGEX '[^\x00-\xff]*' IN STR RESULTS LT_RESULT_TAB[].LOOP AT LT_RESULT_TAB INTO WA.
      LEN = LEN + WA-LENGTH.ENDLOOP.IF LEN <> 0 .
      LEN = LEN - 1.ENDIF.ENDMETHOD.   注:程序中还有很多其他的方法和属性,因为很多东西都是在最后修改标准状态的东西,所以在此不多说,反正都是COPY SAP例子过来的。

1)如何搜SAP相关文章:

5ce549dff71b3cf983bfb93f89b2aa5e.png

1c0a8c0427a29c1c373f2bebd78dcfb4.png

1)到哪里提问且回答问题有现金红包(QQ群):

3b5098025406249b643f700a9b387a72.png

109652fcd982a9019099b7b81ef41ffb.gif

afe91a223ab9e61c7b5d0c152fce7dd2.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值