java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)
一.公司代码、支付方法、银行确定、开户行
Tcode:FBZP公司代码是所有的有交易往来的公司代码。付款方式是交易的方式定义:付款方式Y是自定义的银行支付的方式我对财务不是很懂,那个凭证类型就不说了哈!下面是一个屏没截出来的图其中格式字段是为在付款过程中系统根据行项目来生成的报文格式,因为字段需要,所以在此处平安银行的报文还是沿用了建行的报文结构。只是在后面处理的时候,选择性的用。下面是银行编号信息:下面是开户行信息:
二.交易代码和交易中的结构类配置
T-code:spro->财务会计(新)->应收账款和应付账款->业务交易->国家特定设置->中国->电子支付中心->定义银行通讯详细信息此处信息最终在表EPIC_C_BCD中存储。付款:余额查询:交易明细查询:
三.类实现
类属性:类类型: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相关文章:
1)到哪里提问且回答问题有现金红包(QQ群):
java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)相关推荐
- java设计一个bank类实现银行_java定义一个类实现银行账户的概念。
2016-11-17 13:40黄瞩信 客户经理 比如,只定义了一个抽象方法run(),而要通过系统用极短的时间.这5s内,此后这个线程就不能进入其它状态,进入消亡状态;+i++). 2,另一方面;, ...
- java设计一个bank类实现银行_用java定义一个类实现银行帐户的概念
满意答案 ZHIu6Az0v 推荐于 2017.11.26 采纳率:56% 等级:11 已帮助:8247人 /* * 2. 定义一个类实现银行帐户的概念,包括的变量有"帐号" ...
- java设计一个bank类实现银行_AOS公链推出“隐私Bank”,彻底打破资产发行门槛!...
区块链技术从诞生到现在经历了无数的坎坷,一路走来虽然饱受争议,但是这个行业并没有停止发展的脚步,越来越多的落地项目正在改变我们的生活,尤其在公链领域,整个行业的生态建设更是程喷涌之势迅猛发展,今天长安 ...
- java设计一个bank类实现银行_用java实现银行系统
} } System.out.println(); if(i == st.size()) System.out.println("抱歉,没有该顾客!\n"); } //判断密码 b ...
- 01_设计一个Bank类,银行某账号的资金往来账管理
题目 设计一个Bank类,实现银行某账号的资金往来账管理,包括建账号.存入.取出等.Bank类包括私有数据成员top(当前指针).date(日期).money(金额).rest(余额)和sum(累计余 ...
- 设计一个Bank类,实现银行某账号的资金往来账目管理
设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号.存入.取出等 Bank类包括私有数据成员账号number,rest(账户余额)和成功操作的交易记录string records[50] ...
- 用C++设计一个Bank类,实现银行某账户的资金往来账目管理。
用C++设计一个Bank类,实现银行某账户的资金往来账目管理.(主要分为创建用户,存钱,取钱,记录.) 第一步,C++标准库 第二步,创建一个Bank类,其中包含七个成员函数和四个私有成员变量. 第三 ...
- java设计一个user类_关于JAVA设计一个用户类
关于JAVA设计一个用户类 关注:152 答案:2 mip版 解决时间 2021-02-02 05:51 提问者安分守己的小青春 2021-02-02 02:23 设计一个用户类,该类有用户编号. ...
- java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税
用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金 提 ...
最新文章
- 如何挖掘系统的业务价值
- php无极分类非递归_无限极分类算法,对你一定有帮助
- servlet 返回可访问文件_JavaWeb技术(4):Servlet的理解(上)
- Asp.NetWebForm的控件属性
- volatile关键字的用法
- php savepath,php中session_save_path另外一种用法
- 维护个人品牌,放大自我价值
- 服务器延迟和时间偏移怎么设置,针对大量时间偏移配置 W32Time - Windows Server | Microsoft Docs...
- uploadify组件文件上传那些事
- Inno Setup 详解中文资料
- 【BZOJ5316】[JSOI2018]绝地反击(网络流,计算几何,二分)
- 【DNS应用案例】智能DNS赋能海运集团全球域名体系建设
- 爬虫入门教程-Spider
- 【学习】loss图和accuracy
- 蓝桥杯嵌入式设计与开发历届客观题答案
- 从简易的json中提取数据
- python保存plot图片_Matplotlib savefig只保存图像,不保存行
- Android应用卸载广播监听
- BL101助力于采集光伏电流电压
- python自学 适合新手的 python人机对战小游戏