Sales Order Status is blocked so unblock status (VA02) Program
My Requirement is Sales Order Status is blocked so unblock status in VA02
*& Report ZSD_BILLING_ACCEPT_REJECT
*&-----------------------------------------------------------------------*
*& Program Name : ZMM_ADQ_BILLING_CREATE *
*& program description : Sales Order Billing With & Without Goods Issue *
*& purpose : Sales Order Status is blocked so unblock status *
*& Developer Name : King Of ABAP'r *
*& Functional Name : FUnctional *
*& Creation Date : 2024 *
*& Transaction Code : ZCACPT *
*&-----------------------------------------------------------------------*
REPORT zsd_billing_accept_reject.
TABLES: sscrfields.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_vbeln TYPE vbap-vbeln OBLIGATORY,
p_posnr TYPE vbap-posnr.
SELECTION-SCREEN END OF BLOCK a1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN PUSHBUTTON 1(40) cmdgen USER-COMMAND but_a VISIBLE LENGTH 20.
SELECTION-SCREEN PUSHBUTTON 32(30) cmdgen1 USER-COMMAND but_r VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_wd_button
text = 'Billing Acceptance'
info = 'Accept Button'
IMPORTING
result = cmdgen
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_reject
text = 'Reject'
info = 'Reject Button'
IMPORTING
result = cmdgen1
EXCEPTIONS
OTHERS = 0.
AT SELECTION-SCREEN.
CASE sscrfields.
WHEN 'BUT_A'.
PERFORM relese_status.
WHEN 'BUT_R'.
MESSAGE 'User Rejected' TYPE 'E' DISPLAY LIKE 'E'.
ENDCASE.
START-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form RELESE_STATUS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM relese_status .
*** User Status Declarations
DATA:
lv_objnr LIKE jsto-objnr.
DATA:
e_obtyp LIKE jsto-obtyp,
e_stsma LIKE jsto-stsma,
e_stonr LIKE tj30-stonr.
DATA:
lt_status TYPE TABLE OF jstat.
DATA: lv_text TYPE string.
*** Get Sales Order Item Details
IF p_vbeln IS NOT INITIAL AND p_posnr IS NOT INITIAL.
SELECT * FROM vbap INTO TABLE @DATA(lt_vbap)
WHERE vbeln EQ @p_vbeln
AND posnr EQ @p_posnr .
ENDIF.
*** GET sales Order item details
IF p_vbeln IS NOT INITIAL AND p_posnr IS INITIAL.
SELECT * FROM vbap INTO TABLE lt_vbap
WHERE vbeln EQ p_vbeln.
ENDIF.
LOOP AT lt_vbap INTO DATA(ls_vbap).
REFRESH: lt_status.
CLEAR: e_obtyp,e_obtyp,e_stonr.
CLEAR: lv_objnr.
lv_objnr = ls_vbap-objnr.
CALL FUNCTION 'STATUS_READ'
EXPORTING
client = sy-mandt
objnr = lv_objnr
IMPORTING
obtyp = e_obtyp
stsma = e_stsma
stonr = e_stonr
TABLES
status = lt_status
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
READ TABLE lt_status ASSIGNING FIELD-SYMBOL(<ls_status>) WITH KEY stat = 'E0001'.
IF <ls_status>-inact IS INITIAL.
CALL FUNCTION 'STATUS_CHANGE_EXTERN'
EXPORTING
client = sy-mandt
objnr = lv_objnr
user_status = 'E0002'
IMPORTING
stonr = e_stonr
EXCEPTIONS
object_not_found = 1
status_inconsistent = 2
status_not_allowed = 3
OTHERS = 4.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
IF ls_vbap-vbeln IS NOT INITIAL AND ls_vbap-posnr IS NOT INITIAL.
CLEAR: lv_text.
CONCATENATE 'Sales Order' ls_vbap-vbeln 'Is Accepted' INTO lv_text SEPARATED BY space.
MESSAGE lv_text TYPE 'S' DISPLAY LIKE 'S'.
ENDIF.
ENDIF.
ELSE.
CLEAR: lv_text.
CONCATENATE 'User Status is already Released' ls_vbap-vbeln INTO lv_text SEPARATED BY space.
MESSAGE lv_text TYPE 'I' DISPLAY LIKE 'E'.
ENDIF.
ENDLOOP.
ENDFORM.
Comments
Post a Comment