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

Problem in move-corresponding

Former Member
0 Likes
591

Hi Experts,

I am doing a report on material history and as per my requirement I need to display all the corresponding Po ( ebeln ) against the particular matnr.

But I am facing a problem in displaying matnr which do not have a single Po raised against it. I am pasting a pinch of my code please have look and advice me...

I want to display a matnr which have no ebeln ...but I am able to display all matnr which have its corresponding ebeln.

SELECT MARA~MATNR MARA~MTART MARD~WERKS MARD~LABST MARD~INSME MARD~SPEME FROM MARA INNER JOIN MARD ON MARA~MATNR EQ MARD~MATNR
 INTO CORRESPONDING FIELDS OF TABLE IT_MARA
WHERE MARA~MATNR IN MATNR AND MARD~WERKS IN WERKS.

                                                                    
  LOOP AT IT_MARA.
    MOVE IT_MARA-MATNR TO IT_TAB-MATNR.
    MOVE IT_MARA-WERKS TO IT_TAB-WERKS.
    MOVE IT_MARA-LABST TO IT_TAB-LABST.
    MOVE IT_MARA-INSME TO IT_TAB-INSME.
    MOVE IT_MARA-SPEME TO IT_TAB-SPEME.
    COLLECT IT_TAB.
  ENDLOOP.

  IF NOT IT_TAB IS INITIAL.
    SELECT * FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IT_EKPO
       FOR ALL ENTRIES IN IT_TAB WHERE MATNR EQ IT_TAB-MATNR
       AND WERKS EQ IT_TAB-WERKS AND PSTYP EQ '0' AND BSTYP EQ 'F'
       AND ELIKZ EQ ' ' AND LOEKZ NE 'L'.
  ENDIF.

  LOOP AT IT_TAB.
    MOVE-CORRESPONDING IT_TAB TO IT_FIRST.
    LOOP AT IT_EKPO WHERE MATNR EQ IT_TAB-MATNR
                      AND WERKS EQ IT_TAB-WERKS.
      MOVE IT_EKPO-EBELN TO IT_FIRST-EBELN.
      MOVE IT_EKPO-EBELP TO IT_FIRST-EBELP.
      APPEND IT_FIRST.
      CLEAR: IT_FIRST-LABST,IT_FIRST-INSME,IT_FIRST-SPEME.
    ENDLOOP.
  ENDLOOP.

Please advice

Karthik

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
540

Changes are below.

>

>


>   LOOP AT IT_TAB.
>     MOVE-CORRESPONDING IT_TAB TO IT_FIRST.
>     LOOP AT IT_EKPO WHERE MATNR EQ IT_TAB-MATNR
>                       AND WERKS EQ IT_TAB-WERKS.
>       MOVE IT_EKPO-EBELN TO IT_FIRST-EBELN.
>       MOVE IT_EKPO-EBELP TO IT_FIRST-EBELP.
>       APPEND IT_FIRST.
>       CLEAR: IT_FIRST-LABST,IT_FIRST-INSME,IT_FIRST-SPEME.
>     ENDLOOP.
>     ***IF SY-SUBRC NE 0.
>           This is where materials do not have a PO assigned
>     ***ENDIF
>   ENDLOOP.

>

> Please advice

> Karthik

3 REPLIES 3
Read only

Former Member
0 Likes
541

Changes are below.

>

>


>   LOOP AT IT_TAB.
>     MOVE-CORRESPONDING IT_TAB TO IT_FIRST.
>     LOOP AT IT_EKPO WHERE MATNR EQ IT_TAB-MATNR
>                       AND WERKS EQ IT_TAB-WERKS.
>       MOVE IT_EKPO-EBELN TO IT_FIRST-EBELN.
>       MOVE IT_EKPO-EBELP TO IT_FIRST-EBELP.
>       APPEND IT_FIRST.
>       CLEAR: IT_FIRST-LABST,IT_FIRST-INSME,IT_FIRST-SPEME.
>     ENDLOOP.
>     ***IF SY-SUBRC NE 0.
>           This is where materials do not have a PO assigned
>     ***ENDIF
>   ENDLOOP.

>

> Please advice

> Karthik

Read only

Sandeep_Panghal
Product and Topic Expert
Product and Topic Expert
0 Likes
540

Hi try this:

LOOP AT IT_TAB.

LOOP AT IT_EKPO WHERE MATNR EQ IT_TAB-MATNR

AND WERKS EQ IT_TAB-WERKS.

if sy-subrc eq 0.

continue.

else.

MOVE-CORRESPONDING IT_TAB TO IT_FIRST.

MOVE IT_EKPO-EBELN TO IT_FIRST-EBELN.

MOVE IT_EKPO-EBELP TO IT_FIRST-EBELP.

APPEND IT_FIRST.

endif.

CLEAR: IT_FIRST-LABST,IT_FIRST-INSME,IT_FIRST-SPEME.

ENDLOOP.

ENDLOOP.

Read only

Former Member
0 Likes
540

Hi Karthick,

According to your statement, it will fetch the PO only for the Materials in the internal table IT_TAB.

IF NOT IT_TAB IS INITIAL.

SELECT * FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IT_EKPO

FOR ALL ENTRIES IN IT_TAB WHERE MATNR EQ IT_TAB-MATNR

AND WERKS EQ IT_TAB-WERKS AND PSTYP EQ '0' AND BSTYP EQ 'F'

AND ELIKZ EQ ' ' AND LOEKZ NE 'L'.

ENDIF.

Remove, the code which is in BOLD....and check it.....

Thanks & Regards,

Vamsi