Вы находитесь на странице: 1из 6

FUNCTION�sipt_bupa_pai_butx01.

*"----------------------------------------------------------------------
*"*"Local�Interface:
*"----------------------------------------------------------------------
****"----------------------------------------------------------------------
****"*"Local�Interface:
****"----------------------------------------------------------------------
***
***��DATA:
***����ls_kna1���������TYPE��kna1,
***����ls_kna1_old�����TYPE��kna1,
***����lv_symsgid������TYPE�sy-msgid,
***����lv_symsgno������TYPE�sy-msgno,
***����lv_symsgty������TYPE�sy-msgty,
***����lv_symsgv1������TYPE�sy-msgv1,
***����lv_symsgv2������TYPE�sy-msgv2,
***����lv_symsgv3������TYPE�sy-msgv3,
***����lv_symsgv4������TYPE�sy-msgv4,
***����ls_but000�������TYPE�but000,
***����lt_dfkkbptaxnum�TYPE�TABLE�OF�dfkkbptaxnum,
***����ls_dfkkbptaxnum�TYPE�dfkkbptaxnum,
***����lv_aktyp��������TYPE�tbz0k-aktyp.
***
***
****check�activity
***��CALL�FUNCTION�'BUS_PARAMETERS_ISSTA_GET'
***����IMPORTING
***������e_aktyp�=�lv_aktyp.
***��CHECK�lv_aktyp�=�'02'.
***
****�get�current�KNA1�values�in�Buffer
***��CALL�FUNCTION�'CVIC_BUPA_KNA1_GET'
***����IMPORTING
***������e_kna1�=�ls_kna1.
****�CVI�working�?
***��CHECK�NOT�ls_kna1�IS�INITIAL.
***
****�is�there�tax�at�all�?
***��CALL�FUNCTION�'BUP_BUPA_TAX_GET'
***����TABLES
***������et_tax��������������=�lt_dfkkbptaxnum
***����EXCEPTIONS
***������no_taxnumbers_found�=�1
***������OTHERS��������������=�2.
***��CHECK�sy-subrc�=�0.
****�is�there�portuguese�tax�?
***��READ�TABLE�lt_dfkkbptaxnum�INTO�ls_dfkkbptaxnum�WITH�KEY�taxtype�=�'PT0'.
***��CHECK�sy-subrc�=�0.
***
****�prepare�parameters�for�check�module
***��ls_kna1_old�=�ls_kna1.
***
****�only�do�check�if�the�tax�field�has�changed�otherwise�leave
***��IF�ls_kna1-stceg�<>�ls_dfkkbptaxnum-taxnum.
***����ls_kna1-stceg��=�ls_dfkkbptaxnum-taxnum.
***��ELSE.
***����RETURN.
***��ENDIF.
***
***��CALL�FUNCTION�'SIPT_CHECK_BP_MASTER_DATA'
***����EXPORTING
***������i_kna1�����������=�ls_kna1
***������i_kna1_old�������=�ls_kna1_old
***����IMPORTING
***������ev_symsgid�������=�lv_symsgid
***������ev_symsgno�������=�lv_symsgno
***������ev_symsgty�������=�lv_symsgty
***������ev_symsgv1�������=�lv_symsgv1
***������ev_symsgv2�������=�lv_symsgv2
***������ev_symsgv3�������=�lv_symsgv2
***������ev_symsgv4�������=�lv_symsgv4
***����EXCEPTIONS
***������data_incompliant�=�1
***������OTHERS�����������=�2.
***��CHECK�sy-subrc�=�1.
***
***��CALL�FUNCTION�'BUS_MESSAGE_STORE'
***����EXPORTING
***������arbgb�=�lv_symsgid
***������msgty�=�lv_symsgty
***������txtnr�=�lv_symsgno
***������msgv1�=�lv_symsgv1
***������msgv2�=�lv_symsgv2
***������msgv3�=�lv_symsgv3
***������msgv4�=�lv_symsgv4.

*----------------------------
�START�insert�code-------------------------------------------------------*
*�local�constants�*
��CONSTANTS:�lc_gen_vat_1���TYPE�stceg�����VALUE�'PT999999990',�����"generic�VAT�nu
m�for�PT
�������������lc_gen_vat_2���TYPE�stceg�����VALUE�'PT123456789',�����"generic�VAT�nu
m�for�PT
�������������lc_taxtype_pt0�TYPE�bptaxtype�VALUE�'PT0',�������������"tax�type�for�p
T
�������������lc_true��������TYPE�flag������VALUE�'X'.

*�local�data�definition�*
��DATA:
����ls_kna1�������������TYPE�kna1,
����ls_kna1_old���������TYPE�kna1,
����lv_aktyp������������TYPE�tbz0k-aktyp,
����lt_dfkkbptaxnum_new�TYPE�TABLE�OF�dfkkbptaxnum,
����ls_dfkkbptaxnum_new�TYPE�dfkkbptaxnum,
����ls_dfkkbptaxnum_old�TYPE�dfkkbptaxnum,
����lv_kunnr������������TYPE�kunnr.

��DATA�ls_but000��������������TYPE�but000.
��DATA�lv_partner�������������TYPE�bu_partner.
��DATA�lf_ds_creation_started�TYPE�flag.
��DATA�lf_migration_processed�TYPE�flag.
��DATA�lt_sipt_reg_kunnr������TYPE�sipt_t_reg_kunnr.
��DATA�ls_sipt_reg_kunnr������TYPE�sipt_reg_kunnr.
��DATA�lv_error_string��������TYPE�string.
��CLEAR�lv_error_string.

��CALL�FUNCTION�'BUP_BUPA_BUT000_GET'
����IMPORTING
������e_but000�=�ls_but000.

��lv_partner�=�ls_but000-partner.

��IF�lv_partner�IS�NOT�INITIAL."BP�value

����SELECT�kunnr�FROM�SIPT_reg_kunnr�INTO�lv_kunnr�UP�TO�1�ROWS�WHERE�kunnr�<>�spac
e.
������IF�sy-subrc�=�0.
��������"document�with�Portuguese�digital�signature�must�exist
��������lf_ds_creation_started�=�lc_true.
������ENDIF.
����ENDSELECT.

����CHECK�lf_ds_creation_started�=�lc_true.

*�get�activity�*
����CALL�FUNCTION�'BUS_PARAMETERS_ISSTA_GET'
������IMPORTING
��������e_aktyp�=�lv_aktyp.

*�get�old�KNA1�values�*
����CALL�FUNCTION�'CVIC_BUPA_KNA1_GET'
������IMPORTING
��������e_kna1�=�ls_kna1_old.

����IF�lv_aktyp�=�'02'�AND�ls_kna1_old-kunnr�IS�NOT�INITIAL."BP�change�mode

������CLEAR�ls_sipt_reg_kunnr.
������CLEAR�lt_sipt_reg_kunnr.

������ls_sipt_reg_kunnr-kunnr�=�ls_kna1_old-kunnr.
������APPEND�ls_sipt_reg_kunnr�TO�lt_sipt_reg_kunnr.

������CALL�FUNCTION�'SIPT_MD_REG_KUNNR_CHECK'
��������EXPORTING
����������if_migration_check�����=�'X'
*���������IV_AWTYP���������������=�IV_AWTYP
��������IMPORTING
����������ef_migration_processed�=�lf_migration_processed
*���������ET_SIPT_REG������������=�ET_SIPT_REG
��������CHANGING
����������ct_sipt_reg_kunnr������=�lt_sipt_reg_kunnr.

������IF�lf_migration_processed�IS�INITIAL.
��������"data�migration�is�mandatory�if�digital�signature�data�exist�in�system
��������MESSAGE�e613(sipt)�INTO�lv_error_string.

��������CALL�FUNCTION�'BUS_MESSAGE_STORE'
����������EXPORTING
������������arbgb�=�sy-msgid
������������msgty�=�sy-msgty
������������txtnr�=�sy-msgno
������������msgv1�=�sy-msgv1
������������msgv2�=�sy-msgv2
������������msgv3�=�sy-msgv3
������������msgv4�=�sy-msgv4.

������ENDIF.

������CLEAR�ls_sipt_reg_kunnr.
������READ�TABLE�lt_sipt_reg_kunnr�WITH�KEY�kunnr�=�ls_kna1_old-kunnr
������INTO�ls_sipt_reg_kunnr.

������IF�ls_sipt_reg_kunnr-flg_active�=�'X'."active�BP�check

*�get�new�taxnum�*
��������CALL�FUNCTION�'BUP_BUPA_TAX_GET'
����������TABLES
������������et_tax��������������=�lt_dfkkbptaxnum_new
����������EXCEPTIONS
������������no_taxnumbers_found�=�1
������������OTHERS��������������=�2.

*�read�new�taxnum�for�PT�*
��������CLEAR�ls_DFKKBPTAXNUM_new.
��������READ�TABLE�lt_DFKKBPTAXNUM_new
�������������INTO��ls_DFKKBPTAXNUM_new
�������������WITH�KEY�taxtype�=�lc_taxtype_pt0.

*�get�old�taxnum�for�PT�*
��������CLEAR�ls_DFKKBPTAXNUM_old.
��������SELECT�SINGLE�*
��������������FROM�dfkkbptaxnum
��������������INTO�ls_DFKKBPTAXNUM_old
��������������WHERE�partner�EQ�lv_partner������AND
��������������������taxtype�=�lc_taxtype_pt0.

*�compare�old�and�new�taxnumber
��������IF�ls_DFKKBPTAXNUM_old-taxnum�IS�INITIAL."no�reference
����������"NEW�VALUE,�no�reference�value

����������"Portuguese�business�exists,�but�no�VAT�reg.num.�for�tax�reporting
����������IF�ls_DFKKBPTAXNUM_new-taxnum�IS�INITIAL.
������������MESSAGE�w665(sipt)�WITH�ls_kna1_old-
kunnr�INTO�lv_error_string.�������������"Portuguese
VAT�registration�number�of�customer�number�&1�not�entered

������������CALL�FUNCTION�'BUS_MESSAGE_STORE'
��������������EXPORTING
����������������arbgb�=�sy-msgid
����������������msgty�=�sy-msgty
����������������txtnr�=�sy-msgno
����������������msgv1�=�sy-msgv1
����������������msgv2�=�sy-msgv2
����������������msgv3�=�sy-msgv3
����������������msgv4�=�sy-msgv4.
����������ENDIF.

��������ELSE."no�reference
����������"CHANGES,�old�reference�value�exists

����������IF�ls_DFKKBPTAXNUM_new-taxnum�IS�INITIAL."changes
������������MESSAGE�e664(sipt)�WITH�ls_kna1_old-
kunnr�INTO�lv_error_string.������������"Deletion�of�VAT�registration�number�of�cust
omer�number�&1�prohibited

������������CALL�FUNCTION�'BUS_MESSAGE_STORE'
��������������EXPORTING
����������������arbgb�=�sy-msgid
����������������msgty�=�sy-msgty
����������������txtnr�=�sy-msgno
����������������msgv1�=�sy-msgv1
����������������msgv2�=�sy-msgv2
����������������msgv3�=�sy-msgv3
����������������msgv4�=�sy-msgv4.

����������ELSE."changes

������������IF�ls_DFKKBPTAXNUM_old-taxnum�<>�ls_DFKKBPTAXNUM_new-taxnum."compare
��������������IF�NOT�(�ls_DFKKBPTAXNUM_old-taxnum�=�lc_gen_vat_1�OR
�����������������������ls_DFKKBPTAXNUM_old-taxnum�=�lc_gen_vat_2�).
����������������MESSAGE�e663(sipt)�WITH�ls_kna1_old-
kunnr�INTO�lv_error_string.����������"VAT�registration�number�of�customer�number�&1
�cannot�be�changed

����������������CALL�FUNCTION�'BUS_MESSAGE_STORE'
������������������EXPORTING
��������������������arbgb�=�sy-msgid
��������������������msgty�=�sy-msgty
��������������������txtnr�=�sy-msgno
��������������������msgv1�=�sy-msgv1
��������������������msgv2�=�sy-msgv2
��������������������msgv3�=�sy-msgv3
��������������������msgv4�=�sy-msgv4.

��������������ELSE.
����������������"change�allowed
����������������IF�NOT�(�ls_DFKKBPTAXNUM_new-taxnum�=�lc_gen_vat_1�OR
�������������������������ls_DFKKBPTAXNUM_new-taxnum�=�lc_gen_vat_2�).
������������������"->�warning�possible�here,�changes�after�saving�prohibited
����������������ENDIF.
��������������ENDIF.
������������ENDIF."compare
����������ENDIF."changes
��������ENDIF."no�reference

������ENDIF."active�BP�check
����ENDIF."BP�change�mode

��ELSE."BP�value
����"unexpected�error
��ENDIF."BP�value
*----------------------------
�END�insert�code-------------------------------------------------------*

ENDFUNCTION.

Вам также может понравиться