gelöst Integration einer Dynpro


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Integration einer Dynpro

Beitragvon Schäfer_anfänger » 13.01.2017, 13:23

Hallo ich bin DH Student und habe gerade meinen dritten Tag mit ABAP.
Ich habe nun die Aufgabe bekommen bestimmte Werte aus der "Mara" und "Makt" herauszulesen und wiederzugeben (auch mit Selection Screen und ALV) soweit hat alles so einigermaßen funktioniert. Nun hab ich aber die Aufgabe bekommen ein Dynpro zu erstellen mit welchem nur einzelne Werte (Materialnummer + Materialkurztext + Erstelldatum...) wiedergegeben wird aber nur für diesen einen Artikel. Es soll möglich sein mit einem Button (rechts) zum nächsten Artikel zu springen und einem Button (links) zum vorherigen. Nun habe ich ein Dynpro erstellt habe aber ehrlich gesagt keine Ahnung wie ich das Dynpro einbinde so, dass in den Ausgabefeldern des Dynpros der Wert angezeigt wird. Also bei Materialnummer die "matnr" welche ich aus "mara" ausgelesen habe. Wie gesagt es ist mein dritter Tag mit ABAP und ich bin bisher noch recht neu im Programmieren. Ich freue mich über jeden Versuch mir zu helfen und ich gebe mein bestes eure Hilfe zu verstehen/nachzuvollziehen.

EDIT: Was muss ich denn bei dem Dynpro bei der Ablauflogik bei "PBO" und "PAI" eintragen...?

Hier mein Code:

Code: Alles auswählen
AUTHORITY-CHECK OBJECT 'M_MATE_STA'
ID 'ACTVT' FIELD '03'
ID 'STATM' DUMMY.
IF sy-subrc NE 0.
MESSAGE: 'Berechtigung nicht vorhanden' TYPE 'E'.
ELSE.
DATA: zvl_best_verlauf_matnr  TYPE matnr,
      zvl_best_verlauf_maktx  TYPE maktx,
      zvl_best_verlauf_ersda  TYPE ersda,
      zvl_best_verlauf_spras  TYPE spras,
      zvl_best_verlauf_mtart  TYPE mtart.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-se1.
  SELECT-OPTIONS:
  material FOR zvl_best_verlauf_matnr,
  beschr   FOR zvl_best_verlauf_maktx NO INTERVALS NO-EXTENSION,
  art      FOR zvl_best_verlauf_mtart NO INTERVALS NO-EXTENSION,
  language FOR zvl_best_verlauf_spras NO INTERVALS NO-EXTENSION,
  date     FOR zvl_best_verlauf_ersda NO INTERVALS NO-EXTENSION.

SELECTION-SCREEN END OF BLOCK BLOCK1.

IF language IS INITIAL.                                        " Der Bereich ist nur drin weil ein Kollege meinte das müsste so . Ich bin anderer Meinung
 DATA language_line LIKE LINE OF language.
language_line-low = sy-langu.
 language_line-sign = 'I'.
language_line-option = 'EQ'.
 APPEND language_line TO language.
 ENDIF.

SELECT mara~matnr, maktx, spras, mtart, ersda
  FROM mara
  INNER JOIN makt ON makt~matnr = mara~matnr
  INTO TABLE @DATA(lt_result)
  UP TO 100 ROWS
  WHERE mara~matnr              In @material
  AND   makt~maktx              In @beschr
  AND   ersda                   In @date
  AND   mtart                   In @art
  AND   makt~spras              In @language.

CALL SCREEN '1001'.

ENDIF.
 
ABAP Anfänger vom allerfeinsten!
Schäfer_anfänger
ForumUser
 
Beiträge: 38
Registriert: 13.01.2017, 13:15
Dank erhalten: 0 mal
Ich bin: Student/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Integration einer Dynpro

Beitragvon Unit605 » 13.01.2017, 13:33

Schäfer_anfänger hat geschrieben:.....habe gerade meinen dritten Tag mit ABAP.


...DRITTER TAG....???!?!?!?!?!?!? :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo:

Berechtigungabfrage, Selections-Screen, Select-Statements, ALV, Dynproerstellung..... AM DRTTEN TAG?????!!!!!?!?!?!?
Unit605
Expert
 
Beiträge: 961
Registriert: 05.02.2009, 21:29
Wohnort: Port Charlotte, FL, USA
Dank erhalten: 91 mal
Ich bin: Freiberufler/in

Re: Integration einer Dynpro

Beitragvon Schäfer_anfänger » 13.01.2017, 13:38

Ups dieser Beitrag war ausversehen wo kann ich ihn löschen?
Zuletzt geändert von Schäfer_anfänger am 13.01.2017, 13:49, insgesamt 1-mal geändert.
ABAP Anfänger vom allerfeinsten!
Schäfer_anfänger
ForumUser
 
Beiträge: 38
Registriert: 13.01.2017, 13:15
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Integration einer Dynpro

Beitragvon Schäfer_anfänger » 13.01.2017, 13:46

Unit605 hat geschrieben:
Schäfer_anfänger hat geschrieben:.....habe gerade meinen dritten Tag mit ABAP.


...DRITTER TAG....???!?!?!?!?!?!? :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo: :hallo:

Berechtigungabfrage, Selections-Screen, Select-Statements, ALV, Dynproerstellung..... AM DRTTEN TAG?????!!!!!?!?!?!?


Haha ja? :D Ich bin mir auch nicht sicher ob das gut ist früher hatten sie wohl hier in der Firma ne 2 wöchige Schulung mit 8 Stunden pro Tag. Jetzt ist es nur noch ne kurze Einführung/Schulung dann 2 Wochen anhand vom Skript durcharbeiten und Aufgaben (die erwähnte) lösen und dann nochmal eine Schulung über 2 Stunden... xD
ABAP Anfänger vom allerfeinsten!
Schäfer_anfänger
ForumUser
 
Beiträge: 38
Registriert: 13.01.2017, 13:15
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Integration einer Dynpro

Beitragvon ralf.wenzel » 14.01.2017, 00:30

Und dann wundert man sich über Fachkräftemangel.... Unfassbar.


Ralf *wurde noch richtig ausgebildet....
Bild Ralf WenzelHeuristika
SAP-Development • Datenschutzberatung
PublikationenUngarische NotationXing
ralf.wenzel
Top Expert
 
Beiträge: 2441
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 104 mal
Ich bin: Freiberufler/in

Re: Integration einer Dynpro

Beitragvon black_adept » 16.01.2017, 10:23

Hallo Schäfer,

ich glaube da müssen wir dich langsam ranführen - dein bisheriger Code ist noch ein klein wenig verbesserbar.

Kurze Frage vorab - hast du Programmiervorkenntnisse aus anderen Sprachen oder ist ABAP quasi dein Einstieg in die Programmierung?


1.) Zeitpunkte: Man darf zwar die Zeitpunkte auch weglassen und es wird dann implizit END-OF-SELECTION verwendet - aber es ist programmatisch eigentlich immer am saubersten wenn du vor dem 1. Programmschritt ( Deklarationen sind kein Programmschritt ) den Zeitpunkt angibst, an dem dieser ausgeführt werden soll. --> Irgendwo ein "END-OF-SELECTION" einbauen.

2.) Selektionsbild: Auch hier ein wenig persönlicher Stil - aber da das Selektionsbild üblicherweise vor dem 1. Programmschritt angezeigt wird sollte das zugehörige Coding welches das SelBild aufbaut auch vor dem End-of-Selection stehen. ( Frühere Zeitpunkte als das Selektionsbild ignorieren wir jetzt erst mal )

3.) Daten- und Typdeklarationen: Du hast da ein paar globale Variablen definiert - im ELSE-Pfad. Das ist zwar inzwischen bei einigen neuen ABAP-Sprachelementen implizit möglich und wenn eine Varible tatsächlich nur in einem kurzen Codingabschnitt verwendet wird gut vertretbar - aber bei globalen Variablen sollte man die schon irgendwo gesammelt deklarieren und versuchen auf so viele wie möglich davon zu verzichten

4.) Modularisierung: Lager deine Selektion in eine Form-Routine oder Methode aus. Dann kannst du einige deiner Variablen die nur für die Selektion benötigt werden in der Modularisierungseinheit deklarieren und musst diese nicht mehr global halten. Macht den Code auch übersichtlicher

5.) DAS DYNPRO - das Unbekannte Wesen.
Schau erstmal bei Google nach ob du da einen ansprechenden Treffer findest.
Ganz kurz:
  • Entferne die Kommentare die beim automatischen Anlegen des Dynpros generiert werden und lass dir die zugehörigen Module automatisch generieren. Die dort zu findenden Kommentare auch wieder entfernen und via Doppelklick anlegen
  • Fülle in der Elementliste das Feld OK-CODE mit einer Variablen die du global im Programm definiert hast und die vom Typ SYUCOMM ist.
  • Setze im PAI-Modul den Befehle "SET SCREEN 0" ab - abhängig davon, was in dem im vorigen Schritt definierten Feld steht damit zu aus dem Dynpro wieder heraus kommst.
  • Wirf ein paar Felder auf das Dynpro

Wenn das so weit läuft (ohne die ganze andere Bearbeitung mit den Buttons und dem Anzeigen von Materialinformationen ) kannst du dich ja mal wieder melden
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2575
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 348 mal
Ich bin: Freiberufler/in

Re: Integration einer Dynpro

Beitragvon Schäfer_anfänger » 17.01.2017, 10:55

Bin auch so weiter gekommen :)

Code: Alles auswählen
CONTROLS DYNPRO_TABLE TYPE TABLEVIEW USING SCREEN 1001.

AUTHORITY-CHECK OBJECT 'M_MATE_STA'
  ID 'ACTVT' FIELD '03'
  ID 'STATM' DUMMY.
IF sy-subrc NE 0.
   MESSAGE: 'Berechtigung nicht vorhanden' TYPE 'E'.
ELSE.

TYPES: BEGIN OF ty_struct1,
          feld1 TYPE matnr,
          feld2 TYPE maktx,
       END OF ty_struct1.

DATA: zvl_best_verlauf_matnr  TYPE matnr,
      zvl_best_verlauf_maktx  TYPE maktx,
      zvl_best_verlauf_ersda  TYPE ersda,
      zvl_best_verlauf_spras  TYPE spras,
      zvl_best_verlauf_mtart  TYPE mtart,
      lt_result               TYPE TABLE OF ty_struct1,
      ls_result               TYPE ty_struct1,
      TOP_LINE                TYPE i.

DATA: ok_code TYPE sy-ucomm,
      save_ok LIKE ok_code.



SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-se1.
  SELECT-OPTIONS:
  material FOR zvl_best_verlauf_matnr,
  beschr   FOR zvl_best_verlauf_maktx NO INTERVALS NO-EXTENSION,
  art      FOR zvl_best_verlauf_mtart NO INTERVALS NO-EXTENSION,
  language FOR zvl_best_verlauf_spras NO INTERVALS NO-EXTENSION,
  date     FOR zvl_best_verlauf_ersda NO INTERVALS NO-EXTENSION.

SELECTION-SCREEN END OF BLOCK BLOCK1.
ENDIF.

IF language is INITIAL.
  DATA language_line LIKE LINE OF language.
  language_line-low = sy-langu.
  language_line-sign = 'I'.
  language_line-option = 'EQ'.
  APPEND language_line TO language.
 ENDIF.

CALL SCREEN '1001'.



MODULE Load_data OUTPUT.
SELECT mara~matnr, maktx "spras, mtart, ersda
  FROM mara
  INNER JOIN makt ON makt~matnr = mara~matnr
  INTO TABLE @lt_result
  UP TO 100 ROWS
  WHERE mara~matnr              In @material
  AND   makt~maktx              In @beschr
  AND   ersda                   In @date
  AND   mtart                   In @art
  AND   makt~spras              In @language.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
  WHEN 'BUTTON_EXIT'.
      LEAVE PROGRAM.
  WHEN 'BUTTON_RETURN'.
      CALL SELECTION-SCREEN 1000.
  ENDCASE.
 ENDMODULE.
ABAP Anfänger vom allerfeinsten!
Schäfer_anfänger
ForumUser
 
Beiträge: 38
Registriert: 13.01.2017, 13:15
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Integration einer Dynpro

Beitragvon hausi » 17.01.2017, 12:15

Supi, dass das bei dir soweit klappt...

Ich bin bei rein technischen Fragen meist nicht diejenige, die man als erstes fragt (weil ich noch das "Küken" bin).

Gerade deshalb lass mich dir im Hinblick auf deinen Code noch einen kleinen Tipp mit auf den Weg geben:
Achte auf eine saubere Formatierung, z. B. alle Deklarationen an den Anfang einer Methode
Schau dass du deinen Code kommentierst z. B. was selektierst du warum wohin? - sei ruhig auch kreativ in Umschreibungen dann macht das ganze auch noch Spaß beim lesen :D
etc....

Du schießt dir selbst ins Knie - spätestens wenn du nach 3-4 Wochen den eigenen Code nochmal anschauen und verstehen willst.

Meine Kollegen, die alle (noch) sehr viel besser programmieren, sind da auch häufiger mal schlampig und freuen sich aber
doch wenn sie mal meinen Code in die Finger bekommen ^^

LG und viel Geduld für die weitere Ausbildung ;)

die Hausi
hausi
ForumUser
 
Beiträge: 50
Registriert: 10.07.2015, 15:03
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: Integration einer Dynpro

Beitragvon ralf.wenzel » 17.01.2017, 12:39

Naja, das ist ja nicht ganz unumstritten, was du da sagst. Kommentare sollten nicht zuviel und zu lang sein. WAS man macht, steht im ABAP, darum sind sprechende Methodennamen so wichtig. Das WAS fällt bei mir regelmäßig durch, das bläht nur die Kommentare auf. Das WARUM ist deutlich wichtiger.

Außerdem (das wissen viele gar nicht!) kann man jede Methode übersetzbar dokumentieren, was deutlich besser ist als ein sprachenfixer Kommentar, weil es eben die Option zur Übersetzung nicht verbaut.


Ralf
Bild Ralf WenzelHeuristika
SAP-Development • Datenschutzberatung
PublikationenUngarische NotationXing

Für diese Nachricht hat ralf.wenzel einen Dank bekommen :
ibo
ralf.wenzel
Top Expert
 
Beiträge: 2441
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 104 mal
Ich bin: Freiberufler/in

Re: Integration einer Dynpro

Beitragvon Schäfer_anfänger » 17.01.2017, 14:08

ralf.wenzel hat geschrieben:Und dann wundert man sich über Fachkräftemangel.... Unfassbar.


Ralf *wurde noch richtig ausgebildet....


Was hat das mit Fachkräftemangel zu tun? Ich lerne es ja während meines Studiums....
Zuletzt geändert von Schäfer_anfänger am 17.01.2017, 14:29, insgesamt 1-mal geändert.
ABAP Anfänger vom allerfeinsten!
Schäfer_anfänger
ForumUser
 
Beiträge: 38
Registriert: 13.01.2017, 13:15
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Integration einer Dynpro

Beitragvon black_adept » 17.01.2017, 14:18

ralf.wenzel hat geschrieben:Außerdem (das wissen viele gar nicht!) kann man jede Methode übersetzbar dokumentieren, was deutlich besser ist als ein sprachenfixer Kommentar, weil es eben die Option zur Übersetzung nicht verbaut.

Sagt der Mann der Eclipse der alten SAPGUI vorzieht und damit eben auf diese Übersetzungsmöglichkeit verzichtet.
Keyword Documentation hat geschrieben:An ABAP Doc short text is part of the source code and is not translatable. This short text replaces the translatable short text of the repository object in its original language when synchronized, which means it must also be specified in the original language. This is an exception to the rule that ABAP Doc comments must always be in English. The original language can be flagged in the source by being specified as follows (this is optional):
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2575
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 348 mal
Ich bin: Freiberufler/in

Re: Integration einer Dynpro

Beitragvon black_adept » 17.01.2017, 14:20

Schäfer_anfänger hat geschrieben:Was hat das mit Fachkräftemangel zu tun? Ich lerne es ja während meinem Studium....

Genitivmangel
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2575
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 348 mal
Ich bin: Freiberufler/in

Re: Integration einer Dynpro

Beitragvon Schäfer_anfänger » 17.01.2017, 14:29

black_adept hat geschrieben:
Schäfer_anfänger hat geschrieben:Was hat das mit Fachkräftemangel zu tun? Ich lerne es ja während meinem Studium....

Genitivmangel

Geändert sorry...
ABAP Anfänger vom allerfeinsten!
Schäfer_anfänger
ForumUser
 
Beiträge: 38
Registriert: 13.01.2017, 13:15
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Integration einer Dynpro

Beitragvon ralf.wenzel » 17.01.2017, 15:07

black_adept hat geschrieben:
ralf.wenzel hat geschrieben:Außerdem (das wissen viele gar nicht!) kann man jede Methode übersetzbar dokumentieren, was deutlich besser ist als ein sprachenfixer Kommentar, weil es eben die Option zur Übersetzung nicht verbaut.

Sagt der Mann der Eclipse der alten SAPGUI vorzieht und damit eben auf diese Übersetzungsmöglichkeit verzichtet.


Das eine schließt das andere nicht aus.


Ralf
Bild Ralf WenzelHeuristika
SAP-Development • Datenschutzberatung
PublikationenUngarische NotationXing
ralf.wenzel
Top Expert
 
Beiträge: 2441
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 104 mal
Ich bin: Freiberufler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Große Umsatzprobe Differenz SAPF190
vor 11 Stunden von wreichelt 1 Antw.
gelöst CL_ABAP_CLASSDESCR und Syntaxfehler
vor 5 Stunden von GastX 4 Antw.
gelöst Parameter-ID für Z-Programme einrichten
vor 10 Stunden von Roddy 2 Antw.
PDF-Datei nach Upgrade deutlich zu groß
vor 2 Tagen von ewx 1 Antw.
Vier-Augen-Prinzip auf dem Geschäftspartner
vor 2 Tagen von ralf.wenzel 3 Antw.

  Ähnliche Beiträge beta
Wert einer Drucktaste aus Dynpro auslesen
06.04.2006, 10:26 von ralf.wenzel 1 Antw.
ALV: Farbe einer Zelle ändern ( Web Dynpro for ABAP)
16.04.2008, 07:37 von ChirstophH. 4 Antw.
WebGui und Office Integration
12.02.2010, 15:45 von gazzle 0 Antw.
Office Integration - Dokument speichern (lokal)
16.06.2009, 14:28 von Laxion 1 Antw.
Feld aus Dynpro A an Dynpro B übergeben
06.03.2008, 20:14 von SAPAlex 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!