Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Urgent Plsseeeeeeeeeeeee Currency Feild

Former Member
0 Kudos

Hi Experts,

I need to display Output in ALV when i press print button a spool need to be generated.

I am having two currency feilds one i am getting from database and the other i am calulating in the program which is multipled with percent feild.

In my program if i comment the caluclated currency feild feild catlog every thing is fine the spool is generated. But if i un comment the program is going to DUMP.

i am attching the code below . I bold code is the caluclated currency field.

&----


*& Report ZAFGU070

*&

&----


REPORT ZAFGU070 NO STANDARD PAGE HEADING

  • line-size 132 V05

  • line-count 65 V05

LINE-SIZE 170 "V05

LINE-COUNT 58 "V05

MESSAGE-ID ZF.

****************************************************************************

  • CONSTANTS *

****************************************************************************

CONSTANTS : C_COMP_CODE TYPE BUKRS VALUE '0001', " constant fields

C_SPL_PURP_ACCT TYPE HKONT VALUE '710000',

C_NET_AMT TYPE P DECIMALS 2 VALUE '1.00'.

CONSTANTS : C_CHECK TYPE C VALUE 'X', " constant fields

C_PROJ_REPOST TYPE BLART VALUE 'IL',

C_GI_OR_GD TYPE BLART VALUE 'WL',

C_DEBIT TYPE SHKZG VALUE 'S',

C_DEBIT_IND TYPE BSCHL VALUE '40',

C_CREDIT_IND TYPE BSCHL VALUE '50',

C_LANG TYPE SPRAS VALUE 'E'.

CONSTANTS : C_TCODE1(03) TYPE C VALUE 'VL%',

C_CON_LAND1 TYPE LAND1 VALUE 'US',

C_REC_TYPE TYPE RRCTY VALUE '0'.

CONSTANTS : BEGIN OF IS_CONST, " constant fields

PROG_HEAD(08) TYPE C VALUE 'SAPMF05A', " header prog

PROG_CODG(08) TYPE C VALUE 'SAPLKACB', " coding block

DYN_0002(04) TYPE C VALUE '0002', " dynpro 0002

DYN_0100(04) TYPE C VALUE '0100', " dynpro 0100

DYN_0300(04) TYPE C VALUE '0300', " dynpro 0300

MKOAR(01) TYPE C VALUE 'D', " account type

PERIV TYPE PERIV VALUE 'AM', " fisc yr variant

CURRENCY TYPE WAERS VALUE 'USD', " currency

RATE(09) TYPE C VALUE '0' , " exchange rate

DOC_TYPE(02) TYPE C VALUE 'SA', " Doc Type

  • Begin of change (D08k900809)

  • BUS_AREA(04) TYPE C VALUE '0106', " bus area

PROFIT_CENTRE(10) TYPE C VALUE 'C_110601', " Profit Center

  • End of change (D08k900809)

TEXT_HEAD(25) TYPE C VALUE 'Tax Calc. for CC consump.',

END OF IS_CONST.

****************************************************************************

  • P A R A M E T E R S

****************************************************************************

*PARAMETERS:

  • P_BUKRS LIKE BSIS-BUKRS DEFAULT '0001', " Company Code

  • P_HKONT LIKE BSIS-HKONT DEFAULT '0070685001', " GL Accounts

  • P_NETAMT(4) TYPE P DECIMALS 2 DEFAULT '0.84'. " Net amount

*

*

*SELECT-OPTIONS:

  • S_BUDAT FOR BSIS-BUDAT.

*

*

**selection-screen begin of line. " 3.0 syntax change v02

*SELECTION-SCREEN ULINE.

**selection-screen end of line. " 3.0 syntax change v02

*

*PARAMETERS: " Parameters for BDC stuff

************

  • P_BDCNM LIKE APQI-GROUPID " UPG45B

  • DEFAULT SY-REPID OBLIGATORY, " BDC name for combined file

  • P_DEVICE LIKE USR01-SPLD,

  • P_ERRLP AS CHECKBOX DEFAULT 'X'.

DATA : BUDAT TYPE BUDAT.

PARAMETERS:

P_BUKRS TYPE BUKRS DEFAULT C_COMP_CODE, " Company Code

P_HKONT TYPE HKONT DEFAULT C_SPL_PURP_ACCT, " GL Accounts

P_NETAMT(4) TYPE P DECIMALS 2 DEFAULT C_NET_AMT. " Net amount

SELECT-OPTIONS:

S_BUDAT FOR BUDAT.

SELECTION-SCREEN BEGIN OF LINE. " 3.0 syntax change v02

SELECTION-SCREEN ULINE 1(80).

SELECTION-SCREEN END OF LINE. " 3.0 syntax change v02

PARAMETERS: " Parameters for BDC stuff

P_BDCNM TYPE APQ_GRPN " UPG45B

DEFAULT SY-REPID OBLIGATORY, " BDC name for combined file

P_DEVICE TYPE RSPOPNAME,

P_ERRLP AS CHECKBOX DEFAULT C_CHECK.

*****************************************************************************

  • TYPE-POOLS

*****************************************************************************

TYPE-POOLS : SLIS.

*****************************************************************************

  • D A T A

*****************************************************************************

**DATA: BEGIN OF t_bsis OCCURS 2000, V05

*DATA: BEGIN OF T_BSIS OCCURS 0, "V05

  • KOSTL LIKE BSIS-KOSTL, " Cost Center

  • BELNR LIKE BSIS-BELNR, "FI document V05

  • GJAHR LIKE BSIS-GJAHR, "Fiscal year V05

  • AMOUNT LIKE BSIS-DMBTR, " amount

  • WAERS LIKE BSIS-WAERS, " Currency key UPG45B

  • END OF T_BSIS.

*

TYPES : BEGIN OF TY_BSIS ,

GJAHR TYPE GJAHR, " Fiscal year V05

BELNR TYPE BELNR_D, " FI document V05

WAERS TYPE WAERS, " Currency key UPG45B

AMOUNT TYPE DMBTR, " amount

KOSTL TYPE KOSTL, " Cost Center

END OF TY_BSIS.

DATA : BEGIN OF IS1_BSIS,

GJAHR TYPE GJAHR,

BELNR TYPE BELNR_D,

WAERS TYPE KOSTL,

SHKZG TYPE SHKZG,

DMBTR TYPE DMBTR,

KOSTL TYPE KOSTL,

END OF IS1_BSIS.

DATA : IS2_BSIS TYPE TY_BSIS,

IT_BSIS TYPE STANDARD TABLE OF TY_BSIS.

*DATA: BEGIN OF T_JV_ITEM OCCURS 2000,

  • POST_KEY(2) TYPE C, " post_key

  • ACCOUNT(10) TYPE C, " account

    • amount(16) TYPE c, " amount V05

  • COST_CENTER(10) TYPE C, " cost_center

  • BUS_AREA(4) TYPE C, " business area

  • AMOUNT LIKE BSIS-DMBTR, " amount "V05

*

  • END OF T_JV_ITEM.

TYPES : BEGIN OF TY_JV_ITEM,

POST_KEY(2) TYPE C, " post_key

ACCOUNT(10) TYPE C, " account

  • amount(16) TYPE c, " amount "V05

COST_CENTER(10) TYPE C, " cost_center

PROFIT_CENTRE(10) TYPE C, " Profit Centre

AMOUNT TYPE DMBTR, " amount "V05

END OF TY_JV_ITEM.

DATA : IS_JV_ITEM TYPE TY_JV_ITEM,

IT_JV_ITEM TYPE STANDARD TABLE OF TY_JV_ITEM.

*DATA: BEGIN OF T_ERROR OCCURS 500,

  • COST_CENTER(10) TYPE C, " cost center

  • ACCOUNT(10) TYPE C, " account

  • AMOUNT LIKE BSIS-DMBTR, " amount

  • BUKRS LIKE BSIS-BUKRS, " company code V05

  • BELNR LIKE BSIS-BELNR, " document number V05

  • GJAHR LIKE BSIS-GJAHR, " fiscal year V05

  • KUNNR LIKE KNA1-KUNNR, " customer V05

  • COUNTRY(3) TYPE C, " country

  • REGION(3) TYPE C, " region/state

  • WAERS LIKE BSIS-WAERS, " CURRENCY KEY UPG45B

    • message(50) type c, " message V05

  • MESSAGE(60) TYPE C, " message V05

  • END OF T_ERROR.

TYPES : BEGIN OF TY_ERROR,

COST_CENTER(10) TYPE C, " cost center

ACCOUNT(10) TYPE C, " account

AMOUNT TYPE DMBTR, " amount

BUKRS TYPE BUKRS, " company code V05

BELNR TYPE BELNR_D, " document number V05

GJAHR TYPE GJAHR, " fiscal year V05

KUNNR TYPE KUNNR, " customer V05

COUNTRY(3) TYPE C, " country

REGION(3) TYPE C, " region/state

WAERS TYPE WAERS, " CURRENCY KEY UPG45B

  • message(50) type c, " message V05

MESSAGE(60) TYPE C, " message V05

END OF TY_ERROR.

DATA : IS_ERROR TYPE TY_ERROR,

IT_ERROR TYPE STANDARD TABLE OF TY_ERROR.

*DATA: BEGIN OF CONST, " constant fields

  • PROG_HEAD(08) VALUE 'SAPMF05A', " header prog

  • PROG_CODG(08) VALUE 'SAPLKACB', " coding block

  • DYN_0002(04) VALUE '0002', " dynpro 0002

  • DYN_0100(04) VALUE '0100', " dynpro 0100

  • DYN_0300(04) VALUE '0300', " dynpro 0300

  • MKOAR(01) VALUE 'G', " account type

  • PERIV LIKE T009B-PERIV VALUE 'AM', " fisc yr variant

  • CURRENCY LIKE BKPF-WAERS VALUE 'USD', " currency

  • RATE(09) TYPE C VALUE '0' , " exchange rate

  • DOC_TYPE(02) TYPE C VALUE 'SA', " Doc Type

  • BUS_AREA(04) TYPE C VALUE '0106', " bus area

  • TEXT_HEAD(25) TYPE C VALUE 'Tax Calc. for CC consump.',

  • "#EC NOTEXT V05

  • END OF CONST.

*DATA: BEGIN OF IS_CONST, " constant fields

*

  • PROG_HEAD(08) TYPE C VALUE 'SAPMF05A', " header prog

  • PROG_CODG(08) TYPE C VALUE 'SAPLKACB', " coding block

  • DYN_0002(04) TYPE C VALUE '0002', " dynpro 0002

  • DYN_0100(04) TYPE C VALUE '0100', " dynpro 0100

  • DYN_0300(04) TYPE C VALUE '0300', " dynpro 0300

  • MKOAR(01) TYPE C VALUE 'D', " account type

  • PERIV TYPE PERIV VALUE 'AM', " fisc yr variant

  • CURRENCY TYPE WAERS VALUE 'USD', " currency

  • RATE(09) TYPE C VALUE '0' , " exchange rate

  • DOC_TYPE(02) TYPE C VALUE 'SA', " Doc Type

*

  • BUS_AREA(04) TYPE C VALUE '0106', " bus area

*

  • TEXT_HEAD(25) TYPE C VALUE 'Tax Calc. for CC consump.',

  • "#EC NOTEXT V05

  • END OF IS_CONST.

  • for holding data of the table T900X.

DATA : IS_ZAFGTCR001 TYPE ZAFGTCR001.

*DATA: BEGIN OF BDC OCCURS 1000. " BDC table

  • INCLUDE STRUCTURE BDCDATA. " structure for BDC file

*DATA: END OF BDC. " end of BDC table

DATA : IS_BDC TYPE BDCDATA,

IT_BDC LIKE STANDARD TABLE OF IS_BDC.

*DATA:

  • W_BUKRS LIKE BSIS-BUKRS VALUE '0001',

  • W_KOSTL LIKE BSIS-KOSTL,

  • W_VALID_DATA TYPE C,

  • W_TAX_AMOUNT LIKE BSIS-MWSTS," Tax amount

  • W_CR_ACCOUNT LIKE BSIS-HKONT," Credit Account #

  • W_REC_COUNT TYPE I,

  • W_POST_DATE(8) TYPE C,

  • W_PRE_ACCOUNT(10) TYPE C.

    • w_rpt_type TYPE c.

    • W_PRE_AMOUNT(16) TYPE C.

DATA:

W_BUKRS TYPE BUKRS VALUE C_COMP_CODE,

W_KOSTL TYPE KOSTL,

W_VALID_DATA TYPE C,

W_TAX_AMOUNT TYPE MWSTS, " Tax amount

W_CR_ACCOUNT TYPE HKONT, " Credit Account #

W_REC_COUNT TYPE I,

W_POST_DATE(8) TYPE C,

W_PRE_ACCOUNT(10) TYPE C.

  • w_rpt_type type c.

  • W_PRE_AMOUNT(16) TYPE C.

    • Data declarations for finding shipt-customer state tax rate

*DATA: MSEG_WEMPF LIKE KNA1-KUNNR, "V05

  • T3(80). "V05

  • Data declarations for finding shipt-customer state tax rate

DATA: MSEG_WEMPF TYPE KUNNR, "V05

T3(80) TYPE C. "V05

**begin V07

*CONSTANTS: c_TCODE1(03) VALUE 'VL%',

*

**CONSTANTS: TCODE1(04) VALUE 'VL01', "V05

    • TCODE2(04) VALUE 'VL02', "V05

**end V07

*begin V07

*CONSTANTS: C_TCODE1(03) TYPE C VALUE 'VL%',

*CONSTANTS: TCODE1(04) VALUE 'VL01', "V05

  • TCODE2(04) VALUE 'VL02', "V05

*end V07

**start of pcr 9558

  • CON_LAND1 LIKE KNA1-LAND1 VALUE 'US'.

**end of pcr 9558

*start of pcr 9558

  • CON_LAND1 TYPE LAND1 VALUE 'US'.

*end of pcr 9558

    • Internal table for KNA1 records V05

*DATA : BEGIN OF T_KNA1 OCCURS 0, "V05

  • KUNNR LIKE KNA1-KUNNR, "V05

  • LAND1 LIKE KNA1-LAND1, "V05

  • REGIO LIKE KNA1-REGIO, "V05

  • END OF T_KNA1. "V05

  • Internal table for KNA1 records V05

DATA : IS_KNA1 TYPE KNA1,

IT_KNA1 LIKE STANDARD TABLE OF IS_KNA1.

  • For holding data for tables T001B,CSKT.

DATA : IS_T001B TYPE T001B,

IS_CSKT TYPE CSKT.

  • For holding Error Data

DATA : BEGIN OF IS_FINAL_ERROR ,

COST_CENTER(10) TYPE C,

KTEXT TYPE KTEXT,

AMOUNT TYPE DMBTR, " amount

EXT_AMOUNT TYPE DMBTR,

BUKRS TYPE BUKRS, " company code V05

BELNR TYPE BELNR_D, " document number V05

GJAHR TYPE GJAHR, " fiscal year V05

KUNNR TYPE KUNNR, " customer V05

COUNTRY(3) TYPE C, " country

REGION(3) TYPE C, " region/state

WAERS TYPE WAERS, " CURRENCY KEY UPG45B

MESSAGE(60) TYPE C, " message V05

END OF IS_FINAL_ERROR,

IT_FINAL_ERROR LIKE STANDARD TABLE OF IS_FINAL_ERROR.

  • For ALV Gird

DATA : IT_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV,

IS_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV,

GD_REPID TYPE SY-REPID,

TIME TYPE SY-UZEIT.

************************************************************************

  • INITIALIZATION

************************************************************************

INITIALIZATION.

PERFORM INIT_POST_DATE. " Initial posting date for open

" fiscal period

************************************************************************

  • AT SELECTION-SCREEN

************************************************************************

AT SELECTION-SCREEN ON P_NETAMT. " Validate Net amount is > 0

IF P_NETAMT < 0 OR P_NETAMT > 1. " and < 1.

MESSAGE E999 WITH TEXT-003.

ENDIF.

************************************************************************

  • START-OF-SELECTION.

************************************************************************

START-OF-SELECTION.

PERFORM AUTH_CHECK.

PERFORM RETRIEVE_DATA.

PERFORM TAX_CALCULATION.

DESCRIBE TABLE IT_JV_ITEM LINES W_REC_COUNT.

IF W_REC_COUNT > 0.

PERFORM PROCESS_BDC.

ELSE.

  • WRITE: / TEXT-014.

ENDIF.

************************************************************************

  • end of selection

************************************************************************

END-OF-SELECTION.

PERFORM ERROR_REPORT.

************************************************************************

  • Subroutines

************************************************************************

FORM INIT_POST_DATE. " find allowable (open) fiscal period

*----


  • Find last day of first open period determined from t001b

  • fill key fields with : fy variant = 'AM'

  • : fiscal year = fiscal year from t001b

  • : fiscal per = fiscal per from t001b

*----


*DATA: W_OPEN_PERIOD LIKE BKPF-MONAT.

DATA : L_OPEN_PERIOD TYPE MONAT,

L_BUDAT_LOW TYPE BUDAT,

L_BUDAT_HIGH TYPE BUDAT.

  • SELECT * FROM T001B WHERE

  • RRCTY EQ '0' AND

  • BUKRS EQ W_BUKRS AND

  • MKOAR EQ CONST-MKOAR.

  • ENDSELECT.

  • IF SY-SUBRC NE 0.

  • MESSAGE E999 WITH TEXT-001 W_BUKRS CONST-MKOAR.

  • ENDIF.

  • W_OPEN_PERIOD = T001B-FRPE1.

SELECT * FROM T001B

INTO IS_T001B

WHERE RRCTY EQ C_REC_TYPE AND

BUKRS EQ W_BUKRS AND

MKOAR EQ IS_CONST-MKOAR.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E999 WITH TEXT-001 W_BUKRS IS_CONST-MKOAR.

ENDIF.

L_OPEN_PERIOD = IS_T001B-FRPE1.

  • CALL FUNCTION 'PERIOD_DAY_DETERMINE'

  • EXPORTING

  • I_GJAHR = T001B-FRYE1

  • I_MONAT = W_OPEN_PERIOD

  • I_PERIV = CONST-PERIV

  • IMPORTING

  • E_FDAY = S_BUDAT-LOW " First day

  • E_LDAY = S_BUDAT-HIGH " Last day

  • EXCEPTIONS

  • ERROR_PERIOD = 01

  • ERROR_PERIOD_VERSION = 02

  • FIRSTDAY_NOT_DEFINED = 03

  • PERIOD_NOT_DEFINED = 04.

  • IF SY-SUBRC <> 0.

  • MESSAGE E999 WITH TEXT-002 : CONST-PERIV W_OPEN_PERIOD T001B-FRYE1.

  • ENDIF.

*

CALL FUNCTION 'PERIOD_DAY_DETERMINE'

EXPORTING

I_GJAHR = IS_T001B-FRYE1

I_MONAT = L_OPEN_PERIOD

I_PERIV = IS_CONST-PERIV

IMPORTING

E_FDAY = S_BUDAT-LOW " First day

E_LDAY = S_BUDAT-HIGH " Last day

EXCEPTIONS

ERROR_PERIOD = 01

ERROR_PERIOD_VERSION = 02

FIRSTDAY_NOT_DEFINED = 03

PERIOD_NOT_DEFINED = 04.

IF SY-SUBRC <> 0.

MESSAGE E999 WITH TEXT-002 : IS_CONST-PERIV L_OPEN_PERIOD IS_T001B-FRYE1.

ENDIF.

APPEND S_BUDAT.

ENDFORM. "INIT_POST_DATE

&----


*& Form AUTH_CHECK

&----


FORM AUTH_CHECK.

  • AUTHORITY-CHECK OBJECT 'ZAZBATCH'

  • ID 'P_GROUP' FIELD '*'

  • ID 'P_ACTION' FIELD '*'

  • ID 'ACTVT' FIELD '*'.

*

  • IF SY-SUBRC <> 0.

*

  • MESSAGE E999 WITH TEXT-990 SY-REPID.

*

  • ENDIF.

ENDFORM. "AUTH_CHECK

----


  • FORM RETRIEVE_DATA *

----


  • retrieves data frome BSIS *

----


FORM RETRIEVE_DATA.

    • select * from bsis client specified

    • where hkont = p_hkont and

    • bukrs = p_bukrs and

    • mandt = sy-mandt and

    • budat in s_budat and

    • ( blart = 'IL' or blart = 'WL' ). " v01

    • 04/06/98 YTAI change select where clause V02

    • select * from bsis V05

  • SELECT BELNR GJAHR SHKZG DMBTR KOSTL WAERS "V05

  • INTO (BSIS-BELNR, BSIS-GJAHR, BSIS-SHKZG, BSIS-DMBTR, "V05

  • BSIS-KOSTL, BSIS-WAERS) "V05

  • FROM BSIS "V05

  • WHERE HKONT = P_HKONT AND

  • BUKRS = P_BUKRS AND

  • BUDAT IN S_BUDAT AND

  • ( BLART = 'IL' OR BLART = 'WL' ).

    • end of changes

SELECT GJAHR BELNR WAERS SHKZG DMBTR KOSTL "V05

INTO CORRESPONDING FIELDS OF IS1_BSIS "V05

FROM BSIS "V05

WHERE HKONT = P_HKONT AND

BUKRS = P_BUKRS AND

BUDAT IN S_BUDAT AND

( BLART = C_PROJ_REPOST OR BLART = C_GI_OR_GD ).

PERFORM POPULATE_DATA.

ENDSELECT.

ENDFORM. "RETRIEVE_DATA

----


  • FORM POPULATE_DATA *

----


  • Populate data *

----


FORM POPULATE_DATA.

    • W_KOSTL = BSIS-KOSTL.

      • READ TABLE t_bsis WITH KEY w_kostl BINARY SEARCH. V05

    • READ TABLE T_BSIS WITH KEY KOSTL = W_KOSTL "V05

    • BELNR = BSIS-BELNR "V05

    • GJAHR = BSIS-GJAHR "V05

    • BINARY SEARCH. "V05

    • IF SY-SUBRC <> 0. " record not exists

    • T_BSIS-KOSTL = W_KOSTL.

    • T_BSIS-BELNR = BSIS-BELNR. "V05

    • T_BSIS-GJAHR = BSIS-GJAHR. "V05

    • IF BSIS-SHKZG = 'S'.

    • T_BSIS-AMOUNT = BSIS-DMBTR.

    • ELSE.

    • T_BSIS-AMOUNT = BSIS-DMBTR * -1.

    • ENDIF.

    • T_BSIS-WAERS = BSIS-WAERS. " UPG45B

    • INSERT T_BSIS INDEX SY-TABIX. " Create new record

    • ELSE. " record exists

    • IF BSIS-SHKZG = 'S'. " Debit

    • T_BSIS-AMOUNT = T_BSIS-AMOUNT + BSIS-DMBTR.

    • ELSE. " Credit

    • T_BSIS-AMOUNT = T_BSIS-AMOUNT - BSIS-DMBTR.

    • ENDIF.

    • MODIFY T_BSIS INDEX SY-TABIX. " update amount

    • ENDIF.

W_KOSTL = IS1_BSIS-KOSTL.

  • READ TABLE t_bsis WITH KEY w_kostl BINARY SEARCH. V05

READ TABLE IT_BSIS INTO IS2_BSIS WITH KEY KOSTL = W_KOSTL "V05

BELNR = IS1_BSIS-BELNR "V05

GJAHR = IS1_BSIS-GJAHR "V05

BINARY SEARCH. "V05

IF SY-SUBRC <> 0. " record not exists

IS2_BSIS-KOSTL = W_KOSTL.

IS2_BSIS-BELNR = IS1_BSIS-BELNR. "V05

IS2_BSIS-GJAHR = IS1_BSIS-GJAHR. "V05

IF IS1_BSIS-SHKZG = C_DEBIT.

IS2_BSIS-AMOUNT = IS1_BSIS-DMBTR.

ELSE.

IS2_BSIS-AMOUNT = IS1_BSIS-DMBTR * -1.

ENDIF.

IS2_BSIS-WAERS = IS1_BSIS-WAERS. " UPG45B

INSERT IS2_BSIS INTO IT_BSIS INDEX SY-TABIX. " Create new record

ELSE. " record exists

IF IS1_BSIS-SHKZG = C_DEBIT. " Debit

IS2_BSIS-AMOUNT = IS2_BSIS-AMOUNT + IS1_BSIS-DMBTR.

ELSE. " Credit

IS2_BSIS-AMOUNT = IS2_BSIS-AMOUNT - IS1_BSIS-DMBTR.

ENDIF.

MODIFY IT_BSIS FROM IS2_BSIS INDEX SY-TABIX. " update amount

ENDIF.

ENDFORM. "POPULATE_DATA

----


  • FORM TAX_CALCULATION *

----


*- OLD -1. validate cost center against table CSKS *

  • V05 1. find originating material document and shipt-to in FI doc. *

  • 2. retrieve tax rate which is based on table T900x which is *

  • derived by country and region *

  • 3. calculate tax amount

----


FORM TAX_CALCULATION.

*CLEAR T_BSIS.

  • LOOP AT T_BSIS.

  • PERFORM VALIDATE_LINE_ITEM.

  • IF W_VALID_DATA = 'X'. " Valid data

    • subtotal of each cost center, times net amount % and times tax rate

  • W_TAX_AMOUNT = T_BSIS-AMOUNT * P_NETAMT

  • * ( T900X-TAX_RATE / 100 ).

  • IF W_TAX_AMOUNT > 0.

  • PERFORM SAVE_JV_ITEM USING '40' '50'. " JV Line item

  • ELSE.

  • W_TAX_AMOUNT = W_TAX_AMOUNT * -1.

  • PERFORM SAVE_JV_ITEM USING '50' '40'. " JV Line item

  • ENDIF.

  • ENDIF.

  • ENDLOOP.

CLEAR IS2_BSIS.

LOOP AT IT_BSIS INTO IS2_BSIS.

PERFORM VALIDATE_LINE_ITEM.

IF W_VALID_DATA = C_CHECK. " Valid data

  • subtotal of each cost center, times net amount % and times tax rate

W_TAX_AMOUNT = IS2_BSIS-AMOUNT * P_NETAMT

  • ( IS_ZAFGTCR001-TAX_RATE / 100 ).

IF W_TAX_AMOUNT > 0.

PERFORM SAVE_JV_ITEM USING C_DEBIT_IND C_CREDIT_IND. " JV Line item

ELSE.

W_TAX_AMOUNT = W_TAX_AMOUNT * -1.

PERFORM SAVE_JV_ITEM USING C_CREDIT_IND C_CREDIT_IND. " JV Line item

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. "TAX_CALCULATION

----


  • FORM VALIDATE_LINE_ITEM *

----


  • validate cost center and retrieve tax rate from table t900x *

----


FORM VALIDATE_LINE_ITEM.

  • DATA: BKPF_AWKEY LIKE BKPF-AWKEY. "V05

*

  • CLEAR W_CR_ACCOUNT.

    • V05 - start of deletion

    • SELECT * FROM CSKS " Validate cost center

    • WHERE KOKRS = P_BUKRS AND

    • KOSTL = T_BSIS-KOSTL AND

    • ( DATBI >= SY-DATUM AND DATAB <= SY-DATUM ) AND

    • BKZKP = ' ' AND

    • BKZKS = ' ' AND

    • BKZER = ' '.

    • EXIT.

    • ENDSELECT.

    • V05 - end of deletion

*

    • V05 - start of insertion

  • CLEAR MSEG_WEMPF.

  • CLEAR T_KNA1.

*

    • Read BKPF ( FI document header ) to find reference material document.

    • Check original transaction was delivery create or change (VL01/VL02)

  • SELECT SINGLE AWKEY INTO BKPF_AWKEY FROM BKPF

  • WHERE BUKRS = P_BUKRS

  • AND BELNR = T_BSIS-BELNR

  • AND GJAHR = T_BSIS-GJAHR

**Begin V07

    • AND ( TCODE = TCODE1 OR TCODE = TCODE2 ).

  • AND TCODE like c_tcode1.

**END V07

  • IF SY-SUBRC NE 0.

  • PERFORM ERROR_LOG USING TEXT-015. " not originated from SD

  • EXIT.

  • ENDIF.

    • Read material document - only first item because the goods recipient

    • will be the same even if there are multiple items - because the

    • originating document was a delivery doc.

  • SELECT WEMPF INTO MSEG_WEMPF FROM MSEG UP TO 1 ROWS

  • WHERE MBLNR = BKPF_AWKEY(10)

  • AND MJAHR = BKPF_AWKEY+10(4)

  • AND WEMPF NE SPACE.

  • ENDSELECT.

  • IF SY-SUBRC NE 0.

  • PERFORM ERROR_LOG USING TEXT-016. "no goods recipient

  • EXIT.

  • ENDIF.

    • Find ship-to customer and country, state - use internal table to

    • prevent redundant reads from database

  • READ TABLE T_KNA1 WITH KEY KUNNR = MSEG_WEMPF BINARY SEARCH.

    • if not stored yet collect and save in table

  • IF SY-SUBRC NE 0.

  • SELECT SINGLE KUNNR LAND1 REGIO INTO T_KNA1

  • FROM KNA1

  • WHERE KUNNR = MSEG_WEMPF

  • AND LAND1 NE SPACE

  • AND REGIO NE SPACE.

  • IF SY-SUBRC NE 0.

  • PERFORM ERROR_LOG USING TEXT-017. " No ship-to address

  • EXIT.

  • ELSE.

  • INSERT T_KNA1 INDEX SY-TABIX.

  • ENDIF.

  • ENDIF.

    • V05 - end of insertion

*

    • V05 - start of deletion

    • if sy-subrc = 0.

    • if csks-land1 = space or csks-regio = space. " check cost center

    • perform error_log using text-004." address

    • else.

    • select single * from t900x " retrieve tax rate

    • where land1 = csks-land1 and

    • regio = csks-regio.

    • V05 - end of deletion

*

    • V05 - start of insertion

    • Retrieve tax rate

  • SELECT SINGLE * FROM T900X

  • WHERE LAND1 = T_KNA1-LAND1

  • AND REGIO = T_KNA1-REGIO.

    • V05 - end of inserting

  • IF SY-SUBRC = 0.

  • W_VALID_DATA = 'X'.

  • W_CR_ACCOUNT = T900X-HKONT.

  • ELSE.

  • PERFORM ERROR_LOG USING TEXT-006.

  • ENDIF.

    • endif. V05

    • else. V05

    • perform error_log using text-005. V05

    • endif. V05

DATA: BKPF_AWKEY TYPE AWKEY. "V05

CLEAR W_CR_ACCOUNT.

  • V05 - start of deletion

  • SELECT * FROM CSKS " Validate cost center

  • WHERE KOKRS = P_BUKRS AND

  • KOSTL = T_BSIS-KOSTL AND

  • ( DATBI >= SY-DATUM AND DATAB <= SY-DATUM ) AND

  • BKZKP = ' ' AND

  • BKZKS = ' ' AND

  • BKZER = ' '.

  • EXIT.

  • ENDSELECT.

  • V05 - end of deletion

  • V05 - start of insertion

CLEAR MSEG_WEMPF.

CLEAR IS_KNA1.

  • Read BKPF ( FI document header ) to find reference material document.

  • Check original transaction was delivery create or change (VL01/VL02)

SELECT SINGLE AWKEY INTO BKPF_AWKEY FROM BKPF

WHERE BUKRS = P_BUKRS

AND BELNR = IS2_BSIS-BELNR

AND GJAHR = IS2_BSIS-GJAHR

*Begin V07

  • AND ( TCODE = TCODE1 OR TCODE = TCODE2 ).

AND TCODE LIKE C_TCODE1.

*END V07

IF SY-SUBRC NE 0.

PERFORM ERROR_LOG USING TEXT-015. " not originated from SD

EXIT.

ENDIF.

  • Read material document - only first item because the goods recipient

  • will be the same even if there are multiple items - because the

  • originating document was a delivery doc.

SELECT WEMPF INTO MSEG_WEMPF FROM MSEG UP TO 1 ROWS

WHERE MBLNR = BKPF_AWKEY(10)

AND MJAHR = BKPF_AWKEY+10(4)

AND WEMPF NE SPACE.

ENDSELECT.

IF SY-SUBRC NE 0.

PERFORM ERROR_LOG USING TEXT-016. "no goods recipient

EXIT.

ENDIF.

  • Find ship-to customer and country, state - use internal table to

  • prevent redundant reads from database

READ TABLE IT_KNA1 INTO IS_KNA1

WITH KEY KUNNR = MSEG_WEMPF BINARY SEARCH.

  • if not stored yet collect and save in table

IF SY-SUBRC NE 0.

SELECT SINGLE KUNNR LAND1 REGIO

INTO CORRESPONDING FIELDS OF IS_KNA1

FROM KNA1

WHERE KUNNR = MSEG_WEMPF AND

LAND1 NE SPACE AND

REGIO NE SPACE.

IF SY-SUBRC NE 0.

PERFORM ERROR_LOG USING TEXT-017. " No ship-to address

EXIT.

ELSE.

INSERT IS_KNA1 INTO IT_KNA1 INDEX SY-TABIX.

ENDIF.

ENDIF.

  • V05 - end of insertion

  • V05 - start of deletion

  • if sy-subrc = 0.

  • if csks-land1 = space or csks-regio = space. " check cost center

  • perform error_log using text-004." address

  • else.

  • select single * from t900x " retrieve tax rate

  • where land1 = csks-land1 and

  • regio = csks-regio.

  • V05 - end of deletion

  • V05 - start of insertion

  • Retrieve tax rate

SELECT SINGLE * FROM ZAFGTCR001 INTO IS_ZAFGTCR001

WHERE LAND1 = IS_KNA1-LAND1 AND

REGIO = IS_KNA1-REGIO.

*

    • V05 - end of inserting

*

IF SY-SUBRC = 0.

W_VALID_DATA = C_CHECK.

W_CR_ACCOUNT = IS_ZAFGTCR001-HKONT.

ELSE.

PERFORM ERROR_LOG USING TEXT-006.

ENDIF.

  • endif. V05

  • else. V05

  • perform error_log using text-005. V05

  • endif. V05

ENDFORM. "VALIDATE_LINE_ITEM

----


  • FORM ERROR_LOG *

----


  • Error log *

----


  • --> ERR_MESSAGE : Error message *

----


FORM ERROR_LOG USING ERR_MESSAGE. "#EC

  • W_VALID_DATA = ' '.

**start of pcr 9558

  • CHECK T_KNA1-LAND1 = CON_LAND1.

**end of pcr 9558

  • T_ERROR-COST_CENTER = T_BSIS-KOSTL.

  • T_ERROR-AMOUNT = T_BSIS-AMOUNT.

    • t_error-account = w_cr_account. V05

    • t_error-country = csks-land1. V05

    • t_error-region = csks-regio. V05

  • T_ERROR-COUNTRY = T_KNA1-LAND1. "V05

  • T_ERROR-REGION = T_KNA1-REGIO. "V05

  • T_ERROR-BUKRS = P_BUKRS. "V05

  • T_ERROR-BELNR = T_BSIS-BELNR. "V05

  • T_ERROR-GJAHR = T_BSIS-GJAHR. "V05

  • T_ERROR-KUNNR = MSEG_WEMPF. "V05

  • T_ERROR-WAERS = T_BSIS-WAERS. " UPG45B

  • T_ERROR-MESSAGE = ERR_MESSAGE.

  • APPEND T_ERROR.

W_VALID_DATA = SPACE.

*start of pcr 9558

CHECK IS_KNA1-LAND1 = C_CON_LAND1.

*end of pcr 9558

IS_ERROR-COST_CENTER = IS2_BSIS-KOSTL.

IS_ERROR-AMOUNT = IS2_BSIS-AMOUNT.

  • t_error-account = w_cr_account. V05

  • t_error-country = csks-land1. V05

  • t_error-region = csks-regio. V05

IS_ERROR-COUNTRY = IS_KNA1-LAND1. "V05

IS_ERROR-REGION = IS_KNA1-REGIO. "V05

IS_ERROR-BUKRS = P_BUKRS. "V05

IS_ERROR-BELNR = IS2_BSIS-BELNR. "V05

IS_ERROR-GJAHR = IS2_BSIS-GJAHR. "V05

IS_ERROR-KUNNR = MSEG_WEMPF. "V05

IS_ERROR-WAERS = IS2_BSIS-WAERS. " UPG45B

IS_ERROR-MESSAGE = ERR_MESSAGE.

APPEND IS_ERROR TO IT_ERROR.

ENDFORM. "ERROR_LOG

----


  • FORM SAVE_JV_ITEM *

----


FORM SAVE_JV_ITEM USING POSTKEY_1 POSTKEY_2.

  • CLEAR T_JV_ITEM.

  • T_JV_ITEM-POST_KEY = POSTKEY_1.

  • T_JV_ITEM-ACCOUNT = P_HKONT.

  • T_JV_ITEM-AMOUNT = W_TAX_AMOUNT.

  • T_JV_ITEM-COST_CENTER = T_BSIS-KOSTL.

  • T_JV_ITEM-BUS_AREA = CONST-BUS_AREA.

    • APPEND t_jv_item. V05

  • COLLECT T_JV_ITEM. "V05

*

  • CLEAR T_JV_ITEM.

  • T_JV_ITEM-POST_KEY = POSTKEY_2.

  • T_JV_ITEM-ACCOUNT = W_CR_ACCOUNT.

  • T_JV_ITEM-AMOUNT = W_TAX_AMOUNT.

  • T_JV_ITEM-COST_CENTER = T_BSIS-KOSTL.

  • T_JV_ITEM-BUS_AREA = CONST-BUS_AREA.

    • APPEND t_jv_item. V05

  • COLLECT T_JV_ITEM. "V05

CLEAR IS_JV_ITEM.

IS_JV_ITEM-POST_KEY = POSTKEY_1.

IS_JV_ITEM-ACCOUNT = P_HKONT.

IS_JV_ITEM-AMOUNT = W_TAX_AMOUNT.

IS_JV_ITEM-COST_CENTER = IS2_BSIS-KOSTL.

*begin of change (D08k900809)

  • T_JV_ITEM-BUS_AREA = CONST-BUS_AREA

IS_JV_ITEM-PROFIT_CENTRE = IS_CONST-PROFIT_CENTRE.

  • APPEND t_jv_item. " V05

*end of change (D08k900809)

COLLECT IS_JV_ITEM INTO IT_JV_ITEM. " V05

CLEAR IS_JV_ITEM.

IS_JV_ITEM-POST_KEY = POSTKEY_2.

IS_JV_ITEM-ACCOUNT = W_CR_ACCOUNT.

IS_JV_ITEM-AMOUNT = W_TAX_AMOUNT.

IS_JV_ITEM-COST_CENTER = IS2_BSIS-KOSTL.

*begin of change (D08k900809)

  • T_JV_ITEM-BUS_AREA = CONST-BUS_AREA

IS_JV_ITEM-PROFIT_CENTRE = IS_CONST-PROFIT_CENTRE.

  • APPEND t_jv_item. V05

*end of change (D08k900809)

COLLECT IS_JV_ITEM INTO IT_JV_ITEM. "V05

ENDFORM. "SAVE_JV_ITEM

----


  • FORM PROCESS_BDC *

----


  • Process BDC session *

----


FORM PROCESS_BDC.

  • DATA: W_FIRST TYPE C.

*

  • CLEAR T_JV_ITEM.

    • convert date to MMDDYYYY format

  • MOVE S_BUDAT-HIGH+4(4) TO W_POST_DATE.

  • MOVE S_BUDAT-HIGH0(4) TO W_POST_DATE4(4).

    • store BDC data

  • PERFORM OPEN_BDC_SESSION.

  • PERFORM DYNPRO_0100_HEADER.

  • W_PRE_ACCOUNT = P_HKONT.

  • W_FIRST = 'T'.

  • LOOP AT T_JV_ITEM.

  • PERFORM DYNPRO_ACCOUNT.

  • IF W_FIRST = 'T'. " First record

  • W_FIRST = 'F'.

  • ELSE.

  • PERFORM DYNPRO_CODING_BLOCK.

  • ENDIF.

  • PERFORM DYNPRO_AMOUNT.

  • W_PRE_ACCOUNT = T_JV_ITEM-ACCOUNT.

    • W_PRE_AMOUNT = T_JV_ITEM-AMOUNT.

  • ENDLOOP.

  • PERFORM SAVE_JV. " save JV

  • PERFORM INSERT_BDC. " permanent document

  • PERFORM CLOSE_BDC_SESSION.

    • end of BDC.

DATA: W_FIRST TYPE C.

CLEAR IS_JV_ITEM.

  • convert date to MMDDYYYY format

MOVE S_BUDAT-HIGH+4(4) TO W_POST_DATE.

MOVE S_BUDAT-HIGH0(4) TO W_POST_DATE4(4).

  • store BDC data

PERFORM OPEN_BDC_SESSION.

PERFORM DYNPRO_0100_HEADER.

W_PRE_ACCOUNT = P_HKONT.

W_FIRST = 'T'.

LOOP AT IT_JV_ITEM INTO IS_JV_ITEM.

PERFORM DYNPRO_ACCOUNT.

IF W_FIRST = 'T'. " First record

W_FIRST = 'F'.

ELSE.

PERFORM DYNPRO_CODING_BLOCK.

ENDIF.

PERFORM DYNPRO_AMOUNT.

W_PRE_ACCOUNT = IS_JV_ITEM-ACCOUNT.

  • W_PRE_AMOUNT = T_JV_ITEM-AMOUNT.

ENDLOOP.

PERFORM SAVE_JV. " save JV

PERFORM INSERT_BDC. " permanent document

PERFORM CLOSE_BDC_SESSION.

  • end of BDC.

ENDFORM. "PROCESS_BDC

----


  • FORM SAVE_JV *

----


FORM SAVE_JV.

  • PERFORM DYNPRO_AMOUNT.

PERFORM APPEND_BDC_TABLE USING:

' ' 'BDC_OKCODE' '/11'. " Save

  • PERFORM APPEND_BDC_TABLE USING:

  • 'X' CONST-PROG_CODG CONST-DYN_0002, " popup sc 0002

  • ' ' 'COBL-GSBER' '0106', " bus area

  • ' ' 'BDC_OKCODE' '/8'.

PERFORM APPEND_BDC_TABLE USING:

'X' IS_CONST-PROG_CODG IS_CONST-DYN_0002, " popup sc 0002

' ' 'COBL-GSBER' '0106', " bus area

' ' 'BDC_OKCODE' '/8'.

ENDFORM. "SAVE_JV

----


  • FORM OPEN_BDC_SESSION *

----


FORM OPEN_BDC_SESSION.

  • DATA: W_USER LIKE APQI-USERID. " UPG45B

DATA: W_USER TYPE APQ_MAPN. " UPG45B

MOVE SY-DATUM4(4) TO P_BDCNM8(4).

W_USER = SY-UNAME. " UPG45B

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = P_BDCNM

  • KEEP = 'X'

USER = W_USER. " UPG45B

ENDFORM. "OPEN_BDC_SESSION

*----


FORM DYNPRO_0100_HEADER. " SAPMV05A, Screen 0100, BKPF

*----


  • Initialize most BKPF variables in header screen

  • PERFORM APPEND_BDC_TABLE USING:

  • 'X' CONST-PROG_HEAD CONST-DYN_0100,

  • ' ' 'BKPF-BLDAT' W_POST_DATE, " Document date

  • ' ' 'BKPF-BUDAT' W_POST_DATE, " posting date

  • ' ' 'BKPF-BLART' CONST-DOC_TYPE," document type

  • ' ' 'BKPF-BUKRS' P_BUKRS, " company code

  • ' ' 'BKPF-WAERS' CONST-CURRENCY," currency

  • ' ' 'BKPF-KURSF' CONST-RATE, " rate

  • ' ' 'BKPF-BKTXT' CONST-TEXT_HEAD. " header text

*

  • Initialize most BKPF variables in header screen

PERFORM APPEND_BDC_TABLE USING:

'X' IS_CONST-PROG_HEAD IS_CONST-DYN_0100,

' ' 'BKPF-BLDAT' W_POST_DATE, " Document date

' ' 'BKPF-BUDAT' W_POST_DATE, " posting date

' ' 'BKPF-BLART' IS_CONST-DOC_TYPE, " document type

' ' 'BKPF-BUKRS' P_BUKRS, " company code

' ' 'BKPF-WAERS' IS_CONST-CURRENCY, " currency

' ' 'BKPF-KURSF' IS_CONST-RATE, " rate

' ' 'BKPF-BKTXT' IS_CONST-TEXT_HEAD. " header text

ENDFORM. "DYNPRO_0100_HEADER

*----


FORM DYNPRO_AMOUNT. " SAPMF05A, Screen 0300, for current item

*----


  • DATA AMOUNT(16). "V05

  • AMOUNT = T_JV_ITEM-AMOUNT. "V05

*

  • PERFORM APPEND_BDC_TABLE USING:

  • 'X' CONST-PROG_HEAD CONST-DYN_0300,

    • ' ' 'BSEG-WRBTR' t_jv_item-amount. " amount V05

  • ' ' 'BSEG-WRBTR' AMOUNT. " amount V05

*

DATA AMOUNT(16) TYPE C. "V05

AMOUNT = IS_JV_ITEM-AMOUNT. "V05

PERFORM APPEND_BDC_TABLE USING:

'X' IS_CONST-PROG_HEAD IS_CONST-DYN_0300,

  • ' ' 'BSEG-WRBTR' t_jv_item-amount. " amount V05

' ' 'BSEG-WRBTR' AMOUNT. " amount V05

ENDFORM. "DYNPRO_AMOUNT

*----


FORM DYNPRO_ACCOUNT.

*----


  • PERFORM APPEND_BDC_TABLE USING:

  • ' ' 'RF05A-NEWBS' T_JV_ITEM-POST_KEY, " post key

  • ' ' 'RF05A-NEWKO' T_JV_ITEM-ACCOUNT. " account no

*

PERFORM APPEND_BDC_TABLE USING:

' ' 'RF05A-NEWBS' IS_JV_ITEM-POST_KEY, " post key

' ' 'RF05A-NEWKO' IS_JV_ITEM-ACCOUNT. " account no

ENDFORM. "DYNPRO_ACCOUNT

----


  • FORM DYNPRO_CODING_BLOCK *

----


  • for previous line item account coding block info *

----


FORM DYNPRO_CODING_BLOCK.

  • IF W_PRE_ACCOUNT+2(1) = '7'.

  • PERFORM APPEND_BDC_TABLE USING:

  • 'X' CONST-PROG_CODG CONST-DYN_0002, " popup sc 0002

  • ' ' 'COBL-KOSTL' T_JV_ITEM-COST_CENTER. " bus area

  • ELSE.

  • PERFORM APPEND_BDC_TABLE USING:

  • 'X' CONST-PROG_CODG CONST-DYN_0002, " popup sc 0002

  • ' ' 'COBL-GSBER' '0106'. " bus area

  • ENDIF.

  • PERFORM APPEND_BDC_TABLE USING:

  • ' ' 'BDC_OKCODE' '/8'.

IF W_PRE_ACCOUNT+2(1) = '7'.

PERFORM APPEND_BDC_TABLE USING:

'X' IS_CONST-PROG_CODG IS_CONST-DYN_0002, " popup sc 0002

' ' 'COBL-KOSTL' IS_JV_ITEM-COST_CENTER. " bus area

ELSE.

PERFORM APPEND_BDC_TABLE USING:

'X' IS_CONST-PROG_CODG IS_CONST-DYN_0002, " popup sc 0002

' ' 'COBL-GSBER' '0106'. " bus area

ENDIF.

PERFORM APPEND_BDC_TABLE USING:

' ' 'BDC_OKCODE' '/8'.

ENDFORM. "DYNPRO_CODING_BLOCK

*----


FORM APPEND_BDC_TABLE USING BDC_TAB_DYNBEGIN " append to BDC table

BDC_TAB_NAME

BDC_TAB_VALUE.

*----


  • IF BDC_TAB_DYNBEGIN = 'X'.

  • CLEAR BDC.

  • MOVE : BDC_TAB_DYNBEGIN TO BDC-DYNBEGIN,

  • BDC_TAB_NAME TO BDC-PROGRAM,

  • BDC_TAB_VALUE TO BDC-DYNPRO.

  • APPEND BDC.

  • ELSE.

  • CLEAR BDC.

  • MOVE : BDC_TAB_NAME TO BDC-FNAM,

  • BDC_TAB_VALUE TO BDC-FVAL.

  • APPEND BDC.

  • ENDIF.

IF BDC_TAB_DYNBEGIN = 'X'.

CLEAR IS_BDC.

MOVE : BDC_TAB_DYNBEGIN TO IS_BDC-DYNBEGIN,

BDC_TAB_NAME TO IS_BDC-PROGRAM,

BDC_TAB_VALUE TO IS_BDC-DYNPRO.

APPEND IS_BDC TO IT_BDC.

ELSE.

CLEAR IS_BDC.

MOVE : BDC_TAB_NAME TO IS_BDC-FNAM,

BDC_TAB_VALUE TO IS_BDC-FVAL.

APPEND IS_BDC TO IT_BDC.

ENDIF.

ENDFORM. "APPEND_BDC_TABLE

*----


FORM CLOSE_BDC_SESSION. " close BDC session

*----


CALL FUNCTION 'BDC_CLOSE_GROUP'.

ENDFORM. "CLOSE_BDC_SESSION

*----


FORM INSERT_BDC. " process for transaction FB01

*----


CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'FB01'

TABLES

DYNPROTAB = IT_BDC.

REFRESH IT_BDC.

ENDFORM. "INSERT_BDC

----


  • FORM ERROR_REPORT *

----


  • ........ *

----


FORM ERROR_REPORT.

  • DATA: W_EXT_AMOUNT LIKE T_BSIS-AMOUNT.

DATA: W_EXT_AMOUNT TYPE DMBTR.

  • NEW-PAGE PRINT ON

  • NO DIALOG

    • line-count 65 V05

    • line-size 132 V05

    • layout 'X_65_132' V05

  • LINE-COUNT 58 "V05

  • LINE-SIZE 170 "V05

  • LAYOUT 'X_58_170' "V05

  • NEW LIST IDENTIFICATION 'X'

  • KEEP IN SPOOL 'X'

  • NEW-SECTION

  • IMMEDIATELY P_ERRLP

  • DESTINATION P_DEVICE

  • SAP COVER PAGE 'X'

  • LIST NAME 'ZFGU070'.

*

  • CALL FUNCTION 'GET_PRINT_PARAMETERS'

  • EXPORTING

  • DESTINATION = P_DEVICE

  • IMMEDIATELY = 'X'

  • LAYOUT = 'X_58_170'

  • LINE_COUNT = 58

  • LINE_SIZE = 170

  • LIST_NAME = 'ZFFR070ALV'

  • NEW_LIST_ID = 'X'

  • NO_DIALOG = 'X'

  • SAP_COVER_PAGE = 'X'

*

  • IMPORTING

  • OUT_PARAMETERS = IS_PRI_PARAMS

    • VALID =

    • VALID_FOR_SPOOL_CREATION =

  • EXCEPTIONS

  • ARCHIVE_INFO_NOT_FOUND = 1

  • INVALID_PRINT_PARAMS = 2

  • INVALID_ARCHIVE_PARAMS = 3

  • OTHERS = 4

  • .

  • IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  • ELSE.

  • MOVE-CORRESPONDING IS_PRI_PARAMS TO IS_PRINT.

  • ENDIF.

  • LOOP AT T_ERROR.

  • SELECT * FROM CSKT

  • WHERE SPRAS = 'E' AND

  • KOKRS = P_BUKRS AND

  • KOSTL = T_ERROR-COST_CENTER.

  • ENDSELECT.

*

  • W_EXT_AMOUNT = T_ERROR-AMOUNT * P_NETAMT.

LOOP AT IT_ERROR INTO IS_ERROR.

SELECT * FROM CSKT

INTO IS_CSKT

WHERE SPRAS = C_LANG AND

KOKRS = P_BUKRS AND

KOSTL = IS_ERROR-COST_CENTER.

ENDSELECT.

W_EXT_AMOUNT = IS_ERROR-AMOUNT * P_NETAMT.

MOVE : IS_CSKT-KOSTL TO IS_FINAL_ERROR-COST_CENTER,

IS_CSKT-KTEXT TO IS_FINAL_ERROR-KTEXT,

W_EXT_AMOUNT TO IS_FINAL_ERROR-EXT_AMOUNT,

IS_ERROR-BUKRS TO IS_FINAL_ERROR-BUKRS,

IS_ERROR-BELNR TO IS_FINAL_ERROR-BELNR,

IS_ERROR-GJAHR TO IS_FINAL_ERROR-GJAHR,

IS_ERROR-KUNNR TO IS_FINAL_ERROR-KUNNR,

IS_ERROR-COUNTRY TO IS_FINAL_ERROR-COUNTRY,

IS_ERROR-REGION TO IS_FINAL_ERROR-REGION,

IS_ERROR-MESSAGE TO IS_FINAL_ERROR-MESSAGE.

APPEND IS_FINAL_ERROR TO IT_FINAL_ERROR.

ENDLOOP.

PERFORM BUILD_FIELDCATALOG.

GD_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = GD_REPID

I_CALLBACK_HTML_TOP_OF_PAGE = 'TOP_OF_PAGE'

I_CALLBACK_HTML_END_OF_LIST = 'END_OF_LIST_HTML'

  • I_GRID_TITLE =

  • IS_LAYOUT =

IT_FIELDCAT = IT_FIELDCATALOG

I_SAVE = 'X'

  • IS_PRINT = IS_PRINT

TABLES

T_OUTTAB = IT_FINAL_ERROR[]

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

    • report footer "V05

  • PERFORM RPT-FOOTER(ZZPR001) USING SPACE. "V05

ENDFORM. "ERROR_REPORT

*----


*TOP-OF-PAGE. " Reports

*----


*

  • FORMAT INTENSIFIED ON.

*

    • V05 replace report header - use standard method

    • write:/ text-010, sy-repid, V05

    • 45 text-009. V05

*

    • write:/36 text-011, V05

    • 120 text-008, sy-pagno. V05

*

  • MOVE 'From '(012) TO T3. "V05

  • WRITE S_BUDAT-LOW TO T3+6. "V05

  • MOVE ' To '(013) TO T3+17. "V05

  • WRITE S_BUDAT-HIGH TO T3+22. "V05

*

  • PERFORM RPT-HEADER(ZZPR001) USING "V05

  • 'APPLIED MATERIALS CONFIDENTIAL'(009) "V05

  • 'TAX CALCULATION FOR COST CENTER CONSUMPTION ERROR REPORT'(011)"V05

  • T3 ' '. "V05

    • write: /45 'From '(012), s_budat-low, ' To '(013), s_budat-high. V05

    • skip 2. V05

    • write: / text-007. V05

FORM TOP_OF_PAGE USING CL_DD TYPE REF TO CL_DD_DOCUMENT. "#EC CALLED

DATA: LT_TEXTS TYPE SDYDO_TEXT_TABLE.

DATA: LV_NUMC(8) TYPE N.

DATA: LV_COUNT(255).

DATA: TEXT1(255) TYPE C,

TEXT2(255) TYPE C,

TEXT3(255) TYPE C,

TEXT4(255) TYPE C,

TEXT5(255) TYPE C,

TEXT6(255) TYPE C.

CONCATENATE TEXT-018 SY-CPROG INTO TEXT1.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT1

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->ADD_GAP

EXPORTING

WIDTH = 64.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT-009

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->ADD_GAP

EXPORTING

WIDTH = 96.

CONCATENATE TEXT-019 SY-DATUM INTO TEXT2.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT2

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->NEW_LINE.

CONCATENATE TEXT-020 SY-UNAME INTO TEXT3.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT3

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->ADD_GAP

EXPORTING

WIDTH = 33.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT-011

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->ADD_GAP

EXPORTING

WIDTH = 54.

CONCATENATE TEXT-021 SY-UZEIT INTO TEXT4.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT4

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->NEW_LINE.

CALL METHOD CL_DD->ADD_GAP

EXPORTING

WIDTH = 120.

CONCATENATE TEXT-012 S_BUDAT-LOW TEXT-013 S_BUDAT-HIGH INTO TEXT5.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT5

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

CALL METHOD CL_DD->ADD_GAP

EXPORTING

WIDTH = 100.

DATA PAGENUM TYPE C.

MOVE : SY-PAGNO TO PAGENUM.

CONCATENATE TEXT-008 PAGENUM INTO TEXT6.

CALL METHOD CL_DD->ADD_TEXT

EXPORTING

TEXT = TEXT6

SAP_STYLE = CL_DD_DOCUMENT=>SMALL

SAP_COLOR = CL_DD_DOCUMENT=>LIST_HEADING_INT

SAP_FONTSIZE = CL_DD_DOCUMENT=>SMALL

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG

STYLE_CLASS = SPACE.

ENDFORM. "TOP_OF_PAGE

    • V05 - start of insertion

    • New error report column header

  • WRITE:/ 'CCtr'(H01),

  • 6 'Descr'(H02),

  • 26 'Total Cost'(H03),

  • 43 'Extended Amount'(H04),

  • 60 'Co.C'(H05),

  • 65 'FI doc.'(H06),

  • 76 'Fis.Yr'(H07),

  • 83 'Ship-to'(H08),

  • 94 'Country'(H09),

  • 102 'Region'(H10),

  • 109 'Error message'(H11).

    • V05 - end of insertion

  • ULINE.

FORM BUILD_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'COST_CENTER'.

IS_FIELDCATALOG-SELTEXT_M = 'CCtr'.

IS_FIELDCATALOG-COL_POS = 1.

IS_FIELDCATALOG-OUTPUTLEN = 5.

IS_FIELDCATALOG-DATATYPE = 'CURR'.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'KTEXT'.

IS_FIELDCATALOG-SELTEXT_M = 'Descr'.

IS_FIELDCATALOG-COL_POS = 2.

IS_FIELDCATALOG-OUTPUTLEN = 20.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'AMOUNT'.

IS_FIELDCATALOG-SELTEXT_M = 'Total Cost'.

IS_FIELDCATALOG-COL_POS = 3.

IS_FIELDCATALOG-OUTPUTLEN = 16.

IS_FIELDCATALOG-DATATYPE = 'CURR'.

  • is_fieldcatalog-cfieldname = 'WAERS'.

  • is_fieldcatalog-ctabname = 'BSIS'.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

  • IS_FIELDCATALOG-FIELDNAME = 'W_EXT_AMOUNT'.

  • IS_FIELDCATALOG-SELTEXT_M = 'Extended Amount'.

  • IS_FIELDCATALOG-COL_POS = 4.

  • IS_FIELDCATALOG-OUTPUTLEN = 16.

  • IS_FIELDCATALOG-DATATYPE = 'CURR'.

  • is_fieldcatalog-cfieldname = 'DMBTR'.

  • is_fieldcatalog-ctabname = 'BSIS'.

  • IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

<b> IS_FIELDCATALOG-FIELDNAME = 'W_EXT_AMOUNT'.

IS_FIELDCATALOG-SELTEXT_M = 'Extended Amount'.

IS_FIELDCATALOG-COL_POS = 4.

IS_FIELDCATALOG-REF_FIELDNAME = 'WAERS'.

IS_FIELDCATALOG-REF_TABNAME = 'T001'.

IS_FIELDCATALOG-DDICTXT = 'M'.

IS_FIELDCATALOG-CFIELDNAME = 'DMBTR'.

IS_FIELDCATALOG-CTABNAME = 'BSIS'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.</b>

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'BUKRS'.

IS_FIELDCATALOG-SELTEXT_M = 'Co.C'.

IS_FIELDCATALOG-COL_POS = 5.

IS_FIELDCATALOG-OUTPUTLEN = 4.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'BELNR'.

IS_FIELDCATALOG-SELTEXT_M = 'FI doc.'.

IS_FIELDCATALOG-COL_POS = 6.

IS_FIELDCATALOG-OUTPUTLEN = 10.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'GJAHR'.

IS_FIELDCATALOG-SELTEXT_M = 'Fis.Yr'.

IS_FIELDCATALOG-COL_POS = 7.

IS_FIELDCATALOG-OUTPUTLEN = 6.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'KUNNR'.

IS_FIELDCATALOG-SELTEXT_M = 'Ship-to'.

IS_FIELDCATALOG-COL_POS = 8.

IS_FIELDCATALOG-OUTPUTLEN = 10.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'COUNTRY'.

IS_FIELDCATALOG-SELTEXT_M = 'Country'.

IS_FIELDCATALOG-COL_POS = 9.

IS_FIELDCATALOG-OUTPUTLEN = 7.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'REGION'.

IS_FIELDCATALOG-SELTEXT_M = 'Region'.

IS_FIELDCATALOG-COL_POS = 10.

IS_FIELDCATALOG-OUTPUTLEN = 6.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'MESSAGE'.

IS_FIELDCATALOG-SELTEXT_M = 'Error message'.

IS_FIELDCATALOG-COL_POS = 11.

IS_FIELDCATALOG-OUTPUTLEN = 60.

IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

ENDFORM. "build_fieldcatalog

&----


*& Form end_of_list_html

&----


  • text

----


  • -->END text

----


FORM END_OF_LIST_HTML USING END TYPE REF TO CL_DD_DOCUMENT.

DATA: LS_TEXT TYPE SDYDO_TEXT_ELEMENT,

L_GRID TYPE REF TO CL_GUI_ALV_GRID,

F(14) TYPE C VALUE 'SET_ROW_HEIGHT'.

LS_TEXT = TEXT-022.

  • adds test (via variable)

CALL METHOD END->ADD_TEXT

EXPORTING

TEXT = LS_TEXT

SAP_EMPHASIS = 'strong'.

  • adds new line (start new line)

CALL METHOD END->NEW_LINE.

*set height of this section

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

IMPORTING

E_GRID = L_GRID.

CALL METHOD L_GRID->PARENT->PARENT->(F)

EXPORTING

ID = 3

HEIGHT = 6.

ENDFORM. "end_of_list_html.

2 REPLIES 2

former_member215188
Participant
0 Kudos

Are you talking about the commented field 'w_ext_amount'? Seems like the next field already has the same name... you could post the actual dump, it'll be easier to figure out your problem.

  • IS_FIELDCATALOG-FIELDNAME = 'W_EXT_AMOUNT'.

  • IS_FIELDCATALOG-SELTEXT_M = 'Extended Amount'.

  • IS_FIELDCATALOG-COL_POS = 4.

  • IS_FIELDCATALOG-OUTPUTLEN = 16.

  • IS_FIELDCATALOG-DATATYPE = 'CURR'.

  • is_fieldcatalog-cfieldname = 'DMBTR'.

  • is_fieldcatalog-ctabname = 'BSIS'.

  • IS_FIELDCATALOG-JUST = 'C'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

IS_FIELDCATALOG-FIELDNAME = 'W_EXT_AMOUNT'.

IS_FIELDCATALOG-SELTEXT_M = 'Extended Amount'.

IS_FIELDCATALOG-COL_POS = 4.

IS_FIELDCATALOG-REF_FIELDNAME = 'WAERS'.

IS_FIELDCATALOG-REF_TABNAME = 'T001'.

IS_FIELDCATALOG-DDICTXT = 'M'.

IS_FIELDCATALOG-CFIELDNAME = 'DMBTR'.

IS_FIELDCATALOG-CTABNAME = 'BSIS'.

APPEND IS_FIELDCATALOG TO IT_FIELDCATALOG.

CLEAR IS_FIELDCATALOG.

Former Member
0 Kudos

Hi Cruz,

I am sending you the code that i modifed and the dump . I am getting the output but when i press print button the spool is not generated but it is going to dump. When i obsered the point where it is going to dump it is the program written by SAP.

is_FIELDCATALOG-FIELDNAME = 'W_EXT_AMOUNT'.

is_FIELDCATALOG-SELTEXT_M = 'Extended Amount'.

is_FIELDCATALOG-COL_POS = 4.

  • is_FIELDCATALOG-DO_SUM = 'X'.

  • IS_FIELDCATALOG-OUTPUTLEN = 16.

IS_FIELDCATALOG-DO_SUM = 'X'.

is_FIELDCATALOG-REF_FIELDNAME = 'WAERS'.

is_FIELDCATALOG-REF_TABNAME = 'T001'.

is_FIELDCATALOG-ddictxt = 'M'.

IS_FIELDCATALOG-CFIELDNAME = 'DMBTR'.

is_fieldcatalog-ctabname = 'BSIS'.

APPEND is_FIELDCATALOG TO it_FIELDCATALOG.

CLEAR is_FIELDCATALOG.

DUMP analysis.

What happened?

Error in the ABAP Application Program

The current ABAP program "SAPLKKBL" had to be terminated because

come across a statement that unfortunately cannot be executed.

You attempted to access an unassigned field symbol

(data segment 95).

This error may occur if

- You address a typed field symbol before it has been set with

ASSIGN

- You address a field symbol that pointed to the line of an

internal table that was deleted

- You address a field symbol that was previously reset using

UNASSIGN or that pointed to a local field that no

longer exists

- You address a global function interface, although the

respective function module is not active - that is, is

not in the list of active calls. The list of active calls

can be taken from this short dump.

SourceCde

2785 case gs_out-field_colcount.

2786 when 001.

2787 if gs_out_flags-slave ne 'X'.

2788 assign <fm01> to <field>.

2789 gs_fc = gs_mfc01.

2790 else.

2791 assign <fs01> to <field>.

2792 gs_fc = gs_sfc01.

2793 endif.

2794 when 002.

2795 if gs_out_flags-slave ne 'X'.

2796 assign <fm02> to <field>.

2797 gs_fc = gs_mfc02.

2798 else.

2799 assign <fs02> to <field>.

2800 gs_fc = gs_sfc02.

2801 endif.

2802 when 003.

2803 if gs_out_flags-slave ne 'X'.

2804 assign <fm03> to <field>.

2805 gs_fc = gs_mfc03.

2806 else.

2807 assign <fs03> to <field>.

2808 gs_fc = gs_sfc03.

2809 endif.

2810 when 004.

2811 if gs_out_flags-slave ne 'X'.

<b>>>>> assign <fm04> to <field>.</b>2813 gs_fc = gs_mfc04.

2814 else.

2815 assign <fs04> to <field>.

2816 gs_fc = gs_sfc04.

2817 endif.