* 대체할 필드가 제외되어 없을 경우
Go to transaction GB01 or transaction SM30 > view VWTYGB01
and maintain it to add fields in class 9 (Document header and line items (FI) and type S (Refer to fields that can be substituted)
Remove the tick in the checkbox "Exclude" againest your relevant field.
위 작업을 한후 RGUGBR00 프로그램을 실행하여 active한다.
PROGRAM ZRGGBS000 .
*---------------------------------------------------------------------*
* Corrections/ repair
* wms092357 070703 Note 638886: template routines to be used for
* workaround to substitute bseg-bewar from bseg-xref1/2
*---------------------------------------------------------------------*
* *
* Substitutions: EXIT-Formpool for Uxxx-Exits *
* *
* This formpool is used by SAP for testing purposes only. *
* *
* Note: If you define a new user exit, you have to enter your *
* user exit in the form routine GET_EXIT_TITLES. *
* *
*---------------------------------------------------------------------*
INCLUDE FGBBGD00. "Standard data types
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
* PLEASE INCLUDE THE FOLLOWING "TYPE-POOL" AND "TABLES" COMMANDS *
* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM *
TYPE-POOLS: GB002. " TO BE INCLUDED IN "wms092357
TABLES: BKPF, " ANY SYSTEM THAT "wms092357
BSEG, " HAS 'FI' INSTALLED "wms092357
COBL, "wms092357
CSKS, "wms092357
ANLZ, "wms092357
GLU1. "wms092357
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
*----------------------------------------------------------------------*
* FORM GET_EXIT_TITLES *
*----------------------------------------------------------------------*
* returns name and title of all available standard-exits *
* every exit in this formpool has to be added to this form. *
* You have to specify a parameter type in order to enable the *
* code generation program to determine correctly how to *
* generate the user exit call, i.e. how many and what kind of *
* parameter(s) are used in the user exit. *
* The following parameter types exist: *
* *
* TYPE Description Usage *
* ------------------------------------------------------------ *
* C_EXIT_PARAM_NONE Use no parameter Subst. and Valid. *
* except B_RESULT *
* C_EXIT_PARAM_FIELD Use one field as param. Only Substitution *
* C_EXIT_PARAM_CLASS Use a type as parameter Subst. and Valid *
* *
*----------------------------------------------------------------------*
* --> EXIT_TAB table with exit-name and exit-titles *
* structure: NAME(5), PARAM(1), TITEL(60)
*----------------------------------------------------------------------*
FORM GET_EXIT_TITLES TABLES ETAB.
DATA: BEGIN OF EXITS OCCURS 50,
NAME(5) TYPE C,
PARAM LIKE C_EXIT_PARAM_NONE,
TITLE(60) TYPE C,
END OF EXITS.
EXITS-NAME = 'U100'.
EXITS-PARAM = C_EXIT_PARAM_NONE.
EXITS-TITLE = TEXT-100. "Cost center from CSKS
APPEND EXITS.
EXITS-NAME = 'U101'.
EXITS-PARAM = C_EXIT_PARAM_FIELD.
EXITS-TITLE = TEXT-101. "Cost center from CSKS
APPEND EXITS.
* begin of insertion "wms092357
EXITS-NAME = 'U200'.
EXITS-PARAM = C_EXIT_PARAM_FIELD.
EXITS-TITLE = TEXT-200. "Cons. transaction type
APPEND EXITS. "from xref1/2
* end of insertion "wms092357
EXITS-NAME = 'U300'.
EXITS-PARAM = C_EXIT_PARAM_CLASS.
EXITS-TITLE = TEXT-300.
APPEND EXITS.
"[FI] 반제전표의 원전표 XBLNR_ALT 추출 - Get Cleaning Doc. Oring Doc-XBLNR_ALT
EXITS-NAME = 'U400'.
* EXITS-PARAM = C_EXIT_PARAM_NONE. "전표라인
EXITS-PARAM = C_EXIT_PARAM_CLASS. "전표완료
EXITS-TITLE = TEXT-400.
APPEND EXITS.
EXITS-NAME = 'U301'.
EXITS-PARAM = C_EXIT_PARAM_NONE.
EXITS-TITLE = TEXT-301.
APPEND EXITS.
************************************************************************
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM: *
* EXITS-NAME = 'U102'.
* EXITS-PARAM = C_EXIT_PARAM_CLASS.
* EXITS-TITLE = TEXT-102. "Sum is used for the reference.
* APPEND EXITS.
***********************************************************************
** EXIT EXAMPLES FROM PUBLIC SECTOR INDUSTRY SOLUTION
**
** PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINE
** TO ENABLE PUBLIC SECTOR EXAMPLE SUBSTITUTION EXITS
***********************************************************************
INCLUDE RGGBS_PS_TITLES.
REFRESH ETAB.
LOOP AT EXITS.
ETAB = EXITS.
APPEND ETAB.
ENDLOOP.
ENDFORM. "GET_EXIT_TITLES
* eject
*---------------------------------------------------------------------*
* FORM U100 *
*---------------------------------------------------------------------*
* Reads the cost-center from the CSKS table . *
*---------------------------------------------------------------------*
FORM U100.
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM: *
* SELECT * FROM CSKS
* WHERE KOSTL EQ COBL-KOSTL
* AND KOKRS EQ COBL-KOKRS.
* IF CSKS-DATBI >= SY-DATUM AND
* CSKS-DATAB <= SY-DATUM.
*
* MOVE CSKS-ABTEI TO COBL-KOSTL.
*
* ENDIF.
* ENDSELECT.
ENDFORM. "U100
* eject
*---------------------------------------------------------------------*
* FORM U101 *
*---------------------------------------------------------------------*
* Reads the cost-center from the CSKS table for accounting *
* area '0001'. *
* This exit uses a parameter for the cost_center so it can *
* be used irrespective of the table used in the callup point. *
*---------------------------------------------------------------------*
FORM U101 USING COST_CENTER.
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM: *
* SELECT * FROM CSKS
* WHERE KOSTL EQ COST_CENTER
* AND KOKRS EQ '0001'.
* IF CSKS-DATBI >= SY-DATUM AND
* CSKS-DATAB <= SY-DATUM.
*
* MOVE CSKS-ABTEI TO COST_CENTER .
*
* ENDIF.
* ENDSELECT.
ENDFORM. "U101
* eject
*---------------------------------------------------------------------*
* FORM U102 *
*---------------------------------------------------------------------*
* Inserts the sum of the posting into the reference field. *
* This exit can be used in FI for the complete document. *
* The complete data is passed in one parameter. *
*---------------------------------------------------------------------*
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
* IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM: *
*FORM u102 USING bool_data TYPE gb002_015.
*DATA: SUM(10) TYPE C.
*
* LOOP AT BOOL_DATA-BSEG INTO BSEG
* WHERE SHKZG = 'S'.
* BSEG-ZUONR = 'Test'.
* MODIFY BOOL_DATA-BSEG FROM BSEG.
* ADD BSEG-DMBTR TO SUM.
* ENDLOOP.
*
* BKPF-XBLNR = TEXT-001.
* REPLACE '&' WITH SUM INTO BKPF-XBLNR.
*
*ENDFORM.
***********************************************************************
** EXIT EXAMPLES FROM PUBLIC SECTOR INDUSTRY SOLUTION
**
** PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINE
** TO ENABLE PUBLIC SECTOR EXAMPLE SUBSTITUTION EXITS
***********************************************************************
*INCLUDE rggbs_ps_forms.
*eject
* begin of insertion "wms092357
*&---------------------------------------------------------------------*
*& Form u200
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM U200 USING E_RMVCT TYPE BSEG-BEWAR.
PERFORM XREF_TO_RMVCT USING BKPF BSEG 1 CHANGING E_RMVCT.
ENDFORM.
*--------------------------------------------------------------------*
* FORM U300
*--------------------------------------------------------------------*
* Clearing A/P
*--------------------------------------------------------------------*
FORM U300 USING BOOL_DATA TYPE GB002_015.
* BOOL_DATA TYPE GB002_012.
* BOOL_DATA TYPE GB002_013.
DATA : BEGIN OF LT_DOC OCCURS 0,
BUKRS LIKE BSEG-BUKRS,
GJAHR LIKE BSEG-GJAHR,
BELNR LIKE BKPF-BELNR,
WRBTR LIKE BSEG-WRBTR,
END OF LT_DOC.
DATA : LV_STRU TYPE STRING,
LS_BSEG TYPE BSEG.
DATA : LV_BKTXT TYPE BKTXT.
FIELD-SYMBOLS: <FS_REGUH> TYPE REGUH.
CLEAR LV_BKTXT.
CHECK BKPF-BLART EQ 'ZP'.
CHECK BKPF-TCODE EQ 'F110'.
* AUTO PAYMENT 시 지급처리되는 전표들을 가져오기 위한 LOGIC
* Assign REGUH reference area in SAPF110S payment program
LV_STRU = '(SAPF110S)REGUH'.
ASSIGN (LV_STRU) TO <FS_REGUH>.
CHECK SY-SUBRC EQ 0.
CHECK <FS_REGUH> IS NOT INITIAL.
CLEAR : LT_DOC, LT_DOC[].
SELECT ZBUKR AS BUKRS
BELNR
GJAHR
WRBTR
INTO CORRESPONDING FIELDS OF TABLE LT_DOC
FROM REGUP
WHERE LAUFD EQ <FS_REGUH>-LAUFD
AND LAUFI EQ <FS_REGUH>-LAUFI.
SORT LT_DOC BY WRBTR DESCENDING.
READ TABLE LT_DOC INDEX 1.
CLEAR LV_BKTXT.
SELECT SINGLE BKTXT
INTO LV_BKTXT
FROM BKPF
WHERE BUKRS EQ LT_DOC-BUKRS
AND BELNR EQ LT_DOC-BELNR
AND GJAHR EQ LT_DOC-GJAHR.
MOVE LV_BKTXT TO BKPF-BKTXT.
LOOP AT BOOL_DATA-BSEG INTO LS_BSEG.
MOVE LV_BKTXT TO LS_BSEG-SGTXT.
MODIFY BOOL_DATA-BSEG FROM LS_BSEG.
CLEAR LS_BSEG.
ENDLOOP.
ENDFORM. "U300
*&---------------------------------------------------------------------*
*& Form xref_to_rmvct
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM XREF_TO_RMVCT
USING IS_BKPF TYPE BKPF
IS_BSEG TYPE BSEG
I_XREF_FIELD TYPE I
CHANGING C_RMVCT TYPE RMVCT.
DATA L_MSGV TYPE SYMSGV.
STATICS ST_RMVCT TYPE HASHED TABLE OF RMVCT WITH UNIQUE DEFAULT KEY.
* either bseg-xref1 or bseg-xref2 must be used as source...
IF I_XREF_FIELD <> 1 AND I_XREF_FIELD <> 2.
MESSAGE X000(GK) WITH 'UNEXPECTED VALUE I_XREF_FIELD ='
I_XREF_FIELD '(MUST BE = 1 OR = 2)' ''.
ENDIF.
IF ST_RMVCT IS INITIAL.
SELECT TRTYP FROM T856 INTO TABLE ST_RMVCT.
ENDIF.
IF I_XREF_FIELD = 1.
C_RMVCT = IS_BSEG-XREF1.
ELSE.
C_RMVCT = IS_BSEG-XREF2.
ENDIF.
IF C_RMVCT IS INITIAL.
WRITE I_XREF_FIELD TO L_MSGV LEFT-JUSTIFIED.
CONCATENATE TEXT-M00 L_MSGV INTO L_MSGV SEPARATED BY SPACE.
* cons. transaction type is not specified => send an error message...
MESSAGE E123(G3) WITH L_MSGV.
* Bitte geben Sie im Feld &1 eine Konsolidierungsbewegungsart an
ENDIF.
* c_rmvct <> initial...
READ TABLE ST_RMVCT TRANSPORTING NO FIELDS FROM C_RMVCT.
CHECK NOT SY-SUBRC IS INITIAL.
* cons. transaction type does not exist => send error message...
WRITE I_XREF_FIELD TO L_MSGV LEFT-JUSTIFIED.
CONCATENATE TEXT-M00 L_MSGV INTO L_MSGV SEPARATED BY SPACE.
MESSAGE E124(G3) WITH C_RMVCT L_MSGV.
* KonsBewegungsart &1 ist ungültig (bitte Eingabe im Feld &2 korrigieren
ENDFORM.
* end of insertion "wms092357
*--------------------------------------------------------------------*
* FORM U400
*--------------------------------------------------------------------*
* Clearing A/P
*--------------------------------------------------------------------*
FORM U400 USING BOOL_DATA TYPE GB002_015.
****DATA: BEGIN OF indtab OCCURS 15,
**** block(1) TYPE c, " Kennz. Block-Kommando
**** comnd(2) TYPE c, " Zeilen-Kommando
**** klick(2) TYPE c, " Zeilen-Kommando
**** posnr(4) TYPE p, " Zeilennr. in POSTAB
**** psbet LIKE rf05a-psbet, " angezeigter Betrag
**** psdif LIKE df05b-psdif, " angezeigte Differenz
**** pszah LIKE df05b-pszah, " angezeigter Zahlbetr
**** rstgr LIKE df05b-rstgr, " Restegrund
**** sknto(4) TYPE p, " Skontobetrag
**** skfbt(4) TYPE p, " Skontofähiger Betrag
**** psskp LIKE bseg-zbd1p, " Skontoprozente
**** inpus(1) TYPE c, " Eingabe Skonto
**** inpud(1) TYPE c, " Eingabe Differenz
**** tabix LIKE sy-tabix, "
**** xskf0 TYPE c, " SKFBT = 0
**** maxsp LIKE bseg-zbd1p, " Max. Skontoprozent
**** bukrs LIKE bkpf-bukrs, " Buchungskreis
**** pyord LIKE pyordh-pyord, " Zahlungsauftrag
**** pspen LIKE df05b-pspen, " Strafzinsen
**** xppiv TYPE xppiv, " Part.Pay for Inv.
**** END OF indtab.
****
****
**** BREAK-POINT ID Z_BREAK_POINT.
****
**** DATA : LV_STRU TYPE STRING.
****
**** FIELD-SYMBOLS: <BKPF> like indtab.
****
***** Assign REGUH reference area in SAPF110S payment program
**** LV_STRU = '(SAPMF05A)INDTAB'.
****
**** ASSIGN (LV_STRU) TO <BKPF>.
****
**** CHECK SY-SUBRC EQ 0.
****
**** CHECK <BKPF> IS NOT INITIAL.
****
**** DATA : LS_ORIGIN_BKPF LIKE BKPF.
**** DATA : LT_ORIGIN_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
**** DATA : LV_T_BSEG_TABIX TYPE SY-TABIX.
****
**** IF BKPF-BLART = 'ZV'
**** OR BKPF-BLART = 'ZP'
**** .
******** LOOP AT BSEG.
********
******** LV_T_BSEG_TABIX = SY-TABIX.
********
******** CHECK BSEG-BELNR = BSEG-AUGBL.
********
******** CLEAR: LT_ORIGIN_BSEG, LT_ORIGIN_BSEG[].
******** SELECT * INTO TABLE LT_ORIGIN_BSEG
******** FROM BSEG
******** WHERE BUKRS = <BKPF>-BUKRS
******** AND AUGDT = <BKPF>-BUDAT
******** AND AUGBL = <BKPF>-BELNR
******** .
******** LOOP AT LT_ORIGIN_BSEG.
******** CLEAR: LS_ORIGIN_BKPF.
******** SELECT SINGLE * INTO LS_ORIGIN_BKPF
******** FROM BKPF
******** WHERE BUKRS = LT_ORIGIN_BSEG-BUKRS
******** AND BELNR = LT_ORIGIN_BSEG-BELNR
******** AND GJAHR = LT_ORIGIN_BSEG-GJAHR
******** AND XBLNR_ALT >= '0000000000000000'
******** .
******** IF SY-SUBRC = 0.
*********전표헤더
******** BOOL_DATA-BKPF-XBLNR_ALT = LS_ORIGIN_BKPF-XBLNR_ALT.
********
******** EXIT.
********
******** ENDIF.
******** ENDLOOP.
******** ENDLOOP.
**** ENDIF.
CHECK 1 = 2. "아래 로직 사용 안함
*--
*--[START] VAT BSEG LINE : SET GSBER, XREF1, XREF2, XREF3 SGTXT
*--
DATA : LV_TAX_TABIX LIKE SY-TABIX.
DATA : LT_TMP_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
DATA : LT_CHK_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
DATA : LS_BSEG LIKE BSEG.
DATA : LV_MODIFY_FLAG TYPE CHAR01.
CLEAR : LT_TMP_BSEG, LT_TMP_BSEG[].
CLEAR : LT_CHK_BSEG, LT_CHK_BSEG[].
CLEAR : LS_BSEG.
CONSTANTS C_PURCH_HKONT TYPE SAKNR VALUE '1115020101'. "Prepaid Value Added Tax-General
CONSTANTS C_SALES_HKONT TYPE SAKNR VALUE '2109010101'. "Value Added Tax Withheld-General
**** IF SY-UNAME = 'FI01' OR SY-UNAME = 'DEV-TR'.
**** BREAK-POINT.
**** ENDIF.
LT_TMP_BSEG[] = BOOL_DATA-BSEG[].
LOOP AT BOOL_DATA-BSEG INTO LS_BSEG WHERE HKONT = C_PURCH_HKONT
OR HKONT = C_SALES_HKONT.
LV_TAX_TABIX = SY-TABIX.
CASE LS_BSEG-HKONT.
WHEN C_PURCH_HKONT
OR C_SALES_HKONT
.
CLEAR : LV_MODIFY_FLAG.
LOOP AT LT_TMP_BSEG WHERE KOART = 'S' "G/L
AND MWSKZ = LS_BSEG-MWSKZ
AND WRBTR = LS_BSEG-HWBAS
.
READ TABLE LT_CHK_BSEG WITH KEY BUKRS = LT_TMP_BSEG-BUKRS
BELNR = LT_TMP_BSEG-BELNR
GJAHR = LT_TMP_BSEG-GJAHR
BUZEI = LT_TMP_BSEG-BUZEI
.
IF SY-SUBRC = 0.
CONTINUE.
ELSE.
APPEND LT_TMP_BSEG TO LT_CHK_BSEG.
ENDIF.
IF NOT LT_TMP_BSEG-GSBER IS INITIAL.
IF LS_BSEG-GSBER IS INITIAL.
LS_BSEG-GSBER = LT_TMP_BSEG-GSBER.
LS_BSEG-XREF1 = LT_TMP_BSEG-XREF1.
LS_BSEG-XREF2 = LT_TMP_BSEG-XREF2.
LS_BSEG-XREF3 = LT_TMP_BSEG-XREF3.
LS_BSEG-SGTXT = LT_TMP_BSEG-SGTXT.
MODIFY BOOL_DATA-BSEG FROM LS_BSEG INDEX LV_TAX_TABIX.
LV_MODIFY_FLAG = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
"MODIFY가 안된경우 세액을 제외 하고 비교
IF LV_MODIFY_FLAG IS INITIAL.
LOOP AT LT_TMP_BSEG WHERE KOART = 'S' "G/L
AND MWSKZ = LS_BSEG-MWSKZ
.
READ TABLE LT_CHK_BSEG WITH KEY BUKRS = LT_TMP_BSEG-BUKRS
BELNR = LT_TMP_BSEG-BELNR
GJAHR = LT_TMP_BSEG-GJAHR
BUZEI = LT_TMP_BSEG-BUZEI
.
IF SY-SUBRC = 0.
CONTINUE.
ELSE.
APPEND LT_TMP_BSEG TO LT_CHK_BSEG.
ENDIF.
IF NOT LT_TMP_BSEG-GSBER IS INITIAL.
IF LS_BSEG-GSBER IS INITIAL.
LS_BSEG-GSBER = LT_TMP_BSEG-GSBER.
LS_BSEG-XREF1 = LT_TMP_BSEG-XREF1.
LS_BSEG-XREF2 = LT_TMP_BSEG-XREF2.
LS_BSEG-XREF3 = LT_TMP_BSEG-XREF3.
LS_BSEG-SGTXT = LT_TMP_BSEG-SGTXT.
MODIFY BOOL_DATA-BSEG FROM LS_BSEG INDEX LV_TAX_TABIX.
LV_MODIFY_FLAG = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDCASE.
ENDLOOP.
*--
*--[END] VAT BSEG LINE : SET GSBER, XREF1, XREF2, XREF3 SGTXT
*--
* CASE BSEG-KOART.
* WHEN 'D'. "Customer KNB1
* IF BSEG-ZLSCH IS INITIAL.
* SELECT SINGLE ZWELS INTO BSEG-ZLSCH "Payment Method
* FROM KNB1
* WHERE BUKRS = BKPF-BUKRS
* AND KUNNR = BSEG-KUNNR.
* ENDIF.
* WHEN 'K'. "Vendor LFB1
* IF BSEG-ZLSCH IS INITIAL.
* SELECT SINGLE ZWELS INTO BSEG-ZLSCH "Payment Method
* FROM LFB1
* WHERE BUKRS = BKPF-BUKRS
* AND LIFNR = BSEG-LIFNR.
* ENDIF.
* ENDCASE.
ENDFORM.
*--------------------------------------------------------------------*
* FORM U301
*--------------------------------------------------------------------*
* TR Recon Account Subs
*--------------------------------------------------------------------*
FORM U301.
CHECK SY-TCODE EQ 'TBB1'.
IF BSEG-BSCHL EQ '01' OR
BSEG-BSCHL EQ '11'.
MOVE '2104010102' TO BSEG-HKONT.
MOVE 'B' TO BSEG-ZLSPR.
ENDIF.
ENDFORM. "U301
댓글 없음:
댓글 쓰기