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

Working with MIRO

Former Member
0 Likes
5,243

    if not it_ekko[] is initial.

    SELECT EBELN EBELP BEWTP MENGE BUDAT belnr FROM ekbe

    INTO CORRESPONDING FIELDS OF TABLE IT_final for all entries in it_ekko WHERE BEWTP in ('E','Q') and ebeln = it_ekko-ebeln.

    endif.

    i have display only BEWTP = E should display the output.

    if any records are available with BEWTP = Q should delete the internal table and not to display in output ?

    Please Help me in Coding.

Moderator message: very basic, not enough research before posting -> un-marked as question.

Message was edited by: Thomas Zloch

    if not it_ekko[] is initial.

    SELECT EBELN EBELP BEWTP MENGE BUDAT belnr FROM ekbe

    INTO CORRESPONDING FIELDS OF TABLE IT_final for all entries in it_ekko WHERE BEWTP in ('E','Q') and ebeln = it_ekko-ebeln.

    endif.

    i have display only BEWTP = E should display the output.

    if any records are available with BEWTP = Q should delete the internal table and not to display in output ?

    Please Help me in Coding.

Moderator message: very basic, not enough research before posting -> un-marked as question.

Message was edited by: Thomas Zloch

24 REPLIES 24
Read only

Former Member
0 Likes
5,198

WHERE BEWTP in('E','Q') and ebeln = it_ekko-ebeln.

Change above code as per below code...

WHERE BEWTP eq 'E' and ebeln = it_ekko-ebeln.


Read only

0 Likes
5,198

I need to delete internal table records which are BEWTP = 'Q'

then i have to display on records which are BEWTP = 'E'.

Read only

Former Member
0 Likes
5,198

delete IT_final where bwetp eq 'Q'.

Read only

0 Likes
5,198

Check the following code.

Please help me.

REPORT  ZIR_TEST1.

*TYPES:BEGIN OF TY_LFA1,

*      name1 TYPE LFA1-name1,

*      END OF TY_LFA1.

TYPES:BEGIN OF TY_EKKO,

       lifnr TYPE EKKO-lifnr,

       ebeln type ekko-ebeln,

       name1 type lfa1-name1,

       END OF TY_EKKO.

TYPES: BEGIN OF TY_EKBE,

        EBELN TYPE EKBE-EBELN,

        EBELP TYPE EKBE-EBELP,

        BEWTP TYPE EKBE-BEWTP,

        MENGE TYPE EKBE-MENGE,

        BUDAT TYPE EKBE-BUDAT,

        END OF TY_EKBE.

TYPES:BEGIN OF TY_FINAL,

       name1 TYPE LFA1-name1,

       lifnr TYPE EKKO-lifnr,

       EBELN TYPE EKBE-EBELN,

       EBELP TYPE EKBE-EBELP,

       belnr type ekbe-belnr,

       BEWTP TYPE ekbe-BEWTP,

       MENGE TYPE EKBE-MENGE,

       BUDAT TYPE EKBE-BUDAT,

       END OF TY_FINAL.

DATA:

        IT_EKBE TYPE TABLE OF TY_EKBE,                       "#EC NEEDED

*      IT_LFA1 TYPE TABLE OF TY_LFA1, "#EC NEEDED

       IT_EKKO TYPE TABLE OF TY_EKKO,

       wa_ekko type ty_ekko,                                 "#EC NEEDED

       IT_final TYPE TABLE OF TY_final,

       WA_final TYPE TY_final.

*data : G_QUANTITY_TYPE(3).

*SELECT name1 FROM LFA1 INTO TABLE IT_LFA1.

*SELECT lifnr ebeln FROM EKKO INTO TABLE IT_EKKO.

*CONSTANTS : PO_NO type ekko-ebeln value '4500000388'.

parameters: PO_NO type ekko-ebeln.

select * from ekko into corresponding fields of table it_ekko where ebeln = po_no.

loop at it_ekko into wa_ekko.

   select single name1 from lfa1 into wa_ekko-name1 where lifnr = wa_ekko-lifnr.

   modify it_ekko from wa_ekko.

   clear wa_ekko.

endloop.

   if not it_ekko[] is initial.

   SELECT EBELN EBELP BEWTP MENGE BUDAT belnr FROM ekbe INTO CORRESPONDING FIELDS OF TABLE IT_final for all entries in it_ekko WHERE BEWTP in ('E','Q') and ebeln = it_ekko-ebeln.

endif.

if sy-subrc eq 0.

sort it_final by ebeln.

endif.

delete it_final where BEWTP = 'Q'.

CLEAR IT_FINAL.

*LOOP AT it_final-bewtp INTO wa_final.

*  IF it_final-bewtp Eq 'Q'.

*    DELETE it_final INDEX sy-tabix.

*    clear it_final.

*  ENDIF.

*ENDLOOP.

CLEAR IT_FINAL.

loop at it_ekko into wa_ekko.

   write : / wa_ekko-lifnr,

            wa_ekko-name1.

endloop.

LOOP AT IT_final INTO WA_final.

   WRITE: / WA_final-EBELN,

           WA_final-EBELP,

           WA_final-BEWTP,

*         41 WA_final-MENGE UNIT G_QUANTITY_TYPE,

           WA_final-BUDAT,

           wa_final-belnr.

ENDLOOP.

Read only

0 Likes
5,198

Can u provide some sample Output what U  want ?

Read only

0 Likes
5,198

lifnr name ebeln ebelp bewtp budat belnr.

bewtp should be 'E' If PO have 'Q's that should be delete records

should have only on onput PO's which are having 'E'.

Read only

0 Likes
5,198

Now Check dis Code ......................

TYPES:BEGIN OF TY_EKKO,

        LIFNR TYPE EKKO-LIFNR,

        EBELN TYPE EKKO-EBELN,

        NAME1 TYPE LFA1-NAME1,

        END OF TY_EKKO.

TYPES: BEGIN OF TY_EKBE,

         EBELN TYPE EKBE-EBELN,

         EBELP TYPE EKBE-EBELP,

         BEWTP TYPE EKBE-BEWTP,

         MENGE TYPE EKBE-MENGE,

         BUDAT TYPE EKBE-BUDAT,

         END OF TY_EKBE.

TYPES:BEGIN OF TY_FINAL,

        NAME1 TYPE LFA1-NAME1,

        LIFNR TYPE EKKO-LIFNR,

        EBELN TYPE EKBE-EBELN,

        EBELP TYPE EKBE-EBELP,

        BELNR TYPE EKBE-BELNR,

        BEWTP TYPE EKBE-BEWTP,

        MENGE TYPE EKBE-MENGE,

        BUDAT TYPE EKBE-BUDAT,

        END OF TY_FINAL.

DATA:

         IT_EKBE TYPE TABLE OF TY_EKBE,                      "#EC NEEDED

*      IT_LFA1 TYPE TABLE OF TY_LFA1, "#EC NEEDED

        IT_EKKO TYPE TABLE OF TY_EKKO,

        WA_EKKO TYPE TY_EKKO,                                "#EC NEEDED

        IT_FINAL TYPE TABLE OF TY_FINAL,

        WA_FINAL TYPE TY_FINAL.

PARAMETERS: PO_NO TYPE EKKO-EBELN.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO WHERE EBELN = PO_NO.

LOOP AT IT_EKKO INTO WA_EKKO.

   SELECT SINGLE NAME1 FROM LFA1 INTO WA_EKKO-NAME1 WHERE LIFNR = WA_EKKO-LIFNR.

   MODIFY IT_EKKO FROM WA_EKKO.

   CLEAR WA_EKKO.

ENDLOOP.

IF NOT IT_EKKO[] IS INITIAL.

   SELECT EBELN EBELP BEWTP MENGE BUDAT BELNR

     FROM EKBE INTO CORRESPONDING FIELDS OF TABLE IT_FINAL

     FOR ALL ENTRIES IN IT_EKKO WHERE BEWTP IN ('E','Q') AND EBELN = IT_EKKO-EBELN.

ENDIF.

IF SY-SUBRC EQ 0.

   SORT IT_FINAL BY EBELN.

ENDIF.

DELETE IT_FINAL WHERE BEWTP = 'Q'.

CLEAR WA_FINAL.

LOOP AT IT_EKKO INTO WA_EKKO.

   WRITE : / WA_EKKO-LIFNR,

            WA_EKKO-NAME1.

ENDLOOP.

LOOP AT IT_FINAL INTO WA_FINAL.

   WRITE: / WA_FINAL-EBELN,

           WA_FINAL-EBELP,

           WA_FINAL-BEWTP,

*         41 WA_final-MENGE UNIT G_QUANTITY_TYPE,

           WA_FINAL-BUDAT,

           WA_FINAL-BELNR.

ENDLOOP.

Read only

0 Likes
5,198

earlier also i had the same output.

The PO 4500000599 actually has bewtp = 'Q' but now on the o/p am getting following this.

210005     ASE GROUP

4500000599 00010 E 08.01.2013 5000000076

4500000599 00010 E 08.01.2013 5000000077

how can i have E on ouput for PO 4500000599.?

Read only

0 Likes
5,198

can you try with any PO which has bewtp = 'Q'..

u will get bewtp ='E' on onput records.

Read only

0 Likes
5,198

Yeah , my friend it working fine ....

if i Remove dis

DELETE IT_FINAL WHERE BEWTP = 'Q'

line from above Code i got below output........ mean all E and Q both display..

if i add   DELETE IT_FINAL WHERE BEWTP = 'Q'. line in code i got below out put...

where "Q" Record is delete from ur Final output ...

Read only

0 Likes
5,198

Records for  PO 4500000599 Observer here BEWTP = Q

This is the output which I got. See here BEWTP = E. ?

Read only

0 Likes
5,198

Check below Screen Shot ....

Using above code m getting below output as per ur requirement (i.e. No "Q" Record in Final Result)

Regard's

Smruti

Read only

0 Likes
5,198

With the following Code, i got the output as sent you earlier.

please check it once friend.

Report  ZIR_TEST1.

TYPES:BEGIN OF TY_EKKO,

         LIFNR TYPE EKKO-LIFNR,

         EBELN TYPE EKKO-EBELN,

         NAME1 TYPE LFA1-NAME1,

         END OF TY_EKKO.

TYPES: BEGIN OF TY_EKBE,

          EBELN TYPE EKBE-EBELN,

          EBELP TYPE EKBE-EBELP,

          BEWTP TYPE EKBE-BEWTP,

          MENGE TYPE EKBE-MENGE,

          BUDAT TYPE EKBE-BUDAT,

          END OF TY_EKBE.

TYPES:BEGIN OF TY_FINAL,

         NAME1 TYPE LFA1-NAME1,

         LIFNR TYPE EKKO-LIFNR,

         EBELN TYPE EKBE-EBELN,

         EBELP TYPE EKBE-EBELP,

         BELNR TYPE EKBE-BELNR,

         BEWTP TYPE EKBE-BEWTP,

         MENGE TYPE EKBE-MENGE,

         BUDAT TYPE EKBE-BUDAT,

         END OF TY_FINAL.

DATA: IT_EKBE TYPE TABLE OF TY_EKBE,                      "#EC NEEDED

*      IT_LFA1 TYPE TABLE OF TY_LFA1, "#EC NEEDED

         IT_EKKO TYPE TABLE OF TY_EKKO,

         WA_EKKO TYPE TY_EKKO,                                "#EC NEEDED

         IT_FINAL TYPE TABLE OF TY_FINAL,

         WA_FINAL TYPE TY_FINAL.

PARAMETERS: PO_NO TYPE EKKO-EBELN.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO WHERE EBELN = PO_NO.

LOOP AT IT_EKKO INTO WA_EKKO.

    SELECT SINGLE NAME1 FROM LFA1 INTO WA_EKKO-NAME1 WHERE LIFNR = WA_EKKO-LIFNR.

    MODIFY IT_EKKO FROM WA_EKKO.

    CLEAR WA_EKKO.

ENDLOOP.

IF NOT IT_EKKO[] IS INITIAL.

    SELECT EBELN EBELP BEWTP MENGE BUDAT BELNR

      FROM EKBE INTO CORRESPONDING FIELDS OF TABLE IT_FINAL

      FOR ALL ENTRIES IN IT_EKKO WHERE BEWTP IN ('E','Q') AND EBELN = IT_EKKO-EBELN.

ENDIF.

IF SY-SUBRC EQ 0.

    SORT IT_FINAL BY EBELN.

ENDIF.

DELETE IT_FINAL WHERE BEWTP = 'Q'.

CLEAR WA_FINAL.

LOOP AT IT_EKKO INTO WA_EKKO.

    WRITE : / WA_EKKO-LIFNR,

              WA_EKKO-NAME1.

ENDLOOP.

LOOP AT IT_FINAL INTO WA_FINAL.

    WRITE: / WA_FINAL-EBELN,

             WA_FINAL-EBELP,

             WA_FINAL-BEWTP,

*         41 WA_final-MENGE UNIT G_QUANTITY_TYPE,

             WA_FINAL-BUDAT,

             WA_FINAL-BELNR.

ENDLOOP.

Read only

0 Likes
5,198

i checked it again same output ...

without "Q" Records...

Read only

0 Likes
5,198

Thankyou somuch for you help.

will post again, once i get any issue..

Read only

RaymondGiuseppi
Active Contributor
0 Likes
5,198

If I correctly understand you, you want all 'E' records without 'Q' records (so GR and no GI)

Try with a subselect option like

SELECT * INTO TABLE it_ekbe FROM ekbe

  WHERE bewtp = 'E'

  AND NOT EXISTS

   ( SELECT * FROM ekbe AS invo

    WHERE invo~ebeln EQ ekbe~ebeln

      AND invo~ebelp EQ ekbe~ebelp

      AND invo~bewtp = 'Q' ).

Regards,

Raymond

Read only

0 Likes
5,198

Not working well getting bugs can you resolve it please, have implemented which you gave me.

Report  ZIR_TEST1.

TYPES:BEGIN OF TY_EKKO,

         LIFNR TYPE EKKO-LIFNR,

         EBELN TYPE EKKO-EBELN,

         NAME1 TYPE LFA1-NAME1,

         END OF TY_EKKO.

TYPES: BEGIN OF TY_EKBE,

          EBELN TYPE EKBE-EBELN,

          EBELP TYPE EKBE-EBELP,

          BEWTP TYPE EKBE-BEWTP,

          MENGE TYPE EKBE-MENGE,

          BUDAT TYPE EKBE-BUDAT,

          END OF TY_EKBE.

TYPES:BEGIN OF TY_FINAL,

         NAME1 TYPE LFA1-NAME1,

         LIFNR TYPE EKKO-LIFNR,

         EBELN TYPE EKBE-EBELN,

         EBELP TYPE EKBE-EBELP,

         BELNR TYPE EKBE-BELNR,

         BEWTP TYPE EKBE-BEWTP,

         MENGE TYPE EKBE-MENGE,

         BUDAT TYPE EKBE-BUDAT,

         END OF TY_FINAL.

DATA: IT_EKBE TYPE TABLE OF TY_EKBE,                      "#EC NEEDED

*      IT_LFA1 TYPE TABLE OF TY_LFA1, "#EC NEEDED

         IT_EKKO TYPE TABLE OF TY_EKKO,

         WA_EKKO TYPE TY_EKKO,                                "#EC NEEDED

         IT_FINAL TYPE TABLE OF TY_FINAL,

         WA_FINAL TYPE TY_FINAL.

PARAMETERS: PO_NO TYPE EKKO-EBELN.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO WHERE EBELN = PO_NO.

LOOP AT IT_EKKO INTO WA_EKKO.

    SELECT SINGLE NAME1 FROM LFA1 INTO WA_EKKO-NAME1 WHERE LIFNR = WA_EKKO-LIFNR.

    MODIFY IT_EKKO FROM WA_EKKO.

    CLEAR WA_EKKO.

ENDLOOP.

IF NOT IT_EKKO[] IS INITIAL.

*   SELECT EBELN EBELP BEWTP MENGE BUDAT BELNR

*     FROM EKBE INTO CORRESPONDING FIELDS OF TABLE IT_FINAL

*     FOR ALL ENTRIES IN IT_EKKO WHERE BEWTP IN ('E','Q') AND EBELN = IT_EKKO-EBELN.

SELECT * INTO TABLE it_ekbe FROM ekbe

   WHERE bewtp = 'E'

   AND NOT EXISTS

    ( SELECT * FROM ekbe AS invo

     WHERE invo~ebeln EQ ekbe~ebeln

       AND invo~ebelp EQ ekbe~ebelp

       AND invo~bewtp = 'Q' )

ENDIF.

IF SY-SUBRC EQ 0.

    SORT IT_FINAL BY EBELN.

ENDIF.

BREAK-POINT.

*DELETE IT_FINAL WHERE BEWTP = 'E' AND BEWTP = 'Q'.

CLEAR WA_FINAL.

LOOP AT IT_EKKO INTO WA_EKKO.

    WRITE : / WA_EKKO-LIFNR,

              WA_EKKO-NAME1.

ENDLOOP.

LOOP AT IT_FINAL INTO WA_FINAL.

    WRITE: / WA_FINAL-EBELN,

             WA_FINAL-EBELP,

             WA_FINAL-BEWTP,

*         41 WA_final-MENGE UNIT G_QUANTITY_TYPE,

             WA_FINAL-BUDAT,

             WA_FINAL-BELNR.

ENDLOOP.

Read only

0 Likes
5,198

If PO have 10,20 as lineitems and BEWTP = 'E' Means which are already GR is done.

for the Same PO has 10 as lineitem and BEWTP = 'Q' Means Which are GR and IR also Done.

I need to populate the data Which are not Invoiced, means i need populate line item 20 ?

How to achieve it please help me with Coding.

Read only

0 Likes
5,198

Am getting Runtime Error with the following Code

Please help me to resolve.

Report  ZIR_TEST1.

TYPES:BEGIN OF TY_EKKO,

         LIFNR TYPE EKKO-LIFNR,

         EBELN TYPE EKKO-EBELN,

         NAME1 TYPE LFA1-NAME1,

         END OF TY_EKKO.

TYPES: BEGIN OF TY_EKBE,

          EBELN TYPE EKBE-EBELN,

          EBELP TYPE EKBE-EBELP,

          BEWTP TYPE EKBE-BEWTP,

          MENGE TYPE EKBE-MENGE,

          BUDAT TYPE EKBE-BUDAT,

          END OF TY_EKBE.

TYPES:BEGIN OF TY_FINAL,

         NAME1 TYPE LFA1-NAME1,

         LIFNR TYPE EKKO-LIFNR,

         EBELN TYPE EKBE-EBELN,

         EBELP TYPE EKBE-EBELP,

         BELNR TYPE EKBE-BELNR,

         BEWTP TYPE EKBE-BEWTP,

         MENGE TYPE EKBE-MENGE,

         BUDAT TYPE EKBE-BUDAT,

         END OF TY_FINAL.

DATA: IT_EKBE TYPE TABLE OF TY_EKBE,                      "#EC NEEDED

*      IT_LFA1 TYPE TABLE OF TY_LFA1, "#EC NEEDED

         IT_EKKO TYPE TABLE OF TY_EKKO,

         WA_EKKO TYPE TY_EKKO,                                "#EC NEEDED

         IT_FINAL TYPE TABLE OF TY_FINAL,

         WA_FINAL TYPE TY_FINAL.

PARAMETERS: PO_NO TYPE EKKO-EBELN.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO WHERE EBELN = PO_NO.

LOOP AT IT_EKKO INTO WA_EKKO.

    SELECT SINGLE NAME1 FROM LFA1 INTO WA_EKKO-NAME1 WHERE LIFNR = WA_EKKO-LIFNR.

    MODIFY IT_EKKO FROM WA_EKKO.

    CLEAR WA_EKKO.

ENDLOOP.

IF NOT IT_EKKO[] IS INITIAL.

SELECT EBELN EBELP BEWTP MENGE BUDAT BELNR  INTO TABLE it_final FROM ekbe

   WHERE bewtp = 'E'

   AND NOT EXISTS

    ( SELECT * FROM ekbe AS invo

     WHERE invo~ebeln EQ ekbe~ebeln

       AND invo~ebelp EQ ekbe~ebelp

       AND invo~bewtp = 'Q' ).

ENDIF.

IF SY-SUBRC EQ 0.

    SORT IT_FINAL BY EBELN.

ENDIF.

BREAK-POINT.

*DELETE IT_FINAL WHERE BEWTP = 'E' AND BEWTP = 'Q'.

CLEAR WA_FINAL.

LOOP AT IT_EKKO INTO WA_EKKO.

    WRITE : / WA_EKKO-LIFNR,

              WA_EKKO-NAME1.

ENDLOOP.

LOOP AT IT_FINAL INTO WA_FINAL.

    WRITE: / WA_FINAL-EBELN,

             WA_FINAL-EBELP,

             WA_FINAL-BEWTP,

*         41 WA_final-MENGE UNIT G_QUANTITY_TYPE,

             WA_FINAL-BUDAT,

             WA_FINAL-BELNR.

ENDLOOP.

Read only

0 Likes
5,198

There are just basic Abap programming problem remaining.

First reinsert your own code in the SELECT from EKBE like the FOR ALL ENTRIES clause and the target internal table...Then before writing the result, execute a merge of the two internal tables (from EKKO and EKBE) easiest way  is SORT EKKO table and complete table from EKBE in a LOOP using some READ FROM TABLE BINARY SEARCH.

One question, you read EKKO with the whole key, that should give a single record, why an internal table, then replace the FOR ALL ENTRIES by a test on the purchase order number.

Regards,

Raymond

Read only

0 Likes
5,198

Hi Raymond,

Please Help me by providing the Code.

Looking forward for your updated Code.

Read only

0 Likes
5,198

for your question.

i need multiple records for testing purpose i used parameter.

please provide me updated code.

Read only

0 Likes
5,198

Read the Rules of Engagement. Try first to code it yourself, as spec dumping,  spoon feeding and asking for mail sending are against the rule of this forum. Try to solve it yourself and only if a point of code cause problem that you are unable to solve. Here just read online documentation on SORT, LOOP AT and READ TABLE, that should allow you to code it, you could also execute a fast search at scn on keywords "merge table" to find many code samples.

Regards,

Raymond