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


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





二.交易代码和交易中的结构类配置
T-code:spro->财务会计(新)->应收账款和应付账款->业务交易->国家特定设置->中国->电子支付中心->定义银行通讯详细信息此处信息最终在表EPIC_C_BCD中存储。付款:




三.类实现
类属性:
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群):

相关文章:

spark ml中一个比较通用的transformer
spark ml中有许多好用的transformer,很方便用来做特征的处理,比如Tokenizer, StopWordsRemover等,具体可参看文档:http://spark.apache.org/docs/2.1.0/ml-features.html . 但是呢,这些都是一些特定的操作,组内的同事提了一个需求…

mysql 常用函数循环_近30个MySQL常用函数,看到就是学到,纯干货收藏!
概念:相当于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名隐藏了实现细节提高代码的可重用性使用:select 函数名(实参列表)【from 表】 【】中内容可省略正文:字符函数:length:…

连接Oracle错误:800a0e7a未找到提供程序的解决
一、现象: C#程序中需要以ProviderOraOLEDB.Oracle.1方式访问ORACLE数据库。但程序执行时报异常:未在本地计算机注册“OraOLEDB.Oracle.1”提供程序 二、解决方案: 1、在Oracle安装目录找到Oracle的主程序目录,点击鼠标右键->属…

定义一个属性_Python property属性
1. 什么是property属性一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法# ############### 定义 ###############class Foo: def func(self): pass # 定义property属性 property def prop(self): pass# ############### 调用 ###############foo_obj…

MySQL 字段类型知识
tinyint(m) 值的范围:-128 ~ 127;unsigned 时,0 ~ 255。存储占用1字节 m 默认为4,和存储空间、数字位数没有关系,表示左侧补空格(默认,声明 zerofill 则补0,如0001)到…

mysql 单实例部署_Mysql 数据库单机多实例部署手记
最近的研发机器需要部署多个环境,包括数据库。为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式。找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单实例运行,再进行一系列的配置调…

用python做一个图片验证码
看一下做出来的验证码长啥样 验证码分析 1. 有很多点 2. 有很多线条 3. 有字母,有数字 需要用到的模块: 1. random 2. Pillow (python3中使用pillow) 安装pillow : pip install pillow pillow的用法: 创建一张图片: from PIL im…

地图测量面积工具app_全站仪的使用面积测量
测量与地图制作见习全站仪使用11 / 20#2020 #全站仪是全站型电子速测仪的简称,是电子经纬仪、光学测距仪及微处理器相结合的光电仪器。其可直接测量距离、角度、坐标,根据三角函数原理,已知两点坐标信息推算出无数个第三点的坐标信息。下面让…

Palette使用
1.定义: Palette:可以在一张图片里面分析出一些色彩特性:主色调、鲜艳的颜色、柔和颜色等等…… 2.使用: 1). 2).效果图 3.获取颜色样品: 1). 2).颜色组装算法: 3).效果图:转载于:https://www.cnblogs.com/jeffery336699/p/9294681.html

PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者...
def a2(arg):if len(arg) > 2:del arg[2:]li [12,13,14,15] a2(li) print(li) 转载于:https://www.cnblogs.com/zgyc/p/6229722.html

文件流能转换格式吗_amr转换mp3格式文件
MP3是非常标准的音频数字编码格式。区别于其他格式的优势在于,它可以在不降低音质的前提下,大幅的降低文件的大小。因此MP3格式应用范围极广,我们日常生活中用到的歌曲格式也多为MP3。今天要给大家说的是如何把amr格式的音频文件转换成mp3格式…

1196: 数星星(二)(结构体专题)_福利:最新导数6大专题!高分段提分有困扰?听北大状元漫谈提分...
这是一篇适合数学120分以上的高中生深度研读的随感。文末有福利!振宇老师从教的十几年中,遇到高分段学生最大的困扰便是:130分以上每提一分便需要付出极大的努力。究其原因,便是思维不够严谨全面,无法拿全分࿰…

RTMP协议中的Chunk Stream ID (CID)的作用
一、协议分层 RTMP包是以Message的结构封装的,结构如下所示: 1)Message Type ID在1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需操作其中的数据。 Message Type ID为8&#x…

fceux源码解析_fceux源码解析_从源代码制作deb包的两种方法以及修改已有deb包(转载)...
1. 原理1) deb包通常包含两部分:控制信息(DEBIAN目录)、安装内容(模拟"/"目录)2) 通过解开已有的deb包看其中内容i. 释放安装内容到dirname目录中$ dpkg-X xxx.deb dirnameii. 释放控制信息到当前目录下的DEBIAN子目录中$ dpkg-e xxx.deb2. 准备1) 安装相…

Centos 7 意外断电如何处理
拔U盘的时候,不小心碰到了主机上的开机键…… 还好默认的响应动作是睡眠…… 还不知道 CentOS 怎么样应对意外断电呢?! 转载于:https://www.cnblogs.com/liaozt/p/6232189.html

静茹docker容器的几种方法_Docker介绍及使用
什么是容器?容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的系统文件,ip地址,主机名等,kvm虚拟机,linux,系统文件程序:代码&#…

Elasticsearch 6.3.1、Head插件 安装及配置
安装Elasticsearch Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch 也可以直接使用wget下载到某目录下, 本文所有下载的包都放在 /home/tools 中, 解压后移到 /home/apps目录下 wget https://artifacts.elastic.co/downloa…

Android中的eventBus传值
第一步:在build.gradle中添加依赖dependencies { compile org.greenrobot:eventbus:3.0.0} 第二步:创建一个 Event类: 注意:enum 不是classpublic enum Event {//消息名,可以根据这个名字判断是哪个消息 IMAGE_LOA…

mysql 优化器算法_SQL 查询优化器底层原理解析【MySQL 篇】
前言SQL 执行流程中有一个模块叫做查询优化器,这个模块的功能主要是对 SQL 语法树进行逻辑优化和物理优化,最终生成执行计划交给执行引擎执行 SQL。查询优化器主要分为两部分:一部分是逻辑优化,一部分是物理优化。逻辑优化会将 SQ…

gprs发送信号对方如何接收_和接收缓冲区比较:Netty发送缓冲区是如何设计的,why?...
点击上方蓝字关注我吧!本篇文章大概3300字,阅读时间大约10分钟前面文章,透彻分析了Netty的接收缓冲区优化的套路和实现细节,以及写数据和刷新数据的宏观流程和细节:从源码出发:在宏观上把握Netty写数据到应…

原 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/ 本文出自方志朋的博客 转载请标明出处: Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间…

python读取数据校验数据_Python通过Schema实现数据验证方式
Schema是什么?不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据。意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证。…

String,StringBuffer
String类代表不可变的字符序列。 String s1 "hello"; String s2 "hello"; s1 s2 > true "hello"是字符串常量,存在data seg中,编译器对data seg有优化,对于已经有的数据,不是重新分配空间&a…

蒙特卡洛粒子滤波定位算法_粒子滤波——来自哈佛的详细的粒子滤波器教程【1】...
本文原版链接:https://www.seas.harvard.edu/courses/cs281/papers/doucet-johansen.pdf本文是哈佛大学相关研究人员于2008年发表的一篇关于粒子滤波的详细教程,至今已被引用1687次。目录:介绍Introduction1.1 序言Preliminary remarks1.2 教…

人脸识别的一些资源
人脸识别的全部源代码(在Visual C6.0下可以运行识别)http://www.61ic.com/Download/DaVinci/Code/201304/121592.html 智能分析接口(支持车牌识别,人脸识别等智能类型)提供DEMO和源码,供参考!http://www.61ic.com/Down…

mysql where关键字_MySQL WHERE 子句
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。语法以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:SELECT field1, field2,...fieldN FROM table_name…

mac远程连接windows工具_Windows远程MAC系统
第一步、在 Mac 上设置好屏幕共享1. 1先请在苹果 Mac 电脑上的“系统偏好设置”窗口中打开“共享”功能,如图所示接着在共享窗口中的左侧点击启用“屏幕共享”选项,如图所示当屏幕共享功能打开以后,请点击“电脑设置”按钮,如图所…

Tomcat虚拟目录设置
ssh $host "rm -fr /var/www/$tomcat_name/webapps/*" 远程分发war包部署tomcat项目时,需要先清除项目目录。 --------------------------------------------------------------------------------------- <context path"" docBase"&qu…

30005 rust_Steam三连冠老游戏《腐蚀(RUST)》为什么突然火起来了?
Steam新一周(1月18日-1月24日)销量榜公开,《赛博朋克2077》跌落至第五,《荒野大镖客2》前进到第六,而第一人称僵尸生存网络游戏《Rust》已经三连冠了,腐蚀是2013年的老游戏了,很多人问这个游戏值不值得购买,…

(6)解构赋值的用途
解构赋值的用途1.交换变量的值 var a 100; var b 200; var t; t a; a b; b t; //解构赋值的写法完成【ES6交换变量的值】 var x 100; var y 200; [x, y] [y, x]; console.log(x); console.log(y); 优点1:直观 优点2:一一对应 优点3:节省内存空间(不用多申请变量) 2.从函…