Escolar Documentos
Profissional Documentos
Cultura Documentos
*& Include
ZWS_FURNITURE_STO_CREATE_SUB
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form REFRESH
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM refresh .
REFRESH : it_final,
it_zws_furniture,
it_final_temp,
it_mara,
it_marc,
it_poheader,
it_poheaderx,
it_poitem,
it_poitemx,
it_poschedule,
it_poschedulex,
it_return,
git_fieldcat,
lt_exclude.
CLEAR : wa_final,
wa_zws_furniture,
wa_mara,
wa_marc,
wa_poheader,
wa_poheaderx,
wa_poitem,
wa_poitemx,
wa_poschedule,
wa_poschedulex,
wa_return,
gwa_fieldcat,
gs_layo,
ls_exclude,
stonum,
lv_ebelp.
ENDFORM.
" REFRESH
*&---------------------------------------------------------------------*
*&
Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'STO'.
SET TITLEBAR 'STO'.
ENDMODULE.
" STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*&
Module DISPLAY_DATA OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE display_data OUTPUT.
PERFORM exclude_tools.
IF sy-ucomm = 'SAVE'.
REFRESH : git_fieldcat.
PERFORM set_field_catlaog1.
CALL METHOD gt_grid->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = git_fieldcat.
CLEAR gs_layo.
gs_layo-no_toolbar = 'X'.
CALL METHOD gt_grid->set_frontend_layout
EXPORTING
is_layout = gs_layo.
ELSE.
PERFORM set_field_catlaog.
ENDIF.
IF gt_custom IS INITIAL.
CREATE OBJECT gt_custom
EXPORTING
container_name
= 'CUSTOM'
EXCEPTIONS
cntl_error
= 1
cntl_system_error
= 2
create_error
= 3
lifetime_error
= 4
lifetime_dynpro_dynpro_link = 5
OTHERS
= 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CREATE OBJECT gt_grid
EXPORTING
i_parent
= gt_custom
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS
= 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL METHOD gt_grid->set_table_for_first_display(
EXPORTING
is_layout
= gs_layo
it_toolbar_excluding
= lt_exclude
CHANGING
it_outtab
= it_final[]
it_fieldcatalog
= git_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error
= 2
too_many_lines
= 3
OTHERS
= 4
).
PERFORM default_values.
IF sy-subrc <> 0.
= 'CRE_DATE'.
= 'IT_FINAL'.
= 10.
= 'Date'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname = 'ADV_INV_NO'.
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-scrtext_m
APPEND gwa_fieldcat TO
= 'IT_FINAL'.
= 22.
= 'Advance Invoice Number'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname = 'ARTICLE_CODE'.
gwa_fieldcat-tabname = 'IT_FINAL'.
gwa_fieldcat-outputlen = 20.
gwa_fieldcat-edit = 'X'.
gwa_fieldcat-no_zero = 'X'.
gwa_fieldcat-scrtext_l = 'Furniture Article code '.
APPEND gwa_fieldcat TO git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname = 'REQ_QUANTITY'.
gwa_fieldcat-tabname = 'IT_FINAL'.
gwa_fieldcat-outputlen = 15.
gwa_fieldcat-edit = 'X'.
gwa_fieldcat-scrtext_m = 'Required Quantity'.
APPEND gwa_fieldcat TO git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname = 'ADVANCE_AMOUNT'.
gwa_fieldcat-tabname = 'IT_FINAL'.
gwa_fieldcat-outputlen = 15.
gwa_fieldcat-edit = 'X'.
gwa_fieldcat-scrtext_m = 'Advance Amount'.
APPEND gwa_fieldcat TO git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname = 'FINAL_AMOUNT'.
gwa_fieldcat-tabname = 'IT_FINAL'.
gwa_fieldcat-outputlen = 15.
gwa_fieldcat-edit = 'X'.
gwa_fieldcat-scrtext_m = 'Final Amount'.
APPEND gwa_fieldcat TO git_fieldcat.
ENDFORM.
" SET_FIELD_CATLAOG
*&---------------------------------------------------------------------*
*&
Form EXCLUDE_TOOLS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM exclude_tools .
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_exclude TO lt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO lt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_exclude TO lt_exclude.
ENDFORM.
" EXCLUDE_TOOLS
*----------------------------------------------------------------------*
*
CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS: handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
ENDCLASS.
"lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
DATA: dl_ins_row TYPE lvc_s_modi,
lv_tabix TYPE sy-tabix.
*event is triggered when data is changed in the output
CLEAR dl_ins_row.
LOOP AT er_data_changed->mt_mod_cells INTO dl_ins_row.
CLEAR lv_tabix.
lv_tabix = dl_ins_row-row_id.
IF dl_ins_row-fieldname = 'STORE'.
dl_ins_row-value = p_werks.
ELSEIF dl_ins_row-fieldname = 'CRE_DATE'.
dl_ins_row-value = p_date.
ELSEIF dl_ins_row-fieldname = 'ADV_INV_NO'.
dl_ins_row-value = p_invnum.
ENDIF.
er_data_changed->modify_cell(
i_row_id
= lv_tabix
i_fieldname = dl_ins_row-fieldname
i_value
= dl_ins_row-value ).
CLEAR dl_ins_row.
ENDLOOP.
ENDMETHOD.
"handle_data_changed
ENDCLASS.
"lcl_event_receiver IMPLEMENTATION
DATA lcl_event_receiver TYPE REF TO lcl_event_receiver.
*&---------------------------------------------------------------------*
*&
Form DEFAULT_VALUES
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM default_values .
CREATE OBJECT lcl_event_receiver.
* For populating values in ALV after 'ENTER' event (Default values)
CALL METHOD gt_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter "trigger event after ENTER is p
ressed
EXCEPTIONS
error
= 1
OTHERS
= 2.
CALL METHOD gt_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
SET HANDLER lcl_event_receiver->handle_data_changed FOR gt_grid.
ENDFORM.
" DEFAULT_VALUES
*&---------------------------------------------------------------------*
*&
Form SAVE_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM save_data .
IF it_final[] IS NOT INITIAL.
CLEAR : wa_final,
wa_zws_furniture.
LOOP AT it_final INTO wa_final.
MOVE-CORRESPONDING wa_final TO wa_zws_furniture.
APPEND wa_zws_furniture TO it_zws_furniture.
CLEAR wa_zws_furniture.
CLEAR wa_final.
ENDLOOP.
IF it_zws_furniture[] IS NOT INITIAL.
MODIFY zws_furniture FROM TABLE it_zws_furniture.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.
ENDFORM.
" SAVE_DATA
*&---------------------------------------------------------------------*
*&
Form CREATE_STO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM create_sto .
DATA : lv_msg TYPE char200.
CLEAR wa_final.
LOOP AT it_final INTO wa_final.
IF lv_ebelp IS INITIAL.
lv_ebelp = 10.
ENDIF.
*Fill header data for PO
wa_poheader-doc_type
wa_poheader-comp_code
wa_poheader-purch_org
wa_poheader-pur_group
wa_poheader-vendor
wa_poheaderx-doc_type
wa_poheaderx-purch_org
wa_poheaderx-pur_group
wa_poheaderx-comp_code
wa_poheaderx-vendor
=
=
=
=
=
'ZWEC'.
'WS01'.
'WS01'.
'W01'.
'WD01'.
=
=
=
=
=
'X'.
'X'.
'X'.
'X'.
'X'.
=
=
=
=
lv_ebelp.
wa_final-article_code.
wa_final-req_quantity.
wa_final-store.
wa_poitem-net_price
= wa_final-final_amount.
wa_poitem-stge_loc
= 'R001'.
APPEND wa_poitem TO it_poitem .
wa_poitemx-po_item
= lv_ebelp.
wa_poitemx-material
= 'X'.
wa_poitemx-quantity
= 'X'.
wa_poitemx-plant
= 'X'.
wa_poitemx-net_price
= 'X'.
wa_poitemx-stge_loc
= 'X'.
APPEND wa_poitemx TO it_poitemx .
*Fill schedule data for PO
wa_poschedule-po_item
= lv_ebelp.
wa_poschedule-sched_line
= '0010'.
wa_poschedule-quantity
= wa_final-req_quantity.
APPEND wa_poschedule TO it_poschedule.
wa_poschedulex-po_itemx
=
'X'.
wa_poschedulex-sched_line
=
'0010'.
wa_poschedulex-sched_linex =
'X'.
wa_poschedulex-quantity
=
lv_ebelp.
wa_poschedulex-po_item
=
wa_poitem-po_item.
APPEND wa_poschedulex TO it_poschedulex.
lv_ebelp = lv_ebelp + 10 .
CLEAR wa_final.
ENDLOOP.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader
= wa_poheader
poheaderx
= wa_poheaderx
IMPORTING
exppurchaseorder = stonum
TABLES
return
= it_return[]
poitem
= it_poitem[]
poitemx
= it_poitemx[]
poschedule
= it_poschedule[]
poschedulex
= it_poschedulex[].
CLEAR lv_ebelp.
READ TABLE it_return INTO wa_return WITH KEY type = 'S' id = '06' number = '
017' .
IF sy-subrc = 0 AND stonum IS NOT INITIAL .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WAIT UP TO 2 SECONDS.
CLEAR wa_final.
LOOP AT it_final INTO wa_final.
CONCATENATE 'STO :' stonum 'Created successfully' INTO lv_msg SEPARATED BY
space.
wa_final-log = lv_msg.
wa_final-sto = stonum.
MODIFY it_final FROM wa_final TRANSPORTING sto log.
CLEAR wa_final.
ENDLOOP.
*Error messages from BAPI will be passed to error log
ELSE.
CLEAR wa_return.
= 'CRE_DATE'.
= 'IT_FINAL'.
= 10.
= 'Date'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-scrtext_m
APPEND gwa_fieldcat TO
= 'ADV_INV_NO'.
= 'IT_FINAL'.
= 10.
= 'Advance Invoice Number'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-no_zero =
gwa_fieldcat-scrtext_l
APPEND gwa_fieldcat TO
= 'ARTICLE_CODE'.
= 'IT_FINAL'.
= 18.
'X'.
= 'Furniture Article code '.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-scrtext_m
APPEND gwa_fieldcat TO
= 'REQ_QUANTITY'.
= 'IT_FINAL'.
= 8.
= 'Required Quantity'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-scrtext_m
APPEND gwa_fieldcat TO
= 'ADVANCE_AMOUNT'.
= 'IT_FINAL'.
= 8.
= 'Advance Amount'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-scrtext_m
APPEND gwa_fieldcat TO
= 'FINAL_AMOUNT'.
= 'IT_FINAL'.
= 8.
= 'Final Amount'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname
gwa_fieldcat-tabname
gwa_fieldcat-outputlen
gwa_fieldcat-scrtext_m
APPEND gwa_fieldcat TO
= 'STO'.
= 'IT_FINAL'.
= 10.
= 'STO'.
git_fieldcat.
CLEAR gwa_fieldcat.
gwa_fieldcat-fieldname = 'LOG'.
gwa_fieldcat-tabname = 'IT_FINAL'.
gwa_fieldcat-outputlen = 60.
gwa_fieldcat-scrtext_m = 'Log'.
APPEND gwa_fieldcat TO git_fieldcat.
ENDFORM.
" SET_FIELD_CATLAOG1
*&---------------------------------------------------------------------*
*&
Form FETCH_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM fetch_data .
SELECT * FROM zws_furniture
INTO CORRESPONDING FIELDS OF TABLE it_final
WHERE store = p_werks
AND cre_date = p_date
AND adv_inv_no = p_invnum.
IF it_final[] IS NOT INITIAL.
CLEAR wa_final.
CLEAR lv_len.
lv_len = STRLEN( lv_matnr1 ).
lv_len = lv_len - 1.
lv_matnr1 = lv_matnr1+0(lv_len).
CLEAR lv_msg1.
CONCATENATE text-004 p_werks ':' lv_matnr1 INTO lv_msg1 SEPARATED BY space
."Articles are not maintained in
MESSAGE lv_msg1 TYPE 'E' .
ENDIF.
ENDIF.
ENDFORM.
" VALIDATE_DATA