Sądząc po ilości wątków - problem dość powszechny, jednak nie jestem w stanie przenieść na swój grunt rozwiązań proponowanych na innych forach.
Wyciągam sobie z tabeli wewnętrznej tekst (średnio około 800 znaków) pocięty na bloki po 250 znaków. Wrzucam je w pole "Element tekstowy", spajając w jedną całość (Załącznik 1).
W momencie, gdy z poziomu webdynpro odpalam generowanie pdf`a, znaki łamania linii zamieniają się w hash (załącznik 2).
Przepracowałem rozwiązania sugerowane w wątkach:
https://answers.sap.com/questions/11968 ... form-.html
https://answers.sap.com/questions/89424 ... tform.html
jednak nie jestem w stanie skutecznie wykorzystać je u siebie.
Z nieszczęsnym przypadkiem muszę sobie poradzić w dwóch miejscach:
- raz, gdy wyciągam z wewnętrznej tabeli zawartość tekstową kilku wierszy i scalić je w uzasadnienie (tabela z 1 rekordem),
- n-razy, gdy loopem wyciągam zawartość tekstową kilku wierszy scalając je w jedną opinię, ale wykonując to w loopie (opinii może być 'n' sztuk).
Najnaturalniejszym miejscem modyfikacji danych (w sensie pozbycia się hasha) wydaje mi się chwila, w której mam zebrane kompletne dane w trzech tabelach wewnętrznych, które nie będą już zmieniane i które zostaną podane do MF tworzącego PDF.
Zarówno w przypadku jednorekordowego zbioru danych, jak i opinii w kilku rekordach, typ danych (tekstowych) w strukturze na której opieram tabele wewnętrzne, widoczny jest na screenie 3.
Mogę liczyć na jakieś sugestie?
Smartform - # zamiast nowej linii
Re: Smartform - # zamiast nowej linii
Może ktoś będzie się zmagał z podobnym problemem, więc oto i częściowe rozwiązanie...
ZHCM_ESS_E_REASON - pole tekstowe, 1333 znaki.
Tekst z hashami dzielę po znaku '#' (cl_abap_char_utilities=>newline) i wrzucam do et_tdline,
a następnie dodaję te linie do tabeli wewnętrznej.
Z niej w loopie składam wszystko do kupy już nie mając hashy.
Minuty rozwiązania - tracę znaki końca linii, ale w moim przypadku 'jestem gotów na to poświęcenie'
ZHCM_ESS_E_REASON - pole tekstowe, 1333 znaki.
Tekst z hashami dzielę po znaku '#' (cl_abap_char_utilities=>newline) i wrzucam do et_tdline,
a następnie dodaję te linie do tabeli wewnętrznej.
Z niej w loopie składam wszystko do kupy już nie mając hashy.
Minuty rozwiązania - tracę znaki końca linii, ale w moim przypadku 'jestem gotów na to poświęcenie'
Kod: Zaznacz cały
FUNCTION ZHCM_ESS_SMARTF_ENTER_HASH.
*"----------------------------------------------------------------------
*"*"Lokalny interfejs:
*" IMPORTING
*" REFERENCE(IM_TXT) TYPE ZHCM_ESS_E_REASON
*" EXPORTING
*" REFERENCE(EX_TXT) TYPE ZHCM_ESS_E_REASON
*"----------------------------------------------------------------------
data: ET_TDLINE2 TYPE TABLE OF ZHCM_ESS_E_REASON.
data: ET_TDLINEF2 TYPE TABLE OF ZHCM_ESS_E_REASON.
DATA: wa_uzas TYPE ZHCM_ESS_ST_SMART_UZAS.
DATA: it_uzas TYPE ZHCM_ESS_iT_SMART_UZAS.
data: lv_txt(1333) type c.
data: lv_pop_txt(1333) type c. "poprzedni
data: lv_new_txt(1333) type c. "nowy
lv_txt = im_txt.
SPLIT lv_txt AT cl_abap_char_utilities=>newline INTO TABLE ET_TDLINE2 .
append LINES OF et_tdline2 to it_uzas.
lv_txt = ''.
loop at it_uzas into wa_uzas.
lv_new_txt = wa_uzas-uzasadnienie.
CONCATENATE lv_pop_txt lv_new_txt into lv_txt SEPARATED BY ' '.
lv_pop_txt = lv_txt.
ENDLOOP.
ex_txt = lv_txt.
ENDFUNCTION.