cancel
Showing results for 
Search instead for 
Did you mean: 

Regarding the EPC check of the Subroutine program of SAP script

Former Member
0 Kudos

Hi:

I've made a subrouting program to be called in sap script printing.This program is showing a lot of errors in EPC check.I'm putting the code below.Please help me out to clean EPC/SLIN.

&----


*& Form GET_SGL_ACCOUNT

&----


  • Read the SGL ACCOUNT No..

----


  • -->IN_TAB text

  • -->OUT_TAB text

----


FORM GET_SGL_ACCOUNT TABLES in_tab STRUCTURE itcsy out_tab STRUCTURE itcsy.

DATA : L_BUKRS TYPE VTBFHAZU-BUKRS,

L_RFHA TYPE VTBFHAZU-RFHA ,

L_NORDEXT TYPE VTBFHAZU-NORDEXT,

L_SGSART TYPE VTBFHAZU-SGSART,

L_SFHAART TYPE VTBFHAZU-SFHAART,

L_XTEXT TYPE AT10T-XTEXT,

L_RPORTB TYPE VTBFHA-RPORTB,

L_XPORTB TYPE TWPOB-XPORTB,

L_DELFZ TYPE VTBFHAZU-DELFZ,

L_DELFZ1 TYPE VTBFHAZU-DELFZ,

L_BZBETR TYPE VTBFHAPO-BZBETR,

L_DVTRAB TYPE VTBFHAZU-DVTRAB,

L_DVTRAB1 TYPE VTBFHAZU-DVTRAB,

L_DBLFZ TYPE VTBFHAZU-DBLFZ,

L_DBLFZ1 TYPE VTBFHAZU-DBLFZ,

L_RDEALER TYPE VTBFHAZU-RDEALER,

L_NAME_ORG1 TYPE BUT000-NAME_ORG1,

L_MERKM TYPE VTBFHA-MERKM,

L_REFER TYPE VTBFHA-REFER,

L_GSPPART TYPE VTBFHAZU-GSPPART,

L_BZBETR1 TYPE VTBFHAPO-BZBETR,

L_BZBETR2 TYPE VTBFHAPO-BZBETR,

L_BZBETR3 TYPE VTBFHAPO-BZBETR,

L_BZBETR4 TYPE VTBFHAPO-BZBETR,

L_BZBETR5 TYPE VTBFHAPO-BZBETR.

DATA : L_WORDS TYPE SPELL.

CONSTANTS : C_SFHAZBA TYPE VTBFHAPO-SFHAZBA VALUE '1120'.

CONSTANTS : C_SFHAZBA1 TYPE VTBFHAPO-SFHAZBA VALUE '9500'.

CONSTANTS : C_SFHAZBA2 TYPE VTBFHAPO-SFHAZBA VALUE '9502'.

CONSTANTS : C_RFHAZU TYPE VTBFHAPO-RFHAZU VALUE '00001'.

READ TABLE in_tab INDEX 1 .

L_BUKRS = IN_TAB-VALUE.

READ TABLE in_tab INDEX 2 .

L_RFHA = IN_TAB-VALUE.

SELECT SINGLE NORDEXT FROM VTBFHAZU INTO L_NORDEXT

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE out_tab WITH KEY NAME = 'NORDEXT' .

MOVE L_NORDEXT TO out_tab-value.

MODIFY out_tab INDEX 1.

SELECT SINGLE SGSART FROM VTBFHAZU INTO L_SGSART

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'SGSART' .

MOVE L_SGSART TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 2.

SELECT SINGLE SFHAART FROM VTBFHAZU INTO L_SFHAART

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'SFHAART' .

MOVE L_SFHAART TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 3.

SELECT SINGLE XTEXT FROM AT10T INTO L_XTEXT

WHERE SGSART = L_SGSART

AND SFHAART = L_SFHAART

AND SPRAS = SY-LANGU.

READ TABLE OUT_TAB WITH KEY NAME = 'XTEXT' .

MOVE L_XTEXT TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 4.

SELECT SINGLE RPORTB FROM VTBFHA INTO L_RPORTB

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'RPORTB' .

MOVE L_RPORTB TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 5.

SELECT SINGLE XPORTB FROM TWPOB INTO L_XPORTB

WHERE BUKRS = L_BUKRS

AND RPORTB = L_RPORTB.

READ TABLE OUT_TAB WITH KEY NAME = 'XPORTB' .

MOVE L_XPORTB TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 6.

SELECT SINGLE DELFZ FROM VTBFHAZU INTO L_DELFZ

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

WRITE L_DELFZ TO L_DELFZ1 DD/MM/YY.

READ TABLE OUT_TAB WITH KEY NAME = 'DELFZ' .

MOVE L_DELFZ1 TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 7.

SELECT SINGLE BZBETR FROM VTBFHAPO INTO L_BZBETR

WHERE RFHA = L_RFHA

AND SFHAZBA = C_SFHAZBA.

READ TABLE OUT_TAB WITH KEY NAME = 'BZBETR' .

MOVE L_BZBETR TO OUT_TAB-VALUE.

CONDENSE OUT_TAB-VALUE NO-GAPS.

MODIFY OUT_TAB INDEX 8.

SELECT SINGLE DVTRAB FROM VTBFHAZU INTO L_DVTRAB

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

WRITE L_DVTRAB TO L_DVTRAB1 DD/MM/YY.

READ TABLE OUT_TAB WITH KEY NAME = 'DVTRAB' .

MOVE L_DVTRAB1 TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 9.

SELECT SINGLE DBLFZ FROM VTBFHAZU INTO L_DBLFZ

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

WRITE L_DBLFZ TO L_DBLFZ1 DD/MM/YY.

READ TABLE OUT_TAB WITH KEY NAME = 'DBLFZ' .

MOVE L_DBLFZ1 TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 10.

SELECT SINGLE RDEALER FROM VTBFHAZU INTO L_RDEALER

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'RDEALER' .

MOVE L_RDEALER TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 11.

SELECT SINGLE NAME_ORG1 FROM BUT000 INTO L_NAME_ORG1

WHERE BU_SORT1 = L_RDEALER.

READ TABLE OUT_TAB WITH KEY NAME = 'NAME_ORG1' .

MOVE L_NAME_ORG1 TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 12.

SELECT SINGLE MERKM FROM VTBFHA INTO L_MERKM

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'MERKM' .

MOVE L_merkm TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 13.

SELECT SINGLE REFER FROM VTBFHA INTO L_REFER

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'REFER' .

MOVE L_REFER TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 14.

SELECT SINGLE GSPPART FROM VTBFHAZU INTO L_GSPPART

WHERE BUKRS = L_BUKRS

AND RFHA = L_RFHA.

READ TABLE OUT_TAB WITH KEY NAME = 'GSPPART' .

MOVE L_GSPPART TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 15.

SELECT SINGLE BZBETR FROM VTBFHAPO INTO L_BZBETR1

WHERE SFHAZBA = C_SFHAZBA1

AND RFHAZU = C_RFHAZU.

READ TABLE OUT_TAB WITH KEY NAME = 'BZBETR1' .

MOVE L_BZBETR1 TO OUT_TAB-VALUE.

CONDENSE OUT_TAB-VALUE NO-GAPS.

MODIFY OUT_TAB INDEX 16.

SELECT SINGLE BZBETR FROM VTBFHAPO INTO L_BZBETR2

WHERE SFHAZBA = C_SFHAZBA2

AND RFHAZU = C_RFHAZU.

READ TABLE OUT_TAB WITH KEY NAME = 'BZBETR2' .

MOVE L_BZBETR2 TO OUT_TAB-VALUE.

CONDENSE OUT_TAB-VALUE NO-GAPS.

MODIFY OUT_TAB INDEX 17.

SELECT SINGLE BZBETR FROM VTBFHAPO INTO L_BZBETR3

WHERE SFHAZBA = '1100'

AND RFHAZU = '00001'.

L_BZBETR3 = ( L_BZBETR3 ) + ( L_BZBETR1 ) - ( L_BZBETR2 ).

READ TABLE OUT_TAB WITH KEY NAME = 'BZBETR3' .

MOVE L_BZBETR3 TO OUT_TAB-VALUE.

CONDENSE OUT_TAB-VALUE NO-GAPS.

MODIFY OUT_TAB INDEX 18.

SELECT SINGLE BZBETR FROM VTBFHAPO INTO L_BZBETR4

WHERE SFHAZBA = '9503'

AND SSIGN = '-'.

READ TABLE OUT_TAB WITH KEY NAME = 'BZBETR4' .

MOVE L_BZBETR4 TO OUT_TAB-VALUE.

MODIFY OUT_TAB INDEX 19.

L_BZBETR5 = L_BZBETR4 + L_BZBETR3.

READ TABLE OUT_TAB WITH KEY NAME = 'BZBETR5' .

MOVE L_BZBETR5 TO OUT_TAB-VALUE.

CONDENSE OUT_TAB-VALUE NO-GAPS.

MODIFY OUT_TAB INDEX 20.

CALL FUNCTION 'Z006_SPELL_AMOUNT'

EXPORTING

AMOUNT = L_BZBETR5

CURRENCY = 'INR'

LANGUAGE = SY-LANGU

IMPORTING

IN_WORDS = L_WORDS

EXCEPTIONS

TOO_LARGE = 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.

READ TABLE out_tab WITH KEY NAME = 'WORDS' .

MOVE l_words-word TO out_tab-value.

MODIFY out_tab INDEX 21.

ENDFORM. "FORM GET_SGL_ACCOUNT

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

Currently i may not check the table in sap but do check the following things which will be pointed in EPC:

1. Naming convention (Local variables).

2. When select single is used all the primary keys should be used in the where clause else do select and end select with up to 1 rows.

3. Do use the Write to stmt for char types. character fields (types C, D, N, T, or X). you should not use a target field with a numeric data type (F, I , or P).

4. Check the FM import and Export parameters.

Br,

Laxmi.