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 this report

Former Member
0 Likes
1,114

TABLES:MARA,VBAK,VBAP.

DATA:BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAK-VBELN,

LIFNR LIKE VBAK-LIFNR,

END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

END OF ITAB1.

DATA:BEGIN OF ITAB2 OCCURS 0,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MARA-MAKTX,

END OF ITAB2.

SELECT VBELN LIFNR FROM TABLE VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN

LOOP AT ITAB.

SELECT VBELN POSNR MATNR INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.

IF ITAB1[] IS NOT INITIAL.

SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.

ENDIF.

ENDLOOP.

LOOP AT ITAB.

WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.

ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,086

Try the below code.



TABLES:MARA,VBAK,VBAP.

DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR
END OF ITAB1.

DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

START-OF-SELECTION.

SELECT VBELN LIFNR FROM TABLE VBAK 
         INTO TABLE ITAB 
         WHERE VBELN IN S_VBELN.
IF SY-SUBRC = 0.
  SELECT VBELN POSNR MATNR INTO TABLE ITAB1  
          FOR ALL ENTRIES IN ITAB 
         WHERE VBELN = ITAB-VBELN.
  IF SY-SUBRC = 0.
     SELECT MATNR MAKTX FROM MARA 
        INTO TABLE ITAB2 
        FOR ALL ENTRIES IN ITAB1 
        WHERE MATNR = ITAB1-MATNR
              AND SPRAS = SY-LANGU.
  ENDIF.
ENDIF.

SORT ITAB1 BY VBELN.
SORT ITAB2 BY MATNR.

LOOP AT ITAB.
  CLEAR: ITAB1.
  READ TABLE ITAB1 WITH KEY VBELN = IT_ITAB-VBELN
                                                  BINARY SEARCH.
  IF SY-SUBRC = 0.
    LV_INDX = SY-TABIX.
    LOOP AT ITAB1 FROM LV_INDX.
      IF ITAB1-VBELN = ITAB-VBELN.
         CLEAR: ITAB2.
         READ TABLE ITAB2 WITH KEY 
                   MATNR = ITAB1-MATNR BINARY SEARCH.
         IF SY-SUBRC = 0.
            WRITE:/ ITAB-VBELN,
                         ITAB-LIFNR,
                         ITAB1-POSNR,
                         ITAB2-MATNR,
                         ITAB2-MAKTX.
         ENDIF.
      ELSE.
        CLEAR: LV_INDX.
        EXIT.
      ENDIF.

    ENDLOOP.
  ENDIF.
ENDLOOP.

HOpe this helps.

Thanks,

Balaji

TABLES:MARA,VBAK,VBAP.

DATA:BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAK-VBELN,

LIFNR LIKE VBAK-LIFNR,

END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

END OF ITAB1.

DATA:BEGIN OF ITAB2 OCCURS 0,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MARA-MAKTX,

END OF ITAB2.

SELECT VBELN LIFNR FROM TABLE VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN

LOOP AT ITAB.

SELECT VBELN POSNR MATNR INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.

IF ITAB1[] IS NOT INITIAL.

SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.

ENDIF.

ENDLOOP.

LOOP AT ITAB.

WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.

ENDLOOP.

11 REPLIES 11
Read only

Former Member
0 Likes
1,086


TABLES:MARA,VBAK,VBAP.

DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.

DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.

SELECT VBELN LIFNR FROM  VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN

LOOP AT ITAB.

SELECT VBELN POSNR MATNR from vbap INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.

IF ITAB1[] IS NOT INITIAL.

SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.

ENDIF.

ENDLOOP.

LOOP AT ITAB.

WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.
ENDLOOP.


Read only

0 Likes
1,086

Hi,

Can u tell me whart is the error in report?

Read only

0 Likes
1,086

There are mistakes in first two select statements before which i corrected them is it working now?

Read only

0 Likes
1,086

Hi,

Thanks so much..

its working.

Othere than this any logic error

Read only

Former Member
0 Likes
1,086

As VBAK doesn't contain LIFNR the error says...

The Object VBAK does not have compenent LIFNR...

TABLES:MARA,VBAK,VBAP.

DATA:BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAK-VBELN,

LIFNR LIKE VBAK-LIFNR, " here is the problem LIFNR you will get in LFA1 table its vendor account no...END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

END OF ITAB1.

DATA:BEGIN OF ITAB2 OCCURS 0,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MARA-MAKTX,

END OF ITAB2.

SELECT VBELN LIFNR FROM TABLE VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN

LOOP AT ITAB.

SELECT VBELN POSNR MATNR INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.

IF ITAB1[] IS NOT INITIAL.

SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.

ENDIF.

ENDLOOP.

LOOP AT ITAB.

WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.

ENDLOOP.

I would suggest you to first identify from where u need to fetch data ...

Reward points if useful..

Thanks & Regards

ilesh 24x7

Read only

0 Likes
1,086

Hi,

I need to get document item in the report.

Sorry i will take off 'LIFNR' field from this report.

Thanks.

Other than this any error.

?

Read only

Former Member
0 Likes
1,086

are u using an Underscore in S_VBELN??

check it out.

and moreover if u cud tell whts the error being shown on ur screen, we cud help u better..

pk

Read only

Former Member
0 Likes
1,087

Try the below code.



TABLES:MARA,VBAK,VBAP.

DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.

DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR
END OF ITAB1.

DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

START-OF-SELECTION.

SELECT VBELN LIFNR FROM TABLE VBAK 
         INTO TABLE ITAB 
         WHERE VBELN IN S_VBELN.
IF SY-SUBRC = 0.
  SELECT VBELN POSNR MATNR INTO TABLE ITAB1  
          FOR ALL ENTRIES IN ITAB 
         WHERE VBELN = ITAB-VBELN.
  IF SY-SUBRC = 0.
     SELECT MATNR MAKTX FROM MARA 
        INTO TABLE ITAB2 
        FOR ALL ENTRIES IN ITAB1 
        WHERE MATNR = ITAB1-MATNR
              AND SPRAS = SY-LANGU.
  ENDIF.
ENDIF.

SORT ITAB1 BY VBELN.
SORT ITAB2 BY MATNR.

LOOP AT ITAB.
  CLEAR: ITAB1.
  READ TABLE ITAB1 WITH KEY VBELN = IT_ITAB-VBELN
                                                  BINARY SEARCH.
  IF SY-SUBRC = 0.
    LV_INDX = SY-TABIX.
    LOOP AT ITAB1 FROM LV_INDX.
      IF ITAB1-VBELN = ITAB-VBELN.
         CLEAR: ITAB2.
         READ TABLE ITAB2 WITH KEY 
                   MATNR = ITAB1-MATNR BINARY SEARCH.
         IF SY-SUBRC = 0.
            WRITE:/ ITAB-VBELN,
                         ITAB-LIFNR,
                         ITAB1-POSNR,
                         ITAB2-MATNR,
                         ITAB2-MAKTX.
         ENDIF.
      ELSE.
        CLEAR: LV_INDX.
        EXIT.
      ENDIF.

    ENDLOOP.
  ENDIF.
ENDLOOP.

HOpe this helps.

Thanks,

Balaji

Read only

0 Likes
1,086

Hi Balaji,

I am not clear with this part.

Please expalin me.

LOOP AT ITAB.

CLEAR: ITAB1.

READ TABLE ITAB1 WITH KEY VBELN = IT_ITAB-VBELN

BINARY SEARCH.

IF SY-SUBRC = 0.

LV_INDX = SY-TABIX.

LOOP AT ITAB1 FROM LV_INDX.

IF ITAB1-VBELN = ITAB-VBELN.

CLEAR: ITAB2.

READ TABLE ITAB2 WITH KEY

MATNR = ITAB1-MATNR BINARY SEARCH.

IF SY-SUBRC = 0.

WRITE:/ ITAB-VBELN,

ITAB-LIFNR,

ITAB1-POSNR,

ITAB2-MATNR,

ITAB2-MAKTX.

ENDIF.

ELSE.

CLEAR: LV_INDX.

EXIT.

ENDIF.

Read only

0 Likes
1,086

Since your input for sales order is a SELECT option there could be multiple sales orders that could be inputted.

And for each sales order there could be multiple sales order items.

Thats why you would see when you are looping the sales order header table (in your case ITAB), you would also would like to get all the items of the sales order from ITAB1 table. Thats why you would see looping the item table ITAB1 to get all the line items for the sales order.

Hope this helps.

Thanks,

Balaji

Read only

0 Likes
1,086

Hi Balaji,

Thanks a lot for ur reply..

Have u done anything regarding User Exit .

Sincerely

jayalaksmy