Hilfe bei Typkonvertierung gesucht

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Hilfe bei Typkonvertierung gesucht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Hi @ all,

Habe folgendes Programm geschrieben: Es updated die ungeplanten korrigierten Verbräuche der mver aus der mseg (menge) .
Soweit passt das auch. Nun habe ich ein Typkonvertierungsproblem und finde den Fehler einfach nicht. Leider habe ich niemand den ich dazu zu Rate ziehen könnte. deswegen versuche ich es auf diesem Weg.
Hier mein Progrämmchen:

Code: Alles auswählen.

TABLES: mseg, mver, mkpf.

DATA: it_mseg LIKE STANDARD TABLE OF mseg,
      wa_mseg LIKE LINE OF it_mseg.
DATA: it_mver LIKE STANDARD TABLE OF mver, 
      wa_mver LIKE LINE OF it_mver.

TYPES: BEGIN OF zeile_typ,
       mblnr LIKE mkpf-mblnr,
       bldat LIKE mkpf-bldat,
       matnr LIKE mseg-matnr,
       END OF zeile_typ.

TYPES it_mkpf_typ TYPE STANDARD TABLE OF zeile_typ.

DATA: it_mkpf TYPE it_mkpf_typ.
DATA: wa_mkpf TYPE zeile_typ.


SELECT-OPTIONS:

belart FOR mkpf-blart,

mblnr FOR mkpf-mblnr,

werk FOR mver-werks,

p_matnr FOR mver-matnr.



SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 ,
            r2 RADIOBUTTON GROUP rad1 DEFAULT 'X' .
SELECTION-SCREEN END OF block b1.
*
*at SELECTION-SCREEN ON RADIOBUTTON GROUP rad1.
*
*BREAK-POINT.
*  if r1 = 'X'.
*write:/' dschimix'.
*  elseif r2 = 'X'.
*    write:/    wa_mver-muv01, wa_mver-muv02, wa_mver-muv03, wa_mver-muv04, wa_mver-muv05, wa_mver-muv06, wa_mver-muv07,
*    wa_mver-muv08, wa_mver-muv09, wa_mver-muv10, wa_mver-muv11, wa_mver-muv12.
*  endif.


SELECT mkpf~mblnr mkpf~bldat mseg~matnr  FROM  mkpf
  INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr CLIENT specified INTO CORRESPONDING FIELDS OF TABLE it_mkpf
    WHERE mkpf~mjahr > '2009' AND mseg~matnr IN p_matnr AND mseg~werks IN werk AND mseg~bwart = '601' AND mkpf~mblnr IN mblnr AND mkpf~blart IN belart.
"and blart in belart and mblnr in mblnr .   "Alle Belegnummern mit Belegdatum die dem Mandant entsprechen


SELECT mver~muv01 mver~muv02 mver~muv03 mver~muv04 mver~muv05 mver~muv06 mver~muv07 mver~muv08 mver~muv09 mver~muv10 mver~muv11 mver~muv12
  FROM mver INTO CORRESPONDING FIELDS OF TABLE it_mver WHERE matnr IN p_matnr AND werks IN werk
  .



LOOP AT it_mkpf INTO wa_mkpf.   " Aktuelle MBLNR

  DATA: zunplnd LIKE mseg-menge.
  DATA: zbelnr LIKE mseg-mblnr.
  DATA: zbldat LIKE mkpf-bldat.
  DATA: monat TYPE n LENGTH 2.

  CLEAR: zunplnd, zbelnr, zbldat, monat.

  ADD wa_mkpf-mblnr TO zbelnr.  " Übergabe MBLNR
  ADD wa_mkpf-bldat TO zbldat.  " Übergabe Datum

  DATA lv_menge TYPE menge.

  SELECT SUM( menge ) FROM mseg INTO lv_menge
    WHERE matnr = wa_mkpf-matnr  AND werks = '2211' AND mblnr EQ zbelnr.

  "mblnr EQ zbelnr and werks in werk and mseg~mjahr > '2009'. " and bwart = '601' and werks in werk.
  "Zu verbuchende MENGE nach Bewegunsart und Belegnummer

  DATA zeilen TYPE i.
  DATA l_field TYPE char5.  "l_field = Feldname
  FIELD-SYMBOLS <l_field> TYPE ANY.  " Zeiger

  monat = zbldat+4(2).        " Feld Monat erhält den Monat des Belegdatums
  DATA lt_amveu TYPE TABLE OF mveu_ueb.
  DATA ls_amveu TYPE mveu_ueb.

  LOOP AT it_mver INTO wa_mver WHERE matnr = wa_mkpf-matnr.
    CONCATENATE 'MUV' monat INTO l_field.

    ASSIGN COMPONENT l_field OF STRUCTURE wa_mver TO <l_field>.   "
    ADD zunplnd TO <l_field>.

    ls_amveu-matnr = wa_mver-matnr.
    ls_amveu-werks = wa_mver-werks.
    CONCATENATE zbldat(6) '01' INTO ls_amveu-ertag.
    	ls_amveu-kovbw = lv_menge.     "[b]sind in einem Unicodeprogramm nicht ineinander konvertierbar???aber warum??[/b]
    ls_amveu-kzexi = 'X'.
    COLLECT ls_amveu INTO lt_amveu.

  ENDLOOP.



ENDLOOP.



CALL FUNCTION 'MVER_MAINTAIN_DARK'
* EXPORTING
*   SPERRMODUS            = ' '
*   MAX_ERRORS            = 0
  TABLES
*    AMVEG_UEB             =
    amveu_ueb             = lt_amveu
*   AMERRDAT_F            =
* EXCEPTIONS
*   UPDATE_ERROR          = 1
*   INTERNAL_ERROR        = 2
*   TOO_MANY_ERRORS       = 3
*   OTHERS                = 4
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ls_amveu-kovbw = lv_menge erzeugt den Fehler..

Vielen Dank schon mal.

mfg

Manu

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Hilfe bei Typkonvertierung gesucht

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
Hi Manu,

das liegt daran, dass du deine Variable lv_menge falsch deklariert hast.

Code: Alles auswählen.

DATA lv_menge TYPE menge.
Was du haben willst ist aber

Code: Alles auswählen.

DATA lv_menge TYPE mseg-menge.
und der Typ von mseg-menge ist "menge_d" und nicht "menge" (das ist eine struktur)

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
mknueppel

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Hilfe bei Typkonvertierung gesucht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
OMG is manchmal so "trivial", vielen Dank für dein Blick darauf...

Ich hätte noch eine Frage, meine Idee ist es per radiobutton auszuwählen ob man nun den Update tätigen möchte oder sich die Daten die man updaten möchte "nur" anzeigen lassen möchte.
Nun habe ich das Problem sobald ich den Fuba in die Form stelle kennt er lt_mveu nicht mehr, wie bekomm ich die Programmsteuerung so hin das nach auswahl der radiobutton entweder das writestatement oder der fuba aktiviert wird?..sry für die noobfragen..

Hier nochmal der Code (mit radiobuttons):

Code: Alles auswählen.

TABLES: mseg, mver, mkpf.

DATA: it_mseg LIKE STANDARD TABLE OF mseg,
      wa_mseg LIKE LINE OF it_mseg.
DATA: it_mver LIKE STANDARD TABLE OF mver,
      wa_mver LIKE LINE OF it_mver.

TYPES: BEGIN OF zeile_typ,
       mblnr LIKE mkpf-mblnr,
       bldat LIKE mkpf-bldat,
       matnr LIKE mseg-matnr,
       END OF zeile_typ.

TYPES it_mkpf_typ TYPE STANDARD TABLE OF zeile_typ.

DATA: it_mkpf TYPE it_mkpf_typ.
DATA: wa_mkpf TYPE zeile_typ.


SELECT-OPTIONS:

belart FOR mkpf-blart,

mblnr FOR mkpf-mblnr,

werk FOR mver-werks,

p_matnr FOR mver-matnr.



SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 ,
            r2 RADIOBUTTON GROUP rad1 DEFAULT 'X' .
SELECTION-SCREEN END OF block b1.

at SELECTION-SCREEN ON RADIOBUTTON GROUP rad1.

BREAK-POINT.
  if r1 = 'X'.
perform update_mver.
  elseif r2 = 'X'.
    write:/    wa_mver-muv01, wa_mver-muv02, wa_mver-muv03, wa_mver-muv04, wa_mver-muv05, wa_mver-muv06, wa_mver-muv07,
    wa_mver-muv08, wa_mver-muv09, wa_mver-muv10, wa_mver-muv11, wa_mver-muv12.
  endif.



SELECT mkpf~mblnr mkpf~bldat mseg~matnr  FROM  mkpf
  INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr CLIENT specified INTO CORRESPONDING FIELDS OF TABLE it_mkpf
    WHERE mkpf~mjahr > '2009' AND mseg~matnr IN p_matnr AND mseg~werks IN werk AND mseg~bwart = '601' AND mkpf~mblnr IN mblnr AND mkpf~blart IN belart.
"and blart in belart and mblnr in mblnr .   "Alle Belegnummern mit Belegdatum die dem Mandant entsprechen


*DESCRIBE TABLE it_mkpf.

SELECT mver~muv01 mver~muv02 mver~muv03 mver~muv04 mver~muv05 mver~muv06 mver~muv07 mver~muv08 mver~muv09 mver~muv10 mver~muv11 mver~muv12
  FROM mver INTO CORRESPONDING FIELDS OF TABLE it_mver WHERE matnr IN p_matnr AND werks IN werk
  .



LOOP AT it_mkpf INTO wa_mkpf.   " Aktuelle MBLNR

  DATA: zunplnd LIKE mseg-menge.
  DATA: zbelnr LIKE mseg-mblnr.
  DATA: zbldat LIKE mkpf-bldat.
  DATA: monat TYPE n LENGTH 2.

  CLEAR: zunplnd, zbelnr, zbldat, monat.

  ADD wa_mkpf-mblnr TO zbelnr.  " Übergabe MBLNR
  ADD wa_mkpf-bldat TO zbldat.  " Übergabe Datum

  DATA lv_menge TYPE mseg-menge.
break-point.
  SELECT SUM( menge ) FROM mseg INTO lv_menge
    WHERE matnr = wa_mkpf-matnr  AND werks = '2211' AND mblnr EQ zbelnr.

*  SELECT mseg~menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE it_mseg
*    WHERE matnr IN p_matnr AND werks = '2211' AND mblnr EQ zbelnr.


  "mblnr EQ zbelnr and werks in werk and mseg~mjahr > '2009'. " and bwart = '601' and werks in werk.
  "Zu verbuchende MENGE nach Bewegunsart und Belegnummer
*  LOOP AT it_mseg INTO wa_mseg.
*    ADD wa_mseg-menge TO zunplnd. SUM.
*
*  ENDLOOP.

  DATA zeilen TYPE i.
  DATA l_field TYPE char5.  "l_field = Feldname
  FIELD-SYMBOLS <l_field> TYPE ANY.  " Zeiger

  monat = zbldat+4(2).        " Feld Monat erhält den Monat des Belegdatums
  DATA lt_amveu TYPE TABLE OF mveu_ueb.
  DATA ls_amveu TYPE mveu_ueb.

  LOOP AT it_mver INTO wa_mver WHERE matnr = wa_mkpf-matnr.
    CONCATENATE 'MUV' monat INTO l_field.

    ASSIGN COMPONENT l_field OF STRUCTURE wa_mver TO <l_field>.   "
    ADD zunplnd TO <l_field>.
*
    ls_amveu-matnr = wa_mver-matnr.
    ls_amveu-werks = wa_mver-werks.
    CONCATENATE zbldat(6) '01' INTO ls_amveu-ertag.
      ls_amveu-kovbw = lv_menge.
    ls_amveu-kzexi = 'X'.
    COLLECT ls_amveu INTO lt_amveu.

  ENDLOOP.



ENDLOOP.


*WRITE:/ wa_mver-muv01, wa_mver-muv02, wa_mver-muv03, wa_mver-muv04, wa_mver-muv05, wa_mver-muv06, wa_mver-muv07,
*    wa_mver-muv08, wa_mver-muv09, wa_mver-muv10, wa_mver-muv11, wa_mver-muv12.


form update_mver.


CALL FUNCTION 'MVER_MAINTAIN_DARK'
* EXPORTING
*   SPERRMODUS            = ' '
*   MAX_ERRORS            = 0
  TABLES
*    AMVEG_UEB             =
    amveu_ueb             = lt_amveu.
*   AMERRDAT_F            =
* EXCEPTIONS
*   UPDATE_ERROR          = 1
*   INTERNAL_ERROR        = 2
*   TOO_MANY_ERRORS       = 3
*   OTHERS                = 4
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

endform.
Ich steh heute irgendwie auf dem Schlauch..

mfg

Manu

Re: Hilfe bei Typkonvertierung gesucht

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hallo Manu,

du hast 2 Möglichkeiten:
1. Du übergebst den Wert via USING an deine Form
2. Du definierst lt_mveu als globale Variable (also außerhalb aller Events, Forms etc.)

Ich würde dir zur ersten Varianten raten, da globale Variablen zu vermeiden sind.
Dafür kannst du den Table Type MGV_MVEU_UEB nutzen.
Beispiel:

Code: Alles auswählen.

" Before
 DATA lt_amveu TYPE TABLE OF mveu_ueb.
" After
 DATA lt_amveu TYPE MGV_MVEU_UEB.

PERFORM update_mver USING lt_amveu.

FORM update_mver USING it_amveu TYPE MGV_MVEU_UEB.

      CALL FUNCTION 'MVER_MAINTAIN_DARK'
        TABLES
          amveu_ueb             = it_amveu.   " use here the using parameter it_amveu
                 .
      IF sy-subrc <> 0.
      ENDIF.
ENDFORM.
Du solltest die interne Tabelle lt_amveu vor dem PERFORM definieren. Also am Anfang von AT SELECTION-SCREEN ON RADIOBUTTON GROUP rad1.

Viele Grüße
weigo

Re: Hilfe bei Typkonvertierung gesucht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Danke für die Info @ weigo, jedoch würde ich es nun wieder anders machen..

Ich hoffe nun kurz vor dem Ziel zu sein..

Code: Alles auswählen.

TABLES: mseg, mver, mkpf.

DATA: it_mseg LIKE STANDARD TABLE OF mseg,
      wa_mseg LIKE LINE OF it_mseg.
DATA: it_mver LIKE STANDARD TABLE OF mver,
      wa_mver LIKE LINE OF it_mver.

TYPES: BEGIN OF zeile_typ,
       mblnr LIKE mkpf-mblnr,
       bldat LIKE mkpf-bldat,
       matnr LIKE mseg-matnr,
       END OF zeile_typ.

TYPES it_mkpf_typ TYPE STANDARD TABLE OF zeile_typ.

DATA: it_mkpf TYPE it_mkpf_typ.
DATA: wa_mkpf TYPE zeile_typ.


SELECT-OPTIONS:

belart FOR mkpf-blart,

mblnr FOR mkpf-mblnr,

werk FOR mver-werks,

p_matnr FOR mver-matnr.



SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 ,
            r2 RADIOBUTTON GROUP rad1 DEFAULT 'X' .
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON RADIOBUTTON GROUP rad1.


  IF r1 = 'X'.
    PERFORM update_mver.
  ELSEIF r2 = 'X'.
    perform write_data.
  ENDIF.



  SELECT mkpf~mblnr mkpf~bldat mseg~matnr  FROM  mkpf
    INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr CLIENT specified INTO CORRESPONDING FIELDS OF TABLE it_mkpf
      WHERE mkpf~mjahr > '2009' AND mseg~matnr IN p_matnr AND mseg~werks IN werk AND mseg~bwart = '601' AND mkpf~mblnr IN mblnr AND mkpf~blart IN belart.
  "and blart in belart and mblnr in mblnr .   "Alle Belegnummern mit Belegdatum die dem Mandant entsprechen


*DESCRIBE TABLE it_mkpf.

  SELECT mver~muv01 mver~muv02 mver~muv03 mver~muv04 mver~muv05 mver~muv06 mver~muv07 mver~muv08 mver~muv09 mver~muv10 mver~muv11 mver~muv12
    FROM mver INTO CORRESPONDING FIELDS OF TABLE it_mver WHERE matnr IN p_matnr AND werks IN werk
    .


form update_mver.
  LOOP AT it_mkpf INTO wa_mkpf.   " Aktuelle MBLNR

    DATA: zunplnd LIKE mseg-menge.
    DATA: zbelnr LIKE mseg-mblnr.
    DATA: zbldat LIKE mkpf-bldat.
    DATA: monat TYPE n LENGTH 2.

    CLEAR: zunplnd, zbelnr, zbldat, monat.

    ADD wa_mkpf-mblnr TO zbelnr.  " Übergabe MBLNR
    ADD wa_mkpf-bldat TO zbldat.  " Übergabe Datum

    DATA lv_menge TYPE mseg-menge.
    BREAK-POINT.
    SELECT SUM( menge ) FROM mseg INTO lv_menge
      WHERE matnr = wa_mkpf-matnr  AND werks = '2211' AND mblnr EQ zbelnr.

*  SELECT mseg~menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE it_mseg
*    WHERE matnr IN p_matnr AND werks = '2211' AND mblnr EQ zbelnr.


    "mblnr EQ zbelnr and werks in werk and mseg~mjahr > '2009'. " and bwart = '601' and werks in werk.
    "Zu verbuchende MENGE nach Bewegunsart und Belegnummer
*  LOOP AT it_mseg INTO wa_mseg.
*    ADD wa_mseg-menge TO zunplnd. SUM.
*
*  ENDLOOP.

    DATA zeilen TYPE i.
    DATA l_field TYPE char5.  "l_field = Feldname
    FIELD-SYMBOLS <l_field> TYPE ANY.  " Zeiger

    monat = zbldat+4(2).        " Feld Monat erhält den Monat des Belegdatums
    DATA lt_amveu TYPE TABLE OF mveu_ueb.
    DATA ls_amveu TYPE mveu_ueb.

    LOOP AT it_mver INTO wa_mver WHERE matnr = wa_mkpf-matnr.
      CONCATENATE 'MUV' monat INTO l_field.

      ASSIGN COMPONENT l_field OF STRUCTURE wa_mver TO <l_field>.   "
      ADD zunplnd TO <l_field>.
*
      ls_amveu-matnr = wa_mver-matnr.
      ls_amveu-werks = wa_mver-werks.
      CONCATENATE zbldat(6) '01' INTO ls_amveu-ertag.
      ls_amveu-kovbw = lv_menge.
      ls_amveu-kzexi = 'X'.
      COLLECT ls_amveu INTO lt_amveu.

    ENDLOOP.



  ENDLOOP.



  CALL FUNCTION 'MVER_MAINTAIN_DARK'
* EXPORTING
*   SPERRMODUS            = ' '
*   MAX_ERRORS            = 0
    TABLES
*    AMVEG_UEB             =
      amveu_ueb             = lt_amveu.
*   AMERRDAT_F            =
* EXCEPTIONS
*   UPDATE_ERROR          = 1
*   INTERNAL_ERROR        = 2
*   TOO_MANY_ERRORS       = 3
*   OTHERS                = 4
  .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  endform.

                  "update_mver

form write_data.

   LOOP AT it_mkpf INTO wa_mkpf.   " Aktuelle MBLNR

    DATA: zunplnd LIKE mseg-menge.
    DATA: zbelnr LIKE mseg-mblnr.
    DATA: zbldat LIKE mkpf-bldat.
    DATA: monat TYPE n LENGTH 2.

    CLEAR: zunplnd, zbelnr, zbldat, monat.

    ADD wa_mkpf-mblnr TO zbelnr.  " Übergabe MBLNR
    ADD wa_mkpf-bldat TO zbldat.  " Übergabe Datum

    DATA lv_menge TYPE mseg-menge.
    BREAK-POINT.
    SELECT SUM( menge ) FROM mseg INTO lv_menge
      WHERE matnr = wa_mkpf-matnr  AND werks = '2211' AND mblnr EQ zbelnr.

*  SELECT mseg~menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE it_mseg
*    WHERE matnr IN p_matnr AND werks = '2211' AND mblnr EQ zbelnr.


    "mblnr EQ zbelnr and werks in werk and mseg~mjahr > '2009'. " and bwart = '601' and werks in werk.
    "Zu verbuchende MENGE nach Bewegunsart und Belegnummer
*  LOOP AT it_mseg INTO wa_mseg.
*    ADD wa_mseg-menge TO zunplnd. SUM.
*
*  ENDLOOP.

    DATA zeilen TYPE i.
    DATA l_field TYPE char5.  "l_field = Feldname
    FIELD-SYMBOLS <l_field> TYPE ANY.  " Zeiger

    monat = zbldat+4(2).        " Feld Monat erhält den Monat des Belegdatums
    DATA lt_amveu TYPE TABLE OF mveu_ueb.
    DATA ls_amveu TYPE mveu_ueb.

    LOOP AT it_mver INTO wa_mver WHERE matnr = wa_mkpf-matnr.
      CONCATENATE 'MUV' monat INTO l_field.

      ASSIGN COMPONENT l_field OF STRUCTURE wa_mver TO <l_field>.   "
      ADD zunplnd TO <l_field>.
*
      ls_amveu-matnr = wa_mver-matnr.
      ls_amveu-werks = wa_mver-werks.
      CONCATENATE zbldat(6) '01' INTO ls_amveu-ertag.
      ls_amveu-kovbw = lv_menge.
      ls_amveu-kzexi = 'X'.
      COLLECT ls_amveu INTO lt_amveu.

    ENDLOOP.



  ENDLOOP.
  WRITE:/ wa_mver-muv01, wa_mver-muv02, wa_mver-muv03, wa_mver-muv04, wa_mver-muv05, wa_mver-muv06, wa_mver-muv07,
         wa_mver-muv08, wa_mver-muv09, wa_mver-muv10, wa_mver-muv11, wa_mver-muv12.
  endform.
auch wenn ich nicht nach loc bezahlt werde..:)
Jedoch habe ich nun noch das Problem das ich bei radiobutton "anzeige der daten" keine daten angezeigt bekomme. das programm bleibt einfach im selectiocreen stecken und geht nicht in mein writestatement........hilfe..

mfg

Manu

Re: Hilfe bei Typkonvertierung gesucht

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hi Manu,

du brauchst noch einen USER-COMMAND, sonst lösen deine Radiobuttons keinen Event aus, z.B. USER-COMMAND radio (wobei radio einfach ein Name ist):

Code: Alles auswählen.

    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    PARAMETERS: r1 RADIOBUTTON GROUP rad1 USER-COMMAND radio,
                r2 RADIOBUTTON GROUP rad1 DEFAULT 'X' .
    SELECTION-SCREEN END OF BLOCK b1.
Viele Grüße
weigo

Re: Hilfe bei Typkonvertierung gesucht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Thx,

Nun eine weitere Frage, warum bekomm ich im writestatement keine werte angezeigt (überall nur 0 müssten aber z.T. auch Werte > 0 sein)..

Code: Alles auswählen.


TABLES: mseg, mver, mkpf.

DATA: it_mseg LIKE STANDARD TABLE OF mseg,
      wa_mseg LIKE LINE OF it_mseg.
DATA: it_mver LIKE STANDARD TABLE OF mver,
      wa_mver LIKE LINE OF it_mver.

TYPES: BEGIN OF zeile_typ,
       mblnr LIKE mkpf-mblnr,
       bldat LIKE mkpf-bldat,
       matnr LIKE mseg-matnr,
       END OF zeile_typ.

TYPES it_mkpf_typ TYPE STANDARD TABLE OF zeile_typ.

DATA: it_mkpf TYPE it_mkpf_typ.
DATA: wa_mkpf TYPE zeile_typ.


SELECT-OPTIONS:

belart FOR mkpf-blart,

mblnr FOR mkpf-mblnr,

werk FOR mver-werks,

p_matnr FOR mver-matnr.

  SELECT mkpf~mblnr mkpf~bldat mseg~matnr  FROM  mkpf
    INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr INTO CORRESPONDING FIELDS OF TABLE it_mkpf
      WHERE mkpf~mjahr > '2009' AND mseg~matnr IN p_matnr AND mseg~werks IN werk AND mseg~bwart = '601'
      AND mkpf~mblnr IN mblnr AND mkpf~blart IN belart.
 

  SELECT mver~muv01 mver~muv02 mver~muv03 mver~muv04 mver~muv05 mver~muv06 mver~muv07 mver~muv08 mver~muv09 mver~muv10 mver~muv11 mver~muv12
    FROM mver INTO CORRESPONDING FIELDS OF TABLE it_mver WHERE matnr IN p_matnr AND werks IN werk.
 
   LOOP AT it_mkpf INTO wa_mkpf.   " Aktuelle MBLNR

    DATA lv_menge TYPE mseg-menge.
    DATA: zbelnr LIKE mseg-mblnr.
    DATA: zbldat LIKE mkpf-bldat.
    DATA: monat TYPE n LENGTH 2.

    CLEAR: lv_menge, zbelnr, zbldat, monat.

    ADD wa_mkpf-mblnr TO zbelnr.  " Übergabe MBLNR
    ADD wa_mkpf-bldat TO zbldat.  " Übergabe Datum




    SELECT SUM( menge ) FROM mseg INTO lv_menge
      WHERE matnr = wa_mkpf-matnr  AND werks = '2211' AND mblnr EQ zbelnr.

    DATA l_field TYPE char5.  "l_field = Feldname
    FIELD-SYMBOLS <l_field> TYPE ANY.  " Zeiger

    monat = zbldat+4(2).
         " Feld Monat erhält den Monat des Belegdatums
    DATA lt_amveu TYPE TABLE OF mveu_ueb.
    DATA ls_amveu TYPE mveu_ueb.

    LOOP AT it_mver INTO wa_mver WHERE matnr = wa_mkpf-matnr.
      CONCATENATE 'MUV' monat INTO l_field.

      ASSIGN COMPONENT l_field OF STRUCTURE wa_mver TO <l_field>.   "
      ADD lv_menge TO <l_field>.
*
      ls_amveu-matnr = wa_mver-matnr.
      ls_amveu-werks = wa_mver-werks.
      CONCATENATE zbldat(6) '01' INTO ls_amveu-ertag.
      ls_amveu-kovbw = lv_menge.
      ls_amveu-kzexi = 'X'.
      COLLECT ls_amveu INTO lt_amveu.

    ENDLOOP.
 WRITE:/ wa_mver-muv01, wa_mver-muv02, wa_mver-muv03, wa_mver-muv04, wa_mver-muv05, wa_mver-muv06, wa_mver-muv07,
         wa_mver-muv08, wa_mver-muv09, wa_mver-muv10, wa_mver-muv11, wa_mver-muv12.
  ENDLOOP.
gibts hier ne Möglichkeit die werte zu "speichern"..?

mfg

Manu

Re: Hilfe bei Typkonvertierung gesucht

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hast du mal den Debugger benutzt?

Also ich habe das mal ausprobiert und in unserem System gibt es keine Materialnummer.
Beim Loop nutzt du aber die Materialnummer:

Code: Alles auswählen.

LOOP AT it_mver INTO wa_mver WHERE matnr = wa_mkpf-matnr.
Daher würde ich mal raten, dass der Loop nicht durchlaufen wird und daher alle Werte 0 sind.

Viele Grüße
weigo

Seite 1 von 1

Vergleichbare Themen

16
Antw.
17339
Views
Hilfe gesucht
von Zino » 08.11.2007 11:08 • Verfasst in Java & SAP®
1
Antw.
2029
Views
HILFE - Control gesucht ...
von JFK » 13.06.2006 22:14 • Verfasst in Dialogprogrammierung
0
Antw.
1786
Views
Hilfe, bei Prüfungsfragen gesucht
von Richard C. » 17.01.2005 15:57 • Verfasst in SAP - Allgemeines
0
Antw.
977
Views
Typkonvertierung P zu F?
von unken » 28.01.2010 14:33 • Verfasst in ABAP® für Anfänger
3
Antw.
1558
Views
Typkonvertierung
von castadiva » 25.10.2007 13:46 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 1 / 243
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1881
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8484