Last active
March 19, 2018 18:26
-
-
Save antelio/f3f395be48837cb5dc6cf57653859f6d to your computer and use it in GitHub Desktop.
ZPRFI_BALANCETE_GROUP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*&---------------------------------------------------------------------* | |
*& Report ZPRFI_BALANCETE_GROUP | |
*& | |
*&---------------------------------------------------------------------* | |
*& | |
*& | |
*&---------------------------------------------------------------------* | |
REPORT zprfi_balancete_group MESSAGE-ID zlw. | |
TABLES: ska1, skb1, t011t, bkpf, rfpdo2. | |
TYPE-POOLS slis. | |
DATA: tlayout TYPE slis_layout_alv, | |
tfieldcat TYPE slis_t_fieldcat_alv, | |
tevents TYPE slis_t_event, | |
i_list_comments TYPE slis_t_listheader, | |
w_list_comments LIKE LINE OF i_list_comments. | |
DATA: BEGIN OF i011z OCCURS 0. | |
INCLUDE STRUCTURE rf011z. | |
DATA: END OF i011z. | |
DATA: BEGIN OF x011p OCCURS 0. | |
INCLUDE STRUCTURE rf011p. | |
DATA: END OF x011p. | |
DATA: BEGIN OF x011q OCCURS 0. | |
INCLUDE STRUCTURE rf011q. | |
DATA: END OF x011q. | |
DATA: BEGIN OF x011s OCCURS 0. | |
INCLUDE STRUCTURE rf011s. | |
DATA: END OF x011s. | |
DATA: BEGIN OF x011v OCCURS 0. | |
INCLUDE STRUCTURE rf011v. | |
DATA: END OF x011v. | |
DATA: BEGIN OF t_val OCCURS 0. | |
INCLUDE STRUCTURE bapi1028_4. | |
DATA: END OF t_val. | |
DATA: BEGIN OF t_return OCCURS 0. | |
INCLUDE STRUCTURE bapireturn. | |
DATA: END OF t_return. | |
DATA: BEGIN OF t_ska1 OCCURS 0, | |
ktopl LIKE ska1-ktopl, | |
saknr LIKE ska1-saknr, | |
txt50 LIKE skat-txt50, | |
END OF t_ska1. | |
DATA: BEGIN OF t_estrut OCCURS 0, | |
saknr LIKE ska1-saknr, | |
txt45 LIKE rf011q-txt45, | |
setnr LIKE rf011s-setnr, | |
setvs LIKE rf011s-setvs, | |
ergsl LIKE rf011p-ergsl, | |
stufe LIKE rf011p-stufe, | |
prkey LIKE rf011p-prkey, | |
END OF t_estrut. | |
RANGES: r_saknr FOR ska1-saknr. | |
DATA: w_sld_ant LIKE bapi1028_4-balance, | |
w_mes_ant LIKE rfpdo2-sbwapera, | |
w_cont TYPE i. | |
DATA: BEGIN OF t_bukrs OCCURS 0, | |
bukrs TYPE bukrs, | |
END OF t_bukrs. | |
DATA: n_bukrs TYPE i. | |
*----------------------------------------------------------------------* | |
* Tela de Seleção | |
*----------------------------------------------------------------------* | |
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. | |
SELECT-OPTIONS: s_ktopl FOR ska1-ktopl OBLIGATORY NO INTERVALS | |
NO-EXTENSION. | |
SELECT-OPTIONS: s_saknr FOR ska1-saknr. | |
SELECT-OPTIONS: s_bukrs FOR skb1-bukrs OBLIGATORY. | |
SELECT-OPTIONS: s_versn FOR t011t-versn OBLIGATORY NO INTERVALS | |
NO-EXTENSION. | |
SELECT-OPTIONS: s_gjahr FOR bkpf-gjahr OBLIGATORY NO INTERVALS | |
NO-EXTENSION. | |
SELECT-OPTIONS: s_sbwa FOR rfpdo2-sbwapera OBLIGATORY | |
NO INTERVALS | |
NO-EXTENSION. | |
SELECTION-SCREEN END OF BLOCK b1. | |
DATA: BEGIN OF t_dados OCCURS 0, | |
saknr LIKE ska1-saknr, | |
saknr_f(15), | |
txt45 LIKE skat-txt50, "rf011q-txt45, | |
setnr LIKE rf011s-setnr, | |
setvs LIKE rf011s-setvs, | |
ergsl LIKE rf011p-ergsl, | |
stufe LIKE rf011p-stufe, | |
prkey LIKE ddprof-value, | |
upkey LIKE ddprof-value, | |
origem, | |
color_line(4) TYPE c, " Line color | |
color_cell TYPE lvc_t_scol, " Cell color | |
balance_01 LIKE bapi1028_4-balance, | |
balance_02 LIKE bapi1028_4-balance, | |
balance_03 LIKE bapi1028_4-balance, | |
balance_04 LIKE bapi1028_4-balance, | |
balance_05 LIKE bapi1028_4-balance, | |
balance_06 LIKE bapi1028_4-balance, | |
balance_07 LIKE bapi1028_4-balance, | |
balance_08 LIKE bapi1028_4-balance, | |
balance_09 LIKE bapi1028_4-balance, | |
balance_10 LIKE bapi1028_4-balance, | |
balance_11 LIKE bapi1028_4-balance, | |
balance_12 LIKE bapi1028_4-balance, | |
balance_13 LIKE bapi1028_4-balance, | |
balance_14 LIKE bapi1028_4-balance, | |
balance_15 LIKE bapi1028_4-balance, | |
total LIKE bapi1028_4-balance, | |
END OF t_dados. | |
DATA: t_dados_aux LIKE t_dados OCCURS 0 WITH HEADER LINE. | |
START-OF-SELECTION. | |
PERFORM select_bukrs. | |
IF n_bukrs > 15 OR n_bukrs = 0. | |
MESSAGE e000. | |
* Erro não definido | |
ENDIF. | |
PERFORM select_structure. | |
PERFORM process_structure. | |
PERFORM load_accounts. | |
PERFORM format_balance. | |
DO n_bukrs TIMES. | |
PERFORM process_bukrs USING sy-index. | |
PERFORM process_sumup USING sy-index. | |
ENDDO. | |
PERFORM clear_items. | |
PERFORM sum_bukrs. | |
*----------------------------------------------------------------------* | |
* END-OF-SELECTION | |
*----------------------------------------------------------------------* | |
END-OF-SELECTION. | |
IF NOT t_dados[] IS INITIAL. | |
PERFORM output_alv. | |
ELSE. | |
MESSAGE e011. | |
ENDIF. | |
*&---------------------------------------------------------------------* | |
*& Form SELECT_STRUTCTURE | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM select_structure . | |
*Estrutura do balancete | |
CALL FUNCTION 'FI_IMPORT_BALANCE_SHEET_POS' | |
EXPORTING | |
version = s_versn-low | |
TABLES | |
i011z = i011z | |
x011p = x011p | |
x011s = x011s | |
x011v = x011v | |
EXCEPTIONS | |
new_balance_sheet = 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 'FI_IMPORT_BALANCE_SHEET_TEXT' | |
EXPORTING | |
version = s_versn-low | |
sprache = sy-langu | |
TABLES | |
x011q = x011q | |
EXCEPTIONS | |
text_not_found = 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. | |
* Seleciona contas | |
SELECT a~ktopl a~saknr b~txt50 | |
INTO TABLE t_ska1 | |
FROM ska1 AS a INNER JOIN | |
skat AS b ON a~ktopl EQ b~ktopl AND | |
a~saknr EQ b~saknr | |
WHERE a~ktopl IN s_ktopl AND | |
a~saknr IN s_saknr AND | |
b~spras EQ sy-langu. | |
ENDFORM. " SELECT_STRUTCTURE | |
*&---------------------------------------------------------------------* | |
*& Form PROCESS_STRUCTURE | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM process_structure. | |
SORT x011s BY setvs setnr. | |
SORT x011q BY ergsl. | |
SORT x011p BY ergsl. | |
SORT i011z BY ergso. | |
LOOP AT x011s. | |
t_estrut-setnr = x011s-setnr. | |
t_estrut-setvs = x011s-setvs. | |
READ TABLE x011q WITH KEY ergsl = x011s-ergsl | |
BINARY SEARCH. | |
IF sy-subrc IS INITIAL. | |
READ TABLE x011p WITH KEY ergsl = x011s-ergsl BINARY SEARCH. | |
IF sy-subrc IS INITIAL. | |
t_estrut-ergsl = x011p-ergsl. | |
t_estrut-stufe = x011p-stufe. | |
t_estrut-prkey = x011p-prkey. | |
IF x011p-stufe EQ 1. | |
CONCATENATE '0' x011q-txt45(1) | |
INTO t_estrut-saknr. | |
t_estrut-txt45 = x011q-txt45+2(43). | |
ELSEIF x011p-stufe EQ 2. | |
CONCATENATE '0' x011q-txt45(1) x011q-txt45+2(1) | |
INTO t_estrut-saknr. | |
* t_estrut-saknr = x011q-txt45(3). | |
t_estrut-txt45 = x011q-txt45+4(41). | |
ELSEIF x011p-stufe EQ 3. | |
CONCATENATE '0' x011q-txt45(1) x011q-txt45+2(1) | |
x011q-txt45+4(2) | |
INTO t_estrut-saknr. | |
* t_estrut-saknr = x011q-txt45(6). | |
t_estrut-txt45 = x011q-txt45+7(38). | |
ELSEIF x011p-stufe EQ 4. | |
CONCATENATE '0' x011q-txt45(1) x011q-txt45+2(1) | |
x011q-txt45+4(2) x011q-txt45+7(2) | |
INTO t_estrut-saknr. | |
t_estrut-txt45 = x011q-txt45+10(35). | |
ENDIF. | |
APPEND t_estrut. | |
CLEAR: t_estrut. | |
ENDIF. | |
ENDIF. | |
ENDLOOP. | |
ENDFORM. "process_structure | |
*&---------------------------------------------------------------------* | |
*& Form process_burks | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->P_LINE_BUKRS text | |
*----------------------------------------------------------------------* | |
FORM process_bukrs USING p_line_bukrs TYPE i. | |
DATA: v_bukrs TYPE bukrs, | |
v_saknr_len TYPE i, | |
v_stufe_len TYPE i, | |
n_bukrs(2) TYPE n, | |
field_name(20) TYPE c. | |
FIELD-SYMBOLS: | |
<dados> LIKE t_dados, | |
<bapicurr> TYPE bapisaldo. | |
READ TABLE t_bukrs INDEX p_line_bukrs INTO v_bukrs. | |
LOOP AT t_dados ASSIGNING <dados>. | |
<dados>-upkey = <dados>-prkey. | |
v_stufe_len = ( <dados>-stufe - 1 ) * 2. | |
* IF <dados>-stufe > 1. | |
IF <dados>-origem <> 'C'. | |
<dados>-upkey+v_stufe_len(2) = '00' . | |
ENDIF. | |
* ELSE. | |
* <dados>-upkey(2) = '00'. | |
* ENDIF. | |
v_saknr_len = STRLEN( <dados>-saknr ). | |
CHECK v_saknr_len = 10. | |
CALL FUNCTION 'BAPI_GL_GETGLACCPERIODBALANCES' | |
EXPORTING | |
companycode = v_bukrs | |
glacct = <dados>-saknr | |
fiscalyear = s_gjahr-low | |
currencytype = '10' | |
IMPORTING | |
balance_carried_forward = w_sld_ant | |
return = t_return | |
TABLES | |
account_balances = t_val. | |
READ TABLE t_val WITH KEY fis_period = s_sbwa-low. | |
IF sy-subrc IS INITIAL. | |
n_bukrs = p_line_bukrs. | |
CONCATENATE 'BALANCE_' n_bukrs INTO field_name. | |
ASSIGN COMPONENT field_name OF STRUCTURE <dados> TO <bapicurr>. | |
CHECK <bapicurr> IS ASSIGNED. | |
<bapicurr> = t_val-balance. | |
ENDIF. | |
ENDLOOP. | |
ENDFORM. " PROCESS_STRUCTURE | |
*&---------------------------------------------------------------------* | |
*& Form ZALV | |
*&---------------------------------------------------------------------* | |
FORM output_alv . | |
PERFORM f_field_catalog_merge. | |
PERFORM f_modify_field_catalog. | |
PERFORM f_set_layout. | |
PERFORM f_events_get. | |
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' | |
EXPORTING | |
i_callback_program = 'ZPRFI_BALANCETE_GROUP' | |
is_layout = tlayout | |
it_fieldcat = tfieldcat | |
* i_callback_top_of_page = 'XTOP_OF_PAGE' | |
it_events = tevents | |
TABLES | |
t_outtab = t_dados | |
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. | |
ENDFORM. " ZALV | |
*&---------------------------------------------------------------------* | |
*& Form f_field_catalog_merge | |
*&---------------------------------------------------------------------* | |
FORM f_field_catalog_merge . | |
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' | |
EXPORTING | |
i_program_name = sy-cprog | |
i_internal_tabname = 'T_DADOS' | |
i_inclname = sy-cprog | |
i_bypassing_buffer = 'X' | |
CHANGING | |
ct_fieldcat = tfieldcat | |
EXCEPTIONS | |
inconsistent_interface = 1 | |
program_error = 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. | |
ENDFORM. " f_field_catalog_merge | |
*&---------------------------------------------------------------------* | |
*& Form f_modify_field_catalog | |
*&---------------------------------------------------------------------* | |
FORM f_modify_field_catalog . | |
PERFORM change_field_cat USING: | |
tfieldcat 'PRKEY' 'NO_OUT' 'X', | |
tfieldcat 'UPKEY' 'NO_OUT' 'X', | |
tfieldcat 'SETNR' 'NO_OUT' 'X', | |
* tfieldcat 'STUFE' 'NO_OUT' 'X', | |
tfieldcat 'TXT45' 'KEY' 'X', | |
tfieldcat 'TXT45' 'OUTPUTLEN' 25, | |
* tfieldcat 'ORIGEM' 'NO_OUT' 'X', | |
tfieldcat 'ERGSL' 'NO_OUT' 'X', | |
tfieldcat 'SETVS' 'NO_OUT' 'X', | |
tfieldcat 'TOTAL' 'SELTEXT_S' 'Total', | |
tfieldcat 'TOTAL' 'SELTEXT_M' 'Total', | |
tfieldcat 'TOTAL' 'SELTEXT_L' 'Total', | |
tfieldcat 'TOTAL' 'OUTPUTLEN' 25, | |
tfieldcat 'TOTAL' 'DECIMALS_OUT' 2, | |
tfieldcat 'TOTAL' 'REPTEXT_DDIC' 'Total', | |
tfieldcat 'SAKNR_F' 'NO_OUT' 'X'. | |
DATA: | |
hide_bukrs TYPE i, | |
field_name(20) TYPE c, | |
v_col(2) TYPE n, | |
w_bukrs LIKE LINE OF t_bukrs. | |
LOOP AT t_bukrs INTO w_bukrs. | |
v_col = sy-tabix. | |
CONCATENATE 'BALANCE_' v_col INTO field_name. | |
PERFORM change_field_cat USING: | |
tfieldcat field_name 'SELTEXT_S' w_bukrs-bukrs, | |
tfieldcat field_name 'SELTEXT_M' w_bukrs-bukrs, | |
tfieldcat field_name 'SELTEXT_L' w_bukrs-bukrs, | |
tfieldcat field_name 'OUTPUTLEN' 20, | |
tfieldcat field_name 'DECIMALS_OUT' 2, | |
tfieldcat field_name 'REPTEXT_DDIC' w_bukrs-bukrs. | |
ENDLOOP. | |
hide_bukrs = 15 - n_bukrs. | |
DO hide_bukrs TIMES. | |
v_col = n_bukrs + sy-index. | |
CONCATENATE 'BALANCE_' v_col INTO field_name. | |
PERFORM change_field_cat USING: | |
tfieldcat field_name 'NO_OUT' 'X'. | |
ENDDO. | |
ENDFORM. " f_modify_field_catalog | |
*&---------------------------------------------------------------------* | |
*& Form f_set_layout | |
*&---------------------------------------------------------------------* | |
FORM f_set_layout . | |
* tlayout-zebra = 'X'. | |
MOVE 'COLOR_LINE' TO tlayout-info_fieldname. | |
MOVE 'COLOR_CELL' TO tlayout-coltab_fieldname. | |
ENDFORM. " f_set_layout | |
*&---------------------------------------------------------------------* | |
*& Form f_events_get | |
*&---------------------------------------------------------------------* | |
FORM f_events_get . | |
DATA: revents TYPE slis_alv_event, | |
temp_events LIKE revents OCCURS 0 WITH HEADER LINE. | |
CALL FUNCTION 'REUSE_ALV_EVENTS_GET' | |
EXPORTING | |
i_list_type = 0 | |
IMPORTING | |
et_events = tevents | |
EXCEPTIONS | |
list_type_wrong = 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. | |
* | |
* temp_events[] = tevents[]. | |
* | |
* READ TABLE tevents WITH KEY name = 'TOP_OF_PAGE'. | |
* IF sy-subrc = 0. | |
* MOVE 'XTOP_OF_PAGE' TO temp_events-form. | |
* MODIFY temp_events INDEX sy-tabix. | |
* ENDIF. | |
* tevents[] = temp_events[]. | |
ENDFORM. " f_events_get | |
*&---------------------------------------------------------------------* | |
*& Form SELECT_BUKRS | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM select_bukrs . | |
SELECT bukrs FROM t001 | |
INTO TABLE t_bukrs | |
WHERE bukrs IN s_bukrs | |
AND ktopl IN s_ktopl. | |
DESCRIBE TABLE t_bukrs LINES n_bukrs. | |
SORT t_bukrs BY bukrs ASCENDING. | |
ENDFORM. " SELECT_BUKRS | |
*&---------------------------------------------------------------------* | |
*& Form LOAD_ACCOUNTS | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM load_accounts . | |
LOOP AT t_estrut. | |
t_dados-saknr = t_estrut-saknr. | |
t_dados-txt45 = t_estrut-txt45. | |
t_dados-setnr = t_estrut-setnr. | |
t_dados-setvs = t_estrut-setvs. | |
t_dados-ergsl = t_estrut-ergsl. | |
t_dados-stufe = t_estrut-stufe. | |
t_dados-prkey = t_estrut-prkey. | |
t_dados-origem = ' '. | |
READ TABLE i011z WITH KEY ergso = t_estrut-ergsl | |
BINARY SEARCH. | |
IF sy-subrc IS INITIAL. | |
CLEAR: r_saknr. REFRESH: r_saknr. | |
APPEND t_dados. | |
LOOP AT i011z WHERE ergso EQ t_estrut-ergsl. | |
MOVE 'I' TO: r_saknr-sign. | |
MOVE 'BT' TO: r_saknr-option. | |
r_saknr-low = i011z-vonkt. | |
r_saknr-high = i011z-bilkt. | |
APPEND r_saknr. | |
CLEAR: r_saknr. | |
ENDLOOP. | |
LOOP AT t_ska1 WHERE saknr IN r_saknr. | |
t_dados-saknr = t_ska1-saknr. | |
t_dados-txt45 = t_ska1-txt50. | |
t_dados-setnr = t_estrut-setnr. | |
t_dados-setvs = t_estrut-setvs. | |
t_dados-ergsl = t_estrut-ergsl. | |
t_dados-stufe = t_estrut-stufe. | |
t_dados-origem = 'C'. | |
APPEND t_dados. | |
ENDLOOP. | |
ELSE. | |
APPEND t_dados. | |
ENDIF. | |
CLEAR: t_dados. | |
ENDLOOP. | |
ENDFORM. " LOAD_ACCOUNTS | |
*&---------------------------------------------------------------------* | |
*& Form FORMAT_BALANCE | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM format_balance . | |
LOOP AT t_dados. | |
w_cont = STRLEN( t_dados-saknr ). | |
IF w_cont EQ 2. | |
t_dados-saknr_f = t_dados-saknr+1(1). | |
MOVE 'C111' TO t_dados-color_line. | |
MODIFY t_dados. | |
ELSEIF w_cont EQ 3. | |
CONCATENATE t_dados-saknr+1(1) | |
'.' t_dados-saknr+2(1) INTO t_dados-saknr_f. | |
* MOVE t_dados-saknr+1(1) TO t_dados-saknr_f. | |
MOVE 'C100' TO t_dados-color_line. | |
MODIFY t_dados. | |
ELSEIF w_cont EQ 5. | |
CONCATENATE t_dados-saknr+1(1) | |
'.' t_dados-saknr+2(1) | |
'.' t_dados-saknr+3(2) INTO t_dados-saknr_f. | |
* CONCATENATE t_dados-saknr+1(1) | |
* '.' t_dados-saknr+2(1) INTO t_dados-saknr_f. | |
MOVE 'C710' TO t_dados-color_line. | |
MODIFY t_dados. | |
ELSEIF w_cont EQ 7. | |
CONCATENATE t_dados-saknr+1(1) | |
'.' t_dados-saknr+2(1) | |
'.' t_dados-saknr+3(2) | |
'.' t_dados-saknr+5(2) | |
INTO t_dados-saknr_f. | |
* CONCATENATE t_dados-saknr+1(1) | |
* '.' t_dados-saknr+2(1) | |
* '.' t_dados-saknr+3(2) INTO t_dados-saknr_f. | |
MOVE 'C700' TO t_dados-color_line. | |
MODIFY t_dados. | |
ELSEIF w_cont EQ 10. | |
CONCATENATE t_dados-saknr+1(1) | |
'.' t_dados-saknr+2(1) | |
'.' t_dados-saknr+3(2) | |
'.' t_dados-saknr+5(2) | |
'.' t_dados-saknr+7(3) INTO t_dados-saknr_f. | |
MODIFY t_dados. | |
ENDIF. | |
ENDLOOP. | |
ENDFORM. " FORMAT_BALANCE | |
*&---------------------------------------------------------------------* | |
*& Form change_field_cat | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->$TFCAT text | |
* -->VALUE($FIELD) text | |
* -->VALUE($COLUMN) text | |
* -->VALUE($VALUE) text | |
*----------------------------------------------------------------------* | |
FORM change_field_cat USING $tfcat TYPE slis_t_fieldcat_alv | |
value($field) | |
value($column) | |
value($value). | |
FIELD-SYMBOLS: <fcat> LIKE LINE OF $tfcat, | |
<field> TYPE ANY. | |
READ TABLE $tfcat ASSIGNING <fcat> WITH KEY fieldname = $field. | |
CHECK sy-subrc IS INITIAL. | |
CHECK <fcat> IS ASSIGNED. | |
ASSIGN COMPONENT $column OF STRUCTURE <fcat> TO <field>. | |
CHECK <field> IS ASSIGNED. | |
<field> = $value. | |
ENDFORM. " CHANGE_FIELD_CAT | |
*&---------------------------------------------------------------------* | |
*& Form PROCESS_SUMUP | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->P_SY_INDEX text | |
*----------------------------------------------------------------------* | |
FORM process_sumup USING p_sy_index. | |
DATA: n_bukrs(2) TYPE n, | |
field_name(20) TYPE c, | |
total TYPE bapisaldo. | |
FIELD-SYMBOLS: | |
<dados> LIKE t_dados, | |
<bapicurr> TYPE bapisaldo. | |
LOOP AT t_dados ASSIGNING <dados>. | |
CHECK <dados>-origem <> 'C'. | |
n_bukrs = p_sy_index. | |
CONCATENATE 'BALANCE_' n_bukrs INTO field_name. | |
ASSIGN COMPONENT field_name OF STRUCTURE <dados> TO <bapicurr>. | |
CHECK <bapicurr> IS ASSIGNED. | |
PERFORM calc_sum USING <dados>-prkey p_sy_index total. | |
<bapicurr> = total. | |
ENDLOOP. | |
ENDFORM. "process_sumup | |
*&---------------------------------------------------------------------* | |
*& Form CALC_SUM | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* -->P_<DADOS>_PRKEY text | |
* -->P_P_SY_INDEX text | |
* -->P_TOTAL text | |
*----------------------------------------------------------------------* | |
FORM calc_sum USING p_prkey TYPE char20 | |
p_sy_index TYPE i | |
p_total TYPE bapisaldo. | |
DATA: n_bukrs(2) TYPE n, | |
field_name(20) TYPE c, | |
sub_total TYPE bapisaldo. | |
FIELD-SYMBOLS: <dados> LIKE t_dados, | |
<bapicurr> TYPE bapisaldo. | |
n_bukrs = p_sy_index. | |
CLEAR p_total. | |
LOOP AT t_dados ASSIGNING <dados> WHERE upkey = p_prkey . | |
* if <dados>-upkey = p_prkey. | |
* PERFORM calc_sum USING <dados>-prkey p_sy_index sub_total. | |
* p_total = p_total + sub_total. | |
* endif. | |
* CHECK <dados>-upkey = p_prkey. | |
IF <dados>-origem <> 'C'. | |
PERFORM calc_sum USING <dados>-prkey p_sy_index sub_total. | |
p_total = p_total + sub_total. | |
ENDIF. | |
CONCATENATE 'BALANCE_' n_bukrs INTO field_name. | |
ASSIGN COMPONENT field_name OF STRUCTURE <dados> TO <bapicurr>. | |
CHECK <bapicurr> IS ASSIGNED. | |
p_total = p_total + <bapicurr>. | |
ENDLOOP. | |
ENDFORM. " CALC_SUM | |
*&---------------------------------------------------------------------* | |
*& Form SUM_BUKRS | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM sum_bukrs . | |
DATA: field_name(20) TYPE c, | |
sub_total TYPE bapisaldo. | |
FIELD-SYMBOLS: | |
<dados> LIKE t_dados, | |
<bapicurr> TYPE bapisaldo. | |
LOOP AT t_dados ASSIGNING <dados>. | |
ADD <dados>-balance_01 FROM 1 TO n_bukrs GIVING <dados>-total. | |
ENDLOOP. | |
ENDFORM. " SUM_BUKRS | |
*&---------------------------------------------------------------------* | |
*& Form CLEAR_ITEMS | |
*&---------------------------------------------------------------------* | |
* text | |
*----------------------------------------------------------------------* | |
* --> p1 text | |
* <-- p2 text | |
*----------------------------------------------------------------------* | |
FORM clear_items . | |
DATA: dados LIKE t_dados, | |
max_stufe TYPE i VALUE 4, | |
v_stufe TYPE i. | |
DO max_stufe TIMES. | |
v_stufe = max_stufe + 1 - sy-index. | |
LOOP AT t_dados INTO dados WHERE origem <> 'C' AND stufe = v_stufe. | |
READ TABLE t_dados WITH KEY upkey = dados-prkey | |
TRANSPORTING NO FIELDS. | |
IF sy-subrc IS NOT INITIAL. | |
DELETE t_dados WHERE prkey = dados-prkey. | |
ENDIF. | |
ENDLOOP. | |
ENDDO. | |
ENDFORM. " CLEAR_ITEMS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment