Difference between revisions of "SAP ABAP REPORT"
From SapWiki
| (7 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
==[[SAP_ABAP_VARIOS#Obtener_vía_F4_archivo_y_directorio_en_un_reporte|Obtener vía F4 archivo y directorio en un reporte]]== | ==[[SAP_ABAP_VARIOS#Obtener_vía_F4_archivo_y_directorio_en_un_reporte|Obtener vía F4 archivo y directorio en un reporte]]== | ||
==[[SAP_ABAP_VARIOS#En_reporte|F4 en reporte]]== | ==[[SAP_ABAP_VARIOS#En_reporte|F4 en reporte]]== | ||
| − | + | ==Forzar enter== | |
| + | <nowiki> | ||
| + | CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE' | ||
| + | EXPORTING | ||
| + | functioncode = '/00' | ||
| + | EXCEPTIONS | ||
| + | function_not_supported = 1 | ||
| + | OTHERS = 2.</nowiki> | ||
==Selection Screens== | ==Selection Screens== | ||
===[[SAP_ABAP_VARIOS#Agregar_botones_en_la_pantalla_de_selección_de_un_Reporte|Agregar botones en la pantalla de selección de un Reporte]]=== | ===[[SAP_ABAP_VARIOS#Agregar_botones_en_la_pantalla_de_selección_de_un_Reporte|Agregar botones en la pantalla de selección de un Reporte]]=== | ||
| Line 34: | Line 41: | ||
p_exclude = itab. | p_exclude = itab. | ||
</nowiki> | </nowiki> | ||
| + | ===Selection Screens, Display Properties for Parameters=== | ||
| + | <nowiki> | ||
| + | PARAMETERS: p_rep AS CHECKBOX. | ||
| + | |||
| + | SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE TEXT-006. | ||
| + | PARAMETERS: test1(10) TYPE c MODIF ID sc1, | ||
| + | test2(10) TYPE c MODIF ID sc1, | ||
| + | test3(10) TYPE c MODIF ID sc1, | ||
| + | test4(10) TYPE c MODIF ID sc1. | ||
| + | SELECTION-SCREEN END OF BLOCK part6. | ||
| + | AT SELECTION-SCREEN OUTPUT. | ||
| + | LOOP AT SCREEN INTO DATA(screen_wa). | ||
| + | IF p_rep <> 'X' AND | ||
| + | screen_wa-group1 = 'SC1'. | ||
| + | screen_wa-active = '0'. | ||
| + | MODIFY SCREEN FROM screen_wa. | ||
| + | ENDIF. | ||
| + | IF p_rep = 'X' AND | ||
| + | screen_wa-group1 = 'SC1'. | ||
| + | screen_wa-active = '1'. | ||
| + | MODIFY SCREEN FROM screen_wa. | ||
| + | ENDIF. | ||
| + | ENDLOOP. | ||
| + | </nowiki> | ||
===Datos de selección (select-options, parameters) en dynpro=== | ===Datos de selección (select-options, parameters) en dynpro=== | ||
<nowiki>REPORT ydemo_sel. | <nowiki>REPORT ydemo_sel. | ||
| Line 84: | Line 115: | ||
===Restricciones en select-options=== | ===Restricciones en select-options=== | ||
| − | Ejemplo de select-options que solo permite valores individuales | + | ====Ejemplo de select-options que solo permite valores individuales==== |
<nowiki>REPORT ydemo_sel2. | <nowiki>REPORT ydemo_sel2. | ||
| Line 109: | Line 140: | ||
'I' TO sscr_ass-sg_main, | 'I' TO sscr_ass-sg_main, | ||
' ' TO sscr_ass-sg_addy, | ' ' TO sscr_ass-sg_addy, | ||
| + | 'EQ' TO sscr_ass-op_main, | ||
| + | 'EQ' TO sscr_ass-op_addy. | ||
| + | |||
| + | APPEND sscr_ass TO restrict-ass_tab. | ||
| + | |||
| + | CALL FUNCTION 'SELECT_OPTIONS_RESTRICT' | ||
| + | EXPORTING | ||
| + | restriction = restrict.</nowiki> | ||
| + | |||
| + | ====Ejemplo para que solo permita un valor, equivalente a parameters==== | ||
| + | <nowiki> | ||
| + | *--------------------------------------------------------------------* | ||
| + | INITIALIZATION. | ||
| + | *--------------------------------------------------------------------* | ||
| + | |||
| + | DATA: restrict TYPE sscr_restrict, | ||
| + | opt_list TYPE sscr_opt_list_tab WITH HEADER LINE, | ||
| + | sscr_ass TYPE sscr_ass_tab WITH HEADER LINE. | ||
| + | |||
| + | data: ls_opt TYPE sscr_opt_list, | ||
| + | ls_ass TYPE sscr_ass. | ||
| + | |||
| + | " 1. Define the allowed option list (Only EQ allowed) | ||
| + | ls_opt-name = 'EQ'. | ||
| + | ls_opt-options-eq = abap_true. | ||
| + | APPEND ls_opt TO restrict-opt_list_tab. | ||
| + | |||
| + | * restrict selection option for function to single value | ||
| + | CLEAR opt_list. | ||
| + | MOVE 'EQ' TO opt_list-name. | ||
| + | MOVE 'X' TO opt_list-options-eq. | ||
| + | APPEND opt_list TO restrict-opt_list_tab. | ||
| + | |||
| + | CLEAR sscr_ass. | ||
| + | MOVE: 'S' TO sscr_ass-kind, | ||
| + | 'MOLGA' TO sscr_ass-name, | ||
| + | 'I' TO sscr_ass-sg_main, | ||
| + | 'N' TO sscr_ass-sg_addy, "N suppresses the multiple selection button | ||
'EQ' TO sscr_ass-op_main, | 'EQ' TO sscr_ass-op_main, | ||
'EQ' TO sscr_ass-op_addy. | 'EQ' TO sscr_ass-op_addy. | ||
| Line 155: | Line 224: | ||
Ver demo DEMO_PROGRAM_SUBMIT_SEL_SCREEN | Ver demo DEMO_PROGRAM_SUBMIT_SEL_SCREEN | ||
| + | ===EXPORTING LIST TO MEMORY AND RETURN=== | ||
| + | <nowiki> | ||
| + | FUNCTION z_fi_rfitemar. | ||
| + | *"---------------------------------------------------------------------- | ||
| + | *"*"Interfase local | ||
| + | *" IMPORTING | ||
| + | *" VALUE(I_KUNNR) TYPE KNA1-KUNNR | ||
| + | *" EXPORTING | ||
| + | *" VALUE(E_TOTAL) TYPE /PRA/TOTAL_AMT_OWED | ||
| + | *"---------------------------------------------------------------------- | ||
| + | |||
| + | DATA: it_kunnr_sel TYPE fiappt_t_kunnr, | ||
| + | ls_kunnr_sel TYPE LINE OF fiappt_t_kunnr. | ||
| + | |||
| + | DATA: lt_bukrs_range TYPE RANGE OF bukrs, | ||
| + | ls_bukrs_range LIKE LINE OF lt_bukrs_range. | ||
| + | |||
| + | DATA l_total TYPE /pra/total_amt_owed. | ||
| + | data l_sign type i VALUE 1. | ||
| + | |||
| + | ls_kunnr_sel-low = i_kunnr. | ||
| + | ls_kunnr_sel-sign = 'I'. | ||
| + | ls_kunnr_sel-option = 'EQ'. | ||
| + | APPEND ls_kunnr_sel TO it_kunnr_sel. | ||
| + | |||
| + | SUBMIT rfitemar | ||
| + | WITH dd_kunnr IN it_kunnr_sel[] | ||
| + | WITH dd_bukrs IN lt_bukrs_range[] | ||
| + | WITH x_aisel EQ 'X' | ||
| + | * WITH pa_stida EQ ls_fiapptd_balance-reference_date | ||
| + | WITH x_norm EQ 'X' | ||
| + | WITH x_shbv EQ 'X' | ||
| + | WITH pa_vari EQ '/COTE' | ||
| + | EXPORTING LIST TO MEMORY AND RETURN. | ||
| + | |||
| + | * Tipo | ||
| + | TYPES : BEGIN OF ltyp_lista_asci, | ||
| + | texto(500) TYPE c, | ||
| + | END OF ltyp_lista_asci. | ||
| + | |||
| + | DATA lt_lista_mem TYPE TABLE OF abaplist. | ||
| + | DATA lt_lista_asci TYPE TABLE OF ltyp_lista_asci. | ||
| + | DATA ls_lista_asci TYPE ltyp_lista_asci. | ||
| + | |||
| + | CALL FUNCTION 'LIST_FROM_MEMORY' | ||
| + | TABLES | ||
| + | listobject = lt_lista_mem | ||
| + | EXCEPTIONS | ||
| + | not_found = 1 | ||
| + | OTHERS = 2. | ||
| + | |||
| + | CALL FUNCTION 'LIST_TO_ASCI' | ||
| + | EXPORTING | ||
| + | with_line_break = 'X' | ||
| + | TABLES | ||
| + | listasci = lt_lista_asci | ||
| + | listobject = lt_lista_mem | ||
| + | EXCEPTIONS | ||
| + | empty_list = 1 | ||
| + | list_index_invalid = 2 | ||
| + | OTHERS = 3. | ||
| + | |||
| + | DATA(l_lines) = lines( lt_lista_asci ). | ||
| + | |||
| + | IF l_lines > 2. | ||
| + | l_lines = l_lines - 1. | ||
| + | ls_lista_asci = lt_lista_asci[ l_lines ]. | ||
| + | IF ls_lista_asci CS '**'. "leer total importe en moneda local | ||
| + | *"leer total importe en moneda local, ejemplo línea: | ||
| + | *| ** | | | | | | |1107538|CLP | | | | | ||
| + | * verificar si es negativo | ||
| + | if ls_lista_asci ca '-'. | ||
| + | l_sign = l_sign * -1. | ||
| + | endif. | ||
| + | |||
| + | REPLACE ALL OCCURRENCES OF REGEX '[^\d]' IN ls_lista_asci WITH ''. | ||
| + | CONDENSE ls_lista_asci. | ||
| + | MOVE ls_lista_asci TO e_total. | ||
| + | e_total = e_total * l_sign. | ||
| + | ENDIF. | ||
| + | |||
| + | ENDIF. | ||
| + | |||
| + | ENDFUNCTION. | ||
| + | </nowiki> | ||
| + | |||
| + | ===WITH FREE SELECTIONS=== | ||
| + | <nowiki> | ||
| + | DATA: trange TYPE rsds_trange, | ||
| + | trange_line | ||
| + | LIKE LINE OF trange, | ||
| + | trange_frange_t_line | ||
| + | LIKE LINE OF trange_line-frange_t, | ||
| + | trange_frange_t_selopt_t_line | ||
| + | LIKE LINE OF trange_frange_t_line-selopt_t, | ||
| + | texpr TYPE rsds_texpr. | ||
| + | |||
| + | DATA: it_kunnr_sel TYPE fiappt_t_kunnr, | ||
| + | ls_kunnr_sel TYPE LINE OF fiappt_t_kunnr. | ||
| + | |||
| + | DATA: lt_bukrs_range TYPE RANGE OF bukrs, | ||
| + | ls_bukrs_range LIKE LINE OF lt_bukrs_range. | ||
| + | |||
| + | DATA l_total TYPE /pra/total_amt_owed. | ||
| + | DATA l_sign TYPE i VALUE 1. | ||
| + | DATA ra_blart TYPE fkk_rt_blart. | ||
| + | |||
| + | trange_line-tablename = 'BSID'. | ||
| + | trange_frange_t_line-fieldname = 'BLART'. | ||
| + | trange_frange_t_selopt_t_line-sign = 'I'. | ||
| + | trange_frange_t_selopt_t_line-option = 'EQ'. | ||
| + | trange_frange_t_selopt_t_line-low = 'X7'. | ||
| + | APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t. | ||
| + | |||
| + | trange_frange_t_selopt_t_line-sign = 'I'. | ||
| + | trange_frange_t_selopt_t_line-option = 'EQ'. | ||
| + | trange_frange_t_selopt_t_line-low = 'Y2'. | ||
| + | APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t. | ||
| + | |||
| + | trange_frange_t_selopt_t_line-sign = 'I'. | ||
| + | trange_frange_t_selopt_t_line-option = 'EQ'. | ||
| + | trange_frange_t_selopt_t_line-low = 'Y3'. | ||
| + | APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t. | ||
| + | |||
| + | trange_frange_t_selopt_t_line-sign = 'I'. | ||
| + | trange_frange_t_selopt_t_line-option = 'EQ'. | ||
| + | trange_frange_t_selopt_t_line-low = 'Z2'. | ||
| + | APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t. | ||
| + | |||
| + | trange_frange_t_selopt_t_line-sign = 'I'. | ||
| + | trange_frange_t_selopt_t_line-option = 'EQ'. | ||
| + | trange_frange_t_selopt_t_line-low = 'Z3'. | ||
| + | APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t. | ||
| + | |||
| + | APPEND trange_frange_t_line TO trange_line-frange_t. | ||
| + | APPEND trange_line TO trange. | ||
| + | |||
| + | CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX' | ||
| + | EXPORTING | ||
| + | field_ranges = trange | ||
| + | IMPORTING | ||
| + | expressions = texpr. | ||
| + | |||
| + | ls_kunnr_sel-low = i_kunnr. | ||
| + | ls_kunnr_sel-sign = 'I'. | ||
| + | ls_kunnr_sel-option = 'EQ'. | ||
| + | APPEND ls_kunnr_sel TO it_kunnr_sel. | ||
| + | |||
| + | SUBMIT rfitemar | ||
| + | WITH dd_kunnr IN it_kunnr_sel[] | ||
| + | WITH dd_bukrs IN lt_bukrs_range[] | ||
| + | WITH x_aisel EQ 'X' | ||
| + | * WITH pa_stida EQ ls_fiapptd_balance-reference_date | ||
| + | WITH x_norm EQ 'X' | ||
| + | WITH x_shbv EQ 'X' | ||
| + | WITH pa_vari EQ space | ||
| + | WITH FREE SELECTIONS texpr | ||
| + | EXPORTING LIST TO MEMORY AND RETURN. | ||
| + | </nowiki> | ||
==DYNPRO== | ==DYNPRO== | ||
Latest revision as of 14:30, 4 June 2026
Contents
- 1 Obtener vía F4 archivo y directorio en un reporte
- 2 F4 en reporte
- 3 Forzar enter
- 4 Selection Screens
- 4.1 Agregar botones en la pantalla de selección de un Reporte
- 4.2 Default Values for Selection Criteria
- 4.3 Selection Screens, Changing the Default GUI Status
- 4.4 Selection Screens, Display Properties for Parameters
- 4.5 Datos de selección (select-options, parameters) en dynpro
- 4.6 Restricciones en select-options
- 5 SUBMIT
- 6 DYNPRO
Obtener vía F4 archivo y directorio en un reporte
F4 en reporte
Forzar enter
CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
EXPORTING
functioncode = '/00'
EXCEPTIONS
function_not_supported = 1
OTHERS = 2.
Selection Screens
Agregar botones en la pantalla de selección de un Reporte
Default Values for Selection Criteria
REPORT demo_sel_screen_select_default.
DATA wa_spfli TYPE spfli.
SELECT-OPTIONS airline FOR wa_spfli-carrid
DEFAULT 'AA'
TO 'LH'
OPTION nb "not between
SIGN i. "I
Selection Screens, Changing the Default GUI Status
REPORT demo_sel_screen_status .
DATA itab TYPE TABLE OF sy-ucomm.
PARAMETERS test(10) TYPE c.
AT SELECTION-SCREEN OUTPUT.
itab = VALUE #( ( CONV sy-ucomm( 'PRIN' ) )
( CONV sy-ucomm( 'SPOS' ) ) ).
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = itab.
Selection Screens, Display Properties for Parameters
PARAMETERS: p_rep AS CHECKBOX.
SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE TEXT-006.
PARAMETERS: test1(10) TYPE c MODIF ID sc1,
test2(10) TYPE c MODIF ID sc1,
test3(10) TYPE c MODIF ID sc1,
test4(10) TYPE c MODIF ID sc1.
SELECTION-SCREEN END OF BLOCK part6.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN INTO DATA(screen_wa).
IF p_rep <> 'X' AND
screen_wa-group1 = 'SC1'.
screen_wa-active = '0'.
MODIFY SCREEN FROM screen_wa.
ENDIF.
IF p_rep = 'X' AND
screen_wa-group1 = 'SC1'.
screen_wa-active = '1'.
MODIFY SCREEN FROM screen_wa.
ENDIF.
ENDLOOP.
Datos de selección (select-options, parameters) en dynpro
REPORT ydemo_sel.
DATA wa_pa0002 TYPE pa0002.
SELECTION-SCREEN BEGIN OF SCREEN 100.
PARAMETERS p_pernr TYPE p0001-pernr.
SELECT-OPTIONS s_vorna FOR wa_pa0002-vorna.
SELECTION-SCREEN END OF SCREEN 100.
AT SELECTION-SCREEN OUTPUT.
SET PARAMETER ID 'RID' FIELD 'TEST_PROGRAM'.
CLASS start DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS.
CLASS start IMPLEMENTATION.
METHOD main.
CALL SELECTION-SCREEN 100. " STARTING AT 10 10.
IF sy-subrc <> 0.
RETURN.
ENDIF.
SELECT pernr INTO TABLE @DATA(lt_pernr) FROM pa0001 UP TO 100 ROWS
WHERE pernr = @p_pernr .
SELECT * INTO TABLE @DATA(lt_pernr2) FROM pa0002 UP TO 100 ROWS
WHERE vorna IN @s_vorna .
TRY.
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(gr_table)
CHANGING t_table = lt_pernr2 ).
CATCH cx_salv_msg.
ENDTRY.
*... Enable Generic ALV functions
DATA(gr_functions) = gr_table->get_functions( ).
gr_functions->set_all( ).
*... Display table
gr_table->display( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
start=>main( ).
Restricciones en select-options
Ejemplo de select-options que solo permite valores individuales
REPORT ydemo_sel2.
DATA p0014 TYPE p0014.
SELECT-OPTIONS s_lgart FOR p0014-lgart NO INTERVALS.
*--------------------------------------------------------------------*
INITIALIZATION.
*--------------------------------------------------------------------*
DATA: restrict TYPE sscr_restrict,
opt_list TYPE sscr_opt_list_tab WITH HEADER LINE,
sscr_ass TYPE sscr_ass_tab WITH HEADER LINE.
* restrict selection option for function to single value
CLEAR opt_list.
MOVE 'EQ' TO opt_list-name.
MOVE 'X' TO opt_list-options-eq.
APPEND opt_list TO restrict-opt_list_tab.
CLEAR sscr_ass.
MOVE: 'S' TO sscr_ass-kind,
'S_LGART' TO sscr_ass-name,
'I' TO sscr_ass-sg_main,
' ' TO sscr_ass-sg_addy,
'EQ' TO sscr_ass-op_main,
'EQ' TO sscr_ass-op_addy.
APPEND sscr_ass TO restrict-ass_tab.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict.
Ejemplo para que solo permita un valor, equivalente a parameters
*--------------------------------------------------------------------*
INITIALIZATION.
*--------------------------------------------------------------------*
DATA: restrict TYPE sscr_restrict,
opt_list TYPE sscr_opt_list_tab WITH HEADER LINE,
sscr_ass TYPE sscr_ass_tab WITH HEADER LINE.
data: ls_opt TYPE sscr_opt_list,
ls_ass TYPE sscr_ass.
" 1. Define the allowed option list (Only EQ allowed)
ls_opt-name = 'EQ'.
ls_opt-options-eq = abap_true.
APPEND ls_opt TO restrict-opt_list_tab.
* restrict selection option for function to single value
CLEAR opt_list.
MOVE 'EQ' TO opt_list-name.
MOVE 'X' TO opt_list-options-eq.
APPEND opt_list TO restrict-opt_list_tab.
CLEAR sscr_ass.
MOVE: 'S' TO sscr_ass-kind,
'MOLGA' TO sscr_ass-name,
'I' TO sscr_ass-sg_main,
'N' TO sscr_ass-sg_addy, "N suppresses the multiple selection button
'EQ' TO sscr_ass-op_main,
'EQ' TO sscr_ass-op_addy.
APPEND sscr_ass TO restrict-ass_tab.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict.
SUBMIT
FORM submit_program USING p_index.
DATA: rspar_tab TYPE TABLE OF rsparams,
rspar_line LIKE LINE OF rspar_tab.
READ TABLE gt_data INTO wa_data INDEX p_index.
IF sy-subrc = 0.
rspar_line-selname = 'PNPPERNR'.
rspar_line-kind = 'S'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = wa_data-pernr.
APPEND rspar_line TO rspar_tab.
ENDIF.
rspar_line-selname = 'PNPBEGDA'.
rspar_line-kind = 'S'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = '18000101'.
APPEND rspar_line TO rspar_tab.
rspar_line-selname = 'PNPENDDA'.
rspar_line-kind = 'S'.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
rspar_line-low = sy-datum.
APPEND rspar_line TO rspar_tab.
SUBMIT zhcmrp_programa_det "VIA SELECTION-SCREEN
WITH SELECTION-TABLE rspar_tab
WITH p_de EQ 'X' "rep. detallado
AND RETURN.
ENDFORM. "submit_prestamos
Ver demo DEMO_PROGRAM_SUBMIT_SEL_SCREEN
EXPORTING LIST TO MEMORY AND RETURN
FUNCTION z_fi_rfitemar.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_KUNNR) TYPE KNA1-KUNNR
*" EXPORTING
*" VALUE(E_TOTAL) TYPE /PRA/TOTAL_AMT_OWED
*"----------------------------------------------------------------------
DATA: it_kunnr_sel TYPE fiappt_t_kunnr,
ls_kunnr_sel TYPE LINE OF fiappt_t_kunnr.
DATA: lt_bukrs_range TYPE RANGE OF bukrs,
ls_bukrs_range LIKE LINE OF lt_bukrs_range.
DATA l_total TYPE /pra/total_amt_owed.
data l_sign type i VALUE 1.
ls_kunnr_sel-low = i_kunnr.
ls_kunnr_sel-sign = 'I'.
ls_kunnr_sel-option = 'EQ'.
APPEND ls_kunnr_sel TO it_kunnr_sel.
SUBMIT rfitemar
WITH dd_kunnr IN it_kunnr_sel[]
WITH dd_bukrs IN lt_bukrs_range[]
WITH x_aisel EQ 'X'
* WITH pa_stida EQ ls_fiapptd_balance-reference_date
WITH x_norm EQ 'X'
WITH x_shbv EQ 'X'
WITH pa_vari EQ '/COTE'
EXPORTING LIST TO MEMORY AND RETURN.
* Tipo
TYPES : BEGIN OF ltyp_lista_asci,
texto(500) TYPE c,
END OF ltyp_lista_asci.
DATA lt_lista_mem TYPE TABLE OF abaplist.
DATA lt_lista_asci TYPE TABLE OF ltyp_lista_asci.
DATA ls_lista_asci TYPE ltyp_lista_asci.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = lt_lista_mem
EXCEPTIONS
not_found = 1
OTHERS = 2.
CALL FUNCTION 'LIST_TO_ASCI'
EXPORTING
with_line_break = 'X'
TABLES
listasci = lt_lista_asci
listobject = lt_lista_mem
EXCEPTIONS
empty_list = 1
list_index_invalid = 2
OTHERS = 3.
DATA(l_lines) = lines( lt_lista_asci ).
IF l_lines > 2.
l_lines = l_lines - 1.
ls_lista_asci = lt_lista_asci[ l_lines ].
IF ls_lista_asci CS '**'. "leer total importe en moneda local
*"leer total importe en moneda local, ejemplo línea:
*| ** | | | | | | |1107538|CLP | | | |
* verificar si es negativo
if ls_lista_asci ca '-'.
l_sign = l_sign * -1.
endif.
REPLACE ALL OCCURRENCES OF REGEX '[^\d]' IN ls_lista_asci WITH ''.
CONDENSE ls_lista_asci.
MOVE ls_lista_asci TO e_total.
e_total = e_total * l_sign.
ENDIF.
ENDIF.
ENDFUNCTION.
WITH FREE SELECTIONS
DATA: trange TYPE rsds_trange,
trange_line
LIKE LINE OF trange,
trange_frange_t_line
LIKE LINE OF trange_line-frange_t,
trange_frange_t_selopt_t_line
LIKE LINE OF trange_frange_t_line-selopt_t,
texpr TYPE rsds_texpr.
DATA: it_kunnr_sel TYPE fiappt_t_kunnr,
ls_kunnr_sel TYPE LINE OF fiappt_t_kunnr.
DATA: lt_bukrs_range TYPE RANGE OF bukrs,
ls_bukrs_range LIKE LINE OF lt_bukrs_range.
DATA l_total TYPE /pra/total_amt_owed.
DATA l_sign TYPE i VALUE 1.
DATA ra_blart TYPE fkk_rt_blart.
trange_line-tablename = 'BSID'.
trange_frange_t_line-fieldname = 'BLART'.
trange_frange_t_selopt_t_line-sign = 'I'.
trange_frange_t_selopt_t_line-option = 'EQ'.
trange_frange_t_selopt_t_line-low = 'X7'.
APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t.
trange_frange_t_selopt_t_line-sign = 'I'.
trange_frange_t_selopt_t_line-option = 'EQ'.
trange_frange_t_selopt_t_line-low = 'Y2'.
APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t.
trange_frange_t_selopt_t_line-sign = 'I'.
trange_frange_t_selopt_t_line-option = 'EQ'.
trange_frange_t_selopt_t_line-low = 'Y3'.
APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t.
trange_frange_t_selopt_t_line-sign = 'I'.
trange_frange_t_selopt_t_line-option = 'EQ'.
trange_frange_t_selopt_t_line-low = 'Z2'.
APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t.
trange_frange_t_selopt_t_line-sign = 'I'.
trange_frange_t_selopt_t_line-option = 'EQ'.
trange_frange_t_selopt_t_line-low = 'Z3'.
APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-selopt_t.
APPEND trange_frange_t_line TO trange_line-frange_t.
APPEND trange_line TO trange.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
EXPORTING
field_ranges = trange
IMPORTING
expressions = texpr.
ls_kunnr_sel-low = i_kunnr.
ls_kunnr_sel-sign = 'I'.
ls_kunnr_sel-option = 'EQ'.
APPEND ls_kunnr_sel TO it_kunnr_sel.
SUBMIT rfitemar
WITH dd_kunnr IN it_kunnr_sel[]
WITH dd_bukrs IN lt_bukrs_range[]
WITH x_aisel EQ 'X'
* WITH pa_stida EQ ls_fiapptd_balance-reference_date
WITH x_norm EQ 'X'
WITH x_shbv EQ 'X'
WITH pa_vari EQ space
WITH FREE SELECTIONS texpr
EXPORTING LIST TO MEMORY AND RETURN.
DYNPRO
Ver programas demos DEMO_DYNPRO*
Crear texto y Icono dinamico para pushbutton
crear variable en declaracion
data pb_sa(128).
crear pushbutton en dynpro llamado PB_SA y marcar "Campo de salida" y "Con Icono"
en PBO de dynpro
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = ICON_SYSTEM_SAVE
TEXT = 'F5 Save'
* INFO = ' '
* ADD_STDINF = 'X'
IMPORTING
RESULT = pb_sa
EXCEPTIONS
ICON_NOT_FOUND = 1
OUTPUTFIELD_TOO_SHORT = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
ENDIF.
ejemplo: ver programa DEMO_DYNPRO_STATUS_ICONS
F4 en Dynpro
Custom matchcode y Obtener valor de campo en pantalla
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr.
data: BEGIN OF gs_werks,
werks like t001w-werks,
name1 like t001w-name1,
END OF gs_werks.
data gt_werks like TABLE OF gs_werks.
PROCESS AFTER INPUT.
MODULE FUNcTION_exit AT EXIT-COMMAND.
field likp-vbeln module select_entrega.
field lips-werks module select_centro.
field zsd_plan_tra-tplst module select_centro_despacho.
MODULE USER_COMMAND_0010.
PROCESS ON VALUE-REQUEST.
field lips-werks module value_werks_by_bukrs.
MODULE VALUE_werks_BY_bukrs INPUT.
data L_FIELDS type table of DYNPREAD with header line.
data ld_vbeln(10) type n.
progname = sy-repid.
dynnum = sy-dynnr.
L_FIELDS-FIELDNAME = 'LIKP-VBELN'.
append L_FIELDS.
call function 'DYNP_VALUES_READ'
exporting
DYNAME = progname
DYNUMB = dynnum
tables
DYNPFIELDS = L_FIELDS.
loop at L_FIELDS.
case L_FIELDS-FIELDNAME.
when 'LIKP-VBELN'.
ld_vbeln = L_FIELDS-FIELDVALUE.
endcase.
endloop.
SELECT SINGLE werks
INTO gd_werks
FROM lips
WHERE vbeln = ld_vbeln.
SELECT single *
FROM t001k
WHERE bwkey = gd_werks.
PERFORM GET_werks_by_bukrs using t001k-bukrs.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'WERKS'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'LIPS_WERKS'
value_org = 'S'
TABLES
value_tab = gt_werks.
ENDMODULE. " VALUE_BUKRS_BY_ORG INPUT
FORM GET_werks_BY_bukrs USING i_bukrs.
clear gt_werks[].
select j~werks
j~name1
into CORRESPONDING FIELDS OF TABLE gt_werks
from t001k as i inner join t001w as j
on i~bwkey = j~werks
where i~bukrs = i_bukrs.
if gt_werks[] is INITIAL.
select j~werks
j~name1
into CORRESPONDING FIELDS OF TABLE gt_werks
from t001k as i inner join t001w as j
on i~bwkey = j~werks.
endif.
sort gt_werks by werks.
ENDFORM. " GET_BUKRS_BY_ORG