REPORT zib_rmvpdcblk.
TABLES: vbap,vbak,tvlst.
TYPE-POOLS: slis.
DATA int_fcat TYPE slis_t_fieldcat_alv.
DATA wa_int TYPE slis_fieldcat_alv.
DATA i_lines LIKE sy-tabix.
DATA: rpt_title TYPE lvc_title VALUE 'Pending Sales Orders'.
TYPES: BEGIN OF ty_pdc,
kunnr TYPE kunnr,
belnr TYPE belnr_d,
zfbdt TYPE dzfbdt,
zbd1t TYPE dzbd1t,
END OF ty_pdc.
DATA: it_pdc TYPE TABLE OF ty_pdc,
wa_pdc TYPE ty_pdc.
*&-------------------------------------------------------------------*
*& Basic Informatio of Customer Orders
*&-------------------------------------------------------------------*
DATA:
BEGIN OF basic_info OCCURS 0,
flag TYPE c,
db LIKE tvlst-vtext,
vbeln LIKE vbak-vbeln,
audat LIKE vbak-audat,
customername LIKE kna1-name1,
auart LIKE vbak-auart,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
vkbur LIKE vbak-vkbur,
kunnr LIKE vbak-kunnr,
netwr like vbak-netwr,
*
grupp LIKE vbak-grupp,
*
cmfre LIKE vbak-cmfre,
erdat LIKE vbak-erdat,
erzet LIKE vbak-erzet,
END OF basic_info,
*&---------------------------------------------------------------------*
*& Basic Informatio of Customer Orders
*&---------------------------------------------------------------------*
t LIKE basic_info.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER: customer TYPE vbak-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
*&--------------------------------------------------------------------INITIALIZATION.
*&--------------------------------------------------------------------*&---------------------------------------------------------------------*
*& Select Basic Informatio of Customer from KNA1,ADRC,STATE
*&---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT
vbak~vbeln
vbak~audat
vbak~vbtyp
vbak~auart
tvlst~vtext AS db
vbak~vkorg
vbak~vtweg
vbak~spart
vbak~vkbur
vbak~kunnr
kna1~name1 AS customername
vbak~netwr
*
vbak~grupp
*
vbak~cmfre
vbak~erdat
vbak~erzet
INTO CORRESPONDING FIELDS OF TABLE basic_info
FROM ( vbak
LEFT JOIN tvlst
ON tvlst~mandt = sy-mandt
AND tvlst~spras = 'EN'
AND tvlst~lifsp = vbak~lifsk
LEFT JOIN tvfst
ON tvfst~mandt = sy-mandt
AND tvfst~spras = 'EN'
AND tvfst~faksp = vbak~faksk
INNER JOIN kna1 ON
kna1~mandt = sy-mandt
AND vbak~kunnr = kna1~kunnr
)
WHERE vbak~mandt = sy-mandt
AND vbak~lifsk = '10'
AND vbak~kunnr = customer.
CLEAR i_lines.
DESCRIBE TABLE basic_info LINES i_lines.
IF i_lines LT 1.
*
WRITE: /
*
'No Customer found for Selected Criteria.'.
*
EXIT.
MESSAGE 'No Sales Order found for Selected Customer' TYPE 'I'.
STOP.
EXIT.
ENDIF.
END-OF-SELECTION.
IF basic_info[] IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name
= sy-repid
i_internal_tabname
= 'BASIC_INFO' "capital letters!
i_inclname
= sy-repid
CHANGING
ct_fieldcat
= int_fcat
"I_GRID_TITLE = RPT_TITLE
EXCEPTIONS
inconsistent_interface = 1
program_error
= 2
OTHERS
= 3.
READ TABLE int_fcat INTO wa_int INDEX 1.
wa_int-checkbox = 'X'. " print as checkbox
wa_int-edit = 'X'.
" make field open for input
wa_int-seltext_l = ' '.
wa_int-outputlen = 2.
MODIFY int_fcat FROM wa_int INDEX 1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= sy-repid
it_fieldcat
= int_fcat
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'PF_STATUS'
i_save
= 'A'
TABLES
t_outtab
= basic_info
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
ENDIF.
*&---------------------------------------------------------------------*
*&
Form pf_status
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->RT_EXTAB text
*----------------------------------------------------------------------*
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTATUS'.
ENDFORM.
"SET_PF_STATUS
*&---------------------------------------------------------------------*
*&
Form user_command
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->R_UCOMM
text
*
-->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING
r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA : flag TYPE c.
CASE r_ucomm.
WHEN 'SAVE'.
* to reflect the data changed into internal table
DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data.
ENDIF.
DATA: gd_salesdocument LIKE bapivbeln-vbeln ,
gd_order_header_in LIKE bapisdh1,
gd_order_header_inx LIKE bapisdh1x.
DATA: gt_return LIKE TABLE OF bapiret2 WITH HEADER LINE.
gd_order_header_in-dlv_block = ' '.
gd_order_header_inx-updateflag = 'U'.
gd_order_header_inx-dlv_block = 'X'.
LOOP AT basic_info where flag = 'X'.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument
= basic_info-vbeln"gd_salesdocument
order_header_in = gd_order_header_in
order_header_inx = gd_order_header_inx
TABLES
return
= gt_return.
READ TABLE gt_return WITH KEY type = 'E'.
IF sy-subrc IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
ENDLOOP.
set screen 0.
WHEN OTHERS.
ENDCASE.
ENDFORM.
"user_command