Batch Input für VA01-Kopftext im Hintergrund

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Batch Input für VA01-Kopftext im Hintergrund

Beitrag von willi100 (ForumUser / 12 / 3 / 0 ) »
Ich bin gerade dabei ein Batch Input Programm für die Transaktion VA01 (Kundenauftrag anlegen) zu erstellen. Das Programm ist soweit eigentlich schon fertig und funktioniert, falls man die Batch Input Mappen sichtbar abspielt. Beim Abspielen im Hintergrund treten jedoch mehrere Fehler auf:

1. Da ich für das Erstellen eines Kopftextes auf GUI-Drucktasten zurückgreife, welche ich im Hintergrund nicht zu Verfügung habe, bekomme ich immer den Fehler "Control Framework: Fataler Fehler, GUI kann nicht angesprochen werden!".

2. In einer Loop-Schleife füge ich die einzelnen Positionen dem Auftrag hinzu, dabei ermittle ich den Feldnamen für das Material und der Menge dynamisch, indem ich bei jedem Druchlauf die Zeilennummer erhöhe. Kommischerweise bekomme ich immer bei der 3. Position die Fehlermeldung "Feld RV45A-MABNR(3) ist in Dynpro SAPMV45A 4001 nicht vorhanden", aber nur wenn ich die Mappe im Hintergrund abspiele.

Hier noch die relevanten Teile meines ABAP - Programms:

Code: Alles auswählen.

      CALL FUNCTION 'BDC_OPEN_GROUP'
        EXPORTING
          client = sy-mandt
          group  = p_mappe
          user   = sy-uname
          keep   = 'X'.

      CLEAR: gt_itab_order,
             pos.

      LOOP AT gt_itab_order.
*-- Neuer Kunde
        AT NEW kunnr.
          REFRESH bdc_table.
          CLEAR bdc_table.
*-- Auftrag
          PERFORM dynpro USING:
          'X'    'SAPMV45A'               '0101',
          ' '    'VBAK-AUART'             'ZTA',  "Auftrag Online
          ' '    'VBAK-VKORG'             '3000',
          ' '    'VBAK-VTWEG'             '30',
          ' '    'VBAK-VKBUR'             '3010',
          ' '    'VBAK-VKGRP'             '400', "Verkäufergruppe für Onlineaufträge
          ' '    'BDC_OKCODE'             '/0'.
*-- Kunde und Datum
          PERFORM get_next_business_day.

          WRITE: date2+6(2) TO lv_datum,
                 date2+4(2) TO lv_datum+2,
                 date2(4) TO lv_datum+4.
          PERFORM dynpro USING:
          'X'    'SAPMV45A'               '4001',
          ' '    'KUAGV-KUNNR'            gt_itab_order-kunnr,
          ' '    'RV45A-KETDAT'           lv_datum,     "von File lesen
          ' '    'VBAK-LIFSK'             '50',
          ' '    'BDC_OKCODE'             '/0'.

          MOVE: 1 TO lv_line,
                1 TO pos.
          NEW-LINE.
          WRITE: / 'Neuer Auftrag mit Auftraggeber: ', gt_itab_order-kunnr.
          SKIP 1.
        ENDAT.
*--
        IF lv_line = 18.
          lv_line = 2.
        ENDIF.
        IF lv_line < 10.
          CONCATENATE 'RV45A-MABNR(0' lv_line ')' INTO lv_matnr.
          CONCATENATE 'RV45A-KWMENG(0' lv_line ')' INTO lv_menge.
        ELSE.
          CONCATENATE 'RV45A-MABNR(' lv_line ')' INTO lv_matnr.
          CONCATENATE 'RV45A-KWMENG(' lv_line ')' INTO lv_menge.
        ENDIF.

        PERFORM dynpro USING:
        'X'    'SAPMV45A'                 '4001',
        ' '    lv_matnr                   gt_itab_order-matnr,
        ' '    lv_menge                   gt_itab_order-menge,
        ' '    'BDC_OKCODE'               '/0'.

        WRITE: /3 pos LEFT-JUSTIFIED,
               10 gt_itab_order-matnr,
               29 gt_itab_order-menge.
        ADD 1 TO lv_line.
        ADD 1 TO pos.
*--
        IF LINES( it_text ) > 0 AND lv_txt <> 'X'.
          CLEAR lv_kunnr.
          WRITE gt_itab_order-kunnr TO lv_kunnr+5 RIGHT-JUSTIFIED.
          OVERLAY lv_kunnr WITH '0000000000'.
          SELECT SINGLE * FROM kna1 WHERE kunnr = lv_kunnr.
          PERFORM dynpro USING:
  "        'X'    'SAPMV45A'               '4001',
  "        ' '    'KUAGV-KUNNR'            gt_itab_order-kunnr,
  "        ' '    'RV45A-KETDAT'           '25.02.2012',     "von File lesen
          ' '    'BDC_OKCODE'             '=KTEX_SUB'.
*-- kopftext
          PERFORM dynpro USING:
          'X'    'SAPMV45A'               '4002',
          ' '    'BDC_OKCODE'             'TP_NEXT',
          'X'    'SAPMV45A'               '4002',
          ' '    'LV70T-SPRAS'            kna1-spras,
          ' '    'BDC_OKCODE'             '=TP_DETAIL'.
          PERFORM dynpro USING:
          'X'    'SAPLSTXX'               '1100'.

          LOOP AT it_text TO 20.  "maximal 20 Zeilen - Formularanhangtext
            MOVE sy-tabix TO c_num.
            ADD 1 TO c_num.
            IF sy-tabix < 10.
              CONCATENATE 'RSTXT-TXLINE(0' c_num ')' INTO c_field.
              CONCATENATE 'RSTXT-TXPARGRAPH(0' c_num ')' INTO c_field2.
            ELSE.
              CONCATENATE 'RSTXT-TXLINE(' c_num ')' INTO c_field.
              CONCATENATE 'RSTXT-TXPARGRAPH(0' c_num ')' INTO c_field2.
            ENDIF.
            PERFORM dynpro USING:
            ' '    c_field2                 '*',
            ' '    c_field                  it_text-line,
            ' '    'BDC_OKCODE'             '/0'.
            CLEAR c_field.
          ENDLOOP.

          PERFORM dynpro USING:
          ' '    'BDC_OKCODE'             '=TXVB'.
          PERFORM dynpro USING:
          'X'    'SAPLSTXX'               '1100',
          ' '    'BDC_OKCODE'             '=TXBA'.
          PERFORM dynpro USING:
          'X'    'SAPMV45A'               '4002',
          ' '    'BDC_OKCODE'             '/EBACK'.

          MOVE 'X' TO lv_txt.
          CLEAR it_text.
          REFRESH it_text.
        ENDIF.
      ENDLOOP.

*--
      PERFORM dynpro USING:
      'X'    'SAPMV45A'                 '4001',
      ' '    'BDC_OKCODE'               '/11'.

      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          tcode     = 'VA01'
        TABLES
          dynprotab = bdc_table.

      CALL FUNCTION 'BDC_CLOSE_GROUP'.
*--   Email senden
      "gf_document_data-obj_name = 'Ordine Online'.
      "gf_document_data-obj_descr = 'Ordine Online'.
      "gf_document_data-obj_langu = kna1-spras. "sy-langu.
      "gf_document_data-obj_prio = '1'.
      "WRITE 'Soeben ist ein neuer Online Auftrag auf dem Crystal Server eingegangen.' TO gt_object_content-line.
      "APPEND gt_object_content.
      "PERFORM send_mail.
*-- get output file
      CLEAR file_out.
      CONCATENATE '\\saptest\users\crystal\bkp\' dir_list-name INTO file_out.
      PERFORM copy_file USING filename file_out.
      DELETE DATASET filename.

FORM dynpro USING dynbegin name value.

  CLEAR bdc_table.
  IF dynbegin = 'X'.
    MOVE: name  TO bdc_table-program,
          value TO bdc_table-dynpro,
          'X'   TO bdc_table-dynbegin.
    APPEND bdc_table.
  ELSE.
    MOVE: name  TO bdc_table-fnam,
          value TO bdc_table-fval.
    APPEND bdc_table.
  ENDIF.

ENDFORM.                    "dynpro
Ich hoffe ihr könnt mir vielleicht weiterhelfen.

Gruß Willi.

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


Re: Batch Input für VA01-Kopftext im Hintergrund

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
servus Willi,

gibt es einen plausiblen Grund warum du Vertriebsaufträge mit batch input im Hintergrund anlegen möchtest ?

BAPI_SALESORDER_CREATEFROMDAT1
BAPI_SALESORDER_CREATEFROMDAT2

also ich würde dir dringend die oben genanten 2 Funktionsbausteine ans Herz legen.
wenn du diese Namen googlst, solltest du sogar fertige codings finden.

gruss
ratsnus
<:: XING-Gruppe Tricktresor::>

Re: Batch Input für VA01-Kopftext im Hintergrund

Beitrag von willi100 (ForumUser / 12 / 3 / 0 ) »
Hallo ratsnus,

danke für deine schnelle Antwort. Bei der Suche nach Lösungen bin ich bereits auf letzteren von dir genannten Baustein gestoßen. Bevor ich mich jedoch mit dem Baustein beschäftige, wollte ich wissen ob es wirklich keine Möglichkeit gibt mit einen Batch Input einen Kopftext für einen Auftrag zu pflegen? Ich habe schon einige Foren zu dem Thema durchstöbert, habe jedoch nirgends eine klare Antwort darauf gefunden ob es Möglich ist oder nicht.

Der Grund warum ich die Aufträge im Hintergrund anlegen will ist der, dass ich dann einen Job einplanen kann der alle 5 min läuft und falls vorhanden eine XML-Datei mit den nötigen Auftragsdaten einliest und abspielt.

Gruß Willi

Re: Batch Input für VA01-Kopftext im Hintergrund

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ciao Willi,

ok, mit dem Baustein kannst du auf jedenfall die Texte anlegen. bau doch dein BDC Prog etwas um und ruf den Baustein direkt auf.

gruss
ratsnus

Folgende Benutzer bedankten sich beim Autor ratsnus für den Beitrag:
willi100

<:: XING-Gruppe Tricktresor::>

Re: Batch Input für VA01-Kopftext im Hintergrund

Beitrag von willi100 (ForumUser / 12 / 3 / 0 ) »
Hallo ratsnus,

ich habe das Programm nun umgeschrieben wie du gesagt hast und es funktioniert einwandfrei.

Danke nochmals für deine Unterstützung

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3357
Views
Texte mit Batch Input im Hintergrund übernehmen
von damberge » 27.12.2006 20:44 • Verfasst in ABAP® Core
1
Antw.
2486
Views
In VA01/VA02 Kopftext anpassen
von bapimueller » 27.01.2020 14:42 • Verfasst in Sales and Distribution
8
Antw.
8187
Views
Druck auf LOCL aus Hintergrund (Batch)
von vwaadenm » 07.12.2006 12:02 • Verfasst in SAP - Allgemeines
1
Antw.
980
Views
Batch-Input
von dkast » 15.12.2020 14:43 • Verfasst in ABAP® für Anfänger
2
Antw.
2158
Views
Batch input
von BMWi801 » 24.03.2018 11:16 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Regex in where
Gestern von tar 8 / 372
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1636
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 289
IT0024 Qualifikationen CP-ID
vor 3 Tagen von DeathAndPain 2 / 530

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

Regex in where
Gestern von tar 8 / 372
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1636
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 289
IT0024 Qualifikationen CP-ID
vor 3 Tagen von DeathAndPain 2 / 530

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Tagen von snooga87 1 / 221
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3403
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9953