Nachrichtensteuerung: Bestellung via eMail ersenden (ME21N)

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Tron » Wed Aug 24, 2011 8:42 pm

Hallo und Willkommen (in meinem Lieblings-thread) :wink:

Das Vorschalt -Druckprogramm arbeitet mit Medium 1 und/oder 2.
Ja, es wird in dieser Fassung auch zusätzlich gedruckt/gefaxt.
Siehe auch http://bb1.gate2app.com/viewtopic.php?f=15&t=2004a>

Ich habe nun noch mal eine Bestellung (Sapscriptformular im ECC6 unicode) probiert und das PDF in meiner Mail ist in Ordnung.
Für einen Test schlage ich vor : eine Interne Mail zu versenden, um die Einstellungen in der Transaktion SCOT auszuschliessen.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * Internet User
  2. ************************
  3. * @@@@ TODO !!!!!
  4. ************************
  5. *
  6.   receiver_list-receiver = 'SAPUSER'.   <==== dein Username
  7.   receiver_list-rec_type = 'B'.
  8.   receiver_list-com_type ='INT'.
  9.   APPEND receiver_list.
  10.  
GeSHi ©

(verwendest Du Smartforms oder Sapscript ? )
gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Sandy2832 » Thu Aug 25, 2011 8:41 am

Hallo Jens,

danke für Deine schnelle Rückmeldung. Wir nutzen hier auch Sapscript mit ECC6 Unicode.
Auch bei der internen mail konnte das PDF nicht geöffnet werden.
Ich habe nun mal den Fuba SO_NEW_DOCUMENT_ATT_SEND_API1 durch die neueren Klassen zum email-Versand ersetzt (als Vorlage diente mir das Programm BCS_EXAMPLE_8), nun wird das PDF fehlerfrei versendet.

Eine Frage habe ich noch zur notwendigen Verwendung von Medium 1/2.
Wie kann ich den Ausdruck am besten verhindern (ich benötige für diese Nachrichtenart nur mail)?
Eine Idee wäre, Sofortdruck zu deaktivieren. Gibt es noch andere Möglichkeiten? In den Spool muss das Formular ja für die Weiterverarbeitung.

Vielen Dank nochmal für Deinen Tipp, wie das ganze ohne Kopie der MEDRUCK gelöst werden kann!

Gruß, Markus
Sandy2832
.
.
 
Posts: 4
Joined: Wed Aug 24, 2011 3:28 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Josie2243 » Thu Aug 25, 2011 10:22 am

magnum77 hat geschrieben:HGibt es noch andere Möglichkeiten?


Archiviert ihr den Bestelldruck?
Wenn ja, könnte man den Ausdruck auf nur Ablagen stellen. Ich bin mir gerade nicht sicher, ob dann auch ein Spool erzeugt wird, wenn nicht müsste man sich den Druck eben aus dem Archive lesen.
Josie2243
....
....
 
Posts: 908
Joined: Wed Feb 15, 2006 4:05 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Sandy2832 » Thu Aug 25, 2011 10:27 am

Ich habe es mal versucht, aber bei "nur Ablegen" wird kein Spool erzeugt.
Wir werden dann wohl den Haken "sofort ausgeben" raus nehmen und unseren Abteilungsdrucker hinterlegen, nach 2 Tagen werden die Spooleinträge gelöscht. Das sollte dann passen.

Gruß, Markus
Sandy2832
.
.
 
Posts: 4
Joined: Wed Aug 24, 2011 3:28 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Tron » Thu Aug 25, 2011 9:13 pm

Hallo,
1.)
in der Speicherkopie der Tabelle Nast steht die Info, ob Sofortdruck und Löschen nach Ausgabe etc. gewünscht wird. Du könntest mal probieren, ob Du vor dem Perfom den Wert NAST-DIMME auf space setzt, dann wäre es egal, was der User wählt. (habe ich aber noch nicht probiert)
2.)
.. oder richte einen PDF Drucker ein:
viewtopic.php?f=32&t=11466
Dann wird nicht gedruck und das PDF ist in einem Verzeichnis des App-Servers geparkt, wo es dann an die Mail gehängt und das File gelöscht werden könnte. Falls Ihr keinen Windowsserver einsetzt, hat ein Forumsmitglied auch eine Lösung für Unix entwickelt (geht um einen Kopiervorgang des PDF Files unter Unix).
gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Sandy2832 » Fri Aug 26, 2011 9:36 am

Tron hat geschrieben:Du könntest mal probieren, ob Du vor dem Perfom den Wert NAST-DIMME auf space setzt, dann wäre es egal, was der User wählt. (habe ich aber noch nicht probiert)

Danke für den Tipp, das funktioniert!
Markus
Sandy2832
.
.
 
Posts: 4
Joined: Wed Aug 24, 2011 3:28 pm

Bestellung via eMail versenden mit Unicodesystem

Postby Tron » Wed Jan 23, 2013 9:53 pm

Moin,
in den letzten Jahren hat sich einiges getan.
Auch mit dem Funktionsbaustein SO_NEW_DOCUMENT_ATT_SEND_API1
Hier nun ein neues Codingmuster für das Versenden von Bestellungen als PDF-Anhang zur Mail.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Subroutinepool YMEDRUCK_EMAIL_UC by Dipl.Ing.Jens G.                *
  3. *&                                                                     *
  4. *&---------------------------------------------------------------------*
  5. *&                                                                     *
  6. *&                                                                     *
  7. *&---------------------------------------------------------------------*
  8.  
  9.  
  10. * WARNING : NO POPUPS - NO COMMIT WORK IN HERE !!!!!!!!!!!!!!!!!!!!!!!!!
  11.  
  12. * How to do (i left some TODO-comments)
  13. * 1.) Change/verify the "PERFORM" so the "TRUE" Print Routine is called
  14. *     (only needed if you have an own ME_DRUCK) just look table TNAPR
  15. * 2.) Change the Receiver Email-adress.
  16. * 3.) Activate YMEDRUCK_EMAIL_UC :-)
  17. * 4.) Customize (Tc NACE) the message-Type "NEU" and enter
  18. *     "YMEDRUCK_EMAIL_UC" as Program and "ENTRY_NEU" as FORM
  19.  
  20. * How this works (short version)
  21. * by customizing, the original Print routine is substituted by this one
  22. * to retrieve the SpoolId, which we need for PDF generation and email.
  23. * YMEDRUCK_EMAIL_UC calls the "Original" Print routine as a subroutine.
  24. * After this step the Program retrieves the Spool created.
  25. * Then the OTF is converted into PDF.
  26.  
  27. REPORT  ymedruck_email_uc                                              .
  28. DATA: retcode   LIKE sy-subrc.         "Returncode
  29. DATA: xscreen(1) TYPE c.               "Output on printer or screen
  30. TABLES: nast,                          "Messages
  31.         tnapr.                         "Programs & Forms
  32.  
  33. *&---------------------------------------------------------------------*
  34. *&      Form  ENTRY
  35. *&---------------------------------------------------------------------*
  36. *       text
  37. *----------------------------------------------------------------------*
  38. *      -->RETURN_CODE  text
  39. *      -->US_SCREEN    text
  40. *----------------------------------------------------------------------*
  41. FORM entry_neu USING return_code TYPE i
  42.                  us_screen TYPE c.
  43.  
  44.   FIELD-SYMBOLS: <f> TYPE itcpp,
  45.                  <p> TYPE  ssfcrescl.
  46.  
  47.   DATA pgnam TYPE na_pgnam." Programname
  48.   DATA ronam TYPE na_ronam."Formname
  49.   DATA fm_name TYPE rs38l_fnam. "genr.Druckbaustein
  50.   DATA lv_vec(80).
  51.   DATA spoolid TYPE rspoid.
  52.  
  53.   CLEAR retcode.
  54.   xscreen = us_screen.
  55.  
  56. *              Call the "Original" Printroutine
  57. ************************
  58. * @@@@ TODO !!!!!
  59. ************************
  60. *-real program---------+
  61. *                      |
  62. *-real Form---+        |
  63. *             |        |
  64.   PERFORM entry_neu(sapfm06p) USING return_code us_screen.
  65.  
  66. * Try Sapscript (take from mother)
  67.   ASSIGN ('(SAPLSTXC)ITCPP') TO <f>.
  68.   IF sy-subrc = 0 AND
  69.      NOT <f>-tdspoolid IS INITIAL AND
  70.      us_screen IS INITIAL.
  71.  
  72.     PERFORM processing USING <f>-tdspoolid.
  73.     UNASSIGN <f>.
  74.  
  75.   ELSE.
  76. * Try Smartforms (take from mother)
  77.     CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  78.       EXPORTING
  79.         formname           = tnapr-sform
  80.       IMPORTING
  81.         fm_name            = fm_name
  82.       EXCEPTIONS
  83.         no_form            = 1
  84.         no_function_module = 2
  85.         OTHERS             = 3.
  86.  
  87.     IF sy-subrc <> 0.
  88.       retcode = 1.
  89.       EXIT.
  90.     ENDIF.
  91.  
  92.     SELECT SINGLE pname FROM tfdir INTO lv_vec
  93.     WHERE funcname = fm_name.
  94.     IF sy-subrc = 0.
  95.  
  96.       CONCATENATE '(' lv_vec ')JOB_OUTPUT_INFO' INTO lv_vec.
  97.       ASSIGN (lv_vec) TO <p>.
  98.  
  99.       IF sy-subrc = 0 AND
  100.       NOT <p>-spoolids[] IS INITIAL AND
  101.       us_screen IS INITIAL.
  102.  
  103.         LOOP AT <p>-spoolids INTO spoolid.
  104.           PERFORM processing USING spoolid.
  105.           EXIT.
  106.         ENDLOOP.
  107.         UNASSIGN <p>.
  108.  
  109.       ENDIF. " have Ids
  110.  
  111.     ENDIF." tfdir entry
  112.  
  113.   ENDIF." sapscript/smartforms
  114.  
  115.  
  116.   IF retcode NE 0.
  117.     return_code = 1.
  118.   ELSE.
  119.     return_code = 0.
  120.   ENDIF.
  121.  
  122. ENDFORM.                    "ENTRY
  123.  
  124.  
  125. *&---------------------------------------------------------------------*
  126. *&      Form  PROCESSING
  127. *&---------------------------------------------------------------------*
  128. *       text
  129. *----------------------------------------------------------------------*
  130. FORM processing USING spoolid TYPE itcpp-tdspoolid.
  131.   DATA: numbytes TYPE i,
  132.         pdfspoolid LIKE tsp01-rqident,
  133.         jobname LIKE tbtcjob-jobname,
  134.         jobcount LIKE tbtcjob-jobcount.
  135.  
  136.  
  137.   DATA:   document_data LIKE sodocchgi1,
  138.           object_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
  139.           object_pack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
  140.           object_bin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
  141.           receiver_list LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
  142.           tab_lines TYPE i.
  143.  
  144.   TYPES pdf_raw             TYPE x LENGTH 268.
  145.   FIELD-SYMBOLS <pdf_bin>   TYPE pdf_raw.
  146.   DATA: pdf_lines           TYPE TABLE OF tline,
  147.         BEGIN OF content_in,
  148.            line             TYPE tline,
  149.            dummy            TYPE tline,
  150.         END OF content_in,
  151.         content_out         TYPE solix,
  152.         line_width_src      TYPE i,
  153.         pos_out             TYPE i,
  154.         pos_in              TYPE i,
  155.         len_out             TYPE i.
  156.  
  157.   DATA content_bin TYPE TABLE OF solix.
  158.  
  159.  
  160.  
  161. ****  Main - Email  ****
  162.  
  163. * Title and Description
  164.   document_data-obj_name  = 'BESTELLUNG'.
  165.   document_data-obj_descr = nast-objky.
  166.  
  167. * Email Body Text
  168.   CONCATENATE 'Bestellung' nast-objky INTO object_txt
  169.   SEPARATED BY space.
  170.   APPEND object_txt.
  171.  
  172. * Packing List(Main-Part)
  173.  
  174. * Calculate the contents length
  175.   DESCRIBE TABLE object_txt LINES tab_lines.
  176.   READ TABLE object_txt INDEX tab_lines.
  177.   document_data-doc_size = ( tab_lines - 1 ) * 255 +
  178.   STRLEN( object_txt ).
  179.  
  180. * generate the Packing List
  181.   CLEAR object_pack-transf_bin.
  182.   object_pack-head_start = 1.
  183.   object_pack-head_num   = 0.
  184.   object_pack-body_start = 1.
  185.   object_pack-body_num   = tab_lines.
  186.   object_pack-doc_type   = 'RAW'.
  187.   APPEND object_pack.
  188.  
  189.   CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
  190.       EXPORTING
  191.         src_spoolid                    = spoolid
  192.         no_dialog                      = ' '
  193. *        DST_DEVICE                     =
  194. *       PDF_DESTINATION                =
  195.       IMPORTING
  196.         pdf_bytecount                  = numbytes
  197.         pdf_spoolid                    = pdfspoolid
  198. *       OTF_PAGECOUNT                  =
  199.         btc_jobname                    = jobname
  200.         btc_jobcount                   = jobcount
  201.       TABLES
  202.         pdf                            = pdf_lines
  203.       EXCEPTIONS
  204.         err_no_otf_spooljob            = 1
  205.         err_no_spooljob                = 2
  206.         err_no_permission              = 3
  207.         err_conv_not_possible          = 4
  208.         err_bad_dstdevice              = 5
  209.         user_cancelled                 = 6
  210.         err_spoolerror                 = 7
  211.         err_temseerror                 = 8
  212.         err_btcjob_open_failed         = 9
  213.         err_btcjob_submit_failed       = 10
  214.         err_btcjob_close_failed        = 11.
  215.  
  216.   IF sy-subrc = 0.
  217.  
  218. * Cast to binary type and adjust table line length
  219.     DESCRIBE FIELD content_in-line LENGTH line_width_src IN BYTE MODE.
  220.     REFRESH content_bin.
  221.     CLEAR content_out.
  222.     pos_out = 0.
  223.  
  224.     LOOP AT pdf_lines INTO content_in-line.
  225.       ASSIGN content_in TO <pdf_bin> CASTING.
  226.       MOVE <pdf_bin> TO content_out-line+pos_out.
  227.       ADD line_width_src TO pos_out.
  228.       WHILE pos_out >= 255.
  229.         APPEND content_out TO content_bin.
  230.         CLEAR content_out.
  231.         SUBTRACT 255 FROM pos_out.
  232.         IF pos_out > 0.
  233.           pos_in = line_width_src - pos_out.
  234.           MOVE <pdf_bin>+pos_in TO content_out-line.
  235.         ENDIF.
  236.       ENDWHILE.
  237.     ENDLOOP.
  238.     IF pos_out > 0.
  239.       APPEND content_out TO content_bin.
  240.     ENDIF.
  241.  
  242.  
  243.   ELSE.
  244.     EXIT.
  245.   ENDIF.
  246.  
  247.  
  248. * Generate the Attachment
  249. *  Packing List(Att)
  250.   DESCRIBE TABLE content_bin LINES tab_lines.
  251.  
  252.   object_pack-doc_size = numbytes.
  253.   object_pack-transf_bin = 'X'.
  254.   object_pack-head_start = 1.
  255.   object_pack-head_num   = 0.
  256.   object_pack-body_start = 1.
  257.   object_pack-body_num   = tab_lines.
  258.   object_pack-doc_type   = 'PDF'.
  259.   object_pack-obj_name   = 'SPOOL'.
  260.   object_pack-obj_descr  = nast-objky.
  261.   APPEND object_pack.
  262.  
  263.  
  264. * generate the receiver list
  265.  
  266. * Internet User
  267. ************************
  268. * @@@@ TODO !!!!!
  269. ************************
  270. * Your Email Adress goes HERE
  271.   receiver_list-receiver = 'SAPUSER@LOCALHOST'.
  272.   receiver_list-rec_type = 'U'.
  273.   receiver_list-com_type ='INT'.
  274.   APPEND receiver_list.
  275.  
  276. * Send the mail
  277.   CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  278.     EXPORTING
  279.       document_data                  = document_data
  280. *   PUT_IN_OUTBOX                    = ' '
  281.       commit_work                    = ' '
  282.     TABLES
  283.       packing_list                   = object_pack
  284.      contents_txt                    = object_txt
  285.      contents_hex                    = content_bin
  286.       receivers                      = receiver_list
  287.    EXCEPTIONS
  288.      too_many_receivers              = 1
  289.      document_not_sent               = 2
  290.      document_type_not_exist         = 3
  291.      operation_no_authorization      = 4
  292.      parameter_error                 = 5
  293.      x_error                         = 6
  294.      enqueue_error                   = 7
  295.      OTHERS                          = 8.
  296.  
  297.   IF sy-subrc <> 0.
  298.   ENDIF.
  299.  
  300. ENDFORM.                    "PROCESSING
  301.  
GeSHi ©

der BDS/GOS Abschnitt folgt noch.

gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Chantal4816 » Tue Feb 12, 2013 12:10 pm

Hallo Jens,

so wie ich das sehe, gilt das Coding aber nur für den Bestellversand, die Anlagen sind außen vor, richtig?

Gruß
Thomas
Chantal4816
.
.
 
Posts: 4
Joined: Tue Feb 12, 2013 12:10 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Tron » Fri Mar 01, 2013 6:41 pm

.. richtig.
gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Nachrichtensteuerung: Bestellung via eMail ersenden (ME2

Postby Aurelia4725 » Thu May 15, 2014 4:23 pm

Hallo Tron

bin auf deinen (Lieblings-)Beitrag gestossen. Dein Coding hilft mir schon sehr. Ein kleines Problem habe ich jedoch. Ich bekomme immer die gleiche Spool-Id zurück. An der folgenden Stelle in deinem Code blicke ich nicht durch.

CONCATENATE '(' lv_vec ')JOB_OUTPUT_INFO' INTO lv_vec.
ASSIGN (lv_vec) TO <p>.

Nach dem Assign steht in <p>-spoolids immer die gleiche Spool-Id. Das Resultat ist dann, dass die neuen Seiten an den bestehend Spool angehängt werden.

Hast du mir da einen kleinen Tipp.

Vielen Dank und Grüsse.

Thomas
Aurelia4725
..
..
 
Posts: 25
Joined: Thu Sep 15, 2011 9:12 am

PreviousNext

Return to Material Management & Produktionsplanung

Who is online

Users browsing this forum: No registered users and 2 guests

cron