1732 - FBL1N - Functional and Technical Specification
1732 - FBL1N - Functional and Technical Specification
SPECIFICATION
IDENTIFICATION
Consultant Module
Caio Marcelo Cirino Nogueira Sobrinho FI
Analyst Demand ID
#1732
Document
Version Status Date
classification
0.1 Report adjustment 2021.08.09 Confidential
0.2
0.3
Requester
Consultant
DOCUMENTO DA SOLUÇÃO 1 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
1. Solution design
The field "Invoice Category" is found in the Header of the Supplier Billing document.
The fields "Accounting Classification Category", "Materials" and "WBS Element" are
found in the Supplier Billing document items. To be able to insert these fields in the
report, it was suggested to add a column with a button that, when double-clicking,
accesses a pop up that displays all the objects mentioned above, linked to the
supplier document.
DOCUMENTO DA SOLUÇÃO 2 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
1.1.2.2 New column that should receive an icon that will have a Drop down function
that will open a Pop up that will bring new fields:
Select the field EBELN, EBELP, KNTTP and MATNR in Table RSEG using the
following filters:
Select the PS_PSP_PNR field in the ACDOCA Table using the following filters:
1.1.3 Assumption
DOCUMENTO DA SOLUÇÃO 3 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
1.1.4 – Requisição
1.1.5 – Requisição
If the field has more than one value, the information of the first item located will be displayed, giving
priority to the “P – Project” categories.
DOCUMENTO DA SOLUÇÃO 4 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
1.1.6 – Requisição
Automatically fill in the "Reference Payment" field in the document item with the PEP element
information
DOCUMENTO DA SOLUÇÃO 5 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
1.1.8 – Requisição
- If there is more than one order, the information for the first item will be displayed.
DOCUMENTO DA SOLUÇÃO 6 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
New columns
Exibição da FBL1N
3. Configuration Evidence
4. Testing evidence
DOCUMENTO DA SOLUÇÃO 7 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
DOCUMENTO DA SOLUÇÃO 8 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
Requests generated
DOCUMENTO DA SOLUÇÃO 9 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
ENHANCEMENT ZFI_LIST_FOR_FBL1N.
TYPES:BEGIN OF ty_list_elem_pep,
ps_psp_pnr TYPE bseg-kidno,
END OF ty_list_elem_pep.
DATA: ls_fcat TYPE slis_fieldcat_alv,
lt_fcat TYPE slis_t_fieldcat_alv,
lt_extab TYPE slis_t_extab,
ls_extab TYPE rsmpe-func,
it_list_elem_pep TYPE TABLE OF ty_list_elem_pep,
l_elem_pep TYPE bseg-kidno.
DEFINE m_build_fcat.
ls_fcat-fieldname = &1.
ls_fcat-tabname = 'IT_LIST'.
ls_fcat-seltext_m = &2.
ls_fcat-outputlen = &3.
append ls_fcat to lt_fcat.
clear ls_fcat.
END-OF-DEFINITION.
DEFINE m_build_extab.
ls_extab = &1.
append ls_extab to lt_extab.
clear ls_extab.
END-OF-DEFINITION.
IF sy-tcode EQ 'FBL1N'.
IF rs_selfield-tabindex > 0 AND rs_selfield-sumindex LE 0.
READ TABLE it_items INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
IF it_items-j_1bnftype IS NOT INITIAL.
SELECT SINGLE awkey
FROM bkpf INTO @DATA(l_awkey)
WHERE belnr EQ @it_items-belnr
AND gjahr EQ @it_items-gjahr
AND bukrs EQ @it_items-bukrs.
SELECT a~ebeln, a~ebelp, a~knttp, a~matnr, b~ps_psp_pnr
FROM rseg AS a INNER JOIN acdoca AS b ON a~ebeln EQ b~ebeln AND a~ebelp EQ b~ebelp AND
a~bukrs EQ b~rbukrs
INTO TABLE @DATA(it_list)
WHERE a~belnr EQ @l_awkey(10)
AND a~gjahr EQ @l_awkey+10(4)
AND a~bukrs EQ @it_items-bukrs
AND b~rldnr EQ '0L'
AND b~belnr EQ @it_items-belnr
DOCUMENTO DA SOLUÇÃO 11 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
AND b~gjahr EQ @it_items-gjahr
AND b~KTOSL EQ 'WRX'.
IF sy-subrc EQ 0.
DELETE ADJACENT DUPLICATES FROM it_list.
IF rs_selfield-fieldname EQ 'J_1BNFTYPE'.
m_build_fcat 'EBELN' 'Documento de compras' 20.
m_build_fcat 'EBELP' 'Item' 5.
m_build_fcat 'KNTTP' 'Categoria de Classificação Contábil' 35.
m_build_fcat 'MATNR' 'Materiais' 15.
m_build_fcat 'PS_PSP_PNR' 'Elemento PEP' 15.
m_build_extab '&OUP'.
m_build_extab '&OL0'.
m_build_extab '&NT1'.
m_build_extab '&ODN'.
m_build_extab '&OL0'.
m_build_extab '&ILT'.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = ' '
i_zebra = abap_true
i_screen_start_column = 5
i_screen_start_line = 6
i_screen_end_column = 100
i_screen_end_line = 100
i_tabname = 'IT_LIST'
it_fieldcat = lt_fcat
it_excluding = lt_extab
i_callback_program = sy-repid
TABLES
t_outtab = it_list
EXCEPTIONS
program_error = 1
OTHERS = 2.
EXIT.
ELSE.
READ TABLE it_list INTO DATA(ls_list) WITH KEY knttp = 'P'.
IF sy-subrc EQ 0.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
input = ls_list-ps_psp_pnr
IMPORTING
OUTPUT = l_elem_pep.
ENDIF.
LOOP AT it_list INTO ls_list.
DOCUMENTO DA SOLUÇÃO 12 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
IF sy-tabix EQ 1 AND ( l_elem_pep IS INITIAL ).
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
input = ls_list-ps_psp_pnr
IMPORTING
OUTPUT = l_elem_pep.
ENDIF.
APPEND INITIAL LINE TO it_list_elem_pep ASSIGNING FIELD-SYMBOL(<fs_list_elem_pep>).
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
input = ls_list-ps_psp_pnr
IMPORTING
OUTPUT = <fs_list_elem_pep>-ps_psp_pnr.
ENDLOOP.
EXPORT l_elem_pep TO MEMORY ID 'ADD_INF_ELEM_PEP_FIELD'.
EXPORT it_list_elem_pep TO MEMORY ID 'INF_ELEM_PEP_LIST'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENHANCEMENT ZPM_ADD_INF_ELEM_PEP.
TYPES:BEGIN OF ty_list_elem_pep,
ps_psp_pnr TYPE bseg-kidno,
END OF ty_list_elem_pep.
DATA: ls_fcat TYPE slis_fieldcat_alv,
lt_fcat TYPE slis_t_fieldcat_alv,
lt_extab TYPE slis_t_extab,
ls_extab TYPE rsmpe-func,
it_list_elem_pep TYPE TABLE OF ty_list_elem_pep.
DEFINE m_build_fcat.
ls_fcat-fieldname = &1.
ls_fcat-tabname = 'IT_LIST_ELEM_PEP'.
ls_fcat-seltext_m = &2.
ls_fcat-outputlen = &3.
append ls_fcat to lt_fcat.
clear ls_fcat.
END-OF-DEFINITION.
DEFINE m_build_extab.
ls_extab = &1.
append ls_extab to lt_extab.
DOCUMENTO DA SOLUÇÃO 13 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
clear ls_extab.
END-OF-DEFINITION.
IF sy-tcode EQ 'FBL1N' AND ( csfield EQ 'BSEG-KIDNO' ).
IMPORT it_list_elem_pep TO it_list_elem_pep
FROM MEMORY ID 'INF_ELEM_PEP_LIST'.
IF it_list_elem_pep[] IS NOT INITIAL.
DELETE ADJACENT DUPLICATES FROM it_list_elem_pep.
m_build_fcat 'PS_PSP_PNR' 'Elemento PEP' 15.
m_build_extab '&OUP'.
m_build_extab '&ONT'.
m_build_extab '&NT1'.
m_build_extab '&OL0'.
m_build_extab '&ODN'.
m_build_extab '&OL0'.
m_build_extab '&ILT'.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = 'Ref.pgto.'
i_zebra = abap_true
i_screen_start_column = 1
i_screen_start_line = 1
i_screen_end_column = 18
i_screen_end_line = 18
i_tabname = 'IT_LIST_ELEM_PEP'
it_fieldcat = lt_fcat
it_excluding = lt_extab
i_callback_program = sy-repid
TABLES
t_outtab = it_list_elem_pep
EXCEPTIONS
program_error = 1
OTHERS = 2.
CLEAR csfield.
ENDIF.
ENDIF.
ENHANCEMENT ZPM_ADD_INF_ELEM_PEP.
DATA:l_elem_pep TYPE bseg-kidno.
IF sy-tcode EQ 'FBL1N' .
IMPORT l_elem_pep to l_elem_pep
DOCUMENTO DA SOLUÇÃO 14 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
FROM MEMORY ID 'ADD_INF_ELEM_PEP_FIELD'.
IF l_elem_pep IS NOT INITIAL AND ( bseg-kidno NE l_elem_pep ).
bseg-kidno = l_elem_pep.
ENDIF.
ENDIF.
Object Type Função
Object Name Z_FI_INTERFACE_00001650
Processing Description / Adjustments
SELECT SINGLE TEXT1
FROM T007S INTO e_postab-text1
WHERE spras EQ sy-langu
AND mwskz EQ e_postab-mwskz.
SELECT SINGLE awkey
FROM bkpf
INTO @DATA(l_awkey)
WHERE belnr EQ @e_postab-belnr
AND gjahr EQ @e_postab-bldat+0(4)
AND bukrs EQ @e_postab-bukrs
AND awtyp EQ 'RMRP'.
IF sy-subrc EQ 0.
SELECT SINGLE j_1bnftype
FROM rbkp
INTO @DATA(l_1bnftype)
WHERE belnr EQ @l_awkey+0(10)
AND gjahr EQ @l_awkey+10(4).
IF sy-subrc EQ 0.
SELECT SINGLE nfttxt
FROM J_1BAAT INTO e_postab-nfttxt
WHERE spras EQ sy-langu
AND nftype EQ l_1bnftype.
SELECT a~ebeln, a~ebelp, a~matnr, a~knttp, b~ps_psp_pnr
FROM rseg AS a INNER JOIN acdoca AS b ON a~ebeln EQ b~ebeln AND a~ebelp EQ b~ebelp AND
a~bukrs EQ b~rbukrs
INTO TABLE @DATA(it_list)
WHERE a~belnr EQ @l_awkey(10)
AND a~gjahr EQ @l_awkey+10(4)
AND a~bukrs EQ @e_postab-bukrs
AND b~rldnr EQ '0L'
AND b~belnr EQ @e_postab-belnr
AND b~gjahr EQ @e_postab-gjahr
AND b~KTOSL EQ 'WRX'.
IF sy-subrc EQ 0.
READ TABLE it_list INTO DATA(is_list) WITH KEY knttp = 'P'.
DOCUMENTO DA SOLUÇÃO 15 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
IF sy-subrc NE 0.
READ TABLE it_list INTO is_list INDEX 1.
ENDIF.
IF is_list IS NOT INITIAL .
e_postab-ebeln_ped = is_list-ebeln.
e_postab-knttp = is_list-knttp.
e_postab-ps_psp_pnr = is_list-ps_psp_pnr.
IF is_list-matnr IS NOT INITIAL.
SELECT SINGLE maktx
FROM makt INTO e_postab-maktx
WHERE matnr EQ is_list-matnr
AND spras EQ sy-langu.
ELSE.
SELECT SINGLE TXZ01
FROM EKPO INTO @DATA(l_TXZ01)
WHERE EBELN EQ @e_postab-ebeln_ped
AND EBELP EQ @is_list-ebelp.
e_postab-maktx = l_TXZ01.
ENDIF.
ENDIF.
ENDIF.
CONCATENATE '@3D@' l_1bnftype INTO e_postab-j_1bnftype SEPARATED BY space.
ENDIF.
ENDIF.
FIELD-SYMBOLS <fs_it_fcat> TYPE slis_t_fieldcat_alv.
ASSIGN ('(SAPLFI_ITEMS)IT_U_FIELDCAT[]') TO <fs_it_fcat>.
IF <fs_it_fcat> IS ASSIGNED.
READ TABLE <fs_it_fcat> ASSIGNING FIELD-SYMBOL(<fs_s_fcat>)
WITH KEY fieldname = 'J_1BNFTYPE'.
IF <fs_s_fcat> IS NOT ASSIGNED.
APPEND INITIAL LINE TO <fs_it_fcat> ASSIGNING <fs_s_fcat>.
<fs_s_fcat>-fieldname = 'J_1BNFTYPE'.
<fs_s_fcat>-outputlen = '15'.
<fs_s_fcat>-hotspot = abap_true.
UNASSIGN <fs_s_fcat>.
ENDIF.
READ TABLE <fs_it_fcat> ASSIGNING <fs_s_fcat>
WITH KEY fieldname = 'NFTTXT'.
IF <fs_s_fcat> IS NOT ASSIGNED.
APPEND INITIAL LINE TO <fs_it_fcat> ASSIGNING <fs_s_fcat>.
<fs_s_fcat>-fieldname = 'NFTTXT'.
<fs_s_fcat>-outputlen = '40'.
UNASSIGN <fs_s_fcat>.
ENDIF.
READ TABLE <fs_it_fcat> ASSIGNING <fs_s_fcat>
WITH KEY fieldname = 'TEXT1'.
DOCUMENTO DA SOLUÇÃO 16 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
IF <fs_s_fcat> IS NOT ASSIGNED.
APPEND INITIAL LINE TO <fs_it_fcat> ASSIGNING <fs_s_fcat>.
<fs_s_fcat>-fieldname = 'TEXT1'.
IF sy-langu EQ 'P'.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s = 'Denomin. do IVA'.
<fs_s_fcat>-seltext_l = 'Denominação do IVA'.
ELSE.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s = 'Descrip.tax code'.
<fs_s_fcat>-seltext_l = 'Description tax code'.
ENDIF.
<fs_s_fcat>-outputlen = '50'.
UNASSIGN <fs_s_fcat>.
ENDIF.
READ TABLE <fs_it_fcat> ASSIGNING <fs_s_fcat>
WITH KEY fieldname = 'KNTTP'.
IF <fs_s_fcat> IS NOT ASSIGNED.
APPEND INITIAL LINE TO <fs_it_fcat> ASSIGNING <fs_s_fcat>.
<fs_s_fcat>-fieldname = 'KNTTP'.
IF sy-langu EQ 'P'.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s = 'Cat.class.contábil'.
<fs_s_fcat>-seltext_l = 'Categoria de classificação contábil'.
ELSE.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s = 'Account Assig.Category'.
<fs_s_fcat>-seltext_l = 'Account Assignment Category'.
ENDIF.
<fs_s_fcat>-outputlen = '30'.
UNASSIGN <fs_s_fcat>.
ENDIF.
READ TABLE <fs_it_fcat> ASSIGNING <fs_s_fcat>
WITH KEY fieldname = 'EBELN_PED'.
IF <fs_s_fcat> IS NOT ASSIGNED.
APPEND INITIAL LINE TO <fs_it_fcat> ASSIGNING <fs_s_fcat>.
<fs_s_fcat>-fieldname = 'EBELN_PED'.
IF sy-langu EQ 'P'.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s =
<fs_s_fcat>-seltext_l = 'Pedido'.
<fs_s_fcat>-outputlen = '10'.
ELSE.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s =
<fs_s_fcat>-seltext_l = 'Purchase order'.
<fs_s_fcat>-outputlen = '14'.
ENDIF.
UNASSIGN <fs_s_fcat>.
ENDIF.
READ TABLE <fs_it_fcat> ASSIGNING <fs_s_fcat>
WITH KEY fieldname = 'MAKTX'.
IF <fs_s_fcat> IS NOT ASSIGNED.
APPEND INITIAL LINE TO <fs_it_fcat> ASSIGNING <fs_s_fcat>.
DOCUMENTO DA SOLUÇÃO 17 de 18
FUNCTIONAL AND TECHNICAL
SPECIFICATION
<fs_s_fcat>-fieldname = 'MAKTX'.
IF sy-langu EQ 'P'.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s =
<fs_s_fcat>-seltext_l = 'Txt.pedido'.
<fs_s_fcat>-outputlen = '40'.
ELSE.
<fs_s_fcat>-seltext_m =
<fs_s_fcat>-seltext_s =
<fs_s_fcat>-seltext_l = 'PO Text'.
<fs_s_fcat>-outputlen = '40'.
ENDIF.
UNASSIGN <fs_s_fcat>.
ENDIF.
ENDIF.
6. Transportation document
To include the fields in the report of transaction FBL1N after finishing the transport of
the resquest, you have to run the program RFPOSXEXTEND in PRD, this program
will modify the structure to include the new fields in the report.
DOCUMENTO DA SOLUÇÃO 18 de 18