NAST Druckprogramm Best Practice

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

NAST Druckprogramm Best Practice

Beitrag von rob_abc (ForumUser / 60 / 12 / 19 ) »
Hallo zusammen

Ab und zu muss ich doch mal ein eigenes NAST-Druckprogramm bauen. Dafür hatte ich mir eine Vorlage gebaut. Diese ist allerdings schon etwas in die Jahre gekommen und basiert auf rvaddn01.

Die ganzen Performs und Includes sind natürlich unschön. Auch das Fehlerhandling könnte besser sein. Hat da jemand eine schönere Lösung? Oder einen Tipp, welches SAP-Programm sich für eine neue Vorlage besser eignet? Eine kurze Recherche im Netz hat leider nichts brauchbares zu Tage gefördert.

Danke und Gruss
Robert

Code: Alles auswählen.

REPORT.

INCLUDE rvadtabl.

CONSTANTS:
  BEGIN OF c_locale,
    default_langu   TYPE langu VALUE 'D',
    default_country TYPE land1 VALUE 'DE',
    fallback_langu  TYPE langu VALUE 'E',
  END OF c_locale.


DATA:
  retcode    LIKE sy-subrc,
  xscreen(1) TYPE c,
  gv_form    TYPE fpwbformname,
  gv_repeat  TYPE char2.


FORM entry USING return_code us_screen.

  CLEAR retcode.
  xscreen = us_screen.
  PERFORM processing USING us_screen.
  IF retcode NE 0.
    return_code = 1.
  ELSE.
    return_code = 0.
  ENDIF.

ENDFORM.


FORM processing USING proc_screen.

  PERFORM get_data.
  CHECK retcode = 0.
  PERFORM form_open USING proc_screen c_locale-default_country.
  CHECK retcode = 0.
  PERFORM check_repeat.
  CHECK retcode = 0.
  PERFORM form_write.
  PERFORM form_close.
  CHECK retcode = 0.

ENDFORM.


FORM get_data.

  ...

ENDFORM.


FORM form_open USING us_screen us_country .

  INCLUDE rvadopfo_pdf.

ENDFORM.


FORM check_repeat.

  SELECT * INTO *nast FROM nast
    WHERE kappl = nast-kappl
      AND objky = nast-objky
      AND kschl = nast-kschl
      AND spras = nast-spras
      AND parnr = nast-parnr
      AND parvw = nast-parvw
      AND nacha BETWEEN '1' AND '5'
      AND vstat = '1'.
    gv_repeat = 1.
    EXIT.
  ENDSELECT.

ENDFORM.


FORM form_write.

  DATA:
    l_name      TYPE rs38l_fnam,
    l_docparams TYPE sfpdocparams.

  TRY.
      CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
        EXPORTING
          i_name     = gv_form
        IMPORTING
          e_funcname = l_name.

    CATCH cx_root INTO DATA(e).
      MESSAGE e->get_text( ) TYPE 'E'.
  ENDTRY.

  l_docparams-langu     = nast-spras.
  l_docparams-replangu1 = c_locale-fallback_langu.
  l_docparams-country   = c_locale-default_country.

  CALL FUNCTION l_name
    EXPORTING
      /1bcdwb/docparams = l_docparams
      ....            = ...
    EXCEPTIONS
      usage_error       = 1
      system_error      = 2
      internal_error    = 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.


FORM form_close .

  CALL FUNCTION 'FP_JOB_CLOSE'
    EXCEPTIONS
      usage_error    = 1
      system_error   = 2
      internal_error = 3
      OTHERS         = 4.
  IF sy-subrc NE 0.
    retcode = 1.
    PERFORM protocol_update.
  ENDIF.
  SET COUNTRY space.

ENDFORM.


FORM protocol_update.

  CHECK xscreen = space.
  CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
    EXPORTING
      msg_arbgb = syst-msgid
      msg_nr    = syst-msgno
      msg_ty    = syst-msgty
      msg_v1    = syst-msgv1
      msg_v2    = syst-msgv2
      msg_v3    = syst-msgv3
      msg_v4    = syst-msgv4
    EXCEPTIONS
      OTHERS    = 1.

ENDFORM.

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


Re: NAST Druckprogramm Best Practice

Beitrag von ewx (Top Expert / 4804 / 296 / 631 ) »
Wichtig ist in erster Linie, dass die Routine ENTRY mit der Behandlung des Returncodes vorhanden ist, damit der Verarbeitungsstatus korrekt angezeigt werden kann.

Ich würde die Benennung der globalen Variablen anpassen (entweder ungarische Notation oder nicht, aber nicht gemischt).

Die Verwendung der impliziten Workarea *TABNAME ist veraltet. Das würde ich ändern. Zusätzlich könnte man evtl. mit dem Zusatz UP TO 1 ROWS einen kleinen Performancevorteil herausholen.

insgesamt könnte man alles natürlich auch objektorientiert machen und Fehler in der ENTRY Routine mit TRY-CATCH abfangen. dann bräuchte man nur dort einen "NAST_PROTOCOL_UPDATE".

Die Standardaufgaben (FORM_OPEN, FORM_CLOSE etc) könnte man in eine Utility-Klasse auslagern.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2729
Views
SAPscript Druckprogramm auf Smartform Druckprogramm ändern
von Luigi91 » 03.03.2014 15:28 • Verfasst in ABAP® für Anfänger
0
Antw.
1311
Views
Best Practice zur Fremdfirmenverwaltung SAP HCM PA und OM
von tikemyson » 21.04.2017 15:48 • Verfasst in Human Resources
0
Antw.
1532
Views
Best Practice zur Fremdfirmenverwaltung SAP HCM PA und OM
von tikemyson » 21.04.2017 15:49 • Verfasst in Human Resources
3
Antw.
396
Views
Best practice: BADI im Loop
von ZF_SAPler » 20.12.2022 13:46 • Verfasst in ABAP® für Anfänger
0
Antw.
2621
Views
Best Practice IDOC Typen
von Basler84 » 13.07.2020 19:49 • 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

Ideensammlung für Apps/Reports
vor 2 Tagen von JHM 3 / 226
API als OData
vor 3 Tagen von Bugfrei 2 / 648
SQL letzter Datensatz
vor 3 Tagen von Bugfrei 8 / 10004

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.