Application Development and Automation 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: 
Read only

Forms

Former Member
0 Likes
646

Hi,

I want the sales order details to be displayed for a particular customer in the main window. I want each page total and atlast i want the total sum for this one. Plz let me know how to get that.

PARAMETERS:

P_KUNNR TYPE KUNNR.

TYPES:

BEGIN OF TY_KNA1,

KUNNR TYPE KNA1-KUNNR,

LAND1 TYPE KNA1-LAND1,

NAME1 TYPE KNA1-NAME1,

ORT01 TYPE KNA1-ORT01,

END OF TY_KNA1,

BEGIN OF TY_VBAK,

VBELN TYPE VBAK-VBELN,

AUDAT TYPE VBAK-AUDAT,

AUART TYPE VBAK-AUART,

NETWR TYPE VBAK-NETWR,

END OF TY_VBAK.

DATA:

STKNA1 TYPE TY_KNA1,

STVBAK TYPE TY_VBAK,

ITVBAK TYPE TABLE OF TY_VBAK.

START-OF-SELECTION.

SELECT SINGLE KUNNR LAND1 NAME1 ORT01

FROM KNA1 INTO STKNA1

WHERE KUNNR EQ P_KUNNR.

IF SY-SUBRC EQ 0.

SELECT VBELN AUDAT AUART NETWR

FROM VBAK INTO TABLE ITVBAK

WHERE KUNNR EQ P_KUNNR.

ENDIF.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'ZFRM1'

LANGUAGE = SY-LANGU

  • OPTIONS =

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJECT =

  • RAW_DATA_INTERFACE = '*'

  • SPONUMIV =

  • IMPORTING

  • LANGUAGE =

  • NEW_ARCHIVE_PARAMS =

  • RESULT =

  • EXCEPTIONS

  • CANCELED = 1

  • DEVICE = 2

  • FORM = 3

  • OPTIONS = 4

  • UNCLOSED = 5

  • MAIL_OPTIONS = 6

  • ARCHIVE_ERROR = 7

  • INVALID_FAX_NUMBER = 8

  • MORE_PARAMS_NEEDED_IN_BATCH = 9

  • SPOOL_ERROR = 10

  • CODEPAGE = 11

  • OTHERS = 12

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

LOOP AT ITVBAK INTO STVBAK.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'E'

FUNCTION = 'SET'

TYPE = 'BODY'

WINDOW = 'MAIN'.

  • IMPORTING

  • PENDING_LINES =

  • EXCEPTIONS

  • ELEMENT = 1

  • FUNCTION = 2

  • TYPE = 3

  • UNOPENED = 4

  • UNSTARTED = 5

  • WINDOW = 6

  • BAD_PAGEFORMAT_FOR_PRINT = 7

  • SPOOL_ERROR = 8

  • CODEPAGE = 9

  • OTHERS = 10

ENDLOOP.

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

CALL FUNCTION 'CLOSE_FORM'

  • IMPORTING

  • RESULT =

  • RDI_RESULT =

  • TABLES

  • OTFDATA =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SEND_ERROR = 3

  • SPOOL_ERROR = 4

  • CODEPAGE = 5

  • OTHERS = 6

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

Thanks

Ram

1 ACCEPTED SOLUTION
Read only

varma_narayana
Active Contributor
0 Likes
555

Hi ..

And one more thing ..

You should also make the Changes in PRINT PROGRAM AS BELOW.

PARAMETERS:

P_KUNNR TYPE KUNNR.

TYPES:

BEGIN OF TY_KNA1,

KUNNR TYPE KNA1-KUNNR,

LAND1 TYPE KNA1-LAND1,

NAME1 TYPE KNA1-NAME1,

ORT01 TYPE KNA1-ORT01,

END OF TY_KNA1,

BEGIN OF TY_VBAK,

VBELN TYPE VBAK-VBELN,

AUDAT TYPE VBAK-AUDAT,

AUART TYPE VBAK-AUART,

NETWR TYPE VBAK-NETWR,

END OF TY_VBAK.

DATA:

STKNA1 TYPE TY_KNA1,

STVBAK TYPE TY_VBAK,

ITVBAK TYPE TABLE OF TY_VBAK.

START-OF-SELECTION.

SELECT SINGLE KUNNR LAND1 NAME1 ORT01

FROM KNA1 INTO STKNA1

WHERE KUNNR EQ P_KUNNR.

IF SY-SUBRC EQ 0.

SELECT VBELN AUDAT AUART NETWR

FROM VBAK INTO TABLE ITVBAK

WHERE KUNNR EQ P_KUNNR.

ENDIF.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'ZFRM1'

LANGUAGE = SY-LANGU

  • OPTIONS =

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJECT =

  • RAW_DATA_INTERFACE = '*'

  • SPONUMIV =

  • IMPORTING

  • LANGUAGE =

  • NEW_ARCHIVE_PARAMS =

  • RESULT =

  • EXCEPTIONS

  • CANCELED = 1

  • DEVICE = 2

  • FORM = 3

  • OPTIONS = 4

  • UNCLOSED = 5

  • MAIL_OPTIONS = 6

  • ARCHIVE_ERROR = 7

  • INVALID_FAX_NUMBER = 8

  • MORE_PARAMS_NEEDED_IN_BATCH = 9

  • SPOOL_ERROR = 10

  • CODEPAGE = 11

  • OTHERS = 12

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

LOOP AT ITVBAK INTO STVBAK.

<b>CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'ELE_TOP'

FUNCTION = 'SET'

TYPE = 'TOP'

WINDOW = 'MAIN'.</b>

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'E'

FUNCTION = 'SET'

TYPE = 'BODY'

WINDOW = 'MAIN'.

  • IMPORTING

  • PENDING_LINES =

  • EXCEPTIONS

  • ELEMENT = 1

  • FUNCTION = 2

  • TYPE = 3

  • UNOPENED = 4

  • UNSTARTED = 5

  • WINDOW = 6

  • BAD_PAGEFORMAT_FOR_PRINT = 7

  • SPOOL_ERROR = 8

  • CODEPAGE = 9

  • OTHERS = 10 .

<b>CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = ' '

FUNCTION = 'SET'

TYPE = 'BOTTOM'

WINDOW = 'MAIN'.</b>

ENDLOOP.

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

CALL FUNCTION 'CLOSE_FORM'

  • IMPORTING

  • RESULT =

  • RDI_RESULT =

  • TABLES

  • OTFDATA =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SEND_ERROR = 3

  • SPOOL_ERROR = 4

  • CODEPAGE = 5

  • OTHERS = 6

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

4 REPLIES 4
Read only

varma_narayana
Active Contributor
0 Likes
555

Hi..

You can Acheive this by calling Subroutine from Layout set.

Detailed procedure:

1. IN THE LAYOUT SET MAIN WINDOW

/: TOP

/E ELE_TOP

/: DEFINE &PAGE_TOTAL& = '0'

/: ENDTOP

/: MAIN

/E E

/: PERFORM GET_PAGE_TOTAL IN PROGRAM <YOUR PRINT PROGRAM>

/: USING &STVBAK-NETWR&

/: CHANGING &PAGE_TOTAL&

/: ENDPERFORM

/: BOTTOM

  • 'Page total for NETWR = ' , &PAGE_TOTAL&

/: ENDBOTTOM

<b>CREATE THIS SUBROTINE IN YOUR PROGRAM</b>

FORM GET_PAGE_TOTAL

TABLE INTAB STRUCTURE ITCSY

OUTTAB STRUCTURE ITCSY.

DATA : L_AMT TYPE P DECIMALS 2,

L_TOTAL TYPE P DECIMALS 2.

Read Table INTAB with KEY NAME = 'STVBAK-NETWR'.

IF SY-SUBRC = 0.

L_AMT = INTAB-VALUE.

ENDIF.

Read Table OUTTAB with KEY NAME = 'PAGE_TOTAL'.

IF SY-SUBRC = 0.

L_TOTAL = OUTTAB-VALUE.

ADD L_AMT TO L_TOTAL.

WRITE L_TOTAL TO OUTTAB-VALUE LEFT-JUSTIFIED.

MODIFY OUTTAB INDEX SY-TABIX.

ENDIF.

ENDFORM.

<b>Reward if Helpful</b>

Read only

former_member188827
Active Contributor
0 Likes
555

one solution i can think of rite now is to split ur data into multiple internal tables and print sum at end.

start printing data of ur next internal table from new page(i.e apply page break at end of each internal table data).

for grand total sum the totals of all internal tables..

u can split ur internal table on the basis of sy-tabix..first read sy-tabix of ur origninal internal table and then move data from sy-tabix 1 to say 30 to 1st internal table, 31 to 60 to second internal table and so on....

Read only

varma_narayana
Active Contributor
0 Likes
556

Hi ..

And one more thing ..

You should also make the Changes in PRINT PROGRAM AS BELOW.

PARAMETERS:

P_KUNNR TYPE KUNNR.

TYPES:

BEGIN OF TY_KNA1,

KUNNR TYPE KNA1-KUNNR,

LAND1 TYPE KNA1-LAND1,

NAME1 TYPE KNA1-NAME1,

ORT01 TYPE KNA1-ORT01,

END OF TY_KNA1,

BEGIN OF TY_VBAK,

VBELN TYPE VBAK-VBELN,

AUDAT TYPE VBAK-AUDAT,

AUART TYPE VBAK-AUART,

NETWR TYPE VBAK-NETWR,

END OF TY_VBAK.

DATA:

STKNA1 TYPE TY_KNA1,

STVBAK TYPE TY_VBAK,

ITVBAK TYPE TABLE OF TY_VBAK.

START-OF-SELECTION.

SELECT SINGLE KUNNR LAND1 NAME1 ORT01

FROM KNA1 INTO STKNA1

WHERE KUNNR EQ P_KUNNR.

IF SY-SUBRC EQ 0.

SELECT VBELN AUDAT AUART NETWR

FROM VBAK INTO TABLE ITVBAK

WHERE KUNNR EQ P_KUNNR.

ENDIF.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'ZFRM1'

LANGUAGE = SY-LANGU

  • OPTIONS =

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJECT =

  • RAW_DATA_INTERFACE = '*'

  • SPONUMIV =

  • IMPORTING

  • LANGUAGE =

  • NEW_ARCHIVE_PARAMS =

  • RESULT =

  • EXCEPTIONS

  • CANCELED = 1

  • DEVICE = 2

  • FORM = 3

  • OPTIONS = 4

  • UNCLOSED = 5

  • MAIL_OPTIONS = 6

  • ARCHIVE_ERROR = 7

  • INVALID_FAX_NUMBER = 8

  • MORE_PARAMS_NEEDED_IN_BATCH = 9

  • SPOOL_ERROR = 10

  • CODEPAGE = 11

  • OTHERS = 12

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

LOOP AT ITVBAK INTO STVBAK.

<b>CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'ELE_TOP'

FUNCTION = 'SET'

TYPE = 'TOP'

WINDOW = 'MAIN'.</b>

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = 'E'

FUNCTION = 'SET'

TYPE = 'BODY'

WINDOW = 'MAIN'.

  • IMPORTING

  • PENDING_LINES =

  • EXCEPTIONS

  • ELEMENT = 1

  • FUNCTION = 2

  • TYPE = 3

  • UNOPENED = 4

  • UNSTARTED = 5

  • WINDOW = 6

  • BAD_PAGEFORMAT_FOR_PRINT = 7

  • SPOOL_ERROR = 8

  • CODEPAGE = 9

  • OTHERS = 10 .

<b>CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = ' '

FUNCTION = 'SET'

TYPE = 'BOTTOM'

WINDOW = 'MAIN'.</b>

ENDLOOP.

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

CALL FUNCTION 'CLOSE_FORM'

  • IMPORTING

  • RESULT =

  • RDI_RESULT =

  • TABLES

  • OTFDATA =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SEND_ERROR = 3

  • SPOOL_ERROR = 4

  • CODEPAGE = 5

  • OTHERS = 6

.

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 only

former_member188827
Active Contributor
0 Likes
555

if narayana solution works, it wud b a better option