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

Missing fields...

Former Member
0 Likes
2,381

Hi all.

I asked question shortly before and fix it with your helps. But this time I'm here another problem. Same problem. When I use transfering data a final table, some fields missing my final table. I suspect structures. I use debugger but cant fix the problem. This is all of my code. If you using debugger, you will understand my trouble.



REPORT  Z_ORGTURLISTESI.


TABLES: pa0001, s001, t001, t001p, t501t, p1000, p0001.



""""" SEÇİM EKRANI """""
""""" SEÇİM EKRANI """""
""""" SEÇİM EKRANI """""
""""" SEÇİM EKRANI """""

"Butonlar"
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON (20) pb_but1 USER-COMMAND BUT1. "dgr seçmler
SELECTION-SCREEN PUSHBUTTON (20) pb_but2 USER-COMMAND BUT2. "arama yard
SELECTION-SCREEN PUSHBUTTON (20) pb_but3 USER-COMMAND BUT3. "sıralama
SELECTION-SCREEN PUSHBUTTON (20) pb_but4 USER-COMMAND BUT4. "org. yapısı
SELECTION-SCREEN END OF LINE.

"Seçim aralıkları"
SELECTION-SCREEN BEGIN OF BLOCK secim WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_pernr FOR pa0001-pernr no intervals. "pers. numarası
SELECT-OPTIONS: s_bukrs FOR pa0001-bukrs no intervals. "şirket kodu
SELECT-OPTIONS: s_werks FOR pa0001-werks no intervals. "pers. alanı
SELECT-OPTIONS: s_btrtl FOR pa0001-btrtl no intervals. "pers. alt alanı
SELECT-OPTIONS: s_persg FOR pa0001-persg no intervals. "çalışan grubu
SELECT-OPTIONS: s_persk FOR pa0001-persk no intervals. "çal. alt grubu
SELECT-OPTIONS: s_abkrs FOR pa0001-abkrs no intervals. "bordro birimi
SELECT-OPTIONS: s_orgeh FOR pa0001-orgeh no intervals. "org. birimi

SELECTION-SCREEN END OF BLOCK secim.

"Pozisyon ve tarih seçimi aralıkları"
SELECTION-SCREEN BEGIN OF BLOCK secim2 WITH FRAME TITLE text-002.

SELECT-OPTIONS: s_plans FOR pa0001-plans OBLIGATORY no-extension. "poz.
SELECT-OPTIONS: s_sptag FOR s001-sptag no-extension .             "tarih

*s_sptag-low  = '29.01.2014'.
*s_sptag-high = '29.01.2014'.
*APPEND s_sptag.

SELECTION-SCREEN END OF BLOCK secim2.

"""""SEÇİM EKRANI BİTİMİ"""""
"""""SEÇİM EKRANI BİTİMİ"""""
"""""SEÇİM EKRANI BİTİMİ"""""
"""""SEÇİM EKRANI BİTİMİ"""""


INITIALIZATION.
pb_but1 = 'Diğer Seçimler'.
pb_but2 = 'Arama Yardımları'.
pb_but3 = 'Sıralama'.
pb_but4 = 'Org. Yapısı'.



"""""DATALAR"""""
"""""DATALAR"""""
"""""DATALAR"""""
"""""DATALAR"""""

DATA: BEGIN OF itabfinal OCCURS 0,

      pernr  LIKE pa0001-pernr, "pers. numarası
      sname  LIKE pa0001-sname, "çalışan/başvuran adı
      bukrs  LIKE pa0001-bukrs, "şirket kodu
      butext LIKE t001-butxt,   "şirket adı
      kostl  LIKE pa0001-kostl, "masraf yeri
      sachp  LIKE pa0001-sachp, "personel ana verileri sorumlusu
      plans  LIKE pa0001-plans, "pozisyon
      stext  LIKE p1000-stext,  "nesne tanımı
      werks  LIKE pa0001-werks, "personel alanı
      btext  LIKE t001p-btext,  "personel alt alanı texti
      persg  LIKE pa0001-persg, "çalışan grubu
      ptext  LIKE t501t-ptext,  "çalışan grubu tanımı(yaka durumu)

      END OF itabfinal.

DATA: BEGIN OF itab_pa OCCURS 0,

      pernr LIKE pa0001-pernr, "pers. numarası
      sname LIKE pa0001-sname, "çalışan/başvuran adı
      bukrs LIKE pa0001-bukrs, "şirket kodu
      kostl LIKE pa0001-kostl, "masraf yeri
      sachp LIKE pa0001-sachp, "personel ana verileri sorumlusu
      plans LIKE pa0001-plans, "pozisyon
      werks LIKE pa0001-werks, "personel alanı
      persg LIKE pa0001-persg, "çalışan grubu

      END OF itab_pa.

DATA: BEGIN OF itab_t0 OCCURS 0,
      butxt LIKE t001-butxt,   "şirket adı
      END OF itab_t0.

DATA: BEGIN OF itab_tp OCCURS 0,
      btext LIKE t001p-btext,  "personel alt alan texti
      END OF itab_tp.

DATA: BEGIN OF itab_t5 OCCURS 0,
      ptext LIKE t501t-ptext,  "çalışan grubu tanımı(m.yaka, çırak vs)
      END OF itab_t5.

DATA: gt_fieldcat        TYPE lvc_t_fcat,
      gs_layout          TYPE lvc_s_layo.


"""""STRUCTERE"""""
DATA: BEGIN OF gs_pa,
      pernr LIKE itab_pa-pernr, "pers. numarası
      sname LIKE itab_pa-sname, "çalışan/başvuran adı
      bukrs LIKE itab_pa-bukrs, "şirket kodu
      kostl LIKE itab_pa-kostl, "masraf yeri
      sachp LIKE itab_pa-sachp, "personel ana verileri sorumlusu
      plans LIKE itab_pa-plans, "pozisyon
      persg LIKE itab_pa-persg, "çalışan grubu
      END OF gs_pa.

DATA: BEGIN OF gs_t0,
      butxt LIKE itab_t0,       "şirket adı
      END OF gs_t0.

DATA: BEGIN OF gs_tp,
      btext LIKE itab_tp-btext, "personel alt alan texti
      END OF gs_tp.

DATA: BEGIN OF gs_t5,
      ptext LIKE itab_t5-ptext, "çalışan grubu tanımı(m.yaka, çırak vs)
      END OF gs_t5.



START-OF-SELECTION.
PERFORM get_data_pa.
PERFORM get_data_t1.
PERFORM get_data_tp.
PERFORM get_data_t5.
PERFORM transfer.


"""""PERFORMLAR"""""
form GET_DATA_PA .

SELECT * FROM pa0001 AS p
  INTO CORRESPONDING FIELDS OF TABLE itab_pa
  WHERE
  p~pernr   IN s_pernr AND
  p~bukrs   IN s_bukrs AND
  p~werks   IN s_werks AND
  p~btrtl   IN s_btrtl AND
  p~persg   IN s_persg AND
  p~persk   IN s_persk AND
  p~abkrs   IN s_abkrs AND
  p~orgeh   IN s_orgeh AND
  p~plans   IN s_plans.

endform.                    " GET_DATA_PA

form GET_DATA_T1 .

SELECT butxt FROM t001 INTO itab_t0
  FOR ALL ENTRIES IN itab_pa
   WHERE bukrs = itab_pa-bukrs ."AND bukrs EQ t001-bukrs.
ENDSELECT.

endform.                    " GET_DATA_T1

form GET_DATA_TP .

SELECT btext FROM t001p INTO itab_tp-btext
  FOR ALL ENTRIES IN itab_pa
  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.
ENDSELECT.

endform.                    " GET_DATA_TP

form GET_DATA_T5 .

SELECT ptext FROM t501t INTO itab_t5-ptext
  FOR ALL ENTRIES IN itab_pa
  WHERE persg = itab_pa-persg ."AND persg EQ t501t-persg.
ENDSELECT.


endform.                    " GET_DATA_T5

form TRANSFER .
LOOP AT itab_pa INTO gs_pa.
    MOVE-CORRESPONDING gs_pa TO itabfinal.
    APPEND gs_pa TO itabfinal.
ENDLOOP.

LOOP AT itab_t0 .
  MOVE-CORRESPONDING gs_t0 TO itabfinal.
  APPEND gs_t0 TO itabfinal.
ENDLOOP.

LOOP AT itab_tp.
  MOVE-CORRESPONDING gs_tp TO itabfinal.
  APPEND gs_tp TO itabfinal.
ENDLOOP.

LOOP AT itab_t5.
  MOVE-CORRESPONDING gs_t5 TO itabfinal.
  APPEND gs_t5 TO itabfinal.
ENDLOOP.
endform.                    " TRANSFER

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,117

Each time you appending the itabfinal you are adding additional row. So that you have for example row with only data from itab_t5 after this:

LOOP AT itab_t5.

  MOVE-CORRESPONDING gs_t5 TO itabfinal.

  APPEND gs_t5 TO itabfinal.

ENDLOOP.


i suppose you want to have line with all data from all tables you select. Let me give you example how you should proceed with table t001p:


you have this:


DATA: BEGIN OF itab_tp OCCURS 0,

      btext LIKE t001p-btext,  "personel alt alan texti

      END OF itab_tp.


DATA: BEGIN OF gs_tp,

      btext LIKE itab_tp-btext, "personel alt alan texti

      END OF gs_tp.


SELECT btext FROM t001p INTO itab_tp-btext

  FOR ALL ENTRIES IN itab_pa

  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.

ENDSELECT.


you should have this:


DATA: BEGIN OF itab_tp OCCURS 0,

       werks LIKE t001p-werks,

      btext LIKE t001p-btext,  "personel alt alan texti

      END OF itab_tp.


DATA: BEGIN OF gs_tp,

       werks LIKE itab_tp-werks,

      btext LIKE itab_tp-btext, "personel alt alan texti

      END OF gs_tp.


SELECT werks btext FROM t001p INTO itab_tp-btext

  FOR ALL ENTRIES IN itab_pa

  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.

ENDSELECT.


And then in loop on itab_pa:


LOOP AT itab_pa INTO gs_pa.

    MOVE-CORRESPONDING gs_pa TO itabfinal.

     READ TABLE itab_tp INTO gs_tp WITH KEY werks = gs_pa-werks.

    MOVE-CORRESPONDING gs_tp TO itabfinal.

    APPEND gs_pa TO itabfinal.

ENDLOOP.


That you need to do with all your tables.

8 REPLIES 8
Read only

Former Member
0 Likes
2,118

Each time you appending the itabfinal you are adding additional row. So that you have for example row with only data from itab_t5 after this:

LOOP AT itab_t5.

  MOVE-CORRESPONDING gs_t5 TO itabfinal.

  APPEND gs_t5 TO itabfinal.

ENDLOOP.


i suppose you want to have line with all data from all tables you select. Let me give you example how you should proceed with table t001p:


you have this:


DATA: BEGIN OF itab_tp OCCURS 0,

      btext LIKE t001p-btext,  "personel alt alan texti

      END OF itab_tp.


DATA: BEGIN OF gs_tp,

      btext LIKE itab_tp-btext, "personel alt alan texti

      END OF gs_tp.


SELECT btext FROM t001p INTO itab_tp-btext

  FOR ALL ENTRIES IN itab_pa

  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.

ENDSELECT.


you should have this:


DATA: BEGIN OF itab_tp OCCURS 0,

       werks LIKE t001p-werks,

      btext LIKE t001p-btext,  "personel alt alan texti

      END OF itab_tp.


DATA: BEGIN OF gs_tp,

       werks LIKE itab_tp-werks,

      btext LIKE itab_tp-btext, "personel alt alan texti

      END OF gs_tp.


SELECT werks btext FROM t001p INTO itab_tp-btext

  FOR ALL ENTRIES IN itab_pa

  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.

ENDSELECT.


And then in loop on itab_pa:


LOOP AT itab_pa INTO gs_pa.

    MOVE-CORRESPONDING gs_pa TO itabfinal.

     READ TABLE itab_tp INTO gs_tp WITH KEY werks = gs_pa-werks.

    MOVE-CORRESPONDING gs_tp TO itabfinal.

    APPEND gs_pa TO itabfinal.

ENDLOOP.


That you need to do with all your tables.

Read only

0 Likes
2,116

Thanks for help but its giving runtime error.

Read only

0 Likes
2,116

Hi Fatih,

Hope you are fresher to SAP ABAP world.

Please Use LDB for your requirement.

Hint:

Tcode: SE38-> Program Name->Select Attributes in the Radio button and in the Logical Database enter PNP and press enter. Later change the Radio button to source code.

Search how to use LDB and also check the HR report category for the Selection screen.

Once you use the LDB (in example I am using PNP) paste the below code:

   REPORT ztezt.

TABLES: pernr.
INFOTYPES: 0001.

TYPES: BEGIN OF ty_final,
        pernr TYPE persno,
        sname TYPE smnam,
        bukrs TYPE bukrs,
        butext TYPE char40,
        kostl TYPE kostl,
        sachp TYPE sachp,
        plans TYPE plans,
        stext TYPE char40,
        werks TYPE persa,
        btext TYPE char40,
        persg TYPE persg,
        ptext TYPE char40,
      END OF ty_final.

DATA: it_final TYPE TABLE OF ty_final,
      wa_final TYPE          ty_final.

CONSTANTS: lc_werks    TYPE dfies-fieldname VALUE  'WERKS',
           lc_bukrs    TYPE dfies-fieldname VALUE  'BUKRS',
           lc_persg    TYPE dfies-fieldname VALUE  'PERSG',
           lc_kostl    TYPE dfies-fieldname VALUE  'KOSTL',
           lc_plans    TYPE dfies-fieldname VALUE  'PLANS'.

DATA:   gv_text         TYPE string,
        gv_text1        TYPE string,
        gv_text2        TYPE string,
        gv_text3        TYPE string,
        gv_text4        TYPE string.

GET pernr.
  PERFORM fetch_texts.
  MOVE-CORRESPONDING p0001 TO wa_final.
  APPEND wa_final TO it_final.
  CLEAR: wa_final.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  FETCH_TEXTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fetch_texts .
  PERFORM: get_text_for_p0001_fields IN PROGRAM rptxtx00 USING p0001 lc_werks CHANGING gv_text,
           get_text_for_p0001_fields IN PROGRAM rptxtx00 USING p0001 lc_persg CHANGING gv_text1,
           get_text_for_p0001_fields IN PROGRAM rptxtx00 USING p0001 lc_plans CHANGING gv_text3,
           get_text_for_p0001_fields IN PROGRAM rptxtx00 USING p0001 lc_bukrs CHANGING gv_text4.

  wa_final-butext = gv_text4.
  wa_final-stext = gv_text3.
  wa_final-btext = gv_text.
  wa_final-ptext = gv_text1.
ENDFORM.                    " FETCH_TEXTS

Read only

0 Likes
2,116

Can you send info about runtime error. Maybe I can help.

Read only

0 Likes
2,116

Short text

Too few fields in INTO clause.

Error Analysis

In a SELECT or FETCH command, the field string or internal table specified in the into clause has 1 fields.It must have at least as many fields as in the Select clause, 2 fields in this case.

Read only

0 Likes
2,116

Hi Fatih,

I did not see your full code.

But this error means ,"Too few fields in INTO clause."

suppose GS_PA internal table having 5 fields & you are selecting or fetching less than 5 fields.

Check it.

Thanks

Gourav.

Read only

0 Likes
2,116

change this


SELECT werks btext FROM t001p INTO itab_tp-btext

  FOR ALL ENTRIES IN itab_pa

  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.

ENDSELECT.


to this


SELECT werks btext FROM t001p INTO itab_tp-werks itab_tp-btext

  FOR ALL ENTRIES IN itab_pa

  WHERE werks = itab_pa-werks ."AND werks EQ t001p-werks.

ENDSELECT.


remember that this will add only t001p table values to pa0001 values but you need to perform similar action for all tables you need. Add key fields to selects and then read everything in loop over itab_pa.

Read only

anup_deshmukh4
Active Contributor
0 Likes
2,116

Hello Fathih,

You are using MOVE-CORROSPONDING statement and you are having same field names in your final table may be due to it its overwriting with space  can you please do it field by field an then try..!

as your code seems fine..!

Hope this helps,

Cheers...!

Anup D.