Merkmalwert ändern

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

Merkmalwert ändern

Beitrag von Alexi (ForumUser / 15 / 0 / 0 ) »
Hallo,

ich gebe eine Liste mit Merkmalen (Tabelle ausp; Feld atwrt) und davor die Merkmalbezeichnung aus der cabnt; Feld atbez aus (also Merkmale zu Equipments)

Jetzt möchte ich gerne hinter einem bestimmten Merkmal ein Icon anzeigen lassen, um den Merkmalswert ändern zu können.

Icon ist kein Problem, Klick auch nicht. Nur hab ich mir das jetzt so vorgestellt, dass ich nach Klick auf das Icon eine Inputbox erhalte, in dem der aktuelle Merkmalswert vorgeblendet wird. Nach evtl. überschreiben in der Inputbox und Klick auf "ok" soll der neue Wert dann in das entsprechende Merkmal eingefügt werden

Seht ihr da 'ne Möglichkeit soetwas zu realisieren?

Primär geht es darum, dass bestimmte User nur ein Merkmalwert ändern können sollen. Ist vermutlich auch über IE02 möglich, aber hier gibt es viele Stellen, die man bzgl. "springen ins Material" etc absichern müsste und außerdem müsste man natürlich sehen, wie man verhindert, dass alle Merkmale geändert werden können. Und zu guter letzt, kennen die User die Liste schon und es wäre in unseren Augen der einfachste Weg

Vielleicht habt ihr ja einen Tipp für mich

sonnige Grüße, Alexi

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


Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

das mit der Klassifizierung und den Merkmalen ist so eine Sache.

Die Merkmale werden von der Klassifizierung verwaltet. Die haben Maßeinheiten, Bezeichnungen, Größenordnungen etc.

Das alles berücksichtigt die Eingabe, wenn man die "normalen" Transaktionen benutzt.

Klar, du kannst das auch in einer eigenen Transaktion vom Benutzer eingeben lassen und gegenchecken.

Von einem direkten Update der AUSP würde ich jedoch abraten. Lieber mal sehen, ob da ein BAPI zur Verfügung steht. (Für das Auslesen gibt es auch BAPIS, da greife ich auch nicht mehr direkt zur Tabelle).

Grup
babap

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Hi Alexi,

siehe hier:
Tricktresor: Chargen ändern
Tricktresor: Bewertung lesen
Bei dem Baustein BAPI_OBJCL_GETDETAIL solltest du in deinem Fall den Knipser "UNVALUATED_CHARS" auf "X" setzen. Dann bekommst du in der Rückgabetabelle auch die nicht bewerteten Merkmale. Diese könntest du im Grunde einfach alle in einem TableControl ausgeben.

Zur Eingabe von Werten gibt es einen Funktionsbaustein, dem man Felder bestimmten Typs mitgeben kann und deren Werte auf Wunsch gegen die Prüftabelle geprüft werden (POPUP*TO*DB_CHECKED* oder so ähnlich [POPUP_GET_VALUES_DB_CHECKED])

Gruß,
Enno

Beitrag von Gast ( / / 0 / 3 ) »
huhu,

puuh, klingt erstmal nach starkem Tobak. Aber danke für die Tipps und Hinweise, es scheint also auf jeden Fall schonmal machbar zu sein :-)

Dann werd ich doch mal schauen, was ich so hinbekomme. Ich danke euch!

sonnige Grüße, Alexi

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Nochwas (habe ich grade wiedergefunden...):
Fuba CTHE_VALUE_F4 gibt dir eine F4-Wertehilfe für Merkmale.

Gruß,
Enno

PS: ist alles halb so wild. Ist natürlich kein einfacher Report sondern schon eine richtige Transaktion! :wink:

Beitrag von Gast ( / / 0 / 3 ) »
Guten Morgen,
ewx hat geschrieben: Zur Eingabe von Werten gibt es einen Funktionsbaustein, dem man Felder bestimmten Typs mitgeben kann und deren Werte auf Wunsch gegen die Prüftabelle geprüft werden (POPUP*TO*DB_CHECKED* oder so ähnlich [POPUP_GET_VALUES_DB_CHECKED])
Den FuBa hab ich mir grad mal angesehen. Mir ist allerdings nicht wirklich klar, was ich bei den Import-Parametern untern
tables
fields =
eintragen muss?!

Du hast hierzu nicht zufällig ein Beispiel in petto oder? :)

sonnige Grüße, Alexi

ps: Respekt für tricktresor.de! Wirklich 'ne super Seite mit vielen Tipps und Ideen; auch wenn ich das erste Mal, als ich die Seite gefunden hatte, nicht wirklich dazu kommen bin, weiter zu arbeiten. Musste mich erst überall durchlesen *g*

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Hi Alexi,

danke für das Lob!
Wegen des Bausteins: Mach doch mal einen Verwendungsnachweis. Er müsste irgendwo in einem Programm RSPOP* zu Demozwecken aufgerufen werden.

Sonst geh mit der SE80 mal in die Entwicklungsklasse SPO1 oder SPO2 und schau dir die Programme dazu an.

Gruß,
Enno.

Beitrag von Alexi (ForumUser / 15 / 0 / 0 ) »
hi,

so, ich hab mich durch 'nen ganzen Stapel SAP Coding gequält, aber ich glaub das ist 'ne Nummer zu hoch für mich.

Ich hab hinter dem Merkmal ein Icon eingefügt, wenn ich drauf klicke passiert auch was .. soweit so gut. Nur krieg ich a) keine Inputbox hin und b) kann ich den Merkmalwert nicht darin anzeigen lassen und c) kann von Merkmalwert ändern schon gar keine Rede sein

Ich hab unten mal meinen Code angehängt, wie ich bis jetzt ist. Vielleicht kann mir jemand helfen mein Vorhaben umzusetzen?! *ganz lieb guck* :roll:

Die entsprechende Stelle an der ich momentan hänge hab ich mal mit "* HIER" gekennzeichnet (recht weit unten im Report)

Habt ihr 'ne Idee wie ich hier weiterkommen könnte?

Tausend Dank und sonnige Grüße, Alexi

Code: Alles auswählen.

report z_report.

* TYPES --------------------------------------------------------- *

types: begin of i_eqnra,
         equnr like equi-equnr,
       end of i_eqnra.

types: begin of i_eqnrz,
         equnr like equi-equnr,
         objnr like jest-objnr,
         eqnrz type i,
       end of i_eqnrz.


* TYPE POOLS ---------------------------------------------------- *
type-pools: slis.

include <icon>.


* TABLES -------------------------------------------------------- *

tables: equi,
        equz,               "Equipment Zeitsegment
        makt,               "Materialkurztext
        ausp,               "Ausprägungswerte der Sachmerkmale
        cabnt,              "Texte für Merkmale
        cawn,               "Texte für Werte
        objk,               "Objektliste Instandhaltung
        bgmkobj,
        z003,               "ALV Header
        z004.               "ALV Item


* INTERNE TABELLEN ---------------------------------------------- *

data: i_equi like standard table of equi with header line,
      i_equz like standard table of equz with header line,
      i_makt like standard table of makt with header line,
      i_ausp like standard table of ausp with header line,
      i_cabn like standard table of cabn with header line,
      i_cabnt like standard table of cabnt with header line,
      i_objk like standard table of objk with header line,
      i_bgmkobj like standard table of bgmkobj with header line.

data: header like standard table of z003 with header line,
      item type standard table of z004 with header line.

data: i_eqnra type hashed table of i_eqnra with unique key equnr
                                           with header line.

*DATA: i_eqnrz TYPE HASHED TABLE OF i_eqnrz WITH UNIQUE KEY equnr objnr
*                                             WITH HEADER LINE.

data: i_eqnrz type standard table of i_eqnrz with header line.

data: i_veqnr like equi-equnr.

data: sel_equnr like header."enthält nur die Equnr der ausgewählt. Zeile
data: bdcdata like bdcdata occurs 0 with header line.


* STRUKTUREN ---------------------------------------------------- *

data: fieldcat type slis_t_fieldcat_alv,
      layout   type slis_layout_alv,
      keyinfo  type slis_keyinfo_alv,
      events   type slis_t_event.


* KONSTANTEN ---------------------------------------------------- *

constants: top_of_page type slis_formname value 'TOP_OF_PAGE'.


* HILFSFELDER --------------------------------------------------- *

data: g_repid like sy-repid,
      g_count like sy-tfill,
      g_eqnrz type i.

data: rep_eqnr.             "Für Rep-Icon


*******************************************************************
* SELECTION-SCREEN
*******************************************************************

* Info-Block ---------------------------------------------------- *

selection-screen begin of block info
                          with frame title text-001.

selection-screen skip 2.
selection-screen comment 1(79) text-002.
selection-screen skip.

selection-screen end of block info.


* Selektions Block ---------------------------------------------- *

selection-screen begin of block selection
                          with frame title text-003.

selection-screen skip.
select-options: p_atwrt for ausp-atwrt visible length 18 no intervals.
select-options: p_equnr for equi-equnr memory id pqn visible length 18
                no intervals.

selection-screen skip.

selection-screen end of block selection.


*******************************************************************
* INITIALIZATION
*******************************************************************

initialization.

*******************************************************************
* START-OF-SELECTION
*******************************************************************

start-of-selection.

* Fehlermeldung, wenn Selektion nicht eingeschränkt wurde ------------ *
  if p_equnr[]  is initial and
     p_atwrt[]  is initial.
    message s009.
    exit.
  endif.

* Equipmentdaten lesen ----------------------------------------------- *
  perform read_equi.

* Materialbezeichnung lesen ------------------------------------------ *
  perform read_makt.

* Mustergarantie - Objekt Zuordnung für Gewährleistungsdatum lesen --- *
  perform read_bgmkobj.

* Merkmale selbst lesen ---------------------------------------------- *
  perform read_ausp.

* Merkmalseigenschaften lesen ---------------------------------------- *
  perform read_cabn.

* Merkmalsbezeichnung lesen ------------------------------------------ *
  perform read_cabnt.

************************************************************************
* END-OF-SELECTION
************************************************************************

end-of-selection.

* Ausgabe auf Bildschirm --------------------------------------------- *
  perform ausgabe_screen.

************************************************************************
* UNTERPROGRAMME
************************************************************************
*&---------------------------------------------------------------------*
*&      Form  READ_EQUI
*&---------------------------------------------------------------------*
form read_equi.

* Initialisieren -----------------------------------------------------
*
  clear:   i_equi,
           i_eqnrz,
           g_eqnrz.

  refresh: i_equi,
           i_eqnrz.

  perform sel_gruppe_1.           "Material, Equipment
  perform sel_gruppe_2.           "Merkmal, Merkmalwert

  perform read_equi_n.
  perform read_equz.

* Objektliste Instandhaltung lesen für selektierte Equipments
  perform read_objk.

endform.                    " READ_EQUI
*&---------------------------------------------------------------------*
*&      Form  READ_MAKT
*&---------------------------------------------------------------------*
form read_makt.

  check not i_equi[] is initial.

* Deklarationen ------------------------------------------------------ *
  data: begin of i_matnr occurs 0,
          matnr like mara-matnr,
        end of i_matnr.

* Initialisieren ----------------------------------------------------- *
  clear:   i_makt,
           i_matnr.
  refresh: i_makt,
           i_matnr.

* Matnr extrahieren -------------------------------------------------- *
  loop at i_equi.
    move i_equi-matnr to i_matnr-matnr.
    collect i_matnr.
  endloop.
  check not i_matnr[] is initial.

* MAKT lesen --------------------------------------------------------- *
  select * into table i_makt
         from makt
         for all entries in i_matnr
         where matnr = i_matnr-matnr
         and spras = sy-langu.
  sort i_makt by matnr.

endform.                    " READ_MAKT

*&---------------------------------------------------------------------*
*&      Form  READ_AUSP
*&---------------------------------------------------------------------*
form read_ausp.

  check not i_equi[] is initial.

* Deklarationen ------------------------------------------------------ *
  data: begin of i_objek occurs 0,
          objek like kssk-objek,
        end of i_objek.

* Initialisieren ----------------------------------------------------- *
  clear:   i_ausp,
           i_objek.
  refresh: i_ausp,
           i_objek.

* Objektnummer = Equipmentnummern -> extrahieren --------------------- *
  loop at i_equi.
    move i_equi-equnr to i_objek-objek.
    append i_objek.
  endloop.

  g_count = sy-tfill.

* AUSP lesen ---------------------------------------------------------

  select * into table i_ausp
         from ausp
         for all entries in i_objek
         where objek = i_objek-objek
*         AND   atzhl = '001'
         and   mafid = 'O'
         and   klart = '002'
         and   adzhl = '000'.
  sort i_ausp by objek
                 atinn.

endform.                    " READ_AUSP


*&---------------------------------------------------------------------*
*&      Form  READ_CABNT
*&---------------------------------------------------------------------*
form read_cabnt.

  check not i_ausp[] is initial.

* Deklarationen ------------------------------------------------------ *
  data: begin of i_atinn occurs 0,
          atinn like ausp-atinn,
        end of i_atinn.

* Initialisieren ----------------------------------------------------- *
  clear:   i_cabnt,
           i_atinn.
  refresh: i_cabnt,
           i_atinn.
  clear: i_cabnt-atbez.
* Interne Merkmalsnummern extrahieren -------------------------------- *
  loop at i_ausp.
    move i_ausp-atinn to i_atinn-atinn.
    collect i_atinn.
  endloop.
  check not i_atinn[] is initial.

* CABNT lesen -------------------------------------------------------- *

  select * into table i_cabnt
         from cabnt
         for all entries in i_atinn
         where atinn = i_atinn-atinn
         and   spras = sy-langu.
  sort i_cabnt by atinn.

endform.                    " READ_CABNT


*&---------------------------------------------------------------------*
*&      Form  AUSGABE_SCREEN
*&---------------------------------------------------------------------*
form ausgabe_screen.

* Headertabelle (Serialnummern) füllen ------------------------------- *
  perform fill_header.

* Itemtabelle (Merkmale) füllen -------------------------------------- *
  perform fill_item.

* ALV-Ausgabe -------------------------------------------------------- *
  perform alv_ausgabe.

endform.                    " AUSGABE_SCREEN


*&---------------------------------------------------------------------*
*&      Form  FILL_HEADER
*&---------------------------------------------------------------------*
form fill_header.

  check not i_equi[] is initial.

* Initialisieren ----------------------------------------------------- *
  clear:   header.
  refresh: header.

* Anzahl Sätze einfügen

  if sy-langu = 'D'.
    header-matnr = 'Anzahl Sätze:'.
  else.
    header-matnr = 'Data Records:'.
  endif.

  header-equnr = g_count.
  append header.

* HEADER-Tabelle füllen ---------------------------------------------- *

  loop at i_equi.

* ITABs lesen
    clear i_makt.
    clear i_bgmkobj.
    clear i_eqnrz.
    clear rep_eqnr.
    clear header-reps.

    read table i_makt with key matnr = i_equi-matnr
                                binary search.

    read table i_eqnrz with key equnr = i_equi-equnr
           binary search.

    read table i_bgmkobj with key j_objnr = i_eqnrz-objnr
           binary search.

    move: i_equi-matnr      to header-matnr,
          i_equi-equnr      to header-equnr,
          i_makt-maktx      to header-maktx,
          i_bgmkobj-gwldt   to header-gwldt.

    select single equnr from viqmfel
            into rep_eqnr
            where equnr = i_equi-equnr.

    if not rep_eqnr is initial.
      move icon_working_plan to header-reps.
    endif.

    append header.

  endloop.

endform.                    " FILL_HEADER


*&---------------------------------------------------------------------*
*&      Form  FILL_ITEM
*&---------------------------------------------------------------------*
form fill_item.

  check not i_equi[] is initial.

* Deklarationen ------------------------------------------------------ *
  data: l_objek like ausp-objek,
        l_typed type d,
        l_typep type p decimals 0,
        l_typec(8) type c.

* Initialisieren ----------------------------------------------------- *
  clear:   item.
  refresh: item.

* ITEM-Tabelle füllen ------------------------------------------------ *
  loop at i_equi.

* Initialisieren
    clear: item,
          l_objek.
    move i_equi-equnr to l_objek.

* Merkmale lesen
    loop at i_ausp where objek = l_objek.

* ITABs lesen
      read table i_cabn with key atinn = i_ausp-atinn
                                 binary search.
      read table i_cabnt with key atinn = i_ausp-atinn
                                  binary search.
* ITEM füllen
      move: i_equi-matnr   to item-matnr,
            i_equi-equnr   to item-equnr,
            i_cabnt-atbez  to item-atbez,
            i_ausp-atwrt   to item-atwrt.

      clear item-atwrt_edit.

      if item-atbez = 'KUNDE' or item-atbez = 'CUSTOMER'.
        move icon_change to item-atwrt_edit.
      endif.

      if item-atwrt is initial.
        if i_cabn-atfor = 'DATE'.
          move i_ausp-atflv to l_typep.
          write l_typep to l_typec left-justified.
          write l_typec to l_typed.
          call function 'CONVERT_DATE_TO_EXTERNAL'
            exporting
              date_internal            = l_typed
            importing
              date_external            = item-atwrt
            exceptions
              date_internal_is_invalid = 1
              others                   = 2.
        else.
          move i_ausp-atflv to l_typep.
          write l_typep to item-atwrt left-justified no-zero.
        endif.
      endif.
      append item.
    endloop.

  endloop.

endform.                    " FILL_ITEM
*&---------------------------------------------------------------------*
*&      Form  ALV_AUSGABE
*&---------------------------------------------------------------------*
form alv_ausgabe.

  g_repid = sy-repid.

* Verbindung von HEADER und ITEM definieren -------------------------- *
  perform define_keyinfo.

* Feldkatalog aufbauen ----------------------------------------------- *
  perform fieldcat_init using fieldcat[].

* Layout definieren -------------------------------------------------- *
  perform define_layout using layout.

* ALV-Listviewer aufrufen -------------------------------------------- *
  perform alv_list_display.

endform.                    " ALV_AUSGABE

*&---------------------------------------------------------------------*
*&      Form  define_keyinfo
*&---------------------------------------------------------------------*
form define_keyinfo.

* Initialisieren ----------------------------------------------------- *
  clear keyinfo.

  keyinfo-header01 = 'MATNR'.
  keyinfo-item01   = 'MATNR'.
  keyinfo-header02 = 'EQUNR'.
  keyinfo-item02   = 'EQUNR'.

endform.                    " define_keyinfo

*&---------------------------------------------------------------------*
*&      Form  FIELDCAT_INIT
*&---------------------------------------------------------------------*
form fieldcat_init using fieldcat type slis_t_fieldcat_alv.

  data: l_fieldcat type slis_fieldcat_alv.

  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
      i_program_name     = g_repid
      i_internal_tabname = 'HEADER'
      i_structure_name   = 'Z003'
    changing
      ct_fieldcat        = fieldcat[].

  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
      i_program_name     = g_repid
      i_internal_tabname = 'ITEM'
      i_structure_name   = 'Z004'
    changing
      ct_fieldcat        = fieldcat[].

  loop at fieldcat into l_fieldcat.
    if l_fieldcat-fieldname = 'EXPAND' and
       l_fieldcat-tabname = 'HEADER'.
      delete fieldcat.
    endif.
    if l_fieldcat-fieldname = 'MATNR' and
       l_fieldcat-tabname = 'ITEM'.
      delete fieldcat.
    endif.
    if l_fieldcat-fieldname = 'EQUNR' and
       l_fieldcat-tabname = 'ITEM'.
      delete fieldcat.
    endif.
    if l_fieldcat-fieldname = 'SERNR' and
       l_fieldcat-tabname = 'ITEM'.
      delete fieldcat.
    endif.
    if l_fieldcat-fieldname = 'ATWRT' and
       l_fieldcat-tabname = 'ITEM'.
      l_fieldcat-ddictxt  = 'M'.


      if sy-langu = 'D'.
        l_fieldcat-seltext_m = 'Merkmalwert'.
      else.
        l_fieldcat-seltext_m = 'Characteristic value'.
      endif.

      modify fieldcat from l_fieldcat.
    endif.

    field-symbols: <ls_fcat> like line of fieldcat.

    read table fieldcat
      assigning <ls_fcat>
      with key fieldname = 'REPS'.
    if sy-subrc eq 0.
      move 'X' to <ls_fcat>-icon.
      move 'X' to <ls_fcat>-hotspot.
    endif.

    read table fieldcat
     assigning <ls_fcat>
     with key fieldname = 'ATWRT_EDIT'.
    if sy-subrc eq 0.
      move 'X' to <ls_fcat>-icon.
      move 'X' to <ls_fcat>-hotspot.
    endif.

  endloop.

endform.                    " FIELDCAT_INIT

*&---------------------------------------------------------------------*
*&      Form  ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*

form alv_list_display.

  call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    exporting
      i_callback_program             = g_repid
*   i_callback_pf_status_set       = ' '
   i_callback_user_command        = 'USER_COMMAND'
      is_layout                      = layout
      it_fieldcat                    = fieldcat[]
*   I_DEFAULT                      = 'X'
*   I_SAVE                         = ' '
*   IS_VARIANT                     =
      i_tabname_header               = 'HEADER'
      i_tabname_item                 = 'ITEM'
*   I_STRUCTURE_NAME_HEADER        =
*   I_STRUCTURE_NAME_ITEM          =
      is_keyinfo                     = keyinfo
*   IS_PRINT                       =
    tables
      t_outtab_header                = header
      t_outtab_item                  = item
    exceptions
      program_error                  = 1
      others                         = 2
            .
  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.                    " ALV_LIST_DISPLAY

*&---------------------------------------------------------------------*
*&      Form  DEFINE_LAYOUT
*&---------------------------------------------------------------------*
form define_layout using layout type slis_layout_alv.

* Initialisieren ----------------------------------------------------- *
  clear: layout.

* LAYOUT füllen ------------------------------------------------------ *
  layout-zebra               = 'X'.
  layout-colwidth_optimize   = space.
  layout-expand_fieldname    = 'EXPAND'.
  layout-no_colhead          = space.
  layout-detail_popup        = 'X'.

endform.                    " DEFINE_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  READ_CABN
*&---------------------------------------------------------------------*
form read_cabn.

  check not i_ausp[] is initial.

* Deklarationen ------------------------------------------------------ *
  data: begin of i_atinn occurs 0,
          atinn like ausp-atinn,
        end of i_atinn.

* Initialisieren ----------------------------------------------------- *
  clear:   i_cabn,
           i_atinn.
  refresh: i_cabn,
           i_atinn.

* Interne Merkmalsnummern extrahieren -------------------------------- *
  loop at i_ausp.
    move i_ausp-atinn to i_atinn-atinn.
    collect i_atinn.
  endloop.
  check not i_atinn[] is initial.

* CABNT lesen -------------------------------------------------------- *
  select * into table i_cabn
         from cabn
         for all entries in i_atinn
         where atinn = i_atinn-atinn.
  sort i_cabn by atinn.

endform.                    " READ_CABN

*&---------------------------------------------------------------------*
*&      Form ANHANG_EQUZ
*&---------------------------------------------------------------------*
form anhang_equz.

  read table i_equz with key hequi = i_equi-equnr.
  if sy-subrc = 0 or sy-subrc = 2.

    clear: item-atbez, item-atwrt.
    move: i_equi-matnr   to item-matnr,
          i_equi-equnr   to item-equnr,
          i_equi-sernr   to item-sernr,
          '- - - - - - - - - - - - - - -'   to item-atbez,
          '- - - - - - - - - - - - - - -'   to item-atwrt.
    append item.
    clear: item-atbez, item-atwrt.
    move: i_equi-matnr   to item-matnr,
          i_equi-equnr   to item-equnr,
          i_equi-sernr   to item-sernr,
     'Unterequipments:'  to item-atbez.
    append item.

    loop at i_equz where hequi = i_equi-equnr.

* ITEM füllen
      move: i_equi-matnr   to item-matnr,
            i_equi-equnr   to item-equnr,
            i_equi-sernr   to item-sernr.
      write i_equz-equnr   to item-atbez right-justified no-zero.
      write i_equz-submt   to item-atwrt left-justified.
      append item.
    endloop.

    clear: item-atbez, item-atwrt.
    move: i_equi-matnr   to item-matnr,
          i_equi-equnr   to item-equnr,
          i_equi-sernr   to item-sernr,
          '- - - - - - - - - - - - - - -'   to item-atbez,
          '- - - - - - - - - - - - - - -'   to item-atwrt.
    append item.

  endif.

endform.                    " ANHANG_EQUZ

*&---------------------------------------------------------------------*
*&      Form READ_OBJK
*&---------------------------------------------------------------------*
form read_objk.

  check not i_equi[] is initial.

* Initialisieren -----------------------------------------------------
*
  clear:   i_objk.
  refresh: i_objk.

* OBJK lesen ---------------------------------------------------------
*
  select * into table i_objk
         from objk
         for all entries in i_equi
         where equnr = i_equi-equnr.
  sort i_objk by obknr.
endform.                    " READ_OBJK

*&---------------------------------------------------------------------
*
*&      Form ANHANG_MATSTDAT
*&---------------------------------------------------------------------
*
form anhang_matstdat.

* Materialstammdaten aus Materialkurztext lesen
  clear:   i_makt.

  check not i_makt[] is initial.

  read table i_makt with key matnr = i_equi-matnr
                             spras = 'a'
                            binary search.

  check not i_makt is initial.

* ITEM füllen
  clear item.
  move: i_equi-matnr   to item-matnr,
        i_equi-equnr   to item-equnr,
        i_equi-sernr   to item-sernr,
        'Gerätetyp:'   to item-atbez.
  write: i_makt-maktx  to item-atwrt.
  append item.


endform.                    "ANHANG_MATSTDAT

*&---------------------------------------------------------------------
*&      Form SEL_GRUPPE_1
*&---------------------------------------------------------------------
*
form sel_gruppe_1.

  if p_equnr[] is initial.

  else.

    select equnr objnr
           into i_eqnrz
           from equi
           where equnr in p_equnr.
      i_eqnrz-eqnrz = 1.
      collect i_eqnrz.
    endselect.
    sort i_eqnrz by equnr.
    g_eqnrz = g_eqnrz + 1.
  endif.

endform.                    " SEL_GRUPPE_1
*
**&---------------------------------------------------------------------
**
**&      Form SEL_GRUPPE_2
**&---------------------------------------------------------------------
**
form sel_gruppe_2.

  if p_atwrt[] is initial.
  else.
    clear:   i_veqnr,
             i_eqnra.
    refresh: i_eqnra.

    if ( p_atwrt-option = 'EQ' and
         p_atwrt-low is initial ) or
       ( p_atwrt-option = 'GE' and
         p_atwrt-low is initial ).

      write 'Achtung! Ergebnis eventuell falsch.'.

    endif.

    select objek
           into i_eqnra
           from ausp
           where atwrt in p_atwrt
           and atinn = '0000001015' "(PRD = ..1050)
           and   mafid = 'O'
           and   klart = '002'
           and   adzhl = '000'.
      collect i_eqnra.
    endselect.

    sort i_eqnra by equnr.

    loop at i_eqnra.
      i_eqnrz-equnr = i_eqnra-equnr.
      concatenate 'IE' i_eqnrz-equnr into i_eqnrz-objnr.
      i_eqnrz-eqnrz = 1.
      if i_eqnrz-equnr = i_veqnr.
      else.
        collect i_eqnrz.
        i_veqnr = i_eqnrz-equnr.
      endif.
    endloop.
    sort i_eqnrz by equnr.
    g_eqnrz = g_eqnrz + 1.
  endif.

endform.                    " SEL_GRUPPE_2

*
**&---------------------------------------------------------------------
**
**&      Form  READ_EQUI_N
**&---------------------------------------------------------------------
*
form read_equi_n.

* EQUI lesen ---------------------------------------------------------
*

  sort i_eqnrz by eqnrz descending equnr.

  loop at i_eqnrz.
    if i_eqnrz-eqnrz < g_eqnrz.
      exit.
    endif.

    select single * into i_equi
           from equi
           where equnr = i_eqnrz-equnr.
    append i_equi.
  endloop.

  sort i_equi by equnr.

endform.                    " READ_EQUI_N

*&---------------------------------------------------------------------*
*&      Form  READ_EQUZ
*&---------------------------------------------------------------------*
form read_equz.

* EQUZ lesen --------------------------------------------------------- *

  check not i_equi[] is initial.

  select * into table i_equz
         from equz
         for all entries in i_equi
         where hequi = i_equi-equnr.

  sort i_equz by hequi equnr.


endform.                    " READ_EQUZ


*&---------------------------------------------------------------------*
*&      Form  read_obj
*&---------------------------------------------------------------------*
form read_bgmkobj.

  clear i_bgmkobj.
  refresh i_bgmkobj.

* BGMKOBJ lesen ------------------------------------------------------

  sort i_eqnrz by eqnrz descending equnr.

  select * into table i_bgmkobj
         from bgmkobj
         for all entries in i_eqnrz
         where j_objnr = i_eqnrz-objnr.

endform.                    " read_BGMKOBJ

*&---------------------------------------------------------------------*
*       Auf Kommandos aus ALV reagieren
*----------------------------------------------------------------------*

form user_command using l_p_ucomm like sy-ucomm
                        l_p_selfield type slis_selfield.

  check not l_p_selfield-value is initial.

  read table header into sel_equnr index l_p_selfield-tabindex.

  if l_p_ucomm eq '&IC1'.
    case l_p_selfield-sel_tab_field.

      when 'HEADER-REPS'.              " Hotspot auf Rep-Icon

        perform bdc_action.

        call transaction 'IW69' using bdcdata
*                     MODE 'N'     "keine Anzeige
                     mode 'E'      "Anzeige bei Fehler
*                    UPDATE 'S'
*                    MESSAGES INTO t_messages
                    .
      when 'ITEM-ATWRT_EDIT'.
* HIER      
*        Inputbox anzeigen und Wert für ATBEZ "KUNDE" vorblenden
*        nach OK in der Inputbox Wert für ATBEZ "KUNDE" setzen

            message i010.
*             Ausgabe wurde erfolgreich durchgeführt.

    endcase.

  endif.

endform.                    "user_command

*&---------------------------------------------------------------------
*&      Form   BDC_DYNPRO
*&---------------------------------------------------------------------
*
form bdc_dynpro using par_dyn1 par_dyn2.

  clear bdcdata.
  bdcdata-program  = par_dyn1.
  bdcdata-dynpro   = par_dyn2.
  bdcdata-dynbegin = 'X'.
  append bdcdata.
  clear bdcdata.

endform.                    "bdc_dynpro

*&---------------------------------------------------------------------
*&      Form   BDC_FIELD
*&---------------------------------------------------------------------
*
form bdc_field using par1 par2.

  bdcdata-fnam = par1.
  bdcdata-fval = par2.
  append bdcdata.

endform.                    "bdc_field

*&---------------------------------------------------------------------
*&      Form   BDC_ACTION
*&---------------------------------------------------------------------
*
form bdc_action.

  clear bdcdata.
  refresh bdcdata.

  perform bdc_dynpro using 'RIQMEL40' '1000'.

  perform bdc_field using 'BDC_OKCODE' '/EGET'.

  perform bdc_dynpro using 'SAPMSSY0' '0120'.
  perform bdc_field using 'BDC_CURSOR' '04/04'.
  perform bdc_field using 'BDC_OKCODE' '=PICK'.

  perform bdc_dynpro using 'RIQMEL40' '1000'.

  perform bdc_field using 'BDC_CURSOR' 'EQUNR-LOW'.
  perform bdc_field using 'BDC_OKCODE' '=ONLI'.
  perform bdc_field using 'EQUNR-LOW' sel_equnr-equnr.

endform.                    "bdc_action

Beitrag von Gast ( / / 0 / 3 ) »
und hopp :)

sonnige Grüße, Alexi

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2408
Views
Merkmalwert in einer Verkaufsbeleg auslesen
von cuncon » 19.10.2017 12:51 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140