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

pls correct iam using 4. 7 ides

Former Member
0 Likes
894

i dont get report for any of the tab pls find out whats wrong and do let me know what mistake i did ......what or which i should be thinking if my perspective is wrong ......thank you guys without your help i wouldnt have come this far in learning abap ........pls help me

&----


*& Report ZTABSTIPSAVED *

*& *

&----


*& *

*& *

&----


REPORT ZTABSTIPSAVED .

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

*types decleration

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

TYPES: BEGIN OF gt_resb,

kdauf TYPE resb-kdauf,

matnr TYPE resb-matnr,

END OF gt_resb.

TYPES: BEGIN OF gt_vbap,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

arktx TYPE vbap-arktx,

END OF gt_vbap.

TYPES: BEGIN OF gt_makt,

matnr TYPE makt-matnr,

maktx TYPE makt-maktx,

END OF gt_makt.

TYPES: BEGIN OF gt_mara,

matnr TYPE mara-matnr,

mtart TYPE mara-mtart,

END OF gt_mara.

TYPES: BEGIN OF gt_vbak,

vbeln TYPE vbak-vbeln,

auart TYPE vbak-auart,

END OF gt_vbak.

TYPES: BEGIN OF gt_output,

matnr TYPE mara-matnr,

maktx TYPE makt-maktx,

vbeln TYPE vbak-vbeln,

posnr TYPE vbap-posnr,

arktx TYPE vbap-arktx,

END OF gt_output.

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

  • data decleration

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

DATA: gi_resb TYPE TABLE OF gt_resb,

gi_resb_tmp TYPE TABLE OF gt_resb,

gw_resb TYPE gt_resb.

DATA: gi_vbap TYPE TABLE OF gt_vbap,

gw_vbap TYPE gt_vbap.

DATA: gi_makt TYPE TABLE OF gt_makt,

gw_makt TYPE gt_makt.

DATA: gi_mara TYPE TABLE OF gt_mara,

gw_mara TYPE gt_mara.

DATA: gi_vbak TYPE TABLE OF gt_vbak,

gw_vbak TYPE gt_vbak.

DATA : gi_output TYPE TABLE OF gt_output,

gw_output TYPE gt_output.

DATA flag(1) TYPE c.

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

*SUBSCREEN1

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

SELECTION-SCREEN: BEGIN OF SCREEN 100 AS SUBSCREEN.

SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME.

SELECT-OPTIONS: s_vbeln FOR gw_vbak-vbeln,

s_auart FOR gw_vbak-auart .

SELECTION-SCREEN: END OF BLOCK a1.

SELECTION-SCREEN: END OF SCREEN 100 .

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

*SUBSCREEN2

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

SELECTION-SCREEN: BEGIN OF SCREEN 200 AS SUBSCREEN.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.

SELECT-OPTIONS: s_matnr FOR gw_mara-matnr,

s_mtart FOR gw_mara-mtart DEFAULT 'HALB' .

SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: END OF SCREEN 200.

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

SELECTION-SCREEN:BEGIN OF TABBED BLOCK santab FOR 10 LINES,

TAB (20) button1 USER-COMMAND push1 DEFAULT SCREEN 100,

TAB (20) button2 USER-COMMAND push2 DEFAULT SCREEN 200,

END OF BLOCK santab.

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

INITIALIZATION.

flag = 'S'.

button1 = text-010.

button2 = text-020.

santab-activetab = 'BUTTON1'.

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

AT SELECTION-SCREEN.

IF sy-ucomm = 'PUSH1'.

flag = 'S'.

CLEAR s_vbeln[].

ELSEIF sy-ucomm = 'PUSH2'.

flag = 'M'.

CLEAR s_matnr[].

ENDIF.

PERFORM valid_vbeln.

PERFORM valid_MATNR.

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

START-OF-SELECTION.

IF flag = 'S'.

IF s_vbeln IS INITIAL.

MESSAGE s000(zxx) WITH text-M10.

LEAVE LIST-PROCESSING.

ENDIF.

ENDIF.

IF flag = 'S'.

PERFORM select_vbeln.

PERFORM SELECT_RESB.

PERFORM SELECT_MAKT.

PERFORM MAT_NO_CHECK.

PERFORM PROCESS_DATA_SALE.

ELSEIF FLAG = 'M'.

ENDIF.

END-OF-SELECTION.

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

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

&----


*& Form valid_vbeln

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM valid_vbeln.

DATA: lv_vbeln TYPE vbak-vbeln.

IF NOT s_vbeln IS INITIAL AND flag = 'S'.

SELECT vbeln

FROM vbuk

INTO (lv_vbeln) UP TO 1 ROWS

WHERE vbeln IN s_vbeln.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000(zyy) WITH text-T10 s_vbeln-low text-T00.

ENDIF.

ENDIF.

ENDFORM. " valid_vbeln

&----


*& Form valid_matnr

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM valid_matnr.

DATA: lv_matnr TYPE mara-matnr.

IF NOT s_matnr IS INITIAL AND flag = 'M'.

SELECT matnr

FROM mara

INTO (lv_matnr) UP TO 1 ROWS

WHERE matnr IN s_matnr.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000(zyy) WITH text-T20 s_matnr-low TEXT-T00.

ENDIF.

ENDIF.

ENDFORM. " valid_matnr

&----


*& Form select_vbeln

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_vbeln.

SELECT vbeln FROM vbak INTO TABLE gi_vbak WHERE vbeln IN s_vbeln

AND auart IN s_auart.

IF sy-subrc = 0.

SORT gi_vbak BY vbeln.

ELSE.

MESSAGE s000(zyy) WITH text-M10.

ENDIF.

ENDFORM. " select_vbeln

*&----


*& Form SELECT_MAKTX

*&----


  • text

*----


  • --> p1 text

  • <-- p2 text

*----


form SELECT_MAKT.

SELECT maktx matnr

FROM makt

INTO TABLE gi_makt

FOR ALL ENTRIES IN gi_resb

WHERE matnr = gi_resb-matnr

AND spras = sy-langu.

IF sy-subrc = 0.

SORT gi_makt BY matnr.

ENDIF.

endform. " SELECT_MAKTX

&----


*& Form SELECT_RESB

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form SELECT_RESB.

IF NOT gi_vbak[] IS INITIAL.

SELECT matnr kdauf

FROM resb

INTO TABLE gi_resb

FOR ALL ENTRIES IN gi_vbak

WHERE kdauf = gi_vbak-vbeln.

IF sy-subrc = 0.

SORT gi_resb BY matnr.

ENDIF.

ENDIF.

endform. " SELECT_RESB

&----


*& Form MAT_NO_CHECK

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form MAT_NO_CHECK.

CLEAR gi_resb_tmp.

gi_resb_tmp[] = gi_resb[].

DELETE ADJACENT DUPLICATES FROM gi_resb_tmp COMPARING kdauf.

IF NOT gi_resb_tmp IS INITIAL.

SELECT vbeln posnr arktx

FROM vbap

INTO TABLE gi_vbap

FOR ALL ENTRIES IN gi_resb_tmp

WHERE vbeln = gi_resb_tmp-kdauf.

ENDIF.

endform. " MAT_NO_CHECK

&----


*& Form PROCESS_DATA_SALE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form PROCESS_DATA_SALE.

LOOP AT gi_resb INTO gw_resb.

Read table gi_resb into gw_resb

with key kdauf = gw_vbap-vbeln

binary search.

if sy-subrc = 0.

LOOP AT gi_vbap INTO gw_vbap.

gw_output-matnr = gw_resb-matnr.

gw_output-vbeln = gw_vbap-vbeln.

gw_output-posnr = gw_vbap-posnr.

gw_output-arktx = gw_vbap-arktx.

READ TABLE gi_makt INTO gw_makt

WITH KEY matnr = gw_makt-matnr

BINARY SEARCH.

IF sy-subrc = 0.

gw_output-maktx = gw_makt-maktx.

ENDIF.

APPEND gw_output TO gi_output.

  • ENDIF.

ENDLOOP.

CLEAR : gw_output,gw_vbak,gw_mara,gw_resb,gw_makt,gw_vbap.

ENDIF.

ENDLOOP.

CLEAR : gi_vbak,gi_mara,gi_resb,gi_makt,gi_vbap.

ENDFORM.

i dont get report for any of the tab pls find out whats wrong and do let me know what mistake i did ......what or which i should be thinking if my perspective is wrong ......thank you guys without your help i wouldnt have come this far in learning abap ........pls help me

&----


*& Report ZTABSTIPSAVED *

*& *

&----


*& *

*& *

&----


REPORT ZTABSTIPSAVED .

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

*types decleration

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

TYPES: BEGIN OF gt_resb,

kdauf TYPE resb-kdauf,

matnr TYPE resb-matnr,

END OF gt_resb.

TYPES: BEGIN OF gt_vbap,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

arktx TYPE vbap-arktx,

END OF gt_vbap.

TYPES: BEGIN OF gt_makt,

matnr TYPE makt-matnr,

maktx TYPE makt-maktx,

END OF gt_makt.

TYPES: BEGIN OF gt_mara,

matnr TYPE mara-matnr,

mtart TYPE mara-mtart,

END OF gt_mara.

TYPES: BEGIN OF gt_vbak,

vbeln TYPE vbak-vbeln,

auart TYPE vbak-auart,

END OF gt_vbak.

TYPES: BEGIN OF gt_output,

matnr TYPE mara-matnr,

maktx TYPE makt-maktx,

vbeln TYPE vbak-vbeln,

posnr TYPE vbap-posnr,

arktx TYPE vbap-arktx,

END OF gt_output.

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

  • data decleration

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

DATA: gi_resb TYPE TABLE OF gt_resb,

gi_resb_tmp TYPE TABLE OF gt_resb,

gw_resb TYPE gt_resb.

DATA: gi_vbap TYPE TABLE OF gt_vbap,

gw_vbap TYPE gt_vbap.

DATA: gi_makt TYPE TABLE OF gt_makt,

gw_makt TYPE gt_makt.

DATA: gi_mara TYPE TABLE OF gt_mara,

gw_mara TYPE gt_mara.

DATA: gi_vbak TYPE TABLE OF gt_vbak,

gw_vbak TYPE gt_vbak.

DATA : gi_output TYPE TABLE OF gt_output,

gw_output TYPE gt_output.

DATA flag(1) TYPE c.

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

*SUBSCREEN1

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

SELECTION-SCREEN: BEGIN OF SCREEN 100 AS SUBSCREEN.

SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME.

SELECT-OPTIONS: s_vbeln FOR gw_vbak-vbeln,

s_auart FOR gw_vbak-auart .

SELECTION-SCREEN: END OF BLOCK a1.

SELECTION-SCREEN: END OF SCREEN 100 .

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

*SUBSCREEN2

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

SELECTION-SCREEN: BEGIN OF SCREEN 200 AS SUBSCREEN.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.

SELECT-OPTIONS: s_matnr FOR gw_mara-matnr,

s_mtart FOR gw_mara-mtart DEFAULT 'HALB' .

SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: END OF SCREEN 200.

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

SELECTION-SCREEN:BEGIN OF TABBED BLOCK santab FOR 10 LINES,

TAB (20) button1 USER-COMMAND push1 DEFAULT SCREEN 100,

TAB (20) button2 USER-COMMAND push2 DEFAULT SCREEN 200,

END OF BLOCK santab.

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

INITIALIZATION.

flag = 'S'.

button1 = text-010.

button2 = text-020.

santab-activetab = 'BUTTON1'.

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

AT SELECTION-SCREEN.

IF sy-ucomm = 'PUSH1'.

flag = 'S'.

CLEAR s_vbeln[].

ELSEIF sy-ucomm = 'PUSH2'.

flag = 'M'.

CLEAR s_matnr[].

ENDIF.

PERFORM valid_vbeln.

PERFORM valid_MATNR.

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

START-OF-SELECTION.

IF flag = 'S'.

IF s_vbeln IS INITIAL.

MESSAGE s000(zxx) WITH text-M10.

LEAVE LIST-PROCESSING.

ENDIF.

ENDIF.

IF flag = 'S'.

PERFORM select_vbeln.

PERFORM SELECT_RESB.

PERFORM SELECT_MAKT.

PERFORM MAT_NO_CHECK.

PERFORM PROCESS_DATA_SALE.

ELSEIF FLAG = 'M'.

ENDIF.

END-OF-SELECTION.

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

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

&----


*& Form valid_vbeln

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM valid_vbeln.

DATA: lv_vbeln TYPE vbak-vbeln.

IF NOT s_vbeln IS INITIAL AND flag = 'S'.

SELECT vbeln

FROM vbuk

INTO (lv_vbeln) UP TO 1 ROWS

WHERE vbeln IN s_vbeln.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000(zyy) WITH text-T10 s_vbeln-low text-T00.

ENDIF.

ENDIF.

ENDFORM. " valid_vbeln

&----


*& Form valid_matnr

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM valid_matnr.

DATA: lv_matnr TYPE mara-matnr.

IF NOT s_matnr IS INITIAL AND flag = 'M'.

SELECT matnr

FROM mara

INTO (lv_matnr) UP TO 1 ROWS

WHERE matnr IN s_matnr.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000(zyy) WITH text-T20 s_matnr-low TEXT-T00.

ENDIF.

ENDIF.

ENDFORM. " valid_matnr

&----


*& Form select_vbeln

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_vbeln.

SELECT vbeln FROM vbak INTO TABLE gi_vbak WHERE vbeln IN s_vbeln

AND auart IN s_auart.

IF sy-subrc = 0.

SORT gi_vbak BY vbeln.

ELSE.

MESSAGE s000(zyy) WITH text-M10.

ENDIF.

ENDFORM. " select_vbeln

*&----


*& Form SELECT_MAKTX

*&----


  • text

*----


  • --> p1 text

  • <-- p2 text

*----


form SELECT_MAKT.

SELECT maktx matnr

FROM makt

INTO TABLE gi_makt

FOR ALL ENTRIES IN gi_resb

WHERE matnr = gi_resb-matnr

AND spras = sy-langu.

IF sy-subrc = 0.

SORT gi_makt BY matnr.

ENDIF.

endform. " SELECT_MAKTX

&----


*& Form SELECT_RESB

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form SELECT_RESB.

IF NOT gi_vbak[] IS INITIAL.

SELECT matnr kdauf

FROM resb

INTO TABLE gi_resb

FOR ALL ENTRIES IN gi_vbak

WHERE kdauf = gi_vbak-vbeln.

IF sy-subrc = 0.

SORT gi_resb BY matnr.

ENDIF.

ENDIF.

endform. " SELECT_RESB

&----


*& Form MAT_NO_CHECK

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form MAT_NO_CHECK.

CLEAR gi_resb_tmp.

gi_resb_tmp[] = gi_resb[].

DELETE ADJACENT DUPLICATES FROM gi_resb_tmp COMPARING kdauf.

IF NOT gi_resb_tmp IS INITIAL.

SELECT vbeln posnr arktx

FROM vbap

INTO TABLE gi_vbap

FOR ALL ENTRIES IN gi_resb_tmp

WHERE vbeln = gi_resb_tmp-kdauf.

ENDIF.

endform. " MAT_NO_CHECK

&----


*& Form PROCESS_DATA_SALE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form PROCESS_DATA_SALE.

LOOP AT gi_resb INTO gw_resb.

Read table gi_resb into gw_resb

with key kdauf = gw_vbap-vbeln

binary search.

if sy-subrc = 0.

LOOP AT gi_vbap INTO gw_vbap.

gw_output-matnr = gw_resb-matnr.

gw_output-vbeln = gw_vbap-vbeln.

gw_output-posnr = gw_vbap-posnr.

gw_output-arktx = gw_vbap-arktx.

READ TABLE gi_makt INTO gw_makt

WITH KEY matnr = gw_makt-matnr

BINARY SEARCH.

IF sy-subrc = 0.

gw_output-maktx = gw_makt-maktx.

ENDIF.

APPEND gw_output TO gi_output.

  • ENDIF.

ENDLOOP.

CLEAR : gw_output,gw_vbak,gw_mara,gw_resb,gw_makt,gw_vbap.

ENDIF.

ENDLOOP.

CLEAR : gi_vbak,gi_mara,gi_resb,gi_makt,gi_vbap.

ENDFORM.

6 REPLIES 6
Read only

Former Member
0 Likes
865

Hi Santhosh

declare tables. i.e TABLES: VBAP,RESB......

.(AS MANY TABLES U USE IN THE PROGRAM)

REWARD IF USEFUL

Vikram

Read only

0 Likes
865

when we use types we dont have to really declare is what a good abaper once told me.......idont know the reason myself but it worked for me so far ......and one more thing i forgot to tell is that ..........all the selectoption are mandatory......any way i will try what you suggested and will update the result

thank you

Message was edited by:

santhosh jagannathan

Read only

former_member195698
Active Contributor
0 Likes
865

LOOP AT gi_resb INTO gw_resb.

Read table gi_resb into gw_resb

with key kdauf = gw_vbap-vbeln

binary search.

if sy-subrc = 0.

LOOP AT gi_vbap INTO gw_vbap.

The code doesn't seem to be correct......

... In the Read statement you are checking the table GI_RESB with GW_VBAP_VBELN which is Empty field. This results in Failure of read statement and that the reason for no output........

Regards,

Abhishek

Read only

0 Likes
865

thankyou abhishek actually the main problem i had was making all the input fields select-options mandatory and still make it work for both the tabs freely .....i was never aware of this mistake i did ..........thank you once again will be glad if you find out the other problem i face also ......

santhosh

Read only

0 Likes
865

Hi Santosh,

What is the other problem that you are facing ?

Regards,

Abhishek

Read only

0 Likes
865

Hi Santhosh,

Try the changes given below in two FORMS.

FORM select_resb.

IF NOT gi_vbak[] IS INITIAL.

SELECT <b>kdauf matnr</b>

FROM resb

INTO TABLE gi_resb

FOR ALL ENTRIES IN gi_vbak

WHERE kdauf = gi_vbak-vbeln.

IF sy-subrc = 0.

SORT gi_resb BY matnr.

ENDIF.

ENDIF.

ENDFORM

FORM select_makt.

SELECT <b>matnr maktx</b>

FROM makt

INTO TABLE gi_makt

FOR ALL ENTRIES IN gi_resb

WHERE matnr = gi_resb-matnr

AND spras = sy-langu.

IF sy-subrc = 0.

SORT gi_makt BY matnr.

ENDIF.

ENDFORM. " SELECT_MAKTX

In both cases the order of fetching data from DBase is different from the internal table structure. You can use <b>INTO CORRESPONDING FIELDS OF TABLE </b> also.

Regards,

Amit