*---------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION *
*---------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_after_refresh FOR EVENT after_refresh OF cl_gui_alv_grid
IMPORTING sender,
on_user_command FOR EVENT added_function OF cl_salv_events_table
IMPORTING e_salv_function.
ENDCLASS.
*---------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION *
*---------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_after_refresh.
DATA: ls_layout TYPE lvc_s_layo,
lt_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS: LIKE LINE OF lt_fcat.
TRY.
SET HANDLER on_after_refresh FOR ALL INSTANCES ACTIVATION space.
sender->get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = lt_fcat ).
sender->register_edit_event( i_event_id = cl_gui_alv_grid=>mc_evt_modified ).
LOOP AT lt_fcat ASSIGNING .
IF -fieldname EQ 'ZINCSTOCKPREC'
OR -fieldname EQ 'ZINCSTOCKSUCC'.
-edit = abap_true.
ENDIF.
ENDLOOP.
sender->set_frontend_fieldcatalog( lt_fcat ).
* ls_layout-edit = abap_true. "Edit ALL
* sender->set_frontend_layout( ls_layout ).
sender->set_ready_for_input( 1 ).
CATCH cx_salv_error.
ENDTRY.
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* FORM OUTPUT_ALV *
*----------------------------------------------------------------------*
FORM output_alv.
DATA: lo_content TYPE REF TO cl_salv_form_element.
TRY.
CASE 'X'.
WHEN rb_issr.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gt_terri[] ).
ENDCASE.
CATCH cx_salv_msg.
ENDTRY.
IF go_alv IS BOUND.
CREATE OBJECT go_events.
CASE 'X'.
WHEN rb_cdc OR rb_issr.
go_alv->set_screen_status(
pfstatus = 'STANDARD_STOCK'
report = sy-cprog
set_functions = go_alv->c_functions_all ).
IF rb_cdc = 'X'.
PERFORM set_settings.
ELSE.
PERFORM build_header CHANGING lo_content.
go_alv->set_top_of_list( lo_content ).
SET HANDLER go_events->on_after_refresh FOR ALL INSTANCES ACTIVATION 'X'.
ENDIF.
ENDCASE.
SET HANDLER go_events->on_user_command FOR go_alv->get_event( ).
go_alv->get_columns( )->set_optimize( 'X' ).
go_alv->display( ).
ENDIF.
ENDFORM.
mercoledì 1 settembre 2021
SALV table editabile
Pubblicato da
F/\B!O
alle
17:43
Commenta per primo!
Etichette: ABAP
sabato 21 agosto 2021
Sostituzione del testo in linea
IF ( gs_manual_xls-bsart IN gr_jomtr OR
gs_manual_xls-bsart IN gr_jomtt OR
gs_manual_xls-bsart IN gr_jomtp ) AND
gs_manual_xls-zprodunit IS NOT INITIAL AND
strlen( gs_manual_xls-zprodunit ) < 8.
gv_status = gs_outputadv-zstatus = gc_ko.
gv_message =
gs_outputadv-zmessage = replace( val = TEXT-e42
sub = '&'
with = |{ gs_outputadv-zgenericarticle }_{ gs_outputadv-zzcolor }_{ gs_outputadv-zzsize }|
occ = 1 ).
ELSE.
gs_outputadv-zprodunit = gs_manual_xls-zprodunit.
gs_outputadv-zmessage = gv_message.
ENDIF.
Pubblicato da
F/\B!O
alle
17:39
Commenta per primo!
Etichette: ABAP
mercoledì 11 agosto 2021
Popup per ottenere valori
METHOD on_user_command.
DATA: lv_retc TYPE c,
lt_fields TYPE TABLE OF sval,
ls_rows TYPE lvc_s_row,
lt_rows TYPE lvc_t_row,
lv_answer TYPE char1,
lt_royriutil TYPE TABLE OF ztsdo_royriutil,
ls_royriutil TYPE ztsdo_royriutil,
ls_h TYPE ztsdo_condcontrh,
ls_d TYPE ztsdo_condcontrd.
CASE e_salv_function.
WHEN 'NEW'.
IF rb_cdc = 'X'.
CLEAR gs_condiz.
CALL SCREEN 100 STARTING AT 5 5 ENDING AT 80 20.
ELSE.
APPEND VALUE #( tabname = 'TVKBT'
fieldname = 'VKBUR'
fieldtext = 'Territory'
) TO lt_fields.
APPEND VALUE #( tabname = 'ZTSDO_ROYRIUTIL'
fieldname = 'ZINCSTOCKPREC'
) TO lt_fields.
APPEND VALUE #( tabname = 'ZTSDO_ROYRIUTIL'
fieldname = 'ZINCSTOCKSUCC'
) TO lt_fields.
CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
popup_title = 'Nuova riga'
IMPORTING
returncode = lv_retc
TABLES
fields = lt_fields
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno.
ENDIF.
CHECK lv_retc <> 'A'.
gs_terri-zvkbur = lt_fields[ 1 ]-value.
SELECT SINGLE bezei
FROM tvkbt
INTO gs_terri-bezei
WHERE spras = sy-langu
AND vkbur = gs_terri-zvkbur.
IF sy-subrc <> 0.
MESSAGE |Non valido: Territory { gs_terri-zvkbur }| TYPE 'I'.
EXIT.
ELSE.
gs_terri-zincstockprec = lt_fields[ 2 ]-value.
gs_terri-zincstocksucc = lt_fields[ 3 ]-value.
APPEND gs_terri TO gt_terri.
go_alv->refresh( ).
ENDIF.
ENDIF.
WHEN 'ANNU'.
[...]
WHEN 'SAVE'.
[...]
WHEN 'CONF'.
[...]
ENDCASE.
ENDMETHOD.
Pubblicato da
F/\B!O
alle
17:33
Commenta per primo!
Etichette: ABAP
domenica 1 agosto 2021
Esempio di UNION DISTINCT
DATA: lr_zauth TYPE RANGE OF zesd_auth.
SELECT DISTINCT 'I', 'EQ', z_auth
FROM ztsdo_ret_cancel
UNION DISTINCT
SELECT 'I', 'EQ', z_auth
FROM ztsdo_ret_rej
INTO TABLE @lr_zauth.
IF lr_zauth[] IS NOT INITIAL.
DELETE gi_gr_items WHERE zsd_auth IN lr_zauth.
ENDIF.
Pubblicato da
F/\B!O
alle
17:31
Commenta per primo!
Etichette: ABAP
giovedì 1 luglio 2021
Help F4 su tabella ALV
*----------------------------------------------------------------------*
* DECLARATIONS *
*----------------------------------------------------------------------*
TABLES: fsh_seasons, kna1, vbak, ztsdo_pr_ven_web.
TYPES: BEGIN OF ty_out,
chkbx TYPE c,
kunnr TYPE ztsdo_pr_ven_web-kunnr,
name1 TYPE kna1-name1,
zreserve_no TYPE ztsdo_pr_ven_web-zreserve_no,
vbeln TYPE ztsdo_res_sch-vbeln,
posnr TYPE ztsdo_res_sch-posnr,
etenr TYPE ztsdo_res_sch-etenr,
text TYPE ztsdo_res_sch-text,
zzseason TYPE ztsdo_res_sch-zzseason,
fsh_season TYPE vbap-fsh_season,
land1 TYPE kna1-land1,
zzsubbrand TYPE vbak-zzsubbrand,
qty TYPE kwmeng,
zvaltot TYPE bp_wgt,
zkschl TYPE ztsdo_res_sch-zkschl,
zprcsc TYPE ztsdo_res_sch-zprcsc,
zschl_02 TYPE kscha,
zprcsc_02 TYPE kbetr,
zvalnet TYPE vbak-netwr,
zwaerk TYPE waerk,
zaugru TYPE ztsdo_res_sch-zaugru,
zdtaord TYPE ztsdo_pr_ven_web-zdtaord,
zstato TYPE ztsdo_pr_ven_web-zstato,
zdescr TYPE ztsdo_statven_pt-zdescr,
zupddat TYPE ztsdo_pr_ven_web-zupddat,
style TYPE lvc_t_styl,
END OF ty_out,
ty_outtab TYPE STANDARD TABLE OF ty_out.
DATA: gt_out TYPE ty_outtab.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: go_custom_c TYPE REF TO cl_gui_custom_container,
go_grid TYPE REF TO cl_gui_alv_grid,
go_event_receiver TYPE REF TO lcl_event_receiver,
gs_stable TYPE lvc_s_stbl,
gt_excl_func TYPE ui_functions,
gv_ts TYPE timestamp,
gv_ora TYPE syst_uzeit.
*----------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER DEFINITION *
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING
e_fieldname
e_fieldvalue
es_row_no
er_event_data
et_bad_cells
e_display.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION *
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_onf4.
FIELD-SYMBOLS: TYPE STANDARD TABLE,
TYPE lvc_t_modi.
DATA: lv_retfield TYPE dfies-fieldname,
lt_return TYPE TABLE OF ddshretval.
CASE e_fieldname.
WHEN 'ZAUGRU'.
SELECT augru, bezei
FROM tvaut
INTO TABLE @DATA(lt_tvaut)
WHERE spras = @sy-langu.
lv_retfield = 'AUGRU'.
ASSIGN lt_tvaut TO .
WHEN 'ZKSCHL' OR 'ZSCHL_02'.
SELECT kschl, vtext
FROM t685t
INTO TABLE @DATA(lt_t685t)
WHERE kvewe = 'A'
AND kappl = 'V'
AND spras = @sy-langu.
lv_retfield = 'KSCHL'.
ASSIGN lt_t685t TO .
ENDCASE.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = lv_retfield
value_org = 'S'
TABLES
value_tab =
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0 AND lt_return[] IS NOT INITIAL.
ASSIGN er_event_data->m_data->* TO .
APPEND VALUE #( row_id = es_row_no-row_id
fieldname = e_fieldname
value = lt_return[ 1 ]-fieldval ) TO .
ENDIF.
er_event_data->m_event_handled = 'X'.
ENDMETHOD. "handle_onf4
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
* LAYOUT *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: so_kunnr FOR kna1-kunnr,
so_seasn FOR fsh_seasons-fsh_season,
so_land1 FOR kna1-land1,
so_subbr FOR vbak-zzsubbrand,
so_stato FOR ztsdo_pr_ven_web-zstato DEFAULT '01'.
PARAMETERS: cb_bkg AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* INIT *
*----------------------------------------------------------------------*
INITIALIZATION.
gs_stable-row = 'X'.
gs_stable-col = 'X'.
gv_ora = sy-uzeit.
gv_ts = sy-datum && sy-uzeit.
*----------------------------------------------------------------------*
* PROGRAM BODY *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM get_data.
IF cb_bkg IS INITIAL.
CALL SCREEN 100.
ELSE.
PERFORM sale_approval USING gt_out.
ENDIF.
END-OF-SELECTION.
EXIT.
*----------------------------------------------------------------------*
* *
* ██████╗ ██████╗ ██████╗ *
* ██╔══██╗ ██╔══██╗ ██╔═══██╗ *
* ██████╔╝ ██████╔╝ ██║ ██║ *
* ██╔═══╝ ██╔══██╗ ██║ ██║ *
* ██║ ██████╔╝ ╚██████╔╝ *
* ╚═╝ ╚═════╝ ╚═════╝ *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* MODULE STATUS_0100 OUTPUT *
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
DATA: ls_layout TYPE lvc_s_layo,
lt_fieldcat TYPE lvc_t_fcat,
lt_f4 TYPE lvc_t_f4.
SET PF-STATUS 'ZPF01'.
SET TITLEBAR 'ZTITLE01'.
IF go_custom_c IS INITIAL.
* Creo il container
CREATE OBJECT go_custom_c
EXPORTING
container_name = 'CONTAINER'.
PERFORM exclude_tb_func.
PERFORM build_fielcat CHANGING lt_fieldcat.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_c.
APPEND VALUE lvc_s_f4( fieldname = 'ZAUGRU'
register = 'X' ) TO lt_f4.
APPEND VALUE lvc_s_f4( fieldname = 'ZKSCHL'
register = 'X' ) TO lt_f4.
APPEND VALUE lvc_s_f4( fieldname = 'ZSCHL_02'
register = 'X' ) TO lt_f4.
CALL METHOD go_grid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4.
ls_layout-stylefname = 'STYLE'.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = ls_layout
it_toolbar_excluding = gt_excl_func
CHANGING
it_fieldcatalog = lt_fieldcat
it_outtab = gt_out.
CREATE OBJECT go_event_receiver.
SET HANDLER go_event_receiver->handle_onf4
FOR go_grid.
ENDIF.
ENDMODULE.
*----------------------------------------------------------------------*
* *
* ██████╗ █████╗ ██╗ *
* ██╔══██╗ ██╔══██╗ ██║ *
* ██████╔╝ ███████║ ██║ *
* ██╔═══╝ ██╔══██║ ██║ *
* ██║ ██║ ██║ ██║ *
* ╚═╝ ╚═╝ ╚═╝ ╚═╝ *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* MODULE USER_COMMAND_0100 INPUT *
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'UP'.
FREE: go_custom_c,
go_grid,
go_event_receiver.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
FREE: go_custom_c,
go_grid,
go_event_receiver.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*----------------------------------------------------------------------*
* *
* ███████╗ ██████╗ ██████╗ ███╗ ███╗ ███████╗ *
* ██╔════╝ ██╔═══██╗ ██╔══██╗ ████╗ ████║ ██╔════╝ *
* █████╗ ██║ ██║ ██████╔╝ ██╔████╔██║ ███████╗ *
* ██╔══╝ ██║ ██║ ██╔══██╗ ██║╚██╔╝██║ ╚════██║ *
* ██║ ╚██████╔╝ ██║ ██║ ██║ ╚═╝ ██║ ███████║ *
* ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FORM GET_DATA *
*----------------------------------------------------------------------*
FORM get_data.
[...]
ENDFORM.
*----------------------------------------------------------------------*
* FORM EXCLUDE_TB_FUNC *
*----------------------------------------------------------------------*
FORM exclude_tb_func.
[...]
ENDFORM.
*----------------------------------------------------------------------*
* FORM BUILD_FIELCAT *
*----------------------------------------------------------------------*
FORM build_fielcat CHANGING pt_fieldcat TYPE lvc_t_fcat.
DATA ls_fieldcat TYPE lvc_s_fcat.
DEFINE fill_fieldcat.
ADD 1 TO ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-reptext = &2.
ls_fieldcat-f4availabl = &3.
ls_fieldcat-outputlen = &4.
APPEND ls_fieldcat TO pt_fieldcat.
END-OF-DEFINITION.
ls_fieldcat-key = space.
ls_fieldcat-tabname = 'GT_OUT'.
ls_fieldcat-edit = ls_fieldcat-no_out = 'X'.
fill_fieldcat 'CHKBX' 'X' '' '2'.
ls_fieldcat-edit = ls_fieldcat-no_out = ''.
fill_fieldcat 'KUNNR' 'Negozio' '' '10'.
fill_fieldcat 'NAME1' 'Descrizione' '' '35'.
fill_fieldcat 'ZRESERVE_NO' 'Numero prenotazione' '' '10'.
fill_fieldcat 'TEXT' 'Descr. prenotazione' '' '40'.
fill_fieldcat 'ZZSEASON' 'Stag.Vendita' '' '4'.
fill_fieldcat 'FSH_SEASON' 'Stag.Giacenza' '' '4'.
fill_fieldcat 'LAND1' 'Paese' '' '2'.
fill_fieldcat 'ZZSUBBRAND' 'Marchio' '' '2'.
fill_fieldcat 'QTY' 'Capi' '' '19'.
fill_fieldcat 'ZVALTOT' 'Valore totale' '' '21'.
fill_fieldcat 'ZKSCHL' 'Cond.Sconto' 'X' '4'.
fill_fieldcat 'ZPRCSC' 'Percent.Sconto' '' '16'.
fill_fieldcat 'ZSCHL_02' '2ª Cond.Sconto' 'X' '4'.
fill_fieldcat 'ZPRCSC_02' '2ª Percent.Sconto' '' '16'.
fill_fieldcat 'ZVALNET' 'Valore netto' '' '21'.
fill_fieldcat 'ZWAERK' 'Divisa' '' '5'.
fill_fieldcat 'ZAUGRU' 'Mot.Ordine' 'X' '3'.
fill_fieldcat 'ZDTAORD' 'Data ordine' '' '10'.
fill_fieldcat 'ZSTATO' 'Stato' '' '2'.
fill_fieldcat 'ZDESCR' 'Descr.stato' '' '30'.
fill_fieldcat 'ZUPDDAT' 'Data evasione' '' '10'.
ENDFORM.
*----------------------------------------------------------------------*
* FORM SALE_APPROVAL *
*----------------------------------------------------------------------*
FORM sale_approval USING pt_out TYPE ty_outtab.
[...]
ENDFORM.
*----------------------------------------------------------------------*
Pubblicato da
F/\B!O
alle
17:00
Commenta per primo!
Etichette: ABAP
lunedì 28 giugno 2021
Leggere campi dynpro non aggiornati
IF rb_pick = gc_x AND
p_zppsl IS NOT INITIAL AND
gv_scr300_werks-werks IS NOT INITIAL.
APPEND VALUE #( fieldname = 'P_ZPPSL' ) TO lt_dynpread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = '0301'
TABLES
dynpfields = lt_dynpread.
IF sy-subrc = 0.
READ TABLE lt_dynpread INTO DATA(ls_dynpread) WITH KEY fieldname = 'P_ZPPSL'.
SELECT @abap_true
UP TO 1 ROWS
FROM t001l
INTO @DATA(lv_exists)
WHERE werks = @gv_scr300_werks-werks
AND lgort = @ls_dynpread-fieldvalue.
ENDSELECT.
IF lv_exists IS INITIAL.
MESSAGE TEXT-e19 TYPE gc_s DISPLAY LIKE gc_e.
EXIT.
ELSE.
CLEAR lv_exists.
ENDIF.
ENDIF.
ENDIF.
Pubblicato da
F/\B!O
alle
16:52
Commenta per primo!
Etichette: ABAP
martedì 1 giugno 2021
Bottoni dentro tabella ALV
*----------------------------------------------------------------------*
REPORT zfbc_monitor_fabio.
*----------------------------------------------------------------------*
* DECLARATIONS *
*----------------------------------------------------------------------*
DATA: BEGIN OF gs_out,
name TYPE eps2filnam,
datum TYPE crdate,
uzeit LIKE sy-uzeit,
pdf TYPE icon_d,
END OF gs_out.
DATA: gt_out LIKE STANDARD TABLE OF gs_out.
DATA: gv_dirnam TYPE eps2filnam,
gv_url(255) TYPE c,
gv_content TYPE xstring,
gv_fatt TYPE zflag_fatt,
gv_lett TYPE zflag_lett,
gv_canc TYPE zflag_canc,
gv_ap TYPE zfbc_area.
DATA: go_container_r TYPE REF TO cl_gui_container,
go_container_l TYPE REF TO cl_gui_container,
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_gui_html_viewer TYPE REF TO cl_gui_html_viewer,
go_alv TYPE REF TO cl_salv_table.
CLASS lcl_handle_events DEFINITION DEFERRED.
DATA: go_events TYPE REF TO lcl_handle_events.
DATA: ok_code TYPE syucomm.
*---------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION *
*---------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events_table
IMPORTING e_salv_function,
on_single_click FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS.
*---------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION *
*---------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
DATA: lv_answer TYPE c,
lv_url(255) TYPE c,
lo_selections TYPE REF TO cl_salv_selections,
lt_rows TYPE salv_t_row,
ls_row TYPE i,
ls_cell TYPE salv_s_cell.
CHECK e_salv_function = '&DEL'.
lo_selections = go_alv->get_selections( ).
lt_rows = lo_selections->get_selected_rows( ).
CHECK lt_rows[] IS NOT INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'Sicuro di voler eliminare i file?'
IMPORTING
answer = lv_answer.
CHECK lv_answer = '1'.
LOOP AT lt_rows INTO ls_row.
READ TABLE gt_out INTO gs_out INDEX ls_row.
CONCATENATE gv_dirnam gs_out-name INTO lv_url.
DELETE DATASET lv_url.
CLEAR gs_out-name.
MODIFY gt_out FROM gs_out
INDEX ls_row
TRANSPORTING name.
CHECK lv_url = gv_url.
lv_answer = 'D'.
ENDLOOP.
DELETE gt_out WHERE name IS INITIAL.
CLEAR lt_rows[].
lo_selections->set_selected_rows( lt_rows[] ).
ls_cell-row = 1.
ls_cell-columnname = 'NAME'.
lo_selections->set_current_cell( ls_cell ).
go_alv->refresh( ).
CHECK lv_answer = 'D'.
IF gt_out[] IS NOT INITIAL.
PERFORM preview_pdf USING 1.
ELSE.
CALL METHOD go_container_r->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR go_container_r.
ENDIF.
ENDMETHOD.
METHOD on_single_click.
CASE column.
WHEN 'NAME'.
PERFORM preview_pdf USING row.
WHEN 'PDF'.
PERFORM view_pdf USING row.
ENDCASE.
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* LAYOUT *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: so_datum FOR sy-datum DEFAULT sy-datum.
PARAMETERS: pa_uname LIKE sy-uname DEFAULT sy-uname.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-004.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) TEXT-002 MODIF ID id3.
SELECTION-SCREEN COMMENT 31(30) TEXT-003 MODIF ID id3.
SELECTION-SCREEN COMMENT 61(30) TEXT-011 MODIF ID id3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: rb_fad RADIOBUTTON GROUP rbg1 MODIF ID id1.
SELECTION-SCREEN COMMENT 3(27) TEXT-005 MODIF ID id1.
PARAMETERS: rb_fai RADIOBUTTON GROUP rbg1 MODIF ID id1.
SELECTION-SCREEN COMMENT 33(27) TEXT-005 MODIF ID id1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: rb_lnd RADIOBUTTON GROUP rbg1 MODIF ID id2 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(27) TEXT-006 MODIF ID id2.
PARAMETERS: rb_lni RADIOBUTTON GROUP rbg1 MODIF ID id2.
SELECTION-SCREEN COMMENT 33(27) TEXT-006 MODIF ID id2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: rb_lsd RADIOBUTTON GROUP rbg1 MODIF ID id4.
SELECTION-SCREEN COMMENT 3(27) TEXT-007 MODIF ID id4.
PARAMETERS: rb_lsi RADIOBUTTON GROUP rbg1 MODIF ID id4.
SELECTION-SCREEN COMMENT 33(27) TEXT-007 MODIF ID id4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: rb_lcd RADIOBUTTON GROUP rbg1 MODIF ID id4.
SELECTION-SCREEN COMMENT 3(27) TEXT-009 MODIF ID id4.
PARAMETERS: rb_lci RADIOBUTTON GROUP rbg1 MODIF ID id4.
SELECTION-SCREEN COMMENT 33(27) TEXT-009 MODIF ID id4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: rb_lgd RADIOBUTTON GROUP rbg1 MODIF ID id5.
SELECTION-SCREEN COMMENT 3(27) TEXT-010 MODIF ID id5.
PARAMETERS: rb_lgi RADIOBUTTON GROUP rbg1 MODIF ID id5.
SELECTION-SCREEN COMMENT 33(27) TEXT-010 MODIF ID id5.
PARAMETERS: rb_lgn RADIOBUTTON GROUP rbg1 MODIF ID id5.
SELECTION-SCREEN COMMENT 63(27) TEXT-010 MODIF ID id5.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* EVENTS *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'ID1' AND
gv_fatt IS INITIAL.
screen-output = 0.
screen-input = 0.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'ID2' AND
gv_lett IS INITIAL.
screen-output = 0.
screen-input = 0.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'ID3'.
screen-intensified = 1.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'ID4' AND
gv_lett IS INITIAL.
screen-output = 0.
screen-input = 0.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'ID5' AND
gv_lett IS INITIAL.
screen-output = 0.
screen-input = 0.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
*----------------------------------------------------------------------*
* INIT *
*----------------------------------------------------------------------*
INITIALIZATION.
SELECT SINGLE flag_fatt flag_lett flag_canc
FROM zfbc_mon_fabio_a
INTO (gv_fatt, gv_lett, gv_canc)
WHERE uname = sy-uname.
REFRESH so_datum[].
so_datum-low = sy-datum - 7.
so_datum-high = sy-datum.
so_datum-option = 'BT'.
so_datum-sign = 'I'.
APPEND so_datum.
CLEAR so_datum.
*----------------------------------------------------------------------*
* PROGRAM BODY *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM dir_list.
END-OF-SELECTION.
CHECK gt_out[] IS NOT INITIAL.
CALL SCREEN 100.
*----------------------------------------------------------------------*
* *
* ####### ####### ####### *
* ### ### ### ### #### #### *
* ### ### ### ### ### ### *
* ####### ####### ### ### *
* ### ### ### ### ### *
* ### ### ### #### #### *
* ### ####### ####### *
* *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'D0100'.
SET TITLEBAR 'D0100'.
PERFORM output_alv.
ENDMODULE.
*----------------------------------------------------------------------*
* *
* ####### ###### ### *
* ### ### ### ### ### *
* ### ### ### ### ### *
* ####### ######## ### *
* ### ### ### ### *
* ### ### ### ### *
* ### ### ### ### *
* *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
PERFORM user_command.
ENDMODULE.
*----------------------------------------------------------------------*
* *
* ######## ####### ####### #### #### ######## *
* ######## #### #### ### ### ##### ##### ######## *
* ###### ### ### ### ### ########### ##### *
* ###### ### ### ####### ########### ######## *
* ### ### ### ### ### ### ### ### ##### *
* ### #### #### ### ### ### ### ######## *
* ### ####### ### ### ### ### ######## *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FORM DIR_LIST *
*----------------------------------------------------------------------*
FORM dir_list.
CONSTANTS: lc_days1980 TYPE i VALUE 3652,
lc_hours TYPE uzeit VALUE '020000'.
DATA: lt_dir TYPE STANDARD TABLE OF eps2fili,
ls_dir LIKE LINE OF lt_dir.
DATA: lv_pit TYPE i,
lv_mtime(12) TYPE c.
DATA: ls_path TYPE zfbc_path_postel.
DATA: path_ln TYPE string,
path_ls TYPE string,
path_lc TYPE string,
path_lg TYPE string,
path_ft TYPE string.
SELECT DISTINCT * FROM zfbc_path_postel
INTO ls_path WHERE area_app = 'LT'.
ENDSELECT.
IF sy-subrc = 0.
path_ln = ls_path-path_ln.
path_ls = ls_path-path_ls.
path_lc = ls_path-path_lc.
path_lg = ls_path-path_lg.
REPLACE ALL OCCURRENCES OF 'SYSID' IN path_ln WITH sy-sysid.
REPLACE ALL OCCURRENCES OF 'SYSID' IN path_ls WITH sy-sysid.
REPLACE ALL OCCURRENCES OF 'SYSID' IN path_lc WITH sy-sysid.
REPLACE ALL OCCURRENCES OF 'SYSID' IN path_lg WITH sy-sysid.
ENDIF.
SELECT DISTINCT * FROM zfbc_path_postel
INTO ls_path WHERE area_app = 'FT'.
ENDSELECT.
IF sy-subrc = 0.
path_ft = ls_path-path_ln.
REPLACE ALL OCCURRENCES OF 'SYSID' IN path_ft WITH sy-sysid.
ENDIF.
CASE 'X'.
WHEN rb_fad.
gv_dirnam = path_ft.
WHEN rb_lnd.
gv_dirnam = path_ln.
WHEN rb_lsd.
gv_dirnam = path_ls.
WHEN rb_lcd.
gv_dirnam = path_lc.
WHEN rb_lgd.
gv_dirnam = path_lg.
WHEN rb_fai.
REPLACE ALL OCCURRENCES OF '/FABIO/' IN path_ft WITH '/FABIO/SENT/'.
gv_dirnam = path_ft.
WHEN rb_lni.
REPLACE ALL OCCURRENCES OF '/FABIO/' IN path_ln WITH '/FABIO/SENT/'.
gv_dirnam = path_ln.
WHEN rb_lsi.
REPLACE ALL OCCURRENCES OF '/FABIO/' IN path_ls WITH '/FABIO/SENT/'.
gv_dirnam = path_ls.
WHEN rb_lci.
REPLACE ALL OCCURRENCES OF '/FABIO/' IN path_lc WITH '/FABIO/SENT/'.
gv_dirnam = path_lc.
WHEN rb_lgi.
REPLACE ALL OCCURRENCES OF '/FABIO/' IN path_lg WITH '/FABIO/SENT/'.
gv_dirnam = path_lg.
WHEN rb_lgn.
CONCATENATE path_lg '/NO_FABIO/' INTO path_lg.
gv_dirnam = path_lg.
ENDCASE.
CALL FUNCTION 'EPS2_GET_DIRECTORY_LISTING'
EXPORTING
iv_dir_name = gv_dirnam
TABLES
dir_list = lt_dir
EXCEPTIONS
invalid_eps_subdir = 1
sapgparam_failed = 2
build_directory_failed = 3
no_authorization = 4
read_directory_failed = 5
too_many_read_errors = 6
empty_directory_list = 7.
IF sy-subrc <> 0
OR lt_dir[] IS INITIAL.
MESSAGE i208(00) WITH TEXT-008.
EXIT.
ENDIF.
gs_out-pdf = '@IT@'.
LOOP AT lt_dir INTO ls_dir WHERE name CP '*.PDF'.
gs_out-name = ls_dir-name.
CONCATENATE ls_dir-mtim+6(4) ls_dir-mtim+3(2) ls_dir-mtim(2)
INTO gs_out-datum.
CONCATENATE ls_dir-mtim+11(2) ls_dir-mtim+14(2) ls_dir-mtim+17(2)
INTO gs_out-uzeit.
CHECK gs_out-datum IN so_datum.
CHECK gs_out-datum IN so_datum.
IF pa_uname IS NOT INITIAL.
IF gs_out-name CS pa_uname.
APPEND gs_out TO gt_out.
ENDIF.
ELSE.
APPEND gs_out TO gt_out.
ENDIF.
ENDLOOP.
IF gt_out[] IS INITIAL.
MESSAGE i208(00) WITH TEXT-008.
EXIT.
ELSE.
SORT gt_out.
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
* FORM OUTPUT_ALV *
*----------------------------------------------------------------------*
FORM output_alv.
CLEAR: go_docking, go_splitter, go_container_l, go_container_r.
CREATE OBJECT go_docking
EXPORTING
repid = sy-repid
dynnr = '0100'
ratio = '95'. "--max container length
* Create a splitter with 1 row and 2 column
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2.
** Right Container
go_splitter->get_container(
EXPORTING
row = 1
column = 2
RECEIVING
container = go_container_r ).
** Left Container
go_splitter->get_container(
EXPORTING
row = 1
column = 1
RECEIVING
container = go_container_l ).
CREATE OBJECT go_gui_html_viewer
EXPORTING
parent = go_container_r.
PERFORM preview_pdf USING 1.
TRY.
cl_salv_table=>factory(
EXPORTING
r_container = go_container_l
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gt_out ).
PERFORM set_settings.
go_alv->display( ).
CATCH cx_salv_msg.
" error handling
RETURN.
ENDTRY.
ENDFORM.
*----------------------------------------------------------------------*
* FORM SET_SETTINGS *
*----------------------------------------------------------------------*
FORM set_settings.
DATA: ls_key TYPE salv_s_layout_key,
lo_cols TYPE REF TO cl_salv_columns_table,
lo_col TYPE REF TO cl_salv_column_table,
lo_funcs TYPE REF TO cl_salv_functions_list,
lo_layout TYPE REF TO cl_salv_layout,
lo_display TYPE REF TO cl_salv_display_settings,
lo_selections TYPE REF TO cl_salv_selections,
lo_events TYPE REF TO cl_salv_events_table.
*Events
lo_events = go_alv->get_event( ).
CREATE OBJECT go_events.
SET HANDLER go_events->on_user_command FOR lo_events.
SET HANDLER go_events->on_single_click FOR lo_events.
*Columns
lo_cols = go_alv->get_columns( ).
TRY.
lo_col ?= lo_cols->get_column( 'NAME' ).
lo_col->set_cell_type( if_salv_c_cell_type=>hotspot ).
lo_col ?= lo_cols->get_column( 'PDF' ).
lo_col->set_cell_type( if_salv_c_cell_type=>button ).
lo_col->set_short_text( 'View Pdf' ).
CATCH cx_salv_error.
" error handling
RETURN.
ENDTRY.
lo_cols->set_optimize( 'X' ).
*Layouts
ls_key-report = sy-repid.
lo_layout = go_alv->get_layout( ).
lo_layout->set_key( ls_key ).
lo_layout->set_default( 'X' ).
lo_layout->set_save_restriction( ).
*Functions
lo_funcs = go_alv->get_functions( ).
lo_funcs->set_all( ).
IF ( rb_fad = 'X' OR rb_lnd = 'X' OR rb_lsd = 'X' OR rb_lcd = 'X' )
AND gv_canc = 'X'.
TRY.
lo_funcs->add_function(
name = '&DEL'
icon = '@11@'
text = ''
tooltip = 'Eliminare'
position =
if_salv_c_function_position=>right_of_salv_functions ).
CATCH cx_salv_wrong_call.
" error handling
RETURN.
ENDTRY.
ENDIF.
*Display Settings
lo_display = go_alv->get_display_settings( ).
lo_display->set_striped_pattern( 'X' ).
*Selections
lo_selections = go_alv->get_selections( ).
lo_selections->set_selection_mode(
if_salv_c_selection_mode=>row_column ).
ENDFORM.
*----------------------------------------------------------------------*
* FORM USER_COMMAND *
*----------------------------------------------------------------------*
FORM user_command.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDFORM.
*----------------------------------------------------------------------*
* FORM PREVIEW_PDF *
*----------------------------------------------------------------------*
FORM preview_pdf USING pf_row TYPE i.
DATA: lv_url(255) TYPE c,
lt_data TYPE STANDARD TABLE OF x255.
READ TABLE gt_out INTO gs_out INDEX pf_row.
CONCATENATE gv_dirnam gs_out-name INTO gv_url.
OPEN DATASET gv_url FOR INPUT IN BINARY MODE.
CHECK sy-subrc = 0.
READ DATASET gv_url INTO gv_content.
CLOSE DATASET gv_url.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = gv_content
TABLES
binary_tab = lt_data.
go_gui_html_viewer->load_data(
EXPORTING
type = 'application'
subtype = 'pdf'
IMPORTING
assigned_url = lv_url
CHANGING
data_table = lt_data
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4 ).
go_gui_html_viewer->show_url(
url = lv_url
in_place = 'X' ).
ENDFORM.
*----------------------------------------------------------------------*
* FORM VIEW_PDF *
*----------------------------------------------------------------------*
FORM view_pdf USING pf_row TYPE i.
DATA: lv_url(255) TYPE c,
lv_content TYPE xstring.
READ TABLE gt_out INTO gs_out INDEX pf_row.
CONCATENATE gv_dirnam gs_out-name INTO lv_url.
IF lv_url <> gv_url.
OPEN DATASET lv_url FOR INPUT IN BINARY MODE.
CHECK sy-subrc = 0.
READ DATASET lv_url INTO lv_content.
CLOSE DATASET lv_url.
ELSE.
lv_content = gv_content.
ENDIF.
CALL FUNCTION 'ISH_DALE_PDF_DISPLAY'
EXPORTING
i_pdf = lv_content.
ENDFORM.
*----------------------------------------------------------------------*
Pubblicato da
F/\B!O
alle
16:49
Commenta per primo!
Etichette: ABAP
giovedì 20 maggio 2021
Da range a clausola where
TYPES: BEGIN OF ty_range,
tablename LIKE rsdstabs-prim_tab,
frange_t TYPE ty_frange_t,
END OF ty_range.
TYPES: ty_range_t TYPE STANDARD TABLE OF ty_range.
TYPES: ty_fields TYPE STANDARD TABLE OF rsdsfields.
DATA: it_fields TYPE ty_fields.
DATA: it_ranges TYPE ty_range_t.
DATA: lv_selid TYPE rsdynsel-selid.
DATA: lt_tables TYPE STANDARD TABLE OF rsdstabs.
DATA: lt_where TYPE rsds_twhere.
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
kind = 'T'
IMPORTING
selection_id = lv_selid
TABLES
tables_tab = lt_tables.
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = lv_selid
title = 'Select WHERE criteria'
as_window = 'X'
start_row = 7
start_col = 10
IMPORTING
field_ranges = it_ranges
TABLES
fields_tab = it_fields
EXCEPTIONS
internal_error = 1
no_action = 2
selid_not_found = 3
illegal_status = 4
OTHERS = 5.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_WHERE'
EXPORTING
field_ranges = it_ranges
IMPORTING
where_clauses = lt_where.
Pubblicato da
F/\B!O
alle
16:38
Commenta per primo!
Etichette: ABAP
sabato 1 maggio 2021
SAPscript: testo legato alla valorizzazione della variabile
| /E | DATI_BANCA_P |
| * | &t_banca-banka& |
| * | &t_banca-stras& |
| * | &t_banca-ort01& |
| /: | IF &T_BANCA-BANKS& EQ 'IT '. |
| * | &'Cod. ABI: 't_banca-abi& &'Cod. CAB: 't_banca-cab& |
| /: | ELSE. |
| * | &t_banca-str&&t_banca-bnklz& |
| /: | ENDIF. |
Pubblicato da
F/\B!O
alle
16:19
Commenta per primo!
Etichette: ABAP
mercoledì 9 dicembre 2020
Accedere alle tabelle interne (senza READ TABLE)
*----------------------------------------------------------------------*
* FORM FORM1 *
*----------------------------------------------------------------------*
FORM form1.
SELECT *
FROM t005t
INTO TABLE @DATA(lt_t005t)
WHERE spras = 'I'.
DATA(ls_t005t) = lt_t005t[ land1 = 'IT' ].
ls_t005t = lt_t005t[ 2 ].
ENDFORM.
*----------------------------------------------------------------------*
Pubblicato da
F/\B!O
alle
17:01
Commenta per primo!
Etichette: ABAP
lunedì 23 novembre 2020
Ottenere l'indice di una riga in tabella interna
DATA: lt_return TYPE TABLE OF bapiret2.
DATA(lv_index)= line_index( lt_return[ type = 'E'
id = 'ZUTIL' ] ).
Pubblicato da
F/\B!O
alle
16:47
Commenta per primo!
Etichette: ABAP
lunedì 16 novembre 2020
Operatore condizionale ternario in ABAP
DATA: lv_threshold TYPE i,
lv_number TYPE i.
DATA(bool) = COND #( WHEN lv_number * lv_number > lv_threshold THEN abap_true ELSE abap_false ).
La seguente istruzione restituisce un risultato del tipo specificato che dipende dalle espressioni logiche.
… COND dtype|#( WHEN log_exp1 THEN result1
[ WHEN log_exp2 THEN result2 ]
…
[ ELSE resultn ] ) …
La seguente istruzione restituisce un risultato del tipo specificato che dipende dalla struttura di controllo.
… SWITCH dtype|#( operand
WHEN const1 THEN result1
[ WHEN const2 THEN result2 ]
…
[ ELSE resultn ] ) …
Pubblicato da
F/\B!O
alle
16:10
Commenta per primo!
Etichette: ABAP
lunedì 26 ottobre 2020
Creazione dinamica di tabelle interne
*----------------------------------------------------------------------*
* DECLARATIONS *
*----------------------------------------------------------------------*
DATA: gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat.
FIELD-SYMBOLS: <gf_table> TYPE STANDARD TABLE,
<gf_line> TYPE any,
<gf_campo> TYPE any.
*----------------------------------------------------------------------*
* LAYOUT *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: pa_begda TYPE begda OBLIGATORY,
pa_endda TYPE endda OBLIGATORY,
pa_kurst TYPE kurst OBLIGATORY,
pa_fname TYPE string LOWER CASE,
pa_fout TYPE localfile.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* EVENTS *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
pa_fname = 'Exchange_Rates.csv'.
CONCATENATE '/IFR/' sy-sysid '/EXPORT/'
INTO pa_fout.
*----------------------------------------------------------------------*
* PROGRAM BODY *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
PERFORM save_remote.
*----------------------------------------------------------------------*
* FORM GET_DATA *
*----------------------------------------------------------------------*
FORM get_data.
DATA: lv_col_pos TYPE i,
lt_newtable TYPE REF TO data,
lt_newline TYPE REF TO data,
lr_waers TYPE RANGE OF waers,
lv_datum TYPE datum,
lv_gdatu TYPE gdatu_inv,
lv_dest(6) TYPE c.
DATA: BEGIN OF lt_tcurr OCCURS 0.
INCLUDE STRUCTURE tcurr.
DATA: END OF lt_tcurr.
SELECT sign opti low high
FROM tvarvc
INTO TABLE lr_waers
WHERE name = 'ZCUKY'
AND type = 'S'.
ADD 1 TO lv_col_pos.
gs_fcat-col_pos = lv_col_pos.
gs_fcat-fieldname = 'KTEXT'.
gs_fcat-tabname = 'ITAB'.
gs_fcat-key = 'X'.
gs_fcat-emphasize = 'K41'.
gs_fcat-datatype = 'CHAR'.
gs_fcat-inttype = 'C'.
gs_fcat-intlen = '15'.
gs_fcat-lowercase = 'X'.
gs_fcat-reptext = 'valuta target'.
gs_fcat-domname = 'TEXT15'.
gs_fcat-dd_outlen = '15'.
gs_fcat-scrtext_l = 'Target currency'.
gs_fcat-scrtext_m = 'Target currency'.
gs_fcat-scrtext_s = 'Target currency'.
APPEND gs_fcat TO gt_fcat.
LOOP AT lr_waers INTO DATA(ls_waers).
ADD 1 TO lv_col_pos.
gs_fcat-col_pos = lv_col_pos.
gs_fcat-fieldname = ls_waers-low.
gs_fcat-datatype = 'DEC'.
gs_fcat-inttype = 'P'.
gs_fcat-intlen = '9'.
gs_fcat-lowercase = ''.
gs_fcat-reptext = ls_waers-low.
gs_fcat-domname = 'UKURS'.
gs_fcat-dd_outlen = '12'.
gs_fcat-decimals = '5'.
gs_fcat-scrtext_l = ls_waers-low.
gs_fcat-scrtext_m = ls_waers-low.
gs_fcat-scrtext_s = ls_waers-low.
APPEND gs_fcat TO gt_fcat.
ENDLOOP.
ADD 1 TO lv_col_pos.
gs_fcat-col_pos = lv_col_pos.
gs_fcat-fieldname = 'DATUM'.
gs_fcat-datatype = 'DATS'.
gs_fcat-inttype = 'D'.
gs_fcat-intlen = '8'.
gs_fcat-reptext = 'Date'.
gs_fcat-domname = 'DATUM'.
gs_fcat-dd_outlen = '10'.
gs_fcat-decimals = '0'.
gs_fcat-scrtext_l = 'Date'.
gs_fcat-scrtext_m = 'Date'.
gs_fcat-scrtext_s = 'Date'.
APPEND gs_fcat TO gt_fcat.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fcat
IMPORTING
ep_table = lt_newtable
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
IF sy-subrc IS INITIAL.
ASSIGN lt_newtable->* TO <gf_table>.
ENDIF.
APPEND INITIAL LINE TO <gf_table>.
CREATE DATA lt_newline LIKE LINE OF <gf_table>.
ASSIGN lt_newline->* TO <gf_line>.
CASE sy-sysid.
WHEN 'PRD'.
lv_dest = 'PRD001'.
WHEN 'DEV'.
lv_dest = 'DEV001'.
WHEN OTHERS.
lv_dest = 'QAS001'.
ENDCASE.
CALL FUNCTION 'ZFM_READ_TCURR'
DESTINATION lv_dest
EXPORTING
i_kurst = pa_kurst
i_tcurr = 'EUR'
i_begda = pa_begda
i_endda = pa_endda
TABLES
t_tcurr = lt_tcurr.
DELETE lt_tcurr WHERE fcurr NOT IN lr_waers.
lv_datum = pa_begda.
WHILE lv_datum <= pa_endda.
CONVERT DATE lv_datum INTO INVERTED-DATE lv_gdatu.
LOOP AT lt_tcurr INTO DATA(ls_tcurr) WHERE gdatu = lv_gdatu.
ASSIGN COMPONENT ls_tcurr-fcurr OF STRUCTURE <gf_line> TO <gf_campo>.
IF ls_tcurr-ukurs < 0.
<gf_campo> = ls_tcurr-ukurs * -1.
ENDIF.
IF ls_tcurr-ffact > 1.
<gf_campo> = ls_tcurr-ukurs * ls_tcurr-ffact.
ENDIF.
IF ls_tcurr-tfact > 1.
<gf_campo> = ls_tcurr-ukurs * ls_tcurr-tfact.
ENDIF.
ENDLOOP.
IF <gf_campo> IS ASSIGNED.
ASSIGN COMPONENT 'KTEXT' OF STRUCTURE <gf_line> TO <gf_campo>.
<gf_campo> = 'Euro'.
ASSIGN COMPONENT 'DATUM' OF STRUCTURE <gf_line> TO <gf_campo>.
<gf_campo> = lv_datum.
APPEND <gf_line> TO <gf_table>.
ENDIF.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = lv_datum
days = 1
months = 0
signum = '+'
years = 0
IMPORTING
calc_date = lv_datum.
UNASSIGN <gf_campo>.
ENDWHILE.
DELETE <gf_table> INDEX 1.
ENDFORM.
*----------------------------------------------------------------------*
* FORM SAVE_REMOTE *
*----------------------------------------------------------------------*
FORM save_remote.
DATA: lt_exec_protocol TYPE TABLE OF btcxpm,
lv_file TYPE btcxpgpar,
lv_localfile TYPE localfile,
lv_line TYPE string,
lv_char(10),
lv_index TYPE i,
lv_type TYPE c.
CONCATENATE pa_fout
pa_fname
INTO lv_localfile.
OPEN DATASET lv_localfile FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT gt_fcat INTO gs_fcat.
CONCATENATE lv_line '"' gs_fcat-scrtext_l '"' ';'
INTO lv_line.
ENDLOOP.
TRANSFER lv_line TO lv_localfile.
CLEAR lv_line.
LOOP AT <gf_table> ASSIGNING <gf_line>.
DO.
ADD 1 TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE <gf_line> TO <gf_campo>.
IF sy-subrc = 0.
CLEAR lv_type.
DESCRIBE FIELD <gf_campo> TYPE lv_type.
CASE lv_type.
WHEN 'P'.
lv_char = <gf_campo>.
TRANSLATE lv_char USING '.,'.
CONDENSE lv_char.
CONCATENATE lv_line '"' lv_char '"' ';'
INTO lv_line.
WHEN 'D'.
CONCATENATE lv_line '"' <gf_campo>+6(2) '/' <gf_campo>+4(2) '/' <gf_campo>+0(4) '"' ';'
INTO lv_line.
WHEN OTHERS.
CONCATENATE lv_line '"' <gf_campo> '"' ';'
INTO lv_line.
ENDCASE.
ELSE.
CLEAR lv_index.
EXIT.
ENDIF.
ENDDO.
TRANSFER lv_line TO lv_localfile.
CLEAR lv_line.
ENDLOOP.
CLOSE DATASET lv_localfile.
lv_file = lv_localfile.
CALL FUNCTION 'SXPG_CALL_SYSTEM'
EXPORTING
commandname = 'ZCHMOD777'
additional_parameters = lv_file
TABLES
exec_protocol = lt_exec_protocol.
WRITE 'File correctly exported'.
ENDFORM.
*----------------------------------------------------------------------*
Pubblicato da
F/\B!O
alle
14:08
Commenta per primo!
Etichette: ABAP
lunedì 31 agosto 2020
Rendere una dynpro sensibile al click su un checkbox
CONSTANTS: gc_blank_time TYPE char6 VALUE ' '.
PARAMETERS: p_date_l TYPE vekp-erdat.
PARAMETERS: p_date_h TYPE vekp-erdat.
PARAMETERS: p_time_l TYPE vekp-eruhr.
PARAMETERS: p_time_h TYPE vekp-eruhr.
PARAMETERS: p_timest AS CHECKBOX USER-COMMAND com001.
INITIALIZATION.
p_time_l = gc_blank_time.
p_time_h = gc_blank_time.
AT SELECTION-SCREEN OUTPUT.
CHECK p_timest IS INITIAL.
LOOP AT SCREEN.
IF p_date_l IS INITIAL AND screen-name = 'P_DATE_L'.
screen-required = 2.
ENDIF.
IF p_date_h IS INITIAL AND screen-name = 'P_DATE_H'.
screen-required = 2.
ENDIF.
IF p_time_l = gc_blank_time AND screen-name = 'P_TIME_L'.
screen-required = 2.
ENDIF.
IF p_time_h = gc_blank_time AND screen-name = 'P_TIME_H'.
screen-required = 2.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Pubblicato da
F/\B!O
alle
13:20
Commenta per primo!
Etichette: ABAP
giovedì 9 luglio 2020
Controllo di esistenza di una riga in tabella interna
*----------------------------------------------------------------------*
* FORM SALESDOCUMENT_CHANGE *
*----------------------------------------------------------------------*
FORM salesdocument_change USING pt_rows TYPE salv_t_row.
DATA: lt_return TYPE TABLE OF bapiret2.
IF line_exists( lt_return[ type = 'E'
id = 'ZUTIL' ] ).
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
READ TABLE lt_return INTO DATA(ls_return) WITH KEY type = 'E'.
ENDIF.
Pubblicato da
F/\B!O
alle
16:43
Commenta per primo!
Etichette: ABAP
venerdì 27 dicembre 2019
Visualizzare una SALV TABLE popup
DATA: lt_excel TYPE zsdo_t_excel,
lo_alv TYPE REF TO cl_salv_table.
IF lt_excel[] IS NOT INITIAL.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = lt_excel[] ).
CATCH cx_salv_msg.
ENDTRY.
IF lo_alv IS BOUND.
lo_alv->set_screen_status(
pfstatus = 'SALV_TABLE_STANDARD'
report = sy-repid
set_functions = lo_alv->c_functions_all ).
lo_alv->get_columns( )->set_optimize( ).
lo_alv->set_screen_popup(
start_column = 5
end_column = 180
start_line = 2
end_line = 25 ).
lo_alv->display( ).
ENDIF.
ELSE.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
textline1 = 'niente da mostrare'.
ENDIF.
Pubblicato da
F/\B!O
alle
15:45
Commenta per primo!
Etichette: ABAP
martedì 30 aprile 2019
Aggiornare più campi della stessa dynpro
*&---------------------------------------------------------------------*
*& Form F_GET_LOCATION
*&---------------------------------------------------------------------*
* Match-code for Return Type
*----------------------------------------------------------------------*
FORM f_get_location CHANGING p_auart p_lgort.
DATA: lc_zrettype TYPE dfies-fieldname VALUE 'ZRETTYPE',
lc_value TYPE ddbool_d VALUE 'S',
lc_field TYPE help_info-dynprofld VALUE 'P_AUART'.
DATA: BEGIN OF ls_zrettype,
zrettype TYPE zrettype,
END OF ls_zrettype.
DATA: li_value_tab LIKE STANDARD TABLE OF ls_zrettype,
li_return_tab LIKE STANDARD TABLE OF ddshretval WITH HEADER LINE.
DATA: ls_dynpread TYPE dynpread,
lt_dynpread TYPE TABLE OF dynpread.
* End of Season
ls_zrettype-zrettype = TEXT-i01.
APPEND ls_zrettype TO li_value_tab.
CLEAR ls_zrettype.
* Article Recall
ls_zrettype-zrettype = TEXT-i02.
APPEND ls_zrettype TO li_value_tab.
CLEAR ls_zrettype.
* Customer Closing
ls_zrettype-zrettype = TEXT-i03.
APPEND ls_zrettype TO li_value_tab.
CLEAR ls_zrettype.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = lc_zrettype
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = lc_field
value_org = lc_value
window_title = TEXT-s02
TABLES
value_tab = li_value_tab
return_tab = li_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE li_return_tab INDEX 1.
IF sy-subrc IS INITIAL.
p_auart = li_return_tab-fieldval.
ENDIF.
ENDIF.
ls_dynpread-fieldname = 'P_LGORT'.
CASE p_auart.
WHEN 'End of Season'.
SELECT SINGLE low
FROM tvarvc
INTO ls_dynpread-fieldvalue
WHERE name = 'ZSDO-OTC0065_STORE_LOC'
AND type = 'P'.
WHEN 'Article Recall'.
ls_dynpread-fieldvalue = 'IC13'.
WHEN 'Customer Closing'.
ls_dynpread-fieldvalue = 'IC13'.
ENDCASE.
APPEND ls_dynpread TO lt_dynpread.
* Update the dynpro values.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread
EXCEPTIONS
OTHERS = 8.
ENDFORM.
*----------------------------------------------------------------------*
Pubblicato da
F/\B!O
alle
11:42
Commenta per primo!
Etichette: ABAP
martedì 31 luglio 2018
Select annidata con cast
ls_bukrs = 'IEQ'.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD gs_table-bukrs
ID 'ACTVT' FIELD '03'.
IF sy-subrc = 0.
SELECT SINGLE kostl, "#EC CI_SEL_NESTED
waers,
wrbtr
FROM zvim_wf_det_blkv
WHERE bukrs = @gs_table-bukrs
AND belnr = @gs_table-belnr
AND gjahr = @gs_table-gjahr
AND buzei IN (
SELECT CAST( RIGHT( wi_text, 3 ) AS NUMC( 3 ) ) AS buzei
FROM swwwihead
WHERE wi_id = @gs_worklist-wi_chckwi )
INTO (@gs_table-kostl,
@gs_table-waers,
@gs_table-wrbtr).
SELECT ktext "#EC CI_SEL_NESTED
UP TO 1 ROWS
FROM cskt
INTO gs_table-ktext
WHERE spras = sy-langu
AND kokrs = 'BENG'
AND kostl = gs_table-kostl
ORDER BY datbi DESCENDING.
ENDSELECT.
ELSE.
ls_bukrs-low = gs_table-bukrs.
COLLECT ls_bukrs INTO lr_bukrs.
ENDIF.
IF lr_bukrs[] IS INITIAL.
ls_bukrs-low = 'XX'.
APPEND ls_bukrs TO lr_bukrs.
ENDIF.
Pubblicato da
F/\B!O
alle
10:33
Commenta per primo!
Etichette: ABAP
giovedì 19 aprile 2018
Visualizzare una SALV TABLE con le impostazioni minime
DATA: BEGIN OF ls_madein,
fsh_season TYPE fsh_saiso,
satnr TYPE zesd_satnr,
zzmadein TYPE zemade_in,
END OF ls_madein.
DATA: lo_alv TYPE REF TO cl_salv_table,
lo_cols TYPE REF TO cl_salv_columns_table,
lo_col TYPE REF TO cl_salv_column,
lo_layout TYPE REF TO cl_salv_layout,
lv_key TYPE salv_s_layout_key,
lv_text_s TYPE scrtext_s,
lv_text_m TYPE scrtext_m,
lv_text_l TYPE scrtext_l,
lt_madein LIKE STANDARD TABLE OF ls_madein.
DEFINE set_column.
lv_text_s = lv_text_m = lv_text_l = &2.
lo_col = lo_cols->get_column( &1 ).
lo_col->set_short_text( lv_text_s ).
lo_col->set_medium_text( lv_text_m ).
lo_col->set_long_text( lv_text_l ).
END-OF-DEFINITION.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = lt_madein ).
lo_alv->set_screen_status(
pfstatus = 'STANDARD'
report = 'SAPLSALV'
set_functions = lo_alv->c_functions_all ).
lo_cols = lo_alv->get_columns( ).
lo_cols->set_optimize( 'X' ).
* lo_alv->get_columns( )->set_optimize( ).
* lo_alv->get_columns( )->get_column('ZZMADEIN')->set_visible( EXPORTING value = space ).
* lo_alv->get_columns( )->get_column('SATNR')->set_short_text('Articolo').
set_column 'SATNR' 'Articolo'.
lo_layout = lo_alv->get_layout( ).
lv_key-report = sy-repid.
lo_layout->set_key( lv_key ).
lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
lo_alv->display( ).
Pubblicato da
F/\B!O
alle
10:34
Commenta per primo!
Etichette: ABAP
martedì 13 marzo 2018
Caricare un range da una tabella interna senza usare un LOOP AT
*----------------------------------------------------------------------*
* FORM F_DATA_EXTRACTIONS *
*----------------------------------------------------------------------*
FORM f_data_extractions.
DATA: lr_ernam TYPE RANGE OF ernam.
SELECT ernam
FROM ztsdo_user
INTO TABLE @DATA(lt_user).
lr_ernam = VALUE #( FOR ls IN lt_user[]
( sign = 'I'
option = 'EQ'
low = ls-ernam ) ).
ENDFORM.
*----------------------------------------------------------------------*
Pubblicato da
F/\B!O
alle
11:23
Commenta per primo!
Etichette: ABAP