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

Select Columns from a ALL Entry table

Former Member
0 Likes
1,008

TYPES: BEGIN OF ty_block1,

werks TYPE likp-werks,

lfdat TYPE likp-lfdat,

lfart TYPE likp-lfart,

vbeln TYPE likp-vbeln,

END OF ty_block1.

DATA: li_block1 TYPE STANDARD TABLE OF ty_block1.

DATA: li_block2 TYPE STANDARD TABLE OF ty_block2.

SELECT likpwerks likplfdat likplfart likpvbeln

INTO TABLE li_block1

FROM likp

INNER JOIN lips ON lipsvbeln = likpvbeln

WHERE likp~werks IN s_werks

SELECT ????? (Don´t allow me to select liblock1 fields in this area)

INTO TABLE li_block2

FROM vbfa

FOR ALL ENTRIES IN li_block1

WHERE vbfa~vbelv = li_block1-vbeln.

ENDIF.

Any idea to extract data from li_block1 table into li_block2 table (i.e li_block1-fdat or li_block1-werks)?

Thanks in advance

TYPES: BEGIN OF ty_block1,

werks TYPE likp-werks,

lfdat TYPE likp-lfdat,

lfart TYPE likp-lfart,

vbeln TYPE likp-vbeln,

END OF ty_block1.

DATA: li_block1 TYPE STANDARD TABLE OF ty_block1.

DATA: li_block2 TYPE STANDARD TABLE OF ty_block2.

SELECT likpwerks likplfdat likplfart likpvbeln

INTO TABLE li_block1

FROM likp

INNER JOIN lips ON lipsvbeln = likpvbeln

WHERE likp~werks IN s_werks

SELECT ????? (Don´t allow me to select liblock1 fields in this area)

INTO TABLE li_block2

FROM vbfa

FOR ALL ENTRIES IN li_block1

WHERE vbfa~vbelv = li_block1-vbeln.

ENDIF.

Any idea to extract data from li_block1 table into li_block2 table (i.e li_block1-fdat or li_block1-werks)?

Thanks in advance

6 REPLIES 6
Read only

Former Member
0 Likes
974

No - you have to do them individually.

Rob

Read only

Former Member
0 Likes
974

hi

if you want you can select from vbfa d.b table you have to hive one more declaration part to that particular table after you can continue with for all entries and also remove endif .

thanking you

Read only

Former Member
0 Likes
974

Hallo Ignacio,

the only way you have is to declare an ITAB containing the field names you need to select and put it in your select code.

The code should be similar to this:

TYPES: BEGIN OF ty_block1,

werks TYPE likp-werks,

lfdat TYPE likp-lfdat,

lfart TYPE likp-lfart,

vbeln TYPE likp-vbeln,

END OF ty_block1.

DATA: li_block1 TYPE STANDARD TABLE OF ty_block1.

DATA: li_block2 TYPE STANDARD TABLE OF ty_block2.

DATA : BEGIN OF t_fields OCCURS 0,

fieldname TYPE aind_str3-fieldname,

END OF t_fields.

APPEND 'LIKP~WERKS' TO t_fields.

APPEND 'LIKP~LFDAT' TO t_fields.

APPEND 'LIKP~LFART' TO t_fields.

APPEND 'LIKP~VBELN' TO t_fields.

SELECT (t_fields)

INTO TABLE li_block1

FROM likp

INNER JOIN lips ON lipsvbeln = likpvbeln

WHERE likp~werks IN s_werks

SELECT (t_fields)

INTO TABLE li_block2

FROM vbfa

FOR ALL ENTRIES IN li_block1

WHERE vbfa~vbelv = li_block1-vbeln.

Read only

Former Member
0 Likes
974

Hi,

Please try below code


TYPES: BEGIN OF ty_block1,
werks TYPE likp-werks,
lfdat TYPE likp-lfdat,
lfart TYPE likp-lfart,
vbeln TYPE likp-vbeln,
END OF ty_block1.

TYPES: BEGIN OF ty_block2,
vbeln TYPE likp-vbeln,
posnv type vbfa-posnv,
werks TYPE likp-werks,
lfdat TYPE likp-lfdat,
lfart TYPE likp-lfart,
END OF ty_block2.


tables:marc.
select-options s_werks for marc-werks.
DATA: li_block1 TYPE STANDARD TABLE OF ty_block1.
DATA: li_block2 TYPE STANDARD TABLE OF ty_block2.
data: wa_block1 type ty_block1,
      wa_block2 type ty_block2.

SELECT likp~werks likp~lfdat likp~lfart likp~vbeln
INTO TABLE li_block1
FROM likp
INNER JOIN lips ON lips~vbeln = likp~vbeln
WHERE likp~werks IN s_werks.

if sy-subrc = 0.
  select vbelv posnv
    into table li_block2
    from vbfa
    for all entries in li_block1
  where vbelv = li_block1-vbeln.
    if sy-subrc = 0.
      loop at li_block2 into wa_block2.
        read table li_block1 into wa_block1
                             with key vbeln = wa_block2-vbeln.
        if sy-subrc = 0.
          wa_block2-werks = wa_block1-werks.
          wa_block2-lfdat = wa_block1-lfdat.
          wa_block2-lfart = wa_block1-lfart.
          modify li_block2 from wa_block2.
        endif.
        clear: wa_block1, wa_block2.
      endloop.
    endif.
  endif.

Regards

Dande

Read only

Former Member
0 Likes
974

Hi Ignacio,

According to my opinion if U just create a copy of that internal table and DELETE the unwanted data based on ur conditions from the copied internal table, it will solve ur problem.

This will Improve ur Programs Performance rather than taking a Loop and transferring the Data to another internal Table.

Read only

Former Member
0 Likes
974

Thanks to all