Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
68 views

Remove PDC Block Program

This program provides a report that displays pending sales orders in an ALV grid. It selects basic information about customer orders from tables like VBAK, TVLST, and KNA1 based on a selected customer. It builds an internal table called BASIC_INFO with the data. Field catalog INT_FCAT is used to define the columns in the ALV grid. User can select rows in the grid and click the SAVE button to update the delivery block on the selected sales orders using BAPI functions.

Uploaded by

suvarnaj05
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views

Remove PDC Block Program

This program provides a report that displays pending sales orders in an ALV grid. It selects basic information about customer orders from tables like VBAK, TVLST, and KNA1 based on a selected customer. It builds an internal table called BASIC_INFO with the data. Field catalog INT_FCAT is used to define the columns in the ALV grid. User can select rows in the grid and click the SAVE button to update the delivery block on the selected sales orders using BAPI functions.

Uploaded by

suvarnaj05
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

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

You might also like