Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.91 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Include ZXM08U16
  3. *&---------------------------------------------------------------------*
  4.  
  5. ******************************************************
  6. * Validar se a Nota Fiscal foi preenchida corretamente
  7. *
  8. *DATA: nf(10) TYPE c,
  9. * nf_out(7) TYPE c.
  10. *
  11. *nf = e_trbkpv-xblnr.
  12. *
  13. *CALL FUNCTION 'ZLW_CHECK_NF'
  14. * EXPORTING
  15. * nf = nf
  16. * EXCEPTIONS
  17. * invalid_format = 1
  18. * OTHERS = 2.
  19. *
  20. *IF sy-subrc IS NOT INITIAL.
  21. * MESSAGE e021(zlw) WITH nf.
  22. ** Nota Fiscal (&) não informada ou formato inválido. Formato: 0000000
  23. *ENDIF.
  24. *
  25. *
  26. *************************
  27. ** Tipos permitidos de Categoria de Nota Fiscal:
  28. ** EE - NF de Entrada para Estoque
  29. ** EC - NF de Entrada Conjugada (para Estoque + Serviço)
  30. ** ES - NF de Entrada de Serviço
  31. ** EL - NF de Entrada para NF Eletrônica do Munic. de SP
  32. *IF e_trbkpv-j_1bnftype NE 'EE' AND
  33. * e_trbkpv-j_1bnftype NE 'EC' AND
  34. * e_trbkpv-j_1bnftype NE 'ES' AND
  35. * e_trbkpv-j_1bnftype NE 'EL' AND
  36. * e_trbkpv-blart EQ 'RE'.
  37. * MESSAGE e016(zmm) WITH e_trbkpv-j_1bnftype.
  38. ** Categoria de Nota Fiscal (&) não é permitida. Use apenas EE,EC,ES ou EL.
  39. *ENDIF.
  40. *
  41. *
  42. *IF e_trbkpv-j_1bnftype EQ 'EE'. "Verifica se fornecedor pode usar NF de Entrada em Estoque
  43. * PERFORM check_valid_ee
  44. * TABLES e_trbkpv-h_rbws "Tabela de impostos
  45. * USING e_trbkpv-j_1bnftype "Tipo de NF
  46. * e_trbkpv-lifnr "Codigo do Fornecedor
  47. * e_trbkpv-bukrs. "Empresa
  48. *
  49. *ELSEIF e_trbkpv-j_1bnftype EQ 'EC'. "Verif. se forn. pode usar NF Conjugada
  50. * PERFORM check_valid_ec
  51. * USING e_trbkpv-j_1bnftype "Tipo de NF
  52. * e_trbkpv-lifnr "Codigo do Fornecedor
  53. * e_trbkpv-bukrs. "Empresa
  54. *
  55. *ELSEIF e_trbkpv-j_1bnftype EQ 'ES'. "Verif. se forn. pode usar NF Servico
  56. * PERFORM check_valid_es
  57. * USING e_trbkpv-j_1bnftype "Tipo de NF
  58. * e_trbkpv-lifnr "Codigo do Fornecedor
  59. * e_trbkpv-bukrs. "Empresa
  60. *
  61. *ELSEIF e_trbkpv-j_1bnftype EQ 'EL'. "Vefir. se forn. pode usar NF Eletronica Munic. SP
  62. * PERFORM check_valid_el
  63. * USING e_trbkpv-j_1bnftype "Tipo de NF
  64. * e_trbkpv-lifnr "Codigo do Fornecedor
  65. * e_trbkpv-bukrs. "Empresa
  66. *ENDIF.
  67. *
  68. *
  69. *IF e_trbkpv-j_1bnftype EQ 'EC' OR
  70. * e_trbkpv-j_1bnftype EQ 'ES'.
  71. *
  72. * DATA: g_typ_nf LIKE bseg-xref1,
  73. * g_ser_nf LIKE bseg-xref2.
  74. *
  75. * IMPORT g_typ_nf FROM MEMORY ID 'Z_NF_TYPE'.
  76. * IMPORT g_ser_nf FROM MEMORY ID 'Z_NF_SERIE'.
  77. *
  78. * DATA: t_values TYPE TABLE OF setvalues.
  79. * CALL FUNCTION 'G_SET_TREE_IMPORT'
  80. * EXPORTING
  81. * setid = '0000TIPO_NF'
  82. * TABLES
  83. * set_values = t_values
  84. * EXCEPTIONS
  85. * set_not_found = 1
  86. * illegal_field_replacement = 2
  87. * illegal_table_replacement = 3
  88. * set_is_damaged = 4
  89. * OTHERS = 5.
  90. * CHECK sy-subrc IS INITIAL.
  91. *
  92. * IF g_typ_nf IS INITIAL OR g_ser_nf IS INITIAL.
  93. * MESSAGE e003(zlw).
  94. ** Tipo Nota Fiscal e Série são de Preenchimento Obrigatório
  95. * ELSEIF g_typ_nf IS NOT INITIAL.
  96. *
  97. * READ TABLE t_values WITH KEY FROM = g_typ_nf TRANSPORTING NO FIELDS.
  98. * IF sy-subrc IS NOT INITIAL.
  99. * MESSAGE e019(zlw).
  100. ** Tipo Nota Fiscal e Série são de Preenchimento Obrigatório
  101. * ENDIF.
  102. * ENDIF.
  103. *ENDIF.
  104. *
  105. *TYPE-POOLS: mmcr.
  106. *
  107. *DATA: tdrseg LIKE LINE OF e_tdrseg,
  108. * bukrs TYPE bukrs.
  109. *
  110. *LOOP AT e_tdrseg INTO tdrseg.
  111. *
  112. * IF tdrseg-ebeln IS NOT INITIAL.
  113. * SELECT SINGLE bukrs FROM ekko INTO bukrs
  114. * WHERE ebeln = tdrseg-ebeln.
  115. *
  116. * CHECK sy-subrc IS INITIAL.
  117. * IF bukrs NE e_trbkpv-bukrs.
  118. * MESSAGE e033(zmm) WITH e_trbkpv-bukrs bukrs tdrseg-ebeln.
  119. ** A Empresa da Fatura & diverge da Empresa & do Pedido de Compra &
  120. * ENDIF.
  121. *
  122. * ENDIF.
  123. *
  124. *
  125. *ENDLOOP.
  126.  
  127.  
  128. * Check BLDAT vs BUDAT
  129. * BUDAT = Post Date
  130. * BLDAT = Document Date
  131. *
  132. * Rules:
  133. * - BUDAT must be > BLDAT
  134. * - BLDAT - BUDAT (days) must be < 90 days
  135.  
  136. IF e_trbkpv-bldat "Document Date ex: 20160110
  137. > e_trbkpv-budat. "Post Date ex: 20160101
  138.  
  139. MESSAGE e090(zmm).
  140. * Data de Lançamento não deve ser anterior a Data de Documento
  141.  
  142. ELSE.
  143. DATA: days TYPE i,
  144. days_limit TYPE i,
  145. si_value TYPE zelsi_value.
  146. CALL FUNCTION 'ZFMSI_GET_VALUE'
  147. EXPORTING
  148. parameter = 'MIRO_LIMIT'
  149. IMPORTING
  150. value = si_value
  151. EXCEPTIONS
  152. invalid_parameter = 1
  153. invalid_logsys = 2
  154. OTHERS = 3.
  155. IF sy-subrc <> 0.
  156. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  157. * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  158. days_limit = 90.
  159. ELSE.
  160. days_limit = si_value.
  161. ENDIF.
  162.  
  163. days = e_trbkpv-budat - e_trbkpv-bldat.
  164. IF days > days_limit.
  165. MESSAGE e091(zmm) WITH days_limit.
  166. * Data de Documento não deve exceder 90 dias da Data de Lançamento
  167.  
  168. ENDIF.
  169. ENDIF.
  170.  
  171. " Entrar Condição de pagamento(Cond.pgto na Aba Pagamento),
  172. " para tipo de operação Logística fatura(RD)
  173. IF e_trbkpv-zterm IS INITIAL AND e_trbkpv-vgart EQ 'RD'.
  174. MESSAGE e101(zmm).
  175. ENDIF.
  176.  
  177. IF e_trbkpv-vgart EQ 'RD'.
  178. IF e_trbkpv-zterm(1) = 'L' OR
  179. e_trbkpv-zterm(1) = 'P'.
  180.  
  181. DATA: t_vtopis TYPE TABLE OF vtopis,
  182. w_vtopis LIKE LINE OF t_vtopis,
  183. w_t052 TYPE t052.
  184.  
  185. CLEAR w_t052.
  186. CALL FUNCTION 'FI_TERMS_OF_PAYMENT_CHECK'
  187. EXPORTING
  188. i_zterm = e_trbkpv-zterm
  189. IMPORTING
  190. e_t052 = w_t052
  191. EXCEPTIONS
  192. terms_of_payment = 1
  193. conditions = 2
  194. OTHERS = 3.
  195.  
  196. IF w_t052-xsplt IS INITIAL.
  197. CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT'
  198. EXPORTING
  199. bldat = e_trbkpv-bldat
  200. budat = e_trbkpv-budat
  201. cpudt = e_trbkpv-cpudt
  202. * LANGUAGE = ' '
  203. terms_of_payment = e_trbkpv-zterm
  204. * COUNTRY = ' '
  205. * HOLDBACK = ' '
  206. * TOP_HOLDBACK_INFO =
  207. * DOCUMENT_CURRENCY = ' '
  208. * IMPORTING
  209. * BASELINE_DATE =
  210. * PAYMENT_SPLIT =
  211. * ZFBDT =
  212. TABLES
  213. top_text_split = t_vtopis
  214. EXCEPTIONS
  215. terms_of_payment_not_in_t052 = 1
  216. OTHERS = 2
  217. .
  218. IF sy-subrc <> 0.
  219. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  220. * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  221. ENDIF.
  222.  
  223. ELSE.
  224. CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT_SPLI'
  225. EXPORTING
  226. bldat = e_trbkpv-bldat
  227. budat = e_trbkpv-budat
  228. cpudt = e_trbkpv-cpudt
  229. * LANGUAGE = ' '
  230. terms_of_payment = e_trbkpv-zterm
  231. wert = e_trbkpv-wwert
  232. waerk = e_trbkpv-waers
  233. * FKDAT = 00000000
  234. * SKFBT = 00000000
  235. * I_COMPANY_CODE =
  236. * I_COUNTRY =
  237. * IMPORTING
  238. * BASELINE_DATE =
  239. TABLES
  240. top_text_split = t_vtopis
  241. EXCEPTIONS
  242. terms_of_payment_not_in_t052 = 1
  243. terms_of_payment_not_in_t052s = 2
  244. OTHERS = 3
  245. .
  246. IF sy-subrc <> 0.
  247. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  248. * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  249. ENDIF.
  250. ENDIF.
  251.  
  252. IF t_vtopis[] IS NOT INITIAL.
  253. SORT t_vtopis BY hdatum.
  254. READ TABLE t_vtopis INDEX 1 INTO w_vtopis.
  255. IF w_vtopis-hdatum < sy-datum.
  256. MESSAGE e149(f5) WITH w_vtopis-hdatum.
  257. * Vencimento líquido a & situa-se no passado
  258. ENDIF.
  259. ENDIF.
  260.  
  261. ENDIF.
  262. ENDIF.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement