Etikettenlayout -> Smartforms

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

Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
Hallo liebe Helfer,

ich hab da mal ein Verständnisproblem und zwar will ich aus verknüpften Tabellen zwei Werte auslesen lassen. Ich hab da eine Select-Anweisung gemacht, aber ich hab das Gefühl, dass es vom Performance her nicht gut ist und nicht wirklich Sinn macht. Deshalb brauche ich euren Rat.

Hier mein Code:

Es handelt sich hier um Merkmal!

Code: Alles auswählen.

DATA: lt_ausp TYPE TABLE OF ausp,
      lt_ausp2 TYPE TABLE OF ausp,
      ls_ausp type ausp ,
      ls_ausp2 type ausp .


select * from ausp inner join mch1
  on mch1~cuobj_bm = ausp~objek
  inner join cabn on cabn~atinn = ausp~atinn
  into CORRESPONDING FIELDS OF TABLE lt_ausp
  where matnr = gs_matnr AND charg = gs_batch
    and cabn~atnam = 'NUTZBARE_HOEHE'.

select * from ausp inner join mch1
  on mch1~cuobj_bm = ausp~objek
  inner join cabn on cabn~atinn = ausp~atinn
  into CORRESPONDING FIELDS OF TABLE lt_ausp2
  where matnr = gs_matnr AND charg = gs_batch
    and cabn~atnam = 'NUTZBARE_BREITE'.

  read table lt_ausp index 1 INTO ls_ausp.
  read table lt_ausp2 index 1 INTO ls_ausp2.

  gv_height = ls_ausp-atflv.
  gv_width  = ls_ausp2-atflv.
Wie könnte man das besser lösen und was zu beachten ist später muss ich auch noch eine logische Abfrage machen. Wenn Klassenart '023', dann diese Merkmale und wenn Klassenart '300', dann diese Merkmale. Ich vermute über einen Select komme ich nicht weg oder?

Ich bedanke mich für jede Hilfe!

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


Re: Etikettenlayout -> Smartforms

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
Die Klassifizierung ist langsam...
Du solltest auf jeden Fall Funktionsbausteine zum Lesen nutzen!
http://tricktresor.de/content/index.php ... 23&aID=150

Es gibt bei der Klassifizierung zu viele Stolperfallen.
In der Regel sind die genannten Bausteine einfach zu nutzen.

PS: Der Titel deines Posts passt nicht so wirklich zum Inhalt...

Re: Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
Vielen Dank für den Hinweis EWX,

beim nächsten Mal weiss ich bescheid.

Mit diesem Code will ich Merkmalswerte von einem Objekt auslesen. Nur leider bekomme ich keinen Wert. Ich glaube das liegt an ls_objek, weil diese Variable zusammen geketteten String übergibt und deswegen kein Objekt in der KSSK-Tabelle findet. Ich habe auch mit festem Wert versucht, aber dann bekomme ich als Fehlermeldung 'keine Charge gefunden'. Mach ich einen logischen Fehler oder wo/wie soll ich das ganze nachvollziehen. Hätte jemand da eine bessere Lösung, vielen Dank im Voraus.

PS: Beim Debuggin wird auch die interne Tabelle lt_alloc_num nicht gefüllt!

Ich hoffe ich konnte es erklären!

Code: Alles auswählen.

 DATA ls_objek  TYPE BAPI1003_KEY-OBJECT.
 DATA ls_objtab TYPE BAPI1003_KEY-OBJECTTABLE.
 DATA ls_klart  TYPE BAPI1003_KEY-CLASSTYPE.
 DATA ls_class  TYPE BAPI1003_KEY-CLASSNUM.

 DATA: lt_alloc_char TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR.
 DATA lt_return TYPE  TABLE OF BAPIRET2.

 DATA: lt_alloc_num  TYPE TABLE OF BAPI1003_ALLOC_VALUES_NUM,
        ls_alloc like line of lt_alloc_num,
       lt_alloc_curr TYPE TABLE OF BAPI1003_ALLOC_VALUES_CURR.

Tables mcha.
select single * from mcha where matnr eq gs_matnr
                            and werks eq gs_werk
                            and charg eq gs_batch.

concatenate mcha-matnr mcha-werks mcha-charg into ls_objek.

CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
  EXPORTING
    OBJECTKEY              = ls_objek
    OBJECTTABLE            = 'MCH1'
    CLASSNUM               = ls_class
    CLASSTYPE              = ls_klart
*   KEYDATE                = SY-DATUM
*   UNVALUATED_CHARS       = ' '
*   LANGUAGE               = SY-LANGU
* IMPORTING
*   STATUS                 =
*   STANDARDCLASS          =
  TABLES
    ALLOCVALUESNUM         =  lt_alloc_num
    ALLOCVALUESCHAR        =  lt_alloc_char
    ALLOCVALUESCURR        =  lt_alloc_curr
    RETURN                 =  lt_return
          .

  read table lt_alloc_num into ls_alloc
  with key CHARACT = 'NUTZBARE_HOEHE'.
 
  gv_height = ls_alloc-VALUE_FROM.
 
  read table lt_alloc_num into ls_alloc
  with key CHARACT = 'NUTZBARE_BREITE'.

  gv_width  = ls_alloc-VALUE_FROM.
Zuletzt geändert von EmrahKilic am 29.08.2012 16:33, insgesamt 1-mal geändert.

Re: Etikettenlayout -> Smartforms

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
Tricktresor hat geschrieben: Zusammengesetzter Objektschlüssel
Bei Klassifizierungen für Tabellen mit mehreren Schlüsselfeldern muss der Objektschlüssel aus diesen zusammengesetzt werden. Eine einfache Methode bietet der Baustein BAPI_OBJCL_CONCATENATEKEY. Im Falle des oben genannten Beispiels müssen dem Baustein die Namen und Werte der Schlüsselfelder in einer Tabelle übergeben werden (Wie bei CACL_OBJECT_VALIDATION_READ). Übergeben wird dann der korrekt zusammengesetzte Schlüssel.
Mit Concatenate wird das nix.
Der Objektschlüssel wäre in deinem Fall etwa:

Code: Alles auswählen.

12345ABCDE........1000CHARG4711...
. = space
Mit concatenate bekommst du:

Code: Alles auswählen.

12345ABCDE1000CHARG4711

Re: Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
Hallo EWX,

zumindest wird der Objektschlüssel in die interne Tablle lt_alloclist fortgeschrieben. Nun, stolpere ich bei der Ausgabe von Merkmalswerten. Es wird nicht in die interne Tabelle lt_allocnum geschrieben, woran liegst ? Mache ich die loop-Schleife falsch, oder liegt das an etwas anderes?

Code: Alles auswählen.

DATA: ls_objectkey    TYPE BAPI1003_KEY-OBJECT,
*      ls_objecttable TYPE BAPI1003_KEY-OBJECTTABLE,
*      ls_classtype   TYPE BAPI1003_KEY-CLASSTYPE.
       lt_alloclist   TYPE TABLE OF BAPI1003_ALLOC_LIST,
       lt_allocnum    TYPE TABLE OF BAPI1003_ALLOC_VALUES_NUM,
       ls_allocnum    like line of  lt_allocnum,
       lt_allocchar   TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR,
       lt_return      TYPE TABLE OF BAPIRET2.

ls_objectkey = gs_matnr.
ls_objectkey+18(10) = gs_batch.


CALL FUNCTION 'BAPI_OBJCL_GETCLASSES'
  EXPORTING
    OBJECTKEY_IMP         = ls_objectkey
    OBJECTTABLE_IMP       = 'MCH1'
    CLASSTYPE_IMP         = '023'
*   READ_VALUATIONS       =
*   KEYDATE               = SY-DATUM
*   LANGUAGE              = SY-LANGU
  TABLES
    ALLOCLIST             = lt_alloclist
*    ALLOCVALUESCHAR       = lt_allocchar
*   ALLOCVALUESCURR       =
    ALLOCVALUESNUM        = lt_allocnum
    RETURN                = lt_return
          .


loop at lt_allocnum into ls_allocnum.
  
  read table lt_allocnum into ls_allocnum
  with key charact = 'HERSTELLDATUM'.

  GV_HERSTELLDATUM = ls_allocnum-value_from.

  read table lt_allocnum into ls_allocnum
  with key charact = 'HERSTELLUHRZEIT'.

  GV_HERSTELLUHRZEIT  = ls_allocnum-value_from.

  endloop.

Re: Etikettenlayout -> Smartforms

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Um Dir eine genaue Antwort zu geben muessten wir Deine Daten kennen.

Oder schau mal in die Tabelle 'INOB' ob Du dort etwas ueber Dein Material/Charge steht.

Re: Etikettenlayout -> Smartforms

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
Ist ls_objectkey korrekt gefüllt? -> Debugger!

Re: Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
Hier der Debugmodus!!!

Re: Etikettenlayout -> Smartforms

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
WAS steht in der LT_RETURN Tabelle?

In etwa: "Klassifizierungen gefunden ... oder nicht gefunden?"

Re: Etikettenlayout -> Smartforms

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
Und was ist mit LT_ALLOCCHAR?

Re: Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
ewx hat geschrieben:Und was ist mit LT_ALLOCCHAR?
das gleiche, wie bei lt_allocnum, leer!

Ich habe davor mit diesem Fuba CLAF_CLASSIFICATION_OF_OBJECTS veruscht und das klappt ganz gut. Nur bei diesem Fuba habe ich das Problem das der Merkmalswert in Merkmalsbezeichnung ersetzt wird, z.B. ich habe ein Wert '82' und Bezeichnung 'Blau', dann bekomme ich anstelle 82, die Bezeichnung. Wie kann man das umgehen? Dann könnte ich mit diesem Fuba weiter arbeiten.

Re: Etikettenlayout -> Smartforms

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
EmrahKilic hat geschrieben:
ewx hat geschrieben:Und was ist mit LT_ALLOCCHAR?
das gleiche, wie bei lt_allocnum, leer!
Kann auch nicht gefüllt sein, wenn der Übergabeparameter ausgesternt ist...

Code: Alles auswählen.

  TABLES
    ALLOCLIST             = lt_alloclist
*    ALLOCVALUESCHAR       = lt_allocchar

Re: Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
Ich hab lt_allocchar aktiviert, dennoch geht es nicht...

Re: Etikettenlayout -> Smartforms

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
Auszug aus der Funktionsbausteindoku zum Parameter "READ_VALUATIONS":
SAP-Doku hat geschrieben: Bewertungen lesen
Bedeutung
Wenn dieses Kennzeichen gesetzt ist, werden auch die zugehörigen
Bewertungen gelesen und ausgegeben. Werden die Bewertungen nicht
benötigt, so sollte das Kennzeichen aus Performancegründen auch nicht
gesetzt werden.

Re: Etikettenlayout -> Smartforms

Beitrag von EmrahKilic (ForumUser / 37 / 1 / 0 ) »
einfach nur Klasse!
Vielen vielen Dank.

Ich hab da noch ein Problem, jetzt stimmt die Formatierung des Datums und Uhrzeit nicht. Muss ich da noch ein Fuba aufrufen oder kann man das anders regeln?

Seite 1 von 1

Vergleichbare Themen

5
Antw.
3547
Views
SMARTFORMS
von suedamer » 20.03.2013 18:36 • Verfasst in ABAP® für Anfänger
2
Antw.
1501
Views
Smartforms
von floflo » 12.08.2019 09:02 • Verfasst in ABAP® Core
1
Antw.
2498
Views
Smartforms
von thelocgirl » 24.05.2011 10:48 • Verfasst in ABAP® Core
4
Antw.
4197
Views
Smartforms und GOS
von gazzle » 09.06.2011 14:43 • Verfasst in ABAP® Core
3
Antw.
3624
Views
SmartForms...Hilfe
von MarkusW » 04.09.2007 14:31 • 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

Stücklisten
vor 6 Stunden von Selma.schwarz 1 / 39
Belege
vor 6 Stunden von Selma.schwarz 1 / 30
Belege
vor 6 Stunden von Selma.schwarz 1 / 38

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

Stücklisten
vor 6 Stunden von Selma.schwarz 1 / 39
Belege
vor 6 Stunden von Selma.schwarz 1 / 30
Belege
vor 6 Stunden von Selma.schwarz 1 / 38

Unbeantwortete Forenbeiträge

Stücklisten
vor 6 Stunden von Selma.schwarz 1 / 39
Belege
vor 6 Stunden von Selma.schwarz 1 / 30
Belege
vor 6 Stunden von Selma.schwarz 1 / 38