Наверное это и должно быть...
Я же говорил, что сейчас у меня нет пятерки, поэтому смотрю я по коду четверки...
там вот так:
Code:
*&---------------------------------------------------------------------*
*& Form prepare_notes
*&---------------------------------------------------------------------*
* prepare notes by selecting relevant texts from text table
*----------------------------------------------------------------------*
* -->IV_GUID header or item guid
* -->IV_ID text id
*----------------------------------------------------------------------*
FORM prepare_notes USING value(iv_guid) TYPE bbp_guid
value(iv_id) TYPE tdid.
DATA: lv_tabix LIKE sy-tabix,
lv_langu LIKE sy-langu,
ls_longtext TYPE bbp_pds_longtext.
FIELD-SYMBOLS: <ls_longtext> TYPE bbp_pds_longtext.
CHECK: gv_general_abort NE gc_yes,
iv_guid NE space.
CLEAR: noteline.
REFRESH: noteline.
CLEAR: gt_longtext_lines.
REFRESH: gt_longtext_lines.
* if vendor remarks are processed clear text for folder
* 'documents' on item level
IF sel_txt_desc = text-008 AND gv_objtyp = c_po_item.
CLEAR sel_txt_desc.
ENDIF.
* sort before output
SORT gt_u_text BY guid tdid tdspras counter.
* at first search in update table for text in logon language
READ TABLE gt_u_text WITH KEY guid = iv_guid
tdid = iv_id
tdspras = sy-langu.
* IF sy-subrc = 0.
* lv_tabix = sy-tabix.
* LOOP AT gt_u_text FROM lv_tabix.
* IF gt_u_text-guid NE iv_guid OR
* gt_u_text-tdid NE iv_id OR
* gt_u_text-tdspras NE sy-langu.
* EXIT.
* ENDIF.
* noteline = gt_u_text-tdline.
* APPEND noteline.
* ENDLOOP.
* ELSE.
**.. if not successfull take first language found in update table
* READ TABLE gt_u_text WITH KEY guid = iv_guid
* tdid = iv_id.
* IF sy-subrc = 0.
* lv_tabix = sy-tabix.
* lv_langu = gt_u_text-tdspras.
* LOOP AT gt_u_text FROM lv_tabix.
* IF gt_u_text-guid NE iv_guid OR
* gt_u_text-tdid NE iv_id OR
* gt_u_text-tdspras NE lv_langu.
* EXIT.
* ENDIF.
* noteline = gt_u_text-tdline.
* APPEND noteline.
* ENDLOOP.
**.. no text in update table -> now search in doc table...
* ELSE.
**.... for text in logon language
* READ TABLE gt_text WITH KEY guid = iv_guid
* tdid = iv_id
* tdspras = sy-langu.
* IF sy-subrc = 0.
* lv_tabix = sy-tabix.
* LOOP AT gt_text FROM lv_tabix.
* IF gt_text-guid NE iv_guid OR
* gt_text-tdid NE iv_id OR
* gt_text-tdspras NE sy-langu.
* EXIT.
* ENDIF.
* noteline = gt_text-tdline.
* APPEND noteline.
* ENDLOOP.
* ELSE.
**.... if not successfull take first language found
* READ TABLE gt_text WITH KEY guid = iv_guid
* tdid = iv_id.
* IF sy-subrc = 0.
* lv_tabix = sy-tabix.
* lv_langu = gt_text-tdspras.
* LOOP AT gt_text FROM lv_tabix.
* IF gt_text-guid NE iv_guid OR
* gt_text-tdid NE iv_id OR
* gt_text-tdspras NE lv_langu.
* EXIT.
* ENDIF.
* noteline = gt_text-tdline.
* APPEND noteline.
* ENDLOOP.
**...... no text for guid found
* ELSE.
* EXIT.
* ENDIF.
* ENDIF.
* ENDIF.
* ENDIF.
******************************
IF sy-subrc = 0.
LOOP AT gt_u_text ASSIGNING <ls_longtext>
WHERE guid = iv_guid
AND tdid = iv_id.
IF <ls_longtext>-guid NE iv_guid OR
<ls_longtext>-tdid NE iv_id OR
<ls_longtext>-tdspras NE sy-langu.
EXIT.
ENDIF.
MOVE-CORRESPONDING <ls_longtext> TO ls_longtext.
APPEND ls_longtext TO gt_longtext_lines.
ENDLOOP.
ELSE.
*.. if not successfull take first language found in update table
READ TABLE gt_u_text WITH KEY guid = iv_guid
tdid = iv_id.
IF sy-subrc = 0.
lv_langu = gt_u_text-tdspras.
LOOP AT gt_u_text ASSIGNING <ls_longtext>
WHERE guid = iv_guid
AND tdid = iv_id.
IF <ls_longtext>-guid NE iv_guid OR
<ls_longtext>-tdid NE iv_id OR
<ls_longtext>-tdspras NE lv_langu.
EXIT.
ENDIF.
MOVE-CORRESPONDING <ls_longtext> TO ls_longtext.
APPEND ls_longtext TO gt_longtext_lines.
ENDLOOP.
*.. no text in update table -> now search in doc table...
ELSE.
*.... for text in logon language
READ TABLE gt_text WITH KEY guid = iv_guid
tdid = iv_id
tdspras = sy-langu.
IF sy-subrc = 0.
LOOP AT gt_text ASSIGNING <ls_longtext>
WHERE guid = iv_guid
AND tdid = iv_id.
IF <ls_longtext>-guid NE iv_guid OR
<ls_longtext>-tdid NE iv_id OR
<ls_longtext>-tdspras NE sy-langu.
EXIT.
ENDIF.
MOVE-CORRESPONDING <ls_longtext> TO ls_longtext.
APPEND ls_longtext TO gt_longtext_lines.
ENDLOOP.
ELSE.
*.... if not successfull take first language found
READ TABLE gt_text WITH KEY guid = iv_guid
tdid = iv_id.
IF sy-subrc = 0.
lv_langu = gt_text-tdspras.
LOOP AT gt_text ASSIGNING <ls_longtext>
WHERE guid = iv_guid
AND tdid = iv_id.
IF <ls_longtext>-guid NE iv_guid OR
<ls_longtext>-tdid NE iv_id OR
<ls_longtext>-tdspras NE lv_langu.
EXIT.
ENDIF.
MOVE-CORRESPONDING <ls_longtext> TO ls_longtext.
APPEND ls_longtext TO gt_longtext_lines.
ENDLOOP.
*...... no text for guid found
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " prepare_notes