ZMMR0044
*&---------------------------------------------------------------------*
*& Report ZMMR0044
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmmr0044.
INCLUDE zmmr0044_top.
INCLUDE zmmr0044_sel.
INCLUDE zmmr0044_f01.
START-OF-SELECTION.
CALL SCREEN 9000.
ZMMR0044_TOP
*&---------------------------------------------------------------------*
*& 包含 ZMMR0044_TOP
*&---------------------------------------------------------------------*
DATA:gv_ebeln TYPE ebeln.
DATA:ok_code TYPE sy-ucomm.
TYPES:BEGIN OF tys_out,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
baugr TYPE resb-baugr,
baugr_txt TYPE maktx,
matnr TYPE matnr,
matnr_txt TYPE maktx,
menge TYPE menge_d,
meins TYPE meins,
zyhsr TYPE menge_d,
erfmg TYPE menge_d,
sc_adjust TYPE migo_sc_adjust,
werks TYPE werks_d,
lgort TYPE lgort_d,
END OF tys_out.
DATA:gt_out TYPE TABLE OF tys_out,
gw_out LIKE LINE OF gt_out.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_OUT' ITSELF
CONTROLS: tc_out TYPE TABLEVIEW USING SCREEN 9000.
*&SPWIZARD: LINES OF TABLECONTROL 'TC_OUT'
DATA: g_tc_out_lines LIKE sy-loopc.
ZMMR0044_F01
*&---------------------------------------------------------------------*
*& 包含 ZMMR0044_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
IF gv_ebeln IS INITIAL .
MESSAGE '输入采购订单' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
SET PF-STATUS 'STATUS_9000'.
SET TITLEBAR 'TITLEBAR'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
DATA:ok_key TYPE sy-ucomm.
DATA:lv_answer.
ok_key = ok_code.
CLEAR:ok_code.
CASE ok_key.
WHEN '&SEARCH'.
REFRESH gt_out.
CHECK gv_ebeln IS NOT INITIAL.
PERFORM frm_search_data.
WHEN '&SAVE'.
CHECK gt_out[] IS NOT INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
textline1 = '确认是否保存'
titel = '提示'
cancel_display = ''
IMPORTING
answer = lv_answer.
IF lv_answer = 'J'.
PERFORM frm_save_data.
ENDIF.
WHEN '&EXIT' OR '&CANCEL'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form frm_search_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_search_data .
SELECT resb~ebeln,
resb~ebelp,
resb~matnr,
makt~maktx AS matnr_txt,
resb~baugr,
resb~meins,
resb~werks,
resb~lgort
FROM resb LEFT JOIN makt ON resb~matnr = makt~matnr AND makt~spras = @sy-langu
INTO TABLE @DATA(lt_resb)
WHERE resb~ebeln = @gv_ebeln AND
resb~xloek = ''.
IF lt_resb[] IS NOT INITIAL.
SELECT matnr AS baugr,
maktx AS baugr_txt
FROM makt
FOR ALL ENTRIES IN @lt_resb
WHERE matnr = @lt_resb-baugr AND
spras = @sy-langu
INTO TABLE @DATA(lt_makt).
SORT lt_makt BY baugr.
SELECT ebeln,
ebelp,
SUM( CASE WHEN bwart = '543' THEN menge END ) AS menge_z,
SUM( CASE WHEN bwart = '544' THEN menge * -1 END ) AS menge_f
INTO TABLE @DATA(lt_mseg)
FROM mseg
WHERE ebeln = @gv_ebeln
GROUP BY ebeln , ebelp.
SORT lt_mseg BY ebeln ebelp.
LOOP AT lt_resb INTO DATA(lw_resb).
APPEND INITIAL LINE TO gt_out ASSIGNING FIELD-SYMBOL(<fs_out>).
<fs_out>-ebeln = lw_resb-ebeln.
<fs_out>-ebelp = lw_resb-ebelp.
<fs_out>-matnr = lw_resb-matnr.
<fs_out>-baugr = lw_resb-baugr.
<fs_out>-meins = lw_resb-meins.
<fs_out>-matnr_txt = lw_resb-matnr_txt.
<fs_out>-werks = lw_resb-werks.
<fs_out>-lgort = lw_resb-lgort.
READ TABLE lt_makt INTO DATA(lw_makt) WITH KEY baugr = lw_resb-baugr BINARY SEARCH.
IF sy-subrc EQ 0.
<fs_out>-baugr_txt = lw_makt-baugr_txt.
ENDIF.
READ TABLE lt_mseg INTO DATA(lw_mseg) WITH KEY ebeln = lw_resb-ebeln ebelp = lw_resb-ebelp BINARY SEARCH.
IF sy-subrc EQ 0.
<fs_out>-menge = lw_mseg-menge_z - lw_mseg-menge_f.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form TC_OUT_CHANGE_TC_ATTR
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
MODULE tc_out_change_tc_attr OUTPUT.
DESCRIBE TABLE gt_out LINES tc_out-lines.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form TC_OUT_GET_LINES
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
MODULE tc_out_get_lines OUTPUT.
g_tc_out_lines = sy-loopc.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form TC_OUT_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
MODULE tc_out_user_command INPUT.
ok_code = sy-ucomm.
PERFORM user_ok_tc USING 'TC_OUT'
'GT_OUT'
' '
CHANGING ok_code.
sy-ucomm = ok_code.
ENDMODULE.
*----------------------------------------------------------------------*
* INCLUDE TABLECONTROL_FORMS *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form USER_OK_TC *
*&---------------------------------------------------------------------*
FORM user_ok_tc USING p_tc_name TYPE dynfnam
p_table_name
p_mark_name
CHANGING p_ok LIKE sy-ucomm.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA: l_ok TYPE sy-ucomm,
l_offset TYPE i.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
*&SPWIZARD: Table control specific operations *
*&SPWIZARD: evaluate TC name and operations *
SEARCH p_ok FOR p_tc_name.
IF sy-subrc <> 0.
EXIT.
ENDIF.
l_offset = strlen( p_tc_name ) + 1.
l_ok = p_ok+l_offset.
*&SPWIZARD: execute general and TC specific operations *
CASE l_ok.
WHEN 'INSR'. "insert row
PERFORM fcode_insert_row USING p_tc_name
p_table_name.
CLEAR p_ok.
WHEN 'DELE'. "delete row
PERFORM fcode_delete_row USING p_tc_name
p_table_name
p_mark_name.
CLEAR p_ok.
WHEN 'P--' OR "top of list
'P-' OR "previous page
'P+' OR "next page
'P++'. "bottom of list
PERFORM compute_scrolling_in_tc USING p_tc_name
l_ok.
CLEAR p_ok.
* WHEN 'L--'. "total left
* PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
*
* WHEN 'L-'. "column left
* PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
*
* WHEN 'R+'. "column right
* PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
*
* WHEN 'R++'. "total right
* PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
*
WHEN 'MARK'. "mark all filled lines
PERFORM fcode_tc_mark_lines USING p_tc_name
p_table_name
p_mark_name .
CLEAR p_ok.
WHEN 'DMRK'. "demark all filled lines
PERFORM fcode_tc_demark_lines USING p_tc_name
p_table_name
p_mark_name .
CLEAR p_ok.
* WHEN 'SASCEND' OR
* 'SDESCEND'. "sort column
* PERFORM FCODE_SORT_TC USING P_TC_NAME
* l_ok.
ENDCASE.
ENDFORM. " USER_OK_TC
*&---------------------------------------------------------------------*
*& Form FCODE_INSERT_ROW *
*&---------------------------------------------------------------------*
FORM fcode_insert_row
USING p_tc_name TYPE dynfnam
p_table_name .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA l_lines_name LIKE feld-name.
DATA l_selline LIKE sy-stepl.
DATA l_lastline TYPE i.
DATA l_line TYPE i.
DATA l_table_name LIKE feld-name.
FIELD-SYMBOLS <tc> TYPE cxtab_control.
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <lines> TYPE i.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (p_tc_name) TO <tc>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE p_table_name '[]' INTO l_table_name. "table body
ASSIGN (l_table_name) TO <table>. "not headerline
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' p_tc_name '_LINES' INTO l_lines_name.
ASSIGN (l_lines_name) TO <lines>.
*&SPWIZARD: get current line *
GET CURSOR LINE l_selline.
IF sy-subrc <> 0. " append line to table
l_selline = <tc>-lines + 1.
*&SPWIZARD: set top line *
IF l_selline > <lines>.
<tc>-top_line = l_selline - <lines> + 1 .
ELSE.
<tc>-top_line = 1.
ENDIF.
ELSE. " insert line into table
l_selline = <tc>-top_line + l_selline - 1.
l_lastline = <tc>-top_line + <lines> - 1.
ENDIF.
*&SPWIZARD: set new cursor line *
l_line = l_selline - <tc>-top_line + 1.
*&SPWIZARD: insert initial line *
INSERT INITIAL LINE INTO <table> INDEX l_selline.
<tc>-lines = <tc>-lines + 1.
*&SPWIZARD: set cursor *
SET CURSOR 1 l_line.
ENDFORM. " FCODE_INSERT_ROW
*&---------------------------------------------------------------------*
*& Form FCODE_DELETE_ROW *
*&---------------------------------------------------------------------*
FORM fcode_delete_row
USING p_tc_name TYPE dynfnam
p_table_name
p_mark_name .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA l_table_name LIKE feld-name.
FIELD-SYMBOLS <tc> TYPE cxtab_control.
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <wa>.
FIELD-SYMBOLS <mark_field>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (p_tc_name) TO <tc>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE p_table_name '[]' INTO l_table_name. "table body
ASSIGN (l_table_name) TO <table>. "not headerline
*&SPWIZARD: delete marked lines *
DESCRIBE TABLE <table> LINES <tc>-lines.
LOOP AT <table> ASSIGNING <wa>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT p_mark_name OF STRUCTURE <wa> TO <mark_field>.
IF <mark_field> = 'X'.
DELETE <table> INDEX syst-tabix.
IF sy-subrc = 0.
<tc>-lines = <tc>-lines - 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " FCODE_DELETE_ROW
*&---------------------------------------------------------------------*
*& Form COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
* -->P_OK ok code
*----------------------------------------------------------------------*
FORM compute_scrolling_in_tc USING p_tc_name
p_ok.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA l_tc_new_top_line TYPE i.
DATA l_tc_name LIKE feld-name.
DATA l_tc_lines_name LIKE feld-name.
DATA l_tc_field_name LIKE feld-name.
FIELD-SYMBOLS <tc> TYPE cxtab_control.
FIELD-SYMBOLS <lines> TYPE i.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (p_tc_name) TO <tc>.
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' p_tc_name '_LINES' INTO l_tc_lines_name.
ASSIGN (l_tc_lines_name) TO <lines>.
*&SPWIZARD: is no line filled? *
IF <tc>-lines = 0.
*&SPWIZARD: yes, ... *
l_tc_new_top_line = 1.
ELSE.
*&SPWIZARD: no, ... *
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
entry_act = <tc>-top_line
entry_from = 1
entry_to = <tc>-lines
last_page_full = 'X'
loops = <lines>
ok_code = p_ok
overlapping = 'X'
IMPORTING
entry_new = l_tc_new_top_line
EXCEPTIONS
* NO_ENTRY_OR_PAGE_ACT = 01
* NO_ENTRY_TO = 02
* NO_OK_CODE_OR_PAGE_GO = 03
OTHERS = 0.
ENDIF.
*&SPWIZARD: get actual tc and column *
GET CURSOR FIELD l_tc_field_name
AREA l_tc_name.
IF syst-subrc = 0.
IF l_tc_name = p_tc_name.
*&SPWIZARD: et actual column *
SET CURSOR FIELD l_tc_field_name LINE 1.
ENDIF.
ENDIF.
*&SPWIZARD: set the new top line *
<tc>-top_line = l_tc_new_top_line.
ENDFORM. " COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
*& Form FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
* marks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM fcode_tc_mark_lines USING p_tc_name
p_table_name
p_mark_name.
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
DATA l_table_name LIKE feld-name.
FIELD-SYMBOLS <tc> TYPE cxtab_control.
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <wa>.
FIELD-SYMBOLS <mark_field>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (p_tc_name) TO <tc>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE p_table_name '[]' INTO l_table_name. "table body
ASSIGN (l_table_name) TO <table>. "not headerline
*&SPWIZARD: mark all filled lines *
LOOP AT <table> ASSIGNING <wa>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT p_mark_name OF STRUCTURE <wa> TO <mark_field>.
<mark_field> = 'X'.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Form FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
* demarks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM fcode_tc_demark_lines USING p_tc_name
p_table_name
p_mark_name .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA l_table_name LIKE feld-name.
FIELD-SYMBOLS <tc> TYPE cxtab_control.
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <wa>.
FIELD-SYMBOLS <mark_field>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (p_tc_name) TO <tc>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE p_table_name '[]' INTO l_table_name. "table body
ASSIGN (l_table_name) TO <table>. "not headerline
*&SPWIZARD: demark all filled lines *
LOOP AT <table> ASSIGNING <wa>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT p_mark_name OF STRUCTURE <wa> TO <mark_field>.
<mark_field> = space.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Form frm_save_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_save_data .
DATA:ls_header LIKE bapi2017_gm_head_01, "抬头
lv_gcode LIKE bapi2017_gm_code, "过账码
lv_type LIKE ztmm0005-bwart, "过账码
ls_goodsmvt_headret LIKE bapi2017_gm_head_ret, "返回凭证
lt_item LIKE TABLE OF bapi2017_gm_item_create,
ls_item LIKE LINE OF lt_item,
lt_return LIKE TABLE OF bapiret2,
ls_return LIKE LINE OF lt_return.
DATA:lv_line_id TYPE mb_line_id,
lv_parent_id TYPE mb_line_id.
DATA:lt_out TYPE TABLE OF tys_out.
REFRESH:lt_item,lt_return,lt_out.
CLEAR:ls_header,ls_goodsmvt_headret.
lt_out[] = gt_out[].
DELETE lt_out WHERE erfmg EQ '0.00'.
ls_header-bill_of_lading = gv_ebeln.
ls_header-gr_gi_slip_no = ''.
ls_header-pstng_date = sy-datum.
ls_header-doc_date = sy-datum.
ls_header-pr_uname = sy-uname.
lv_gcode-gm_code = '07'.
lv_parent_id = '100000'.
LOOP AT lt_out INTO DATA(lw_out) GROUP BY ( ebeln = lw_out-ebeln
ebelp = lw_out-ebelp
size = GROUP SIZE
index = GROUP INDEX )
ASCENDING ASSIGNING FIELD-SYMBOL(<fs_group>).
lv_line_id = lv_line_id + 1.
LOOP AT GROUP <fs_group> ASSIGNING FIELD-SYMBOL(<ls_group>).
ENDLOOP.
ls_item-move_type = '121'.
ls_item-plant = <ls_group>-werks.
ls_item-mvt_ind = 'O'.
ls_item-stge_loc = <ls_group>-lgort.
ls_item-material = <ls_group>-baugr.
ls_item-material_long = <ls_group>-baugr.
ls_item-entry_uom = <ls_group>-meins.
ls_item-po_number = <ls_group>-ebeln.
ls_item-po_item = <ls_group>-ebelp.
ls_item-line_id = lv_line_id.
APPEND ls_item TO lt_item.
CLEAR:ls_item.
LOOP AT GROUP <fs_group> ASSIGNING <ls_group>.
lv_parent_id = lv_parent_id + 1.
ls_item-move_type = ''.
ls_item-plant = <ls_group>-werks.
ls_item-stge_loc = <ls_group>-lgort.
ls_item-material = <ls_group>-matnr.
ls_item-material_long = <ls_group>-matnr.
IF <ls_group>-sc_adjust = 'X'.
ls_item-entry_qnt = 0 - <ls_group>-erfmg.
ELSE.
ls_item-entry_qnt = <ls_group>-erfmg.
ENDIF.
ls_item-entry_uom = <ls_group>-meins.
ls_item-po_number = <ls_group>-ebeln.
ls_item-po_item = <ls_group>-ebelp.
ls_item-mvt_ind = ''.
ls_item-line_id = lv_parent_id .
ls_item-parent_id = lv_line_id.
APPEND ls_item TO lt_item.
CLEAR:ls_item.
ENDLOOP.
ENDLOOP.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = lv_gcode
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
goodsmvt_item = lt_item
return = lt_return.
DATA:lv_mtype TYPE bapi_mtype,
lv_message TYPE bapi_msg,
lv_errmsg TYPE string.
IF line_exists( lt_return[ type = 'E' ] ) OR line_exists( lt_return[ type = 'A' ] ).
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
lv_mtype = 'E'.
lv_message = |创建失败:|.
LOOP AT lt_return INTO ls_return WHERE type CA 'EA'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_return-id
msgnr = ls_return-number
msgv1 = ls_return-message_v1
msgv2 = ls_return-message_v2
msgv3 = ls_return-message_v3
msgv4 = ls_return-message_v4
IMPORTING
message_text_output = lv_errmsg.
lv_message = |{ lv_message }{ lv_errmsg }|.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
lv_mtype = 'S'.
lv_message = '年度:' && ls_goodsmvt_headret-doc_year && '凭证' && ls_goodsmvt_headret-mat_doc && '创建成功' .
ENDIF.
IF lv_mtype = 'S'.
REFRESH:gt_out.
CLEAR:gv_ebeln.
MESSAGE lv_message TYPE lv_mtype.
CALL FUNCTION 'MIGO_DIALOG'
EXPORTING
i_action = 'A04'
i_refdoc = 'R02'
i_mblnr = ls_goodsmvt_headret-mat_doc
i_mjahr = ls_goodsmvt_headret-doc_year
EXCEPTIONS
illegal_combination = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.
MESSAGE lv_message TYPE lv_mtype.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module FRM_MODIFY_TC INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE frm_modify_tc INPUT.
DATA:lv_menge TYPE menge_d.
CLEAR:lv_menge.
IF gw_out-zyhsr <> '0.00'.
lv_menge = gw_out-zyhsr - gw_out-menge.
IF lv_menge < 0.
gw_out-sc_adjust = 'X'.
ELSE.
gw_out-sc_adjust = ''.
ENDIF.
gw_out-erfmg = abs( lv_menge ).
ELSE.
CLEAR:gw_out-erfmg,gw_out-sc_adjust.
ENDIF.
MODIFY gt_out FROM gw_out INDEX tc_out-current_line.
ENDMODULE.
SCREEN 9000
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_OUT'
MODULE tc_out_change_tc_attr.
*&SPWIZARD: MODULE TC_OUT_CHANGE_COL_ATTR.
LOOP AT gt_out
INTO gw_out
WITH CONTROL tc_out
CURSOR tc_out-current_line.
MODULE tc_out_get_lines.
*&SPWIZARD: MODULE TC_OUT_CHANGE_FIELD_ATTR
ENDLOOP.
MODULE status_9000.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TC_OUT'
LOOP AT gt_out.
CHAIN.
FIELD gw_out-ebeln.
FIELD gw_out-ebelp.
FIELD gw_out-matnr.
FIELD gw_out-matnr_txt.
FIELD gw_out-baugr.
FIELD gw_out-baugr_txt.
FIELD gw_out-menge.
FIELD gw_out-zyhsr.
FIELD gw_out-erfmg.
FIELD gw_out-sc_adjust.
FIELD gw_out-meins.
MODULE frm_modify_tc.
ENDCHAIN.
ENDLOOP.
MODULE tc_out_user_command.
*&SPWIZARD: MODULE TC_OUT_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TC_OUT_CHANGE_COL_ATTR.
MODULE user_command_9000.