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

Dialog program with 2 tables.

Former Member
0 Likes
1,029

Hello everyone,

I am new to dialog programming. I am using 2 tables( vbak, vbap) and 3 internal tables ITAB1, ITAB2 & ITAB. I am putting the required data in from vbak & vbap in2 itab1 & itab2 and putting the data in itab.

iam using 2 screens 100 and 200. In 100 iam inputting a value (vbak-vbeln) and when push a button get details trying to display the data in table of screen 200.

The code below is working if i only use single itab but throwing an error if using in above said fashion.

Can anyone help with me as to where iam going wrong.

Thnaks in advance.

<u>Code</u>

PROGRAM zdia_table

tables : vbak. vbap.

Data: BEGIN OF ITAB1 OCCURS 0.

VBELN LIKE VBAK-VBELN,

AUDAT LIKE VBAK-AUDAT,

KUNNR LIKE VBAK-KUNNR,

DATA: END OF ITAB1.

Data: BEGIN OF ITAB2 OCCURS 0.

VBELN LIKE VBAP-VBELN,

ZMENG LIKE VBAP-ZMENG,

NETWR LIKE VBAP-NETWR,

DATA: END OF ITAB2.

DATA: BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAK-VBELN,

AUDAT LIKE VBAK-AUDAT,

KUNNR LIKE VBAK-KUNNR,

ZMENG LIKE VBAP-ZMENG,

NETWR LIKE VBAP-NETWR,

DATA: END OF ITAB.

&----


*& MODULE STATUS_0100 OUTPUT

&----


TEXT

&----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'XXXXXXX'.

*SET TITLEBAR 'XXX'.

ENDMODULE. "STATUS_0100 OUTPUT

&----


*& MODULE STATUS_0100 INPUT

&----


TEXT

&----


MODULE STATUS_0100 INPUT.

IF SY-UCOMM = 'GET'.

SELECT VBELN AUDAT KUNNR

FROM VBAK

INTO CORRESPONDING FIELDS OF TABLE ITAB1

WHERE VBELN = VBAK-VBELN.

SELECT VBELN ZMENG NETWR

FROM VBAP

INTO CORRESPONDING FIELDS OF TABLE ITAB2

FOR ALL ENTERIES IN ITAB1

WHERE VBELN = ITAB1-VBELN.

LOOP AT ITAB1.

LOOP AT ITAB2 WHERE VBELN = ITAB1-VBELN.

MOVE ITAB1-VBELN TO ITAB-VBELN.

MOVE ITAB1-AUDAT TO ITAB-AUDAT.

MOVE ITAB1-KUNNR TO ITAB-KUNNR.

MOVE ITAB2-NETWR TO ITAB-NETWR.

MOVE ITAB2-ZMENG TO ITAB-ZMENG.

APPEND ITAB.

CLEAR ITAB.

ENDLOOP.

ENDLOOP.

IF SY-SYBRC = 0.

CALL SCREEN 200.

ENDIF.

ENDIF.

&----


*& MODULE STATUS_0200 OUTPUT

&----


TEXT

&----


MODULE STATUS_0200 OUTPUT.

SET PF-STATUS 'XXXXXXX'.

*SET TITLEBAR 'XXX'.

ENDMODULE. "STATUS_0200 OUTPUT

&----


*& MODULE DISPLAY_DATA OUTPUT

&----


TEXT

&----


MOVE ITAB-VBELN TO VBAK-VBELN.

MOVE ITAB-AUDAT TO VBAK-AUDAT.

MOVE ITAB-KUNNR TO VBAK-KUNNR.

MOVE ITAB-NETWR TO VBAK-NETWR.

MOVE ITAB-ZMENG TO VBAK-ZMENG.

ENDMODULE. "DISPLAY_DATA OUTPUT

*----


SCREEN1 LOGIC

*----


PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

*----


SCREEN2 LOGIC

*----


PROCESS BEFORE OUTPUT.

MODULE STATUS_0200.

LOOP AT ITAB WITH CONTROL TAB_CNTL

CURSOR TAB_CNTL-CURRENT_LINE.

MODULE DISPLAY_DATA.

ENDLOOP.

PROCESS AFTER INPUT.

*MODULE USER_COMMAND_0200.

LOOP AT ITAB.

ENDLOOP.

9 REPLIES 9
Read only

Former Member
0 Likes
989

What error are you getting?

Read only

Former Member
0 Likes
989

When i execute the program( using Tcode) iam getting the first screen. After entering the number(vbak-vbeln) and push the get details buttion it directly taking me to Short Dump. It dosnt giving me much details, but the error pointer pointing at the line..

-


> ENDMODULE. "STATUS_0200 OUTPUT.

Thank you.

Read only

0 Likes
989

The Statement <b>SET PF-STATUS 'XXXXXXX'.</b> is probably the problem.

Create a Status for the detail screen and use that instead of 'XXXXXXX' or simply comment the line to get rid of the short dump.

Rishi

Read only

0 Likes
989

i did created the status. As i mentioned earlier another program if iam using single ITAB with vbak table, its working.The thing is i want to equate the 'vbeln' from both the tables and if the duplicate exists for that record i like to display all the records and said field details from both the tables.

Read only

Former Member
0 Likes
989

add

CONTROLS: TAB_CNTL TYPE TABLEVIEW USING SCREEN 0200.

after your data declarations.

seems like the dump is because the table control is not defined.

Rishi

Read only

0 Likes
989

Thank you.

But i think i missed out to put that line when posting the problem. But in the program iam using that line just after declaring the tables.

Thanks anyway for reminding me about that line.Any more input to make the program work will be appreciated.

Read only

0 Likes
989

What exactly is the error in the dump (e.g. COMPUTE_FLOAT_ZERODIVIDE)

Also try commenting module STATUS_0200 from the flow logic and see what happens!

Rishi

Try the following (the answer to your problem)

<b>PROGRAM zdia_table

tables : vbak. vbap.

CONTROLS: TAB_CNTL TYPE TABLEVIEW USING SCREEN 0200.

Data: BEGIN OF ITAB1 OCCURS 0.

VBELN LIKE VBAK-VBELN,

AUDAT LIKE VBAK-AUDAT,

KUNNR LIKE VBAK-KUNNR,

DATA: END OF ITAB1.

Data: BEGIN OF ITAB2 OCCURS 0.

VBELN LIKE VBAP-VBELN,

ZMENG LIKE VBAP-ZMENG,

NETWR LIKE VBAP-NETWR,

DATA: END OF ITAB2.

DATA: BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAK-VBELN,

AUDAT LIKE VBAK-AUDAT,

KUNNR LIKE VBAK-KUNNR,

ZMENG LIKE VBAP-ZMENG,

NETWR LIKE VBAP-NETWR,

DATA: END OF ITAB.

&----


*& MODULE STATUS_0100 OUTPUT

&----


*TEXT

&----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'XXXXXXX'.

*SET TITLEBAR 'XXX'.

ENDMODULE. "STATUS_0100 OUTPUT

&----


*& MODULE USER_COMMAND_0100 INPUT

&----


*TEXT

&----


<u>MODULE USER_COMMAND_0100 INPUT.

IF SY-UCOMM = 'GET'.

SELECT VBELN AUDAT KUNNR

FROM VBAK

INTO CORRESPONDING FIELDS OF TABLE ITAB1

WHERE VBELN = VBAK-VBELN.

SELECT VBELN ZMENG NETWR

FROM VBAP

INTO CORRESPONDING FIELDS OF TABLE ITAB2

FOR ALL ENTERIES IN ITAB1

WHERE VBELN = ITAB1-VBELN.

LOOP AT ITAB1.

LOOP AT ITAB2 WHERE VBELN = ITAB1-VBELN.

MOVE ITAB1-VBELN TO ITAB-VBELN.

MOVE ITAB1-AUDAT TO ITAB-AUDAT.

MOVE ITAB1-KUNNR TO ITAB-KUNNR.

MOVE ITAB2-NETWR TO ITAB-NETWR.

MOVE ITAB2-ZMENG TO ITAB-ZMENG.

APPEND ITAB.

CLEAR ITAB.

ENDLOOP.

ENDLOOP.

IF SY-SYBRC = 0.

SET SCREEN 200.

LEAVE SCREEN.

ENDIF.

ENDIF.

ENDMODULE. USER_COMMAND_0100 INPUT</u>

&----


*& MODULE STATUS_0200 OUTPUT

&----


*TEXT

&----


MODULE STATUS_0200 OUTPUT.

SET PF-STATUS 'XXXXXXX'.

*SET TITLEBAR 'XXX'.

ENDMODULE. "STATUS_0200 OUTPUT

&----


*& MODULE DISPLAY_DATA OUTPUT

&----


*TEXT

&----


MOVE ITAB-VBELN TO VBAK-VBELN.

MOVE ITAB-AUDAT TO VBAK-AUDAT.

MOVE ITAB-KUNNR TO VBAK-KUNNR.

MOVE ITAB-NETWR TO VBAK-NETWR.

MOVE ITAB-ZMENG TO VBAK-ZMENG.

ENDMODULE. "DISPLAY_DATA OUTPUT

*----


SCREEN1 LOGIC

*----


PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

*----


SCREEN2 LOGIC

*----


PROCESS BEFORE OUTPUT.

MODULE STATUS_0200.

LOOP AT ITAB WITH CONTROL TAB_CNTL

CURSOR TAB_CNTL-CURRENT_LINE.

MODULE DISPLAY_DATA.

ENDLOOP.

PROCESS AFTER INPUT.

*MODULE USER_COMMAND_0200.

LOOP AT ITAB.

ENDLOOP.</b>

Message was edited by: Rishi Joseph (solution)<b></b>

Read only

0 Likes
989

Thanks Rishi. But i think i got the solution now. Thanks for your help anyway.

Read only

Former Member
0 Likes
989

This message was moderated.