SAP产生银行流水线凭证号.docx
《SAP产生银行流水线凭证号.docx》由会员分享,可在线阅读,更多相关《SAP产生银行流水线凭证号.docx(13页珍藏版)》请在冰豆网上搜索。
SAP产生银行流水线凭证号
1、se11创建结构,必须包含行项目号POSNR字段,和其他需要扩展的字段,如记账码PostingKey、原因代码ReasonCode
2、SE19实现BADI增强ACC_DOCUMENT,这个增强是用来将BAPI_ACC_DOCUMENT_POST参数表EXTENSION2传入系统表
3、使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入
详细步骤如下:
1、创建结构,se11,很简单,不再赘述,如下图:
2、SE19实现BADI增强ACC_DOCUMENT
通过ACC_DOCUMENThelp文档知道,方法CHANGE用来完成字段的扩展,还有一个需要注意的是参考业务类型,这个一定要选对,不然执行BAPI的时候不会调用这个BADI,我用的是BKPFF,如下图:
激活这个BADI实现。
双击change方法创建,可以查看ACC_DOCUMENT的实现例子CL_EXM_IM_ACC_DOCUMENT(R/34.7版本,其他版本可能名称不一样),,将这个实例的change方法的代码直接copy过来,激活方法,代码如下
***********************************************************************
*ExampletomovefieldsfromBAPIparameterEXTENSION2tostructure *
*ACCIT(accountingdocumentlineitems). *
*Thedictionarystructure(contentforEXTENSION2-STRUCTURE)must *
*containfieldPOSNR,(TYPEPOSNR_ACC)toindentifythecorrectline*
*itemoftheinternaltableACCIT. *
***********************************************************************
DATA:
wa_extension TYPEbapiparex,
ext_value(960)TYPEc,
wa_accit TYPEaccit,
l_ref TYPEREFTOdata.
FIELD-SYMBOLS:
TYPEANY,
TYPEANY.
SORTc_extension2BYstructure.
LOOPATc_extension2INTOwa_extension.
ATNEWstructure.
CREATEDATAl_refTYPE(wa_extension-structure).
ASSIGNl_ref->*TO.
ENDAT.
CONCATENATEwa_extension-valuepart1wa_extension-valuepart2
wa_extension-valuepart3wa_extension-valuepart4
INTOext_value.
MOVEext_valueTO.
ASSIGNCOMPONENT'POSNR'OFSTRUCTURETO.
READTABLEc_accitWITHKEYposnr=
INTOwa_accit.
IFsy-subrcISINITIAL.
MOVE-CORRESPONDINGTOwa_accit.
MODIFYc_accitFROMwa_accitINDEXsy-tabix.
ENDIF.
ENDLOOP.
3、使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入
**********************************************************************
*INTERNALTABLEDECLARATION
**********************************************************************
*&—-G/LACCOUNTITEM
DATA:
ACCOUNTGLTYPESTANDARDTABLEOFBAPIACGL09.
*&—CURRENCYITEMS
DATA:
CURRENCY_AMOUNTTYPESTANDARDTABLEOFBAPIACCR09.
*&—-RETURNPARAMETER
DATA:
RETURNTYPESTANDARDTABLEOFBAPIRET2WITHHEADERLINE.
*&—-it_extension2ITEMS
DATA:
IT_EXTENSION2TYPESTANDARDTABLEOFBAPIPAREXWITHHEADERLINE.
*&—WORKAREAFORZEXTEN
DATA:
WA_ZEXTENLIKEZEXTEN.”ZEXTEN就是刚才SE11创建的那个结构
**********************************************************************
*赋值
**********************************************************************
*&EXTENSION2扩展字段增强部分
WA_ZEXTEN-POSNR='0000000010'."凭证行项目
WA_ZEXTEN-RSTGR='171'."凭证行项目原因代码
IT_EXTENSION2-STRUCTURE ='ZEXTEN'.
IT_EXTENSION2-VALUEPART1=WA_ZEXTEN.
APPENDIT_EXTENSION2.
*其他参数表的字段赋值如下例
HEADER-HEADER_TXT='TESTHEADER'."凭证抬头文本
HEADER-USERNAME=SY-UNAME. "用户名
HEADER-COMP_CODE='1000'."公司代码
HEADER-DOC_DATE='20090618'."凭证中的凭证日期
HEADER-PSTNG_DATE='20090618'."凭证中的记帐日期
HEADER-DOC_TYPE='S1'."凭证类型
* HEADER-BUS_ACT='RFBU'."交易业务
WA_ACCOUNTGL-ITEMNO_ACC='0000000010'."会计凭证行项目编号
WA_ACCOUNTGL-GL_ACCOUNT='1002010105'."总分类帐帐目
* WA_ACCOUNTGL-ITEM_TEXT=.
WA_ACCOUNTGL-BUS_AREA='8000'."业务范围
APPENDWA_ACCOUNTGLTOACCOUNTGL.
CLEARWA_ACCOUNTGL.
WA_ACCOUNTGL-ITEMNO_ACC='0000000020'."会计凭证行项目编号
WA_ACCOUNTGL-GL_ACCOUNT='1301040000'."总分类帐帐目
WA_ACCOUNTGL-BUS_AREA='8000'."业务范围
*WA_ACCOUNTGL-ITEM_TEXT=.
*wa_accountgl-ACCT_TYPE='R'.
APPENDWA_ACCOUNTGLTOACCOUNTGL.
CLEARWA_ACCOUNTGL.
WA_CURRENCY_AMOUNT-ITEMNO_ACC='0000000010'."行项目编号
WA_CURRENCY_AMOUNT-AMT_DOCCUR='500'."金额
WA_CURRENCY_AMOUNT-CURRENCY='RMB'.
APPENDWA_CURRENCY_AMOUNTTOCURRENCY_AMOUNT.
CLEARWA_CURRENCY_AMOUNT.
WA_CURRENCY_AMOUNT-ITEMNO_ACC='0000000020'.
WA_CURRENCY_AMOUNT-AMT_DOCCUR='-500'.
WA_CURRENCY_AMOUNT-CURRENCY='RMB'.
APPENDWA_CURRENCY_AMOUNTTOCURRENCY_AMOUNT.
CLEARWA_CURRENCY_AMOUNT.
*执行BAPI
CALLFUNCTION'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER=HEADER
*CUSTOMERCPD=
*CONTRACTHEADER=
*IMPORTING
*OBJ_TYPE=
*OBJ_KEY=
*OBJ_SYS=
TABLES
ACCOUNTGL=ACCOUNTGL
*ACCOUNTRECEIVABLE=
*ACCOUNTPAYABLE=
*ACCOUNTTAX=
CURRENCYAMOUNT=CURRENCY_AMOUNT
*CRITERIA=
*VALUEFIELD=
*EXTENSION1=
RETURN=RETURN
*PAYMENTCARD=
*CONTRACTITEM=
EXTENSION2=IT_EXTENSION2
*REALESTATE=
.
IFRETURN-TYPENA'EA'.
CALLFUNCTION'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT='X'.
ENDIF.
FORM FRM_YZPZ .
DATA:
LS_DOCUMENTHEADER TYPE BAPIACHE09,
LT_ACCOUNTGL TYPE TABLE OF BAPIACGL09,
LS_ACCOUNTGL TYPE BAPIACGL09,
LT_EXTENSION2 TYPE TABLE OF BAPIPAREX,
LS_EXTENSION2 TYPE BAPIPAREX,
LT_CURRENCYAMOUNT TYPE TABLE OF BAPIACCR09,
LS_CURRENCYAMOUNT TYPE BAPIACCR09,
L_POSNR TYPE POSNR,
L_CPOSNR TYPE POSNR_ACC,
L_PERNR TYPE PERNR_D.
DATA:
LT_RETURN TYPE TABLE OF BAPIRET2,
LS_RETURN TYPE BAPIRET2.
DATA:
LV_STR(10) TYPE C.
CONCATENATE GS_PZMN-ZSQR '-借款' INTO LV_STR .
CONDENSE LV_STR NO-GAPS.
* Collect header infor.
LS_DOCUMENTHEADER-USERNAME = SY-UNAME. "GS_OUT-UNAME.
LS_DOCUMENTHEADER-COMP_CODE = GS_OUT-BUKRS.
LS_DOCUMENTHEADER-DOC_DATE = GS_PZMN-ZPZRQ.
LS_DOCUMENTHEADER-FISC_YEAR = GS_PZMN-ZGZRQ+0(4).
LS_DOCUMENTHEADER-FIS_PERIOD = GS_PZMN-ZGZRQ+4
(2).
LS_DOCUMENTHEADER-PSTNG_DATE = GS_PZMN-ZGZRQ.
LS_DOCUMENTHEADER-DOC_TYPE = 'ZB'.
* ls_documentheader-header_txt = '借款'.
LS_DOCUMENTHEADER-HEADER_TXT = LV_STR.
*collect GL account.
READ TABLE GT_YZPZ INTO GS_YZPZ INDEX 1.
* 借记:
40
CLEAR L_POSNR.
L_POSNR = L_POSNR + 1.
LS_ACCOUNTGL-ITEMNO_ACC = L_POSNR.
LS_ACCOUNTGL-GL_ACCOUNT = GS_YZPZ-KTONR.
LS_ACCOUNTGL-FUNC_AREA = 'YM01'.
APPEND LS_ACCOUNTGL TO LT_ACCOUNTGL.
LS_CURRENCYAMOUNT-ITEMNO_ACC = L_POSNR.
LS_CURRENCYAMOUNT-CURRENCY = GS_OUT-WAERS.
LS_CURRENCYAMOUNT-AMT_DOCCUR = GS_PZMN-ZJKJE.
APPEND LS_CURRENCYAMOUNT TO LT_CURRENCYAMOUNT.
LS_EXTENSION2-STRUCTURE = 'ZSTRUCTURE'.
L_CPOSNR = L_POSNR.
ZSTRUCTURE-POSNR = L_CPOSNR.
ZSTRUCTURE-BSCHL = '40'.
ZSTRUCTURE-PERNR = GS_YZPZ-ZYGBH.
L_PERNR = ZSTRUCTURE-PERNR.
LS_EXTENSION2-VALUEPART1 = ZSTRUCTURE.
APPEND LS_EXTENSION2 TO LT_EXTENSION2.
CLEAR LS_EXTENSION2.
* 贷记50
READ TABLE GT_YZPZ INTO GS_YZPZ INDEX 2.
L_POSNR = L_POSNR + 1.
LS_ACCOUNTGL-ITEMNO_ACC = L_POSNR.
LS_ACCOUNTGL-GL_ACCOUNT = GS_YZPZ-KTONR.
APPEND LS_ACCOUNTGL TO LT_ACCOUNTGL.
LS_CURRENCYAMOUNT-ITEMNO_ACC = L_POSNR.
LS_CURRENCYAMOUNT-CURRENCY = GS_OUT-WAERS.
LS_CURRENCYAMOUNT-AMT_DOCCUR = GS_PZMN-ZJKJE * ( - 1 ).
APPEND LS_CURRENCYAMOUNT TO LT_CURRENCYAMOUNT.
LS_EXTENSION2-STRUCTURE = 'ZSTRUCTURE'.
L_CPOSNR = L_POSNR.
ZSTRUCTURE-POSNR = L_CPOSNR.
ZSTRUCTURE-BSCHL = '50'.
ZSTRUCTURE-RSTGR = GS_YZPZ-RSTGR.
ZSTRUCTURE-HBKID = GS_YZPZ-HBKID.
ZSTRUCTURE-HKTID = GS_YZPZ-HKTID.
SELECT SINGLE TXT20 FROM T053S INTO ZSTRUCTURE-SGTXT
WHERE SPRAS = 1 AND BUKRS = 'GI00' AND RSTGR = ZSTRUCTURE-RSTGR.
LS_EXTENSION2-VALUEPART1 = ZSTRUCTURE.
APPEND LS_EXTENSION2 TO LT_EXTENSION2.
CLEAR LS_EXTENSION2.
* post
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER = LS_DOCUMENTHEADER
TABLES
ACCOUNTGL = LT_ACCOUNTGL
* accountreceivable = lt_accountreceivable
* accountpayable = lt_accountpayable
CURRENCYAMOUNT = LT_CURRENCYAMOUNT
EXTENSION2 = LT_EXTENSION2
RETURN = LT_RETURN.
READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'EA'.
IF "LS_RETURN-ID NE 'RW' AND
LS_RETURN-NUMBER NE '609'.
MESSAGE LS_RETURN-MESSAGE TYPE CNS_E.
* CONCATENATE LS_RETURN-MESSAGE '/' L_MESSAGE INTO L_MESSAGE.
ENDIF.
ENDLOOP.
* MESSAGE LS_RETURN-MESSAGE TYPE CNS_E.
ELSE.
* 更新过账信息到ZFIT1001表
MOVE-CORRESPONDING GS_OUT TO GS_ZFIT1001.
LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE <> 'A' AND TYPE <> 'E'.
IF LS_RETURN-MESSAGE_V2+0(10) CO '1234567890'.
GS_ZFIT1001-ZPZBH = LS_RETURN-MESSAGE_V2+0(10).
GS_ZFIT1001-ZGZRQ = GS_PZMN-ZGZRQ. "过账日期
GS_ZFIT1001-ZPZRQ = GS_PZMN-ZPZRQ. "凭证日期
GS_ZFIT1001-ZYHJE = GS_PZMN-ZJKJE. "应还款
GS_ZFIT1001-ZYHWH = GS_PZMN-ZJKJE. "应还未还
* GS_ZFIT1001-ZSJFKRQ = GS_PZMN-ZSJFKRQ. "实际付款日期
* GS_ZFIT1001-ZDJZT = '05'. "已付款
MODIFY ZFIT1001 FROM GS_ZFIT1001.
IF SY-SUBRC NE 0.
DO 4 TIMES.
MODIFY ZFIT1001 FROM GS_ZFIT1001.
IF SY-SUBRC EQ 0.
EXIT.
ENDIF.
ENDDO.
IF SY-SUBRC NE 0.
ROLLBACK WORK.
MESSAGE TEXT-008 TYPE CNS_E.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
MOVE-CORRESPONDING GS_ZFIT1001 TO GS_OUT.
MODIFY GT_OUT FROM GS_OUT
TRANSPORTING ZGZRQ ZPZBH ZYHK ZYHJE ZYHWH "ZDJZT
WHERE ZDJH = GS_ZFIT1001-ZDJH.
MESSAGE S007(ZFI) WITH GS_ZFIT1001-ZPZBH.
ENDIF.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
FORM FRM_REV_HKPZ .
DATA:
LS_BKPF TYPE BKPF.
DATA:
LV_AWKEY TYPE AWKEY.
DATA:
LS_REVERSAL TYPE BAPIACREV,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LS_RETURN TYPE BAPIRET2.
DATA:
LT_ROW_NO TYPE LVC_T_ROID,
LS_ROW_NO TYPE LVC_S_ROID.
CALL METHOD R_ALV_400->GET