Está en la página 1de 25

http://scn.sap.

com/thread/96462

a sample program for save_text


This question has been Answered.

Anitha Raghul
Jan 6, 2006 6:21 AM
hi,

i need a sample program for save_text function module

Correct Answer by Vijay Dudla on Jan 6, 2006 6:29 AM


REPORT ztest LINE-SIZE 80 MESSAGE-ID zrf.
TYPES: BEGIN OF grec,
werks TYPE werks_d,
signi TYPE signi,
bolnr TYPE vbeln,
exidv TYPE exidv,
vbeln TYPE vbeln,
wadat TYPE wadat,
END OF grec.
DATA: gt_exidv TYPE STANDARD TABLE OF grec WITH HEADER LINE.
PARAMETERS: pf_wadat TYPE
pf_werks TYPE
pf_signi TYPE
pf_bolnr TYPE
SELECT-OPTIONS: st_exidv

wadat OBLIGATORY DEFAULT sy-datum,


werks_d,
char10,
vbeln.
FOR gt_exidv-exidv NO INTERVALS.

*&--------------------------------------------------------------------*
*&
Event AT SELECTION-SCREEN
*&--------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF ( NOT st_exidv[] IS INITIAL OR NOT pf_signi IS INITIAL OR
NOT pf_werks IS INITIAL
OR NOT pf_bolnr IS INITIAL ) AND
NOT pf_werks = '6500' AND NOT pf_werks = '8300'.
SET CURSOR FIELD 'PF_WERKS'.
MESSAGE e000 WITH 'Enter valid plant (6500/8300)'.

ENDIF.
IF NOT st_exidv[] IS INITIAL AND pf_signi IS INITIAL.
SET CURSOR FIELD 'PF_SIGNI'.
MESSAGE e000 WITH 'Enter trailer ID number'.
ENDIF.
IF NOT st_exidv[] IS INITIAL AND pf_bolnr IS INITIAL.
SET CURSOR FIELD 'PF_BOLNR'.
MESSAGE e000 WITH 'Enter bill of lading number'.
ENDIF.
*&--------------------------------------------------------------------*
*&
Event START-OF-SELECTION
*&--------------------------------------------------------------------*
START-OF-SELECTION.
IF st_exidv IS INITIAL.
PERFORM get_barcode.
ELSE.
LOOP AT st_exidv.
gt_exidv-exidv = st_exidv-low.
gt_exidv-werks = pf_werks.
gt_exidv-signi = pf_signi.
gt_exidv-bolnr = pf_bolnr.
gt_exidv-wadat = pf_wadat.
APPEND gt_exidv.
ENDLOOP.
ENDIF.
*&--------------------------------------------------------------------*
*&
Event END-OF-SELECTION
*&--------------------------------------------------------------------*
END-OF-SELECTION.
IF gt_exidv[] IS INITIAL.
MESSAGE i000(zrf) WITH 'No data found for given selection'.
EXIT.
ENDIF.
PERFORM process_data.
*&--------------------------------------------------------------------*
*&
Form GET_BARCODE
*&--------------------------------------------------------------------*
FORM get_barcode.
TYPES: BEGIN OF lrec,
docnum TYPE edi_docnum,
werks TYPE werks_d,
signi TYPE signi,
bolnr TYPE vbeln,
wadat TYPE wadat,
END OF lrec.
DATA: lt_idoc TYPE STANDARD TABLE OF lrec WITH HEADER LINE,
lf_date TYPE sydatum,

lf_data TYPE edi_sdata.


*-Get all (status 52 & 53) lt_idoc number for given date
SELECT docnum INTO TABLE lt_idoc FROM edidc
WHERE credat = pf_wadat
AND
mestyp = 'ZDLPGI'
AND ( status = '52'
OR
status = '53' ).
*-Filter the list for given plant and trailer number
LOOP AT lt_idoc.
SELECT SINGLE sdata INTO lf_data FROM edid4
WHERE docnum EQ lt_idoc-docnum
AND
segnam EQ 'E1EDK31'.
*---If CST IDOC then remove from list
IF lf_data+228(5) NE space.
DELETE lt_idoc.
CONTINUE.
ENDIF.
*---If not given plant then remove from list
IF NOT pf_werks IS INITIAL AND pf_werks NE lf_data+208(4).
DELETE lt_idoc.
CONTINUE.
ENDIF.
*---If not given trailer then remove from list
TRANSLATE lf_data+168(10) TO UPPER CASE.
IF NOT pf_signi IS INITIAL AND pf_signi NE lf_data+168(10).
DELETE lt_idoc.
CONTINUE.
ENDIF.
*---If not given BOL then remove from list
IF NOT pf_bolnr IS INITIAL AND pf_bolnr NE lf_data+188(10).
DELETE lt_idoc.
CONTINUE.
ENDIF.
lt_idoc-werks = lf_data+208(4).
lt_idoc-signi = lf_data+168(10).
lt_idoc-bolnr = lf_data+188(10).
*---Get ship date
SELECT SINGLE sdata INTO lf_data FROM edid4
WHERE docnum EQ lt_idoc-docnum
AND
segnam EQ 'E1EDT10'.
IF sy-subrc = 0.
lt_idoc-wadat = lf_data+27(10).
ENDIF.
MODIFY lt_idoc.
ENDLOOP.
*-Get the barcode for the selected idoc, if not processed before
lf_date = pf_wadat - 1.
LOOP AT lt_idoc.
SELECT sdata INTO lf_data FROM edid4
WHERE docnum EQ lt_idoc-docnum
AND
segnam EQ 'E1EDL07'.
SELECT SINGLE COUNT(*) FROM zremote_log
WHERE ( erdat = pf_wadat
OR
erdat = lf_date )
AND
exidv = lf_data+10(9).
IF sy-subrc NE 0.
gt_exidv-werks = lt_idoc-werks.
gt_exidv-signi = lt_idoc-signi.

gt_exidv-bolnr = lt_idoc-bolnr.
gt_exidv-wadat = lt_idoc-wadat.
gt_exidv-exidv = lf_data+10(9).
APPEND gt_exidv.
ENDIF.
ENDSELECT.
ENDLOOP.
*-Remove duplicate barcode if any
SORT gt_exidv BY exidv.
DELETE ADJACENT DUPLICATES FROM gt_exidv COMPARING exidv.
ENDFORM.
" GET_BARCODE
*&--------------------------------------------------------------------*
*&
Form PROCESS_DATA
*&--------------------------------------------------------------------*
FORM process_data.
TYPES: BEGIN OF lrec,
werks TYPE werks_d,
signi TYPE signi,
bolnr TYPE vbeln,
wadat TYPE wadat,
vbeln TYPE vbeln,
END OF lrec.
DATA: lt_trlr TYPE STANDARD TABLE OF lrec
lf_msg
TYPE char40.

WITH HEADER LINE,

*-Group by trailer
LOOP AT gt_exidv.
lt_trlr-werks = gt_exidv-werks.
lt_trlr-signi = gt_exidv-signi.
lt_trlr-bolnr = gt_exidv-bolnr.
lt_trlr-wadat = gt_exidv-wadat.
*---Get the delivery number for barcodes in trailer
SELECT SINGLE inhalt INTO lt_trlr-vbeln FROM vekp
WHERE exidv EQ gt_exidv-exidv
AND
status NE '0060'.
*---If barcode not found then write log
IF sy-subrc NE 0.
lf_msg = 'Barcode Not Found'.
WRITE :/ lt_trlr-werks, (10) lt_trlr-signi, (10) lt_trlr-bolnr,
(10) gt_exidv-exidv, lf_msg.
ENDIF.
CHECK NOT lt_trlr-vbeln IS INITIAL.
gt_exidv-vbeln = lt_trlr-vbeln.
MODIFY gt_exidv.
COLLECT lt_trlr.
ENDLOOP.
*-Process each delivery
LOOP AT lt_trlr.
SELECT SINGLE COUNT(*) FROM likp WHERE vbeln
= lt_trlr-vbeln
AND
wadat_ist = '00000000'.
*---If PGI is already done then skip the process
IF sy-subrc NE 0.
MESSAGE s000(zrf) WITH lt_trlr-vbeln 'Delivery already PGIed'.
CONTINUE.
ENDIF.

SELECT SINGLE COUNT(*) FROM lips WHERE vbeln = lt_trlr-vbeln


AND
zzconpath NE space.
*---If consolidation delivery then skip the process
IF sy-subrc EQ 0.
lf_msg = 'NAPD Model - Use Transaction ZRMFGCST'.
WRITE :/ lt_trlr-signi, lt_trlr-vbeln, lf_msg.
CONTINUE.
ENDIF.
*---PGI the delivery
PERFORM process_pgi USING lt_trlr-werks lt_trlr-signi lt_trlrbolnr
lt_trlr-wadat lt_trlr-vbeln.
*---Check for PGI completion
SELECT SINGLE COUNT(*) FROM likp WHERE vbeln
= lt_trlr-vbeln
AND
wadat_ist = '00000000'.
IF sy-subrc EQ 0.
lf_msg = 'PGI Failed - Check workflow'.
WRITE :/ lt_trlr-signi, lt_trlr-vbeln, lf_msg.
ELSE.
MESSAGE s000(zrf) WITH lt_trlr-vbeln 'Delivery PGIed'.
ENDIF.
ENDLOOP.
ENDFORM.
" PROCESS_DATA
*&--------------------------------------------------------------------*
*&
Form PROCESS_PGI
*&--------------------------------------------------------------------*
FORM process_pgi USING pf_werks pf_signi pf_bolnr pf_wadat pf_vbeln.
DATA:

lt_exidv TYPE STANDARD TABLE OF exidv WITH HEADER LINE,


lf_msg
TYPE camsg.

*-Get all HU for given delivery


LOOP AT gt_exidv WHERE vbeln = pf_vbeln.
APPEND gt_exidv-exidv TO lt_exidv.
ENDLOOP.
*-If no HU given then exit
CHECK NOT lt_exidv[] IS INITIAL.
*-If delivery is not picking relevant then exit
SELECT SINGLE COUNT(*) FROM vbuk WHERE vbeln EQ pf_vbeln
AND
kostk NE space.
IF sy-subrc EQ 0.
lf_msg = 'Delivery is picking relevant'.
PERFORM create_workflow TABLES lt_exidv USING pf_werks pf_vbeln
pf_bolnr pf_signi pf_wadat lf_msg.
EXIT.
ENDIF.
*-Update given delivery header text
PERFORM update_text USING pf_vbeln pf_bolnr pf_signi pf_wadat.
IF sy-subrc NE 0.
lf_msg = 'Delivery header text update failed'.
PERFORM create_workflow TABLES lt_exidv USING pf_werks pf_vbeln
pf_bolnr pf_signi pf_wadat lf_msg.
EXIT.
ENDIF.

*-Split delivery
PERFORM split_delivery TABLES lt_exidv USING pf_vbeln.
IF sy-subrc NE 0.
lf_msg = 'Delivery Split Failed'.
PERFORM create_workflow TABLES lt_exidv USING pf_werks pf_vbeln
pf_bolnr pf_signi pf_wadat lf_msg.
EXIT.
ENDIF.
*-Create material document
PERFORM create_md TABLES lt_exidv USING pf_vbeln lf_msg.
IF NOT lf_msg IS INITIAL.
PERFORM create_workflow TABLES lt_exidv USING pf_werks pf_vbeln
pf_bolnr pf_signi pf_wadat lf_msg.
EXIT.
ENDIF.
*-PGI the delivery
PERFORM pgi_delivery USING pf_vbeln.
IF sy-subrc NE 0.
PERFORM get_error USING lf_msg.
PERFORM create_workflow TABLES lt_exidv USING pf_werks pf_vbeln
pf_bolnr pf_signi pf_wadat lf_msg.
EXIT.
ENDIF.
*-Insert into log table for BW extract
PERFORM insert_log TABLES lt_exidv USING pf_werks pf_vbeln pf_signi.
ENDFORM.
" PROCESS_PGI
*&-------------------------------------------------------------------*&
Form UPDATE_TEXT
*&-------------------------------------------------------------------FORM update_text USING pf_vbeln pf_bolnr pf_signi pf_date.
DATA: ls_header LIKE thead,
lf_posnr LIKE lips-posnr,
lt_lines TYPE STANDARD TABLE OF tline WITH HEADER LINE.
*-Populate Header Text details
ls_header-tdobject = 'VBBK'.
ls_header-tdname
= pf_vbeln.
ls_header-tdid
= 'ZRM0'.
ls_header-tdspras
= sy-langu.
*-Populate details of Text
CONCATENATE 'Shipment No
SEPARATED BY space.
lt_lines-tdformat = '*'.
APPEND lt_lines.

:' 'RM Ship No' INTO lt_lines-tdline

CONCATENATE 'Bill of Lading:' pf_bolnr INTO lt_lines-tdline


SEPARATED BY space.
APPEND lt_lines.
IF pf_signi EQ space.
pf_signi = 'RM TRAILER'.
ENDIF.
CONCATENATE 'Trailer
:' pf_signi INTO lt_lines-tdline

SEPARATED BY space.
APPEND lt_lines.
IF pf_date IS INITIAL.
pf_date = sy-datum.
ENDIF.
CONCATENATE 'Act Ship Date :' pf_date INTO lt_lines-tdline
SEPARATED BY space.
APPEND lt_lines.
CONCATENATE 'Route
SEPARATED BY space.
APPEND lt_lines.

:' 'RM Route' INTO lt_lines-tdline

*-Save Text
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client
= sy-mandt
header
= ls_header
savemode_direct = 'X'
TABLES
lines
= lt_lines
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
*-Populate header and item text details
ls_header-tdid
= 'Z052'.
REFRESH lt_lines.
lt_lines-tdline = pf_date.
lt_lines-tdformat = '*'.
APPEND lt_lines.
*-Save Text for actual ship date
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client
= sy-mandt
header
= ls_header
savemode_direct = 'X'
TABLES
lines
= lt_lines
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
*-Insert Texts at Item level.
SELECT posnr INTO lf_posnr FROM lips WHERE vbeln =
PERFORM item_text USING pf_vbeln lf_posnr 'ZLO1'
PERFORM item_text USING pf_vbeln lf_posnr 'ZLO2'
PERFORM item_text USING pf_vbeln lf_posnr 'ZLO3'
PERFORM item_text USING pf_vbeln lf_posnr 'ZLO4'
ENDSELECT.
IF sy-subrc NE 0.
EXIT.

pf_vbeln.
pf_bolnr.
pf_date.
pf_signi.
'Routing'.

ENDIF.
*-Update delivery header with bolnr and trailer Id
UPDATE likp SET bolnr = pf_bolnr traid = pf_signi
WHERE vbeln = pf_vbeln.
COMMIT WORK AND WAIT.
ENDFORM.
" UPDATE_TEXT
*&-------------------------------------------------------------------*&
Form ITEM_TEXT
*&-------------------------------------------------------------------FORM item_text USING pf_vbeln pf_posnr pf_id pf_title.
DATA: ls_header LIKE thead,
lt_lines TYPE STANDARD TABLE OF tline WITH HEADER LINE.
CONCATENATE pf_vbeln pf_posnr INTO ls_header-tdname.
ls_header-tdspras
= sy-langu.
ls_header-tdobject = 'VBBP'.
ls_header-tdid
= pf_id.
ls_header-tdtitle
= pf_title.
lt_lines-tdline
= pf_title .
lt_lines-tdformat = '*'.
APPEND lt_lines.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client
= sy-mandt
header
= ls_header
savemode_direct = 'X'
TABLES
lines
= lt_lines
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ENDFORM.
" ITEM_TEXT
*&-------------------------------------------------------------------*&
Form SPLIT_DELIVERY
*&-------------------------------------------------------------------FORM split_delivery TABLES pt_exidv USING pf_vbeln.
DATA: lt_hu
TYPE STANDARD TABLE OF zhu_data
lf_exidv TYPE exidv.

WITH HEADER LINE,

*-Get number of HU for given delivery


SELECT COUNT(*) FROM vekp WHERE inhalt = pf_vbeln
AND
status <> '0060'.
*-Check for split required
DESCRIBE TABLE pt_exidv.
CHECK sy-tfill LT sy-dbcnt.

*-Get HU data for given delivery


CALL FUNCTION 'Z_HU_GET_MULTI_DATA'
EXPORTING
if_vbeln = pf_vbeln
TABLES
et_hu
= lt_hu.
*-Remove all HU that are not in IDOC
LOOP AT lt_hu.
READ TABLE pt_exidv INTO lf_exidv WITH KEY lt_hu-exidv.
IF sy-subrc NE 0.
DELETE lt_hu.
ENDIF.
ENDLOOP.
*-Split the delivery
CALL FUNCTION 'Z_DELIVERY_SPLIT_BY_HU'
TABLES
it_hu_data = lt_hu
EXCEPTIONS
OTHERS
= 1.
ENDFORM.
" SPLIT_DELIVERY
*&--------------------------------------------------------------------*
*&
Form PGI_DELIVERY
*&--------------------------------------------------------------------*
FORM pgi_delivery USING pf_vbeln.
DATA: lt_bdc TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE,
lf_mode VALUE 'N'.
PERFORM bdc_dynpro TABLES lt_bdc USING 'SAPMV50A' '4004'.
PERFORM bdc_field TABLES lt_bdc USING 'LIKP-VBELN' pf_vbeln.
PERFORM bdc_field TABLES lt_bdc USING 'BDC_OKCODE' 'WABU_T'.
CALL TRANSACTION 'VL02N' USING lt_bdc
MODE
lf_mode
UPDATE 'S'.
IF sy-subrc NE 0.
EXIT.
ENDIF.
COMMIT WORK AND WAIT.
ENDFORM.
" PGI_DELIVERY
*&--------------------------------------------------------------------*
*&
Form INSERT_LOG
*&--------------------------------------------------------------------*
FORM insert_log TABLES pt_exidv USING pf_werks pf_vbeln pf_signi.
DATA: ls_log
TYPE zremote_log,
lf_lgnum TYPE lgnum.
IF pf_werks = '6500'.
lf_lgnum = 'ATL'.
ELSEIF pf_werks = '8300'.
lf_lgnum = 'AMX'.
ENDIF.

LOOP AT pt_exidv.
ls_log-erdat = sy-datum.
ls_log-vbeln = pf_vbeln.
ls_log-exidv = pt_exidv.
ls_log-lgnum = lf_lgnum.
ls_log-tknum = pf_signi.
INSERT zremote_log FROM ls_log.
ENDLOOP.
ENDFORM.
" INSERT_LOG
*&--------------------------------------------------------------------*
*&
form BDC_DYNPRO
*&--------------------------------------------------------------------*
FORM bdc_dynpro TABLES pt_bdc STRUCTURE bdcdata
USING lf_program lf_dynpro.
CLEAR pt_bdc.
pt_bdc-program = lf_program.
pt_bdc-dynpro
= lf_dynpro.
pt_bdc-dynbegin = 'X'.
APPEND pt_bdc.
ENDFORM.
" BDC_DYNPRO
*&--------------------------------------------------------------------*
*&
form BDC_FIELD
*&--------------------------------------------------------------------*
FORM bdc_field TABLES pt_bdc STRUCTURE bdcdata USING pf_nam pf_val.
CLEAR pt_bdc.
pt_bdc-fnam = pf_nam.
pt_bdc-fval = pf_val.
APPEND pt_bdc.
ENDFORM.
" BDC_FIELD
*&--------------------------------------------------------------------*
*&
Form GET_ERROR
*&--------------------------------------------------------------------*
FORM get_error USING pf_msg.
DATA: ls_messg LIKE message.
CALL FUNCTION 'WRITE_MESSAGE'
EXPORTING
msgid = sy-msgid
msgno = sy-msgno
msgty = sy-msgty
msgv1 = sy-msgv1
msgv2 = sy-msgv2
msgv3 = sy-msgv3
msgv4 = sy-msgv4
IMPORTING
messg = ls_messg.
pf_msg = ls_messg-msgtx.

ENDFORM.
" GET_ERROR
*&--------------------------------------------------------------------*
*&
Form CREATE_MD
*&--------------------------------------------------------------------*
FORM create_md TABLES lt_exidv USING pf_vbeln pf_msg.
DATA: ls_header
ls_code
ls_vekpo
lf_exidv
lt_ret
lt_item

LIKE
LIKE
TYPE
TYPE
TYPE
TYPE
WITH

bapi2017_gm_head_01,
bapi2017_gm_code,
zvekpo,
exidv,
STANDARD TABLE OF bapiret2 WITH HEADER LINE,
STANDARD TABLE OF bapi2017_gm_item_create
HEADER LINE.

*-Fill the header detail


ls_header-pstng_date
ls_header-doc_date
ls_header-pr_uname
ls_code-gm_code

=
=
=
=

sy-datum.
sy-datum.
sy-uname.
'05'.

*-Fill item detail


LOOP AT lt_exidv INTO lf_exidv.
CLEAR ls_vekpo.
SELECT SINGLE * FROM zvekpo INTO ls_vekpo
WHERE exidv = lf_exidv
AND
inhalt = pf_vbeln
AND
status <> '0060'.
SELECT SINGLE COUNT(*) FROM mseg
WHERE matnr
= ls_vekpo-matnr
AND
werks
= ls_vekpo-werks
AND
lgort
= ls_vekpo-werks
AND
bwart
= '561'
AND
sobkz
= ls_vekpo-sobkz
AND
mat_kdauf = ls_vekpo-sonum(10)
AND
mat_kdpos = ls_vekpo-sonum+10(6)
AND
wempf
= lf_exidv.
IF sy-subrc EQ 0.
CONTINUE.
ENDIF.
lt_item-plant
= ls_vekpo-werks.
lt_item-material
= ls_vekpo-matnr.
lt_item-entry_qnt
= ls_vekpo-vemng.
lt_item-entry_uom
= ls_vekpo-altme.
lt_item-spec_stock
= ls_vekpo-sobkz.
lt_item-sales_ord
= ls_vekpo-sonum(10).
lt_item-s_ord_item
= ls_vekpo-sonum+10(6).
lt_item-val_sales_ord = ls_vekpo-sonum(10).
lt_item-val_s_ord_item = ls_vekpo-sonum+10(6).
lt_item-move_type
= '561'.
lt_item-stge_loc
= ls_vekpo-werks.
lt_item-gr_rcpt
= lf_exidv.
APPEND lt_item.
ENDLOOP.
CHECK NOT lt_item[] IS INITIAL.
*-Create material document
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING

goodsmvt_header
goodsmvt_code
TABLES
goodsmvt_item
return

= ls_header
= ls_code
= lt_item
= lt_ret.

*-If any error then send message back


READ TABLE lt_ret INDEX 1.
IF lt_ret-type EQ 'E'.
pf_msg = lt_ret-message.
ELSE.
COMMIT WORK AND WAIT.
ENDIF.
ENDFORM.
" CREATE_MD
*&-------------------------------------------------------------------*&
Form CREATE_WORKFLOW
*&-------------------------------------------------------------------FORM create_workflow TABLES pt_exidv
USING pf_werks pf_vbeln pf_bolnr pf_signi pf_date pf_msg.
INCLUDE <cntn01>.
swc_container my_container.
DATA: lf_objkey LIKE sweinstcou-objkey.
CONCATENATE 'NON SAP PGI' pf_msg INTO pf_msg SEPARATED BY space.
swc_set_element my_container 'Plant'
pf_werks.
swc_set_element my_container 'Delivery' pf_vbeln.
swc_set_element my_container 'Bolnr'
pf_bolnr.
swc_set_element my_container 'Trailer' pf_signi.
swc_set_element my_container 'PGIDate' pf_date.
swc_set_element my_container 'Message' pf_msg.
swc_set_table
my_container 'Barcode' pt_exidv.
lf_objkey = pf_vbeln.
CALL FUNCTION 'SWE_EVENT_CREATE'
EXPORTING
objtype
= 'ZRMPGI'
objkey
= lf_objkey
event
= 'CAPTUREERROR'
TABLES
event_container = my_container.
COMMIT WORK.
ENDFORM.

" CREATE_WORKFLOW

Message was edited by: Vijay Babu Dudla

See the answer in context

8115 Views

Topics: abap

Average User Rating


(0 ratings)

Correct Answer Re: a sample program for save_text

Vijay Dudla Jan 6, 2006 6:29 AM (in response to Anitha Raghul)


REPORT ztest LINE-SIZE 80 MESSAGE-ID zrf.
TYPES: BEGIN OF grec,
werks TYPE werks_d,
signi TYPE signi,
bolnr TYPE vbeln,
exidv TYPE exidv,
vbeln TYPE vbeln,
wadat TYPE wadat,
END OF grec.
DATA: gt_exidv TYPE STANDARD TABLE OF grec WITH HEADER LINE.
PARAMETERS: pf_wadat TYPE
pf_werks TYPE
pf_signi TYPE
pf_bolnr TYPE
SELECT-OPTIONS: st_exidv

wadat OBLIGATORY DEFAULT sy-datum,


werks_d,
char10,
vbeln.
FOR gt_exidv-exidv NO INTERVALS.

*&--------------------------------------------------------------------*
*&
Event AT SELECTION-SCREEN
*&--------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF ( NOT st_exidv[] IS INITIAL OR NOT pf_signi IS INITIAL OR
NOT pf_werks IS INITIAL
OR NOT pf_bolnr IS INITIAL )
AND
NOT pf_werks = '6500' AND NOT pf_werks = '8300'.
SET CURSOR FIELD 'PF_WERKS'.
MESSAGE e000 WITH 'Enter valid plant (6500/8300)'.
ENDIF.
IF NOT st_exidv[] IS INITIAL AND pf_signi IS INITIAL.
SET CURSOR FIELD 'PF_SIGNI'.
MESSAGE e000 WITH 'Enter trailer ID number'.
ENDIF.
IF NOT st_exidv[] IS INITIAL AND pf_bolnr IS INITIAL.
SET CURSOR FIELD 'PF_BOLNR'.
MESSAGE e000 WITH 'Enter bill of lading number'.
ENDIF.
*&--------------------------------------------------------------------*

*&
Event START-OF-SELECTION
*&--------------------------------------------------------------------*
START-OF-SELECTION.
IF st_exidv IS INITIAL.
PERFORM get_barcode.
ELSE.
LOOP AT st_exidv.
gt_exidv-exidv = st_exidv-low.
gt_exidv-werks = pf_werks.
gt_exidv-signi = pf_signi.
gt_exidv-bolnr = pf_bolnr.
gt_exidv-wadat = pf_wadat.
APPEND gt_exidv.
ENDLOOP.
ENDIF.
*&--------------------------------------------------------------------*
*&
Event END-OF-SELECTION
*&--------------------------------------------------------------------*
END-OF-SELECTION.
IF gt_exidv[] IS INITIAL.
MESSAGE i000(zrf) WITH 'No data found for given selection'.
EXIT.
ENDIF.
PERFORM process_data.
*&--------------------------------------------------------------------*
*&
Form GET_BARCODE
*&--------------------------------------------------------------------*
FORM get_barcode.
TYPES: BEGIN OF lrec,
docnum TYPE edi_docnum,
werks TYPE werks_d,
signi TYPE signi,
bolnr TYPE vbeln,
wadat TYPE wadat,
END OF lrec.
DATA: lt_idoc TYPE STANDARD TABLE OF lrec WITH HEADER LINE,
lf_date TYPE sydatum,
lf_data TYPE edi_sdata.
*-Get all (status 52 & 53) lt_idoc number for given date
SELECT docnum INTO TABLE lt_idoc FROM edidc
WHERE credat = pf_wadat
AND
mestyp = 'ZDLPGI'
AND ( status = '52'
OR
status = '53' ).
*-Filter the list for given plant and trailer number
LOOP AT lt_idoc.
SELECT SINGLE sdata INTO lf_data FROM edid4
WHERE docnum EQ lt_idocdocnum

AND
segnam EQ 'E1EDK31'.
*---If CST IDOC then remove from list
IF lf_data+228(5) NE space.
DELETE lt_idoc.
CONTINUE.
ENDIF.
*---If not given plant then remove from list
IF NOT pf_werks IS INITIAL AND pf_werks NE lf_data+208(4).
DELETE lt_idoc.
CONTINUE.
ENDIF.
*---If not given trailer then remove from list
TRANSLATE lf_data+168(10) TO UPPER CASE.
IF NOT pf_signi IS INITIAL AND pf_signi NE lf_data+168(10).
DELETE lt_idoc.
CONTINUE.
ENDIF.
*---If not given BOL then remove from list
IF NOT pf_bolnr IS INITIAL AND pf_bolnr NE lf_data+188(10).
DELETE lt_idoc.
CONTINUE.
ENDIF.
lt_idoc-werks = lf_data+208(4).
lt_idoc-signi = lf_data+168(10).
lt_idoc-bolnr = lf_data+188(10).
*---Get ship date
SELECT SINGLE sdata INTO lf_data FROM edid4
WHERE docnum EQ lt_idocdocnum
AND
segnam EQ 'E1EDT10'.
IF sy-subrc = 0.
lt_idoc-wadat = lf_data+27(10).
ENDIF.
MODIFY lt_idoc.
ENDLOOP.
*-Get the barcode for the selected idoc, if not processed before
lf_date = pf_wadat - 1.
LOOP AT lt_idoc.
SELECT sdata INTO lf_data FROM edid4
WHERE docnum EQ lt_idoc-docnum
AND
segnam EQ 'E1EDL07'.
SELECT SINGLE COUNT(*) FROM zremote_log
WHERE ( erdat = pf_wadat
OR
erdat = lf_date )
AND
exidv = lf_data+10(9).
IF sy-subrc NE 0.
gt_exidv-werks = lt_idoc-werks.
gt_exidv-signi = lt_idoc-signi.
gt_exidv-bolnr = lt_idoc-bolnr.
gt_exidv-wadat = lt_idoc-wadat.
gt_exidv-exidv = lf_data+10(9).
APPEND gt_exidv.
ENDIF.
ENDSELECT.
ENDLOOP.
*-Remove duplicate barcode if any
SORT gt_exidv BY exidv.
DELETE ADJACENT DUPLICATES FROM gt_exidv COMPARING exidv.

ENDFORM.
" GET_BARCODE
*&--------------------------------------------------------------------*
*&
Form PROCESS_DATA
*&--------------------------------------------------------------------*
FORM process_data.
TYPES: BEGIN OF lrec,
werks TYPE werks_d,
signi TYPE signi,
bolnr TYPE vbeln,
wadat TYPE wadat,
vbeln TYPE vbeln,
END OF lrec.
DATA: lt_trlr TYPE STANDARD TABLE OF lrec
lf_msg
TYPE char40.

WITH HEADER LINE,

*-Group by trailer
LOOP AT gt_exidv.
lt_trlr-werks = gt_exidv-werks.
lt_trlr-signi = gt_exidv-signi.
lt_trlr-bolnr = gt_exidv-bolnr.
lt_trlr-wadat = gt_exidv-wadat.
*---Get the delivery number for barcodes in trailer
SELECT SINGLE inhalt INTO lt_trlr-vbeln FROM vekp
WHERE exidv EQ gt_exidv-exidv
AND
status NE '0060'.
*---If barcode not found then write log
IF sy-subrc NE 0.
lf_msg = 'Barcode Not Found'.
WRITE :/ lt_trlr-werks, (10) lt_trlr-signi, (10) lt_trlrbolnr,
(10) gt_exidv-exidv, lf_msg.
ENDIF.
CHECK NOT lt_trlr-vbeln IS INITIAL.
gt_exidv-vbeln = lt_trlr-vbeln.
MODIFY gt_exidv.
COLLECT lt_trlr.
ENDLOOP.
*-Process each delivery
LOOP AT lt_trlr.
SELECT SINGLE COUNT(*) FROM likp WHERE vbeln
= lt_trlrvbeln
AND
wadat_ist =
'00000000'.
*---If PGI is already done then skip the process
IF sy-subrc NE 0.
MESSAGE s000(zrf) WITH lt_trlr-vbeln 'Delivery already
PGIed'.
CONTINUE.
ENDIF.
SELECT SINGLE COUNT(*) FROM lips WHERE vbeln = lt_trlr-vbeln
AND
zzconpath NE space.
*---If consolidation delivery then skip the process
IF sy-subrc EQ 0.
lf_msg = 'NAPD Model - Use Transaction ZRMFGCST'.
WRITE :/ lt_trlr-signi, lt_trlr-vbeln, lf_msg.
CONTINUE.
ENDIF.

*---PGI the delivery


PERFORM process_pgi USING lt_trlr-werks lt_trlr-signi
lt_trlr-bolnr
lt_trlr-wadat lt_trlr-vbeln.
*---Check for PGI completion
SELECT SINGLE COUNT(*) FROM likp WHERE vbeln
= lt_trlrvbeln
AND
wadat_ist =
'00000000'.
IF sy-subrc EQ 0.
lf_msg = 'PGI Failed - Check workflow'.
WRITE :/ lt_trlr-signi, lt_trlr-vbeln, lf_msg.
ELSE.
MESSAGE s000(zrf) WITH lt_trlr-vbeln 'Delivery PGIed'.
ENDIF.
ENDLOOP.
ENDFORM.
" PROCESS_DATA
*&--------------------------------------------------------------------*
*&
Form PROCESS_PGI
*&--------------------------------------------------------------------*
FORM process_pgi USING pf_werks pf_signi pf_bolnr pf_wadat
pf_vbeln.
DATA:

lt_exidv TYPE STANDARD TABLE OF exidv WITH HEADER LINE,


lf_msg
TYPE camsg.

*-Get all HU for given delivery


LOOP AT gt_exidv WHERE vbeln = pf_vbeln.
APPEND gt_exidv-exidv TO lt_exidv.
ENDLOOP.
*-If no HU given then exit
CHECK NOT lt_exidv[] IS INITIAL.
*-If delivery is not picking relevant then exit
SELECT SINGLE COUNT(*) FROM vbuk WHERE vbeln EQ pf_vbeln
AND
kostk NE space.
IF sy-subrc EQ 0.
lf_msg = 'Delivery is picking relevant'.
PERFORM create_workflow TABLES lt_exidv USING pf_werks
pf_vbeln
pf_bolnr pf_signi pf_wadat
lf_msg.
EXIT.
ENDIF.
*-Update given delivery header text
PERFORM update_text USING pf_vbeln pf_bolnr pf_signi pf_wadat.
IF sy-subrc NE 0.
lf_msg = 'Delivery header text update failed'.
PERFORM create_workflow TABLES lt_exidv USING pf_werks
pf_vbeln
pf_bolnr pf_signi pf_wadat
lf_msg.
EXIT.
ENDIF.
*-Split delivery

PERFORM split_delivery TABLES lt_exidv USING pf_vbeln.


IF sy-subrc NE 0.
lf_msg = 'Delivery Split Failed'.
PERFORM create_workflow TABLES lt_exidv USING pf_werks
pf_vbeln
pf_bolnr pf_signi pf_wadat
lf_msg.
EXIT.
ENDIF.
*-Create material document
PERFORM create_md TABLES lt_exidv USING pf_vbeln lf_msg.
IF NOT lf_msg IS INITIAL.
PERFORM create_workflow TABLES lt_exidv USING pf_werks
pf_vbeln
pf_bolnr pf_signi pf_wadat
lf_msg.
EXIT.
ENDIF.
*-PGI the delivery
PERFORM pgi_delivery USING pf_vbeln.
IF sy-subrc NE 0.
PERFORM get_error USING lf_msg.
PERFORM create_workflow TABLES lt_exidv USING pf_werks
pf_vbeln
pf_bolnr pf_signi pf_wadat
lf_msg.
EXIT.
ENDIF.
*-Insert into log table for BW extract
PERFORM insert_log TABLES lt_exidv USING pf_werks pf_vbeln
pf_signi.
ENDFORM.
" PROCESS_PGI
*&-------------------------------------------------------------------*&
Form UPDATE_TEXT
*&-------------------------------------------------------------------FORM update_text USING pf_vbeln pf_bolnr pf_signi pf_date.
DATA: ls_header LIKE thead,
lf_posnr LIKE lips-posnr,
lt_lines TYPE STANDARD TABLE OF tline WITH HEADER LINE.
*-Populate Header Text details
ls_header-tdobject = 'VBBK'.
ls_header-tdname
= pf_vbeln.
ls_header-tdid
= 'ZRM0'.
ls_header-tdspras
= sy-langu.
*-Populate details of Text
CONCATENATE 'Shipment No
tdline
SEPARATED BY space.
lt_lines-tdformat = '*'.
APPEND lt_lines.

:' 'RM Ship No' INTO lt_lines-

CONCATENATE 'Bill of Lading:' pf_bolnr INTO lt_lines-tdline

SEPARATED BY space.
APPEND lt_lines.
IF pf_signi EQ space.
pf_signi = 'RM TRAILER'.
ENDIF.
CONCATENATE 'Trailer
:' pf_signi INTO lt_lines-tdline
SEPARATED BY space.
APPEND lt_lines.
IF pf_date IS INITIAL.
pf_date = sy-datum.
ENDIF.
CONCATENATE 'Act Ship Date :' pf_date INTO lt_lines-tdline
SEPARATED BY space.
APPEND lt_lines.
CONCATENATE 'Route
SEPARATED BY space.
APPEND lt_lines.

:' 'RM Route' INTO lt_lines-tdline

*-Save Text
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client
= sy-mandt
header
= ls_header
savemode_direct = 'X'
TABLES
lines
= lt_lines
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
*-Populate header and item text details
ls_header-tdid
= 'Z052'.
REFRESH lt_lines.
lt_lines-tdline = pf_date.
lt_lines-tdformat = '*'.
APPEND lt_lines.
*-Save Text for actual ship date
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client
= sy-mandt
header
= ls_header
savemode_direct = 'X'
TABLES
lines
= lt_lines
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
*-Insert Texts at Item level.
SELECT posnr INTO lf_posnr FROM lips WHERE vbeln = pf_vbeln.
PERFORM item_text USING pf_vbeln lf_posnr 'ZLO1' pf_bolnr.

PERFORM item_text USING pf_vbeln lf_posnr 'ZLO2' pf_date.


PERFORM item_text USING pf_vbeln lf_posnr 'ZLO3' pf_signi.
PERFORM item_text USING pf_vbeln lf_posnr 'ZLO4' 'Routing'.
ENDSELECT.
IF sy-subrc NE 0.
EXIT.
ENDIF.
*-Update delivery header with bolnr and trailer Id
UPDATE likp SET bolnr = pf_bolnr traid = pf_signi
WHERE vbeln = pf_vbeln.
COMMIT WORK AND WAIT.
ENDFORM.
" UPDATE_TEXT
*&-------------------------------------------------------------------*&
Form ITEM_TEXT
*&-------------------------------------------------------------------FORM item_text USING pf_vbeln pf_posnr pf_id pf_title.
DATA: ls_header LIKE thead,
lt_lines TYPE STANDARD TABLE OF tline WITH HEADER LINE.
CONCATENATE pf_vbeln pf_posnr INTO ls_header-tdname.
ls_header-tdspras
= sy-langu.
ls_header-tdobject = 'VBBP'.
ls_header-tdid
= pf_id.
ls_header-tdtitle
= pf_title.
lt_lines-tdline
= pf_title .
lt_lines-tdformat = '*'.
APPEND lt_lines.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client
= sy-mandt
header
= ls_header
savemode_direct = 'X'
TABLES
lines
= lt_lines
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ENDFORM.
" ITEM_TEXT
*&-------------------------------------------------------------------*&
Form SPLIT_DELIVERY
*&-------------------------------------------------------------------FORM split_delivery TABLES pt_exidv USING pf_vbeln.
DATA: lt_hu
TYPE STANDARD TABLE OF zhu_data
LINE,
lf_exidv TYPE exidv.

WITH HEADER

*-Get number of HU for given delivery


SELECT COUNT(*) FROM vekp WHERE inhalt = pf_vbeln
AND
status <> '0060'.
*-Check for split required
DESCRIBE TABLE pt_exidv.
CHECK sy-tfill LT sy-dbcnt.
*-Get HU data for given delivery
CALL FUNCTION 'Z_HU_GET_MULTI_DATA'
EXPORTING
if_vbeln = pf_vbeln
TABLES
et_hu
= lt_hu.
*-Remove all HU that are not in IDOC
LOOP AT lt_hu.
READ TABLE pt_exidv INTO lf_exidv WITH KEY lt_hu-exidv.
IF sy-subrc NE 0.
DELETE lt_hu.
ENDIF.
ENDLOOP.
*-Split the delivery
CALL FUNCTION 'Z_DELIVERY_SPLIT_BY_HU'
TABLES
it_hu_data = lt_hu
EXCEPTIONS
OTHERS
= 1.
ENDFORM.
" SPLIT_DELIVERY
*&--------------------------------------------------------------------*
*&
Form PGI_DELIVERY
*&--------------------------------------------------------------------*
FORM pgi_delivery USING pf_vbeln.
DATA: lt_bdc TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE,
lf_mode VALUE 'N'.
PERFORM bdc_dynpro TABLES lt_bdc USING 'SAPMV50A' '4004'.
PERFORM bdc_field TABLES lt_bdc USING 'LIKP-VBELN' pf_vbeln.
PERFORM bdc_field TABLES lt_bdc USING 'BDC_OKCODE' 'WABU_T'.
CALL TRANSACTION 'VL02N' USING lt_bdc
MODE
lf_mode
UPDATE 'S'.
IF sy-subrc NE 0.
EXIT.
ENDIF.
COMMIT WORK AND WAIT.
ENDFORM.
" PGI_DELIVERY
*&--------------------------------------------------------------------*
*&
Form INSERT_LOG
*&--------------------------------------------------------------------*
FORM insert_log TABLES pt_exidv USING pf_werks pf_vbeln
pf_signi.

DATA: ls_log
TYPE zremote_log,
lf_lgnum TYPE lgnum.
IF pf_werks = '6500'.
lf_lgnum = 'ATL'.
ELSEIF pf_werks = '8300'.
lf_lgnum = 'AMX'.
ENDIF.
LOOP AT pt_exidv.
ls_log-erdat = sy-datum.
ls_log-vbeln = pf_vbeln.
ls_log-exidv = pt_exidv.
ls_log-lgnum = lf_lgnum.
ls_log-tknum = pf_signi.
INSERT zremote_log FROM ls_log.
ENDLOOP.
ENDFORM.
" INSERT_LOG
*&--------------------------------------------------------------------*
*&
form BDC_DYNPRO
*&--------------------------------------------------------------------*
FORM bdc_dynpro TABLES pt_bdc STRUCTURE bdcdata
USING lf_program lf_dynpro.
CLEAR pt_bdc.
pt_bdc-program = lf_program.
pt_bdc-dynpro
= lf_dynpro.
pt_bdc-dynbegin = 'X'.
APPEND pt_bdc.
ENDFORM.
" BDC_DYNPRO
*&--------------------------------------------------------------------*
*&
form BDC_FIELD
*&--------------------------------------------------------------------*
FORM bdc_field TABLES pt_bdc STRUCTURE bdcdata USING pf_nam
pf_val.
CLEAR pt_bdc.
pt_bdc-fnam = pf_nam.
pt_bdc-fval = pf_val.
APPEND pt_bdc.
ENDFORM.
" BDC_FIELD
*&--------------------------------------------------------------------*
*&
Form GET_ERROR
*&--------------------------------------------------------------------*
FORM get_error USING pf_msg.
DATA: ls_messg LIKE message.
CALL FUNCTION 'WRITE_MESSAGE'
EXPORTING
msgid = sy-msgid
msgno = sy-msgno

msgty =
msgv1 =
msgv2 =
msgv3 =
msgv4 =
IMPORTING
messg =

sy-msgty
sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
ls_messg.

pf_msg = ls_messg-msgtx.
ENDFORM.
" GET_ERROR
*&--------------------------------------------------------------------*
*&
Form CREATE_MD
*&--------------------------------------------------------------------*
FORM create_md TABLES lt_exidv USING pf_vbeln pf_msg.
DATA: ls_header
ls_code
ls_vekpo
lf_exidv
lt_ret
LINE,
lt_item

LIKE
LIKE
TYPE
TYPE
TYPE

bapi2017_gm_head_01,
bapi2017_gm_code,
zvekpo,
exidv,
STANDARD TABLE OF bapiret2 WITH HEADER

TYPE STANDARD TABLE OF bapi2017_gm_item_create


WITH HEADER LINE.

*-Fill the header detail


ls_header-pstng_date
ls_header-doc_date
ls_header-pr_uname
ls_code-gm_code

=
=
=
=

sy-datum.
sy-datum.
sy-uname.
'05'.

*-Fill item detail


LOOP AT lt_exidv INTO lf_exidv.
CLEAR ls_vekpo.
SELECT SINGLE * FROM zvekpo INTO ls_vekpo
WHERE exidv = lf_exidv
AND
inhalt = pf_vbeln
AND
status <> '0060'.
SELECT SINGLE COUNT(*) FROM mseg
WHERE matnr
= ls_vekpo-matnr
AND
werks
= ls_vekpo-werks
AND
lgort
= ls_vekpo-werks
AND
bwart
= '561'
AND
sobkz
= ls_vekpo-sobkz
AND
mat_kdauf = ls_vekpo-sonum(10)
AND
mat_kdpos = ls_vekposonum+10(6)
AND
wempf
= lf_exidv.
IF sy-subrc EQ 0.
CONTINUE.
ENDIF.
lt_item-plant
= ls_vekpo-werks.
lt_item-material
= ls_vekpo-matnr.
lt_item-entry_qnt
= ls_vekpo-vemng.
lt_item-entry_uom
= ls_vekpo-altme.
lt_item-spec_stock
= ls_vekpo-sobkz.
lt_item-sales_ord
= ls_vekpo-sonum(10).
lt_item-s_ord_item
= ls_vekpo-sonum+10(6).
lt_item-val_sales_ord = ls_vekpo-sonum(10).

lt_item-val_s_ord_item
lt_item-move_type
lt_item-stge_loc
lt_item-gr_rcpt
APPEND lt_item.
ENDLOOP.

=
=
=
=

ls_vekpo-sonum+10(6).
'561'.
ls_vekpo-werks.
lf_exidv.

CHECK NOT lt_item[] IS INITIAL.


*-Create material document
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code
= ls_code
TABLES
goodsmvt_item
= lt_item
return
= lt_ret.
*-If any error then send message back
READ TABLE lt_ret INDEX 1.
IF lt_ret-type EQ 'E'.
pf_msg = lt_ret-message.
ELSE.
COMMIT WORK AND WAIT.
ENDIF.
ENDFORM.
" CREATE_MD
*&-------------------------------------------------------------------*&
Form CREATE_WORKFLOW
*&-------------------------------------------------------------------FORM create_workflow TABLES pt_exidv
USING pf_werks pf_vbeln pf_bolnr pf_signi pf_date
pf_msg.
INCLUDE <cntn01>.
swc_container my_container.
DATA: lf_objkey LIKE sweinstcou-objkey.
CONCATENATE 'NON SAP PGI' pf_msg INTO pf_msg SEPARATED BY
space.
swc_set_element my_container 'Plant'
pf_werks.
swc_set_element my_container 'Delivery' pf_vbeln.
swc_set_element my_container 'Bolnr'
pf_bolnr.
swc_set_element my_container 'Trailer' pf_signi.
swc_set_element my_container 'PGIDate' pf_date.
swc_set_element my_container 'Message' pf_msg.
swc_set_table
my_container 'Barcode' pt_exidv.
lf_objkey = pf_vbeln.
CALL FUNCTION 'SWE_EVENT_CREATE'
EXPORTING
objtype
= 'ZRMPGI'
objkey
= lf_objkey
event
= 'CAPTUREERROR'
TABLES
event_container = my_container.
COMMIT WORK.
ENDFORM.

" CREATE_WORKFLOW

Message was edited by: Vijay Babu Dudla

o Alert Moderator
o Like (0)
o

Re: a sample program for save_text

Mohamed Hanif Apr 30, 2007 11:53 AM (in response to Vijay Dudla)
Hi Vijay Babu Dudla,

I am looking for a function by which I can split the handling units of a


delivery. Transaction "VLSP" can be used to do the above but I need to
get this done via a program. I looked at
BAPI_OUTB_DELIVERY_SPLIT_DEC but that doesn't seem to deal
with Handling units.

You seem to be using the function 'Z_DELIVERY_SPLIT_BY_HU'


Can you detail the source code for that please.

Your help on this will be much appreciated.

Thanks and regards


Mohamed

También podría gustarte