Plik CSV - każdy znak oddzielnie

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
joanna1998
Posty: 9
Rejestracja: pt kwie 26, 2024 7:31 pm
Has thanked: 5 times
Been thanked: 2 times

Plik CSV - każdy znak oddzielnie

Post autor: joanna1998 »

Cześć, email wysyła się z plikiem CSV, ale każdy znak jest oddzielnie - oddzielony jest spacją przy otwarciu w notatniku.
2 ; 0 1 7 ; P L ; 2 4 -> zamiast 2;017;PL;24.

Natomiast przy otwarciu w Excelu, wszystko jest w jednej kolumnie.

Czy ktoś umie doradzić?

Kod: Zaznacz cały



*-- Send e-mail data declaration
DATA: GS_MAILDATA type SODOCCHGI1.

DATA: GT_MAILPACK type table of  SOPCKLSTI1.
DATA: GS_MAILPACK type SOPCKLSTI1.

DATA: GT_MAILHEAD type table of SOLISTI1.
DATA: Gs_MAILHEAD type SOLISTI1.

DATA: GT_MAILBIN type table of SOLISTI1.
DATA: Gs_MAILBIN type  SOLISTI1.

DATA: GT_MAILTXT type table of SOLISTI1.
DATA: Gs_MAILTXT type  SOLISTI1.


DATA: GT_MAILREC type table of  SOMLREC90.
DATA: Gs_MAILREC type   SOMLREC90.

DATA: GT_SOLISTI1 type table of  SOLISTI1.
DATA: Gs_SOLISTI1 type SOLISTI1.

DATA: V_LINES TYPE I.


* Creation of the document to be sent File Name
 CLEAR GS_MAILDATA.
 GS_MAILDATA-OBJ_NAME = 'E-mail'.
 GS_MAILDATA-OBJ_DESCR = 'Send e-mail with CSV attachment'.

* Mail Body
 CLEAR Gs_MAILTXT.
 gs_MAILTXT-LINE = 'This is auto generated message. Please do not reply to this e-mail.'.
 APPEND Gs_MAILTXT to Gt_MAILTXT.
  CLEAR Gs_MAILTXT.
 gs_MAILTXT-LINE = ' Dear AMS Team, Please be informed that we have just submitted monthly Z4 Report for our entity'.
 APPEND Gs_MAILTXT to Gt_MAILTXT.
  CLEAR Gs_MAILTXT.
 gs_MAILTXT-LINE = 'Best regards, Global Bike GmbH'.
 APPEND Gs_MAILTXT to Gt_MAILTXT.


* Prepare Packing List
 CLEAR V_LINES.
 DESCRIBE TABLE GT_MAILTXT LINES V_LINES.
 READ TABLE GT_MAILTXT into gs_mailtxt  INDEX V_LINES.
 GS_MAILDATA-DOC_SIZE = ( V_LINES - 1 ) * 255 + STRLEN( GS_MAILTXT ).

* Creation of the entry for the compressed document
 CLEAR GS_MAILPACK-TRANSF_BIN.
 GS_MAILPACK-HEAD_START = 1.
 GS_MAILPACK-HEAD_NUM = 0.
 GS_MAILPACK-BODY_START = 1.
 GS_MAILPACK-BODY_NUM = V_LINES.
 GS_MAILPACK-DOC_TYPE = 'RAW'.
 APPEND Gs_MAILPACK to GT_MAILPACK.

 Gs_MAILHEAD = 'Z4Report.CSV'.
 APPEND GS_MAILHEAD TO GT_MAILHEAD.


* Populate the TXT file
 LOOP AT it_tab2 INTO is_tab2.
   DATA: LV_TMP TYPE STRING.
   CLEAR LV_TMP.
   LV_TMP = is_tab2-DMBTR.

 CONCATENATE
    is_tab2-ZZPMTDIR
    is_tab2-ZZSCB_CODE
    is_tab2-ZZSCB_TEXT
    is_tab2-LANDL
    LV_TMP
 INTO GS_MAILBIN SEPARATED BY ';'.
 APPEND GS_MAILBIN TO GT_MAILBIN.
 ENDLOOP.

 CLEAR V_LINES.
 DESCRIBE TABLE GT_MAILBIN LINES V_LINES.


 GS_MAILPACK-TRANSF_BIN = 'X'.
 GS_MAILPACK-HEAD_START = 1.
 GS_MAILPACK-HEAD_NUM = 1.
 GS_MAILPACK-BODY_START = 1.
 GS_MAILPACK-BODY_NUM = V_LINES.
 GS_MAILPACK-DOC_TYPE = 'CSV'.
 GS_MAILPACK-OBJ_NAME = 'Z4Report'.
 GS_MAILPACK-OBJ_DESCR = 'Z4Report'.
 GS_MAILPACK-DOC_SIZE = V_LINES * 255.
 APPEND GS_MAILPACK to GT_MAILPACK.

* Populate recipient

 GS_MAILREC-RECEIVER = '[email protected]'.
 GS_MAILREC-REC_TYPE = 'U'.
 APPEND GS_MAILREC TO GT_MAILREC.


* Sending the document

 CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
 EXPORTING
 DOCUMENT_DATA = GS_MAILDATA
 PUT_IN_OUTBOX = 'X'
 COMMIT_WORK = 'X'
 TABLES
 PACKING_LIST = GT_MAILPACK
 OBJECT_HEADER = GT_MAILHEAD
 CONTENTS_BIN = GT_MAILBIN
 CONTENTS_TXT = GT_MAILTXT
 RECEIVERS = GT_MAILREC
 EXCEPTIONS
 TOO_MANY_RECEIVERS = 1
 DOCUMENT_NOT_SENT = 2
 OPERATION_NO_AUTHORIZATION = 4
 OTHERS = 99.


ZETKA
Posty: 83
Rejestracja: czw lis 04, 2010 10:49 pm
Has thanked: 1 time
Been thanked: 82 times

Re: Plik CSV - każdy znak oddzielnie

Post autor: ZETKA »

Excelowi spacje nie powinny w niczym przeszkadzać, może tak na prawdę jest tam coś zupełnie innego. Do wyświetlania i edycji plików tekstowych polecam używanie czegokolwiek, tylko nie notatnika.
Pozdrawiam,
Krzysiek
dominik.tylczynski
Posty: 8555
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 2023 times
Been thanked: 1530 times

Re: Plik CSV - każdy znak oddzielnie

Post autor: dominik.tylczynski »

ZETKA pisze: ndz maja 26, 2024 8:50 pmDo wyświetlania i edycji plików tekstowych polecam używanie czegokolwiek, tylko nie notatnika.
Polecam Notepad++ - taki wszystko mający, lepszy notepad
yacol
Posty: 567
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 10 times
Been thanked: 173 times

Re: Plik CSV - każdy znak oddzielnie

Post autor: yacol »

To wcale nie muszą być spacje ale np. plik może być kodowany w Unicode 16 (16 bitów na znak) i wówczas to mogą być np. zera. Jeśli używasz Windows 10 lub 11 to masz możliwość wyświetlania pliku binarnego przynajmniej na 2 sposoby bez potrzeby instalowania czegokolwiek:

1. używając komendy format-hex w PowerShell
2. używając komendy certutil

oczywiście zakładając, że masz odpowiednie uprawnienia :)
Pozdrawiam,

Jacek Witczak
http://novertio.pl