Difference between revisions of "SAP SD TRANSPORTE FM"
From SapWiki
(Created page with "Ejemplo crear gastos de transporte al Crear/Imprimir <nowiki>PROGRAM zsd_crea_gastos_transp. *TABLES nast. TYPE-POOLS v54a0. DATA: g_protocol LIKE sprot_u OCCURS 0 WITH HEAD...") |
|||
| Line 1: | Line 1: | ||
| − | Ejemplo crear gastos de transporte al Crear/Imprimir | + | ==Ejemplo crear gastos de transporte al Crear/Imprimir== |
<nowiki>PROGRAM zsd_crea_gastos_transp. | <nowiki>PROGRAM zsd_crea_gastos_transp. | ||
| Line 81: | Line 81: | ||
PERFORM protocol_update. | PERFORM protocol_update. | ||
| − | |||
ENDLOOP. | ENDLOOP. | ||
| − | |||
| − | |||
ELSE. | ELSE. | ||
LOOP AT g_protocol WHERE ag = 'VY' AND msgnr = '212' AND severity = 'S'. | LOOP AT g_protocol WHERE ag = 'VY' AND msgnr = '212' AND severity = 'S'. | ||
| Line 160: | Line 157: | ||
* OTHERS = 0. | * OTHERS = 0. | ||
ENDFORM. "crea_gastos_transp | ENDFORM. "crea_gastos_transp | ||
| − | |||
*Messages | *Messages | ||
| Line 260: | Line 256: | ||
nast-vstat = '2'. "procesado con errores | nast-vstat = '2'. "procesado con errores | ||
ENDIF. | ENDIF. | ||
| − | |||
| − | |||
LOOP AT g_protocol WHERE ag = 'VY' AND msgnr = '212' AND severity = 'S'. | LOOP AT g_protocol WHERE ag = 'VY' AND msgnr = '212' AND severity = 'S'. | ||
| Line 278: | Line 272: | ||
tknum = l_tknum. | tknum = l_tknum. | ||
ENDFUNCTION. | ENDFUNCTION. | ||
| − | |||
| − | |||
*&---------------------------------------------------------------------* | *&---------------------------------------------------------------------* | ||
| Line 299: | Line 291: | ||
EXCEPTIONS | EXCEPTIONS | ||
OTHERS = 1. | OTHERS = 1. | ||
| − | |||
ENDFORM. "PROTOCOL_UPDATE | ENDFORM. "PROTOCOL_UPDATE | ||
Latest revision as of 22:02, 24 June 2026
Ejemplo crear gastos de transporte al Crear/Imprimir
PROGRAM zsd_crea_gastos_transp.
*TABLES nast.
TYPE-POOLS v54a0.
DATA: g_protocol LIKE sprot_u OCCURS 0 WITH HEADER LINE.
PARAMETERS p_tknum TYPE vttk-tknum.
INCLUDE rlb_invoice_data_declare.
*DATA: retcode LIKE sy-subrc. "Returncode
*DATA: xscreen(1) TYPE c. "Output on printer or screen
*PERFORM processing.
INCLUDE rlb_print_forms.
*&---------------------------------------------------------------------*
*& Form entry
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RETURN_CODE text
* -->US_SCREEN text
*----------------------------------------------------------------------*
FORM entry USING return_code us_screen.
CLEAR retcode.
xscreen = us_screen.
PERFORM processing.
IF retcode NE 0.
return_code = 1.
ELSE.
return_code = 0.
ENDIF.
ENDFORM. "entry
*----------------------------------------------------------------------*
* INCLUDE FM06PE02 *
*----------------------------------------------------------------------*
FORM processing.
DATA lt_return TYPE TABLE OF bapiret2.
DATA: l_druvo LIKE t166k-druvo,
l_nast LIKE nast,
l_from_memory.
DATA l_tknum TYPE vttk-tknum.
DATA l_subrc TYPE sy-subrc.
DATA l_dummy(200).
**********************************************************************
*
**********************************************************************
IF p_tknum IS INITIAL.
MOVE nast-objky(10) TO l_tknum.
ELSE.
l_tknum = p_tknum.
ENDIF.
CLEAR g_protocol[].
DATA f_s(1).
* CALL FUNCTION 'DEQUEUE_EVVTTKE'
* EXPORTING
* mandt = sy-mandt
* tknum = l_tknum.
PERFORM crea_gastos_transp USING l_tknum CHANGING l_subrc.
return. """""""""""""""""""""""""""""""""""""
IF l_subrc <> 0.
retcode = l_subrc.
MESSAGE e000(0k) WITH 'Error al Crear Doc.Gastos Transp.' INTO l_dummy.
PERFORM protocol_update.
LOOP AT g_protocol WHERE severity = 'E' OR severity = 'A'.
MESSAGE ID g_protocol-ag TYPE g_protocol-severity NUMBER g_protocol-msgnr
WITH g_protocol-var1 g_protocol-var2 g_protocol-var3 g_protocol-var4 INTO l_dummy.
PERFORM protocol_update.
ENDLOOP.
ELSE.
LOOP AT g_protocol WHERE ag = 'VY' AND msgnr = '212' AND severity = 'S'.
MESSAGE ID g_protocol-ag TYPE g_protocol-severity NUMBER g_protocol-msgnr
WITH g_protocol-var1 g_protocol-var2 g_protocol-var3 g_protocol-var4 INTO l_dummy.
PERFORM protocol_update.
ENDLOOP.
retcode = 0.
ENDIF.
CALL FUNCTION 'ENQUEUE_EVVTTKE'
EXPORTING
tknum = l_tknum
EXCEPTIONS
foreign_lock = 2
system_failure = 3.
ENDFORM. "entry_neu
*&---------------------------------------------------------------------*
*& Form crea_gastos_transp
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TKNUM text
* -->P_SUBRC text
*----------------------------------------------------------------------*
FORM crea_gastos_transp USING p_tknum CHANGING p_subrc.
* ver report RV56TRSL
CONSTANTS: vbtyp_transport VALUE '8'. " Transport
DATA: object_range TYPE zsd_tt_v54a0_ref,
object_range_locked TYPE zsd_tt_v54a0_ref.
DATA pacsz LIKE rv54a-pacsz VALUE 1.
DATA ls_object_range LIKE LINE OF object_range.
REFRESH object_range.
ls_object_range-vbtyp = vbtyp_transport.
ls_object_range-rebel = p_tknum.
APPEND ls_object_range TO object_range.
* SET UPDATE TASK LOCAL.
* Create shipment cost documents
CALL FUNCTION 'Z_SD_SCDS_CREATE_2'
IN BACKGROUND TASK
AS SEPARATE UNIT
DESTINATION 'NONE'
EXPORTING
i_opt_package_size = pacsz
I_nast = NAST
IMPORTING
e_refobj_range_locked = object_range_locked[]
TABLES
t_protocol = g_protocol[]
CHANGING
c_refobj_range = object_range[]
EXCEPTIONS
OTHERS = 0.
LOOP AT g_protocol WHERE severity = 'A' OR severity = 'E'.
ENDLOOP.
IF sy-subrc = 0.
p_subrc = 1.
ELSE.
p_subrc = 0.
ENDIF.
* CALL FUNCTION 'RFC_CONNECTION_CLOSE'
* EXPORTING
* destination = 'NONE'
* EXCEPTIONS
* OTHERS = 0.
ENDFORM. "crea_gastos_transp
*Messages
*----------------------------------------------------------
*
* Message class: 0K
*000 & & & &
FUNCTION z_sd_scds_create_2.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_OPT_PACKAGE_SIZE) LIKE RV54A-PACSZ DEFAULT '1'
*" VALUE(I_OPT_LOG_SAVE) TYPE BOOLE_D DEFAULT 'X'
*" VALUE(I_OPT_COMMIT) TYPE BOOLE_D DEFAULT 'X'
*" VALUE(I_FKART) TYPE FKART_T DEFAULT ' '
*" VALUE(I_PRSDT) TYPE PRSDT_K OPTIONAL
*" VALUE(I_BUDAT) TYPE BUDAT_K OPTIONAL
*" VALUE(I_NAST) TYPE NAST
*" EXPORTING
*" VALUE(E_REFOBJ_RANGE_LOCKED) TYPE ZSD_TT_V54A0_REF
*" TABLES
*" T_PROTOCOL STRUCTURE SPROT_U
*" CHANGING
*" VALUE(C_REFOBJ_RANGE) TYPE ZSD_TT_V54A0_REF
*"----------------------------------------------------------------------
DATA l_refobj_range_locked TYPE v54a0_ref_tab WITH HEADER LINE.
DATA l_refobj_range TYPE v54a0_ref_tab WITH HEADER LINE.
DATA l_tcode LIKE sy-tcode.
DATA l_dummy(200).
DATA l_tknum TYPE vttk-tknum.
l_refobj_range[] = c_refobj_range[] .
nast = i_nast.
nast-vstat = '1'. "procesado correctamente
nast-datvr = sy-datlo.
nast-uhrvr = sy-timlo.
l_tcode = sy-tcode.
sy-tcode = 'VT10'.
READ TABLE l_refobj_range INDEX 1.
l_tknum = l_refobj_range-rebel.
CALL FUNCTION 'DEQUEUE_EVVTTKE'
EXPORTING
mandt = sy-mandt
tknum = l_tknum.
* Create shipment cost documents
CALL FUNCTION 'SD_SCDS_CREATE'
EXPORTING
i_opt_package_size = i_opt_package_size
IMPORTING
e_refobj_range_locked = l_refobj_range_locked[]
CHANGING
c_refobj_range = l_refobj_range[]
EXCEPTIONS
OTHERS = 0.
e_refobj_range_locked[] = l_refobj_range_locked[] .
c_refobj_range[] = l_refobj_range[] .
sy-tcode = l_tcode.
DATA: g_protocol LIKE sprot_u OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'SD_SHIPMENT_PROTOCOL_GET'
TABLES
c_protocol = g_protocol
EXCEPTIONS
OTHERS = 0.
t_protocol[] = g_protocol[].
CALL FUNCTION 'NAST_PROTOCOL_INITIALIZE'.
sy-msgid = 'VN'.
sy-msgno = '056'.
sy-msgty = 'I'.
sy-msgv1 = 'ZSD_CREA_GASTOS_TRANSP'.
sy-msgv2 = 'ENTRY'.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = sy-msgid
msg_nr = sy-msgno
msg_ty = sy-msgty
msg_v1 = sy-msgv1
msg_v2 = sy-msgv2
EXCEPTIONS
OTHERS = 0.
LOOP AT g_protocol WHERE severity = 'E' OR severity = 'A'.
MESSAGE ID g_protocol-ag TYPE g_protocol-severity NUMBER g_protocol-msgnr
WITH g_protocol-var1 g_protocol-var2 g_protocol-var3 g_protocol-var4 INTO l_dummy.
PERFORM protocol_update.
ENDLOOP.
IF sy-subrc = 0.
nast-vstat = '2'. "procesado con errores
ENDIF.
LOOP AT g_protocol WHERE ag = 'VY' AND msgnr = '212' AND severity = 'S'.
MESSAGE ID g_protocol-ag TYPE g_protocol-severity NUMBER g_protocol-msgnr
WITH g_protocol-var1 g_protocol-var2 g_protocol-var3 g_protocol-var4 INTO l_dummy.
PERFORM protocol_update.
ENDLOOP.
PERFORM protocol_store USING nast-kappl
nast-kschl
CHANGING nast-cmfpnr.
PERFORM nast_update.
CALL FUNCTION 'ENQUEUE_EVVTTKE'
EXPORTING
tknum = l_tknum.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Form PROTOCOL_UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM protocol_update.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = syst-msgid
msg_nr = syst-msgno
msg_ty = syst-msgty
msg_v1 = syst-msgv1
msg_v2 = syst-msgv2
msg_v3 = syst-msgv3
msg_v4 = syst-msgv4
EXCEPTIONS
OTHERS = 1.
ENDFORM. "PROTOCOL_UPDATE
*&---------------------------------------------------------------------*
*& Form PROTOCOL_STORE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->VALUE(PI_KAPPL) text
* -->VALUE(PI_KSCHL) text
* -->P_CMFPNR text
*----------------------------------------------------------------------*
FORM protocol_store USING value(pi_kappl) LIKE nast-kappl
value(pi_kschl) LIKE nast-kschl
CHANGING p_cmfpnr LIKE nast-cmfpnr.
DATA: l_nast_cmfpnr LIKE nast-cmfpnr.
* store protocol entries for this message type?
CALL FUNCTION 'NAST_PROTOCOL_STORE'
IMPORTING
msg_cmfpnr = l_nast_cmfpnr
EXCEPTIONS
no_protocol_update = 01.
IF sy-subrc EQ 0.
p_cmfpnr = l_nast_cmfpnr.
ENDIF.
ENDFORM. "PROTOCOL_STORE
*&---------------------------------------------------------------------*
*& Form NAST_UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM nast_update .
UPDATE nast.
IF sy-subrc NE 0.
INSERT nast.
IF sy-subrc NE 0.
ENDIF.
ENDIF.
ENDFORM. " NAST_UPDATE