2007 Oct 13 5:56 AM
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.
2007 Oct 13 7:08 AM
Hi Santhosh
declare tables. i.e TABLES: VBAP,RESB......
.(AS MANY TABLES U USE IN THE PROGRAM)
REWARD IF USEFUL
Vikram
2007 Oct 14 7:48 PM
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
2007 Oct 14 9:17 PM
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
2007 Oct 15 4:28 AM
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
2007 Oct 15 5:57 AM
Hi Santosh,
What is the other problem that you are facing ?
Regards,
Abhishek
2007 Oct 15 5:59 AM
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