* &---------------------------------------------------------------------*
* & Report ZRMM010
* &
* &---------------------------------------------------------------------*
* &
* &
* &---------------------------------------------------------------------*
REPORT zrmm011.
TABLES: ekko, ekpo, ekbe, lfa1.
TYPE-POOLS: slis, icon.
TYPES : BEGIN OF ty_po,
"Campos de Header
bukrs TYPE ekko-bukrs, "Empresa
ebeln TYPE ekpo-ebeln, "Número do Pedido
attach_po TYPE char4 , "Flag de anexo de Pedido de Compra
bedat TYPE ekko-bedat, "Data do Pedido
lifnr TYPE ekko-lifnr, "Número do Fornecedor
name1 TYPE lfa1-name1, "Nome do Fornecedor
zterm_po TYPE ekko-zterm,
"Condição de Pagamento do Pedido de Compra
ktokk TYPE lfa1-ktokk, "Grupo de Contas de Fornecedor
"Campos de Item
ebelp TYPE ekpo-ebelp, "Número do Item do Pedido
mtart TYPE ekpo-mtart, "Tipo de Material
matkl TYPE ekpo-matkl, "Grupo de Mercadoria
matnr TYPE ekpo-matnr, "Número do Material
txz01 TYPE ekpo-txz01, "Texto Descritivo do Item
menge_po TYPE ekpo-menge, "Quantidade do Pedido
meins_po TYPE ekpo-meins, "Unidade Medida do Item do Pedido
* balqty TYPE ekpo-menge,
netpr TYPE ekpo-netpr, "Preço Unitário do Item do Pedido
* peinh TYPE ekpo-peinh,
werks TYPE ekpo-werks, "Centro do Item
"EKBE (Histórico) - MIGO
mblnr TYPE mseg-mblnr, "Documento de Material MIGO
mjahr TYPE mseg-mjahr, "Ano do Documento de Material MIGO
zeile TYPE mseg-zeile,
xblnr_migo TYPE mkpf-xblnr,
byref_migo TYPE flag,
bldat_migo TYPE mkpf-bldat,
"Data de Documento de Documento de Material MIGO
cpudat_migo TYPE mkpf-cpudt,
"Data de Sistema para Data de Documento de Material MIGO
attach_migo TYPE char4 , "Flag de Anexos na MIGO
menge_migo TYPE mseg-menge,
meins_migo TYPE mseg-meins,
* charg TYPE mseg-charg, "Lote de Material para Documento de
* Material
"EKBE (Histórico) - Folha de Serviço
lblni TYPE essr-lblni, "Folha de Serviço
xblnr_sheet TYPE essr-xblnr,
cpudt_sheet TYPE essr-erdat,
"Data de Criação da Folha de Serviço
bldat_sheet TYPE essr-bldat, "Data de Documento da Folha de Serviço
attach_sheet TYPE char4 ,
only_sheet TYPE flag,
byref_sheet TYPE flag,
dif_dias TYPE i , "Diferenças de Datas
semaforo_sheet TYPE icon_d , "
"EKBE (Histórico) - MIRO
belnr_miro TYPE rbkp-belnr,
gjahr_miro TYPE rbkp-gjahr,
buzei_miro TYPE rseg-buzei,
bldat_miro TYPE rbkp-bldat,
xblnr_miro TYPE rbkp-xblnr,
xblnr6_miro TYPE rbkp-xblnr,
belnr_fi TYPE bkpf-belnr,
zterm_miro TYPE rbkp-zterm,
zfbdt_miro TYPE rbkp-zfbdt,
zterm_fi TYPE bseg-zterm,
attach_miro TYPE char4 , "Flag de Anexo na MIRO
only_miro TYPE flag,
zterm TYPE bseg-zterm,
duedt_base TYPE datum,
duedt TYPE datum ,
split(4) TYPE c ,
"Other Fields
thick(10) TYPE c ,
width(10) TYPE c ,
length(10) TYPE c ,
grade(10) TYPE c ,
count TYPE i,
color_cell TYPE lvc_t_scol,
END OF ty_po.
DATA: t_output TYPE TABLE OF ty_po.
DATA: BEGIN OF t_ebeln OCCURS 0,
ebeln TYPE ekpo-ebeln,
* ebelp TYPE ekpo-ebelp,
END OF t_ebeln.
FIELD-SYMBOLS: <output> LIKE LINE OF t_output.
DATA: g_save,
g_exit,
g_variant TYPE disvariant,
gx_variant TYPE disvariant.
DATA: w_ekko TYPE ekko,
t_ekpo TYPE TABLE OF ekpo,
t_ekkn TYPE TABLE OF ekkn,
t_ekbe TYPE TABLE OF ekbe,
t_ekbe_work TYPE TABLE OF ekbe,
t_mseg TYPE TABLE OF mseg,
v_mseg LIKE LINE OF t_mseg,
t_essr TYPE TABLE OF essr,
v_essr LIKE LINE OF t_essr,
t_rbkp TYPE TABLE OF rbkp,
t_rseg TYPE TABLE OF rseg,
v_rseg LIKE LINE OF t_rseg,
t_bkpf TYPE TABLE OF bkpf,
t_bsik TYPE TABLE OF bsik.
DATA: t_all_ekbe TYPE TABLE OF ekbe.
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_badat FOR ekko-bedat OBLIGATORY NO-EXTENSION,
s_bukrs FOR ekko-bukrs NO INTERVALS MEMORY ID buk,
s_ekgrp FOR ekko-ekgrp NO INTERVALS,
s_bsart FOR ekko-bsart,
s_ebeln FOR ekko-ebeln NO-EXTENSION,
s_ktokk FOR lfa1-ktokk NO INTERVALS.
SELECTION-SCREEN:END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK var.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK var.
DATA: "Dynpro Control
lvc_layout TYPE lvc_s_layo,
lvc_t_fcat TYPE lvc_t_fcat,
lvc_t_sort TYPE lvc_t_sort,
lvc_w_layout TYPE lvc_s_layo,
lvc_t_filter TYPE lvc_t_filt.
DATA: lt_entry_sheet_green TYPE RANGE OF i,
lt_entry_sheet_yellow TYPE RANGE OF i,
lt_entry_sheet_red TYPE RANGE OF i.
INITIALIZATION.
DATA wa_indx TYPE indx.
IF s_badat[] IS INITIAL.
IMPORT s_badat[] FROM DATABASE indx(xy)
TO wa_indx CLIENT sy-mandt
ID 'ZMM011_DATE'.
ENDIF.
PERFORM select_tvarv:
USING 'ENTRY_SHEET_GREEN' CHANGING lt_entry_sheet_green,
USING 'ENTRY_SHEET_YELLOW' CHANGING lt_entry_sheet_yellow,
USING 'ENTRY_SHEET_RED' CHANGING lt_entry_sheet_red .
g_save = 'A'.
CLEAR g_variant.
g_variant-report = sy-cprog.
* Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
AT SELECTION-SCREEN.
DATA wa_indx TYPE indx.
IF s_badat[] IS NOT INITIAL.
EXPORT s_badat[] TO DATABASE indx(xy)
FROM wa_indx CLIENT sy-mandt
ID 'ZMM011_DATE'.
ENDIF.
* Process on value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
g_save = 'A'.
CLEAR g_variant.
g_variant-report = sy-cprog.
* Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
* it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
END-OF-SELECTION.
PERFORM output_report.
START-OF-SELECTION.
PERFORM get_documents.
PERFORM get_ldb_data.
PERFORM define_colors.
PERFORM fill_fi_belnr.
PERFORM fill_due_date.
* &---------------------------------------------------------------------*
* & Form get_documents
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
FORM get_documents .
SELECT p~ebeln "p~ebelp
FROM ekbe AS b
INNER JOIN ekpo AS p
ON p~mandt = b~mandt
AND p~ebeln = b~ebeln
AND p~ebelp = b~ebelp
INNER JOIN ekko AS k
ON k~mandt = p~mandt
AND k~ebeln = p~ebeln
INNER JOIN lfa1 AS l
ON l~lifnr EQ k~lifnr
AND l~mandt EQ k~mandt
INTO TABLE t_ebeln
WHERE ( b~budat IN s_badat
"EKBE-BUDAT Document Date Historial
OR b~bldat IN s_badat
"EKBE-BLDAT Posting Date Historial
OR b~cpudt IN s_badat )
"EKBE-CPUDT System Date Create Histoiral
AND p~ebeln IN s_ebeln
AND k~bsart IN s_bsart
AND k~bukrs IN s_bukrs
AND k~ekgrp IN s_ekgrp
AND l~ktokk IN s_ktokk
AND p~loekz NOT IN ('L', 'S').
SORT t_ebeln BY ebeln."ebelp.
DELETE ADJACENT DUPLICATES FROM t_ebeln COMPARING ALL FIELDS.
ENDFORM. " GET_DOCUMENTS
* &---------------------------------------------------------------------*
* & Form GET_LDB_DATA
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM get_ldb_data .
CHECK t_ebeln[] IS NOT INITIAL.
DATA:
t_callback TYPE TABLE OF ldbcb,
t_selections TYPE TABLE OF rsparams.
PERFORM prepare_ldb TABLES t_callback t_selections.
CALL FUNCTION 'LDB_PROCESS'
EXPORTING
ldbname = 'ENM'
* VARIANT =
* EXPRESSIONS =
* FIELD_SELECTION =
* DYN_NODE_TYPES =
TABLES
callback = t_callback
selections = t_selections
EXCEPTIONS
ldb_not_reentrant = 1
ldb_incorrect = 2
ldb_already_running = 3
ldb_error = 4
ldb_selections_error = 5
ldb_selections_not_accepted = 6
variant_not_existent = 7
variant_obsolete = 8
variant_error = 9
free_selections_error = 10
callback_no_event = 11
callback_node_duplicate = 12
callback_no_program = 13
callback_no_cbform = 14
dyn_node_no_type = 15
dyn_node_invalid_type = 16
OTHERS = 17
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_LDB_DATA
* &---------------------------------------------------------------------*
* & Form PREPARE_LDB
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_CALLBACK text
* -->P_T_SELECTIONS text
* ----------------------------------------------------------------------*
FORM prepare_ldb TABLES p_t_callback STRUCTURE ldbcb
p_t_selections STRUCTURE rsparams.
DATA: callback_wa LIKE LINE OF p_t_callback,
seltab_wa LIKE LINE OF p_t_selections.
CLEAR: p_t_callback[], p_t_selections[].
callback_wa-ldbnode = 'EKKO'.
callback_wa-get = 'X'.
callback_wa-get_late = ' '.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKKO'.
APPEND callback_wa TO p_t_callback.
callback_wa-ldbnode = 'EKPO'.
callback_wa-get = 'X'.
callback_wa-get_late = 'X'.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKPO'.
APPEND callback_wa TO p_t_callback.
callback_wa-ldbnode = 'EKKN'.
callback_wa-get = 'X'.
callback_wa-get_late = ' '.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKKN'.
APPEND callback_wa TO p_t_callback.
callback_wa-ldbnode = 'EKBE'.
callback_wa-get = 'X'.
callback_wa-get_late = ' '.
callback_wa-cb_prog = sy-repid.
callback_wa-cb_form = 'CALLBACK_EKBE'.
APPEND callback_wa TO p_t_callback.
seltab_wa-kind = 'S'.
seltab_wa-selname = 'EN_EBELN'.
seltab_wa-sign = 'I'.
seltab_wa-option = 'EQ'.
DATA: w_ebeln LIKE LINE OF t_ebeln.
LOOP AT t_ebeln INTO w_ebeln.
seltab_wa-low = w_ebeln-ebeln.
APPEND seltab_wa TO p_t_selections.
ENDLOOP.
ENDFORM. " PREPARE_LDB
* &---------------------------------------------------------------------*
* & Form callback_ekko
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
* ----------------------------------------------------------------------*
FORM callback_ekko USING name TYPE ldbn-ldbnode
wa TYPE ekko
evt TYPE c
check TYPE c.
CASE evt.
WHEN 'G'.
CLEAR: w_ekko.
MOVE-CORRESPONDING wa TO w_ekko.
WHEN 'L'.
ENDCASE.
ENDFORM. "callback_ekko
* &---------------------------------------------------------------------*
* & Form callback_ekPo
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
* ----------------------------------------------------------------------*
FORM callback_ekpo USING name TYPE ldbn-ldbnode
wa TYPE ekpo
evt TYPE c
check TYPE c.
DATA: l_ekpo LIKE LINE OF t_ekpo.
CASE evt.
WHEN 'G'.
CLEAR: t_ekpo[], t_ekkn[], t_mseg[],
t_rseg[], t_rbkp[], t_bsik[],
t_bkpf[], t_essr[], t_ekbe[].
MOVE-CORRESPONDING wa TO l_ekpo.
APPEND l_ekpo TO t_ekpo.
WHEN 'L'.
PERFORM build_data.
* APPEND LINES OF t_ekbe_work TO t_all_ekbe.
ENDCASE.
ENDFORM. "callback_ekko
* &---------------------------------------------------------------------*
* & Form callback_ekkn
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
* ----------------------------------------------------------------------*
FORM callback_ekkn USING name TYPE ldbn-ldbnode
wa TYPE ekkn
evt TYPE c
check TYPE c.
DATA: l_ekkn LIKE LINE OF t_ekkn.
CASE evt.
WHEN 'G'.
MOVE-CORRESPONDING wa TO l_ekkn.
APPEND l_ekkn TO t_ekkn.
WHEN 'L'.
ENDCASE.
ENDFORM. "callback_ekko
* &---------------------------------------------------------------------*
* & Form callback_ekbe
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
* ----------------------------------------------------------------------*
FORM callback_ekbe USING name TYPE ldbn-ldbnode
wa TYPE ekbe
evt TYPE c
check TYPE c.
DATA: l_ekbe LIKE LINE OF t_ekbe.
CASE evt.
WHEN 'G'.
MOVE-CORRESPONDING wa TO l_ekbe.
APPEND l_ekbe TO t_ekbe.
WHEN 'L'.
ENDCASE.
ENDFORM. "callback_ekko
* &---------------------------------------------------------------------*
* & Form OUTPUT_REPORT
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM output_report .
PERFORM prepare_sort USING lvc_t_sort.
PERFORM build_fcat.
PERFORM prepare_fcat.
PERFORM prepare_filter USING lvc_t_filter.
PERFORM prepare_layout.
PERFORM call_alv.
ENDFORM. " OUTPUT_REPORT
* &---------------------------------------------------------------------*
* & Form PREPARE_SORT
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_LVC_T_SORT text
* ----------------------------------------------------------------------*
FORM prepare_sort USING p_lvc_t_sort.
ENDFORM. " PREPARE_SORT
* &---------------------------------------------------------------------*
* & Form BUILD_FCAT
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM build_fcat .
DATA: i TYPE i.
REFRESH lvc_t_fcat.
i = 1. PERFORM buildfields USING i 'BUKRS' 'T_OUTPUT' 'Empresa' '' 0.
i = i + 1. PERFORM buildfields USING i 'EBELN' 'T_OUTPUT' 'Pedido' '' 10.
i = i + 1. PERFORM buildfields USING i 'LIFNR' 'T_OUTPUT' 'Número do Fornecedor' '' 0.
i = i + 1. PERFORM buildfields USING i 'KTOKK' 'T_OUTPUT' 'Grp.Contas Fornecedor' '' 0.
i = i + 1. PERFORM buildfields USING i 'NAME1' 'T_OUTPUT' 'Fornecedor' '' 0.
i = i + 1. PERFORM buildfields USING i 'ZTERM_PO' 'T_OUTPUT' 'C.Pag.Pedido' '' 0.
i = i + 1. PERFORM buildfields USING i 'BEDAT' 'T_OUTPUT' 'Data do Pedido' '' 0.
i = i + 1. PERFORM buildfields USING i 'EBELP' 'T_OUTPUT' 'Item' '' 0.
i = i + 1. PERFORM buildfields USING i 'ATTACH_PO' 'T_OUTPUT' 'Anexo Pedido' '' 0.
i = i + 1. PERFORM buildfields USING i 'MATNR' 'T_OUTPUT' 'Número do Material' '' 0.
i = i + 1. PERFORM buildfields USING i 'MATKL' 'T_OUTPUT' 'Grupo de Mercadorias' '' 0.
i = i + 1. PERFORM buildfields USING i 'MTART' 'T_OUTPUT' 'Tipo do Material' '' 0.
i = i + 1. PERFORM buildfields USING i 'TXZ01' 'T_OUTPUT' 'Descrição do Material' '' 0.
i = i + 1. PERFORM buildfields USING i 'MENGE_PO' 'T_OUTPUT' 'Quantidade do Pedido' '' 0.
i = i + 1. PERFORM buildfields USING i 'MEINS_PO' 'T_OUTPUT' 'Unidade do Pedido' '' 0.
i = i + 1. PERFORM buildfields USING i 'NETPR' 'T_OUTPUT' 'Preço' '' 0 .
i = i + 1. PERFORM buildfields USING i 'WERKS' 'T_OUTPUT' 'Centro' '' 0 .
i = i + 1. PERFORM buildfields USING i 'LBLNI' 'T_OUTPUT' 'Folha de Serviços' '' 0.
i = i + 1. PERFORM buildfields USING i 'XBLNR_SHEET' 'T_OUTPUT' 'REF FS' '' 0.
i = i + 1. PERFORM buildfields USING i 'CPUDT_SHEET' 'T_OUTPUT' 'Data Cria. de Serviços' '' 0.
i = i + 1. PERFORM buildfields USING i 'BLDAT_SHEET' 'T_OUTPUT' 'DataDoc Folha' '' 0.
i = i + 1. PERFORM buildfields USING i 'DIF_DIAS' 'T_OUTPUT' 'Diferença de Dias' '' 0.
i = i + 1. PERFORM buildfields USING i 'SEMAFORO_SHEET' 'T_OUTPUT' 'Status' '' 0.
* i = i + 1. PERFORM buildfields USING i 'PEINH' 'T_OUTPUT' 'Unidade de Preço' '' 0.
i = i + 1. PERFORM buildfields USING i 'ATTACH_SHEET' 'T_OUTPUT' 'Anexo-Folha' '' 0.
i = i + 1. PERFORM buildfields USING i 'MBLNR' 'T_OUTPUT' 'MIGO' '' 0 .
i = i + 1. PERFORM buildfields USING i 'BLDAT_MIGO' 'T_OUTPUT' 'DtL MIGO' '' 0.
i = i + 1. PERFORM buildfields USING i 'CPUDAT_MIGO' 'T_OUTPUT' 'DtC MIGO' '' 0.
i = i + 1. PERFORM buildfields USING i 'XBLNR_MIGO' 'T_OUTPUT' 'REF MIGO' '' 0.
i = i + 1. PERFORM buildfields USING i 'ATTACH_MIGO' 'T_OUTPUT' 'Anexo MIGO' '' 0.
i = i + 1. PERFORM buildfields USING i 'MENGE_MIGO' 'T_OUTPUT' 'Quantidade MIGO' '' 0.
i = i + 1. PERFORM buildfields USING i 'MEINS_MIGO' 'T_OUTPUT' 'Unidade MIGO' '' 0.
i = i + 1. PERFORM buildfields USING i 'BELNR_MIRO' 'T_OUTPUT' 'MIRO' '' 0.
i = i + 1. PERFORM buildfields USING i 'XBLNR_MIRO' 'T_OUTPUT' 'REF MIRO' '' 0.
i = i + 1. PERFORM buildfields USING i 'ATTACH_MIRO' 'T_OUTPUT' 'Anexo-MIRO' '' 0.
i = i + 1. PERFORM buildfields USING i 'BLDAT_MIRO' 'T_OUTPUT' 'DtL MIRO' '' 0 .
i = i + 1. PERFORM buildfields USING i 'BELNR_FI' 'T_OUTPUT' 'FI Doc' '' 0.
i = i + 1. PERFORM buildfields USING i 'ZTERM_MIRO' 'T_OUTPUT' 'C.Pag.MIRO' '' 0.
i = i + 1. PERFORM buildfields USING i 'SPLIT' 'T_OUTPUT' 'Parcel.' '' 0.
i = i + 1. PERFORM buildfields USING i 'ZFBDT_MIRO' 'T_OUTPUT' 'Dt.Base MIRO' '' 0.
i = i + 1. PERFORM buildfields USING i 'DUEDT' 'T_OUTPUT' 'Dt.Pago' '' 0.
i = i + 1. PERFORM buildfields USING i 'ZTERM_FI' 'T_OUTPUT' 'C.Pag.Contábil' '' 0.
* DATA: t_slis_fcat TYPE slis_t_fieldcat_alv.
*
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* i_program_name = sy-cprog
* i_internal_tabname = 'T_OUTPUT'
* * i_structure_name = 'T_OUTPUT'
* * I_CLIENT_NEVER_DISPLAY = 'X'
* i_inclname = sy-cprog
* * I_BYPASSING_BUFFER =
* * I_BUFFER_ACTIVE =
* CHANGING
* ct_fieldcat = t_slis_fcat
* EXCEPTIONS
* inconsistent_interface = 1
* program_error = 2
* OTHERS = 3.
*
* CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
* EXPORTING
* it_fieldcat_alv = t_slis_fcat
* * IT_SORT_ALV =
* * IT_FILTER_ALV =
* * IS_LAYOUT_ALV =
* IMPORTING
* et_fieldcat_lvc = lvc_t_fcat
* * ET_SORT_LVC =
* * ET_FILTER_LVC =
* * ES_LAYOUT_LVC =
* TABLES
* it_data = t_output
* * EXCEPTIONS
* * IT_DATA_MISSING = 1
* * OTHERS = 2
* .
* IF sy-subrc <> 0.
* * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " BUILD_FCAT
* &---------------------------------------------------------------------*
* & Form buildfields
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->VALUE(P_COL_POS) text
* -->VALUE(P_FLDNAME) text
* -->VALUE(P_TABNAME) text
* -->VALUE(P_REPTEXT) text
* -->VALUE(P_DO_SUM) text
* -->VALUE(P_LEN) text
* ----------------------------------------------------------------------*
FORM buildfields USING value(p_col_pos) LIKE sy-cucol
value(p_fldname) TYPE slis_fieldname
value(p_tabname) TYPE slis_tabname
value(p_reptext) LIKE dd03p-reptext
value(p_do_sum) TYPE char1
value(p_len) TYPE i.
DATA: w_lvc_fcat LIKE LINE OF lvc_t_fcat.
CLEAR w_lvc_fcat.
w_lvc_fcat-col_pos = p_col_pos.
w_lvc_fcat-fieldname = p_fldname.
w_lvc_fcat-tabname = p_tabname.
w_lvc_fcat-reptext = p_reptext.
w_lvc_fcat-do_sum = p_do_sum.
w_lvc_fcat-just = 'C'.
IF p_len IS NOT INITIAL.
w_lvc_fcat-intlen = p_len.
ENDIF.
APPEND w_lvc_fcat TO lvc_t_fcat.
ENDFORM. " BUILDFIELDS
* &---------------------------------------------------------------------*
* & Form CALL_ALV
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
i_callback_program = 'ZRMM011'
* I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout_lvc = lvc_layout
it_fieldcat_lvc = lvc_t_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = g_save
is_variant = g_variant
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = t_output
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
* CALL FUNCTION 'HR_IT_SHOW_ANY_TABLE_ON_ALV'
* TABLES
* table = t_output
* EXCEPTIONS
* fb_error = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " CALL_ALV
* &---------------------------------------------------------------------*
* & Form PREPARE_FCAT
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM prepare_fcat .
ENDFORM. " PREPARE_FCAT
* &---------------------------------------------------------------------*
* & Form PREPARE_FILTER
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_LVC_T_FILTER text
* ----------------------------------------------------------------------*
FORM prepare_filter USING p_lvc_t_filter.
ENDFORM. " PREPARE_FILTER
* &---------------------------------------------------------------------*
* & Form GET_EKBE_DATA
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* -->P_T_MSEG text
* -->P_T_ESSR text
* -->P_T_RBKP text
* -->P_T_RSEG text
* -->P_T_BSEG text
* ----------------------------------------------------------------------*
* FORM get_ekbe_data TABLES tp_ekbe STRUCTURE ekbe "< IN
* tp_mseg STRUCTURE mseg "> OUT
* tp_essr STRUCTURE essr "> OUT
* "tp_rbkp STRUCTURE rbkp "> OU
* tp_rseg STRUCTURE rseg. "> OUT
* * tp_bkpf STRUCTURE bkpf "> OUT
* * tp_bsik STRUCTURE bsik."> OUT
*
* CHECK tp_ekbe[] IS NOT INITIAL.
* DATA: w_ekbe LIKE LINE OF tp_ekbe,
* t_ekbe_copy LIKE TABLE OF w_ekbe.
*
* t_ekbe_copy[] = tp_ekbe[].
* DELETE t_ekbe_copy WHERE vgabe <> '1'. " MIGO
* IF t_ekbe_copy[] IS NOT INITIAL.
* SELECT * INTO TABLE tp_mseg
* FROM mseg
* FOR ALL ENTRIES IN t_ekbe_copy
* WHERE mblnr = t_ekbe_copy-belnr
* AND mjahr = t_ekbe_copy-gjahr
* AND zeile = t_ekbe_copy-buzei.
* ENDIF.
*
* READ TABLE tp_ekbe WITH KEY vgabe = '2'. " MIRO
* IF sy-subrc IS INITIAL.
* READ TABLE tp_ekbe INDEX 1 INTO w_ekbe.
* SELECT * INTO TABLE tp_rseg
* FROM rseg
* WHERE ebeln = w_ekbe-ebeln
* AND ebelp = w_ekbe-ebelp.
* * IF tp_rseg[] IS NOT INITIAL.
* * SELECT * FROM rbkp INTO TABLE tp_rbkp
* * FOR ALL ENTRIES IN tp_rseg
* * WHERE belnr = tp_rseg-belnr
* * AND gjahr = tp_rseg-gjahr.
* * ENDIF.
* * IF tp_rbkp[] IS NOT INITIAL.
* * RANGES: r_awkey FOR bkpf-awkey.
* * DATA: w_awkey LIKE LINE OF r_awkey,
* * w_rbkp LIKE LINE OF tp_rbkp.
* * w_awkey-option = 'EQ'.
* * w_awkey-sign = 'I'.
* * LOOP AT tp_rbkp INTO w_rbkp.
* * CONCATENATE w_rbkp-belnr w_rbkp-gjahr INTO w_awkey-low.
* * APPEND w_awkey TO r_awkey.
* * ENDLOOP.
* * IF r_awkey[] IS NOT INITIAL.
* * SELECT * FROM bkpf INTO TABLE tp_bkpf
* * WHERE awkey IN r_awkey
* * AND bukrs IN s_bukrs
* * AND awtyp = 'RMRP'.
* * IF tp_bkpf[] IS NOT INITIAL.
* * SELECT * FROM bsik INTO TABLE tp_bsik
* * FOR ALL ENTRIES IN tp_bkpf
* * WHERE belnr = tp_bkpf-belnr
* * AND gjahr = tp_bkpf-gjahr
* * AND bukrs = tp_bkpf-bukrs.
* * SELECT * FROM bsak
* * APPENDING TABLE tp_bsik
* * FOR ALL ENTRIES IN tp_bkpf
* * WHERE belnr = tp_bkpf-belnr
* * AND gjahr = tp_bkpf-gjahr
* * AND bukrs = tp_bkpf-bukrs.
* * ENDIF.
* * ENDIF.
* * ENDIF.
* ENDIF.
*
* t_ekbe_copy[] = tp_ekbe[].
* DELETE t_ekbe_copy WHERE vgabe <> '9'. " SHEET
* IF t_ekbe_copy[] IS NOT INITIAL.
* SELECT *
* FROM essr
* INTO TABLE tp_essr
* FOR ALL ENTRIES IN t_ekbe_copy
* WHERE lblni = t_ekbe_copy-belnr.
* ENDIF.
*
* ENDFORM. " GET_EKBE_DATA
* &---------------------------------------------------------------------*
* & Form REMOVE_EKBE_REVERSAL
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* ----------------------------------------------------------------------*
FORM remove_mseg_reversal
TABLES p_t_ekbe STRUCTURE ekbe
USING p_ekpo TYPE ekpo.
DATA: l_ekbe TYPE ekbe,
l_mseg TYPE mseg.
CHECK p_t_ekbe[] IS NOT INITIAL.
CHECK p_ekpo-pstyp <> '9'.
LOOP AT t_ekbe INTO l_ekbe
WHERE vgabe = '1' "MIGO
AND shkzg = 'H'.
IF l_ekbe-lfbnr IS NOT INITIAL.
DELETE t_ekbe
WHERE lfgja = l_ekbe-lfgja
AND lfbnr = l_ekbe-lfbnr
AND lfpos = l_ekbe-lfpos
AND vgabe = '1'.
DELETE t_ekbe
WHERE gjahr = l_ekbe-gjahr
AND belnr = l_ekbe-belnr
AND buzei = l_ekbe-buzei
AND vgabe = '1'.
ELSE.
SELECT SINGLE * FROM mseg INTO l_mseg
WHERE mblnr = l_ekbe-belnr
AND mjahr = l_ekbe-gjahr
AND zeile = l_ekbe-buzei.
CHECK sy-subrc IS INITIAL.
CHECK l_mseg-smbln IS NOT INITIAL.
DELETE t_ekbe
WHERE gjahr = l_mseg-sjahr
AND belnr = l_mseg-smbln
AND buzei = l_mseg-smblp
AND vgabe = '1'.
DELETE t_ekbe
WHERE gjahr = l_ekbe-gjahr
AND belnr = l_ekbe-belnr
AND buzei = l_ekbe-buzei
AND vgabe = '1'.
ENDIF.
ENDLOOP.
LOOP AT t_ekbe INTO l_ekbe
WHERE vgabe = '2' "MIRO
AND shkzg = 'H'..
DELETE t_ekbe WHERE lfgja = l_ekbe-lfgja
AND lfbnr = l_ekbe-lfbnr AND lfpos = l_ekbe-lfpos.
ENDLOOP.
ENDFORM. " REMOVE_EKBE_REVERSAL
* &---------------------------------------------------------------------*
* & Form GET_EKBE_PERIOD
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* -->P_T_EKBE_WORK text
* ----------------------------------------------------------------------*
FORM get_ekbe_period TABLES p_t_ekbe STRUCTURE ekbe
"Introduzir nome correto para <...>
p_t_ekbe_work STRUCTURE ekbe.
CLEAR p_t_ekbe_work[].
CHECK p_t_ekbe[] IS NOT INITIAL.
DATA: ekbe LIKE LINE OF p_t_ekbe.
p_t_ekbe_work[] = p_t_ekbe[].
LOOP AT p_t_ekbe INTO ekbe.
IF NOT ( ekbe-bldat IN s_badat
OR ekbe-cpudt IN s_badat
OR ekbe-budat IN s_badat ).
DELETE p_t_ekbe_work
WHERE mandt = ekbe-mandt
AND ebeln = ekbe-ebeln
AND ebelp = ekbe-ebelp
AND zekkn = ekbe-zekkn
AND vgabe = ekbe-vgabe
AND gjahr = ekbe-gjahr
AND belnr = ekbe-belnr
AND buzei = ekbe-buzei.
ENDIF.
ENDLOOP.
ENDFORM. " GET_EKBE_PERIOD
* &---------------------------------------------------------------------*
* & Form REMOVE_ESSR_DELETED
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* -->P_V_EKPO text
* ----------------------------------------------------------------------*
FORM remove_essr_deleted_pending TABLES p_t_ekbe STRUCTURE ekbe
USING p_v_ekpo TYPE ekpo.
DATA: l_ekbe LIKE LINE OF p_t_ekbe,
l_essr TYPE essr.
LOOP AT p_t_ekbe INTO l_ekbe WHERE vgabe = '9'.
SELECT SINGLE * FROM essr INTO l_essr
WHERE lblni = l_ekbe-belnr.
CHECK sy-subrc IS INITIAL.
CHECK l_essr-loekz = 'X' . "OR
" l_essr-kzabn = ' '. " Service Entry Sheet deleted.
DELETE t_ekbe
WHERE lfbnr = l_essr-lblni
AND lfbnr IS NOT INITIAL
AND vgabe <> '9'.
DELETE t_ekbe
WHERE belnr = l_essr-lblni
AND vgabe = '9'.
ENDLOOP.
ENDFORM. " REMOVE_ESSR_DELETED
* &---------------------------------------------------------------------*
* & Form CLEAR_MSEG_ESSR
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* -->P_V_EKPO text
* ----------------------------------------------------------------------*
FORM clear_essr_mseg TABLES p_t_ekbe STRUCTURE ekbe
USING p_v_ekpo TYPE ekpo.
DATA: l_ekbe LIKE LINE OF p_t_ekbe,
l_essr TYPE essr,
lt_ekbe TYPE TABLE OF ekbe,
l_ekbe_1 LIKE LINE OF lt_ekbe.
LOOP AT p_t_ekbe INTO l_ekbe WHERE vgabe = '9'.
SELECT SINGLE * FROM essr INTO l_essr
WHERE lblni = l_ekbe-belnr.
CHECK sy-subrc IS INITIAL.
CHECK l_essr-kzabn = 'X'.
lt_ekbe[] = t_ekbe[].
DELETE lt_ekbe WHERE vgabe <> '1'. " Only MSEG
DELETE lt_ekbe WHERE lfbnr <> l_ekbe-belnr. " Only MSEG with LBLNI
SORT lt_ekbe BY gjahr DESCENDING belnr DESCENDING.
READ TABLE lt_ekbe INDEX 1 INTO l_ekbe_1.
DELETE t_ekbe
WHERE lfbnr = l_ekbe-belnr
AND NOT ( gjahr = l_ekbe_1-gjahr
AND belnr = l_ekbe_1-belnr )
AND lfbnr IS NOT INITIAL
AND vgabe = '1'.
ENDLOOP.
ENDFORM. " CLEAR_MSEG_ESSR
* &---------------------------------------------------------------------*
* & Form BUILD_DATA
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
* &---------------------------------------------------------------------*
* & Form CLEAR_RSEG_ESSR
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* -->P_V_EKPO text
* ----------------------------------------------------------------------*
FORM clear_rseg_reverse TABLES p_t_ekbe STRUCTURE ekbe
USING p_v_ekpo TYPE ekpo.
DATA: l_ekbe LIKE LINE OF p_t_ekbe,
l_rbkp TYPE rbkp.
LOOP AT p_t_ekbe INTO l_ekbe WHERE vgabe = '2'.
SELECT SINGLE * FROM rbkp INTO l_rbkp
WHERE belnr = l_ekbe-belnr
AND gjahr = l_ekbe-gjahr.
CHECK sy-subrc IS INITIAL.
CHECK l_rbkp-stblg IS NOT INITIAL
AND l_rbkp-stjah IS NOT INITIAL.
DELETE t_ekbe
WHERE belnr = l_ekbe-belnr
AND gjahr = l_ekbe-gjahr
AND vgabe = '2'.
DELETE t_ekbe
WHERE belnr = l_rbkp-stblg
AND gjahr = l_rbkp-stjah
AND vgabe = '2'.
ENDLOOP.
ENDFORM. " CLEAR_RSEG_ESSR
* &---------------------------------------------------------------------*
* & Form FIX_XBLNR_RKBP
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* ----------------------------------------------------------------------*
FORM fix_xblnr_rkbp TABLES p_t_ekbe STRUCTURE ekbe.
FIELD-SYMBOLS: <ekbe> LIKE LINE OF p_t_ekbe.
LOOP AT p_t_ekbe ASSIGNING <ekbe> WHERE vgabe = '2' AND xblnr IS INITIAL.
SELECT SINGLE xblnr INTO <ekbe>-xblnr
FROM rbkp
WHERE belnr = <ekbe>-belnr
AND gjahr = <ekbe>-gjahr.
IF sy-subrc IS NOT INITIAL.
CLEAR <ekbe>-xblnr.
ENDIF.
ENDLOOP.
ENDFORM. " FIX_XBLNR_RKBP
* &---------------------------------------------------------------------*
* & Form FIX_XBLNR_ESSR
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_T_EKBE text
* ----------------------------------------------------------------------*
FORM fix_xblnr_essr TABLES p_t_ekbe STRUCTURE ekbe.
FIELD-SYMBOLS: <ekbe> LIKE LINE OF p_t_ekbe.
LOOP AT p_t_ekbe ASSIGNING <ekbe> WHERE vgabe = '9' AND xblnr IS INITIAL.
SELECT SINGLE xblnr INTO <ekbe>-xblnr
FROM essr
WHERE lblni = <ekbe>-belnr.
IF sy-subrc IS NOT INITIAL.
CLEAR <ekbe>-xblnr.
ENDIF.
ENDLOOP.
ENDFORM. " FIX_XBLNR_ESSR
* &---------------------------------------------------------------------*
* & Form build_data
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
FORM build_data .
DATA: v_ekko TYPE ekko,
v_ekpo TYPE ekpo,
v_ekkn TYPE ekkn,
v_ekbe TYPE ekbe,
i_ekkn TYPE i,
v_kostl_name TYPE bapi0012_5-name,
v_asset_detail TYPE bapi1022_2,
v_kokrs TYPE kokrs.
v_ekko = w_ekko.
READ TABLE t_ekpo INDEX 1 INTO v_ekpo.
CHECK v_ekpo-loekz IS INITIAL.
" Verify Purchase Order Item is Valid (not deleted, not bloqued)
DATA: v_output LIKE LINE OF t_output.
PERFORM clear_rseg_reverse
TABLES t_ekbe
USING v_ekpo.
IF v_ekpo-pstyp = '9'. "Services
PERFORM remove_essr_deleted_pending
TABLES t_ekbe
USING v_ekpo.
PERFORM clear_essr_mseg
TABLES t_ekbe
USING v_ekpo.
ELSE.
PERFORM remove_mseg_reversal
TABLES t_ekbe
USING v_ekpo.
ENDIF.
PERFORM fix_xblnr_rkbp
TABLES t_ekbe.
PERFORM fix_xblnr_essr
TABLES t_ekbe.
"work tables by date: migo, miro, ml81n
PERFORM get_ekbe_period
TABLES t_ekbe t_ekbe_work.
CHECK t_ekbe_work[] IS NOT INITIAL.
CLEAR: v_output.
PERFORM fill_output_ekpo USING v_output v_ekko v_ekpo.
DATA: v_ekbe_miro LIKE LINE OF t_ekbe,
v_ekbe_migo LIKE LINE OF t_ekbe,
v_ekbe_sheet LIKE LINE OF t_ekbe.
LOOP AT t_ekbe_work INTO v_ekbe_miro WHERE vgabe = '2'. " 2 = MIRO
" Check if not inserted
READ TABLE t_output TRANSPORTING NO FIELDS WITH KEY
ebeln = v_ekbe_miro-ebeln
ebelp = v_ekbe_miro-ebelp
belnr_miro = v_ekbe_miro-belnr
gjahr_miro = v_ekbe_miro-gjahr.
CHECK sy-subrc IS NOT INITIAL.
PERFORM fill_output_miro USING v_output v_ekbe_miro.
v_output-only_miro = 'X'.
" MIRO --> MIGO
IF v_ekbe_miro-lfbnr IS NOT INITIAL AND
v_ekbe_miro-lfgja IS NOT INITIAL AND
v_ekbe_miro-lfpos IS NOT INITIAL. " REF to MIGO
READ TABLE t_ekbe INTO v_ekbe_migo WITH KEY
ebeln = v_ekbe_miro-ebeln
ebelp = v_ekbe_miro-ebelp
vgabe = '1' " 1 = MIGO
belnr = v_ekbe_miro-lfbnr
gjahr = v_ekbe_miro-lfgja.
IF sy-subrc IS INITIAL.
PERFORM fill_output_migo USING v_output v_ekbe_migo.
CLEAR v_output-only_miro.
APPEND v_output TO t_output.
ELSE.
READ TABLE t_ekbe INTO v_ekbe_migo WITH KEY
ebeln = v_ekbe_miro-ebeln
ebelp = v_ekbe_miro-ebelp
vgabe = '1' " 1 = MIGO
lfbnr = v_ekbe_miro-lfbnr
lfgja = v_ekbe_miro-lfgja
lfpos = v_ekbe_miro-lfpos..
IF sy-subrc IS INITIAL.
PERFORM fill_output_migo USING v_output v_ekbe_migo.
CLEAR v_output-only_miro.
READ TABLE t_ekbe INTO v_ekbe_sheet WITH KEY
ebeln = v_ekbe_miro-ebeln
ebelp = v_ekbe_miro-ebelp
vgabe = '9'
belnr = v_ekbe_miro-lfbnr.
IF sy-subrc IS INITIAL.
PERFORM fill_output_sheet USING v_output v_ekbe_sheet.
ENDIF.
APPEND v_output TO t_output.
ENDIF.
ENDIF.
ELSEIF " MIRO --> SHEET
v_ekbe_miro-lfbnr IS NOT INITIAL AND
v_ekbe_miro-lfgja IS NOT INITIAL AND
v_ekbe_miro-lfpos IS INITIAL. " REF to SERVICE ENTRY SHEET
READ TABLE t_ekbe INTO v_ekbe_sheet WITH KEY
ebeln = v_ekbe_miro-ebeln
ebelp = v_ekbe_miro-ebelp
vgabe = '9'
belnr = v_ekbe_miro-lfbnr.
IF sy-subrc IS INITIAL.
PERFORM fill_output_sheet USING v_output v_ekbe_sheet.
READ TABLE t_ekbe INTO v_ekbe_migo WITH KEY
ebeln = v_ekbe_sheet-ebeln
ebelp = v_ekbe_sheet-ebelp
vgabe = '1'
lfbnr = v_ekbe_sheet-belnr.
IF sy-subrc IS INITIAL.
PERFORM fill_output_migo USING v_output v_ekbe_migo.
ENDIF.
ENDIF.
APPEND v_output TO t_output.
CLEAR v_output-only_miro.
ENDIF.
IF v_output-only_miro IS NOT INITIAL.
APPEND v_output TO t_output.
ENDIF.
ENDLOOP.
LOOP AT t_ekbe_work INTO v_ekbe_sheet WHERE vgabe = '9'.
" Check if not inserted
READ TABLE t_output TRANSPORTING NO FIELDS WITH KEY
ebeln = v_ekbe_sheet-ebeln
ebelp = v_ekbe_sheet-ebelp
lblni = v_ekbe_sheet-belnr.
CHECK sy-subrc IS NOT INITIAL.
CLEAR: v_output.
PERFORM fill_output_ekpo USING v_output v_ekko v_ekpo.
PERFORM fill_output_sheet USING v_output v_ekbe_sheet.
v_output-only_sheet = 'X'.
READ TABLE t_ekbe INTO v_ekbe_migo WITH KEY
ebeln = v_ekbe_sheet-ebeln
ebelp = v_ekbe_sheet-ebelp
vgabe = '1'
lfbnr = v_ekbe_sheet-belnr.
IF sy-subrc IS INITIAL.
PERFORM fill_output_migo USING v_output v_ekbe_migo.
CLEAR v_output-only_sheet.
APPEND v_output TO t_output.
ENDIF.
IF v_output-only_sheet IS NOT INITIAL AND v_ekbe_sheet-xblnr IS NOT INITIAL.
READ TABLE t_output ASSIGNING <output>
WITH KEY ebeln = v_ekbe_sheet-ebeln
ebelp = v_ekbe_sheet-ebelp
xblnr_miro = v_ekbe_sheet-xblnr.
IF sy-subrc IS INITIAL AND <output>-belnr_miro IS NOT INITIAL.
<output>-byref_sheet = 'X'.
PERFORM fill_output_sheet USING <output> v_ekbe_sheet.
ELSE.
APPEND v_output TO t_output.
ENDIF.
ELSEIF v_output-only_sheet IS NOT INITIAL.
APPEND v_output TO t_output.
ENDIF.
ENDLOOP.
LOOP AT t_ekbe_work INTO v_ekbe_migo WHERE vgabe = '1'.
READ TABLE t_output TRANSPORTING NO FIELDS WITH KEY
ebeln = v_ekbe_migo-ebeln
ebelp = v_ekbe_migo-ebelp
mjahr = v_ekbe_migo-gjahr
mblnr = v_ekbe_migo-belnr
zeile = v_ekbe_migo-buzei.
CHECK sy-subrc IS NOT INITIAL.
CLEAR: v_output.
PERFORM fill_output_ekpo USING v_output v_ekko v_ekpo.
PERFORM fill_output_migo USING v_output v_ekbe_migo.
READ TABLE t_output ASSIGNING <output>
WITH KEY ebeln = v_ekbe_migo-ebeln
ebelp = v_ekbe_migo-ebelp
xblnr_miro = v_ekbe_migo-xblnr.
IF <output> IS ASSIGNED.
PERFORM fill_output_migo USING <output> v_ekbe_migo.
ELSE.
READ TABLE t_output ASSIGNING <output>
WITH KEY ebeln = v_ekbe_migo-ebeln
ebelp = v_ekbe_migo-ebelp
xblnr_sheet = v_ekbe_migo-xblnr.
IF <output> IS ASSIGNED.
PERFORM fill_output_migo USING <output> v_ekbe_migo.
ELSE.
READ TABLE t_output ASSIGNING <output>
WITH KEY ebeln = v_ekbe_migo-ebeln
ebelp = v_ekbe_migo-ebelp
xblnr6_miro = v_ekbe_migo-xblnr.
IF <output> IS ASSIGNED.
PERFORM fill_output_migo USING <output> v_ekbe_migo.
ELSE.
APPEND v_output TO t_output.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " BUILD_DATA
* &---------------------------------------------------------------------*
* & Form FILL_OUTPUT_EKPO
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_V_OUTPUT text
* -->P_V_EKKO text
* -->P_V_EKPO text
* ----------------------------------------------------------------------*
FORM fill_output_ekpo USING p_v_output TYPE ty_po
p_v_ekko TYPE ekko
p_v_ekpo TYPE ekpo.
p_v_output-bukrs = p_v_ekko-bukrs.
p_v_output-ebeln = p_v_ekko-ebeln.
p_v_output-ebelp = p_v_ekpo-ebelp.
p_v_output-bedat = p_v_ekko-bedat.
p_v_output-mtart = p_v_ekpo-mtart.
p_v_output-matkl = p_v_ekpo-matkl.
p_v_output-matnr = p_v_ekpo-matnr.
p_v_output-txz01 = p_v_ekpo-txz01.
p_v_output-lifnr = p_v_ekko-lifnr.
SELECT SINGLE name1 ktokk FROM lfa1
INTO (p_v_output-name1, p_v_output-ktokk)
WHERE lifnr = p_v_ekko-lifnr.
p_v_output-menge_po = p_v_ekpo-menge.
p_v_output-meins_po = p_v_ekpo-meins.
* p_v_output-balqty = p_v_ekpo-menge.
p_v_output-netpr = p_v_ekpo-netpr.
* p_v_output-peinh = p_v_ekpo-peinh.
p_v_output-werks = p_v_ekpo-werks.
p_v_output-zterm_po = p_v_ekko-zterm.
DATA: v_srgbtbrel TYPE srgbtbrel.
MOVE p_v_output-ebeln TO v_srgbtbrel-instid_a.
PERFORM check_attachment USING v_srgbtbrel-instid_a 'BUS2012 ' p_v_output-attach_po.
p_v_output-count = 1.
ENDFORM. " FILL_OUTPUT_EKPO
* &---------------------------------------------------------------------*
* & Form FILL_OUTPUT_MIRO
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_V_OUTPUT text
* -->P_V_EKBE_MIRO text
* ----------------------------------------------------------------------*
FORM fill_output_miro USING p_v_output TYPE ty_po
p_v_ekbe_miro TYPE ekbe.
p_v_output-belnr_miro = p_v_ekbe_miro-belnr.
p_v_output-gjahr_miro = p_v_ekbe_miro-gjahr.
p_v_output-buzei_miro = p_v_ekbe_miro-buzei.
p_v_output-bldat_miro = p_v_ekbe_miro-budat.
p_v_output-xblnr_miro = p_v_ekbe_miro-xblnr.
DATA: l_len_xblnr TYPE i.
l_len_xblnr = STRLEN( p_v_ekbe_miro-xblnr ).
IF l_len_xblnr > 6.
l_len_xblnr = l_len_xblnr - 6.
p_v_output-xblnr6_miro = p_v_ekbe_miro-xblnr+l_len_xblnr(6).
ENDIF.
DATA: v_rbkp TYPE rbkp.
SELECT SINGLE * FROM rbkp
INTO v_rbkp
WHERE belnr = p_v_output-belnr_miro
AND gjahr = p_v_output-gjahr_miro.
IF sy-subrc IS INITIAL.
p_v_output-zterm_miro = v_rbkp-zterm.
ENDIF.
DATA: v_srgbtbrel TYPE srgbtbrel.
CONCATENATE p_v_output-belnr_miro p_v_output-gjahr_miro INTO v_srgbtbrel-instid_a.
PERFORM check_attachment USING v_srgbtbrel-instid_a 'BUS2081' p_v_output-attach_miro.
ENDFORM. " FILL_OUTPUT_MIRO
* &---------------------------------------------------------------------*
* & Form FILL_OUTPUT_MIGO
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_V_OUTPUT text
* -->P_E_EKBE_MIGO text
* ----------------------------------------------------------------------*
FORM fill_output_migo USING p_v_output TYPE ty_po
p_v_ekbe_migo TYPE ekbe.
p_v_output-mjahr = p_v_ekbe_migo-gjahr.
p_v_output-mblnr = p_v_ekbe_migo-belnr.
p_v_output-zeile = p_v_ekbe_migo-buzei..
p_v_output-xblnr_migo = p_v_ekbe_migo-xblnr.
DATA: v_mkpf TYPE mkpf.
SELECT SINGLE * FROM mkpf INTO v_mkpf
WHERE mblnr = p_v_output-mblnr
AND mjahr = p_v_output-mjahr.
IF sy-subrc IS INITIAL.
p_v_output-bldat_migo = v_mkpf-bldat.
p_v_output-cpudat_migo = v_mkpf-cpudt.
ENDIF.
DATA: v_srgbtbrel TYPE srgbtbrel.
CONCATENATE p_v_output-mblnr p_v_output-mjahr INTO v_srgbtbrel-instid_a.
PERFORM check_attachment USING v_srgbtbrel-instid_a 'BUS2017' p_v_output-attach_migo.
ENDFORM. " FILL_OUTPUT_MIGO
* &---------------------------------------------------------------------*
* & Form FILL_OUTPUT_SHEET
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_V_OUTPUT text
* -->P_V_EKBE_SHEET text
* ----------------------------------------------------------------------*
FORM fill_output_sheet USING p_v_output TYPE ty_po
p_v_ekbe_sheet TYPE ekbe.
p_v_output-lblni = p_v_ekbe_sheet-belnr.
p_v_output-xblnr_sheet = p_v_ekbe_sheet-xblnr.
SELECT SINGLE * FROM essr INTO v_essr WHERE lblni = p_v_output-lblni.
CHECK sy-subrc IS INITIAL.
p_v_output-cpudt_sheet = v_essr-erdat.
p_v_output-bldat_sheet = v_essr-bldat.
IF v_essr-kzabn IS NOT INITIAL.
p_v_output-semaforo_sheet = icon_green_light.
ELSE.
p_v_output-dif_dias = sy-datum - p_v_output-cpudt_sheet.
IF p_v_output-dif_dias IN lt_entry_sheet_green .
p_v_output-semaforo_sheet = icon_green_light.
ENDIF.
IF p_v_output-dif_dias IN lt_entry_sheet_yellow.
p_v_output-semaforo_sheet = icon_yellow_light.
ENDIF.
IF p_v_output-dif_dias IN lt_entry_sheet_red .
p_v_output-semaforo_sheet = icon_red_light.
ENDIF.
ENDIF.
DATA: v_srgbtbrel TYPE srgbtbrel.
MOVE p_v_output-lblni TO v_srgbtbrel-instid_a.
PERFORM check_attachment USING v_srgbtbrel-instid_a 'BUS2091' p_v_output-attach_sheet.
ENDFORM. " FILL_OUTPUT_SHEET
* &---------------------------------------------------------------------*
* & Form select_tvarv
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->PV_NAME text
* -->CT_TABLE text
* ----------------------------------------------------------------------*
FORM select_tvarv
USING pv_name TYPE rvari_vnam
CHANGING ct_table TYPE STANDARD TABLE.
TYPES:
BEGIN OF ts_tvarvc_entry,
sign TYPE c LENGTH 01,
option TYPE c LENGTH 02,
low TYPE tvarv_val ,
high TYPE tvarv_val ,
END OF ts_tvarvc_entry,
tt_tvarvc_entry TYPE STANDARD TABLE OF ts_tvarvc_entry
WITH DEFAULT KEY.
DATA: lt_tvarvc TYPE tt_tvarvc_entry.
* Declaração dos ponteiros locais
FIELD-SYMBOLS:
<fs_tvarvc> LIKE LINE OF lt_tvarvc,
<fs_table> TYPE ANY.
SELECT sign opti AS option low high
FROM tvarvc
INTO TABLE lt_tvarvc
WHERE name EQ pv_name.
LOOP AT lt_tvarvc ASSIGNING <fs_tvarvc>.
INSERT INITIAL LINE INTO TABLE ct_table ASSIGNING <fs_table>.
MOVE-CORRESPONDING <fs_tvarvc> TO <fs_table>.
ENDLOOP.
ENDFORM. "select_tvarv
* &---------------------------------------------------------------------*
* & Form CHECK_ATTACHMENT
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_V_SRGBTBREL_INSTID_A text
* -->P_3077 text
* -->P_P_V_OUTPUT_ATTACH_MIGO text
* ----------------------------------------------------------------------*
FORM check_attachment USING p_instid_a
value(p_bustype)
p_attach.
CLEAR p_attach.
DATA: v_instid_a TYPE srgbtbrel-instid_a.
SELECT instid_a
INTO v_instid_a
FROM srgbtbrel
WHERE typeid_a = p_bustype
AND instid_a = p_instid_a.
ENDSELECT.
IF sy-subrc IS INITIAL.
p_attach = icon_attachment.
ENDIF.
* BKPF E Accounting document Accounting document
* BSEG E Accounting Document Line Item Acctng Doc.Line Item
* BUS0012 E Cost Center Cost Center
* BUS2081 E Incoming Invoice Incoming Invoice
* BUS2091 E Service entry sheet Entry sheet
* BUS2105 E Purchase requisition Purchase requisition
* BUS2143 E Nota Fiscal Nota Fiscal
* BUS2012 E Purchase Order Purchase Order
* BUS2014 E Purchase contract Purchase contract
* BUS2017 E Goods Movement Goods Movement
* LFA1 E Vendor Vendor
ENDFORM. " CHECK_ATTACHMENT
* &---------------------------------------------------------------------*
* & Form user_command
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->UCOMM text
* -->SELFIELD text
* ----------------------------------------------------------------------*
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
DATA: gd_repid LIKE sy-repid,
ref_grid TYPE REF TO cl_gui_alv_grid,
wa_output LIKE LINE OF t_output,
lw_object TYPE sibflporb,
vl_subrc TYPE sy-subrc.
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.
CASE ucomm.
WHEN '&IC1'.
CASE selfield-sel_tab_field.
WHEN 'T_OUTPUT-EBELN'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
SET PARAMETER ID : 'BES' FIELD wa_output-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
WHEN 'T_OUTPUT-LBLNI' OR 'T_OUTPUT-XBLNR_SHEET'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
SET PARAMETER ID : 'LBL' FIELD wa_output-lblni.
CALL TRANSACTION 'ML81N' AND SKIP FIRST SCREEN.
WHEN 'T_OUTPUT-MBLNR' OR 'T_OUTPUT-XBLNR_MIGO'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
CALL FUNCTION 'MIGO_DIALOG'
EXPORTING
i_action = 'A04'
i_refdoc = 'R02'
i_notree = 'X'
i_skip_first_screen = 'X'
i_deadend = 'X'
i_okcode = 'OK_GO'
i_mblnr = wa_output-mblnr
EXCEPTIONS
illegal_combination = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
WHEN 'T_OUTPUT-BELNR_MIRO'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
SET PARAMETER ID :
'RBN' FIELD wa_output-belnr_miro,
'GJR' FIELD wa_output-bldat_miro(8).
CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
WHEN 'T_OUTPUT-ATTACH_MIGO'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
CONCATENATE wa_output-mblnr wa_output-bldat_migo(4) INTO lw_object-instid.
lw_object-typeid = 'BUS2017'.
lw_object-catid = 'BO'.
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
EXPORTING
is_object = lw_object.
WHEN 'T_OUTPUT-ATTACH_MIRO'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
CLEAR: lw_object.
CONCATENATE wa_output-belnr_miro wa_output-bldat_miro(4) INTO lw_object-instid.
lw_object-typeid = 'BUS2081'.
lw_object-catid = 'BO'.
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
EXPORTING
is_object = lw_object.
WHEN 'T_OUTPUT-ATTACH_SHEET'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
CLEAR: lw_object.
MOVE wa_output-lblni TO lw_object-instid.
lw_object-typeid = 'BUS2091'.
lw_object-catid = 'BO'.
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
EXPORTING
is_object = lw_object.
WHEN 'T_OUTPUT-ATTACH_PO'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
CLEAR: lw_object.
MOVE wa_output-ebeln TO lw_object-instid.
lw_object-typeid = 'BUS2012'.
lw_object-catid = 'BO'.
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
EXPORTING
is_object = lw_object.
WHEN 'T_OUTPUT-BELNR_FI'.
READ TABLE t_output INTO wa_output INDEX selfield-tabindex.
SET PARAMETER ID 'BLN' FIELD wa_output-belnr_fi.
SET PARAMETER ID 'BUK' FIELD wa_output-bukrs.
SET PARAMETER ID 'GJR' FIELD wa_output-bldat_miro(8).
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM. "user_command
* &---------------------------------------------------------------------*
* & Form DEFINE_COLORS
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM define_colors .
TYPES: BEGIN OF ty_ekpo,
ebeln TYPE ty_po-ebeln,
ebelp TYPE ty_po-ebelp,
count TYPE i,
END OF ty_ekpo.
DATA: t_count_ekpo TYPE TABLE OF ty_ekpo,
w_count_ekpo LIKE LINE OF t_count_ekpo.
FIELD-SYMBOLS: <output> LIKE LINE OF t_output.
LOOP AT t_output ASSIGNING <output>.
CLEAR w_count_ekpo.
w_count_ekpo-ebeln = <output>-ebeln.
w_count_ekpo-ebelp = <output>-ebelp.
w_count_ekpo-count = <output>-count.
COLLECT w_count_ekpo INTO t_count_ekpo.
ENDLOOP.
DELETE t_count_ekpo WHERE count = 1.
LOOP AT t_count_ekpo INTO w_count_ekpo.
PERFORM define_color_red USING w_count_ekpo-ebeln w_count_ekpo-ebelp.
ENDLOOP.
ENDFORM. " DEFINE_COLORS
* &---------------------------------------------------------------------*
* & Form DEFINE_COLOR_RED
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* -->P_W_COUNT_EKPO_EBELN text
* -->P_W_COUNT_EKPO_EBELP text
* ----------------------------------------------------------------------*
FORM define_color_red USING p_ekpo_ebeln TYPE ebeln
p_ekpo_ebelp TYPE ebelp.
DATA: it_color TYPE TABLE OF lvc_s_scol,
wa_color TYPE lvc_s_scol.
CLEAR it_color[].
MOVE 'EBELN' TO wa_color-fname.
MOVE '6' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '1' TO wa_color-color-inv.
APPEND wa_color TO it_color.
MOVE 'EBELP' TO wa_color-fname.
MOVE '6' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '1' TO wa_color-color-inv.
APPEND wa_color TO it_color.
FIELD-SYMBOLS: <output> LIKE LINE OF t_output.
LOOP AT t_output ASSIGNING <output>
WHERE ebeln = p_ekpo_ebeln AND ebelp = p_ekpo_ebelp.
<output>-color_cell[] = it_color[].
ENDLOOP.
ENDFORM. " DEFINE_COLOR_RED
* &---------------------------------------------------------------------*
* & Form PREPARE_LAYOUT
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM prepare_layout .
MOVE 'COLOR_CELL' TO lvc_layout-ctab_fname.
ENDFORM. " PREPARE_LAYOUT
* &---------------------------------------------------------------------*
* & Form FILL_FI_BELNR
* &---------------------------------------------------------------------*
* text
* ----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
* ----------------------------------------------------------------------*
FORM fill_fi_belnr .
FIELD-SYMBOLS: <output> LIKE LINE OF t_output.
DATA: v_awkey TYPE bkpf-awkey,
w_bkpf TYPE bkpf.
LOOP AT t_output ASSIGNING <output> WHERE belnr_miro IS NOT INITIAL.
CONCATENATE <output>-belnr_miro <output>-gjahr_miro INTO v_awkey .
SELECT SINGLE *
FROM bkpf
INTO w_bkpf
WHERE awkey = v_awkey.
IF sy-subrc IS INITIAL.
<output>-belnr_fi = w_bkpf-belnr.
* <output>-zterm_fi = w_bkpf-zterm.
ENDIF.
ENDLOOP.
ENDFORM. " FILL_FI_BELNR
*&---------------------------------------------------------------------*
*& Form FILL_DUE_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_due_date .
FIELD-SYMBOLS: <output> LIKE LINE OF t_output.
" Due Date Priority
" 1. MIRO
" 2. FI_DOCUMENT
" 3. MIGO + PO ZTERM
" 4. ESSR + PO ZTERM
DATA:
w_t052 TYPE t052,
t_vtopis TYPE TABLE OF vtopis,
w_vtopis LIKE LINE OF t_vtopis.
LOOP AT t_output ASSIGNING <output>.
IF <output>-zterm_miro IS NOT INITIAL.
<output>-zterm = <output>-zterm_miro.
ELSEIF <output>-zterm_fi IS NOT INITIAL.
<output>-zterm = <output>-zterm_fi.
ELSEIF <output>-mblnr IS NOT INITIAL.
<output>-zterm = <output>-zterm_po.
ELSEIF <output>-lblni IS NOT INITIAL.
<output>-zterm = <output>-zterm_po.
ELSE.
<output>-zterm = <output>-zterm_po.
ENDIF.
CLEAR w_t052.
CALL FUNCTION 'FI_TERMS_OF_PAYMENT_CHECK'
EXPORTING
i_zterm = <output>-zterm
IMPORTING
e_t052 = w_t052
EXCEPTIONS
terms_of_payment = 1
conditions = 2
OTHERS = 3.
IF w_t052-xsplt IS INITIAL.
CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT'
EXPORTING
bldat = <output>-duedt_base
budat = <output>-duedt_base
cpudt = <output>-duedt_base
* LANGUAGE = ' '
terms_of_payment = <output>-zterm
* COUNTRY = ' '
* HOLDBACK = ' '
* TOP_HOLDBACK_INFO =
* DOCUMENT_CURRENCY = ' '
* IMPORTING
* BASELINE_DATE =
* PAYMENT_SPLIT =
* ZFBDT =
TABLES
top_text = t_vtopis
EXCEPTIONS
terms_of_payment_not_in_t052 = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT_SPLI'
EXPORTING
bldat = <output>-duedt_base
budat = <output>-duedt_base
cpudt = <output>-duedt_base
* LANGUAGE = ' '
terms_of_payment = <output>-zterm
* wert = v_rbkp-rmwwr
* waerk = v_rbkp-waers
* FKDAT = 00000000
* SKFBT = 00000000
* I_COMPANY_CODE =
* I_COUNTRY =
* IMPORTING
* BASELINE_DATE =
TABLES
top_text_split = t_vtopis
EXCEPTIONS
terms_of_payment_not_in_t052 = 1
terms_of_payment_not_in_t052s = 2
OTHERS = 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
* IF t_vtopis[] IS NOT INITIAL.
* SORT t_vtopis BY hdatum.
* READ TABLE t_vtopis INDEX 1 INTO w_vtopis.
* IF w_vtopis-hdatum < sy-datum.
* MESSAGE e149(f5) WITH w_vtopis-hdatum.
** Vencimento líquido a & situa-se no passado
* ENDIF.
* ENDIF.
ENDLOOP.
ENDFORM. " FILL_DUE_DATE