Code: Alles auswählen.
data:
ld_size type I,
ld_stream type xstring.
field-symbols:
<ls_line> type xsequence.
* Ergebnis von ARCHIVOBJECT_GET_TABLE verarbeiten
concatenate lines of <BINARCHIVOBJECT> into ld_stream in byte mode.
ld_stream = ld_stream(<LENGTH>). "Den Stream auf die richtige Länge kürzen.
* In die Struktur von SO_DOCUMENT_SEND_API1 umwandeln.
ld_size = 255. "Vielleicht vorher noch die Zeilenlänge ermitteln, damit man das Coding universal verwenden kann
while ld_stream is not initial.
append initial line to <CONTENTS_HEX> assigning <ls_line>.
<ls_line> = ld_stream.
shift ld_stream by ld_size PLACES left in byte mode.
endwhile.
Code: Alles auswählen.
DATA: arch_obj TYPE TABLE OF docs WITH HEADER LINE,
binarch_obj TYPE TABLE OF tbl1024. " WITH HEADER LINE.
DATA: objbin TYPE soli_tab.
DATA: input_length TYPE i.
DATA:
ld_size TYPE i,
ld_stream TYPE xstring.
FIELD-SYMBOLS:
<ls_line> TYPE xsequence.
CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = 'A2'
document_type = 'PDF'
archiv_doc_id = '201108216395145275A075A3D443D44AC0071E'
* ALL_COMPONENTS =
* SIGNATURE = 'X'
* COMPID = 'data'
IMPORTING
* length = length
binlength = binlength
TABLES
archivobject = arch_obj
binarchivobject = binarch_obj
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 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.
* Ergebnis von ARCHIVOBJECT_GET_TABLE verarbeiten
CONCATENATE LINES OF binarch_obj INTO ld_stream IN BYTE MODE.
ld_stream = ld_stream(255). "Den Stream auf die richtige Länge kürzen.
* in die struktur von so_document_send_api1 umwandeln.
ld_size = 255. "Vielleicht vorher noch die Zeilenlänge ermitteln, damit man das Coding universal verwenden kann
WHILE ld_stream IS NOT INITIAL.
APPEND INITIAL LINE TO hexbin ASSIGNING <ls_line>.
<ls_line> = ld_stream.
SHIFT ld_stream BY ld_size PLACES LEFT IN BYTE MODE.
ENDWHILE.
Hoppla! Ja, stimmt es handelt sich um eine Struktur und das funktioniert bei IN BYTE MODE nicht so wie gewünscht.alanio hat geschrieben:Als Zeilentyp der Tabelle "BINARCH_OBJ" wurde ein byteartiges Feld
erwartet.
Code: Alles auswählen.
FIELD-SYMBOLS:
<ls_binary> TYPE TBL1024.
* Ergebnis von ARCHIVOBJECT_GET_TABLE verarbeiten
CLEAR ld_stream.
LOOP AT <BINARCHIVOBJECT> ASSIGNING <ls_binary>.
CONCATENATE ld_stream <ls_binary>-line INTO ld_stream IN BYTE MODE.
ENDLOOP.
ld_stream = ld_stream(<LENGTH>). "Den Stream auf die richtige Länge kürzen.
Code: Alles auswählen.
DATA: arch_obj TYPE TABLE OF docs WITH HEADER LINE,
binarch_obj TYPE TABLE OF tbl1024. " WITH HEADER LINE.
DATA: hexbin TYPE solix_tab.
DATA: input_length TYPE i.
DATA: binlength TYPE sapb-length.
DATA:
ld_size TYPE i,
ld_stream TYPE xstring.
FIELD-SYMBOLS:
<ls_line> TYPE xsequence,
<ls_binary> TYPE tbl1024.
START-OF-SELECTION.
CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = 'A2'
document_type = 'PDF'
archiv_doc_id = '201108216395145275A075A3D443D44AC0071E'
* ALL_COMPONENTS =
* SIGNATURE = 'X'
* COMPID = 'data'
IMPORTING
* length = length
binlength = binlength
TABLES
archivobject = arch_obj
binarchivobject = binarch_obj
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 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.
* Ergebnis von ARCHIVOBJECT_GET_TABLE verarbeiten
CLEAR ld_stream.
LOOP AT binarch_obj ASSIGNING <ls_binary>.
CONCATENATE ld_stream <ls_binary>-line INTO ld_stream IN BYTE MODE.
ENDLOOP.
ld_stream = ld_stream(binlength). "Den Stream auf die richtige Länge kürzen.
* in die struktur von so_document_send_api1 umwandeln.
WHILE ld_stream IS NOT INITIAL.
APPEND INITIAL LINE TO hexbin ASSIGNING <ls_line>.
<ls_line> = ld_stream.
SHIFT ld_stream BY ld_size PLACES LEFT IN BYTE MODE.
ENDWHILE.
Code: Alles auswählen.
<ls_line> = ld_stream.
*wird zu
<ls_line>-line = ld_stream.
Code: Alles auswählen.
DATA: arch_obj TYPE TABLE OF docs WITH HEADER LINE,
binarch_obj TYPE TABLE OF tbl1024. " WITH HEADER LINE.
DATA: hexbin TYPE solix_tab.
DATA: input_length TYPE i.
DATA: binlength TYPE sapb-length.
DATA:
ld_size TYPE i,
ld_stream TYPE xstring.
FIELD-SYMBOLS:
<ls_line> TYPE solix,
<ls_binary> TYPE tbl1024.
START-OF-SELECTION.
CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
EXPORTING
archiv_id = 'A2'
document_type = 'PDF'
archiv_doc_id = '201108216395145275A075A3D443D44AC0071E'
* ALL_COMPONENTS =
* SIGNATURE = 'X'
* COMPID = 'data'
IMPORTING
* length = length
binlength = binlength
TABLES
archivobject = arch_obj
binarchivobject = binarch_obj
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 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.
CLEAR ld_stream.
LOOP AT binarch_obj ASSIGNING <ls_binary>.
CONCATENATE ld_stream <ls_binary>-line INTO ld_stream IN BYTE MODE.
ENDLOOP.
ld_stream = ld_stream(binlength). "Den Stream auf die richtige Länge kürzen.
* in die struktur von so_document_send_api1 umwandeln.
ld_size = 255.
WHILE ld_stream IS NOT INITIAL.
APPEND INITIAL LINE TO hexbin ASSIGNING <ls_line>.
<ls_line>-line = ld_stream.
SHIFT ld_stream BY ld_size PLACES LEFT IN BYTE MODE.
ENDWHILE.