*&---------------------------------------------------------------------*
*& Report ZSD_PICKING_FORM
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zsd_picking_form.
***read shipping notes
* To call from from SAP Script:
*/: DEFINE &ITEM_TEXT& = ' '
*/: DEFINE &LV_VBELN& = '0080000103'
*/: PERFORM CALL_FROM_SCRIPT IN PROGRAM ZSD_PICKING_FORM
*/: USING &LV_VBELN&
*/: CHANGING &ITEM_TEXT&
*/: ENDPERFORM
* To display the variable use the standard:
* = &ITEM_TEXT&
* TEST
PERFORM unit_test.
* Unit test - emulates the SAP Script call
FORM unit_test.
TYPES: form_params_ty TYPE STANDARD TABLE OF itcsy
WITH NON-UNIQUE KEY name.
DATA: lv_vbeln TYPE thead-tdname,
lv_text TYPE string.
lv_vbeln = '0080000103'.
* construct the calling parameters
DATA(in_params) = VALUE form_params_ty(
( name = `LV_VBELN` value = lv_vbeln ) ).
DATA(out_params) = VALUE form_params_ty(
( name = `LV_TEXT` value = ' ' ) ).
* make the actual call
PERFORM call_from_script TABLES in_params
out_params.
* display the result
LOOP AT out_params ASSIGNING FIELD-SYMBOL(<fs>).
WRITE:/ <fs>-name, <fs>-value.
ENDLOOP.
ENDFORM.
* this function is called from the script
* the data is passed in and out in TABLES
* the tables contain two columns: KEY and VALUE
FORM call_from_script TABLES in_params STRUCTURE itcsy
out_params STRUCTURE itcsy.
DATA: lv_vbeln TYPE thead-tdname,
lv_convert_veln TYPE vbeln,
lv_text TYPE string.
" get the values of the keys from the IN table
READ TABLE in_params WITH KEY name = 'LV_VBELN'.
IF sy-subrc EQ 0.
lv_vbeln = in_params-value.
UNPACK lv_vbeln TO lv_convert_veln. "ADD LEADING ZEROS ACCORGING TO FM REQUREMENTS
lv_vbeln = lv_convert_veln.
ENDIF.
" get the data
PERFORM get_text USING lv_vbeln CHANGING lv_text.
" put the data into the OUT table
" export output parameters in the OUT table
LOOP AT out_params ASSIGNING FIELD-SYMBOL(<fs>).
IF <fs>-name = 'LV_TEXT'.
<fs>-value = lv_text.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM.
* pass VBELN and a STRING
FORM get_text USING in_vbeln
CHANGING out_text.
DATA: lv_id TYPE thead-tdid VALUE 'TX03',
lv_object TYPE thead-tdobject VALUE 'VBBK',
lv_lang TYPE thead-tdspras,
lt_lines TYPE TABLE OF tline,
lv_text TYPE string.
lv_lang = sy-langu.
* try to get the texts
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = lv_id
language = lv_lang
name = in_vbeln
object = lv_object
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
* if anything is fpund, concatenate all texts and return them
IF sy-subrc = 0.
FIELD-SYMBOLS <fs_text> TYPE tline.
CLEAR lv_text.
LOOP AT lt_lines ASSIGNING <fs_text>.
CONCATENATE lv_text <fs_text>-tdline INTO lv_text RESPECTING BLANKS SEPARATED BY ' '.
ENDLOOP.
out_text = lv_text.
ENDIF.
ENDFORM.