Hallo, nach einigen Tagen Recherche und Bastelei habe ich am Ende eine Lösung zu dem Thema gefunden und wieder sehr viel dazu gelernt!
Falls es jemanden interessiert, hier der Code..
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(IM_MODE) TYPE CHAR1 DEFAULT 'B'
*" VALUE(IM_BARCODE) TYPE BARCODE OPTIONAL
*" VALUE(IM_CASEGUID) TYPE BAPIGUID OPTIONAL
*" VALUE(IM_DOCAR) TYPE /NEXTEVO/ZCMDOCAR OPTIONAL
*" VALUE(IM_UDOCAR) TYPE /NEXTEVO/ZCMUDOCAR OPTIONAL
*" VALUE(IM_BLDAT) TYPE BLDAT OPTIONAL
*" VALUE(IM_RMSID) TYPE SRMRMSID OPTIONAL
*" VALUE(IM_PROCESSID) TYPE /NEXTEVO/ZCMPROCESSID OPTIONAL
*" EXPORTING
*" VALUE(EX_RETURN) TYPE BAPIRET2
*" TABLES
*" ET_DOCS STRUCTURE /NEXTEVO/ZCM_DOCS OPTIONAL
*" ET_PROPERTIES STRUCTURE BAPIPROPTB OPTIONAL
*" ET_VISIBILITY STRUCTURE BAPIPROPTB OPTIONAL
*" ET_RECEIVER STRUCTURE SOOS1 OPTIONAL
*" ET_SRMORGRES STRUCTURE /NEXTEVO/ZORGRES OPTIONAL
*" ET_CASES STRUCTURE SCMG_T_CASE_ATTR OPTIONAL
*" EXCEPTIONS
*" ABBRUCH
*" ERROR
*"----------------------------------------------------------------------
* FB zum Indizieren eines Barcode-Dokuments ...
* zusätzlich müssen alle zu indizierenden Dokumente in Struktur ET_DOCS
* eingestellt werden.
*
* Wenn ET_DOCS-AR_OBJECT, -ARCHIV_ID bekannt, können sie hier angegeben
* werden, sonst werden sie anhand von Defaultangaben ermittelt.
*
* Ebenfalls kann das RMSID ermittelt werden / wird aber später noch
* ermittelt.
*
* Musterbaustein für Barcode-Indizierung ...
* IM_MODE = A Add
DATA: my_docs TYPE /nextevo/zcm_docs,
my_attachments TYPE /nextevo/zcm_attachment,
myproperties TYPE bapiproptb,
my_casetype TYPE scmgcasetype-case_type,
myscmgcasetype TYPE scmgcasetype,
myattr TYPE scmg_t_case_attr,
myzpa100v TYPE /nextevo/zpa100v,
mybldat(10) TYPE c,
mysrmorgreswa TYPE /nextevo/zorgres,
myzcm030t TYPE /nextevo/zcm030t,
lv_ref TYPE /nextevo/zcm_e_tagref,
lv_param TYPE /NEXTEVO/ZCMPARAM.
REFRESH: et_docs, et_properties, gt_agr_texts, gi_srmorgres.
CLEAR: ex_return, g_doc, g_agr_texts, g_pernr, g_props.
g_doc-barcode = im_barcode.
g_doc-case_guid = im_caseguid.
IF NOT im_caseguid IS INITIAL.
SELECT SINGLE * FROM /nextevo/zpa100v INTO myzpa100v
WHERE case_guid = im_caseguid.
IF sy-subrc = 0.
MOVE-CORRESPONDING myzpa100v TO g_doc.
ENDIF.
ENDIF.
*{ REPLACE IDSK900008 1
*\ g_doc-docar = im_docar.
*\ g_doc-udocar = im_udocar.
GET PARAMETER ID 'Z_DOCAR' FIELD G_DOC-DOCAR.
GET PARAMETER ID 'Z_UDOCAR' FIELD G_DOC-UDOCAR.
*} REPLACE
g_doc-bldat = im_bldat.
IF g_doc-bldat IS INITIAL.
g_doc-bldat = sy-datum.
ENDIF.
g_doc-processid = im_processid.
IF NOT im_docar IS INITIAL.
SELECT SINGLE * FROM /nextevo/zcm030t INTO myzcm030t
WHERE rmsid = im_rmsid
AND docar = im_docar
AND ( casetype = g_doc-case_type OR casetype = ' ' )
AND spras = sy-langu.
IF sy-subrc = 0.
WRITE g_doc-bldat TO mybldat.
CONCATENATE myzcm030t-bez 'vom'(011) mybldat INTO g_doc-description SEPARATED BY ' '.
ENDIF.
ENDIF.
IF NOT im_udocar IS INITIAL.
SELECT SINGLE * FROM /nextevo/zcm035t INTO CORRESPONDING FIELDS OF myzcm030t
WHERE rmsid = im_rmsid
AND docar = im_docar
AND udocar = im_udocar
AND ( casetype = g_doc-case_type OR casetype = ' ' )
AND spras = sy-langu.
IF sy-subrc = 0.
WRITE g_doc-bldat TO mybldat.
CONCATENATE myzcm030t-bez 'vom'(011) mybldat INTO g_doc-description SEPARATED BY ' '.
ENDIF.
ENDIF.
IF g_doc-urheber IS INITIAL.
g_doc-urheber = sy-uname.
ENDIF.
g_doc-rmsid = im_rmsid.
* EMail Receiver initialisieren
CLEAR: sosndscr.
EXPORT sosndscr TO MEMORY ID 'SAPLS040150'.
* Modus setzen B=Barcode, E=EMail
g_mode = 'B'.
IF NOT im_mode IS INITIAL.
g_mode = im_mode.
ENDIF.
IF NOT g_doc-docar IS INITIAL.
IF NOT g_doc-udocar IS INITIAL.
CONCATENATE g_doc-docar g_doc-udocar INTO lv_ref SEPARATED BY '.'.
ELSE.
lv_ref = g_doc-docar.
ENDIF.
ENDIF.
CALL FUNCTION '/NEXTEVO/ZCM_INIT_TAG'
EXPORTING
piv_rms_id = im_rmsid
piv_tag_type = '1'
piv_reference = lv_ref.
* if gv_tagscr is INITIAL.
SELECT SINGLE param from /nextevo/zcm001
INTO lv_param
WHERE rmsid = g_doc-rmsid
AND id = '0446'.
if lv_param = 'X'.
gv_tagscr = '0100'.
else.
gv_tagscr = '0101'.
endif.
* endif.
if gv_tagscr = '0100'.
CALL SCREEN '2000' STARTING AT 5 5 .
else.
CALL SCREEN '2000' STARTING AT 5 5 ENDING AT 118 25.
ENDIF.
CASE g_return.
WHEN 'A'.
ex_return-type = 'E'.
ex_return-message = 'Abbruch Transaktion'.
RAISE abbruch.
WHEN 'C'.
ex_return-type = 'E'.
ex_return-message = 'Abbruch Transaktion'.
RAISE abbruch.
WHEN 'S'.
ex_return-type = 'S'.
* Property-Tabelle füllen
CALL FUNCTION '/NEXTEVO/ZPA_CONV_TO_DOC_PROPS'
EXPORTING
im_zpa100d1 = g_doc
TABLES
et_properties = et_properties.
*
* ET_DOCS-Tabelle füllen / zunächst Hauptdokument anfügen
MOVE-CORRESPONDING g_doc TO my_docs.
my_docs-posnr = 1.
my_docs-caseguid = g_doc-case_guid.
my_docs-descri = g_doc-description.
my_docs-spsid = g_doc-spsid.
APPEND my_docs TO et_docs.
* EMail Receiver
et_receiver[] = sosndscr-rec_tab.
* Visibility
SORT gt_agr_texts BY agr_name.
DELETE ADJACENT DUPLICATES FROM gt_agr_texts.
LOOP AT gt_agr_texts INTO g_agr_texts.
IF NOT g_agr_texts-agr_name IS INITIAL.
PERFORM addproperties TABLES et_visibility USING 'ROLE' g_agr_texts-agr_name.
ENDIF.
ENDLOOP.
* SRMORGRES
CLEAR mysrmorgreswa.
mysrmorgreswa-rmsid = im_rmsid.
REFRESH et_srmorgres.
LOOP AT gi_srmorgres INTO gs_srmorgres.
MOVE-CORRESPONDING gs_srmorgres TO mysrmorgreswa.
APPEND mysrmorgreswa TO et_srmorgres.
ENDLOOP.
ENDCASE.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Funktionsbaustein /NEXTEVO/ZPA_INDEX_BARCODE, Ende A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZDPA_INDEX_BARCODE. "active version
SET PARAMETER ID 'Z_DOCAR' FIELD G_DOC-DOCAR.
SET PARAMETER ID 'Z_UDOCAR' FIELD G_DOC-UDOCAR.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*
ENDFUNCTION.