cancel
Showing results for 
Search instead for 
Did you mean: 

Folio number not updated in the table RG23D

Former Member
0 Kudos

Hi all,

Folio number not updated in the table RG23D when I create depot excise invoice using batch program J_1IJCHK. Can any one help me by providing rootcause and solution.

Thanks in advance.

Regards

Balaji

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

goto t.code snum,

give obj name as J_1IRG23D...Inside maintain the number range for this

You can get the folio number as u expected

Former Member
0 Kudos

Hi Mahesh,

Thanks for your quick response.

Number ranges for folio number are already available in the system and the same is getting updated when we create depot excise invoice through transaction J1IJ. But, the prblem exists only when we create depot excise with the help of batch program J_1IJCHK.

Hope now i am able to explain my problem.

Regards

Balaji

Lakshmipathi
Active Contributor
0 Kudos

Dear Balaji

Go to IMG Path -- Logistics-General --> Tax on Goods Movements --> India --> Basic Settings --> Maintain Excise Groups.

There select your Excise Group and execute so that you can see a field "Folio Numbers". Tick this box.

For information, if the indicator is set for this field, system will generate Folio numbers for RG23D during receipt of excise invoice into depot.

thanks

G. Lakshmipathi

Former Member
0 Kudos

Hi Mahesh,

Thanks for your response for my question.

We are using ver 4.7.

Only problem we are facing is Folio number not updated in the table RG23D when we create depot excise invoice using batch program J_1IJCHK.

Could you please provide your inputs on this.

Thanks in advance.

Regards

Balaji

Former Member
0 Kudos

See can i know in which version u r working,Because if u r in 4.6c there will be some problem.Some patches will be there.

Try this program i have send and assign excise duty

REPORT YJ_1IJCHK MESSAGE-ID 8I.

*

TABLES : J_1IEXCHDR, "excise header

J_1IEXCDTL, "excise detail

J_1IRG23D , "RG23D register

J_1IWRKCUS, "Plant level customisation

J_1IREGSET, "register set customisation

J_1IEXCDEF, "Tax default information

VBFA, "sales document flow

LIKP, "delivery header

LIPS, "delivery detail

T005, "country information

KUAGV, "sold-to-party information

KUWEV, "ship-to-party information

KNA1, "customer master

VBPA, "sales document partner

TVKO, "sales organisation to company co

VBUK, "delivery information

MAKT, "material description

T001. "company code

  • selection-screen begin of block delivery_details no intervals.

PARAMETERS: FCODE TYPE C,

DELIVERY LIKE LIPS-VBELN,

EXCGROUP LIKE J_1IEXCHDR-EXGRP,

SERGROUP LIKE J_1IEXCHDR-SRGRP.

TYPES : BEGIN OF RG23D.

INCLUDE STRUCTURE J_1IRG23D.

TYPES: MENGR LIKE J_1IEXCDTL-MENGR, "remaining quantity

MENGA LIKE J_1IEXCDTL-MENGA, "quantity actually rec

ADDBED LIKE J_1IEXCDTL-ADDBED,

ADDSED LIKE J_1IEXCDTL-ADDSED,

ADDAED LIKE J_1IEXCDTL-ADDAED,

END OF RG23D.

DATA : BEGIN OF J1IJ300,

BUKRS LIKE TVKO-BUKRS,

WERKS LIKE LIPS-WERKS,

REGID LIKE J_1IREGSET-J_1IREGID,

WAERS LIKE T001-WAERS,

SHIPFROM_IND TYPE C, " Added 10/12/1998

RG23D_SERIALNO TYPE C, " Added 10/12/1998

END OF J1IJ300.

DATA : TRNTYP(4) TYPE C,

CONDT-NAME(3) TYPE C,

TOTAL_LRG23D LIKE LIPS-LFIMG,

ALLOC_LRG23D LIKE LIPS-LFIMG,

SHIPFROM_IND LIKE J_1IEXCHDR-STATUS,

RG23D_SERIALNO LIKE J_1IEXCHDR-STATUS.

DATA : BEGIN OF XLIPS OCCURS 10,

  • internal table to store the delivery item information

VBELN LIKE LIPS-VBELN,

POSNR LIKE LIPS-POSNR,

MATNR LIKE LIPS-MATNR,

MAKTX LIKE MAKT-MAKTX,

WERKS LIKE LIPS-WERKS,

LGORT LIKE LIPS-LGORT,

CHARG LIKE LIPS-CHARG,

LFIMG LIKE LIPS-LFIMG,

MEINS LIKE LIPS-MEINS,

BED LIKE J_1IRG23D-EXBED,

SED LIKE J_1IRG23D-EXSED,

AED LIKE J_1IRG23D-EXAED,

CUR LIKE J_1IRG23D-EXCUR,

SELFLAG TYPE C , "T=excise invoice selected

INDEX LIKE SY-TABIX, "index in the table

FLG TYPE C. "item selection

DATA : END OF XLIPS.

DATA : CRG23D TYPE RG23D OCCURS 30 WITH HEADER LINE.

  • contains all rg23d entries for the document

DATA : LRG23D TYPE RG23D OCCURS 30 WITH HEADER LINE.

  • contains item rg23d entries

DATA : BEGIN OF Z_1IRG23D OCCURS 30.

  • stores the data to be updated

INCLUDE STRUCTURE J_1IRG23D.

DATA : END OF Z_1IRG23D.

DATA : BEGIN OF EXCINV OCCURS 30.

  • factory inovoics selected for item

INCLUDE STRUCTURE J_1IEXCDTL.

DATA : END OF EXCINV.

DATA : BEGIN OF ASSIGNED_EXCINV OCCURS 30.

INCLUDE STRUCTURE J_1IEXCDTL.

DATA : END OF ASSIGNED_EXCINV.

DATA : A_INDEX LIKE SYST-TABIX.

DATA : BEGIN OF LOCK_TABLE OCCURS 10,

  • table containing plant-material combination and status of the lock

WERKS LIKE J_1IEXCDTL-WERKS,

MATNR LIKE J_1IEXCDTL-MATNR,

STATUS TYPE C, "LOCKED/UNLOCKED

END OF LOCK_TABLE.

DATA : BEGIN OF LOCKTAB OCCURS 0,

TRNTYP LIKE J_1IEXCDTL-TRNTYP,

DOCNO LIKE J_1IEXCDTL-DOCNO,

DOCYR LIKE J_1IEXCDTL-DOCYR,

ZEILE LIKE J_1IEXCDTL-ZEILE,

END OF LOCKTAB.

DATA :

CRG23D-CTR TYPE I, "Line count of crg23d table

SHIPFROM LIKE J_1IRG23D-SHIPFROM,

FOLIO LIKE J_1IRG23D-FOLIO,

SERIALNO LIKE J_1IRG23D-SERIALNO,

DEPEXNUM LIKE J_1IRG23D-DEPEXNUM,

DEPEXYEAR LIKE J_1IRG23D-DEPEXYEAR.

CONSTANTS :

BED LIKE CONDT-NAME VALUE 'BED',

AED LIKE CONDT-NAME VALUE 'AED',

SED LIKE CONDT-NAME VALUE 'SED',

CES LIKE CONDT-NAME VALUE 'CES',

LOCKED TYPE C VALUE '1',

UNLOCKED TYPE C VALUE '2'.

AT SELECTION-SCREEN.

PERFORM CHECK_VBELN_INPUT.

IF FCODE = 'S'.

PERFORM DELIVERY_START_USER_EXIT.

PERFORM READ_DELIVERY_HEADER.

PERFORM GET_COMP_CODE.

PERFORM READ_CUSTOMISATION.

PERFORM GET_ITEM_INFO.

PERFORM LOCKING.

PERFORM RG23D_SELECTION.

PERFORM SAVE_DOCUMENT.

MESSAGE I000 WITH 'Selection Complete for Delivery ' DELIVERY.

ELSEIF FCODE = 'V'.

PERFORM GET_COMP_CODE.

PERFORM READ_CUSTOMISATION.

PERFORM GET_ITEM_INFO.

PERFORM LOCKING.

PERFORM UPDATE_DOCUMENT.

MESSAGE I000 WITH 'Verfiy/Post Complete for Delivery ' DELIVERY.

ENDIF.

FORM CHECK_VBELN_INPUT.

  • Validate Function Code

IF NOT ( FCODE = 'S' OR FCODE = 'V' ).

MESSAGE E000 WITH 'Valid Functions are S/V - Select/Verify Post'.

ENDIF.

*

IF DELIVERY IS INITIAL.

MESSAGE E000 WITH 'Delivery number cannot be initial'.

ENDIF.

  • check if goods issue done for the delivery

SELECT SINGLE WBSTK INTO VBUK-WBSTK

FROM VBUK

WHERE VBELN = DELIVERY.

IF SY-SUBRC = 0.

IF VBUK-WBSTK <> 'C' AND FCODE = 'V'.

MESSAGE W339 WITH DELIVERY.

ENDIF.

ELSE.

MESSAGE E000 WITH 'Invalid Delivery'.

ENDIF.

  • if in select mode check if excise invoice already selected for delive

SELECT SINGLE * FROM J_1IRG23D

WHERE VBELN = DELIVERY.

IF FCODE = 'S'.

IF SY-SUBRC = 0.

MESSAGE E325 WITH DELIVERY.

ENDIF.

ELSEIF FCODE = 'V'.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH 'Selection not over for ' DELIVERY.

ELSEIF J_1IRG23D-STATUS = 'P'.

MESSAGE E000 WITH 'Record Already Posted '.

ENDIF.

ENDIF.

CLEAR J_1IRG23D.

ENDFORM. " CHECK_VBELN_INPUT

FORM READ_DELIVERY_HEADER.

SELECT SINGLE * FROM LIKP

WHERE VBELN = DELIVERY.

  • get the sold-to-party

CLEAR: KUAGV, KUWEV.

SELECT SINGLE KUNNR NAME1 LAND1

FROM KNA1 INTO (KUAGV-KUNNR,KUAGV-NAME1,KUAGV-LAND1)

WHERE KUNNR = LIKP-KUNAG.

  • get the ship-to-party

SELECT SINGLE KUNNR LAND1 NAME1

FROM KNA1 INTO (KUWEV-KUNNR,KUWEV-LAND1,KUWEV-NAME1)

WHERE KUNNR = LIKP-KUNNR.

ENDFORM. " READ_DELIVERY_HEADER

FORM GET_COMP_CODE.

  • get the company code of the document from the sales organisation

CLEAR TVKO-BUKRS.

SELECT SINGLE BUKRS FROM TVKO INTO TVKO-BUKRS

WHERE VKORG = LIKP-VKORG.

J1IJ300-BUKRS = TVKO-BUKRS.

SELECT SINGLE WAERS FROM T001 INTO J1IJ300-WAERS

WHERE BUKRS = J1IJ300-BUKRS.

ENDFORM. " GET_COMP_CODE

*

FORM READ_CUSTOMISATION.

SELECT SINGLE WERKS INTO J1IJ300-WERKS

FROM LIPS

WHERE VBELN = DELIVERY.

    • Plant level customisation

SELECT SINGLE * FROM J_1IWRKCUS

WHERE J_1IWERKS = J1IJ300-WERKS .

IF SY-SUBRC <> 0.

MESSAGE E303 WITH 'plant' J1IJ300-WERKS 'J_1IWRKCUS'.

ENDIF.

IF J_1IWRKCUS-J_1IDEPOT IS INITIAL.

  • plant is defined as factory

MESSAGE E322 WITH J1IJ300-WERKS.

ENDIF.

J1IJ300-REGID = J_1IWRKCUS-J_1IREGID.

TRNTYP = 'DLDO'.

SELECT SINGLE * FROM J_1IREGSET

WHERE J_1IREGID = J1IJ300-REGID.

IF SY-SUBRC <> 0.

MESSAGE E303 WITH 'Register id' J1IJ300-REGID 'J_1IREGSET'.

ENDIF.

ENDFORM. " READ_CUSTOMISATION

&----


*& Form GET_ITEM_INFO

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_ITEM_INFO.

REFRESH : CRG23D, LRG23D, EXCINV, XLIPS.

PERFORM READ_DELIVERY_ITEM.

ENDFORM. " GET_ITEM_INFO

&----


*& Form READ_DELIVERY_ITEM

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM READ_DELIVERY_ITEM.

DATA : CNT LIKE SY-TABIX.

CLEAR CNT.

REFRESH XLIPS.

SELECT * FROM LIPS

WHERE VBELN = DELIVERY.

  • read the delivery item

  • perform plant checking only if in create mode

IF LIPS-WERKS <> J1IJ300-WERKS.

  • plant is different from that of the first item

SELECT SINGLE J_1IREGID INTO J_1IWRKCUS-J_1IREGID

FROM J_1IWRKCUS

WHERE J_1IWERKS = LIPS-WERKS.

IF SY-SUBRC <> 0.

MESSAGE E303 WITH 'plant' LIPS-WERKS 'J_1IWRKCUS'.

ENDIF.

IF J_1IWRKCUS-J_1IREGID <> J1IJ300-REGID.

  • register id of the two plants are different

MESSAGE E338 WITH DELIVERY.

ENDIF.

ENDIF.

CLEAR XLIPS.

  • store the item details

XLIPS-VBELN = LIPS-VBELN.

XLIPS-POSNR = LIPS-POSNR.

XLIPS-MATNR = LIPS-MATNR.

PERFORM GET_MATERIAL_DESC

USING XLIPS-MATNR

XLIPS-MAKTX.

XLIPS-WERKS = LIPS-WERKS.

XLIPS-LGORT = LIPS-LGORT.

XLIPS-CHARG = LIPS-CHARG.

XLIPS-LFIMG = LIPS-LFIMG.

XLIPS-MEINS = LIPS-VRKME. "changed 2.3.98

CLEAR : XLIPS-BED, XLIPS-SED, XLIPS-AED.

XLIPS-CUR = J1IJ300-BUKRS.

CNT = CNT + 1.

XLIPS-INDEX = CNT.

XLIPS-SELFLAG = 'F'.

APPEND XLIPS.

ENDSELECT.

ENDFORM. " READ_DELIVERY_ITEM

&----


*& Form GET_MATERIAL_DESC

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_MATERIAL_DESC USING MATNR MAKTX.

SELECT SINGLE MAKTX FROM MAKT INTO MAKTX

WHERE MATNR = MATNR

AND SPRAS = 'E' .

ENDFORM. " GET_MATERIAL_DESC

&----


*& Form LOCKING

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM LOCKING.

  • REFRESH LOCK_TABLE.

  • LOOP AT XLIPS.

  • LOCK_TABLE-WERKS = XLIPS-WERKS.

  • LOCK_TABLE-MATNR = XLIPS-MATNR.

  • LOCK_TABLE-STATUS = UNLOCKED.

  • COLLECT LOCK_TABLE.

  • ENDLOOP.

  • PERFORM LOCK_UNLOCK_PLANT_MATERIAL USING LOCKED.

SELECT TRNTYP DOCNO DOCYR ZEILE INTO

(LOCKTAB-TRNTYP,

LOCKTAB-DOCNO,LOCKTAB-DOCYR,

LOCKTAB-ZEILE)

FROM J_1IEXCDTL

WHERE TRNTYP = 'GRPO'

AND WERKS = XLIPS-WERKS

AND LGORT = XLIPS-LGORT

AND MATNR = XLIPS-MATNR

AND CHARG = XLIPS-CHARG.

APPEND LOCKTAB.

ENDSELECT.

*share lock for all excise invoices

LOOP AT LOCKTAB.

CALL FUNCTION 'ENQUEUE_EJ_1IEXDTL'

EXPORTING

MODE_J_1IEXCDTL = 'S'

MANDT = SY-MANDT

TRNTYP = LOCKTAB-TRNTYP

DOCYR = LOCKTAB-DOCYR

DOCNO = LOCKTAB-DOCNO

ZEILE = LOCKTAB-ZEILE

EXCEPTIONS

FOREIGN_LOCK = 1

SYSTEM_FAILURE = 2

OTHERS = 3.

ENDLOOP.

ENDFORM. " LOCKING

&----


*& Form LOCK_UNLOCK_PLANT_MATERIAL

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM LOCK_UNLOCK_PLANT_MATERIAL USING ACTION.

DATA: __UNAME LIKE SY-UNAME,

__OBJECT LIKE DD25V-VIEWNAME.

DATA : BEGIN OF LOCK_STRUCT,

GRANNAME(10) VALUE 'J1IJ',

ENQMODE VALUE 'E',

MANDT LIKE SY-MANDT,

WERKS LIKE J_1IEXCDTL-WERKS,

MATNR LIKE J_1IEXCDTL-MATNR,

END OF LOCK_STRUCT.

LOCK_STRUCT-MANDT = SY-MANDT.

LOOP AT LOCK_TABLE WHERE STATUS <> ACTION.

  • perform the locking/unlocking operation only for the items for which

  • it is not already done

LOCK_STRUCT-WERKS = LOCK_TABLE-WERKS.

LOCK_STRUCT-MATNR = LOCK_TABLE-MATNR.

  • CALL 'C_ENQUEUE'

  • ID 'OPCODE' FIELD ACTION

  • ID 'ENQOBJ' FIELD 'J_1IJ'

  • ID '01' FIELD LOCK_STRUCT

  • ID 'COLLISION_UNAME' FIELD __UNAME

  • ID 'COLLISION_OBJECT' FIELD __OBJECT.

*

  • CASE SY-SUBRC.

  • WHEN 0.

  • LOCK_TABLE-STATUS = ACTION.

  • MODIFY LOCK_TABLE.

  • WHEN 2.

  • MESSAGE E341 WITH LOCK_TABLE-WERKS LOCK_TABLE-MATNR __UNAME.

  • WHEN OTHERS.

  • IF ACTION = LOCKED.

  • MESSAGE E342 WITH 'locking'

  • LOCK_TABLE-WERKS LOCK_TABLE-MATNR.

    • ELSE.

    • MESSAGE E342 WITH 'unlocking'

    • LOCK_TABLE-WERKS LOCK_TABLE-MATNR.

  • ENDIF.

  • ENDCASE.

ENDLOOP.

ENDFORM. " LOCK_UNLOCK_PLANT_MATERIAL

&----


*& Form RG23D_SELECTION

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM RG23D_SELECTION.

REFRESH CRG23D.

REFRESH ASSIGNED_EXCINV.

LOOP AT XLIPS.

*write: / xlips-vbeln,xlips-posnr,xlips-matnr, xlips-meins, xlips-lfimg.

REFRESH EXCINV.

CALL FUNCTION 'J_1I6_SELECT_EXCISE_INVOICE_DE'

EXPORTING

BUKRS = J1IJ300-BUKRS

CHARG = XLIPS-CHARG

WERKS = XLIPS-WERKS

EXGRP = EXCGROUP

MATNR = XLIPS-MATNR

QTY_CHECK = 'X'

MULTI = 'X'

NO_DAY_CHECK = 'X'

SHIPFROM = SHIPFROM

LGORT = XLIPS-LGORT

TABLES

EXC_TAB = EXCINV

EXCEPTIONS

OTHERS = 1.

*

TOTAL_LRG23D = 0.

ALLOC_LRG23D = 0.

SORT EXCINV BY DOCYR DOCNO .

LOOP AT ASSIGNED_EXCINV.

READ TABLE EXCINV WITH KEY DOCYR = ASSIGNED_EXCINV-DOCYR

DOCNO = ASSIGNED_EXCINV-DOCNO

ZEILE = ASSIGNED_EXCINV-ZEILE

BINARY SEARCH.

IF SY-SUBRC = 0.

A_INDEX = SY-TABIX.

EXCINV-MENGR = EXCINV-MENGR - ASSIGNED_EXCINV-MENGR.

MODIFY EXCINV INDEX A_INDEX .

ENDIF.

ENDLOOP.

DELETE EXCINV WHERE MENGR = 0.

*

  • total_lrg23d = total balance quantity in the selected excise invoices

  • alloc_lrg23d = Quantity allocated to a delivery line item,

*

  • Allocation continues till

  • - We have balance quantity in excise invoice selection

  • - Till total delivery quantity is allocated

*

LOOP AT EXCINV.

*

  • To Force the same shipfrom for all the excise invoices

  • Shipfrom Ind can be determined in the start user-exit

IF J1IJ300-SHIPFROM_IND = 'Y'.

IF XLIPS-INDEX = 1 AND SY-TABIX = 1.

SHIPFROM = EXCINV-SHIPFROM.

ENDIF.

IF SHIPFROM NE EXCINV-SHIPFROM.

EXCINV-RIND3 = 'X'.

MODIFY EXCINV.

CONTINUE.

ENDIF.

ENDIF.

  • Allocation

IF XLIPS-LFIMG NE ALLOC_LRG23D.

TOTAL_LRG23D = TOTAL_LRG23D + EXCINV-MENGR.

IF XLIPS-LFIMG > TOTAL_LRG23D.

ALLOC_LRG23D = ALLOC_LRG23D + EXCINV-MENGR.

ELSE.

EXCINV-MENGR = XLIPS-LFIMG - ALLOC_LRG23D.

ALLOC_LRG23D = ALLOC_LRG23D + EXCINV-MENGR.

ENDIF.

ELSE.

EXCINV-RIND3 = 'X'.

ENDIF.

MODIFY EXCINV.

ENDLOOP.

DELETE EXCINV WHERE RIND3 = 'X'.

*

LOOP AT EXCINV.

MOVE-CORRESPONDING EXCINV TO ASSIGNED_EXCINV.

APPEND ASSIGNED_EXCINV.

CLEAR ASSIGNED_EXCINV.

ENDLOOP.

IF TOTAL_LRG23D < XLIPS-LFIMG.

MESSAGE E000 WITH 'Not enough balance in RG23D ......'.

ENDIF.

  • Collect all allocated excise invoices to crg23d table

LOOP AT EXCINV.

PERFORM FILL_CRG23D.

APPEND CRG23D.

ENDLOOP.

ENDLOOP.

ENDFORM. " RG23D_SELECTION

&----


*& Form SAVE_DOCUMENT

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM SAVE_DOCUMENT.

PERFORM PREPARE_RG23D_DATA.

  • Generate RG23D serial number and Excise Invoice Serial Number

IF J1IJ300-RG23D_SERIALNO = 'Y'.

PERFORM GENERATE_RG23D_SERIAL ON COMMIT.

ENDIF.

PERFORM GENERATE_EXCISE_INV_SERIAL ON COMMIT.

CALL FUNCTION 'J_1I7_USEREXIT_DEPOT_BEF_SAVE'

TABLES

RG23D = Z_1IRG23D

EXCEPTIONS

OTHERS = 1.

PERFORM UPDATE_RG23D ON COMMIT.

PERFORM UPDATE_EXCDTL ON COMMIT.

COMMIT WORK.

  • PERFORM LOCK_UNLOCK_PLANT_MATERIAL USING UNLOCKED.

PERFORM UNLOCKING.

MESSAGE S333 WITH DELIVERY.

ENDFORM. " SAVE_DOCUMENT

&----


*& Form PREPARE_RG23D_DATA

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM PREPARE_RG23D_DATA.

REFRESH Z_1IRG23D.

LOOP AT CRG23D WHERE MENGE <> 0.

CLEAR Z_1IRG23D.

Z_1IRG23D = CRG23D.

Z_1IRG23D-USNAM = SY-UNAME.

Z_1IRG23D-CPUDT = SY-DATUM.

Z_1IRG23D-EXGRP = EXCGROUP.

Z_1IRG23D-SRGRP = SERGROUP.

APPEND Z_1IRG23D.

IF CRG23D-ADDAED <> 0 OR CRG23D-ADDSED <> 0 OR CRG23D-ADDAED <> 0 .

  • additional excise is applicable

  • make quantity zero for A certificate entries

CLEAR : Z_1IRG23D-MENGE.

  • get all the A certificates for the excise document item

SELECT * FROM J_1IEXCDTL

  • TODO : add the transaction type to the selection procedure

WHERE RDOC1 = CRG23D-DOCNO

AND RYEAR1 = CRG23D-DOCYR

AND RITEM1 = CRG23D-ZEILE

AND RIND1 = 'G'.

  • get the A certificate number

SELECT SINGLE

EXNUM EXYEAR INTO (Z_1IRG23D-EXNUM, Z_1IRG23D-EXYEAR)

FROM J_1IEXCHDR

WHERE TRNTYP = J_1IEXCDTL-TRNTYP

AND DOCYR = J_1IEXCDTL-DOCYR

AND DOCNO = J_1IEXCDTL-DOCNO.

Z_1IRG23D-TRNTYP = J_1IEXCDTL-TRNTYP.

Z_1IRG23D-DOCYR = J_1IEXCDTL-DOCYR.

Z_1IRG23D-DOCNO = J_1IEXCDTL-DOCNO.

Z_1IRG23D-ZEILE = J_1IEXCDTL-ZEILE.

Z_1IRG23D-EXBED = ( J_1IEXCDTL-EXBED * CRG23D-MENGE )

/ CRG23D-MENGA.

Z_1IRG23D-EXSED = ( J_1IEXCDTL-EXSED * CRG23D-MENGE )

/ CRG23D-MENGA.

Z_1IRG23D-EXAED = ( J_1IEXCDTL-EXAED * CRG23D-MENGE )

/ CRG23D-MENGA.

Z_1IRG23D-RG23ASER = J_1IEXCDTL-RG23ASER.

Z_1IRG23D-RG23CSER = J_1IEXCDTL-RG23CSER.

Z_1IRG23D-RGPLASER = J_1IEXCDTL-RGPLASER.

APPEND Z_1IRG23D.

ENDSELECT.

ENDIF.

ENDLOOP.

ENDFORM. " PREPARE_RG23D_DATA

&----


*& Form UPDATE_RG23D

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM UPDATE_RG23D.

*update the rg23d register

INSERT J_1IRG23D FROM TABLE Z_1IRG23D ACCEPTING DUPLICATE KEYS.

IF SY-SUBRC <> 0.

MESSAGE A308 WITH 'J_1IRG23D'.

ENDIF.

ENDFORM. " UPDATE_RG23D

&----


*& Form UPDATE_EXCDTL

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM UPDATE_EXCDTL.

LOOP AT CRG23D WHERE MENGE <> 0.

  • update the remaining quantity in the excise invoice item tables

UPDATE J_1IEXCDTL

SET MENGR = MENGR - CRG23D-MENGE

AENAM = SY-UNAME

AEDAT = SY-DATUM

WHERE TRNTYP = 'GRPO'

AND DOCYR = CRG23D-DOCYR

AND DOCNO = CRG23D-DOCNO

AND ZEILE = CRG23D-ZEILE.

IF SY-SUBRC <> 0.

MESSAGE A308 WITH 'J_1IRG23D'.

ENDIF.

ENDLOOP.

ENDFORM. " UPDATE_EXCDTL

&----


*& Form FILL_CRG23D

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_CRG23D.

CRG23D-TRNTYP = EXCINV-TRNTYP.

CRG23D-DOCYR = EXCINV-DOCYR.

CRG23D-DOCNO = EXCINV-DOCNO.

CRG23D-ZEILE = EXCINV-ZEILE.

CRG23D-VBELN = XLIPS-VBELN.

CRG23D-POSNR = XLIPS-POSNR.

CRG23D-EXNUM = EXCINV-EXNUM.

CRG23D-EXYEAR = EXCINV-EXYEAR.

CRG23D-LIFNR = EXCINV-LIFNR.

CRG23D-MATNR = EXCINV-MATNR.

CRG23D-MAKTX = EXCINV-MAKTX.

CRG23D-CHAPID = EXCINV-CHAPID.

CRG23D-MEINS = EXCINV-MENGR_UOM.

CRG23D-WERKS = EXCINV-WERKS.

CRG23D-EXCUR = EXCINV-EXCUR.

CRG23D-RG23ASER = EXCINV-RG23ASER.

CRG23D-RG23CSER = EXCINV-RG23CSER.

CRG23D-RGPLASER = EXCINV-RGPLASER.

CRG23D-MENGR = EXCINV-MENGR.

CRG23D-MENGA = EXCINV-MENGA.

CRG23D-MENGE = EXCINV-MENGR. " Move the allocated Qty

CRG23D-EXBED = ( EXCINV-EXBED * CRG23D-MENGE ) / EXCINV-MENGA.

CRG23D-EXSED = ( EXCINV-EXSED * CRG23D-MENGE ) / EXCINV-MENGA.

CRG23D-EXAED = ( EXCINV-EXAED * CRG23D-MENGE ) / EXCINV-MENGA.

ENDFORM. " FILL_CRG23D

&----


*& Form UPDATE_DOCUMENT

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM UPDATE_DOCUMENT.

LOOP AT XLIPS.

UPDATE J_1IRG23D SET STATUS = 'P'

WHERE VBELN = XLIPS-VBELN

AND POSNR = XLIPS-POSNR.

ENDLOOP.

COMMIT WORK.

ENDFORM. " UPDATE_DOCUMENT

&----


*& Form DELIVERY_START_USER_EXIT

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM DELIVERY_START_USER_EXIT.

CALL FUNCTION 'J_1I7_USEREXIT_EXGRP_DETERM'

EXPORTING

EXCGRP = EXCGROUP

  • MBLNR =

  • MJAHR =

  • VENDOR =

VBELN = DELIVERY

IMPORTING

EXCGRP = EXCGROUP

SHIPFROM_IND = J1IJ300-SHIPFROM_IND

RG23D_SERIALNO = J1IJ300-RG23D_SERIALNO

EXCEPTIONS

OTHERS = 1.

CALL FUNCTION 'J_1I7_USEREXIT_SERGRP_DETERM'

EXPORTING

SRGRP = SERGROUP

  • MBLNR =

  • MJAHR =

VBELN = DELIVERY

IMPORTING

SRGRP = SERGROUP

EXCEPTIONS

OTHERS = 1.

ENDFORM. " DELIVERY_START_USER_EXIT

&----


*& Form GENERATE_RG23D_SERIAL

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM GENERATE_RG23D_SERIAL.

LOOP AT Z_1IRG23D WHERE MENGE <> 0.

CLEAR: FOLIO, SERIALNO.

SELECT MAX( FOLIO ) MAX( SERIALNO )

INTO (Z_1IRG23D-FOLIO, Z_1IRG23D-SERIALNO)

FROM J_1IRG23D

WHERE TRNTYP = Z_1IRG23D-TRNTYP

AND DOCNO = Z_1IRG23D-DOCNO

AND DOCYR = Z_1IRG23D-DOCYR

AND ZEILE = Z_1IRG23D-ZEILE.

MODIFY Z_1IRG23D.

ENDLOOP.

ENDFORM. " GENERATE_RG23D_SERIAL

&----


*& Form GENERATE_EXCISE_INV_SERIAL

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM GENERATE_EXCISE_INV_SERIAL.

CLEAR: DEPEXNUM, DEPEXYEAR.

CALL FUNCTION 'J_1I6_DETERMINE_EXC_YEAR'

EXPORTING

I_BUKRS = J1IJ300-BUKRS

IMPORTING

EXCISE_YEAR = DEPEXYEAR

EXCEPTIONS

MISS_COMPANY = 1

OTHERS = 2.

IF SY-SUBRC NE 0.

MESSAGE E526 WITH 'Company ' J1IJ300-BUKRS.

ENDIF.

CALL FUNCTION 'NUMBER_GET_NEXT'

EXPORTING

NR_RANGE_NR = '01'

OBJECT = 'J_1IDEPINV'

QUANTITY = '1'

SUBOBJECT = SERGROUP

TOYEAR = DEPEXYEAR

IMPORTING

NUMBER = DEPEXNUM

EXCEPTIONS

INTERVAL_NOT_FOUND = 1

NUMBER_RANGE_NOT_INTERN = 2

OBJECT_NOT_FOUND = 3

QUANTITY_IS_0 = 4

QUANTITY_IS_NOT_1 = 5

INTERVAL_OVERFLOW = 6

OTHERS = 7.

CASE SY-SUBRC.

WHEN 0.

WHEN 1.

MESSAGE A336 WITH 'internal document' ': Interval not found'

'. Number object : J_1IDEPINV'.

WHEN 3.

MESSAGE A336 WITH 'internal document' ': Object not found'

'. Number object : J_1IDEPINV'.

WHEN OTHERS.

MESSAGE A336 WITH 'internal document'

'. Number object : J_1IDEPINV'.

ENDCASE.

  • Update Depot Excise Invoice Year and Number in the table

LOOP AT Z_1IRG23D.

Z_1IRG23D-SERIALNO = Z_1IRG23D-SERIALNO + 1.

Z_1IRG23D-DEPEXYEAR = DEPEXYEAR.

Z_1IRG23D-DEPEXNUM = DEPEXNUM.

MODIFY Z_1IRG23D.

ENDLOOP.

ENDFORM. " GENERATE_EXCISE_INV_SERIAL

&----


*& Form UNLOCKING

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UNLOCKING.

LOOP AT LOCKTAB.

CALL FUNCTION 'DEQUEUE_EJ_1IEXDTL'

EXPORTING

MODE_J_1IEXCDTL = 'S'

MANDT = SY-MANDT

TRNTYP = LOCKTAB-TRNTYP

DOCYR = LOCKTAB-DOCYR

DOCNO = LOCKTAB-DOCNO

ZEILE = LOCKTAB-ZEILE.

ENDLOOP.

ENDFORM. " UNLOCKING